Merge "Properly override error message in text fields" into androidx-main
diff --git a/.github/actions/build-single-project/action.yml b/.github/actions/build-single-project/action.yml
index 19a8cb4..79a8af1 100644
--- a/.github/actions/build-single-project/action.yml
+++ b/.github/actions/build-single-project/action.yml
@@ -40,7 +40,7 @@
       run: echo "yes" | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "cmake;3.22.1"
     - name: "Install Android SDK Build-Tools"
       shell: bash
-      run: echo "yes" | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "build-tools;34.0.0-rc3"
+      run: echo "yes" | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "build-tools;34.0.0-rc4"
     - name: "Set environment variables"
       shell: bash
       run: |
diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml
index 4e63517..57633d7 100644
--- a/.github/workflows/scorecards.yml
+++ b/.github/workflows/scorecards.yml
@@ -3,7 +3,8 @@
   # Only the default branch is supported.
   branch_protection_rule:
   schedule:
-    - cron: '24 14 * * 1'
+    # Weekly on Saturdays.
+    - cron: '30 1 * * 6'
   push:
     branches: [ androidx-main ]
 
@@ -17,32 +18,38 @@
     permissions:
       # Needed to upload the results to code-scanning dashboard.
       security-events: write
+      # Used to receive a badge. (Upcoming feature)
+      id-token: write
       actions: read
       contents: read
 
     steps:
       - name: "Checkout code"
-        uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0
+        uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # tag=v3.0.0
         with:
           persist-credentials: false
 
       - name: "Run analysis"
-        uses: ossf/scorecard-action@c1aec4ac820532bab364f02a81873c555a0ba3a1 # v1.0.4
+        uses: ossf/scorecard-action@3e15ea8318eee9b333819ec77a36aca8d39df13e # tag=v1.1.1
         with:
           results_file: results.sarif
           results_format: sarif
-          # Read-only PAT token. To create it,
-          # follow the steps in https://github.com/ossf/scorecard-action#pat-token-creation.
-          repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
-          # Publish the results to enable scorecard badges. For more details, see
+          # (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
+          # - you want to enable the Branch-Protection check on a *public* repository, or
+          # - you are installing Scorecards on a *private* repository
+          # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
+          # repo_token: ${{ secrets.SCORECARD_TOKEN }}
+
+          # Publish the results for public repositories to enable scorecard badges. For more details, see
           # https://github.com/ossf/scorecard-action#publishing-results.
-          # For private repositories, `publish_results` will automatically be set to `false`,
-          # regardless of the value entered here.
+          # For private repositories, `publish_results` will automatically be set to `false`, regardless
+          # of the value entered here.
           publish_results: true
 
-      # Upload the results as artifacts (optional).
+      # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
+      # format to the repository Actions tab.
       - name: "Upload artifact"
-        uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0
+        uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # tag=v3.0.0
         with:
           name: SARIF file
           path: results.sarif
@@ -50,7 +57,6 @@
 
       # Upload the results to GitHub's code scanning dashboard.
       - name: "Upload to code-scanning"
-        uses: github/codeql-action/upload-sarif@5f532563584d71fdef14ee64d17bafb34f751ce5 # v1.0.26
+        uses: github/codeql-action/upload-sarif@5f532563584d71fdef14ee64d17bafb34f751ce5 # tag=v1.0.26
         with:
           sarif_file: results.sarif
-
diff --git a/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityResultLaunchDetector.kt b/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityResultLaunchDetector.kt
index ce8a629..07c1e46 100644
--- a/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityResultLaunchDetector.kt
+++ b/activity/activity-compose-lint/src/main/java/androidx/activity/compose/lint/ActivityResultLaunchDetector.kt
@@ -31,8 +31,8 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
-import org.jetbrains.uast.UCallExpression
 import java.util.EnumSet
+import org.jetbrains.uast.UCallExpression
 
 /**
  * [Detector] that checks `launch` calls to make sure they don't happen inside the body of a
diff --git a/activity/activity-compose/samples/build.gradle b/activity/activity-compose/samples/build.gradle
index e76d4bc..3190107 100644
--- a/activity/activity-compose/samples/build.gradle
+++ b/activity/activity-compose/samples/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Activity Integration Samples"
+    name = "Compose UI Activity Integration Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2020"
     description = "Samples for Compose integration with Activity"
diff --git a/activity/activity-compose/samples/src/main/java/androidx/activity/compose/samples/ReportLoadedSamples.kt b/activity/activity-compose/samples/src/main/java/androidx/activity/compose/samples/ReportLoadedSamples.kt
index 22244e9..8a4a86b 100644
--- a/activity/activity-compose/samples/src/main/java/androidx/activity/compose/samples/ReportLoadedSamples.kt
+++ b/activity/activity-compose/samples/src/main/java/androidx/activity/compose/samples/ReportLoadedSamples.kt
@@ -15,8 +15,8 @@
  */
 package androidx.activity.compose.samples
 
-import androidx.activity.compose.ReportDrawnAfter
 import androidx.activity.compose.ReportDrawn
+import androidx.activity.compose.ReportDrawnAfter
 import androidx.activity.compose.ReportDrawnWhen
 import androidx.annotation.Sampled
 import androidx.compose.foundation.layout.fillMaxSize
diff --git a/activity/activity-compose/src/main/java/androidx/activity/compose/BackHandler.kt b/activity/activity-compose/src/main/java/androidx/activity/compose/BackHandler.kt
index 0ed7d53..384b780 100644
--- a/activity/activity-compose/src/main/java/androidx/activity/compose/BackHandler.kt
+++ b/activity/activity-compose/src/main/java/androidx/activity/compose/BackHandler.kt
@@ -16,10 +16,10 @@
 
 package androidx.activity.compose
 
-import androidx.activity.findViewTreeOnBackPressedDispatcherOwner
 import androidx.activity.OnBackPressedCallback
 import androidx.activity.OnBackPressedDispatcher
 import androidx.activity.OnBackPressedDispatcherOwner
+import androidx.activity.findViewTreeOnBackPressedDispatcherOwner
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.ProvidedValue
diff --git a/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt b/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt
index c3f7793..6601b128 100644
--- a/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt
+++ b/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt
@@ -28,9 +28,9 @@
 import androidx.test.annotation.UiThreadTest
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import java.lang.IllegalArgumentException
 import org.junit.Rule
 import org.junit.Test
-import java.lang.IllegalArgumentException
 
 @MediumTest
 class ActivityViewModelLazyTest {
diff --git a/activity/activity-lint/build.gradle b/activity/activity-lint/build.gradle
index 704ee58..554da78 100644
--- a/activity/activity-lint/build.gradle
+++ b/activity/activity-lint/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "Android Activity Lint Checks"
+    name = "Activity Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2020"
     description = "Android Activity Lint Checks"
diff --git a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
index edb3b36..8ab79a4 100644
--- a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
+++ b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
@@ -30,12 +30,12 @@
 import com.android.tools.lint.detector.api.Project
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
-import org.jetbrains.uast.UCallExpression
-import org.jetbrains.uast.UElement
 import java.util.EnumSet
 import kotlin.reflect.full.memberFunctions
 import kotlin.reflect.full.memberProperties
 import kotlin.reflect.jvm.isAccessible
+import org.jetbrains.uast.UCallExpression
+import org.jetbrains.uast.UElement
 
 class ActivityResultFragmentVersionDetector : Detector(), UastScanner, GradleScanner {
     companion object {
diff --git a/activity/activity/src/androidTest/java/androidx/activity/ComponentActivityResultTest.kt b/activity/activity/src/androidTest/java/androidx/activity/ComponentActivityResultTest.kt
index e2025c9..48c87c7 100644
--- a/activity/activity/src/androidTest/java/androidx/activity/ComponentActivityResultTest.kt
+++ b/activity/activity/src/androidTest/java/androidx/activity/ComponentActivityResultTest.kt
@@ -31,10 +31,10 @@
 import androidx.test.filters.LargeTest
 import androidx.testutils.withActivity
 import com.google.common.truth.Truth.assertThat
-import leakcanary.DetectLeaksAfterTestSuccess
-import org.junit.Rule
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import leakcanary.DetectLeaksAfterTestSuccess
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 
diff --git a/activity/activity/src/main/java/androidx/activity/result/PickVisualMediaRequest.kt b/activity/activity/src/main/java/androidx/activity/result/PickVisualMediaRequest.kt
index 45cbfe9..66f30ef 100644
--- a/activity/activity/src/main/java/androidx/activity/result/PickVisualMediaRequest.kt
+++ b/activity/activity/src/main/java/androidx/activity/result/PickVisualMediaRequest.kt
@@ -16,8 +16,8 @@
 
 package androidx.activity.result
 
-import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType
 import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.ImageAndVideo
+import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType
 
 /**
  * Creates a request for a
diff --git a/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt b/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt
index d795756..5fe827e 100644
--- a/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt
+++ b/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt
@@ -42,8 +42,8 @@
 import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
 import androidx.activity.result.contract.ActivityResultContracts.GetContent
 import androidx.activity.result.contract.ActivityResultContracts.OpenMultipleDocuments
-import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia
 import androidx.activity.result.contract.ActivityResultContracts.PickMultipleVisualMedia
+import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia
 import androidx.activity.result.contract.ActivityResultContracts.RequestPermission
 import androidx.activity.result.contract.ActivityResultContracts.TakePicture
 import androidx.activity.result.contract.ActivityResultContracts.TakePicturePreview
diff --git a/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/experimental/UseJavaPackageFromKt.kt b/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/experimental/UseJavaPackageFromKt.kt
index 417b29f..312c3a5 100644
--- a/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/experimental/UseJavaPackageFromKt.kt
+++ b/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/experimental/UseJavaPackageFromKt.kt
@@ -19,7 +19,6 @@
 package sample.experimental
 
 import androidx.annotation.experimental.UseExperimental
-
 import sample.experimental.foo.Bar
 import sample.experimental.foo.ExperimentalPackage
 
diff --git a/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/optin/UseJavaPackageFromKt.kt b/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/optin/UseJavaPackageFromKt.kt
index f995a66..caf4c94 100644
--- a/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/optin/UseJavaPackageFromKt.kt
+++ b/annotation/annotation-experimental-lint/integration-tests/src/main/java/sample/optin/UseJavaPackageFromKt.kt
@@ -17,7 +17,6 @@
 package sample.optin
 
 import androidx.annotation.OptIn
-
 import sample.optin.foo.AnnotatedJavaPackage
 
 @Suppress("unused", "MemberVisibilityCanBePrivate")
diff --git a/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/ExperimentalDetectorTest.kt b/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/ExperimentalDetectorTest.kt
index 62fa26e..25567ce 100644
--- a/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/ExperimentalDetectorTest.kt
+++ b/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/ExperimentalDetectorTest.kt
@@ -424,13 +424,13 @@
 
         /* ktlint-disable max-line-length */
         val expected = """
-src/sample/experimental/UseJavaPackageFromKt.kt:32: Error: This declaration is opt-in and its usage should be marked with @sample.experimental.foo.ExperimentalPackage or @OptIn(markerClass = sample.experimental.foo.ExperimentalPackage.class) [UnsafeOptInUsageError]
+src/sample/experimental/UseJavaPackageFromKt.kt:31: Error: This declaration is opt-in and its usage should be marked with @sample.experimental.foo.ExperimentalPackage or @OptIn(markerClass = sample.experimental.foo.ExperimentalPackage.class) [UnsafeOptInUsageError]
         val bar = Bar()
                   ~~~
-src/sample/experimental/UseJavaPackageFromKt.kt:33: Error: This declaration is opt-in and its usage should be marked with @sample.experimental.foo.ExperimentalPackage or @OptIn(markerClass = sample.experimental.foo.ExperimentalPackage.class) [UnsafeOptInUsageError]
+src/sample/experimental/UseJavaPackageFromKt.kt:32: Error: This declaration is opt-in and its usage should be marked with @sample.experimental.foo.ExperimentalPackage or @OptIn(markerClass = sample.experimental.foo.ExperimentalPackage.class) [UnsafeOptInUsageError]
         bar.baz()
             ~~~
-src/sample/experimental/UseJavaPackageFromKt.kt:56: Error: This declaration is opt-in and its usage should be marked with @sample.experimental.foo.ExperimentalPackage or @OptIn(markerClass = sample.experimental.foo.ExperimentalPackage.class) [UnsafeOptInUsageError]
+src/sample/experimental/UseJavaPackageFromKt.kt:55: Error: This declaration is opt-in and its usage should be marked with @sample.experimental.foo.ExperimentalPackage or @OptIn(markerClass = sample.experimental.foo.ExperimentalPackage.class) [UnsafeOptInUsageError]
         callPackageExperimental()
         ~~~~~~~~~~~~~~~~~~~~~~~
 3 errors, 0 warnings
diff --git a/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/RequiresOptInDetectorTest.kt b/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/RequiresOptInDetectorTest.kt
index 89a38ed..99ca8e3 100644
--- a/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/RequiresOptInDetectorTest.kt
+++ b/annotation/annotation-experimental-lint/src/test/kotlin/androidx/annotation/experimental/lint/RequiresOptInDetectorTest.kt
@@ -318,13 +318,13 @@
 
         /* ktlint-disable max-line-length */
         val expected = """
-src/sample/optin/UseJavaPackageFromKt.kt:30: Error: This declaration is opt-in and its usage should be marked with @sample.optin.ExperimentalJavaAnnotation or @OptIn(markerClass = sample.optin.ExperimentalJavaAnnotation.class) [UnsafeOptInUsageError]
+src/sample/optin/UseJavaPackageFromKt.kt:29: Error: This declaration is opt-in and its usage should be marked with @sample.optin.ExperimentalJavaAnnotation or @OptIn(markerClass = sample.optin.ExperimentalJavaAnnotation.class) [UnsafeOptInUsageError]
         val experimentalObject = AnnotatedJavaPackage()
                                  ~~~~~~~~~~~~~~~~~~~~
-src/sample/optin/UseJavaPackageFromKt.kt:31: Error: This declaration is opt-in and its usage should be marked with @sample.optin.ExperimentalJavaAnnotation or @OptIn(markerClass = sample.optin.ExperimentalJavaAnnotation.class) [UnsafeOptInUsageError]
+src/sample/optin/UseJavaPackageFromKt.kt:30: Error: This declaration is opt-in and its usage should be marked with @sample.optin.ExperimentalJavaAnnotation or @OptIn(markerClass = sample.optin.ExperimentalJavaAnnotation.class) [UnsafeOptInUsageError]
         experimentalObject.method()
                            ~~~~~~
-src/sample/optin/UseJavaPackageFromKt.kt:64: Error: This declaration is opt-in and its usage should be marked with @sample.optin.ExperimentalJavaAnnotation or @OptIn(markerClass = sample.optin.ExperimentalJavaAnnotation.class) [UnsafeOptInUsageError]
+src/sample/optin/UseJavaPackageFromKt.kt:63: Error: This declaration is opt-in and its usage should be marked with @sample.optin.ExperimentalJavaAnnotation or @OptIn(markerClass = sample.optin.ExperimentalJavaAnnotation.class) [UnsafeOptInUsageError]
         callPackageExperimental()
         ~~~~~~~~~~~~~~~~~~~~~~~
 3 errors, 0 warnings
diff --git a/annotation/annotation/build.gradle b/annotation/annotation/build.gradle
index e821397..769ac65 100644
--- a/annotation/annotation/build.gradle
+++ b/annotation/annotation/build.gradle
@@ -66,10 +66,10 @@
 }
 
 androidx {
-    name = "Android Support Library Annotations"
+    name = "Annotation"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.ANNOTATION
     mavenMultiplatformVersion = LibraryVersions.ANNOTATION_KMP
     inceptionYear = "2013"
-    description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs."
+    description = "Provides source annotations for tooling and readability."
 }
diff --git a/appactions/builtintypes/builtintypes-core/build.gradle b/appactions/builtintypes/builtintypes-core/build.gradle
index 9d98eb3..828e4de 100644
--- a/appactions/builtintypes/builtintypes-core/build.gradle
+++ b/appactions/builtintypes/builtintypes-core/build.gradle
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "androidx.appactions.builtintypes:builtintypes-core"
+    name = "AppActions Builtin Types Core"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2023"
     description = "This library exposes a core set of data types based on schema.org definitions."
diff --git a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/ParticipantValue.kt b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/ParticipantValue.kt
index 048d9e5..077274a 100644
--- a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/ParticipantValue.kt
+++ b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/ParticipantValue.kt
@@ -16,10 +16,10 @@
 package androidx.appactions.interaction.capabilities.communication
 
 import androidx.appactions.builtintypes.experimental.properties.Participant
+import androidx.appactions.interaction.capabilities.core.SearchAction
 import androidx.appactions.interaction.capabilities.core.impl.converters.ParamValueConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.converters.UnionTypeSpec
-import androidx.appactions.interaction.capabilities.core.SearchAction
 
 class ParticipantValue private constructor(
     val asParticipant: Participant?,
diff --git a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/RecipientValue.kt b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/RecipientValue.kt
index bf3620d..f66ad67 100644
--- a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/RecipientValue.kt
+++ b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/RecipientValue.kt
@@ -17,10 +17,10 @@
 package androidx.appactions.interaction.capabilities.communication
 
 import androidx.appactions.builtintypes.experimental.properties.Recipient
+import androidx.appactions.interaction.capabilities.core.SearchAction
 import androidx.appactions.interaction.capabilities.core.impl.converters.ParamValueConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.converters.UnionTypeSpec
-import androidx.appactions.interaction.capabilities.core.SearchAction
 
 class RecipientValue private constructor(
     val asRecipient: Recipient?,
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/CalendarEvent.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/CalendarEvent.kt
index fa8d0d8..95d92df 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/CalendarEvent.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/CalendarEvent.kt
@@ -17,10 +17,10 @@
 package androidx.appactions.builtintypes.experimental.types
 
 // TODO(b/271634410): Update Attendee references
+import androidx.appactions.builtintypes.experimental.properties.Attendee
 import androidx.appactions.builtintypes.experimental.properties.EndDate
 import androidx.appactions.builtintypes.experimental.properties.Name
 import androidx.appactions.builtintypes.experimental.properties.StartDate
-import androidx.appactions.builtintypes.experimental.properties.Attendee
 import java.time.LocalDate
 import java.time.ZonedDateTime
 
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/ItemList.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/ItemList.kt
index e2308b6..df7d88a 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/ItemList.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/builtintypes/experimental/types/ItemList.kt
@@ -16,8 +16,8 @@
 
 package androidx.appactions.builtintypes.experimental.types
 
-import androidx.appactions.builtintypes.experimental.properties.Name
 import androidx.appactions.builtintypes.experimental.properties.ItemListElement
+import androidx.appactions.builtintypes.experimental.properties.Name
 
 interface ItemList : Thing {
     val itemListElements: List<ItemListElement>
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt
index a720034..58eb98a 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt
@@ -127,7 +127,7 @@
          * calling one will nullify the other.
          *
          * This method accepts a coroutine-based ExecutionCallback instance. There is also an
-         * overload which accepts the ExecutionCallbackAsync instead.
+         * overload which accepts the [ExecutionCallbackAsync] instead.
          */
         @SuppressLint("MissingGetterMatchingBuilder")
         fun setExecutionCallback(executionCallback: ExecutionCallback<ArgumentsT, OutputT>) =
@@ -136,13 +136,13 @@
             }
 
         /**
-         * Sets the ExecutionCallbackAsync for this capability.
+         * Sets the [ExecutionCallbackAsync] for this capability.
          *
-         * setExecutionSessionFactory and setExecutionCallback are mutually exclusive, so calling
-         * one will nullify the other.
+         * [setExecutionSessionFactory] and [setExecutionCallback] are mutually exclusive, so
+         * calling one will nullify the other.
          *
-         * This method accepts the ExecutionCallbackAsync interface which returns a
-         * [ListenableFuture].
+         * This method accepts the [ExecutionCallbackAsync] interface, which is the Future version
+         * of [ExecutionCallback]
          */
         @SuppressLint("MissingGetterMatchingBuilder")
         fun setExecutionCallback(
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/HostProperties.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/HostProperties.kt
index 564a173..b3cdb06 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/HostProperties.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/HostProperties.kt
@@ -52,7 +52,7 @@
          * Builds and returns the HostProperties instance.
          */
         fun build() = HostProperties(
-            requireNotNull(maxHostSizeDp, { "maxHostSizeDp must be set." }),
+            requireNotNull(maxHostSizeDp) { "maxHostSizeDp must be set." },
         )
     }
 }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/LibInfo.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/LibInfo.kt
index c1c053c..8157944 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/LibInfo.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/LibInfo.kt
@@ -18,9 +18,8 @@
 
 import android.content.Context
 import androidx.annotation.RestrictTo
-
-import java.util.regex.Pattern
 import java.util.Objects.requireNonNull
+import java.util.regex.Pattern
 
 /** @suppress */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/SearchAction.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/SearchAction.kt
index 10beb9a..03648fd 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/SearchAction.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/SearchAction.kt
@@ -35,6 +35,12 @@
         return true
     }
 
+    override fun hashCode(): Int {
+        var result = query?.hashCode() ?: 0
+        result += 31 * (filter?.hashCode() ?: 0)
+        return result
+    }
+
     /** Builder class for Entity. */
     class Builder<FilterT> {
         private var query: String? = null
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupCandidate.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupCandidate.kt
index e1734cb..9fac8e1 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupCandidate.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupCandidate.kt
@@ -22,7 +22,7 @@
 ) {
 
     override fun toString(): String {
-        return "EntityLookupCandidate(cadidate=$candidate)"
+        return "EntityLookupCandidate(candidate=$candidate)"
     }
 
     override fun equals(other: Any?): Boolean {
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupResponse.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupResponse.kt
index 029e261..1f3f166 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupResponse.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityLookupResponse.kt
@@ -56,7 +56,7 @@
         private var candidateList: List<EntityLookupCandidate<T>> = listOf()
 
         @property:EntityLookupStatus
-        private var status: Int = EntityLookupResponse.SUCCESS
+        private var status: Int = SUCCESS
         private var nextPageToken: ByteString? = null
         fun setCandidateList(candidateList: List<EntityLookupCandidate<T>>): Builder<T> = apply {
             this.candidateList = candidateList
@@ -71,7 +71,7 @@
             this.nextPageToken = nextPageToken
         }
 
-        fun build() = EntityLookupResponse<T>(candidateList, status, nextPageToken)
+        fun build() = EntityLookupResponse(candidateList, status, nextPageToken)
     }
 
     companion object {
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityProvider.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityProvider.kt
index 121b582..2e62623 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityProvider.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/entity/EntityProvider.kt
@@ -17,14 +17,14 @@
 package androidx.appactions.interaction.capabilities.core.entity
 
 import androidx.annotation.RestrictTo
-import androidx.appactions.interaction.capabilities.core.impl.converters.EntityConverter
+import androidx.appactions.builtintypes.experimental.types.Thing
+import androidx.appactions.interaction.capabilities.core.SearchAction
 import androidx.appactions.interaction.capabilities.core.impl.concurrent.Futures
+import androidx.appactions.interaction.capabilities.core.impl.converters.EntityConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.SearchActionConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeSpec
 import androidx.appactions.interaction.capabilities.core.impl.exceptions.StructConversionException
-import androidx.appactions.interaction.capabilities.core.SearchAction
-import androidx.appactions.builtintypes.experimental.types.Thing
 import androidx.appactions.interaction.proto.GroundingRequest
 import androidx.appactions.interaction.proto.GroundingResponse
 import androidx.concurrent.futures.await
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ArgumentsWrapper.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ArgumentsWrapper.kt
index 8aaadae..f6178d5 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ArgumentsWrapper.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ArgumentsWrapper.kt
@@ -54,7 +54,7 @@
             ) {
                 null
             } else {
-                RequestMetadata(fulfillment.type)
+                RequestMetadata(fulfillment.type, fulfillment.syncStatus)
             }
         }
 
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/RequestMetadata.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/RequestMetadata.kt
index 37be7ca..d001532 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/RequestMetadata.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/RequestMetadata.kt
@@ -21,12 +21,14 @@
 
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 data class RequestMetadata internal constructor(
-    val requestType: Fulfillment.Type
+    val requestType: Fulfillment.Type,
+    val syncStatus: Fulfillment.SyncStatus
 ) {
     companion object {
         @JvmStatic
-        fun create(requestType: Fulfillment.Type): RequestMetadata {
-            return RequestMetadata(requestType)
+        fun create(requestType: Fulfillment.Type, syncStatus: Fulfillment.SyncStatus):
+            RequestMetadata {
+            return RequestMetadata(requestType, syncStatus)
         }
     }
 }
\ No newline at end of file
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt
index f61a922..4c74879 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt
@@ -22,8 +22,8 @@
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpec
 import androidx.appactions.interaction.capabilities.core.impl.utils.CapabilityLogger
 import androidx.appactions.interaction.capabilities.core.impl.utils.LoggerInternal
-import androidx.appactions.interaction.capabilities.core.impl.utils.invokeExternalSuspendBlock
 import androidx.appactions.interaction.capabilities.core.impl.utils.handleExceptionFromRequestProcessing
+import androidx.appactions.interaction.capabilities.core.impl.utils.invokeExternalSuspendBlock
 import androidx.appactions.interaction.proto.AppActionsContext.AppDialogState
 import androidx.appactions.interaction.proto.FulfillmentResponse
 import androidx.appactions.interaction.proto.ParamValue
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/Futures.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/Futures.java
index 51a4614..1486f0b 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/Futures.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/Futures.java
@@ -122,7 +122,7 @@
             }
 
             @Override
-            public void onFailure(Throwable failure) {
+            public void onFailure(@NonNull Throwable failure) {
                 completer.setException(failure);
             }
         };
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/EntityConverter.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/EntityConverter.kt
index 6c7a290..05072dd 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/EntityConverter.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/EntityConverter.kt
@@ -43,13 +43,13 @@
             }
         }
 
-        internal fun valueToEntity(value: Value): Entity {
+        private fun valueToEntity(value: Value): Entity {
             val builder = Entity.newBuilder()
             when {
-                value.hasStringValue() -> builder.setStringValue(value.getStringValue())
-                value.hasBoolValue() -> builder.setBoolValue(value.getBoolValue())
-                value.hasNumberValue() -> builder.setNumberValue(value.getNumberValue())
-                value.hasStructValue() -> builder.setStructValue(value.getStructValue())
+                value.hasStringValue() -> builder.stringValue = value.stringValue
+                value.hasBoolValue() -> builder.boolValue = value.boolValue
+                value.hasNumberValue() -> builder.numberValue = value.numberValue
+                value.hasStructValue() -> builder.structValue = value.structValue
                 else -> throw IllegalStateException("cannot convert $value into Entity.")
             }
             return builder.build()
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/ParamValueConverter.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/ParamValueConverter.kt
index df74750..a2ec085 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/ParamValueConverter.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/ParamValueConverter.kt
@@ -54,10 +54,10 @@
         internal fun paramValueToValue(paramValue: ParamValue): Value {
             val builder = Value.newBuilder()
             when {
-                paramValue.hasStringValue() -> builder.setStringValue(paramValue.getStringValue())
-                paramValue.hasBoolValue() -> builder.setBoolValue(paramValue.getBoolValue())
-                paramValue.hasNumberValue() -> builder.setNumberValue(paramValue.getNumberValue())
-                paramValue.hasStructValue() -> builder.setStructValue(paramValue.getStructValue())
+                paramValue.hasStringValue() -> builder.stringValue = paramValue.stringValue
+                paramValue.hasBoolValue() -> builder.boolValue = paramValue.boolValue
+                paramValue.hasNumberValue() -> builder.numberValue = paramValue.numberValue
+                paramValue.hasStructValue() -> builder.structValue = paramValue.structValue
                 else -> throw StructConversionException("cannot convert $paramValue into Value.")
             }
             return builder.build()
@@ -66,10 +66,10 @@
         internal fun valueToParamValue(value: Value): ParamValue {
             val builder = ParamValue.newBuilder()
             when {
-                value.hasStringValue() -> builder.setStringValue(value.getStringValue())
-                value.hasBoolValue() -> builder.setBoolValue(value.getBoolValue())
-                value.hasNumberValue() -> builder.setNumberValue(value.getNumberValue())
-                value.hasStructValue() -> builder.setStructValue(value.getStructValue())
+                value.hasStringValue() -> builder.stringValue = value.stringValue
+                value.hasBoolValue() -> builder.boolValue = value.boolValue
+                value.hasNumberValue() -> builder.numberValue = value.numberValue
+                value.hasStructValue() -> builder.structValue = value.structValue
                 else -> throw IllegalStateException("cannot convert $value to ParamValue.")
             }
             return builder.build()
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeConverters.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeConverters.java
index a963bf6..8d26ad7 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeConverters.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeConverters.java
@@ -373,15 +373,15 @@
         return TypeSpecBuilder.newBuilder(
                         "SearchAction",
                         SearchAction.Builder<T>::new,
-                        SearchAction.Builder<T>::build)
+                        SearchAction.Builder::build)
                 .bindStringField(
                         "query",
                         SearchAction::getQuery,
-                        SearchAction.Builder<T>::setQuery)
+                        SearchAction.Builder::setQuery)
                 .bindSpecField(
                         "filter",
                         SearchAction::getFilter,
-                        SearchAction.Builder<T>::setFilter,
+                        SearchAction.Builder::setFilter,
                         nestedTypeSpec)
                 .build();
     }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpec.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpec.kt
index fbb5d4a..4656db6 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpec.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpec.kt
@@ -47,7 +47,7 @@
             ): Value = Value.newBuilder().setStringValue(obj).build()
 
             override fun fromValue(value: Value): String = when {
-                value.hasStringValue() -> value.getStringValue()
+                value.hasStringValue() -> value.stringValue
                 else -> throw StructConversionException("STRING_TYPE_SPEC cannot convert $value")
             }
         }
@@ -61,7 +61,7 @@
             ): Value = Value.newBuilder().setBoolValue(obj).build()
 
             override fun fromValue(value: Value): Boolean = when {
-                value.hasBoolValue() -> value.getBoolValue()
+                value.hasBoolValue() -> value.boolValue
                 else -> throw StructConversionException("BOOL_TYPE_SPEC cannot convert $value")
             }
         }
@@ -75,7 +75,7 @@
             ): Value = Value.newBuilder().setNumberValue(obj).build()
 
             override fun fromValue(value: Value): Double = when {
-                value.hasNumberValue() -> value.getNumberValue()
+                value.hasNumberValue() -> value.numberValue
                 else -> throw StructConversionException("NUMBER_TYPE_SPEC cannot convert $value")
             }
         }
@@ -89,7 +89,7 @@
             ): Value = Value.newBuilder().setNumberValue(obj.toDouble()).build()
 
             override fun fromValue(value: Value): Int = when {
-                value.hasNumberValue() -> value.getNumberValue().toInt()
+                value.hasNumberValue() -> value.numberValue.toInt()
                 else -> throw StructConversionException("INTEGER_TYPE_SPEC cannot convert $value")
             }
         }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpecBuilder.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpecBuilder.java
index 21c30a6..279e65c 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpecBuilder.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/TypeSpecBuilder.java
@@ -305,9 +305,7 @@
                     }
                     return spec.toValue(value);
                 },
-                (builder, value) -> {
-                    valueSetter.accept(builder, spec.fromValue(value));
-                });
+                (builder, value) -> valueSetter.accept(builder, spec.fromValue(value)));
     }
 
     /** binds a repeated spec field to read from / write to Struct. */
@@ -321,7 +319,7 @@
                 valueGetter,
                 valueSetter,
                 spec::toValue,
-                (value) -> spec.fromValue(value));
+                spec::fromValue);
     }
 
     TypeSpec<T> build() {
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/UnionTypeSpec.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/UnionTypeSpec.kt
index 8f161a6..025c5fa 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/UnionTypeSpec.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/converters/UnionTypeSpec.kt
@@ -25,9 +25,9 @@
     private val bindings: List<MemberBinding<T, *>>,
 ) : TypeSpec<T> {
     internal class MemberBinding<T, M>(
-        val memberGetter: (T) -> M?,
-        val ctor: (M) -> T,
-        val typeSpec: TypeSpec<M>,
+        private val memberGetter: (T) -> M?,
+        private val ctor: (M) -> T,
+        private val typeSpec: TypeSpec<M>,
     ) {
         @Throws(StructConversionException::class)
         fun tryDeserialize(value: Value): T {
@@ -48,7 +48,7 @@
     }
 
     private fun getApplicableBinding(obj: T): MemberBinding<T, *> {
-        var applicableBindings = bindings.filter { it.isMemberSet(obj) }
+        val applicableBindings = bindings.filter { it.isMemberSet(obj) }
         return when (applicableBindings.size) {
             0 -> throw IllegalStateException("$obj is invalid, all union members are null.")
             1 -> applicableBindings[0]
@@ -95,6 +95,6 @@
             )
         }
 
-        fun build() = UnionTypeSpec<T>(bindings.toList())
+        fun build() = UnionTypeSpec(bindings.toList())
     }
 }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskHandler.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskHandler.kt
index 9601c24..d4d418a 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskHandler.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskHandler.kt
@@ -35,7 +35,7 @@
     internal val confirmationDataBindings: Map<String, (ConfirmationT) -> List<ParamValue>>,
     internal val onReadyToConfirmListener: OnReadyToConfirmListener<ArgumentsT, ConfirmationT>?,
 ) {
-    class Builder<ArgumentsT, ConfirmationT>() {
+    class Builder<ArgumentsT, ConfirmationT> {
         private val mutableTaskParamMap = mutableMapOf<String, TaskParamBinding<*>>()
         private val confirmationDataBindings =
             mutableMapOf<String, (ConfirmationT) -> List<ParamValue>>()
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt
index 3b4ca84..44cb4e0 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt
@@ -38,6 +38,7 @@
 import androidx.appactions.interaction.proto.AppActionsContext
 import androidx.appactions.interaction.proto.CurrentValue
 import androidx.appactions.interaction.proto.FulfillmentRequest
+import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.SyncStatus
 import androidx.appactions.interaction.proto.FulfillmentResponse
 import androidx.appactions.interaction.proto.ParamValue
 import androidx.appactions.interaction.proto.TouchEventMetadata
@@ -92,14 +93,19 @@
     internal var status: Status = Status.UNINITIATED
         private set
 
+    /**
+     *  Last known Sync Status of the request. Required to process Touch Event Updates
+     */
+    private var lastKnownSyncStatus = SyncStatus.UNKNOWN_SYNC_STATUS
+
+    private val inProgressLock = Any()
+
     // Set a TouchEventCallback instance. This callback is invoked when state changes from manual
     // input.
     internal fun setTouchEventCallback(touchEventCallback: TouchEventCallback?) {
         this.touchEventCallback = touchEventCallback
     }
 
-    private val inProgressLock = Any()
-
     @GuardedBy("inProgressLock")
     private var inProgress = false
 
@@ -185,7 +191,8 @@
             val fulfillmentResult: FulfillmentResult = when (
                 argumentsWrapper.requestMetadata?.requestType
             ) {
-                FulfillmentRequest.Fulfillment.Type.SYNC -> handleSync(argumentsWrapper)
+                FulfillmentRequest.Fulfillment.Type.SYNC ->
+                    handleSyncStatus(argumentsWrapper)
                 FulfillmentRequest.Fulfillment.Type.CONFIRM -> handleConfirm()
                 FulfillmentRequest.Fulfillment.Type.CANCEL -> {
                     terminate()
@@ -276,7 +283,8 @@
         val finalArguments = getCurrentAcceptedArguments()
         if (
             anyParamsOfStatus(CurrentValue.Status.REJECTED) ||
-            !TaskCapabilityUtils.isSlotFillingComplete(finalArguments, appAction.paramsList)
+            !TaskCapabilityUtils.isSlotFillingComplete(finalArguments, appAction.paramsList) ||
+            lastKnownSyncStatus != SyncStatus.SLOTS_COMPLETE
         ) {
             return FulfillmentResponse.getDefaultInstance()
         }
@@ -298,12 +306,35 @@
     }
 
     /**
+     *  Decides if the SDK should perform execution or not based on the Sync Status of the request
+     *
+     *  SyncStatus - SLOTS_INCOMPLETE : Execution is blocked even if all validations pass
+     *  SyncStatus - SLOTS_COMPLETE : Execution is completed if all validations pass
+     *  SyncStatus - INTENT_CONFIRMED : User has confirmed the request and execution will be completed
+     */
+    private suspend fun handleSyncStatus(argumentsWrapper: ArgumentsWrapper):
+        FulfillmentResult {
+        lastKnownSyncStatus = argumentsWrapper.requestMetadata!!.syncStatus
+        return when (lastKnownSyncStatus) {
+            SyncStatus.SLOTS_INCOMPLETE,
+            SyncStatus.SLOTS_COMPLETE,
+            ->
+                handleSyncFulfillmentRequest(argumentsWrapper)
+            SyncStatus.INTENT_CONFIRMED
+            ->
+                handleConfirm()
+            else -> FulfillmentResult(ErrorStatusInternal.INVALID_REQUEST)
+        }
+    }
+
+    /**
      * Handles a SYNC request from assistant.
      *
      * Control-flow logic for a single task turn. Note, a task may start and finish in the same
      * turn, so the logic should include onEnter, arg validation, and onExit.
      */
-    private suspend fun handleSync(argumentsWrapper: ArgumentsWrapper): FulfillmentResult {
+    private suspend fun handleSyncFulfillmentRequest(argumentsWrapper: ArgumentsWrapper):
+        FulfillmentResult {
         maybeInitializeTask()
         clearMissingArgs(argumentsWrapper)
         processFulfillmentValues(argumentsWrapper.paramValues)
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/exceptions/DisambigStateException.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/exceptions/DisambigStateException.java
index af225a1..616c7b3 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/exceptions/DisambigStateException.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/exceptions/DisambigStateException.java
@@ -21,7 +21,7 @@
 
 /**
  * Represents an internal issue with the state sync between the SDK and Assistant. One example is
- * when the SDK places an argument in dismabig state, but then Assistant sends the same argument
+ * when the SDK places an argument in disambig state, but then Assistant sends the same argument
  * data again without any grounding.
  */
 public final class DisambigStateException extends InvalidRequestException {
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt
index 4410f42..536472e 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt
@@ -88,7 +88,7 @@
 }
 
 /**
- * Handles an exception encountered during request proessing (one-shot or multi-turn).
+ * Handles an exception encountered during request processing (one-shot or multi-turn).
  * Includes reporting an ErrorStatusInternal to some callback based on the exception.
  */
 internal fun handleExceptionFromRequestProcessing(
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/LibInfoTest.kt b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/LibInfoTest.kt
index 8bed86d..f564983 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/LibInfoTest.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/LibInfoTest.kt
@@ -17,9 +17,7 @@
 package androidx.appactions.interaction.capabilities.core
 
 import androidx.appactions.interaction.capabilities.core.LibInfo.Version
-
 import com.google.common.truth.Truth.assertThat
-
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/FuturesTest.kt b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/FuturesTest.kt
index 6d9de02..d0c26db 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/FuturesTest.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/FuturesTest.kt
@@ -21,13 +21,13 @@
 import androidx.concurrent.futures.CallbackToFutureAdapter
 import androidx.concurrent.futures.CallbackToFutureAdapter.Completer
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.TimeUnit.MILLISECONDS
 import kotlinx.coroutines.CompletableDeferred
 import org.junit.Assert.assertThrows
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.concurrent.ExecutionException
-import java.util.concurrent.TimeUnit.MILLISECONDS
 
 @RunWith(JUnit4::class)
 class FuturesTest {
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/ListenableFutureHelperTest.kt b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/ListenableFutureHelperTest.kt
index 310078e..9b7b0b91 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/ListenableFutureHelperTest.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/concurrent/ListenableFutureHelperTest.kt
@@ -17,6 +17,8 @@
 package androidx.appactions.interaction.capabilities.core.impl.concurrent
 
 import com.google.common.truth.Truth.assertThat
+import kotlin.coroutines.cancellation.CancellationException
+import kotlin.time.Duration.Companion.seconds
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.channels.ReceiveChannel
 import kotlinx.coroutines.channels.SendChannel
@@ -25,8 +27,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.coroutines.cancellation.CancellationException
-import kotlin.time.Duration.Companion.seconds
 
 @RunWith(JUnit4::class)
 class ListenableFutureHelperTest {
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImplTest.kt b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImplTest.kt
index 241d5f3..f768e2b 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImplTest.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImplTest.kt
@@ -58,8 +58,8 @@
 import androidx.appactions.interaction.proto.CurrentValue
 import androidx.appactions.interaction.proto.DisambiguationData
 import androidx.appactions.interaction.proto.Entity
+import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.SyncStatus
 import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type.CANCEL
-import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type
 import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type.SYNC
 import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type.UNKNOWN_TYPE
 import androidx.appactions.interaction.proto.FulfillmentResponse.StructuredOutput
@@ -1036,7 +1036,6 @@
 
     @Test
     @kotlin.Throws(Exception::class)
-    @Suppress("DEPRECATION") // TODO(b/279830425) implement tryExecute (INTENT_CONFIRMED can be used instead)
     fun fulfillmentType_syncWithConfirmation_stateClearedAfterConfirmation() {
         val sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession =
             { _ ->
@@ -1090,7 +1089,7 @@
         // active
         val callback2 = FakeCallbackInternal()
         session.execute(
-            buildRequestArgs(Type.CONFIRM),
+            buildRequestArgs(SYNC, SyncStatus.INTENT_CONFIRMED),
             callback2
         )
 
@@ -1148,6 +1147,259 @@
         assertThat(callback2.receiveResponse().errorStatus)
             .isEqualTo(ErrorStatusInternal.SESSION_ALREADY_DESTROYED)
     }
+    @Test
+    @kotlin.Throws(Exception::class)
+    fun syncStatus_unknown_errorReported() {
+        val capability: Capability =
+            createCapability(
+                SINGLE_REQUIRED_FIELD_PROPERTY,
+                sessionFactory =
+                    { _ ->
+                        object : ExecutionSession {
+                            override suspend fun onExecute(arguments: Arguments) =
+                                ExecutionResult.Builder<Output>().build()
+                        }
+                    },
+                sessionBridge = SessionBridge { TaskHandler.Builder<Arguments, Confirmation>()
+                    .build() },
+                sessionUpdaterSupplier = ::RequiredTaskUpdater,
+            )
+        val session = capability.createSession(fakeSessionId, hostProperties)
+
+        assertThat(capability.appAction)
+            .isEqualTo(
+                AppAction.newBuilder()
+                    .setName("actions.intent.TEST")
+                    .setIdentifier("id")
+                    .addParams(
+                        IntentParameter.newBuilder().setName("required").setIsRequired(true),
+                    )
+                    .setTaskInfo(
+                        TaskInfo.newBuilder().setSupportsPartialFulfillment(true),
+                    )
+                    .build(),
+            )
+
+        // TURN 1 (UNKNOWN).
+        val errorCallback = FakeCallbackInternal()
+        session.execute(buildRequestArgs(SYNC, SyncStatus.UNKNOWN_SYNC_STATUS),
+            errorCallback)
+        assertThat(errorCallback.receiveResponse().errorStatus)
+            .isEqualTo(ErrorStatusInternal.INVALID_REQUEST)
+
+        // TURN 2 (UNRECOGNIZED)
+        val errorCallback2 = FakeCallbackInternal()
+        session.execute(buildRequestArgs(SYNC, SyncStatus.UNRECOGNIZED),
+            errorCallback2)
+        assertThat(errorCallback2.receiveResponse().errorStatus)
+            .isEqualTo(ErrorStatusInternal.INVALID_REQUEST)
+    }
+
+    @Test
+    @kotlin.Throws(Exception::class)
+    fun syncStatus_slotsIncomplete_taskNotExecuted() {
+        val property = mapOf(
+            "required" to Property.Builder<StringValue>().setRequired(true).build()
+        )
+        val onExecuteInvocationCount = AtomicInteger(0)
+        val sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession =
+            { _ ->
+                object : ExecutionSession {
+                    override suspend fun onExecute(arguments: Arguments): ExecutionResult<Output> {
+                        onExecuteInvocationCount.incrementAndGet()
+                        return ExecutionResult.Builder<Output>().build()
+                    }
+                }
+            }
+        val capability: Capability =
+            createCapability(
+                property,
+                sessionFactory = sessionFactory,
+                sessionBridge = SessionBridge { TaskHandler.Builder<Arguments, Confirmation>()
+                    .build() },
+                sessionUpdaterSupplier = ::EmptyTaskUpdater,
+            )
+        val session = capability.createSession(fakeSessionId, hostProperties)
+
+        /** TURN 1. Not providing all the required slots and passing SyncStatus as SLOTS_INCOMPLETE
+         *  Execution should not happen as sync status is SLOTS_INCOMPLETE
+         */
+        val callback = FakeCallbackInternal()
+        session.execute(buildRequestArgs(SYNC, SyncStatus.SLOTS_INCOMPLETE), callback)
+        assertThat(callback.receiveResponse()).isNotNull()
+        assertThat(getCurrentValues("required", session.state!!)).isEmpty()
+        assertThat(onExecuteInvocationCount.get()).isEqualTo(0)
+
+        /** TURN 2. Providing all the required slots but still passing SyncStatus as
+         * SLOTS_INCOMPLETE. Execution should not happen as sync status is SLOTS_INCOMPLETE
+         */
+        val callback2 = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(
+                SYNC,
+                SyncStatus.SLOTS_INCOMPLETE,
+                "required",
+                ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo").build(),
+            ),
+            callback2,
+        )
+        assertThat(callback2.receiveResponse()).isNotNull()
+        assertThat(getCurrentValues("required", session.state!!))
+            .containsExactly(
+                CurrentValue.newBuilder()
+                    .setValue(
+                        ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo"),
+                    )
+                    .setStatus(CurrentValue.Status.ACCEPTED)
+                    .build(),
+            )
+        assertThat(onExecuteInvocationCount.get()).isEqualTo(0)
+
+        /**
+         *  TURN 3. Providing all the required slots and passing SyncStatus as SLOTS_COMPLETE
+         *  Execution should happen
+         */
+        val callback3 = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(
+                SYNC,
+                SyncStatus.SLOTS_COMPLETE,
+                "required",
+                ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo").build(),
+            ),
+            callback3,
+        )
+        assertThat(callback3.receiveResponse()).isNotNull()
+        assertThat(onExecuteInvocationCount.get()).isEqualTo(1)
+    }
+
+    @Test
+    @kotlin.Throws(Exception::class)
+    fun syncStatus_intentConfirmed_taskExecuted() {
+        val onConfirmationInvocationCount = AtomicInteger(0)
+        var onReadyConfirm =
+            object : OnReadyToConfirmListener<Arguments, Confirmation> {
+                override suspend fun onReadyToConfirm(arguments: Arguments):
+                    ConfirmationOutput<Confirmation> {
+                    onConfirmationInvocationCount.incrementAndGet()
+                    return ConfirmationOutput.Builder<Confirmation>()
+                        .setConfirmation(Confirmation.Builder().setOptionalStringField("bar")
+                            .build())
+                        .build()
+                }
+            }
+        val property = mapOf(
+            "required" to Property.Builder<StringValue>().setRequired(true).build()
+        )
+        val onExecuteInvocationCount = AtomicInteger(0)
+        val sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession =
+            { _ ->
+                object : ExecutionSession {
+                    override suspend fun onExecute(arguments: Arguments): ExecutionResult<Output> {
+                        onExecuteInvocationCount.incrementAndGet()
+                        return ExecutionResult.Builder<Output>()
+                            .setOutput(
+                                Output.Builder()
+                                    .setOptionalStringField("baz")
+                                    .setRepeatedStringField(listOf("baz1", "baz2"))
+                                    .build())
+                            .build()
+                    }
+                }
+            }
+        val capability: Capability =
+            createCapability(
+                property,
+                sessionFactory = sessionFactory,
+                sessionBridge = {
+                                    TaskHandler.Builder<Arguments, Confirmation>()
+                                        .setOnReadyToConfirmListener(onReadyConfirm)
+                                        .registerConfirmationOutput(
+                                            "optionalStringOutput",
+                                            Confirmation::optionalStringField,
+                                            TypeConverters.STRING_PARAM_VALUE_CONVERTER
+                                            ::toParamValue)
+                                        .build() },
+                sessionUpdaterSupplier = ::EmptyTaskUpdater,
+            )
+
+        val session = capability.createSession(fakeSessionId, hostProperties)
+
+        /** TURN 1. Providing all the required slots and passing SyncStatus as SLOTS_COMPLETE
+         *  This should trigger the confirmation. Execution should not happen
+         */
+        val callback = FakeCallbackInternal()
+        session.execute(buildRequestArgs(
+            SYNC,
+            SyncStatus.SLOTS_COMPLETE,
+            "required",
+            ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo").build(),
+        ), callback)
+        assertThat(callback.receiveResponse()).isNotNull()
+        assertThat(getCurrentValues("required", session.state!!))
+            .containsExactly(
+                CurrentValue.newBuilder()
+                    .setValue(
+                        ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo"),
+                    )
+                    .setStatus(CurrentValue.Status.ACCEPTED)
+                    .build(),
+            )
+        assertThat(onExecuteInvocationCount.get()).isEqualTo(0)
+        assertThat(onConfirmationInvocationCount.get()).isEqualTo(1)
+
+        // Confirm the BIC
+        val expectedConfirmationOutput: StructuredOutput =
+            StructuredOutput.newBuilder()
+                .addOutputValues(
+                    OutputValue.newBuilder()
+                        .setName("optionalStringOutput")
+                        .addValues(ParamValue.newBuilder().setStringValue("bar").build())
+                        .build())
+                .build()
+        assertThat(callback.receiveResponse()
+            .fulfillmentResponse!!
+            .confirmationData
+            .outputValuesList
+        )
+            .containsExactlyElementsIn(expectedConfirmationOutput.outputValuesList)
+
+        /** TURN 2. Send CONFIRM request using INTENT_CONFIRMED sync status.
+         *  Execution should happen
+         */
+        val callback2 = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(
+                SYNC,
+                SyncStatus.INTENT_CONFIRMED,
+            ),
+            callback2,
+        )
+        assertThat(callback2.receiveResponse()).isNotNull()
+        assertThat(onExecuteInvocationCount.get()).isEqualTo(1)
+
+        // Confirm the BIO
+        val expectedOutput: StructuredOutput =
+            StructuredOutput.newBuilder()
+                .addOutputValues(
+                    OutputValue.newBuilder()
+                        .setName("optionalStringOutput")
+                        .addValues(ParamValue.newBuilder().setStringValue("baz"))
+                        .build())
+                .addOutputValues(
+                    OutputValue.newBuilder()
+                        .setName("repeatedStringOutput")
+                        .addValues(ParamValue.newBuilder().setStringValue("baz1").build())
+                        .addValues(ParamValue.newBuilder().setStringValue("baz2").build())
+                        .build()
+                )
+                .build()
+        assertThat(callback2.receiveResponse()
+            .fulfillmentResponse!!
+            .getExecutionOutput()
+            .getOutputValuesList())
+            .containsExactlyElementsIn(expectedOutput.getOutputValuesList())
+    }
 
     @Test
     fun structConversionException_shouldReportStructConversionFailure() {
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskSlotProcessorTest.kt b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskSlotProcessorTest.kt
index bd0a338..eca8de0 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskSlotProcessorTest.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskSlotProcessorTest.kt
@@ -18,11 +18,11 @@
 import androidx.appactions.interaction.capabilities.core.AppEntityListener
 import androidx.appactions.interaction.capabilities.core.EntitySearchResult
 import androidx.appactions.interaction.capabilities.core.InventoryListener
+import androidx.appactions.interaction.capabilities.core.SearchAction
 import androidx.appactions.interaction.capabilities.core.ValidationResult
 import androidx.appactions.interaction.capabilities.core.ValueListener
 import androidx.appactions.interaction.capabilities.core.impl.concurrent.Futures
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
-import androidx.appactions.interaction.capabilities.core.SearchAction
 import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils
 import androidx.appactions.interaction.capabilities.testing.internal.TestingUtils.awaitSync
 import androidx.appactions.interaction.proto.CurrentValue
diff --git a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/TimerValue.kt b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/TimerValue.kt
index 7f21f96..b16d175 100644
--- a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/TimerValue.kt
+++ b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/TimerValue.kt
@@ -17,11 +17,11 @@
 package androidx.appactions.interaction.capabilities.productivity
 
 import androidx.appactions.builtintypes.experimental.types.Timer
+import androidx.appactions.interaction.capabilities.core.SearchAction
 import androidx.appactions.interaction.capabilities.core.impl.converters.EntityConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.ParamValueConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.converters.UnionTypeSpec
-import androidx.appactions.interaction.capabilities.core.SearchAction
 import java.util.Objects
 
 class TimerValue
diff --git a/appactions/interaction/interaction-capabilities-testing/src/main/java/androidx/appactions/interaction/capabilities/testing/internal/ArgumentUtils.kt b/appactions/interaction/interaction-capabilities-testing/src/main/java/androidx/appactions/interaction/capabilities/testing/internal/ArgumentUtils.kt
index 4408c92..a452ee0 100644
--- a/appactions/interaction/interaction-capabilities-testing/src/main/java/androidx/appactions/interaction/capabilities/testing/internal/ArgumentUtils.kt
+++ b/appactions/interaction/interaction-capabilities-testing/src/main/java/androidx/appactions/interaction/capabilities/testing/internal/ArgumentUtils.kt
@@ -93,19 +93,42 @@
 
     /**
      * Convenience method to build ArgumentsWrapper based on plain java types. Input args should be
-     * even in length, where each String argName is followed by any type of argVal.
+     * even in length, where each String argName is followed by any type of argVal. This method
+     * will use SLOTS_COMPLETE as the default value for the SyncStatus
      */
     fun buildRequestArgs(
         type: Fulfillment.Type,
         vararg args: Any,
     ): ArgumentsWrapper {
-        val builder = Fulfillment.newBuilder()
+        return buildRequestArgs(type, Fulfillment.SyncStatus.SLOTS_COMPLETE, *args)
+    }
+
+    /**
+     * Convenience method to build ArgumentsWrapper based on plain java types and
+     * also sets the SyncStatus. Input args should be even in length, where each String
+     * argName is followed by any type of argVal.
+     */
+    fun buildRequestArgs(
+        type: Fulfillment.Type,
+        syncStatus: Fulfillment.SyncStatus,
+        vararg args: Any,
+    ): ArgumentsWrapper {
+        val builder = Fulfillment.newBuilder().addAllParams(buildFulfillmentParams(*args))
         if (type != Fulfillment.Type.UNRECOGNIZED) {
             builder.type = type
+            if (type == Fulfillment.Type.SYNC &&
+                syncStatus != Fulfillment.SyncStatus.UNRECOGNIZED) {
+                builder.syncStatus = syncStatus
+            }
         }
+        return ArgumentsWrapper.create(builder.build())
+    }
+
+    private fun buildFulfillmentParams(vararg args: Any): List<FulfillmentParam> {
         if (args.isEmpty()) {
-            return ArgumentsWrapper.create(builder.build())
+            return emptyList()
         }
+        val fulfillmentParams = mutableListOf<FulfillmentParam>()
         require(args.size % 2 == 0) { "Must call function with even number of args" }
         val argsMap: MutableMap<String, MutableList<ParamValue>> = LinkedHashMap()
         var argNamePos = 0
@@ -128,13 +151,13 @@
         for ((key, valueList) in argsMap.entries) {
             val paramBuilder = FulfillmentParam.newBuilder().setName(key)
             for (value in valueList) {
-                builder.addParams(
+                fulfillmentParams.add(
                     paramBuilder.addFulfillmentValues(
                         FulfillmentValue.newBuilder().setValue(value).build()
-                    )
+                    ).build()
                 )
             }
         }
-        return ArgumentsWrapper.create(builder.build())
+        return fulfillmentParams.toList()
     }
 }
diff --git a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImpl.kt b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImpl.kt
index 69a32b0..d1ac8d1 100644
--- a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImpl.kt
+++ b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImpl.kt
@@ -138,13 +138,13 @@
             if (currentSessionId != null) {
                 return
             }
-            val sessionId = request.getSessionIdentifier()!!
+            val sessionId = request.sessionIdentifier!!
             currentSessionId = sessionId
-            if (registeredCapabilities.size == 0) {
+            if (registeredCapabilities.isEmpty()) {
                 registeredCapabilities = appInteractionService.registeredCapabilities
             }
             val targetCapability = registeredCapabilities
-                .filter { request.getIdentifier() == it.id }
+                .filter { request.identifier == it.id }
                 .firstOrNull()
             if (targetCapability == null) {
                 return respondWithError(
@@ -159,8 +159,8 @@
             val hostProperties = HostProperties.Builder()
                 .setMaxHostSizeDp(
                     SizeF(
-                        request.getHostProperties().getHostViewHeightDp(),
-                        request.getHostProperties().getHostViewWidthDp(),
+                        request.hostProperties.hostViewHeightDp,
+                        request.hostProperties.hostViewWidthDp,
                     ),
                 ).build()
             val session = targetCapability.createSession(
@@ -194,7 +194,7 @@
         request: Request,
         responseObserver: StreamObserver<Response>,
     ) {
-        if (request.getFulfillmentRequest().getFulfillmentsList().isEmpty()) {
+        if (request.fulfillmentRequest.fulfillmentsList.isEmpty()) {
             return respondWithError(
                 StatusRuntimeException(
                     Status.FAILED_PRECONDITION.withDescription(
@@ -204,10 +204,9 @@
                 responseObserver,
             )
         }
-        val selectedFulfillment = request.getFulfillmentRequest().getFulfillments(0)
-        val capability = registeredCapabilities
-            .filter { selectedFulfillment.getIdentifier() == it.id }
-            .firstOrNull()
+        val selectedFulfillment = request.fulfillmentRequest.getFulfillments(0)
+        val capability =
+            registeredCapabilities.firstOrNull { selectedFulfillment.identifier == it.id }
         if (capability == null) {
             return respondWithError(
                 StatusRuntimeException(
@@ -218,7 +217,7 @@
                 responseObserver,
             )
         }
-        val sessionId = request.getSessionIdentifier()!!
+        val sessionId = request.sessionIdentifier!!
         val currentSession = SessionManager.getSession(sessionId)
         if (currentSession == null) {
             return respondWithError(
@@ -246,9 +245,10 @@
                     val uiCache = UiSessions.getUiCacheOrNull(sessionId)
                     if (uiCache != null && uiCache.hasUnreadUiResponse) {
                         val cachedRemoteViewsInternal = uiCache.cachedRemoteViewsInternal
-                        responseBuilder.setUiUpdate(UiUpdate.getDefaultInstance())
+                        responseBuilder.uiUpdate = UiUpdate.getDefaultInstance()
                         if (cachedRemoteViewsInternal != null &&
-                            !cachedRemoteViewsInternal.collectionViewFactories.keys.isEmpty()) {
+                            cachedRemoteViewsInternal.collectionViewFactories.keys.isNotEmpty()
+                        ) {
                             responseBuilder.setCollectionUpdate(
                                 AppInteractionServiceProto.CollectionUpdate.newBuilder()
                                     .addAllViewIds(
@@ -263,9 +263,9 @@
 
                 override fun onFailure(t: Throwable) {
                     respondWithError(
-                        when {
-                            t is CapabilityExecutionException -> convertToGrpcException(t)
-                            t is StatusRuntimeException || t is StatusException -> t
+                        when (t) {
+                            is CapabilityExecutionException -> convertToGrpcException(t)
+                            is StatusRuntimeException, is StatusException -> t
                             else -> StatusRuntimeException(
                                 Status.INTERNAL.withDescription(
                                     t.message,
@@ -286,7 +286,7 @@
         req: AppInteractionServiceProto.UiRequest,
         responseObserver: StreamObserver<AppInteractionServiceProto.UiResponse>,
     ) {
-        val sessionId = req.getSessionIdentifier()!!
+        val sessionId = req.sessionIdentifier!!
         if (SessionManager.getSession(sessionId) == null) {
             return respondWithError(
                 StatusRuntimeException(
@@ -347,9 +347,7 @@
                 responseObserver,
             )
         }
-        val factory = uiCache.cachedRemoteViewsInternal?.collectionViewFactories?.get(
-            req.getViewId()
-        )
+        val factory = uiCache.cachedRemoteViewsInternal?.collectionViewFactories?.get(req.viewId)
         if (factory == null) {
             return respondWithError(
                 StatusRuntimeException(
@@ -358,7 +356,7 @@
                 responseObserver,
             )
         }
-        when (req.getRequestDataCase()) {
+        when (req.requestDataCase) {
             RequestDataCase.ON_DESTROY -> {
                 requestCollectionOnDestroy(factory, responseObserver)
             }
@@ -369,7 +367,7 @@
                 requestCollectionGetViewAt(
                     factory,
                     responseObserver,
-                    req.getGetViewAt().getPosition(),
+                    req.getViewAt.position,
                 )
             }
             RequestDataCase.GET_LOADING_VIEW -> {
@@ -382,7 +380,7 @@
                 requestCollectionGetItemId(
                     factory,
                     responseObserver,
-                    req.getGetItemId().getPosition(),
+                    req.getItemId.position,
                 )
             }
             RequestDataCase.HAS_STABLE_IDS -> {
@@ -400,9 +398,9 @@
         request: GroundingRequest,
         responseObserver: StreamObserver<GroundingResponse>,
     ) {
-        val entityProvider = appInteractionService.registeredEntityProviders.filter {
-            it.id == request.getRequest().getEntityProviderId()
-        }.firstOrNull()
+        val entityProvider = appInteractionService.registeredEntityProviders.firstOrNull {
+            it.id == request.request.entityProviderId
+        }
         if (entityProvider == null) {
             return respondAndComplete(
                 GroundingResponse.newBuilder()
@@ -422,8 +420,8 @@
                 )
             } catch (t: Throwable) {
                 respondWithError(
-                    when {
-                        t is StatusRuntimeException || t is StatusException -> t
+                    when (t) {
+                        is StatusRuntimeException, is StatusException -> t
                         else -> StatusRuntimeException(
                             Status.INTERNAL.withDescription(
                                 t.message,
@@ -452,7 +450,7 @@
             CollectionResponse.newBuilder()
                 .setGetCount(
                     CollectionResponse.GetCount.newBuilder()
-                        .setCount(factory.getCount()),
+                        .setCount(factory.count),
                 )
                 .build(),
             observer,
@@ -472,7 +470,7 @@
         factory: RemoteViewsFactory,
         observer: StreamObserver<CollectionResponse>,
     ) {
-        factory.getLoadingView()?.let(RemoteViewsOverMetadataInterceptor::setRemoteViews)
+        factory.loadingView?.let(RemoteViewsOverMetadataInterceptor::setRemoteViews)
         respondAndComplete(CollectionResponse.getDefaultInstance(), observer)
     }
 
@@ -484,7 +482,7 @@
             CollectionResponse.newBuilder()
                 .setGetViewTypeCount(
                     CollectionResponse.GetViewTypeCount.newBuilder()
-                        .setViewTypeCount(factory.getViewTypeCount()),
+                        .setViewTypeCount(factory.viewTypeCount),
                 )
                 .build(),
             observer,
@@ -543,7 +541,7 @@
     }
 
     internal fun convertToGrpcException(e: CapabilityExecutionException): StatusRuntimeException {
-        return when (e.getErrorStatus()) {
+        return when (e.errorStatus) {
             ErrorStatusInternal.TIMEOUT -> StatusRuntimeException(
                 Status.DEADLINE_EXCEEDED.withDescription(e.message).withCause(e),
             )
@@ -558,9 +556,9 @@
         capability: Capability,
     ): Response {
         val appAction = capability.appAction
-        val isDialogSession = appAction.getTaskInfo().getSupportsPartialFulfillment()
+        val isDialogSession = appAction.taskInfo.supportsPartialFulfillment
         val version = convertToAppActionsContextVersion(
-            LibInfo(appInteractionService.getApplicationContext()).getVersion(),
+            LibInfo(appInteractionService.applicationContext).getVersion(),
         )
         val responseBuilder: Response.Builder =
             // TODO(b/269638788): Add DialogState to the Response proto.
@@ -573,11 +571,9 @@
                         .build(),
                 )
         if (!isDialogSession) {
-            responseBuilder.setEndingStatus(
-                AppInteractionServiceProto.Status.newBuilder()
-                    .setStatusCode(Code.COMPLETE)
-                    .build(),
-            )
+            responseBuilder.endingStatus = AppInteractionServiceProto.Status.newBuilder()
+                .setStatusCode(Code.COMPLETE)
+                .build()
         }
         return responseBuilder.build()
     }
diff --git a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiResponse.kt b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiResponse.kt
index 915be548..5fd605d 100644
--- a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiResponse.kt
+++ b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiResponse.kt
@@ -1,3 +1,4 @@
+
 /*
  * Copyright 2023 The Android Open Source Project
  *
@@ -13,16 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package androidx.appactions.interaction.service
-
 import android.annotation.SuppressLint
 import android.util.SizeF
 import android.widget.RemoteViews
 import android.widget.RemoteViewsService.RemoteViewsFactory
 import androidx.annotation.IdRes
 import androidx.annotation.RestrictTo
-
 /**
  * A class representing the UI response being returned to the host. A `UiResponse` cannot be built
  * directly, it must be built from a [UiResponse] Builder.
@@ -31,21 +29,17 @@
     /** @suppress */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     val remoteViewsInternal: RemoteViewsInternal?
-
     /** @suppress */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     val tileLayoutInternal: TileLayoutInternal?
-
     internal constructor(remoteViewsInternal: RemoteViewsInternal) {
         this.remoteViewsInternal = remoteViewsInternal
         this.tileLayoutInternal = null
     }
-
     internal constructor(tileLayout: TileLayoutInternal) {
         this.remoteViewsInternal = null
         this.tileLayoutInternal = tileLayout
     }
-
     /** Builder for TileLayouts, used in Wear OS. */
     @Suppress("deprecation") // for backward compatibility
     class TileLayoutBuilder {
@@ -53,11 +47,13 @@
         private var resources: androidx.wear.tiles.ResourceBuilders.Resources? = null
 
         /**
-         * Sets the [LayoutElementBuilders.Layout] and the associated [ResourceBuilders.Resources]
-         * to be displayed. [RemoteViews] should not be used together with
-         * [LayoutElementBuilders.Layout] in the same session.
+         * Sets the [androidx.wear.tiles.LayoutElementBuilders.Layout] and the associated
+         * [androidx.wear.tiles.ResourceBuilders.Resources] to be displayed. [RemoteViews] should
+         * not be used together with [androidx.wear.tiles.LayoutElementBuilders.Layout] in the same
+         * session.
          *
-         * @param layout the wear-tile [LayoutElementBuilders.Layout] to be displayed.
+         * @param layout the wear-tile [androidx.wear.tiles.LayoutElementBuilders.Layout] to be
+         * displayed.
          * @param resources the resources associated with the layout.
          */
         @SuppressLint("MissingGetterMatchingBuilder")
@@ -69,17 +65,14 @@
             this.resources = resources
             return this
         }
-
         /** Builds the UiResponse. */
         fun build() = UiResponse(TileLayoutInternal(layout!!, resources!!))
     }
-
     /** Builder for RemoteViews UI response. */
     class RemoteViewsUiBuilder {
         private var remoteViews: RemoteViews? = null
         private var size: SizeF? = null
         private val collectionViewFactories: HashMap<Int, RemoteViewsFactory> = HashMap()
-
         /**
          * Sets the `RemoteViews` to be displayed in the host.
          *
@@ -92,7 +85,6 @@
             this.size = size
             return this
         }
-
         /**
          * Implemented to generate the appropriate factories for collection views (e.g. ListView).
          * Called when the host detects a collection view in the response UI. The
@@ -106,14 +98,13 @@
             @IdRes viewId: Int,
             factory: RemoteViewsFactory
         ): RemoteViewsUiBuilder {
-            collectionViewFactories.put(viewId, factory)
+            collectionViewFactories[viewId] = factory
             return this
         }
-
         /** Builds the UiResponse. */
         fun build() =
             UiResponse(
                 RemoteViewsInternal(remoteViews!!, size!!, collectionViewFactories)
             )
     }
-}
+}
\ No newline at end of file
diff --git a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiSessions.kt b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiSessions.kt
index 1774fa6..4214766 100644
--- a/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiSessions.kt
+++ b/appactions/interaction/interaction-service/src/main/java/androidx/appactions/interaction/service/UiSessions.kt
@@ -18,8 +18,8 @@
 package androidx.appactions.interaction.service
 
 import androidx.annotation.GuardedBy
-import androidx.appactions.interaction.capabilities.core.ExecutionCallback
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.ExecutionCallback
 import androidx.appactions.interaction.capabilities.core.impl.UiHandleRegistry
 import androidx.appactions.interaction.service.UiSessions.removeUiCache
 import javax.annotation.concurrent.ThreadSafe
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImplTest.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImplTest.kt
index b24255e..0e955b2 100644
--- a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImplTest.kt
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/AppInteractionServiceGrpcImplTest.kt
@@ -17,8 +17,8 @@
 package androidx.appactions.interaction.service
 
 import androidx.appactions.interaction.capabilities.core.Capability
-import androidx.appactions.interaction.capabilities.core.impl.CapabilitySession
 import androidx.appactions.interaction.capabilities.core.impl.CallbackInternal
+import androidx.appactions.interaction.capabilities.core.impl.CapabilitySession
 import androidx.appactions.interaction.proto.AppActionsContext.AppAction
 import androidx.appactions.interaction.proto.AppActionsContext.AppDialogState
 import androidx.appactions.interaction.proto.FulfillmentRequest
@@ -30,24 +30,15 @@
 import androidx.appactions.interaction.service.AppInteractionServiceGrpcImpl.Companion.ERROR_NO_FULFILLMENT_REQUEST
 import androidx.appactions.interaction.service.AppInteractionServiceGrpcImpl.Companion.ERROR_NO_SESSION
 import androidx.appactions.interaction.service.AppInteractionServiceGrpcImpl.Companion.ERROR_SESSION_ENDED
-import androidx.appactions.interaction.service.testing.internal.FakeAppInteractionService
 import androidx.appactions.interaction.service.proto.AppInteractionServiceGrpc
 import androidx.appactions.interaction.service.proto.AppInteractionServiceGrpc.AppInteractionServiceStub
 import androidx.appactions.interaction.service.proto.AppInteractionServiceProto.Request
 import androidx.appactions.interaction.service.proto.AppInteractionServiceProto.StartSessionRequest
 import androidx.appactions.interaction.service.proto.AppInteractionServiceProto.StartSessionResponse
+import androidx.appactions.interaction.service.testing.internal.FakeAppInteractionService
 import androidx.concurrent.futures.await
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.argumentCaptor
-import org.mockito.kotlin.doAnswer
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.never
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
-import org.mockito.kotlin.whenever
-import org.robolectric.Robolectric
 import io.grpc.BindableService
 import io.grpc.ManagedChannel
 import io.grpc.Server
@@ -67,6 +58,15 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.doAnswer
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+import org.robolectric.Robolectric
 
 // TODO(b/271929200) Implement tests for the 2 UI related RPCs
 @RunWith(AndroidJUnit4::class)
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/SessionManagerTest.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/SessionManagerTest.kt
index 95e16b9..ebc1d73 100644
--- a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/SessionManagerTest.kt
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/SessionManagerTest.kt
@@ -16,9 +16,9 @@
 
 package androidx.appactions.interaction.service
 
-import androidx.appactions.interaction.capabilities.core.impl.CapabilitySession
 import androidx.appactions.interaction.capabilities.core.impl.ArgumentsWrapper
 import androidx.appactions.interaction.capabilities.core.impl.CallbackInternal
+import androidx.appactions.interaction.capabilities.core.impl.CapabilitySession
 import androidx.appactions.interaction.capabilities.core.impl.TouchEventCallback
 import androidx.appactions.interaction.proto.AppActionsContext
 import androidx.test.ext.junit.runners.AndroidJUnit4
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/UiSessionsTest.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/UiSessionsTest.kt
index 64335ff..970860c 100644
--- a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/UiSessionsTest.kt
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/UiSessionsTest.kt
@@ -22,17 +22,17 @@
 import androidx.appactions.interaction.capabilities.core.ExecutionCallback
 import androidx.appactions.interaction.capabilities.core.ExecutionResult
 import androidx.appactions.interaction.capabilities.core.HostProperties
+import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils.buildArgs
+import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils.buildRequestArgs
+import androidx.appactions.interaction.capabilities.testing.internal.FakeCallbackInternal
+import androidx.appactions.interaction.capabilities.testing.internal.TestingUtils.CB_TIMEOUT
 import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type.SYNC
 import androidx.appactions.interaction.proto.ParamValue
 import androidx.appactions.interaction.service.test.R
-import androidx.appactions.interaction.capabilities.testing.internal.FakeCallbackInternal
-import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils.buildRequestArgs
-import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils.buildArgs
-import androidx.appactions.interaction.capabilities.testing.internal.TestingUtils.CB_TIMEOUT
 import androidx.appactions.interaction.service.testing.internal.FakeCapability
 import androidx.appactions.interaction.service.testing.internal.FakeCapability.Arguments
-import androidx.appactions.interaction.service.testing.internal.FakeCapability.Output
 import androidx.appactions.interaction.service.testing.internal.FakeCapability.ExecutionSession
+import androidx.appactions.interaction.service.testing.internal.FakeCapability.Output
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth.assertThat
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAlarmEntityProvider.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAlarmEntityProvider.kt
index fd99a27..e0151be 100644
--- a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAlarmEntityProvider.kt
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAlarmEntityProvider.kt
@@ -17,10 +17,10 @@
 package androidx.appactions.interaction.service.testing.internal
 
 import androidx.appactions.builtintypes.experimental.types.Alarm
-import androidx.appactions.interaction.capabilities.core.entity.EntityProvider
+import androidx.appactions.interaction.capabilities.core.entity.EntityLookupCandidate
 import androidx.appactions.interaction.capabilities.core.entity.EntityLookupRequest
 import androidx.appactions.interaction.capabilities.core.entity.EntityLookupResponse
-import androidx.appactions.interaction.capabilities.core.entity.EntityLookupCandidate
+import androidx.appactions.interaction.capabilities.core.entity.EntityProvider
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 
 class FakeAlarmEntityProvider(
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAppInteractionService.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAppInteractionService.kt
index 9521309..e4e6f44 100644
--- a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAppInteractionService.kt
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeAppInteractionService.kt
@@ -16,10 +16,10 @@
 
 package androidx.appactions.interaction.service.testing.internal
 
-import androidx.appactions.interaction.service.AppInteractionService
-import androidx.appactions.interaction.service.AppVerificationInfo
 import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.entity.EntityProvider
+import androidx.appactions.interaction.service.AppInteractionService
+import androidx.appactions.interaction.service.AppVerificationInfo
 import io.grpc.binder.SecurityPolicies
 import io.grpc.binder.SecurityPolicy
 
diff --git a/appcompat/appcompat-resources/build.gradle b/appcompat/appcompat-resources/build.gradle
index cd96606..7686cb1 100644
--- a/appcompat/appcompat-resources/build.gradle
+++ b/appcompat/appcompat-resources/build.gradle
@@ -59,8 +59,9 @@
 }
 
 androidx {
-    name = "Android Resources Library"
+    name = "AppCompat Resources"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
-    description = "The Resources Library is a static library that you can add to your Android application in order to use resource APIs that backport the latest APIs to older versions of the platform. Compatible on devices running API 14 or later."
+    description = "Provides backward-compatible implementations of resource-related Android SDK" +
+            "functionality, including color state list theming."
 }
diff --git a/appcompat/appcompat/build.gradle b/appcompat/appcompat/build.gradle
index 614c612..22296ee 100644
--- a/appcompat/appcompat/build.gradle
+++ b/appcompat/appcompat/build.gradle
@@ -104,9 +104,10 @@
 }
 
 androidx {
-    name = "Android AppCompat Library"
+    name = "AppCompat"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2011"
-    description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren\'t a part of the framework APIs. Compatible on devices running API 14 or later."
+    description = "Provides backwards-compatible implementations of UI-related Android SDK " +
+            "functionality, including dark mode and Material theming."
     failOnDeprecationWarnings = false
 }
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatActivityViewTreeTest.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatActivityViewTreeTest.kt
index e3dafc5..050577f 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatActivityViewTreeTest.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatActivityViewTreeTest.kt
@@ -16,10 +16,10 @@
 
 package androidx.appcompat.app
 
-import androidx.lifecycle.findViewTreeLifecycleOwner
-import androidx.savedstate.findViewTreeSavedStateRegistryOwner
 import androidx.activity.findViewTreeOnBackPressedDispatcherOwner
+import androidx.lifecycle.findViewTreeLifecycleOwner
 import androidx.lifecycle.findViewTreeViewModelStoreOwner
+import androidx.savedstate.findViewTreeSavedStateRegistryOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatDialogTest.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatDialogTest.kt
index ceb8677..c82b2ce 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatDialogTest.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/AppCompatDialogTest.kt
@@ -17,8 +17,8 @@
 package androidx.appcompat.app
 
 import android.view.View
-import androidx.lifecycle.findViewTreeLifecycleOwner
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.findViewTreeLifecycleOwner
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextActivity.java b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextActivity.java
index 9f929e5..cbb0e5e 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextActivity.java
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextActivity.java
@@ -25,7 +25,7 @@
  * An activity with customized configuration.
  */
 public class LocalesCustomAttachBaseContextActivity extends LocalesUpdateActivity {
-    public static final float CUSTOM_FONT_SCALE = 4.24f;
+    public static final float CUSTOM_FONT_SCALE = 4.23f;
 
     @Override
     protected void attachBaseContext(Context newBase) {
@@ -33,7 +33,7 @@
     }
 
     private Context useCustomConfig(Context context) {
-        if (Build.VERSION.SDK_INT >= 24) {
+        if (Build.VERSION.SDK_INT >= 17) {
             Configuration config = new Configuration();
             config.fontScale = CUSTOM_FONT_SCALE;
             return context.createConfigurationContext(config);
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextTestCase.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextTestCase.kt
index bece087..395b839 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextTestCase.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/LocalesCustomAttachBaseContextTestCase.kt
@@ -18,7 +18,7 @@
 
 import android.content.res.Configuration
 import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES
-import androidx.appcompat.app.NightModeCustomAttachBaseContextActivity.CUSTOM_FONT_SCALE
+import androidx.appcompat.app.LocalesCustomAttachBaseContextActivity.CUSTOM_FONT_SCALE
 import androidx.appcompat.testutils.LocalesActivityTestRule
 import androidx.appcompat.testutils.LocalesUtils.CUSTOM_LOCALE_LIST
 import androidx.appcompat.testutils.LocalesUtils.setLocalesAndWaitForRecreate
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationActivity.java b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationActivity.java
index 1f187b1..5c9e24e 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationActivity.java
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationActivity.java
@@ -26,8 +26,8 @@
 
 @RequiresApi(17)
 public class NightModeCustomApplyOverrideConfigurationActivity extends NightModeActivity {
-    public static final float CUSTOM_FONT_SCALE = 4.24f;
-    public static final Locale CUSTOM_LOCALE = Locale.CANADA_FRENCH;
+    public static final float CUSTOM_FONT_SCALE = 4.22f;
+    public static final Locale CUSTOM_LOCALE = Locale.CANADA;
 
     @Override
     protected void attachBaseContext(Context newBase) {
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationTestCase.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationTestCase.kt
index 7b2013e..a96dcb7 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationTestCase.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomApplyOverrideConfigurationTestCase.kt
@@ -18,8 +18,8 @@
 
 import android.os.Build
 import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES
-import androidx.appcompat.app.NightModeCustomAttachBaseContextActivity.CUSTOM_FONT_SCALE
-import androidx.appcompat.app.NightModeCustomAttachBaseContextActivity.CUSTOM_LOCALE
+import androidx.appcompat.app.NightModeCustomApplyOverrideConfigurationActivity.CUSTOM_FONT_SCALE
+import androidx.appcompat.app.NightModeCustomApplyOverrideConfigurationActivity.CUSTOM_LOCALE
 import androidx.appcompat.testutils.NightModeActivityTestRule
 import androidx.appcompat.testutils.NightModeUtils.NightSetMode
 import androidx.appcompat.testutils.NightModeUtils.setNightModeAndWaitForRecreate
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomAttachBaseContextActivity.java b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomAttachBaseContextActivity.java
index 16d0bf1..7878c94 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomAttachBaseContextActivity.java
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeCustomAttachBaseContextActivity.java
@@ -27,7 +27,7 @@
  * This is the recommended approach to customizing Activity configuration.
  */
 public class NightModeCustomAttachBaseContextActivity extends NightModeActivity {
-    public static final float CUSTOM_FONT_SCALE = 4.24f;
+    public static final float CUSTOM_FONT_SCALE = 4.21f;
     public static final Locale CUSTOM_LOCALE = Locale.CANADA_FRENCH;
 
     @Override
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeRtlTestUtilsRegressionTestCase.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeRtlTestUtilsRegressionTestCase.kt
index d395ac9..3144e25 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeRtlTestUtilsRegressionTestCase.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeRtlTestUtilsRegressionTestCase.kt
@@ -25,13 +25,13 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
+import java.util.Locale
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.Locale
 
 /**
  * This is one approach to customizing Activity configuration that's used in google3.
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeTestCase.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeTestCase.kt
index c0139a5..501bcfc 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeTestCase.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeTestCase.kt
@@ -42,6 +42,7 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.LifecycleOwnerUtils.waitForRecreation
 import androidx.testutils.waitForExecution
+import java.util.concurrent.CountDownLatch
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertNull
@@ -49,7 +50,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.CountDownLatch
 
 @Suppress("DEPRECATION")
 @LargeTest
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NoThemeAppCompatActivity.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NoThemeAppCompatActivity.kt
index e0a6fb8..f894124 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NoThemeAppCompatActivity.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NoThemeAppCompatActivity.kt
@@ -17,7 +17,6 @@
 package androidx.appcompat.app
 
 import android.os.Bundle
-
 import androidx.appcompat.test.R
 
 class NoThemeAppCompatActivity : AppCompatActivity() {
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatAttributeTest.kt b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatAttributeTest.kt
index 715a55e..aa2e0f5 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatAttributeTest.kt
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatAttributeTest.kt
@@ -22,8 +22,8 @@
 import android.widget.ImageView
 import android.widget.SeekBar
 import android.widget.TextView
-import androidx.appcompat.test.R
 import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.test.R
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
diff --git a/appcompat/appcompat/src/main/res/values-or/strings.xml b/appcompat/appcompat/src/main/res/values-or/strings.xml
index 2ce1a310..ad5622b 100644
--- a/appcompat/appcompat/src/main/res/values-or/strings.xml
+++ b/appcompat/appcompat/src/main/res/values-or/strings.xml
@@ -43,5 +43,5 @@
     <string name="abc_menu_function_shortcut_label" msgid="375214403600139847">"Function+"</string>
     <string name="abc_menu_space_shortcut_label" msgid="5473865519181928982">"ସ୍ପେସ୍‍"</string>
     <string name="abc_menu_enter_shortcut_label" msgid="7986526966204849475">"ଏଣ୍ଟର୍"</string>
-    <string name="abc_menu_delete_shortcut_label" msgid="838001238306846836">"ଡିଲିଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="abc_menu_delete_shortcut_label" msgid="838001238306846836">"ଡିଲିଟ କରନ୍ତୁ"</string>
 </resources>
diff --git a/appsearch/appsearch-builtin-types/build.gradle b/appsearch/appsearch-builtin-types/build.gradle
index 892b427..369bdb7 100644
--- a/appsearch/appsearch-builtin-types/build.gradle
+++ b/appsearch/appsearch-builtin-types/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = 'AppSearch Builtin Types'
+    name = "AppSearch Builtin Types"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = '2021'
     description = 'Contains AppSearch Document classes and builders for a variety of common ' +
diff --git a/appsearch/appsearch-debug-view/build.gradle b/appsearch/appsearch-debug-view/build.gradle
index 1b0c3f2..91cc056 100644
--- a/appsearch/appsearch-debug-view/build.gradle
+++ b/appsearch/appsearch-debug-view/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "AndroidX AppSearch Debug View"
+    name = "AppSearch Debug View"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "A support library for AndroidX AppSearch that contains activities and views " +
diff --git a/appsearch/appsearch-debug-view/samples/build.gradle b/appsearch/appsearch-debug-view/samples/build.gradle
index 6724661..532b284 100644
--- a/appsearch/appsearch-debug-view/samples/build.gradle
+++ b/appsearch/appsearch-debug-view/samples/build.gradle
@@ -46,7 +46,7 @@
 }
 
 androidx {
-    name = "AndroidX AppSearch Debug View Sample App"
+    name = "AppSearch Debug View Sample App"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains a sample app for integrating the Androidx AppSearch Debug View"
diff --git a/appsearch/appsearch-ktx/build.gradle b/appsearch/appsearch-ktx/build.gradle
index fd812db..7b75083 100644
--- a/appsearch/appsearch-ktx/build.gradle
+++ b/appsearch/appsearch-ktx/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = 'AndroidX AppSearch - Kotlin Extensions'
+    name = "AppSearch - Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = '2021'
     description = 'AndroidX AppSearch - Kotlin Extensions'
diff --git a/appsearch/appsearch/build.gradle b/appsearch/appsearch/build.gradle
index 7c0365c..f991e23 100644
--- a/appsearch/appsearch/build.gradle
+++ b/appsearch/appsearch/build.gradle
@@ -55,7 +55,7 @@
 }
 
 androidx {
-    name = 'AndroidX AppSearch'
+    name = "AppSearch"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = '2019'
     description = 'AndroidX AppSearch - App Indexing'
diff --git a/appsearch/compiler/build.gradle b/appsearch/compiler/build.gradle
index f2c72b7..cb9caf4 100644
--- a/appsearch/compiler/build.gradle
+++ b/appsearch/compiler/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = 'AndroidX AppSearch Compiler'
+    name = "AppSearch Compiler"
     type = LibraryType.ANNOTATION_PROCESSOR
     inceptionYear = '2019'
     description = 'Compiler for classes annotated with @androidx.appsearch.annotation.Document'
diff --git a/arch/core/core-common/build.gradle b/arch/core/core-common/build.gradle
index 8a60844..f8d646f7 100644
--- a/arch/core/core-common/build.gradle
+++ b/arch/core/core-common/build.gradle
@@ -29,7 +29,7 @@
 }
 
 androidx {
-    name = "Android Arch-Common"
+    name = "Arch-Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Arch-Common"
diff --git a/arch/core/core-runtime/build.gradle b/arch/core/core-runtime/build.gradle
index 6652bdf..f1d60e1 100644
--- a/arch/core/core-runtime/build.gradle
+++ b/arch/core/core-runtime/build.gradle
@@ -27,7 +27,7 @@
 }
 
 androidx {
-    name = "Android Arch-Runtime"
+    name = "Arch-Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Arch-Runtime"
diff --git a/arch/core/core-testing/build.gradle b/arch/core/core-testing/build.gradle
index 0476e53..4b071ea 100644
--- a/arch/core/core-testing/build.gradle
+++ b/arch/core/core-testing/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Core-Testing"
+    name = "Core-Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Core-Testing"
diff --git a/asynclayoutinflater/asynclayoutinflater-appcompat/build.gradle b/asynclayoutinflater/asynclayoutinflater-appcompat/build.gradle
index 8f08e8c..a6034b9 100644
--- a/asynclayoutinflater/asynclayoutinflater-appcompat/build.gradle
+++ b/asynclayoutinflater/asynclayoutinflater-appcompat/build.gradle
@@ -13,10 +13,11 @@
 }
 
 androidx {
-    name = "AsyncLayoutInflater integration for AppCompat"
+    name = "AsyncLayoutInflater AppCompat"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2022"
-    description = "A thread-safe LayoutInflater Factory that provides compatibility between AsyncLayoutInflater and AppCompat."
+    description = "A thread-safe LayoutInflater Factory that provides compatibility between " +
+            "AsyncLayoutInflater and AppCompat."
 }
 
 android {
diff --git a/asynclayoutinflater/asynclayoutinflater/build.gradle b/asynclayoutinflater/asynclayoutinflater/build.gradle
index 713ec8e..44ec7c0 100644
--- a/asynclayoutinflater/asynclayoutinflater/build.gradle
+++ b/asynclayoutinflater/asynclayoutinflater/build.gradle
@@ -19,10 +19,10 @@
 }
 
 androidx {
-    name = "Android Support Library Async Layout Inflater"
+    name = "AsyncLayoutInflater"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
-    description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
+    description = "Provides support for inflating layouts off the UI thread."
 }
 
 android {
diff --git a/autofill/autofill/build.gradle b/autofill/autofill/build.gradle
index c4a5853..e5bbb65 100644
--- a/autofill/autofill/build.gradle
+++ b/autofill/autofill/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Autofill"
+    name = "Autofill"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "AndroidX Autofill"
diff --git a/benchmark/baseline-profile-gradle-plugin/build.gradle b/benchmark/baseline-profile-gradle-plugin/build.gradle
index 9038336..e4884b6 100644
--- a/benchmark/baseline-profile-gradle-plugin/build.gradle
+++ b/benchmark/baseline-profile-gradle-plugin/build.gradle
@@ -72,7 +72,7 @@
 }
 
 androidx {
-    name = "Android Baseline Profile Gradle Plugin"
+    name = "Baseline Profile Gradle Plugin"
     publish = Publish.SNAPSHOT_AND_RELEASE
     type = LibraryType.GRADLE_PLUGIN
     inceptionYear = "2022"
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerExtension.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerExtension.kt
index 0ae17d0..00934a5 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerExtension.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerExtension.kt
@@ -54,19 +54,30 @@
         // These are the default global settings.
         it.mergeIntoMain = null
         it.baselineProfileOutputDir = "generated/baselineProfiles"
-        it.enableR8BaselineProfileRewrite = false
+        it.baselineProfileRulesRewrite = null
+        it.dexLayoutOptimization = null
         it.saveInSrc = true
         it.automaticGenerationDuringBuild = false
     }
 
     /**
-     * Controls the global [BaselineProfileVariantConfiguration.enableR8BaselineProfileRewrite].
+     * Controls the global [BaselineProfileVariantConfiguration.baselineProfileRulesRewrite].
      * Note that this value is overridden by per variant configurations.
      */
-    override var enableR8BaselineProfileRewrite: Boolean?
-        get() = main.enableR8BaselineProfileRewrite
+    override var baselineProfileRulesRewrite: Boolean?
+        get() = main.baselineProfileRulesRewrite
         set(value) {
-            main.enableR8BaselineProfileRewrite = value
+            main.baselineProfileRulesRewrite = value
+        }
+
+    /**
+     * Controls the global [BaselineProfileVariantConfiguration.dexLayoutOptimization].
+     * Note that this value is overridden by per variant configurations.
+     */
+    override var dexLayoutOptimization: Boolean?
+        get() = main.dexLayoutOptimization
+        set(value) {
+            main.dexLayoutOptimization = value
         }
 
     /**
@@ -182,7 +193,13 @@
      * TODO: This feature is experimental and currently not working properly.
      *  https://issuetracker.google.com/issue?id=271172067.
      */
-    var enableR8BaselineProfileRewrite: Boolean?
+    var baselineProfileRulesRewrite: Boolean?
+
+    /**
+     * Enables R8 to optimize the primary dex file used to contain only classes utilized for
+     * startup.
+     */
+    var dexLayoutOptimization: Boolean?
 
     /**
      * Specifies whether generated baseline profiles should be stored in the src folder.
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPlugin.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPlugin.kt
index 995c84d..b2792c6 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPlugin.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPlugin.kt
@@ -20,6 +20,7 @@
 import androidx.baselineprofile.gradle.consumer.task.MainGenerateBaselineProfileTask
 import androidx.baselineprofile.gradle.consumer.task.MergeBaselineProfileTask
 import androidx.baselineprofile.gradle.consumer.task.PrintConfigurationForVariantTask
+import androidx.baselineprofile.gradle.consumer.task.PrintMapPropertiesForVariantTask
 import androidx.baselineprofile.gradle.consumer.task.maybeCreateGenerateTask
 import androidx.baselineprofile.gradle.utils.AgpFeature
 import androidx.baselineprofile.gradle.utils.AgpPlugin
@@ -169,10 +170,19 @@
             variant = variant,
             variantConfig = variantConfiguration
         )
+        PrintMapPropertiesForVariantTask.registerForVariant(
+            project = project,
+            variant = variant
+        )
 
         // Sets the r8 rewrite baseline profile for the non debuggable variant.
-        if (variantConfiguration.enableR8BaselineProfileRewrite) {
-            r8Utils.enableR8RulesRewriteForVariant(variant)
+        variantConfiguration.baselineProfileRulesRewrite?.let {
+            r8Utils.setRulesRewriteForVariantEnabled(variant, it)
+        }
+
+        // Sets the r8 startup dex optimization profile for the non debuggable variant.
+        variantConfiguration.dexLayoutOptimization?.let {
+            r8Utils.setDexLayoutOptimizationEnabled(variant, it)
         }
 
         // Check if this variant has any direct dependency
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/PerVariantConsumerExtensionManager.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/PerVariantConsumerExtensionManager.kt
index 6168f23..eb7b035 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/PerVariantConsumerExtensionManager.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/PerVariantConsumerExtensionManager.kt
@@ -52,8 +52,11 @@
         val dependencies: List<Pair<Project, String?>>
             get() = getMergedListForVariant(variant) { dependencies }
 
-        val enableR8BaselineProfileRewrite: Boolean
-            get() = getOverriddenValueForVariant(variant) { enableR8BaselineProfileRewrite }
+        val baselineProfileRulesRewrite: Boolean?
+            get() = getOverriddenValueForVariantAllowNull(variant) { baselineProfileRulesRewrite }
+
+        val dexLayoutOptimization: Boolean?
+            get() = getOverriddenValueForVariantAllowNull(variant) { dexLayoutOptimization }
 
         val saveInSrc: Boolean
             get() = getOverriddenValueForVariant(variant) { saveInSrc }
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/task/PrintConfigurationForVariantTask.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/task/PrintConfigurationForVariantTask.kt
index c9e2d08..d33f08a 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/task/PrintConfigurationForVariantTask.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/task/PrintConfigurationForVariantTask.kt
@@ -49,7 +49,8 @@
                         """
                     mergeIntoMain=`${variantConfig.mergeIntoMain}`
                     baselineProfileOutputDir=`${variantConfig.baselineProfileOutputDir}`
-                    enableR8BaselineProfileRewrite=`${variantConfig.enableR8BaselineProfileRewrite}`
+                    baselineProfileRulesRewrite=`${variantConfig.baselineProfileRulesRewrite}`
+                    dexLayoutOptimization=`${variantConfig.dexLayoutOptimization}`
                     saveInSrc=`${variantConfig.saveInSrc}`
                     automaticGenerationDuringBuild=`${variantConfig.automaticGenerationDuringBuild}`
                     """.trimIndent()
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/task/PrintMapPropertiesForVariantTask.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/task/PrintMapPropertiesForVariantTask.kt
new file mode 100644
index 0000000..2318a42
--- /dev/null
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/consumer/task/PrintMapPropertiesForVariantTask.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.baselineprofile.gradle.consumer.task
+
+import androidx.baselineprofile.gradle.utils.maybeRegister
+import com.android.build.api.variant.Variant
+import org.gradle.api.DefaultTask
+import org.gradle.api.Project
+import org.gradle.api.provider.MapProperty
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.TaskAction
+import org.gradle.work.DisableCachingByDefault
+
+/**
+ * Only used for testing, this task does not have description or group so that it doesn't show up
+ * in the task list. It prints internal properties to facilitate assertions in integration tests.
+ */
+@DisableCachingByDefault(because = "Not worth caching. Used only for tests.")
+abstract class PrintMapPropertiesForVariantTask : DefaultTask() {
+
+    companion object {
+
+        private const val TASK_NAME_PREFIX = "printExperimentalPropertiesForVariant"
+
+        internal fun registerForVariant(
+            project: Project,
+            variant: Variant,
+        ) {
+            project
+                .tasks
+                .maybeRegister<PrintMapPropertiesForVariantTask>(TASK_NAME_PREFIX, variant.name) {
+                    it.properties.set(variant.experimentalProperties)
+                }
+        }
+    }
+
+    @get: Input
+    abstract val properties: MapProperty<String, Any>
+
+    @TaskAction
+    fun exec() {
+        properties.get().forEach { logger.warn("${it.key}=${it.value}") }
+    }
+}
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt
index 413406a..19d2d8d 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/AgpPlugin.kt
@@ -50,16 +50,6 @@
     private val maxAgpVersion: AndroidPluginVersion,
 ) {
 
-    companion object {
-        private val gradleSyncProps by lazy {
-            listOf(
-                "android.injected.build.model.v2",
-                "android.injected.build.model.only",
-                "android.injected.build.model.only.advanced",
-            )
-        }
-    }
-
     protected val logger: Logger
         get() = project.logger
 
@@ -175,9 +165,7 @@
         }
     }
 
-    protected fun isGradleSyncRunning() = gradleSyncProps.any {
-        it in project.properties && project.properties[it].toString().toBoolean()
-    }
+    protected fun isGradleSyncRunning() = project.isGradleSyncRunning()
 
     protected fun afterVariants(block: () -> (Unit)) = afterVariantBlocks.add(block)
 
@@ -277,6 +265,18 @@
             .findByType(com.android.build.gradle.TestExtension::class.java)
 }
 
+private val gradleSyncProps by lazy {
+    listOf(
+        "android.injected.build.model.v2",
+        "android.injected.build.model.only",
+        "android.injected.build.model.only.advanced",
+    )
+}
+
+internal fun Project.isGradleSyncRunning() = gradleSyncProps.any {
+    it in project.properties && project.properties[it].toString().toBoolean()
+}
+
 /**
  * Enumerates the supported android plugins.
  */
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/R8Utils.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/R8Utils.kt
index 121dc35..a56a3de 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/R8Utils.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/R8Utils.kt
@@ -32,26 +32,56 @@
     companion object {
         private const val PROPERTY_R8_REWRITE_BASELINE_PROFILE_RULES =
             "android.experimental.art-profile-r8-rewriting"
-        private val AGP_MIN_VERSION = AndroidPluginVersion(8, 1, 0).alpha(8)
+        private const val PROPERTY_R8_DEX_LAYOUT_OPTIMIZATION =
+            "android.experimental.r8.dex-startup-optimization"
     }
 
     @Suppress("UnstableApiUsage")
-    fun enableR8RulesRewriteForVariant(variant: Variant) {
+    fun setRulesRewriteForVariantEnabled(variant: Variant, value: Boolean) {
 
         // Checks the AGP min version to support this.
-        if (project.agpVersion() < AGP_MIN_VERSION) {
+        if (project.agpVersion() < AndroidPluginVersion(8, 1, 0).alpha(8)) {
+            if (!project.isGradleSyncRunning()) {
+                throw IllegalStateException(
+                    """
+                Unable to set baseline profile rules rewrite property in module `${project.path}`
+                due to minimum AGP version requirement not met. This functionality requires at
+                least AGP version 8.1.0. Please check your module build.gradle file and ensure
+                the property `baselineProfileRulesRewrite` is not set.
+                """.trimIndent()
+                )
+            }
             return
         }
 
-        // TODO: Checks the R8 version to support this.
-
         // TODO: Note that currently there needs to be at least a baseline profile,
         //  even if empty. For this reason we always add a src set that points to
         //  an empty file. This can removed after b/271158087 is fixed.
-        GenerateDummyBaselineProfileTask.setupForVariant(project, variant)
+        if (value) GenerateDummyBaselineProfileTask.setupForVariant(project, variant)
 
         // Sets the experimental property
-        variant.experimentalProperties.put(PROPERTY_R8_REWRITE_BASELINE_PROFILE_RULES, true)
+        variant.experimentalProperties.put(PROPERTY_R8_REWRITE_BASELINE_PROFILE_RULES, value)
+    }
+
+    @Suppress("UnstableApiUsage")
+    fun setDexLayoutOptimizationEnabled(variant: Variant, value: Boolean) {
+
+        // Checks the AGP min version to support this.
+        if (project.agpVersion() < AndroidPluginVersion(8, 1, 0).alpha(11)) {
+            if (!project.isGradleSyncRunning()) {
+                throw IllegalStateException(
+                    """
+                Unable to set dex layout optimization property in module `${project.path}` due to
+                minimum AGP version requirement not met. This functionality requires at least AGP
+                version 8.1.0. Please check your module build.gradle file and ensure the property
+                `dexLayoutOptimization` is not set.
+                """.trimIndent()
+                )
+            }
+        }
+
+        // Sets the experimental property
+        variant.experimentalProperties.put(PROPERTY_R8_DEX_LAYOUT_OPTIMIZATION, value)
     }
 }
 
diff --git a/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt b/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt
index a7e1cdf..2ab457a 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/test/kotlin/androidx/baselineprofile/gradle/consumer/BaselineProfileConsumerPluginTest.kt
@@ -27,6 +27,7 @@
 import androidx.baselineprofile.gradle.utils.VariantProfile
 import androidx.baselineprofile.gradle.utils.build
 import androidx.baselineprofile.gradle.utils.buildAndAssertThatOutput
+import androidx.baselineprofile.gradle.utils.buildAndFailAndAssertThatOutput
 import androidx.baselineprofile.gradle.utils.require
 import androidx.baselineprofile.gradle.utils.requireInOrder
 import com.google.common.truth.Truth.assertThat
@@ -286,9 +287,6 @@
             androidPlugin = ANDROID_APPLICATION_PLUGIN,
             flavors = true,
             dependencyOnProducerProject = true,
-            baselineProfileBlock = """
-                enableR8BaselineProfileRewrite = false
-            """.trimIndent(),
             additionalGradleCodeBlock = """
                 androidComponents {
                     onVariants(selector()) { variant ->
@@ -343,7 +341,7 @@
     }
 
     @Test
-    fun testR8RewriteBaselineProfilePropertySet() {
+    fun testExperimentalPropertiesNotSet() {
         projectSetup.producer.setupWithFreeAndPaidFlavors(
             freeReleaseProfileLines = listOf(Fixtures.CLASS_1_METHOD_1, Fixtures.CLASS_1),
             paidReleaseProfileLines = listOf(Fixtures.CLASS_2_METHOD_1, Fixtures.CLASS_2)
@@ -352,31 +350,20 @@
             androidPlugin = ANDROID_LIBRARY_PLUGIN,
             dependencyOnProducerProject = true,
             flavors = true,
-            buildTypeAnotherRelease = true,
-            additionalGradleCodeBlock = """
-                androidComponents {
-                    onVariants(selector()) { variant ->
-                        println(variant.name)
-                        tasks.register("print" + variant.name, PrintTask) { t ->
-                            def prop = "android.experimental.art-profile-r8-rewriting"
-                            if (prop in variant.experimentalProperties) {
-                                def value = variant.experimentalProperties[prop].get().toString()
-                                t.text.set( "r8-rw=" + value)
-                            } else {
-                                t.text.set( "r8-rw=false")
-                            }
-                        }
-                    }
-                }
-            """.trimIndent()
+            buildTypeAnotherRelease = true
         )
 
         arrayOf(
-            "printFreeRelease",
-            "printPaidRelease",
-            "printFreeAnotherRelease",
-            "printPaidAnotherRelease",
-        ).forEach { gradleRunner.buildAndAssertThatOutput(it) { contains("r8-rw=false") } }
+            "printExperimentalPropertiesForVariantFreeRelease",
+            "printExperimentalPropertiesForVariantPaidRelease",
+            "printExperimentalPropertiesForVariantFreeAnotherRelease",
+            "printExperimentalPropertiesForVariantPaidAnotherRelease",
+        ).forEach {
+            gradleRunner.buildAndAssertThatOutput(it) {
+                doesNotContain("android.experimental.art-profile-r8-rewriting=")
+                doesNotContain("android.experimental.r8.dex-startup-optimization=")
+            }
+        }
     }
 
     @Test
@@ -672,7 +659,6 @@
             baselineProfileBlock = """
 
                 // Global configuration
-                enableR8BaselineProfileRewrite = false
                 saveInSrc = true
                 automaticGenerationDuringBuild = false
                 baselineProfileOutputDir = "generated/baselineProfiles"
@@ -681,14 +667,12 @@
                 // Per variant configuration overrides global configuration.
                 variants {
                     free {
-                        enableR8BaselineProfileRewrite = true
                         saveInSrc = false
                         automaticGenerationDuringBuild = true
                         baselineProfileOutputDir = "somefolder"
                         mergeIntoMain = false
                     }
                     paidRelease {
-                        enableR8BaselineProfileRewrite = true
                         saveInSrc = false
                         automaticGenerationDuringBuild = true
                         baselineProfileOutputDir = "someOtherfolder"
@@ -702,7 +686,6 @@
         gradleRunner.buildAndAssertThatOutput(
             "printBaselineProfileExtensionForVariantFreeRelease"
         ) {
-            contains("enableR8BaselineProfileRewrite=`true`")
             contains("saveInSrc=`false`")
             contains("automaticGenerationDuringBuild=`true`")
             contains("baselineProfileOutputDir=`somefolder`")
@@ -712,7 +695,6 @@
         gradleRunner.buildAndAssertThatOutput(
             "printBaselineProfileExtensionForVariantPaidRelease"
         ) {
-            contains("enableR8BaselineProfileRewrite=`true`")
             contains("saveInSrc=`false`")
             contains("automaticGenerationDuringBuild=`true`")
             contains("baselineProfileOutputDir=`someOtherfolder`")
@@ -732,7 +714,6 @@
             baselineProfileBlock = """
 
                 // Global configuration
-                enableR8BaselineProfileRewrite = false
                 saveInSrc = true
                 automaticGenerationDuringBuild = false
                 baselineProfileOutputDir = "generated/baselineProfiles"
@@ -741,14 +722,12 @@
                 // Per variant configuration overrides global configuration.
                 variants {
                     release {
-                        enableR8BaselineProfileRewrite = true
                         saveInSrc = false
                         automaticGenerationDuringBuild = true
                         baselineProfileOutputDir = "myReleaseFolder"
                         mergeIntoMain = false
                     }
                     paidRelease {
-                        enableR8BaselineProfileRewrite = true
                         saveInSrc = false
                         automaticGenerationDuringBuild = true
                         baselineProfileOutputDir = "someOtherfolder"
@@ -762,7 +741,6 @@
         gradleRunner.buildAndAssertThatOutput(
             "printBaselineProfileExtensionForVariantFreeRelease"
         ) {
-            contains("enableR8BaselineProfileRewrite=`true`")
             contains("saveInSrc=`false`")
             contains("automaticGenerationDuringBuild=`true`")
             contains("baselineProfileOutputDir=`myReleaseFolder`")
@@ -772,7 +750,6 @@
         gradleRunner.buildAndAssertThatOutput(
             "printBaselineProfileExtensionForVariantPaidRelease"
         ) {
-            contains("enableR8BaselineProfileRewrite=`true`")
             contains("saveInSrc=`false`")
             contains("automaticGenerationDuringBuild=`true`")
             contains("baselineProfileOutputDir=`someOtherfolder`")
@@ -1108,6 +1085,60 @@
             assertThat(notFound).isEmpty()
         }
     }
+
+    @Test
+    fun testRulesRewriteExperimentalPropertiesSet() {
+        projectSetup.producer.setupWithFreeAndPaidFlavors(
+            freeReleaseProfileLines = listOf(Fixtures.CLASS_1_METHOD_1, Fixtures.CLASS_1),
+            paidReleaseProfileLines = listOf(Fixtures.CLASS_2_METHOD_1, Fixtures.CLASS_2)
+        )
+        projectSetup.consumer.setup(
+            androidPlugin = ANDROID_LIBRARY_PLUGIN,
+            dependencyOnProducerProject = true,
+            flavors = true,
+            buildTypeAnotherRelease = true,
+            baselineProfileBlock = """
+                baselineProfileRulesRewrite = true
+            """.trimIndent()
+        )
+        arrayOf(
+            "printExperimentalPropertiesForVariantFreeRelease",
+            "printExperimentalPropertiesForVariantPaidRelease",
+            "printExperimentalPropertiesForVariantFreeAnotherRelease",
+            "printExperimentalPropertiesForVariantPaidAnotherRelease",
+        ).forEach {
+            projectSetup.consumer.gradleRunner.buildAndFailAndAssertThatOutput(it) {
+                contains("Unable to set baseline profile rules rewrite property")
+            }
+        }
+    }
+
+    @Test
+    fun testDexLayoutOptimizationExperimentalPropertiesSet() {
+        projectSetup.producer.setupWithFreeAndPaidFlavors(
+            freeReleaseProfileLines = listOf(Fixtures.CLASS_1_METHOD_1, Fixtures.CLASS_1),
+            paidReleaseProfileLines = listOf(Fixtures.CLASS_2_METHOD_1, Fixtures.CLASS_2)
+        )
+        projectSetup.consumer.setup(
+            androidPlugin = ANDROID_LIBRARY_PLUGIN,
+            dependencyOnProducerProject = true,
+            flavors = true,
+            buildTypeAnotherRelease = true,
+            baselineProfileBlock = """
+                dexLayoutOptimization = true
+            """.trimIndent()
+        )
+        arrayOf(
+            "printExperimentalPropertiesForVariantFreeRelease",
+            "printExperimentalPropertiesForVariantPaidRelease",
+            "printExperimentalPropertiesForVariantFreeAnotherRelease",
+            "printExperimentalPropertiesForVariantPaidAnotherRelease",
+        ).forEach {
+            projectSetup.consumer.gradleRunner.buildAndFailAndAssertThatOutput(it) {
+                contains(" Unable to set dex layout optimization property")
+            }
+        }
+    }
 }
 
 @RunWith(JUnit4::class)
@@ -1253,4 +1284,35 @@
                 assertThat(notFound).isEmpty()
             }
     }
+
+    @Test
+    fun testExperimentalPropertiesSet() {
+        projectSetup.producer.setupWithFreeAndPaidFlavors(
+            freeReleaseProfileLines = listOf(Fixtures.CLASS_1_METHOD_1, Fixtures.CLASS_1),
+            paidReleaseProfileLines = listOf(Fixtures.CLASS_2_METHOD_1, Fixtures.CLASS_2)
+        )
+        projectSetup.consumer.setup(
+            androidPlugin = ANDROID_LIBRARY_PLUGIN,
+            dependencyOnProducerProject = true,
+            flavors = true,
+            buildTypeAnotherRelease = true,
+            baselineProfileBlock = """
+                baselineProfileRulesRewrite = true
+                dexLayoutOptimization = true
+            """.trimIndent()
+        )
+
+        arrayOf(
+            "printExperimentalPropertiesForVariantFreeRelease",
+            "printExperimentalPropertiesForVariantPaidRelease",
+            "printExperimentalPropertiesForVariantFreeAnotherRelease",
+            "printExperimentalPropertiesForVariantPaidAnotherRelease",
+        ).forEach {
+            projectSetup.consumer.gradleRunner.buildAndAssertThatOutput(it) {
+                // These properties are ignored in agp 8.0
+                contains("android.experimental.art-profile-r8-rewriting=true")
+                contains("android.experimental.r8.dex-startup-optimization=true")
+            }
+        }
+    }
 }
diff --git a/benchmark/benchmark-common/build.gradle b/benchmark/benchmark-common/build.gradle
index e8f2eca..b66a11b 100644
--- a/benchmark/benchmark-common/build.gradle
+++ b/benchmark/benchmark-common/build.gradle
@@ -66,7 +66,7 @@
 }
 
 androidx {
-    name = "Android Benchmark - Common"
+    name = "Benchmark - Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Benchmark - Common"
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt
index 737b39d..ceb4d5e 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/BenchmarkStateTest.kt
@@ -23,6 +23,9 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.rule.GrantPermissionRule
+import java.util.concurrent.TimeUnit
+import kotlin.test.assertFailsWith
+import kotlin.test.assertTrue
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotEquals
 import org.junit.Assert.assertNotNull
@@ -33,9 +36,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
-import kotlin.test.assertFailsWith
-import kotlin.test.assertTrue
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ConfigurationErrorTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ConfigurationErrorTest.kt
index 7342c236..80df5f0 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ConfigurationErrorTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ConfigurationErrorTest.kt
@@ -18,13 +18,13 @@
 
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertNotNull
 import org.junit.Assert.assertNull
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
-import kotlin.test.assertNotNull
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/PerfettoHelperTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/PerfettoHelperTest.kt
index a919048..5e509d3 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/PerfettoHelperTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/PerfettoHelperTest.kt
@@ -23,15 +23,15 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertNotEquals
+import kotlin.test.assertTrue
 import org.junit.After
 import org.junit.Assume
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.test.assertEquals
-import kotlin.test.assertFalse
-import kotlin.test.assertNotEquals
-import kotlin.test.assertTrue
 
 @LargeTest
 @SdkSuppress(minSdkVersion = 23)
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
index 02231c1d..73a35d4 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
@@ -19,12 +19,12 @@
 import android.os.Build
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import kotlin.test.assertTrue
 import org.junit.Assert.assertEquals
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
-import kotlin.test.assertTrue
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/UserspaceTracingTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/UserspaceTracingTest.kt
index 73f5067..8b8bfb0 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/UserspaceTracingTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/UserspaceTracingTest.kt
@@ -19,6 +19,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
+import java.io.File
+import kotlin.test.assertNotNull
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
@@ -28,8 +30,6 @@
 import perfetto.protos.TracePacket
 import perfetto.protos.TrackDescriptor
 import perfetto.protos.TrackEvent
-import java.io.File
-import kotlin.test.assertNotNull
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/WarmupManagerTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/WarmupManagerTest.kt
index 9b2eac8..8ab7d68 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/WarmupManagerTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/WarmupManagerTest.kt
@@ -18,11 +18,11 @@
 
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/AtraceTagTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/AtraceTagTest.kt
index c5f13d6..749c4f5 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/AtraceTagTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/AtraceTagTest.kt
@@ -20,12 +20,12 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
-import org.junit.Assume
-import org.junit.Test
-import org.junit.runner.RunWith
 import kotlin.test.assertContains
 import kotlin.test.assertEquals
 import kotlin.test.assertNotEquals
+import org.junit.Assume
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @RunWith(AndroidJUnit4::class)
 @SdkSuppress(minSdkVersion = 21)
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/PerfettoConfigTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/PerfettoConfigTest.kt
index f1815b3..7aac3c7 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/PerfettoConfigTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/PerfettoConfigTest.kt
@@ -20,16 +20,16 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertFalse
+import kotlin.test.assertNotNull
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
 import perfetto.protos.DataSourceConfig
 import perfetto.protos.FtraceConfig
 import perfetto.protos.TraceConfig
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
-import kotlin.test.assertFalse
-import kotlin.test.assertNotNull
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/UiStateTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/UiStateTest.kt
index 101ea48..9bf3860 100644
--- a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/UiStateTest.kt
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/perfetto/UiStateTest.kt
@@ -19,6 +19,8 @@
 import androidx.benchmark.createTempFileFromAsset
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.io.File
+import kotlin.test.assertEquals
 import okio.ByteString
 import org.junit.Assert.assertTrue
 import org.junit.Test
@@ -26,8 +28,6 @@
 import perfetto.protos.Trace
 import perfetto.protos.TracePacket
 import perfetto.protos.UiState
-import java.io.File
-import kotlin.test.assertEquals
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/perfetto/PerfettoConfig.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/perfetto/PerfettoConfig.kt
index 2ea9b46..7561d69 100644
--- a/benchmark/benchmark-common/src/main/java/androidx/benchmark/perfetto/PerfettoConfig.kt
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/perfetto/PerfettoConfig.kt
@@ -21,8 +21,8 @@
 import androidx.annotation.RestrictTo
 import androidx.benchmark.Shell
 import java.io.File
-import perfetto.protos.DataSourceConfig
 import perfetto.protos.AndroidPowerConfig
+import perfetto.protos.DataSourceConfig
 import perfetto.protos.FtraceConfig
 import perfetto.protos.MeminfoCounters
 import perfetto.protos.ProcessStatsConfig
@@ -246,6 +246,7 @@
         PACKAGE_LIST_DATASOURCE,
         LINUX_SYS_STATS_DATASOURCE,
         ANDROID_POWER_DATASOURCE,
+        TraceConfig.DataSource(DataSourceConfig("android.gpu.memory")),
         TraceConfig.DataSource(DataSourceConfig("android.surfaceflinger.frame")),
         TraceConfig.DataSource(DataSourceConfig("android.surfaceflinger.frametimeline")),
         TraceConfig.DataSource(DataSourceConfig("track_event")) // required by tracing-perfetto
diff --git a/benchmark/benchmark-darwin-core/build.gradle b/benchmark/benchmark-darwin-core/build.gradle
index ac9243d..12b8a6b 100644
--- a/benchmark/benchmark-darwin-core/build.gradle
+++ b/benchmark/benchmark-darwin-core/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "AndroidX Benchmarks - Darwin Core"
+    name = "Benchmarks - Darwin Core"
     inceptionYear = "2022"
     description = "AndroidX Benchmarks - Darwin Core"
 }
diff --git a/benchmark/benchmark-darwin-gradle-plugin/build.gradle b/benchmark/benchmark-darwin-gradle-plugin/build.gradle
index 7a16cf9..5c3aa31 100644
--- a/benchmark/benchmark-darwin-gradle-plugin/build.gradle
+++ b/benchmark/benchmark-darwin-gradle-plugin/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "AndroidX Benchmarks - Darwin Gradle Plugin"
+    name = "Benchmarks - Darwin Gradle Plugin"
     publish = Publish.SNAPSHOT_ONLY
     type = LibraryType.GRADLE_PLUGIN
     inceptionYear = "2022"
diff --git a/benchmark/benchmark-darwin-samples/build.gradle b/benchmark/benchmark-darwin-samples/build.gradle
index c297722..3684119 100644
--- a/benchmark/benchmark-darwin-samples/build.gradle
+++ b/benchmark/benchmark-darwin-samples/build.gradle
@@ -60,7 +60,7 @@
 }
 
 androidx {
-    name = "AndroidX Benchmarks - Darwin Samples"
+    name = "Benchmarks - Darwin Samples"
     inceptionYear = "2022"
     description = "AndroidX Benchmarks - Darwin Samples"
 }
diff --git a/benchmark/benchmark-darwin/build.gradle b/benchmark/benchmark-darwin/build.gradle
index 473a5c3..e192b8f 100644
--- a/benchmark/benchmark-darwin/build.gradle
+++ b/benchmark/benchmark-darwin/build.gradle
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "AndroidX Benchmarks - Darwin"
+    name = "Benchmarks - Darwin"
     inceptionYear = "2022"
     description = "AndroidX Benchmarks - Darwin"
 }
diff --git a/benchmark/benchmark-junit4/build.gradle b/benchmark/benchmark-junit4/build.gradle
index 4db5a73..cfb08c2 100644
--- a/benchmark/benchmark-junit4/build.gradle
+++ b/benchmark/benchmark-junit4/build.gradle
@@ -47,7 +47,7 @@
 }
 
 androidx {
-    name = "Android Benchmark - JUnit4"
+    name = "Benchmark - JUnit4"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Android Benchmark - JUnit4"
diff --git a/benchmark/benchmark-junit4/src/androidTest/java/androidx/benchmark/junit4/BenchmarkRuleTest.kt b/benchmark/benchmark-junit4/src/androidTest/java/androidx/benchmark/junit4/BenchmarkRuleTest.kt
index 9b4f1f3..3c34893 100644
--- a/benchmark/benchmark-junit4/src/androidTest/java/androidx/benchmark/junit4/BenchmarkRuleTest.kt
+++ b/benchmark/benchmark-junit4/src/androidTest/java/androidx/benchmark/junit4/BenchmarkRuleTest.kt
@@ -18,11 +18,11 @@
 
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import java.util.concurrent.TimeUnit
 import org.junit.Assert
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/benchmark/benchmark-junit4/src/main/java/androidx/benchmark/junit4/InstrumentationResultsRunListener.kt b/benchmark/benchmark-junit4/src/main/java/androidx/benchmark/junit4/InstrumentationResultsRunListener.kt
index 752f230..db192f8 100644
--- a/benchmark/benchmark-junit4/src/main/java/androidx/benchmark/junit4/InstrumentationResultsRunListener.kt
+++ b/benchmark/benchmark-junit4/src/main/java/androidx/benchmark/junit4/InstrumentationResultsRunListener.kt
@@ -20,8 +20,8 @@
 import androidx.annotation.RestrictTo
 import androidx.benchmark.InstrumentationResults
 import androidx.test.internal.runner.listener.InstrumentationRunListener
-import org.junit.runner.Result
 import java.io.PrintStream
+import org.junit.runner.Result
 
 /**
  * Used to register files to copy at the end of the entire test run in CI.
diff --git a/benchmark/benchmark-macro-junit4/build.gradle b/benchmark/benchmark-macro-junit4/build.gradle
index cd4804f..5fa8211 100644
--- a/benchmark/benchmark-macro-junit4/build.gradle
+++ b/benchmark/benchmark-macro-junit4/build.gradle
@@ -53,7 +53,7 @@
 }
 
 androidx {
-    name = "Android Benchmark - Macrobenchmark JUnit4"
+    name = "Benchmark - Macrobenchmark JUnit4"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android Benchmark - Macrobenchmark JUnit4"
diff --git a/benchmark/benchmark-macro/api/public_plus_experimental_current.txt b/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
index 1597078..7b6f3c8 100644
--- a/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
+++ b/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
@@ -80,6 +80,28 @@
     method public java.util.List<androidx.benchmark.macro.Metric.Measurement> getResult(androidx.benchmark.macro.Metric.CaptureInfo captureInfo, androidx.benchmark.perfetto.PerfettoTraceProcessor.Session traceSession);
   }
 
+  @androidx.benchmark.macro.ExperimentalMetricApi public final class MemoryUsageMetric extends androidx.benchmark.macro.TraceMetric {
+    ctor public MemoryUsageMetric(androidx.benchmark.macro.MemoryUsageMetric.Mode mode, optional java.util.List<? extends androidx.benchmark.macro.MemoryUsageMetric.SubMetric> subMetrics);
+    method public java.util.List<androidx.benchmark.macro.Metric.Measurement> getResult(androidx.benchmark.macro.Metric.CaptureInfo captureInfo, androidx.benchmark.perfetto.PerfettoTraceProcessor.Session traceSession);
+  }
+
+  public enum MemoryUsageMetric.Mode {
+    method public static androidx.benchmark.macro.MemoryUsageMetric.Mode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
+    method public static androidx.benchmark.macro.MemoryUsageMetric.Mode[] values();
+    enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.Mode Last;
+    enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.Mode Max;
+  }
+
+  public enum MemoryUsageMetric.SubMetric {
+    method public static androidx.benchmark.macro.MemoryUsageMetric.SubMetric valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
+    method public static androidx.benchmark.macro.MemoryUsageMetric.SubMetric[] values();
+    enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric Gpu;
+    enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric HeapSize;
+    enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric RssAnon;
+    enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric RssFile;
+    enum_constant public static final androidx.benchmark.macro.MemoryUsageMetric.SubMetric RssShmem;
+  }
+
   public abstract sealed class Metric {
   }
 
diff --git a/benchmark/benchmark-macro/build.gradle b/benchmark/benchmark-macro/build.gradle
index 538d68d..bc6c8e3 100644
--- a/benchmark/benchmark-macro/build.gradle
+++ b/benchmark/benchmark-macro/build.gradle
@@ -80,7 +80,7 @@
 }
 
 androidx {
-    name = "Android Benchmark - Macrobenchmark"
+    name = "Benchmark - Macrobenchmark"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android Benchmark - Macrobenchmark"
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/FileLinkingRule.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/FileLinkingRule.kt
index 8ce14941..e3560f6 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/FileLinkingRule.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/FileLinkingRule.kt
@@ -21,11 +21,11 @@
 import androidx.benchmark.Outputs
 import androidx.benchmark.perfetto.UiState
 import androidx.benchmark.perfetto.appendUiState
+import java.io.File
 import org.junit.rules.RuleChain
 import org.junit.rules.TestRule
 import org.junit.runner.Description
 import org.junit.runners.model.Statement
-import java.io.File
 
 /**
  * Rule to enable linking files and traces to Studio UI for macrobench correctness tests.
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/IdeSummaryStringTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/IdeSummaryStringTest.kt
index a150eee..1a07546 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/IdeSummaryStringTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/IdeSummaryStringTest.kt
@@ -21,11 +21,11 @@
 import androidx.benchmark.Outputs
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.io.File
+import kotlin.test.assertFailsWith
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.File
-import kotlin.test.assertFailsWith
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/MacrobenchmarkTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/MacrobenchmarkTest.kt
index de94880..337128e 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/MacrobenchmarkTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/MacrobenchmarkTest.kt
@@ -24,14 +24,14 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import androidx.tracing.trace
-import org.junit.Assume.assumeTrue
-import org.junit.Test
-import org.junit.runner.RunWith
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertTrue
 import org.junit.Assume.assumeFalse
+import org.junit.Assume.assumeTrue
 import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
index 5cf3d0a..0d729e3 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
@@ -23,7 +23,6 @@
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
 import org.junit.Assume.assumeTrue
-
 import org.junit.Test
 import org.junit.runner.RunWith
 
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/MemoryCountersQueryTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/MemoryCountersQueryTest.kt
index df8c879..3c56731 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/MemoryCountersQueryTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/MemoryCountersQueryTest.kt
@@ -30,7 +30,7 @@
 class MemoryCountersQueryTest {
     @Test
     @MediumTest
-    fun fixedTrace33() {
+    fun fixedTrace31() {
         assumeTrue(PerfettoHelper.isAbiSupported())
         val traceFile = createTempFileFromAsset("api31_startup_cold", ".perfetto-trace")
         val metrics = PerfettoTraceProcessor.runSingleSessionServer(
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/MemoryUsageQueryTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/MemoryUsageQueryTest.kt
new file mode 100644
index 0000000..ca2857d
--- /dev/null
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/MemoryUsageQueryTest.kt
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.benchmark.macro.perfetto
+
+import androidx.benchmark.macro.MemoryUsageMetric
+import androidx.benchmark.macro.MemoryUsageMetric.SubMetric
+import androidx.benchmark.macro.createTempFileFromAsset
+import androidx.benchmark.perfetto.PerfettoHelper
+import androidx.benchmark.perfetto.PerfettoTraceProcessor
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
+import kotlin.test.assertEquals
+import org.junit.Assume.assumeTrue
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class MemoryUsageQueryTest {
+    @Test
+    @MediumTest
+    fun fixedTrace31() {
+        assumeTrue(PerfettoHelper.isAbiSupported())
+        val traceFile = createTempFileFromAsset("api31_startup_cold", ".perfetto-trace")
+        PerfettoTraceProcessor.runSingleSessionServer(
+            traceFile.absolutePath
+        ) {
+            // Note: this particular trace has same values for last and max
+            val expected = mapOf(
+                SubMetric.HeapSize to 3067,
+                SubMetric.RssAnon to 47260,
+                SubMetric.RssFile to 67668,
+                SubMetric.RssShmem to 1160
+            )
+            assertEquals(
+                expected,
+                MemoryUsageQuery.getMemoryUsageKb(
+                    this,
+                    "androidx.benchmark.integration.macrobenchmark.target",
+                    mode = MemoryUsageMetric.Mode.Last
+                )
+            )
+            assertEquals(
+                expected,
+                MemoryUsageQuery.getMemoryUsageKb(
+                    this,
+                    "androidx.benchmark.integration.macrobenchmark.target",
+                    mode = MemoryUsageMetric.Mode.Max
+                )
+            )
+        }
+    }
+
+    @Test
+    @MediumTest
+    fun fixedTrace33() {
+        assumeTrue(PerfettoHelper.isAbiSupported())
+        val traceFile =
+            createTempFileFromAsset("api33_motionlayout_messagejson", ".perfetto-trace")
+        PerfettoTraceProcessor.runSingleSessionServer(
+            traceFile.absolutePath
+        ) {
+            assertEquals(
+                mapOf(
+                    SubMetric.HeapSize to 25019,
+                    SubMetric.RssAnon to 78516,
+                    SubMetric.RssFile to 88036,
+                    SubMetric.RssShmem to 1540,
+                ),
+                MemoryUsageQuery.getMemoryUsageKb(
+                    this,
+                    "androidx.constraintlayout.compose.integration.macrobenchmark.target",
+                    mode = MemoryUsageMetric.Mode.Last
+                )
+            )
+            assertEquals(
+                mapOf(
+                    SubMetric.HeapSize to 25019,
+                    SubMetric.RssAnon to 78516,
+                    SubMetric.RssFile to 88168,
+                    SubMetric.RssShmem to 1540,
+                ),
+                MemoryUsageQuery.getMemoryUsageKb(
+                    this,
+                    "androidx.constraintlayout.compose.integration.macrobenchmark.target",
+                    mode = MemoryUsageMetric.Mode.Max
+                )
+            )
+        }
+    }
+
+    @Test
+    @MediumTest
+    fun fixedGpuTrace34() {
+        assumeTrue(PerfettoHelper.isAbiSupported())
+        val traceFile = createTempFileFromAsset("api34_startup_cold", ".perfetto-trace")
+        PerfettoTraceProcessor.runSingleSessionServer(
+            traceFile.absolutePath
+        ) {
+            assertEquals(
+                mapOf(
+                    SubMetric.Gpu to 30840,
+                    SubMetric.HeapSize to 3385,
+                    SubMetric.RssAnon to 47152,
+                    SubMetric.RssFile to 96868,
+                    SubMetric.RssShmem to 16336,
+                ),
+                MemoryUsageQuery.getMemoryUsageKb(
+                    this,
+                    "com.android.systemui.people",
+                    mode = MemoryUsageMetric.Mode.Last
+                )
+            )
+        }
+    }
+}
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoCaptureTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoCaptureTest.kt
index c9c8608..e56cb23 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoCaptureTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoCaptureTest.kt
@@ -22,10 +22,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
+import kotlin.test.assertFailsWith
 import org.junit.Assume.assumeTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.test.assertFailsWith
 
 /**
  * Tests for PerfettoCapture
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoSdkHandshakeTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoSdkHandshakeTest.kt
index ac15ffe..5251a9c 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoSdkHandshakeTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/perfetto/PerfettoSdkHandshakeTest.kt
@@ -31,10 +31,10 @@
 import androidx.tracing.perfetto.PerfettoHandshake
 import androidx.tracing.perfetto.PerfettoHandshake.ExternalLibraryProvider
 import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_ALREADY_ENABLED
-import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_ERROR_BINARY_MISSING
-import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_SUCCESS
 import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_CANCELLED
+import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_ERROR_BINARY_MISSING
 import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_ERROR_OTHER
+import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_SUCCESS
 import com.google.common.truth.Truth.assertThat
 import java.io.File
 import java.io.StringReader
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
index 36241de..58b51f2 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Metric.kt
@@ -30,6 +30,7 @@
 import androidx.benchmark.macro.perfetto.FrameTimingQuery.SubMetric
 import androidx.benchmark.macro.perfetto.FrameTimingQuery.getFrameSubMetrics
 import androidx.benchmark.macro.perfetto.MemoryCountersQuery
+import androidx.benchmark.macro.perfetto.MemoryUsageQuery
 import androidx.benchmark.macro.perfetto.PowerQuery
 import androidx.benchmark.macro.perfetto.StartupTimingQuery
 import androidx.benchmark.macro.perfetto.camelCase
@@ -512,13 +513,11 @@
     companion object {
         internal const val MEASURE_BLOCK_SECTION_NAME = "measureBlock"
 
-        @Suppress("FunctionName")
         @JvmStatic
         fun Battery(): Type.Battery {
             return Type.Battery()
         }
 
-        @Suppress("FunctionName")
         @JvmStatic
         fun Energy(
             categories: Map<PowerCategory, PowerCategoryDisplayLevel> = emptyMap()
@@ -526,7 +525,6 @@
             return Type.Energy(categories)
         }
 
-        @Suppress("FunctionName")
         @JvmStatic
         fun Power(
             categories: Map<PowerCategory, PowerCategoryDisplayLevel> = emptyMap()
@@ -678,6 +676,84 @@
 }
 
 /**
+ * Metric for tracking the memory usage of the target application.
+ *
+ * There are two modes for measurement - `Last`, which represents the last observed value
+ * during an iteration, and `Max`, which represents the largest sample observed per measurement.
+ *
+ * By default, reports:
+ * * `memoryRssAnonKb` - Anonymous resident/allocated memory owned by the process, not including
+ *   memory mapped files or shared memory.
+ * * `memoryRssAnonFileKb` - Memory allocated by the process to map files.
+ * * `memoryHeapSizeKb` - Heap memory allocations from the Android Runtime, sampled after each GC.
+ * * `memoryGpuKb` - GPU Memory allocated for the process.
+ *
+ * By passing a custom `subMetrics` list, you can enable other [SubMetric]s.
+ */
+@ExperimentalMetricApi
+class MemoryUsageMetric(
+    private val mode: Mode,
+    private val subMetrics: List<SubMetric> = listOf(
+        SubMetric.HeapSize,
+        SubMetric.RssAnon,
+        SubMetric.RssFile,
+        SubMetric.Gpu,
+    )
+) : TraceMetric() {
+    enum class Mode {
+        /**
+         * Select the last available sample for each value. Useful for inspecting the final state of
+         * e.g. Heap Size.
+         */
+        Last,
+
+        /**
+         * Select the maximum value observed.
+         *
+         * Useful for inspecting the worst case state, e.g. finding worst heap size during a given
+         * scenario.
+         */
+        Max
+    }
+    enum class SubMetric(
+        /**
+         * Name of counter in trace.
+         */
+        internal val counterName: String,
+        /**
+         * False if the metric is represented in the trace in bytes,
+         * and must be divided by 1024 to be converted to KB.
+         */
+        internal val alreadyInKb: Boolean
+    ) {
+        HeapSize("Heap size (KB)", alreadyInKb = true),
+        RssAnon("mem.rss.anon", alreadyInKb = false),
+        RssFile("mem.rss.file", alreadyInKb = false),
+        RssShmem("mem.rss.shmem", alreadyInKb = false),
+        Gpu("GPU Memory", alreadyInKb = false)
+    }
+
+    override fun getResult(
+        captureInfo: CaptureInfo,
+        traceSession: PerfettoTraceProcessor.Session
+    ): List<Measurement> {
+
+        val suffix = mode.toString()
+        return MemoryUsageQuery.getMemoryUsageKb(
+            session = traceSession,
+            targetPackageName = captureInfo.targetPackageName,
+            mode = mode
+        )?.mapNotNull {
+            if (it.key in subMetrics) {
+                Measurement("memory${it.key}${suffix}Kb", it.value.toDouble())
+            } else {
+                null
+            }
+        } ?: listOf()
+    }
+}
+
+/**
  * Captures the number of page faults over time for a target package name.
  */
 @ExperimentalMetricApi
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/MemoryCountersQuery.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/MemoryCountersQuery.kt
index 1d9a6aa..43fd2be 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/MemoryCountersQuery.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/MemoryCountersQuery.kt
@@ -16,8 +16,6 @@
 
 package androidx.benchmark.macro.perfetto
 
-import android.util.Log
-import androidx.benchmark.macro.TAG
 import androidx.benchmark.perfetto.PerfettoTraceProcessor
 import androidx.benchmark.perfetto.processNameLikePkg
 import org.intellij.lang.annotations.Language
@@ -25,18 +23,17 @@
 internal object MemoryCountersQuery {
     // https://perfetto.dev/docs/data-sources/memory-counters
     @Language("sql")
-    internal fun getFullQuery(targetPackageName: String) = """
+    internal fun getQuery(targetPackageName: String) = """
         SELECT
             track.name as counter_name,
-            process.name as process_name,
-            ts,
-            value
+            SUM(value)
         FROM counter
             LEFT JOIN process_counter_track as track on counter.track_id = track.id
             LEFT JOIN process using (upid)
         WHERE
             ${processNameLikePkg(targetPackageName)} AND
             track.name LIKE 'mem.%.count'
+        GROUP BY counter_name
     """.trimIndent()
 
     private const val MINOR_PAGE_FAULTS_COUNT = "mem.mm.min_flt.count"
@@ -66,58 +63,24 @@
         targetPackageName: String
     ): SubMetrics? {
         val queryResultIterator = session.query(
-            query = getFullQuery(targetPackageName = targetPackageName)
+            query = getQuery(targetPackageName = targetPackageName)
         )
 
-        var minorPageFaults = 0.0
-        var majorPageFaults = 0.0
-        var faultsBackedBySwapCache = 0.0
-        var faultsBackedByReadIO = 0.0
-        var memoryCompactionEvents = 0.0
-        var memoryReclaimEvents = 0.0
-
         val rows = queryResultIterator.toList()
-        if (rows.isEmpty()) {
-            return null
+        return if (rows.isEmpty()) {
+            null
         } else {
-            rows.forEach { row ->
-                when (row.string("counter_name")) {
-
-                    MINOR_PAGE_FAULTS_COUNT -> {
-                        minorPageFaults += row.double("value")
-                    }
-
-                    MAJOR_PAGE_FAULTS_COUNT -> {
-                        majorPageFaults += row.double("value")
-                    }
-
-                    PAGE_FAULTS_BACKED_BY_SWAP_CACHE_COUNT -> {
-                        faultsBackedBySwapCache += row.double("value")
-                    }
-
-                    PAGE_FAULTS_BACKED_BY_READ_IO_COUNT -> {
-                        faultsBackedByReadIO += row.double("value")
-                    }
-
-                    MEMORY_COMPACTION_EVENTS_COUNT -> {
-                        memoryCompactionEvents += row.double("value")
-                    }
-
-                    MEMORY_RECLAIM_EVENTS_COUNT -> {
-                        memoryReclaimEvents += row.double("value")
-                    }
-
-                    else -> Log.d(TAG, "Unknown counter: $row")
-                }
+            val summations: Map<String, Double> = rows.associate {
+                it.string("counter_name") to it.double("SUM(value)")
             }
-
-            return SubMetrics(
-                minorPageFaults = minorPageFaults,
-                majorPageFaults = majorPageFaults,
-                pageFaultsBackedBySwapCache = faultsBackedBySwapCache,
-                pageFaultsBackedByReadIO = faultsBackedByReadIO,
-                memoryCompactionEvents = memoryCompactionEvents,
-                memoryReclaimEvents = memoryReclaimEvents
+            SubMetrics(
+                minorPageFaults = summations[MINOR_PAGE_FAULTS_COUNT] ?: 0.0,
+                majorPageFaults = summations[MAJOR_PAGE_FAULTS_COUNT] ?: 0.0,
+                pageFaultsBackedBySwapCache = summations[PAGE_FAULTS_BACKED_BY_SWAP_CACHE_COUNT]
+                    ?: 0.0,
+                pageFaultsBackedByReadIO = summations[PAGE_FAULTS_BACKED_BY_READ_IO_COUNT] ?: 0.0,
+                memoryCompactionEvents = summations[MEMORY_COMPACTION_EVENTS_COUNT] ?: 0.0,
+                memoryReclaimEvents = summations[MEMORY_RECLAIM_EVENTS_COUNT] ?: 0.0
             )
         }
     }
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/MemoryUsageQuery.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/MemoryUsageQuery.kt
new file mode 100644
index 0000000..ff6bad9
--- /dev/null
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/MemoryUsageQuery.kt
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.benchmark.macro.perfetto
+
+import androidx.benchmark.macro.MemoryUsageMetric
+import androidx.benchmark.macro.MemoryUsageMetric.Mode
+import androidx.benchmark.perfetto.PerfettoTraceProcessor
+import androidx.benchmark.perfetto.processNameLikePkg
+import org.intellij.lang.annotations.Language
+
+internal object MemoryUsageQuery {
+    // https://perfetto.dev/docs/data-sources/memory-counters
+    @Language("sql")
+    internal fun getQuery(targetPackageName: String, mode: Mode) =
+        when (mode) {
+            Mode.Last -> "SELECT track.name as counter_name, MAX(ts), value "
+            Mode.Max -> "SELECT track.name as counter_name, MAX(value) as value "
+        } + """
+            FROM counter
+                LEFT JOIN process_counter_track as track on counter.track_id = track.id
+                LEFT JOIN process using (upid)
+            WHERE
+                ${processNameLikePkg(targetPackageName)} AND
+                (
+                    track.name LIKE 'mem.rss%' OR
+                    track.name LIKE 'Heap size (KB)' OR
+                    track.name LIKE 'GPU Memory'
+                )
+            GROUP BY counter_name
+        """.trimIndent()
+
+    fun getMemoryUsageKb(
+        session: PerfettoTraceProcessor.Session,
+        targetPackageName: String,
+        mode: Mode
+    ): Map<MemoryUsageMetric.SubMetric, Int>? {
+        val queryResultIterator = session.query(
+            query = getQuery(targetPackageName = targetPackageName, mode)
+        )
+
+        val rows = queryResultIterator.toList()
+        return if (rows.isEmpty()) {
+            null
+        } else {
+            rows.mapNotNull { row ->
+                val counterName = row.string("counter_name")
+                val metric = MemoryUsageMetric.SubMetric.values().firstOrNull {
+                    it.counterName == counterName
+                }
+                if (metric == null) {
+                    null
+                } else {
+                    val measurement = row.double("value")
+                    metric to if (metric.alreadyInKb) {
+                        measurement.toInt()
+                    } else {
+                        measurement.toInt() / 1024
+                    }
+                }
+            }.toMap()
+        }
+    }
+}
diff --git a/benchmark/benchmark/src/androidTest/java/androidx/benchmark/benchmark/SynchronizedBenchmark.kt b/benchmark/benchmark/src/androidTest/java/androidx/benchmark/benchmark/SynchronizedBenchmark.kt
index a890b12..0a84a30 100644
--- a/benchmark/benchmark/src/androidTest/java/androidx/benchmark/benchmark/SynchronizedBenchmark.kt
+++ b/benchmark/benchmark/src/androidTest/java/androidx/benchmark/benchmark/SynchronizedBenchmark.kt
@@ -20,10 +20,10 @@
 import androidx.benchmark.junit4.measureRepeated
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import java.util.concurrent.atomic.AtomicInteger
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.atomic.AtomicInteger
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/benchmark/gradle-plugin/build.gradle b/benchmark/gradle-plugin/build.gradle
index fdf95af..11bf133 100644
--- a/benchmark/gradle-plugin/build.gradle
+++ b/benchmark/gradle-plugin/build.gradle
@@ -58,7 +58,7 @@
 }
 
 androidx {
-    name = "Android Benchmark Gradle Plugin"
+    name = "Benchmark Gradle Plugin"
     type = LibraryType.GRADLE_PLUGIN
     inceptionYear = "2019"
     description = "Android Benchmark Gradle Plugin"
diff --git a/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/Adb.kt b/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/Adb.kt
index 2c25293..e78a7a0 100644
--- a/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/Adb.kt
+++ b/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/Adb.kt
@@ -16,10 +16,10 @@
 
 package androidx.benchmark.gradle
 
+import java.util.concurrent.TimeUnit
 import org.gradle.api.GradleException
 import org.gradle.api.logging.LogLevel
 import org.gradle.api.logging.Logger
-import java.util.concurrent.TimeUnit
 
 /**
  * Helper class wrapping the adb cli tool.
diff --git a/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/LockClocksTask.kt b/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/LockClocksTask.kt
index 5c02ad4..89f09cb 100644
--- a/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/LockClocksTask.kt
+++ b/benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/LockClocksTask.kt
@@ -16,6 +16,9 @@
 
 package androidx.benchmark.gradle
 
+import java.nio.file.Files
+import java.nio.file.Paths
+import java.nio.file.StandardCopyOption
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
 import org.gradle.api.provider.Property
@@ -23,9 +26,6 @@
 import org.gradle.api.tasks.TaskAction
 import org.gradle.kotlin.dsl.property
 import org.gradle.work.DisableCachingByDefault
-import java.nio.file.Files
-import java.nio.file.Paths
-import java.nio.file.StandardCopyOption
 
 @Suppress("UnstableApiUsage")
 @DisableCachingByDefault(
diff --git a/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt b/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
index 4decc0a..01f9af5 100644
--- a/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
+++ b/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
@@ -17,6 +17,10 @@
 package androidx.benchmark.gradle
 
 import androidx.testutils.gradle.ProjectSetupRule
+import java.io.File
+import kotlin.test.assertFailsWith
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
 import org.gradle.testkit.runner.GradleRunner
 import org.gradle.testkit.runner.UnexpectedBuildFailure
 import org.junit.Before
@@ -24,10 +28,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.io.File
-import kotlin.test.assertFailsWith
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
 
 private val PLUGINS_HEADER = """
     plugins {
diff --git a/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml b/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
index 058d0f6..35b79ff 100644
--- a/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
+++ b/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
@@ -29,9 +29,13 @@
 
         <!--
         Activities need to be exported so the macrobenchmark can discover them.
+
+        Feel free to add the launcher intent filter to enable easier profiling,
+        just be sure to add a consistent label.
          -->
         <activity
             android:name=".TrivialStartupActivity"
+            android:label="B Trivial"
             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -63,8 +67,13 @@
 
         <activity
             android:name=".RecyclerViewActivity"
+            android:label="B RecyclerView"
             android:exported="true">
             <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+            <intent-filter>
                 <action android:name="androidx.benchmark.integration.macrobenchmark.target.RECYCLER_VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
diff --git a/benchmark/integration-tests/macrobenchmark-target/src/main/java/androidx/benchmark/integration/macrobenchmark/target/BackgroundWorkActivity.kt b/benchmark/integration-tests/macrobenchmark-target/src/main/java/androidx/benchmark/integration/macrobenchmark/target/BackgroundWorkActivity.kt
index 9ccde18..64abbf4 100644
--- a/benchmark/integration-tests/macrobenchmark-target/src/main/java/androidx/benchmark/integration/macrobenchmark/target/BackgroundWorkActivity.kt
+++ b/benchmark/integration-tests/macrobenchmark-target/src/main/java/androidx/benchmark/integration/macrobenchmark/target/BackgroundWorkActivity.kt
@@ -23,12 +23,12 @@
 import android.widget.TextView
 import androidx.appcompat.app.AppCompatActivity
 import androidx.tracing.trace
-import kotlin.concurrent.thread
 import androidx.work.OneTimeWorkRequestBuilder
 import androidx.work.OutOfQuotaPolicy
 import androidx.work.WorkInfo
 import androidx.work.WorkManager
 import java.util.concurrent.CountDownLatch
+import kotlin.concurrent.thread
 
 class BackgroundWorkActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/SingleColorPowerBenchmark.kt b/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/SingleColorPowerBenchmark.kt
index 70de30b..daff320 100644
--- a/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/SingleColorPowerBenchmark.kt
+++ b/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/SingleColorPowerBenchmark.kt
@@ -16,9 +16,9 @@
 
 package androidx.benchmark.integration.macrobenchmark
 
-import android.os.Bundle
 import android.content.Intent
 import android.graphics.Color
+import android.os.Bundle
 import androidx.benchmark.macro.BatteryCharge
 import androidx.benchmark.macro.CompilationMode
 import androidx.benchmark.macro.ExperimentalMetricApi
diff --git a/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/TrivialPowerBenchmark.kt b/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/TrivialPowerBenchmark.kt
index 8917e0e..abd49e50 100644
--- a/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/TrivialPowerBenchmark.kt
+++ b/benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/TrivialPowerBenchmark.kt
@@ -18,10 +18,10 @@
 
 import android.content.Intent
 import androidx.benchmark.macro.BatteryCharge
-import androidx.benchmark.macro.PowerCategory
-import androidx.benchmark.macro.PowerCategoryDisplayLevel
 import androidx.benchmark.macro.CompilationMode
 import androidx.benchmark.macro.ExperimentalMetricApi
+import androidx.benchmark.macro.PowerCategory
+import androidx.benchmark.macro.PowerCategoryDisplayLevel
 import androidx.benchmark.macro.PowerMetric
 import androidx.benchmark.macro.PowerRail
 import androidx.benchmark.macro.StartupMode
diff --git a/biometric/biometric-ktx/samples/build.gradle b/biometric/biometric-ktx/samples/build.gradle
index 0f995ee..5d20e55 100644
--- a/biometric/biometric-ktx/samples/build.gradle
+++ b/biometric/biometric-ktx/samples/build.gradle
@@ -28,7 +28,7 @@
 }
 
 androidx {
-    name = "AndroidX Biometric Samples"
+    name = "Biometric Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains the sample code for the AndroidX Biometric library"
diff --git a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricAuthExtensions.kt b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricAuthExtensions.kt
index a940f035..df6709e 100755
--- a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricAuthExtensions.kt
+++ b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricAuthExtensions.kt
@@ -18,8 +18,8 @@
 import androidx.biometric.BiometricPrompt.AuthenticationResult
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.util.concurrent.Executor
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Shows an authentication prompt to the user.
diff --git a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricOrCredentialAuthExtensions.kt b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricOrCredentialAuthExtensions.kt
index a41bf5d..39a9372 100755
--- a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricOrCredentialAuthExtensions.kt
+++ b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class2BiometricOrCredentialAuthExtensions.kt
@@ -18,8 +18,8 @@
 import androidx.biometric.BiometricPrompt.AuthenticationResult
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.util.concurrent.Executor
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Shows an authentication prompt to the user.
diff --git a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricAuthExtensions.kt b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricAuthExtensions.kt
index f5d0ee3..5808509 100755
--- a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricAuthExtensions.kt
+++ b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricAuthExtensions.kt
@@ -19,8 +19,8 @@
 import androidx.biometric.BiometricPrompt.CryptoObject
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.util.concurrent.Executor
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Shows an authentication prompt to the user.
diff --git a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricOrCredentialAuthExtensions.kt b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricOrCredentialAuthExtensions.kt
index e26acf4..3da017d 100755
--- a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricOrCredentialAuthExtensions.kt
+++ b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/Class3BiometricOrCredentialAuthExtensions.kt
@@ -21,8 +21,8 @@
 import androidx.biometric.BiometricPrompt.CryptoObject
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.util.concurrent.Executor
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Shows an authentication prompt to the user.
diff --git a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CoroutineAuthPromptCallback.kt b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CoroutineAuthPromptCallback.kt
index fb6de45..f07c3ef 100644
--- a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CoroutineAuthPromptCallback.kt
+++ b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CoroutineAuthPromptCallback.kt
@@ -18,8 +18,8 @@
 
 import androidx.biometric.BiometricPrompt.AuthenticationResult
 import androidx.fragment.app.FragmentActivity
-import kotlinx.coroutines.CancellableContinuation
 import kotlin.coroutines.resumeWithException
+import kotlinx.coroutines.CancellableContinuation
 
 /**
  * Implementation of [AuthPromptCallback] used to transform callback results for coroutine APIs.
diff --git a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CredentialAuthExtensions.kt b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CredentialAuthExtensions.kt
index fe98720..d37eb21 100755
--- a/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CredentialAuthExtensions.kt
+++ b/biometric/biometric-ktx/src/main/java/androidx/biometric/auth/CredentialAuthExtensions.kt
@@ -21,8 +21,8 @@
 import androidx.biometric.BiometricPrompt.AuthenticationResult
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.util.concurrent.Executor
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Shows an authentication prompt to the user.
diff --git a/biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/AuthPromptTestActivity.kt b/biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/AuthPromptTestActivity.kt
index 0e92e2a..ef20273 100755
--- a/biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/AuthPromptTestActivity.kt
+++ b/biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/AuthPromptTestActivity.kt
@@ -24,9 +24,9 @@
 import androidx.biometric.BiometricPrompt
 import androidx.biometric.auth.AuthPrompt
 import androidx.biometric.auth.AuthPromptCallback
+import androidx.biometric.auth.authenticateWithClass3Biometrics
 import androidx.biometric.auth.startClass2BiometricAuthentication
 import androidx.biometric.auth.startClass2BiometricOrCredentialAuthentication
-import androidx.biometric.auth.authenticateWithClass3Biometrics
 import androidx.biometric.auth.startClass3BiometricOrCredentialAuthentication
 import androidx.biometric.auth.startCredentialAuthentication
 import androidx.biometric.integration.testapp.R.string.biometric_prompt_description
diff --git a/bluetooth/bluetooth-testing/build.gradle b/bluetooth/bluetooth-testing/build.gradle
index a9ac8a5..e0f587c 100644
--- a/bluetooth/bluetooth-testing/build.gradle
+++ b/bluetooth/bluetooth-testing/build.gradle
@@ -27,7 +27,7 @@
 }
 
 androidx {
-    name = "AndroidX Bluetooth Testing"
+    name = "Bluetooth Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2022"
     description = "Test utilities for AndroidX Bluetooth"
diff --git a/bluetooth/bluetooth/build.gradle b/bluetooth/bluetooth/build.gradle
index c455f0b..8e7f695 100644
--- a/bluetooth/bluetooth/build.gradle
+++ b/bluetooth/bluetooth/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "AndroidX Bluetooth"
+    name = "Bluetooth"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2022"
     description = "AndroidX Bluetooth Library"
diff --git a/bluetooth/bluetooth/src/androidTest/java/androidx/bluetooth/BluetoothGattServiceTest.kt b/bluetooth/bluetooth/src/androidTest/java/androidx/bluetooth/BluetoothGattServiceTest.kt
index 0ac236b..eb01e73 100644
--- a/bluetooth/bluetooth/src/androidTest/java/androidx/bluetooth/BluetoothGattServiceTest.kt
+++ b/bluetooth/bluetooth/src/androidTest/java/androidx/bluetooth/BluetoothGattServiceTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.bluetooth
 
-import android.bluetooth.BluetoothGattService as FwkBluetoothGattService
 import android.bluetooth.BluetoothGattCharacteristic as FwkBluetoothGattCharacteristic
+import android.bluetooth.BluetoothGattService as FwkBluetoothGattService
 import android.bluetooth.BluetoothGattService.SERVICE_TYPE_PRIMARY
 import java.util.UUID
 import org.junit.Assert.assertEquals
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/experimental/GattClientImpl.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/experimental/GattClientImpl.kt
index b305e73..25b43d8 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/experimental/GattClientImpl.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/experimental/GattClientImpl.kt
@@ -43,7 +43,8 @@
 import kotlinx.coroutines.launch
 
 internal class GattClientImpl {
-    companion object {
+
+    private companion object {
         private const val TAG = "GattClientImpl"
         private const val GATT_MAX_MTU = 517
         private val CCCD_UID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")
@@ -91,6 +92,11 @@
 
         val callback = object : BluetoothGattCallback() {
             override fun onConnectionStateChange(gatt: BluetoothGatt?, status: Int, newState: Int) {
+                Log.d(
+                    TAG,
+                    "onConnectionStateChange() called with: gatt = $gatt, status = $status, " +
+                        "newState = $newState"
+                )
                 if (newState == BluetoothGatt.STATE_CONNECTED) {
                     gatt?.requestMtu(GATT_MAX_MTU)
                 } else {
@@ -101,6 +107,7 @@
             }
 
             override fun onMtuChanged(gatt: BluetoothGatt?, mtu: Int, status: Int) {
+                Log.d(TAG, "onMtuChanged() called with: gatt = $gatt, mtu = $mtu, status = $status")
                 if (status == GATT_SUCCESS) {
                     gatt?.discoverServices()
                 } else {
@@ -303,4 +310,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/advertiser/AdvertiserFragment.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/advertiser/AdvertiserFragment.kt
index e5f71ad..8b61e56 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/advertiser/AdvertiserFragment.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/advertiser/AdvertiserFragment.kt
@@ -16,6 +16,7 @@
 
 package androidx.bluetooth.integration.testapp.ui.advertiser
 
+// TODO(ofy) Migrate to androidx.bluetooth.BluetoothLe once Gatt Server API is in place
 import android.annotation.SuppressLint
 import android.os.Bundle
 import android.util.Log
@@ -23,42 +24,49 @@
 import android.view.View
 import android.view.ViewGroup
 import android.widget.EditText
-
 import androidx.appcompat.app.AlertDialog
 import androidx.appcompat.widget.PopupMenu
 import androidx.bluetooth.AdvertiseResult
 import androidx.bluetooth.BluetoothLe
 import androidx.bluetooth.integration.testapp.R
 import androidx.bluetooth.integration.testapp.databinding.FragmentAdvertiserBinding
+import androidx.bluetooth.integration.testapp.experimental.BluetoothLe as BluetoothLeExperimental
 import androidx.bluetooth.integration.testapp.ui.common.getColor
 import androidx.bluetooth.integration.testapp.ui.common.setViewEditText
 import androidx.bluetooth.integration.testapp.ui.common.toast
 import androidx.core.view.isVisible
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.ViewModelProvider
-
+import com.google.android.material.tabs.TabLayout
+import java.util.UUID
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.launch
 
-import java.util.UUID
-
 class AdvertiserFragment : Fragment() {
 
     private companion object {
         private const val TAG = "AdvertiserFragment"
+
+        private const val TAB_ADVERTISER_POSITION = 0
     }
 
     private lateinit var advertiserViewModel: AdvertiserViewModel
 
     private lateinit var bluetoothLe: BluetoothLe
 
+    // TODO(ofy) Migrate to androidx.bluetooth.BluetoothLe once scan API is in place
+    private lateinit var bluetoothLeExperimental: BluetoothLeExperimental
+
     private var advertiseDataAdapter: AdvertiseDataAdapter? = null
 
     private val advertiseScope = CoroutineScope(Dispatchers.Main + Job())
     private var advertiseJob: Job? = null
 
+    private val gattServerScope = CoroutineScope(Dispatchers.Main + Job())
+    private var gattServerJob: Job? = null
+
     private var isAdvertising: Boolean = false
         set(value) {
             field = value
@@ -79,6 +87,39 @@
             _binding?.viewRecyclerViewOverlay?.isVisible = value
         }
 
+    private var isGattServerOpen: Boolean = false
+        set(value) {
+            field = value
+            if (value) {
+                _binding?.buttonGattServer?.text = getString(R.string.stop_gatt_server)
+                _binding?.buttonGattServer?.backgroundTintList = getColor(R.color.red_500)
+            } else {
+                _binding?.buttonGattServer?.text = getString(R.string.open_gatt_server)
+                _binding?.buttonGattServer?.backgroundTintList = getColor(R.color.indigo_500)
+                gattServerJob?.cancel()
+                gattServerJob = null
+            }
+        }
+
+    private var showingAdvertiser: Boolean = false
+        set(value) {
+            field = value
+            _binding?.layoutAdvertiser?.isVisible = value
+            _binding?.layoutGattServer?.isVisible = !value
+        }
+
+    private val onTabSelectedListener = object : TabLayout.OnTabSelectedListener {
+        override fun onTabSelected(tab: TabLayout.Tab) {
+            showingAdvertiser = tab.position == TAB_ADVERTISER_POSITION
+        }
+
+        override fun onTabUnselected(tab: TabLayout.Tab) {
+        }
+
+        override fun onTabReselected(tab: TabLayout.Tab) {
+        }
+    }
+
     private var _binding: FragmentAdvertiserBinding? = null
 
     // This property is only valid between onCreateView and onDestroyView.
@@ -93,9 +134,11 @@
 
         bluetoothLe = BluetoothLe(requireContext())
 
+        bluetoothLeExperimental = BluetoothLeExperimental(requireContext())
+
         _binding = FragmentAdvertiserBinding.inflate(inflater, container, false)
 
-        initData()
+        binding.tabLayout.addOnTabSelectedListener(onTabSelectedListener)
 
         binding.checkBoxIncludeDeviceName.setOnCheckedChangeListener { _, isChecked ->
             advertiserViewModel.includeDeviceName = isChecked
@@ -137,6 +180,16 @@
             }
         }
 
+        binding.buttonGattServer.setOnClickListener {
+            if (gattServerJob?.isActive == true) {
+                isGattServerOpen = false
+            } else {
+                openGattServer()
+            }
+        }
+
+        initData()
+
         return binding.root
     }
 
@@ -273,4 +326,16 @@
                 }
         }
     }
+
+    private fun openGattServer() {
+        Log.d(TAG, "openGattServer() called")
+
+        gattServerJob = gattServerScope.launch {
+            isGattServerOpen = true
+
+            bluetoothLeExperimental.gattServer().collect { gattServerCallback ->
+                Log.d(TAG, "openGattServer() called with: gattServerCallback = $gattServerCallback")
+            }
+        }
+    }
 }
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/common/ScanResultAdapter.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/common/ScanResultAdapter.kt
index ed937a5..0762fa9 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/common/ScanResultAdapter.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/common/ScanResultAdapter.kt
@@ -21,7 +21,6 @@
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
-
 import androidx.bluetooth.integration.testapp.R
 import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.ListAdapter
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerAdapter.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerAdapter.kt
index 7641f8a..9cf5027 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerAdapter.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerAdapter.kt
@@ -23,7 +23,6 @@
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.TextView
-
 import androidx.bluetooth.integration.testapp.R
 import androidx.core.view.isVisible
 import androidx.recyclerview.widget.DiffUtil
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt
index ca0309d..ad5e5da 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt
@@ -16,6 +16,8 @@
 
 package androidx.bluetooth.integration.testapp.ui.scanner
 
+// TODO(ofy) Migrate to androidx.bluetooth.BluetoothLe once scan API is in place
+import android.annotation.SuppressLint
 import android.bluetooth.le.ScanResult
 import android.bluetooth.le.ScanSettings
 import android.os.Bundle
@@ -24,11 +26,8 @@
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
-
 import androidx.bluetooth.integration.testapp.R
 import androidx.bluetooth.integration.testapp.databinding.FragmentScannerBinding
-import android.annotation.SuppressLint
-// TODO(ofy) Migrate to androidx.bluetooth.BluetoothLe once scan API is in place
 import androidx.bluetooth.integration.testapp.experimental.BluetoothLe
 import androidx.bluetooth.integration.testapp.ui.common.getColor
 import androidx.core.view.isVisible
@@ -36,15 +35,13 @@
 import androidx.lifecycle.ViewModelProvider
 import androidx.recyclerview.widget.DividerItemDecoration
 import androidx.recyclerview.widget.LinearLayoutManager
-
 import com.google.android.material.tabs.TabLayout
 import com.google.android.material.tabs.TabLayout.Tab
-
+import java.lang.Exception
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.launch
-import java.lang.Exception
 
 class ScannerFragment : Fragment() {
 
@@ -86,8 +83,8 @@
     private var showingScanResults: Boolean = false
         set(value) {
             field = value
-            _binding?.relativeLayoutScanResults?.isVisible = value
-            _binding?.linearLayoutDevice?.isVisible = !value
+            _binding?.layoutScanResults?.isVisible = value
+            _binding?.layoutDevice?.isVisible = !value
         }
 
     private val onTabSelectedListener = object : TabLayout.OnTabSelectedListener {
@@ -143,6 +140,10 @@
             }
         }
 
+        binding.buttonReconnect.setOnClickListener {
+            connectTo(scannerViewModel.deviceConnection(binding.tabLayout.selectedTabPosition))
+        }
+
         initData()
 
         return binding.root
@@ -253,6 +254,7 @@
     @SuppressLint("NotifyDataSetChanged")
     private fun updateDeviceUI(deviceConnection: DeviceConnection) {
         binding.progressIndicatorDeviceConnection.isVisible = false
+        binding.buttonReconnect.isVisible = false
 
         when (deviceConnection.status) {
             Status.NOT_CONNECTED -> {
@@ -271,6 +273,7 @@
             Status.CONNECTION_FAILED -> {
                 binding.textViewDeviceConnectionStatus.text = getString(R.string.connection_failed)
                 binding.textViewDeviceConnectionStatus.setTextColor(getColor(R.color.red_500))
+                binding.buttonReconnect.isVisible = true
             }
         }
         deviceServicesAdapter?.services = deviceConnection.services
diff --git a/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_advertiser.xml b/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_advertiser.xml
index 014dc75..f18e982 100644
--- a/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_advertiser.xml
+++ b/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_advertiser.xml
@@ -21,108 +21,157 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <TextView
-        android:id="@+id/text_view_configure_advertising_packet"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:padding="16dp"
-        android:text="@string/configure_advertising_packet"
-        android:textColor="@color/black"
-        android:textSize="21sp"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/text_input_layout_display_name"
+    <com.google.android.material.tabs.TabLayout
+        android:id="@+id/tab_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:hint="@string/display_name"
-        app:layout_constraintTop_toBottomOf="@+id/text_view_configure_advertising_packet">
+        app:layout_constraintTop_toTopOf="parent"
+        app:tabMode="fixed">
 
-        <com.google.android.material.textfield.TextInputEditText
-            android:id="@+id/text_input_edit_text_display_name"
+        <com.google.android.material.tabs.TabItem
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/title_advertiser" />
+
+        <com.google.android.material.tabs.TabItem
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/gatt_server" />
+
+    </com.google.android.material.tabs.TabLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/layout_advertiser"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tab_layout"
+        tools:visibility="gone">
+
+        <TextView
+            android:id="@+id/text_view_configure_advertising_packet"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="16dp"
+            android:text="@string/configure_advertising_packet"
+            android:textColor="@color/black"
+            android:textSize="21sp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <com.google.android.material.textfield.TextInputLayout
+            android:id="@+id/text_input_layout_display_name"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:inputType="text"
-            android:maxLines="1" />
+            android:hint="@string/display_name"
+            app:layout_constraintTop_toBottomOf="@+id/text_view_configure_advertising_packet">
 
-    </com.google.android.material.textfield.TextInputLayout>
+            <com.google.android.material.textfield.TextInputEditText
+                android:id="@+id/text_input_edit_text_display_name"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:inputType="text"
+                android:maxLines="1" />
 
-    <CheckBox
-        android:id="@+id/check_box_include_device_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="16dp"
-        android:layout_marginTop="8dp"
-        android:text="@string/include_device_name"
-        app:layout_constraintTop_toBottomOf="@+id/text_input_layout_display_name" />
+        </com.google.android.material.textfield.TextInputLayout>
 
-    <CheckBox
-        android:id="@+id/check_box_connectable"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="16dp"
-        android:text="@string/connectable"
-        app:layout_constraintTop_toBottomOf="@+id/check_box_include_device_name" />
+        <CheckBox
+            android:id="@+id/check_box_include_device_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="16dp"
+            android:layout_marginTop="8dp"
+            android:text="@string/include_device_name"
+            app:layout_constraintTop_toBottomOf="@+id/text_input_layout_display_name" />
 
-    <CheckBox
-        android:id="@+id/check_box_discoverable"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="16dp"
-        android:text="@string/discoverable"
-        app:layout_constraintTop_toBottomOf="@+id/check_box_connectable" />
+        <CheckBox
+            android:id="@+id/check_box_connectable"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="16dp"
+            android:text="@string/connectable"
+            app:layout_constraintTop_toBottomOf="@+id/check_box_include_device_name" />
 
-    <TextView
-        android:id="@+id/text_view_advertising_data"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="8dp"
-        android:layout_marginEnd="8dp"
-        android:padding="8dp"
-        android:text="@string/advertising_data"
-        android:textColor="@color/black"
-        android:textSize="21sp"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/check_box_discoverable" />
+        <CheckBox
+            android:id="@+id/check_box_discoverable"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="16dp"
+            android:text="@string/discoverable"
+            app:layout_constraintTop_toBottomOf="@+id/check_box_connectable" />
 
-    <Button
-        android:id="@+id/button_add_data"
-        style="@style/Widget.MaterialComponents.Button.Icon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="8dp"
-        android:text="@string/add_data"
-        app:icon="@drawable/baseline_add_24"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/text_view_advertising_data" />
+        <TextView
+            android:id="@+id/text_view_advertising_data"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
+            android:padding="8dp"
+            android:text="@string/advertising_data"
+            android:textColor="@color/black"
+            android:textSize="21sp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/check_box_discoverable" />
 
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/recycler_view_advertise_data"
+        <Button
+            android:id="@+id/button_add_data"
+            style="@style/Widget.MaterialComponents.Button.Icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="8dp"
+            android:text="@string/add_data"
+            app:icon="@drawable/baseline_add_24"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/text_view_advertising_data" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recycler_view_advertise_data"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            app:layoutManager="LinearLayoutManager"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/button_add_data"
+            tools:itemCount="3"
+            tools:listitem="@layout/item_advertiser_data" />
+
+        <View
+            android:id="@+id/view_recycler_view_overlay"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:clickable="true"
+            android:visibility="gone"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/button_add_data" />
+
+        <Button
+            android:id="@+id/button_advertise"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="16dp"
+            android:text="@string/start_advertising"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/layout_gatt_server"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        app:layoutManager="LinearLayoutManager"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/button_add_data"
-        tools:itemCount="3"
-        tools:listitem="@layout/item_advertiser_data" />
-
-    <View
-        android:id="@+id/view_recycler_view_overlay"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:clickable="true"
         android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/button_add_data" />
+        app:layout_constraintTop_toBottomOf="@+id/tab_layout"
+        tools:visibility="visible">
 
-    <Button
-        android:id="@+id/button_advertise"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        android:text="@string/start_advertising"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
+        <Button
+            android:id="@+id/button_gatt_server"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="16dp"
+            android:text="@string/open_gatt_server"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_scanner.xml b/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_scanner.xml
index 9cf7c3484..dc4f3a1 100644
--- a/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_scanner.xml
+++ b/bluetooth/integration-tests/testapp/src/main/res/layout/fragment_scanner.xml
@@ -37,7 +37,7 @@
     </com.google.android.material.tabs.TabLayout>
 
     <RelativeLayout
-        android:id="@+id/relative_layout_scan_results"
+        android:id="@+id/layout_scan_results"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         app:layout_constraintBottom_toBottomOf="parent"
@@ -64,7 +64,7 @@
     </RelativeLayout>
 
     <LinearLayout
-        android:id="@+id/linear_layout_device"
+        android:id="@+id/layout_device"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:orientation="vertical"
@@ -97,6 +97,18 @@
                 android:visibility="gone"
                 app:indicatorSize="24dp" />
 
+            <View
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_weight="1" />
+
+            <Button
+                android:id="@+id/button_reconnect"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/reconnect"
+                android:visibility="gone" />
+
         </LinearLayout>
 
         <View
diff --git a/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml b/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
index b6a131a..cab9c9f 100644
--- a/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
+++ b/bluetooth/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
@@ -26,6 +26,7 @@
     <string name="stop_scanning">Stop scanning</string>
     <string name="scan_result_icon">Scan Result Icon</string>
     <string name="connect">Connect</string>
+    <string name="reconnect">Reconnect</string>
     <string name="scan_results">Scan Results</string>
     <string name="not_connected">Not Connected</string>
     <string name="connecting">Connecting…</string>
@@ -54,6 +55,11 @@
     <string name="cancel">Cancel</string>
     <string name="clear_data">Clear Data</string>
 
+    <!-- GATT Server -->
+    <string name="gatt_server">Gatt Server</string>
+    <string name="open_gatt_server">Open Gatt Server</string>
+    <string name="stop_gatt_server">Stop Gatt Server</string>
+
     <string name="scan_using_androidx_bluetooth">Scan using AndroidX Bluetooth APIs</string>
     <string name="scan_start_message">Scan started. Results are in Logcat</string>
 
diff --git a/browser/browser/build.gradle b/browser/browser/build.gradle
index de7fa00..195ec5c 100644
--- a/browser/browser/build.gradle
+++ b/browser/browser/build.gradle
@@ -51,8 +51,8 @@
 }
 
 androidx {
-    name = "Android Support Custom Tabs"
+    name = "Browser"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2015"
-    description = "Android Support Custom Tabs"
+    description = "Provides support for embedding Custom Tabs in an app."
 }
diff --git a/buildSrc-tests/max-dep-versions/buildSrc-tests-max-dep-versions-dep/build.gradle b/buildSrc-tests/max-dep-versions/buildSrc-tests-max-dep-versions-dep/build.gradle
index 06e9e6e..eae2213 100644
--- a/buildSrc-tests/max-dep-versions/buildSrc-tests-max-dep-versions-dep/build.gradle
+++ b/buildSrc-tests/max-dep-versions/buildSrc-tests-max-dep-versions-dep/build.gradle
@@ -11,7 +11,7 @@
 }
 
 androidx {
-    name = "Sample Library"
+    name = "Sample"
     publish = Publish.SNAPSHOT_AND_RELEASE
     type = LibraryType.SAMPLES
     inceptionYear = "2020"
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeMultiplatformExtensionImpl.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeMultiplatformExtensionImpl.kt
index 54ccdca..c628d7f 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeMultiplatformExtensionImpl.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeMultiplatformExtensionImpl.kt
@@ -16,11 +16,11 @@
 
 package androidx.build
 
+import javax.inject.Inject
+import org.gradle.api.Project
 import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
 import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType
 import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
-import org.gradle.api.Project
-import javax.inject.Inject
 
 open class AndroidXComposeMultiplatformExtensionImpl @Inject constructor(
     project: Project
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXGradleProperties.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXGradleProperties.kt
index 1640305..cb6ad15 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXGradleProperties.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXGradleProperties.kt
@@ -151,6 +151,18 @@
  */
 const val UPDATE_SIGNATURES = "androidx.update.signatures"
 
+/**
+ * Comma-delimited list of project path prefixes which have been opted-out of the Suppress
+ * Compatibility migration.
+ */
+const val SUPPRESS_COMPATIBILITY_OPT_OUT = "androidx.suppress.compatibility.optout"
+
+/**
+ * Comma-delimited list of project path prefixes which have been opted-in to the Suppress
+ * Compatibility migration.
+ */
+const val SUPPRESS_COMPATIBILITY_OPT_IN = "androidx.suppress.compatibility.optin"
+
 val ALL_ANDROIDX_PROPERTIES = setOf(
     ADD_GROUP_CONSTRAINTS,
     ALTERNATIVE_PROJECT_URL,
@@ -178,7 +190,9 @@
     ALLOW_MISSING_LINT_CHECKS_PROJECT,
     XCODEGEN_DOWNLOAD_URI,
     ALLOW_CUSTOM_COMPILE_SDK,
-    UPDATE_SIGNATURES
+    UPDATE_SIGNATURES,
+    SUPPRESS_COMPATIBILITY_OPT_OUT,
+    SUPPRESS_COMPATIBILITY_OPT_IN,
 )
 
 /**
@@ -285,3 +299,15 @@
         s.toBoolean()
     }.orElse(false)
 }
+
+/**
+ * List of project path prefixes which have been opted-in to the Suppress Compatibility migration.
+ */
+fun Project.getSuppressCompatibilityOptInPathPrefixes(): List<String> =
+    (findProperty(SUPPRESS_COMPATIBILITY_OPT_IN) as? String)?.split(",") ?: emptyList()
+
+/**
+ * List of project path prefixes which have been opted out of the Suppress Compatibility migration.
+ */
+fun Project.getSuppressCompatibilityOptOutPathPrefixes(): List<String> =
+    (findProperty(SUPPRESS_COMPATIBILITY_OPT_OUT) as? String)?.split(",") ?: emptyList()
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
index b8b224c..bb7940d 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
@@ -35,6 +35,8 @@
 import androidx.build.resources.configurePublicResourcesStub
 import androidx.build.sbom.validateAllArchiveInputsRecognized
 import androidx.build.studio.StudioTask
+import androidx.build.testConfiguration.ModuleInfoGenerator
+import androidx.build.testConfiguration.TestModule
 import androidx.build.testConfiguration.addAppApkToTestConfigGeneration
 import androidx.build.testConfiguration.configureTestConfigGeneration
 import com.android.build.api.artifact.SingleArtifact
@@ -227,7 +229,19 @@
         task.inputs.property("ignoreFailures", ignoreFailures)
 
         val xmlReportDestDir = project.getHostTestResultDirectory()
-        val archiveName = "${project.path}:${task.name}.zip"
+        val testName = "${project.path}:${task.name}"
+        project.rootProject.tasks.named("createModuleInfo").configure {
+            it as ModuleInfoGenerator
+            it.testModules.add(
+                TestModule(
+                    name = testName,
+                    path = listOf(
+                        project.projectDir.toRelativeString(project.getSupportRootFolder())
+                    )
+                )
+            )
+        }
+        val archiveName = "$testName.zip"
         if (project.isDisplayTestOutput()) {
             // Enable tracing to see results in command line
             task.testLogging.apply {
@@ -572,6 +586,7 @@
                 extension.type == LibraryType.UNSET
             if (mavenGroup != null && isProbablyPublished && extension.shouldPublish()) {
                 validateProjectStructure(mavenGroup.group)
+                validateProjectMavenName(extension.name.get(), mavenGroup.group)
             }
         }
     }
@@ -1121,46 +1136,6 @@
     return false
 }
 
-private const val GROUP_PREFIX = "androidx."
-
-/**
- * Validates the project structure against Jetpack guidelines.
- */
-fun Project.validateProjectStructure(groupId: String) {
-    if (!project.isValidateProjectStructureEnabled()) {
-        return
-    }
-
-    val shortGroupId = if (groupId.startsWith(GROUP_PREFIX)) {
-        groupId.substring(GROUP_PREFIX.length)
-    } else {
-        groupId
-    }
-
-    // Fully-qualified Gradle project name should match the Maven coordinate.
-    val expectName = ":${shortGroupId.replace(".",":")}:${project.name}"
-    val actualName = project.path
-    if (expectName != actualName) {
-        throw GradleException(
-            "Invalid project structure! Expected $expectName as project name, found $actualName"
-        )
-    }
-
-    // Project directory should match the Maven coordinate.
-    val expectDir = shortGroupId.replace(".", File.separator) +
-        "${File.separator}${project.name}"
-    // Canonical projectDir is needed because sometimes, at least in tests, on OSX, supportRoot
-    // starts with /var, and projectDir starts with /private/var (which are the same thing)
-    val canonicalProjectDir = project.projectDir.canonicalFile
-    val actualDir =
-        canonicalProjectDir.toRelativeString(project.getSupportRootFolder().canonicalFile)
-    if (expectDir != actualDir) {
-        throw GradleException(
-            "Invalid project structure! Expected $expectDir as project directory, found $actualDir"
-        )
-    }
-}
-
 fun Project.validateMultiplatformPluginHasNotBeenApplied() {
     if (plugins.hasPlugin(KotlinMultiplatformPluginWrapper::class.java)) {
         throw GradleException(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
index f6c6252..db8882a 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
@@ -24,8 +24,8 @@
 import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
 import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
 import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
-import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
 import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
 import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
 import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests
 import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
@@ -90,7 +90,7 @@
     fun desktop(
         block: Action<KotlinJvmTarget>? = null
     ): KotlinJvmTarget? {
-        return if (project.enableJvm()) {
+        return if (project.enableDesktop()) {
             kotlinExtension.jvm("desktop") {
                 block?.execute(this)
             }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXPlaygroundRootImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXPlaygroundRootImplPlugin.kt
index 96d19f7..c2c4d54 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXPlaygroundRootImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXPlaygroundRootImplPlugin.kt
@@ -18,12 +18,12 @@
 
 import androidx.build.gradle.isRoot
 import groovy.xml.DOMBuilder
+import java.net.URI
+import java.net.URL
 import org.gradle.api.GradleException
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.artifacts.dsl.RepositoryHandler
-import java.net.URI
-import java.net.URL
 
 /**
  * This plugin is used in Playground projects and adds functionality like resolving to snapshot
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/BuildOnServerTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/BuildOnServerTask.kt
index 006a4fc..5af1390 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/BuildOnServerTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/BuildOnServerTask.kt
@@ -16,15 +16,15 @@
 
 package androidx.build
 
+import java.io.File
+import java.io.FileNotFoundException
 import org.gradle.api.DefaultTask
+import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.InputFiles
 import org.gradle.api.tasks.Internal
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
-import java.io.File
-import java.io.FileNotFoundException
-import org.gradle.api.tasks.CacheableTask
 
 /**
  * Task for building all of Androidx libraries and documentation
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/InspectionRelease.kt b/buildSrc/private/src/main/kotlin/androidx/build/InspectionRelease.kt
index dc38caa..0db92e6 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/InspectionRelease.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/InspectionRelease.kt
@@ -19,10 +19,10 @@
 import androidx.inspection.gradle.InspectionPlugin
 import androidx.inspection.gradle.createConsumeInspectionConfiguration
 import androidx.inspection.gradle.createConsumeNonDexedInspectionConfiguration
+import java.io.File
 import org.gradle.api.Project
 import org.gradle.api.artifacts.Configuration
 import org.gradle.api.tasks.Sync
-import java.io.File
 
 /**
  * Copies artifacts prepared by InspectionPlugin into $destDir/inspection
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/Ktlint.kt b/buildSrc/private/src/main/kotlin/androidx/build/Ktlint.kt
index 7ce68bb..d1319ad 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/Ktlint.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/Ktlint.kt
@@ -79,8 +79,6 @@
 }
 
 private val DisabledRules = listOf(
-    // does not match IJ default ordering
-    "import-ordering",
     // not useful for our projects
     "final-newline",
     // TODO: reenable when https://github.com/pinterest/ktlint/issues/1221 is resolved
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt b/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt
index e2d0e2a..6d9ff9c 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/MavenUploadHelper.kt
@@ -21,7 +21,6 @@
 import com.google.gson.GsonBuilder
 import com.google.gson.JsonObject
 import com.google.gson.stream.JsonWriter
-import org.gradle.api.artifacts.Configuration
 import groovy.util.Node
 import java.io.File
 import java.io.StringReader
@@ -37,6 +36,7 @@
 import org.gradle.api.GradleException
 import org.gradle.api.Project
 import org.gradle.api.XmlProvider
+import org.gradle.api.artifacts.Configuration
 import org.gradle.api.component.ComponentWithVariants
 import org.gradle.api.component.SoftwareComponent
 import org.gradle.api.component.SoftwareComponentFactory
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/ProjectConfigValidators.kt b/buildSrc/private/src/main/kotlin/androidx/build/ProjectConfigValidators.kt
new file mode 100644
index 0000000..bbe7f2a
--- /dev/null
+++ b/buildSrc/private/src/main/kotlin/androidx/build/ProjectConfigValidators.kt
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.build
+
+import java.io.File
+import org.gradle.api.GradleException
+import org.gradle.api.Project
+
+// Translate common phrases and marketing names into Maven name component equivalents.
+private val mavenNameMap = mapOf(
+    "android for cars" to "car",
+    "android wear" to "wear",
+    "internationalization" to "i18n",
+    "kotlin extensions" to "ktx",
+    "lint checks" to "lint",
+    "material components" to "material",
+    "material3 components" to "material3",
+    "workmanager" to "work",
+    "windowmanager" to "window",
+)
+
+// Allow a small set of common Maven name components that don't need to appear in the project name.
+private val mavenNameAllowlist = setOf(
+    "extension",
+    "extensions",
+    "for",
+    "integration",
+    "with",
+)
+
+/**
+ * Validates the project's Maven name against Jetpack guidelines.
+ */
+fun Project.validateProjectMavenName(mavenName: String?, groupId: String) {
+    if (mavenName == null) return
+
+    // Tokenize the Maven name into components. This is *very* permissive regarding separators, and
+    // we may want to revisit that policy in the future.
+    val nameComponents = mavenName.lowercase().let { name ->
+        mavenNameMap.entries.fold(name) { newName, entry ->
+            newName.replace(entry.key, entry.value)
+        }
+    }.split(" ", ",", ":", "-").toMutableList() - mavenNameAllowlist
+
+    // Remaining components *must* appear in the Maven coordinate. Shortening long (>10 char) words
+    // to five letters or more is allowed, as is changing the pluralization of words.
+    nameComponents.find { nameComponent ->
+        !name.contains(nameComponent) && !groupId.contains(nameComponent) &&
+            !(nameComponent.length > 10 && name.contains(nameComponent.substring(0, 5))) &&
+            !(nameComponent.endsWith("s") && name.contains(nameComponent.dropLast(1)))
+    }?.let { missingComponent ->
+        throw GradleException(
+            "Invalid Maven name! Found \"$missingComponent\" in Maven name for $displayName, but " +
+                "not project name.\n\nConsider removing \"$missingComponent\" from \"$mavenName\"."
+        )
+    }
+}
+
+private const val GROUP_PREFIX = "androidx."
+
+/**
+ * Validates the project structure against Jetpack guidelines.
+ */
+fun Project.validateProjectStructure(groupId: String) {
+    if (!project.isValidateProjectStructureEnabled()) {
+        return
+    }
+
+    val shortGroupId = if (groupId.startsWith(GROUP_PREFIX)) {
+        groupId.substring(GROUP_PREFIX.length)
+    } else {
+        groupId
+    }
+
+    // Fully-qualified Gradle project name should match the Maven coordinate.
+    val expectName = ":${shortGroupId.replace(".",":")}:${project.name}"
+    val actualName = project.path
+    if (expectName != actualName) {
+        throw GradleException(
+            "Invalid project structure! Expected $expectName as project name, found $actualName"
+        )
+    }
+
+    // Project directory should match the Maven coordinate.
+    val expectDir = shortGroupId.replace(".", File.separator) +
+        "${File.separator}${project.name}"
+    // Canonical projectDir is needed because sometimes, at least in tests, on OSX, supportRoot
+    // starts with /var, and projectDir starts with /private/var (which are the same thing)
+    val canonicalProjectDir = project.projectDir.canonicalFile
+    val actualDir =
+        canonicalProjectDir.toRelativeString(project.getSupportRootFolder().canonicalFile)
+    if (expectDir != actualDir) {
+        throw GradleException(
+            "Invalid project structure! Expected $expectDir as project directory, found $actualDir"
+        )
+    }
+}
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/ProjectExt.kt b/buildSrc/private/src/main/kotlin/androidx/build/ProjectExt.kt
index 8dcfd8d..5c6a88c 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/ProjectExt.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/ProjectExt.kt
@@ -15,12 +15,12 @@
  */
 package androidx.build
 
-import org.gradle.api.Project
-import org.gradle.api.Task
-import org.gradle.api.tasks.TaskProvider
 import java.util.Collections
 import java.util.concurrent.locks.ReentrantLock
 import kotlin.concurrent.withLock
+import org.gradle.api.Project
+import org.gradle.api.Task
+import org.gradle.api.tasks.TaskProvider
 
 /**
  * Holder class used for lazily registering tasks using the new Lazy task execution API.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/ProjectParser.kt b/buildSrc/private/src/main/kotlin/androidx/build/ProjectParser.kt
index f12cbd1..9bf82ea 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/ProjectParser.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/ProjectParser.kt
@@ -16,13 +16,12 @@
 
 package androidx.build
 
+import java.io.File
 import java.util.concurrent.ConcurrentHashMap
 import org.gradle.api.Project
 import org.gradle.api.services.BuildService
 import org.gradle.api.services.BuildServiceParameters
 
-import java.io.File
-
 abstract class ProjectParser : BuildService<BuildServiceParameters.None> {
     @Transient
     val cache: MutableMap<File, ParsedProject> = ConcurrentHashMap()
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/Release.kt b/buildSrc/private/src/main/kotlin/androidx/build/Release.kt
index ea56dcb..d6e9baf 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/Release.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/Release.kt
@@ -17,6 +17,9 @@
 
 import androidx.build.uptodatedness.cacheEvenIfNoOutputs
 import com.android.build.gradle.LibraryExtension
+import java.io.File
+import java.io.FileNotFoundException
+import java.util.Locale
 import org.gradle.api.Action
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
@@ -30,9 +33,6 @@
 import org.gradle.api.tasks.bundling.Zip
 import org.gradle.plugin.devel.GradlePluginDevelopmentExtension
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
-import java.io.FileNotFoundException
-import java.util.Locale
 
 /**
  * Simple description for an artifact that is released from this project.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt b/buildSrc/private/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
index 35ea471..45894a5 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
@@ -17,9 +17,13 @@
 package androidx.build
 
 import androidx.build.dokka.kmpDocs.DokkaAnalysisPlatform
+import androidx.build.dokka.kmpDocs.docsPlatform
 import com.android.build.gradle.LibraryExtension
 import com.google.gson.GsonBuilder
 import java.io.File
+import java.util.Locale
+import org.gradle.api.DefaultTask
+import org.gradle.api.GradleException
 import org.gradle.api.Project
 import org.gradle.api.artifacts.Configuration
 import org.gradle.api.attributes.Bundling
@@ -29,22 +33,18 @@
 import org.gradle.api.component.AdhocComponentWithVariants
 import org.gradle.api.file.DuplicatesStrategy
 import org.gradle.api.plugins.JavaPluginExtension
+import org.gradle.api.tasks.CacheableTask
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.OutputFile
+import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Jar
 import org.gradle.kotlin.dsl.extra
 import org.gradle.kotlin.dsl.named
 import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
 import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
-import java.util.Locale
-import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
 import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
-import androidx.build.dokka.kmpDocs.docsPlatform
-import org.gradle.api.DefaultTask
-import org.gradle.api.GradleException
-import org.gradle.api.tasks.CacheableTask
-import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.OutputFile
-import org.gradle.api.tasks.TaskAction
+import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
 
 /**
  * Sets up a source jar task for an Android library project.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
index 3cb172a..fcbd5cb 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
@@ -24,11 +24,11 @@
 import org.gradle.api.artifacts.Dependency
 import org.gradle.api.provider.Property
 import org.gradle.api.provider.SetProperty
+import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.kotlin.dsl.setProperty
-import org.gradle.api.tasks.CacheableTask
 
 /**
  * Task for verifying the androidx dependency-stability-suffix rule
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/VerifyVersionFilesTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/VerifyVersionFilesTask.kt
index 14eacb9..da12c90 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/VerifyVersionFilesTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/VerifyVersionFilesTask.kt
@@ -16,16 +16,16 @@
 
 package androidx.build
 
-import org.gradle.api.DefaultTask
-import org.gradle.api.tasks.InputDirectory
-import org.gradle.api.tasks.PathSensitive
-import org.gradle.api.tasks.PathSensitivity
-import org.gradle.api.tasks.TaskAction
 import java.io.File
 import java.io.FileInputStream
 import java.util.zip.ZipEntry
 import java.util.zip.ZipInputStream
+import org.gradle.api.DefaultTask
 import org.gradle.api.tasks.CacheableTask
+import org.gradle.api.tasks.InputDirectory
+import org.gradle.api.tasks.PathSensitive
+import org.gradle.api.tasks.PathSensitivity
+import org.gradle.api.tasks.TaskAction
 
 /**
  * Task for verifying version files in Androidx artifacts
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/VersionFileWriterTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/VersionFileWriterTask.kt
index 328350a..ba29911 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/VersionFileWriterTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/VersionFileWriterTask.kt
@@ -17,6 +17,8 @@
 package androidx.build
 
 import com.android.build.gradle.LibraryExtension
+import java.io.File
+import java.io.PrintWriter
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
 import org.gradle.api.file.DirectoryProperty
@@ -25,8 +27,6 @@
 import org.gradle.api.tasks.OutputDirectory
 import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
-import java.io.PrintWriter
 
 /**
  * Task that allows to write a version to a given output file.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt b/buildSrc/private/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt
index 0f22c64..535e820 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/checkapi/ApiLocation.kt
@@ -16,12 +16,11 @@
 
 package androidx.build.checkapi
 
-import java.io.File
-
 import androidx.build.Version
 import androidx.build.version
-import org.gradle.api.Project
+import java.io.File
 import java.io.Serializable
+import org.gradle.api.Project
 
 /**
  * Contains information about the files used to record a library's API surfaces. This class may
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/checkapi/CheckApi.kt b/buildSrc/private/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
index 9fec2fd..fdec904 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/checkapi/CheckApi.kt
@@ -19,12 +19,12 @@
 import androidx.build.Version
 import androidx.build.checkapi.ApiLocation.Companion.isResourceApiFilename
 import androidx.build.version
-import org.gradle.api.GradleException
-import org.gradle.api.Project
 import java.io.File
 import java.nio.file.Files
 import java.nio.file.Path
 import kotlin.io.path.name
+import org.gradle.api.GradleException
+import org.gradle.api.Project
 
 enum class ApiType {
     CLASSAPI,
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/BuildPropParser.kt b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/BuildPropParser.kt
index 5bd14ff1..f851099 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/BuildPropParser.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/BuildPropParser.kt
@@ -16,8 +16,8 @@
 
 package androidx.build.dependencyTracker
 
-import org.gradle.api.logging.Logger
 import java.io.File
+import org.gradle.api.logging.Logger
 
 /**
  * Utility class that can parse build.prop files and extract the sha's for frameworks/support.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/FileLogger.kt b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/FileLogger.kt
index 6bc5a7c..6bd3a1c 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/FileLogger.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/FileLogger.kt
@@ -16,14 +16,13 @@
 
 package androidx.build.dependencyTracker
 
+import java.io.File
+import java.io.Serializable
 import org.gradle.api.logging.LogLevel
 import org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger
 import org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext
 import org.gradle.internal.time.Clock
 
-import java.io.File
-import java.io.Serializable
-
 /**
  * Gradle logger that logs to a file
  */
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/ProjectGraph.kt b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/ProjectGraph.kt
index bdb408c..8472eeb 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/ProjectGraph.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/ProjectGraph.kt
@@ -17,10 +17,9 @@
 package androidx.build.dependencyTracker
 
 import androidx.build.getSupportRootFolder
-import org.gradle.api.Project
 import java.io.File
-
 import java.io.Serializable
+import org.gradle.api.Project
 import org.gradle.api.logging.Logger
 
 /**
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXDocsImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXDocsImplPlugin.kt
index 25452de..21b7fdd 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXDocsImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXDocsImplPlugin.kt
@@ -18,7 +18,6 @@
 
 import androidx.build.PROJECT_STRUCTURE_METADATA_FILENAME
 import androidx.build.SupportConfig
-import androidx.build.multiplatformUsage
 import androidx.build.dackka.DackkaTask
 import androidx.build.dackka.GenerateMetadataTask
 import androidx.build.dependencies.KOTLIN_VERSION
@@ -29,6 +28,7 @@
 import androidx.build.getDistributionDirectory
 import androidx.build.getKeystore
 import androidx.build.getLibraryByName
+import androidx.build.multiplatformUsage
 import com.android.build.api.attributes.BuildTypeAttr
 import com.android.build.gradle.LibraryExtension
 import com.android.build.gradle.LibraryPlugin
@@ -61,10 +61,10 @@
 import org.gradle.api.provider.Provider
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Classpath
-import org.gradle.api.tasks.OutputDirectory
 import org.gradle.api.tasks.InputFiles
-import org.gradle.api.tasks.OutputFile
 import org.gradle.api.tasks.Internal
+import org.gradle.api.tasks.OutputDirectory
+import org.gradle.api.tasks.OutputFile
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.Sync
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitClient.kt b/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitClient.kt
index 4cdaa21..9b1ecee 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitClient.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitClient.kt
@@ -21,8 +21,8 @@
 import java.io.File
 import org.gradle.api.GradleException
 import org.gradle.api.Project
-import org.gradle.api.provider.Provider
 import org.gradle.api.logging.Logger
+import org.gradle.api.provider.Provider
 
 interface GitClient {
     fun findChangedFilesSince(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitRunnerGitClient.kt b/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitRunnerGitClient.kt
index 2be38e2..2057187 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitRunnerGitClient.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/gitclient/GitRunnerGitClient.kt
@@ -16,9 +16,9 @@
 
 package androidx.build.gitclient
 
-import org.gradle.api.logging.Logger
 import java.io.File
 import java.util.concurrent.TimeUnit
+import org.gradle.api.logging.Logger
 
 /**
  * A simple git client that uses system process commands to communicate with the git setup in the
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiCompatibilityTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiCompatibilityTask.kt
index c176f11..15b77b7 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiCompatibilityTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiCompatibilityTask.kt
@@ -18,6 +18,9 @@
 
 import androidx.build.OperatingSystem
 import androidx.build.getOperatingSystem
+import java.io.ByteArrayOutputStream
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.DefaultTask
 import org.gradle.api.provider.ListProperty
 import org.gradle.api.provider.Property
@@ -34,9 +37,6 @@
 import org.gradle.workers.WorkParameters
 import org.gradle.workers.WorkerExecutionException
 import org.gradle.workers.WorkerExecutor
-import java.io.ByteArrayOutputStream
-import java.io.File
-import javax.inject.Inject
 
 /**
  * Task which depends on [GenerateNativeApiTask] and compares the current native API from the build
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiEquivalenceTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiEquivalenceTask.kt
index 6ca2b8d..d6e5964 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiEquivalenceTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/CheckNativeApiEquivalenceTask.kt
@@ -17,6 +17,7 @@
 package androidx.build.libabigail
 
 import androidx.build.metalava.checkEqual
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.provider.ListProperty
 import org.gradle.api.provider.Property
@@ -27,7 +28,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
 
 /**
  * Checks that the native API files in the build folder are exactly the same as the checked in
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/GenerateNativeApiTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/GenerateNativeApiTask.kt
index 41194e3..ad4c23f 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/GenerateNativeApiTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/GenerateNativeApiTask.kt
@@ -18,6 +18,8 @@
 
 import androidx.build.OperatingSystem
 import androidx.build.getOperatingSystem
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
 import org.gradle.api.provider.ListProperty
@@ -33,8 +35,6 @@
 import org.gradle.workers.WorkAction
 import org.gradle.workers.WorkParameters
 import org.gradle.workers.WorkerExecutor
-import java.io.File
-import javax.inject.Inject
 
 private const val ARCH_PREFIX = "android."
 internal val architectures = listOf("arm64-v8a", "armeabi-v7a", "x86", "x86_64")
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/NativeApiTasks.kt b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/NativeApiTasks.kt
index 43f03ba..9101dc7 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/NativeApiTasks.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/NativeApiTasks.kt
@@ -21,8 +21,8 @@
 import androidx.build.checkapi.getRequiredCompatibilityApiLocation
 import androidx.build.uptodatedness.cacheEvenIfNoOutputs
 import com.android.build.gradle.LibraryExtension
-import org.gradle.api.Project
 import java.io.File
+import org.gradle.api.Project
 
 /**
  * Adds native API generation / updating / checking tasks to a project.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/UpdateNativeApi.kt b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/UpdateNativeApi.kt
index 4e46a2d..b430e48 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/libabigail/UpdateNativeApi.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/libabigail/UpdateNativeApi.kt
@@ -18,6 +18,7 @@
 
 import androidx.build.OperatingSystem
 import androidx.build.getOperatingSystem
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.provider.ListProperty
 import org.gradle.api.provider.Property
@@ -28,7 +29,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
 
 /**
  * Task which depends on `[GenerateNativeApiTask] and takes the generated native API files from the
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
index c376ead..0b4c852 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
@@ -20,6 +20,8 @@
 import androidx.build.checkapi.ApiLocation
 import androidx.build.logging.TERMINAL_RED
 import androidx.build.logging.TERMINAL_RESET
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.provider.Property
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.InputFiles
@@ -28,8 +30,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.workers.WorkerExecutor
-import java.io.File
-import javax.inject.Inject
 
 /**
  * This task validates that the API described in one signature txt file is compatible with the API
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiEquivalenceTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiEquivalenceTask.kt
index d827a8d..b6e287d 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiEquivalenceTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/CheckApiEquivalenceTask.kt
@@ -17,6 +17,8 @@
 package androidx.build.metalava
 
 import androidx.build.checkapi.ApiLocation
+import java.io.File
+import java.util.concurrent.TimeUnit
 import org.apache.commons.io.FileUtils
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
@@ -28,8 +30,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
-import java.util.concurrent.TimeUnit
 
 /** Compares two API txt files against each other. */
 @DisableCachingByDefault(because = "Doesn't benefit from caching")
@@ -46,6 +46,9 @@
     @get:Input
     abstract val checkedInApis: ListProperty<ApiLocation>
 
+    @get:Input
+    abstract val optedInToSuppressCompatibilityMigration: Property<Boolean>
+
     @InputFiles @PathSensitive(PathSensitivity.RELATIVE)
     fun getTaskInputs(): List<File> {
         val checkedInApiLocations = checkedInApis.get()
@@ -75,7 +78,9 @@
         for (checkedInApi in checkedInApis.get()) {
             checkEqual(checkedInApi.publicApiFile, builtApiLocation.publicApiFile)
             checkEqual(checkedInApi.removedApiFile, builtApiLocation.removedApiFile)
-            checkEqual(checkedInApi.experimentalApiFile, builtApiLocation.experimentalApiFile)
+            if (!optedInToSuppressCompatibilityMigration.get()) {
+                checkEqual(checkedInApi.experimentalApiFile, builtApiLocation.experimentalApiFile)
+            }
             checkEqual(checkedInApi.restrictedApiFile, builtApiLocation.restrictedApiFile)
         }
     }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiStubClassesTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiStubClassesTask.kt
index 659d191..0c68fc9 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiStubClassesTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiStubClassesTask.kt
@@ -16,13 +16,13 @@
 
 package androidx.build.metalava
 
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.file.DirectoryProperty
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.OutputDirectory
 import org.gradle.api.tasks.TaskAction
 import org.gradle.workers.WorkerExecutor
-import java.io.File
-import javax.inject.Inject
 
 @CacheableTask
 abstract class GenerateApiStubClassesTask @Inject constructor(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
index f087b00..d5dd0dc 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/GenerateApiTask.kt
@@ -19,6 +19,8 @@
 import androidx.build.checkapi.ApiBaselinesLocation
 import androidx.build.checkapi.ApiLocation
 import androidx.build.java.JavaCompileInputs
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.provider.Property
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Input
@@ -30,8 +32,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.workers.WorkerExecutor
-import java.io.File
-import javax.inject.Inject
 
 /** Generate an API signature text file from a set of source files. */
 @CacheableTask
@@ -88,6 +88,7 @@
             generateRestrictToLibraryGroupAPIs,
             k2UastEnabled.get(),
             workerExecutor,
+            optedInToSuppressCompatibilityMigration.get(),
             manifestPath.orNull?.asFile?.absolutePath
         )
     }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
index 8832acb..3ee677b 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
@@ -40,9 +40,10 @@
     metalavaClasspath: FileCollection,
     args: List<String>,
     k2UastEnabled: Boolean,
-    workerExecutor: WorkerExecutor
+    workerExecutor: WorkerExecutor,
+    isOptedInToSuppressCompatibilityMigration: Boolean,
 ) {
-    val allArgs = listOf(
+    val allArgs = mutableListOf(
         "--no-banner",
         "--hide",
         "HiddenSuperclass", // We allow having a hidden parent class
@@ -51,7 +52,11 @@
         "UnresolvedImport",
 
         "--delete-empty-removed-signatures"
-    ) + args
+    )
+    allArgs += args
+    if (isOptedInToSuppressCompatibilityMigration) {
+        allArgs += SUPPRESS_COMPATIBILITY_ARGS
+    }
     val workQueue = workerExecutor.processIsolation()
     workQueue.submit(MetalavaWorkAction::class.java) { parameters ->
         parameters.args.set(allArgs)
@@ -120,6 +125,12 @@
     "--hide-meta-annotation", "kotlin.RequiresOptIn",
 )
 
+// Metalava arguments to suppress compatibility checks for experimental API surfaces.
+val SUPPRESS_COMPATIBILITY_ARGS: List<String> = listOf(
+    "--suppress-compatibility-meta-annotation", "androidx.annotation.RequiresOptIn",
+    "--suppress-compatibility-meta-annotation", "kotlin.RequiresOptIn",
+)
+
 fun getApiLintArgs(targetsJavaConsumers: Boolean): List<String> {
     val args = mutableListOf(
         "--api-lint",
@@ -208,30 +219,42 @@
     includeRestrictToLibraryGroupApis: Boolean,
     k2UastEnabled: Boolean,
     workerExecutor: WorkerExecutor,
-    pathToManifest: String? = null
+    isOptedInToSuppressCompatibilityMigration: Boolean,
+    pathToManifest: String? = null,
 ) {
-    // API lint runs on the experimental pass, which also includes public API. This means API lint
-    // can safely be skipped on the public pass.
-    generateApi(
-        metalavaClasspath, files.bootClasspath, files.dependencyClasspath, files.sourcePaths.files,
-        apiLocation, GenerateApiMode.PublicApi, ApiLintMode.Skip, k2UastEnabled, workerExecutor,
-        pathToManifest
-    )
-    generateApi(
-        metalavaClasspath, files.bootClasspath, files.dependencyClasspath, files.sourcePaths.files,
-        apiLocation, GenerateApiMode.ExperimentalApi, apiLintMode, k2UastEnabled, workerExecutor,
-        pathToManifest
-    )
+    val generateApiConfigs: MutableList<Pair<GenerateApiMode, ApiLintMode>> = mutableListOf()
 
-    val restrictedAPIMode = if (includeRestrictToLibraryGroupApis) {
-        GenerateApiMode.AllRestrictedApis
+    if (isOptedInToSuppressCompatibilityMigration) {
+        generateApiConfigs += GenerateApiMode.PublicApi to apiLintMode
     } else {
-        GenerateApiMode.RestrictToLibraryGroupPrefixApis
+        // API lint runs on the experimental pass, which also includes public API. This means API
+        // lint can safely be skipped on the public pass.
+        generateApiConfigs += GenerateApiMode.PublicApi to ApiLintMode.Skip
+        generateApiConfigs += GenerateApiMode.ExperimentalApi to apiLintMode
     }
-    generateApi(
-        metalavaClasspath, files.bootClasspath, files.dependencyClasspath, files.sourcePaths.files,
-        apiLocation, restrictedAPIMode, ApiLintMode.Skip, k2UastEnabled, workerExecutor
-    )
+
+    @Suppress("LiftReturnOrAssignment")
+    if (includeRestrictToLibraryGroupApis) {
+        generateApiConfigs += GenerateApiMode.AllRestrictedApis to ApiLintMode.Skip
+    } else {
+        generateApiConfigs += GenerateApiMode.RestrictToLibraryGroupPrefixApis to ApiLintMode.Skip
+    }
+
+    generateApiConfigs.forEach { (generateApiMode, apiLintMode) ->
+        generateApi(
+            metalavaClasspath,
+            files.bootClasspath,
+            files.dependencyClasspath,
+            files.sourcePaths.files,
+            apiLocation,
+            generateApiMode,
+            apiLintMode,
+            k2UastEnabled,
+            workerExecutor,
+            isOptedInToSuppressCompatibilityMigration,
+            pathToManifest
+        )
+    }
 }
 
 // Gets arguments for generating the specified api file
@@ -245,13 +268,15 @@
     apiLintMode: ApiLintMode,
     k2UastEnabled: Boolean,
     workerExecutor: WorkerExecutor,
+    isOptedInToSuppressCompatibilityMigration: Boolean,
     pathToManifest: String? = null
 ) {
     val args = getGenerateApiArgs(
-        bootClasspath, dependencyClasspath, sourcePaths, outputLocation,
-        generateApiMode, apiLintMode, pathToManifest
+        bootClasspath, dependencyClasspath, sourcePaths, outputLocation, generateApiMode,
+        apiLintMode, isOptedInToSuppressCompatibilityMigration, pathToManifest
     )
-    runMetalavaWithArgs(metalavaClasspath, args, k2UastEnabled, workerExecutor)
+    runMetalavaWithArgs(metalavaClasspath, args, k2UastEnabled, workerExecutor,
+        isOptedInToSuppressCompatibilityMigration)
 }
 
 // Generates the specified api file
@@ -262,6 +287,7 @@
     outputLocation: ApiLocation?,
     generateApiMode: GenerateApiMode,
     apiLintMode: ApiLintMode,
+    isOptedInToSuppressCompatibilityMigration: Boolean,
     pathToManifest: String? = null
 ): List<String> {
     // generate public API txt
@@ -299,7 +325,9 @@
 
     when (generateApiMode) {
         is GenerateApiMode.PublicApi -> {
-            args += HIDE_EXPERIMENTAL_ARGS
+            if (!isOptedInToSuppressCompatibilityMigration) {
+                args += HIDE_EXPERIMENTAL_ARGS
+            }
             args += listOf(
                 "--hide-annotation", "androidx.annotation.RestrictTo"
             )
@@ -335,7 +363,9 @@
                         "LIBRARY_GROUP)"
                 )
             }
-            args += HIDE_EXPERIMENTAL_ARGS
+            if (!isOptedInToSuppressCompatibilityMigration) {
+                args += HIDE_EXPERIMENTAL_ARGS
+            }
         }
         is GenerateApiMode.ExperimentalApi -> {
             args += listOf(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTask.kt
index 3b87d7e..a4b1af1 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTask.kt
@@ -16,12 +16,15 @@
 
 package androidx.build.metalava
 
+import javax.inject.Inject
 import org.gradle.api.DefaultTask
 import org.gradle.api.file.ConfigurableFileCollection
 import org.gradle.api.file.FileCollection
 import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.Property
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Classpath
+import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.InputFile
 import org.gradle.api.tasks.InputFiles
 import org.gradle.api.tasks.Internal
@@ -29,9 +32,6 @@
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.workers.WorkerExecutor
-import javax.inject.Inject
-import org.gradle.api.provider.Property
-import org.gradle.api.tasks.Input
 
 /** Base class for invoking Metalava. */
 @CacheableTask
@@ -61,7 +61,11 @@
     @get:Input
     abstract val k2UastEnabled: Property<Boolean>
 
+    @get:Input
+    abstract val optedInToSuppressCompatibilityMigration: Property<Boolean>
+
     fun runWithArgs(args: List<String>) {
-        runMetalavaWithArgs(metalavaClasspath, args, k2UastEnabled.get(), workerExecutor)
+        runMetalavaWithArgs(metalavaClasspath, args, k2UastEnabled.get(), workerExecutor,
+            optedInToSuppressCompatibilityMigration.get())
     }
 }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
index c9a77af..c8458bc 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
@@ -17,11 +17,14 @@
 package androidx.build.metalava
 
 import androidx.build.AndroidXExtension
+import androidx.build.ProjectLayoutType.Companion.isPlayground
 import androidx.build.addToBuildOnServer
 import androidx.build.addToCheckTask
 import androidx.build.checkapi.ApiBaselinesLocation
 import androidx.build.checkapi.ApiLocation
 import androidx.build.checkapi.getRequiredCompatibilityApiLocation
+import androidx.build.getSuppressCompatibilityOptInPathPrefixes
+import androidx.build.getSuppressCompatibilityOptOutPathPrefixes
 import androidx.build.java.JavaCompileInputs
 import androidx.build.uptodatedness.cacheEvenIfNoOutputs
 import com.android.build.gradle.tasks.ProcessLibraryManifest
@@ -56,6 +59,9 @@
             task.baselines.set(baselinesApiLocation)
             task.targetsJavaConsumers = extension.targetsJavaConsumers
             task.k2UastEnabled.set(extension.metalavaK2UastEnabled)
+            task.optedInToSuppressCompatibilityMigration.set(
+                project.isOptedInToSuppressCompatibilityMigration()
+            )
             processManifest?.let {
                 task.manifestPath.set(processManifest.manifestOutputFile)
             }
@@ -82,6 +88,9 @@
                 task.dependencyClasspath = javaCompileInputs.dependencyClasspath
                 task.bootClasspath = javaCompileInputs.bootClasspath
                 task.k2UastEnabled.set(extension.metalavaK2UastEnabled)
+                task.optedInToSuppressCompatibilityMigration.set(
+                    project.isOptedInToSuppressCompatibilityMigration()
+                )
                 task.cacheEvenIfNoOutputs()
                 task.dependsOn(generateApi)
             }
@@ -97,6 +106,9 @@
                 task.dependencyClasspath = javaCompileInputs.dependencyClasspath
                 task.bootClasspath = javaCompileInputs.bootClasspath
                 task.k2UastEnabled.set(extension.metalavaK2UastEnabled)
+                task.optedInToSuppressCompatibilityMigration.set(
+                    project.isOptedInToSuppressCompatibilityMigration()
+                )
                 task.dependsOn(generateApi)
             }
         }
@@ -109,6 +121,9 @@
             task.baselines.set(baselinesApiLocation)
             task.targetsJavaConsumers.set(extension.targetsJavaConsumers)
             task.k2UastEnabled.set(extension.metalavaK2UastEnabled)
+            task.optedInToSuppressCompatibilityMigration.set(
+                project.isOptedInToSuppressCompatibilityMigration()
+            )
             processManifest?.let {
                 task.manifestPath.set(processManifest.manifestOutputFile)
             }
@@ -126,6 +141,9 @@
                 task.builtApi.set(generateApi.flatMap { it.apiLocation })
                 task.cacheEvenIfNoOutputs()
                 task.checkedInApis.set(outputApiLocations)
+                task.optedInToSuppressCompatibilityMigration.set(
+                    project.isOptedInToSuppressCompatibilityMigration()
+                )
                 task.dependsOn(generateApi)
                 checkApiRelease?.let {
                     task.dependsOn(checkApiRelease)
@@ -140,6 +158,9 @@
             task.description = "Regenerates historic API .txt files using the " +
                 "corresponding prebuilt and the latest Metalava"
             task.generateRestrictToLibraryGroupAPIs = generateRestrictToLibraryGroupAPIs
+            task.optedInToSuppressCompatibilityMigration.set(
+                project.isOptedInToSuppressCompatibilityMigration()
+            )
         }
 
         // ignoreApiChanges depends on the output of this task for the "last released" API
@@ -188,3 +209,19 @@
         task.bootClasspath = inputs.bootClasspath
     }
 }
+
+/**
+ * Returns whether the project has been opted-in to the Suppress Compatibility migration.
+ */
+internal fun Project.isOptedInToSuppressCompatibilityMigration(): Boolean {
+    val dir = if (isPlayground(project)) {
+        "${rootProject.projectDir.name}/"
+    } else {
+        ""
+    } + "${projectDir.relativeTo(rootDir)}/"
+    return getSuppressCompatibilityOptOutPathPrefixes().none { pathPrefix ->
+        dir.startsWith(pathPrefix)
+    } && getSuppressCompatibilityOptInPathPrefixes().any { pathPrefix ->
+        dir.startsWith(pathPrefix)
+    }
+}
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt
index 139541e..07ee0ec 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/RegenerateOldApisTask.kt
@@ -23,17 +23,18 @@
 import androidx.build.getAndroidJar
 import androidx.build.getCheckoutRoot
 import androidx.build.java.JavaCompileInputs
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
 import org.gradle.api.file.FileCollection
 import org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration
+import org.gradle.api.provider.Property
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.util.PatternFilterable
 import org.gradle.workers.WorkerExecutor
-import java.io.File
-import javax.inject.Inject
 
 /** Generate API signature text files using previously built .jar/.aar artifacts. */
 @CacheableTask
@@ -44,6 +45,9 @@
     @Input
     var generateRestrictToLibraryGroupAPIs = true
 
+    @get:Input
+    abstract val optedInToSuppressCompatibilityMigration: Property<Boolean>
+
     @TaskAction
     fun exec() {
         val groupId = project.group.toString()
@@ -60,7 +64,8 @@
             // If two artifacts correspond to the same API file, don't regenerate the
             // same api file again
             if (apiFileVersion != prevApiFileVersion) {
-                regenerate(project.rootProject, groupId, artifactId, artifactVersion)
+                regenerate(project.rootProject, groupId, artifactId, artifactVersion,
+                    optedInToSuppressCompatibilityMigration.get())
                 prevApiFileVersion = apiFileVersion
             }
         }
@@ -80,7 +85,8 @@
         runnerProject: Project,
         groupId: String,
         artifactId: String,
-        version: Version
+        version: Version,
+        isOptedInToSuppressCompatibilityMigration: Boolean,
     ) {
         val mavenId = "$groupId:$artifactId:$version"
         val inputs: JavaCompileInputs?
@@ -96,7 +102,8 @@
             project.logger.lifecycle("Regenerating $mavenId")
             generateApi(
                 project.getMetalavaClasspath(), inputs, outputApiLocation, ApiLintMode.Skip,
-                generateRestrictToLibraryGroupAPIs, false, workerExecutor
+                generateRestrictToLibraryGroupAPIs, false, workerExecutor,
+                isOptedInToSuppressCompatibilityMigration
             )
         }
     }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt b/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
index 43dbc6e..d0766e1 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/metalava/UpdateBaselineTasks.kt
@@ -18,6 +18,8 @@
 
 import androidx.build.checkapi.ApiBaselinesLocation
 import androidx.build.checkapi.ApiLocation
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.file.FileCollection
 import org.gradle.api.provider.Property
 import org.gradle.api.tasks.CacheableTask
@@ -29,8 +31,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.workers.WorkerExecutor
-import java.io.File
-import javax.inject.Inject
 
 @CacheableTask
 abstract class UpdateApiLintBaselineTask @Inject constructor(
@@ -58,10 +58,17 @@
     fun updateBaseline() {
         check(bootClasspath.files.isNotEmpty()) { "Android boot classpath not set." }
         val baselineFile = baselines.get().apiLintFile
+        val generateApiMode = if (optedInToSuppressCompatibilityMigration.get()) {
+            GenerateApiMode.PublicApi
+        } else {
+            GenerateApiMode.ExperimentalApi
+        }
         val checkArgs = getGenerateApiArgs(
             bootClasspath, dependencyClasspath,
-            sourcePaths.files.filter { it.exists() }, null, GenerateApiMode.ExperimentalApi,
+            sourcePaths.files.filter { it.exists() }, null,
+            generateApiMode,
             ApiLintMode.CheckBaseline(baselineFile, targetsJavaConsumers.get()),
+            optedInToSuppressCompatibilityMigration.get(),
             manifestPath.orNull?.asFile?.absolutePath
         )
         val args = checkArgs + getCommonBaselineUpdateArgs(baselineFile)
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt
index 8137fdd..892e691 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/paparazzi/AndroidXPaparazziImplPlugin.kt
@@ -35,8 +35,8 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.testing.Test
 import org.gradle.kotlin.dsl.get
-import org.gradle.kotlin.dsl.the
 import org.gradle.kotlin.dsl.register
+import org.gradle.kotlin.dsl.the
 import org.gradle.kotlin.dsl.withType
 import org.gradle.process.JavaForkOptions
 
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiReleaseTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiReleaseTask.kt
index 8091f1a..df32518 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiReleaseTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiReleaseTask.kt
@@ -17,6 +17,7 @@
 package androidx.build.resources
 
 import androidx.build.checkapi.ApiLocation
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
 import org.gradle.api.provider.Property
@@ -27,7 +28,6 @@
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
-import java.io.File
 
 /**
  * Task for verifying changes in the public Android resource surface, e.g. `public.xml`.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiTask.kt
index 7320d3b..2b2a1b0 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/resources/CheckResourceApiTask.kt
@@ -17,6 +17,7 @@
 package androidx.build.resources
 
 import androidx.build.checkapi.ApiLocation
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.provider.ListProperty
 import org.gradle.api.provider.Property
@@ -24,10 +25,9 @@
 import org.gradle.api.tasks.InputFile
 import org.gradle.api.tasks.InputFiles
 import org.gradle.api.tasks.Internal
-import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
-import java.io.File
+import org.gradle.api.tasks.TaskAction
 
 /**
  * Task for detecting changes in the public Android resource surface, e.g. `public.xml`.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/resources/GenerateResourceApiTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/resources/GenerateResourceApiTask.kt
index dffa723..a94bc4c 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/resources/GenerateResourceApiTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/resources/GenerateResourceApiTask.kt
@@ -17,6 +17,7 @@
 package androidx.build.resources
 
 import androidx.build.checkapi.ApiLocation
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
 import org.gradle.api.file.RegularFileProperty
@@ -28,7 +29,6 @@
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
-import java.io.File
 
 /**
  * Generates a resource API file for consumption by other API tasks.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/resources/PublicResourcesStubHelper.kt b/buildSrc/private/src/main/kotlin/androidx/build/resources/PublicResourcesStubHelper.kt
index 528c6bb..baae1c5 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/resources/PublicResourcesStubHelper.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/resources/PublicResourcesStubHelper.kt
@@ -18,9 +18,9 @@
 
 import androidx.build.getSupportRootFolder
 import com.android.build.gradle.LibraryExtension
+import java.io.File
 import org.gradle.api.Project
 import org.gradle.api.tasks.Copy
-import java.io.File
 
 fun Project.configurePublicResourcesStub(extension: LibraryExtension) {
     val targetResFolder = File(project.buildDir, "generated/res/public-stub")
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/resources/ResourceTasks.kt b/buildSrc/private/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
index 3e7187d..e889831 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
@@ -23,8 +23,8 @@
 import androidx.build.checkapi.getRequiredCompatibilityApiLocation
 import androidx.build.metalava.UpdateApiTask
 import androidx.build.uptodatedness.cacheEvenIfNoOutputs
-import org.gradle.api.Project
 import java.util.Locale
+import org.gradle.api.Project
 
 object ResourceTasks {
     private const val GENERATE_RESOURCE_API_TASK = "generateResourceApi"
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/resources/UpdateResourceApiTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/resources/UpdateResourceApiTask.kt
index fa66eef..bec59cc0 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/resources/UpdateResourceApiTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/resources/UpdateResourceApiTask.kt
@@ -17,6 +17,7 @@
 package androidx.build.resources
 
 import androidx.build.checkapi.ApiLocation
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.provider.ListProperty
 import org.gradle.api.provider.Property
@@ -28,7 +29,6 @@
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
-import java.io.File
 
 /**
  * Task for updating the public Android resource surface, e.g. `public.xml`.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt b/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt
index 61b3bf7..587f0a9 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt
@@ -16,9 +16,9 @@
 
 package androidx.build.studio
 
-import org.gradle.process.ExecSpec
 import java.io.File
 import java.util.Locale
+import org.gradle.process.ExecSpec
 
 /**
  * Utility class containing helper functions and values that change between Linux and OSX
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/OwnersService.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/OwnersService.kt
index e75e8a9..d49701d 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/OwnersService.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/OwnersService.kt
@@ -18,6 +18,7 @@
 
 import androidx.build.getDistributionDirectory
 import com.google.gson.GsonBuilder
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
 import org.gradle.api.file.RegularFileProperty
@@ -27,7 +28,6 @@
 import org.gradle.api.tasks.OutputFile
 import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.bundling.Zip
-import java.io.File
 
 @CacheableTask
 abstract class ModuleInfoGenerator : DefaultTask() {
@@ -52,7 +52,7 @@
 }
 
 /**
- * Register two tasks need to generate information for Android test owners service.
+ * Register two tasks needed to generate information for Android test owners service.
  * One task zips all the OWNERS files in frameworks/support, and second task creates a
  * module-info.json that links test modules to paths.
  */
@@ -62,6 +62,7 @@
         task.destinationDirectory.set(getDistributionDirectory())
         task.from(layout.projectDirectory)
         task.include("**/OWNERS")
+        task.exclude("buildSrc/.gradle/**")
         task.includeEmptyDirs = false
     }
 
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
index 152b49a..3d4d026 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
@@ -39,12 +39,12 @@
 import com.android.build.api.variant.TestAndroidComponentsExtension
 import com.android.build.api.variant.Variant
 import com.android.build.gradle.BaseExtension
-import java.io.File
-import org.gradle.api.Project
 import com.android.build.gradle.TestExtension
 import com.android.build.gradle.internal.attributes.VariantAttr
 import com.android.build.gradle.internal.publishing.AndroidArtifacts
 import com.android.build.gradle.internal.publishing.AndroidArtifacts.ArtifactType
+import java.io.File
+import org.gradle.api.Project
 import org.gradle.api.attributes.Usage
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.kotlin.dsl.getByType
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/BundleInsideHelper.kt b/buildSrc/public/src/main/kotlin/androidx/build/BundleInsideHelper.kt
index d67eaca..502f2b5 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/BundleInsideHelper.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/BundleInsideHelper.kt
@@ -17,12 +17,12 @@
 package androidx.build
 
 import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
+import java.io.File
 import org.gradle.api.Project
+import org.gradle.api.Task
 import org.gradle.api.artifacts.Configuration
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.jvm.tasks.Jar
-import java.io.File
-import org.gradle.api.Task
 import org.gradle.kotlin.dsl.findByType
 import org.gradle.kotlin.dsl.get
 import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/OperatingSystem.kt b/buildSrc/public/src/main/kotlin/androidx/build/OperatingSystem.kt
index 867ade5..c73ff70 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/OperatingSystem.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/OperatingSystem.kt
@@ -16,8 +16,8 @@
 
 package androidx.build
 
-import org.gradle.api.GradleException
 import java.util.Locale
+import org.gradle.api.GradleException
 
 enum class OperatingSystem {
     LINUX,
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/SingleFileCopy.kt b/buildSrc/public/src/main/kotlin/androidx/build/SingleFileCopy.kt
index 74d81b7..6064dd2 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/SingleFileCopy.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/SingleFileCopy.kt
@@ -17,16 +17,15 @@
 package androidx.build
 
 import com.google.common.io.Files
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.tasks.InputFile
 import org.gradle.api.tasks.OutputFile
-import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
+import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
 
-import java.io.File
-
 @DisableCachingByDefault(because = "Doesn't benefit from cache")
 open class SingleFileCopy : DefaultTask() {
     @InputFile @PathSensitive(PathSensitivity.ABSOLUTE)
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/SupportConfig.kt b/buildSrc/public/src/main/kotlin/androidx/build/SupportConfig.kt
index e0087b3..47d27e4 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/SupportConfig.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/SupportConfig.kt
@@ -17,15 +17,15 @@
 package androidx.build
 
 import androidx.build.SupportConfig.COMPILE_SDK_VERSION
+import java.io.File
 import org.gradle.api.Project
 import org.gradle.api.file.FileCollection
-import java.io.File
 
 object SupportConfig {
     const val DEFAULT_MIN_SDK_VERSION = 14
     const val INSTRUMENTATION_RUNNER = "androidx.test.runner.AndroidJUnitRunner"
     private const val INTERNAL_BUILD_TOOLS_VERSION = "34.0.0-rc3"
-    private const val PUBLIC_BUILD_TOOLS_VERSION = "34.0.0-rc3"
+    private const val PUBLIC_BUILD_TOOLS_VERSION = "34.0.0-rc4"
     const val NDK_VERSION = "23.1.7779620"
 
     /**
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/Version.kt b/buildSrc/public/src/main/kotlin/androidx/build/Version.kt
index d385d9b..fbee578 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/Version.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/Version.kt
@@ -16,11 +16,11 @@
 
 package androidx.build
 
-import org.gradle.api.Project
 import java.io.File
 import java.util.Locale
 import java.util.regex.Matcher
 import java.util.regex.Pattern
+import org.gradle.api.Project
 
 /**
  * Utility class which represents a version
diff --git a/buildSrc/shared-dependencies.gradle b/buildSrc/shared-dependencies.gradle
index 0625be3..1b67981 100644
--- a/buildSrc/shared-dependencies.gradle
+++ b/buildSrc/shared-dependencies.gradle
@@ -6,8 +6,6 @@
     // Gradle APIs
     implementation(gradleApi())
     compileOnly(findGradleKotlinDsl())
-    //noinspection UseTomlInstead,GradleDependency
-    implementation("com.android.tools:r8:8.1.41") // Temporary workaround for b/279807477
 
     // Android Gradle Plugin APIs used by Stable AIDL
     implementation(libs.androidGradlePluginApi)
diff --git a/busytown/androidx.sh b/busytown/androidx.sh
index ef344d5..cbecee6 100755
--- a/busytown/androidx.sh
+++ b/busytown/androidx.sh
@@ -18,11 +18,11 @@
   EXIT_VALUE=1
 else
   # Run Gradle
+  # If/when we enable desktop, enable VerifyDependencyVersionsTask.kt/shouldVerifyConfiguration
   if ! impl/build.sh buildOnServer createAllArchives checkExternalLicenses listTaskOutputs \
       -Pandroidx.enableComposeCompilerMetrics=true \
       -Pandroidx.enableComposeCompilerReports=true \
       -Pandroidx.constraints=true \
-      # If/when we enable desktop, enable VerifyDependencyVersionsTask.kt/shouldVerifyConfiguration
       -Pandroidx.enabled.kmp.target.platforms=-desktop \
       --no-daemon \
       --profile "$@"; then
diff --git a/busytown/androidx_host_tests.sh b/busytown/androidx_host_tests.sh
index bba9e74..3555073 100755
--- a/busytown/androidx_host_tests.sh
+++ b/busytown/androidx_host_tests.sh
@@ -5,7 +5,7 @@
 
 cd "$(dirname $0)"
 
-impl/build.sh test \
+impl/build.sh test zipOwnersFiles createModuleInfo \
     -Pandroidx.ignoreTestFailures \
     -Pandroidx.displayTestOutput=false \
     "$@"
diff --git a/busytown/androidx_host_tests_max_dep_versions.sh b/busytown/androidx_host_tests_max_dep_versions.sh
index ef49669..5dbf2ee 100755
--- a/busytown/androidx_host_tests_max_dep_versions.sh
+++ b/busytown/androidx_host_tests_max_dep_versions.sh
@@ -5,7 +5,7 @@
 
 cd "$(dirname $0)"
 
-impl/build.sh test \
+impl/build.sh test zipOwnersFiles createModuleInfo \
     -Pandroidx.useMaxDepVersions \
     -Pandroidx.displayTestOutput=false \
     -Pandroidx.ignoreTestFailures "$@"
diff --git a/camera/camera-camera2-pipe-integration/build.gradle b/camera/camera-camera2-pipe-integration/build.gradle
index 5ba8cb5..3a1f95e 100644
--- a/camera/camera-camera2-pipe-integration/build.gradle
+++ b/camera/camera-camera2-pipe-integration/build.gradle
@@ -115,11 +115,11 @@
 }
 
 androidx {
-    name = "Jetpack Camera Camera Pipe Integration Library"
+    name = "Camera2 Pipe Integration"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CAMERA_PIPE
     inceptionYear = "2020"
-    description = "A CameraPipe implementation of CameraX, a library providing a consistent and " +
-            "reliable camera foundation that enables great camera driven experiences across all " +
-            "of Android."
+    description = "A Camera2 Pipe implementation of CameraX, a library providing a consistent " +
+            "and reliable camera foundation that enables great camera driven experiences across " +
+            "all of Android."
 }
diff --git a/camera/camera-camera2-pipe-integration/src/androidTest/java/androidx/camera/camera2/pipe/testing/VerifyResultListener.kt b/camera/camera-camera2-pipe-integration/src/androidTest/java/androidx/camera/camera2/pipe/testing/VerifyResultListener.kt
index 1c65179..f88ee43 100644
--- a/camera/camera-camera2-pipe-integration/src/androidTest/java/androidx/camera/camera2/pipe/testing/VerifyResultListener.kt
+++ b/camera/camera-camera2-pipe-integration/src/androidTest/java/androidx/camera/camera2/pipe/testing/VerifyResultListener.kt
@@ -22,11 +22,11 @@
 import androidx.camera.camera2.pipe.FrameNumber
 import androidx.camera.camera2.pipe.Request
 import androidx.camera.camera2.pipe.RequestMetadata
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.TimeoutException
 import kotlinx.atomicfu.atomic
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.withTimeout
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.TimeoutException
 
 @RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
 class VerifyResultListener(capturesCount: Int) : Request.Listener {
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraInfoAdapter.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraInfoAdapter.kt
index a1a2d28..9fb1916 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraInfoAdapter.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraInfoAdapter.kt
@@ -43,12 +43,12 @@
 import androidx.camera.core.CameraSelector
 import androidx.camera.core.CameraState
 import androidx.camera.core.DynamicRange
-import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
-import androidx.camera.core.DynamicRange.BIT_DEPTH_8_BIT
-import androidx.camera.core.DynamicRange.FORMAT_DOLBY_VISION
-import androidx.camera.core.DynamicRange.FORMAT_HDR10
-import androidx.camera.core.DynamicRange.FORMAT_HDR10_PLUS
-import androidx.camera.core.DynamicRange.FORMAT_HLG
+import androidx.camera.core.DynamicRange.DOLBY_VISION_10_BIT
+import androidx.camera.core.DynamicRange.DOLBY_VISION_8_BIT
+import androidx.camera.core.DynamicRange.HDR10_10_BIT
+import androidx.camera.core.DynamicRange.HDR10_PLUS_10_BIT
+import androidx.camera.core.DynamicRange.HLG_10_BIT
+import androidx.camera.core.DynamicRange.SDR
 import androidx.camera.core.ExposureState
 import androidx.camera.core.FocusMeteringAction
 import androidx.camera.core.ZoomState
@@ -198,7 +198,7 @@
                 return profileSetToDynamicRangeSet(availableProfiles.supportedProfiles)
             }
         }
-        return setOf(DynamicRange.SDR)
+        return setOf(SDR)
     }
 
     private fun profileSetToDynamicRangeSet(profileSet: Set<Long>): Set<DynamicRange> {
@@ -212,24 +212,19 @@
     }
 
     companion object {
-        private val DR_HLG10 = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
-        private val DR_HDR10 = DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT)
-        private val DR_HDR10_PLUS = DynamicRange(FORMAT_HDR10_PLUS, BIT_DEPTH_10_BIT)
-        private val DR_DOLBY_VISION_10_BIT = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT)
-        private val DR_DOLBY_VISION_8_BIT = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
         private val PROFILE_TO_DR_MAP: Map<Long, DynamicRange> = mapOf(
-            DynamicRangeProfiles.STANDARD to DynamicRange.SDR,
-            DynamicRangeProfiles.HLG10 to DR_HLG10,
-            DynamicRangeProfiles.HDR10 to DR_HDR10,
-            DynamicRangeProfiles.HDR10_PLUS to DR_HDR10_PLUS,
-            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_OEM to DR_DOLBY_VISION_10_BIT,
-            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_OEM_PO to DR_DOLBY_VISION_10_BIT,
-            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_REF to DR_DOLBY_VISION_10_BIT,
-            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_REF_PO to DR_DOLBY_VISION_10_BIT,
-            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_OEM to DR_DOLBY_VISION_8_BIT,
-            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_OEM_PO to DR_DOLBY_VISION_8_BIT,
-            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_REF to DR_DOLBY_VISION_8_BIT,
-            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_REF_PO to DR_DOLBY_VISION_8_BIT,
+            DynamicRangeProfiles.STANDARD to SDR,
+            DynamicRangeProfiles.HLG10 to HLG_10_BIT,
+            DynamicRangeProfiles.HDR10 to HDR10_10_BIT,
+            DynamicRangeProfiles.HDR10_PLUS to HDR10_PLUS_10_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_OEM to DOLBY_VISION_10_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_OEM_PO to DOLBY_VISION_10_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_REF to DOLBY_VISION_10_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_10B_HDR_REF_PO to DOLBY_VISION_10_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_OEM to DOLBY_VISION_8_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_OEM_PO to DOLBY_VISION_8_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_REF to DOLBY_VISION_8_BIT,
+            DynamicRangeProfiles.DOLBY_VISION_8B_HDR_REF_PO to DOLBY_VISION_8_BIT,
         )
     }
 }
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/SupportedSurfaceCombination.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/SupportedSurfaceCombination.kt
index 516f8a5..a84d164 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/SupportedSurfaceCombination.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/SupportedSurfaceCombination.kt
@@ -28,8 +28,8 @@
 import android.media.CamcorderProfile
 import android.media.MediaRecorder
 import android.os.Build
-import android.util.Rational
 import android.util.Pair
+import android.util.Rational
 import android.util.Size
 import android.view.Display
 import androidx.annotation.RequiresApi
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt
index 33adefc..4143198 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt
@@ -38,10 +38,10 @@
 import androidx.camera.core.impl.annotation.ExecutedBy
 import dagger.Binds
 import dagger.Module
+import javax.inject.Inject
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.Deferred
 import kotlinx.coroutines.launch
-import javax.inject.Inject
 
 private const val TAG_KEY = "Camera2CameraControl.tag"
 
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/ConfigureSurfaceToSecondarySessionFailQuirk.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/ConfigureSurfaceToSecondarySessionFailQuirk.kt
index 98507ce..969985f 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/ConfigureSurfaceToSecondarySessionFailQuirk.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/ConfigureSurfaceToSecondarySessionFailQuirk.kt
@@ -16,12 +16,12 @@
 package androidx.camera.camera2.pipe.integration.compat.quirk
 
 import android.annotation.SuppressLint
+import android.hardware.camera2.CameraCaptureSession
 import android.hardware.camera2.CameraCharacteristics
 import android.hardware.camera2.CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
 import androidx.annotation.RequiresApi
 import androidx.camera.camera2.pipe.CameraMetadata
 import androidx.camera.core.impl.Quirk
-import android.hardware.camera2.CameraCaptureSession
 
 /**
  * A quirk to denote the surface can only be used to configure to only one
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/CapturePipeline.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/CapturePipeline.kt
index 9da5b32..d854d2b 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/CapturePipeline.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/CapturePipeline.kt
@@ -47,9 +47,9 @@
 import androidx.camera.camera2.pipe.RequestMetadata
 import androidx.camera.camera2.pipe.Result3A
 import androidx.camera.camera2.pipe.core.Log
+import androidx.camera.camera2.pipe.integration.compat.workaround.UseTorchAsFlash
 import androidx.camera.camera2.pipe.integration.compat.workaround.isFlashAvailable
 import androidx.camera.camera2.pipe.integration.compat.workaround.shouldStopRepeatingBeforeCapture
-import androidx.camera.camera2.pipe.integration.compat.workaround.UseTorchAsFlash
 import androidx.camera.camera2.pipe.integration.config.UseCaseCameraScope
 import androidx.camera.camera2.pipe.integration.config.UseCaseGraphConfig
 import androidx.camera.core.ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/EvCompControl.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/EvCompControl.kt
index 2bba010..f53608f 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/EvCompControl.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/EvCompControl.kt
@@ -26,9 +26,9 @@
 import dagger.Binds
 import dagger.Module
 import dagger.multibindings.IntoSet
+import javax.inject.Inject
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.Deferred
-import javax.inject.Inject
 
 private const val DEFAULT_EXPOSURE_COMPENSATION = 0
 
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseThreads.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseThreads.kt
index 3233279..e2c7c5f 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseThreads.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseThreads.kt
@@ -18,11 +18,11 @@
 
 import androidx.annotation.RequiresApi
 import androidx.camera.core.impl.utils.executor.CameraXExecutors
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.asCoroutineDispatcher
-import java.util.concurrent.Executor
 
 /**
  * Collection of threads and scope(s) that have been configured and tuned.
diff --git a/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/CapturePipelineTest.kt b/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/CapturePipelineTest.kt
index 28e3c559..236bd7d 100644
--- a/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/CapturePipelineTest.kt
+++ b/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/CapturePipelineTest.kt
@@ -37,14 +37,14 @@
 import androidx.camera.camera2.pipe.integration.adapter.CameraStateAdapter
 import androidx.camera.camera2.pipe.integration.adapter.RobolectricCameraPipeTestRunner
 import androidx.camera.camera2.pipe.integration.adapter.asListenableFuture
-import androidx.camera.camera2.pipe.integration.compat.workaround.CapturePipelineTorchCorrection
 import androidx.camera.camera2.pipe.integration.compat.StreamConfigurationMapCompat
 import androidx.camera.camera2.pipe.integration.compat.quirk.CameraQuirks
 import androidx.camera.camera2.pipe.integration.compat.workaround.AeFpsRange
+import androidx.camera.camera2.pipe.integration.compat.workaround.CapturePipelineTorchCorrection
 import androidx.camera.camera2.pipe.integration.compat.workaround.NoOpAutoFlashAEModeDisabler
 import androidx.camera.camera2.pipe.integration.compat.workaround.NotUseTorchAsFlash
-import androidx.camera.camera2.pipe.integration.compat.workaround.UseTorchAsFlashImpl
 import androidx.camera.camera2.pipe.integration.compat.workaround.OutputSizesCorrector
+import androidx.camera.camera2.pipe.integration.compat.workaround.UseTorchAsFlashImpl
 import androidx.camera.camera2.pipe.integration.config.UseCaseGraphConfig
 import androidx.camera.camera2.pipe.integration.testing.FakeCameraGraph
 import androidx.camera.camera2.pipe.integration.testing.FakeCameraGraphSession
diff --git a/camera/camera-camera2-pipe-testing/build.gradle b/camera/camera-camera2-pipe-testing/build.gradle
index fcf6f79..1d31206 100644
--- a/camera/camera-camera2-pipe-testing/build.gradle
+++ b/camera/camera-camera2-pipe-testing/build.gradle
@@ -60,12 +60,12 @@
 }
 
 androidx {
-    name = "Jetpack Camera Camera Pipe Testing Library"
+    name = "Camera2 Pipe Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CAMERA_PIPE
     runApiTasks = new RunApiTasks.No("CameraPipe is an implementation detail of other libraries.")
     inceptionYear = "2020"
-    description = "Testing components for the Jetpack CameraPipe Library, a library providing a " +
+    description = "Testing components for the Camera2 Pipe Library, a library providing a " +
             "consistent and reliable camera foundation that enables great camera driven " +
             "experiences across all of Android."
 }
diff --git a/camera/camera-camera2-pipe/build.gradle b/camera/camera-camera2-pipe/build.gradle
index f339499..e2a6054 100644
--- a/camera/camera-camera2-pipe/build.gradle
+++ b/camera/camera-camera2-pipe/build.gradle
@@ -71,7 +71,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Pipe"
+    name = "Camera2 Pipe"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CAMERA_PIPE
     runApiTasks = new RunApiTasks.No("CameraPipe is an implementation detail of other libraries.")
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraControls.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraControls.kt
index 9e94da7..bfc9850 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraControls.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraControls.kt
@@ -139,10 +139,14 @@
      * enforced frame or time limit was reached, submitting the desired request to camera failed
      * etc.
      */
-    enum class Status {
-        OK,
-        FRAME_LIMIT_REACHED,
-        TIME_LIMIT_REACHED,
-        SUBMIT_FAILED
+    @JvmInline
+    value class Status private constructor(val value: Int) {
+        companion object {
+            val OK = Status(0)
+            val FRAME_LIMIT_REACHED = Status(1)
+            val TIME_LIMIT_REACHED = Status(2)
+            val SUBMIT_CANCELLED = Status(3)
+            val SUBMIT_FAILED = Status(4)
+        }
     }
 }
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImpl.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImpl.kt
index 22556f7..e39343f 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImpl.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImpl.kt
@@ -66,6 +66,7 @@
     override fun stopRepeating() {
         check(!closed.value) { "Cannot call stopRepeating on $this after close." }
         graphProcessor.stopRepeating()
+        controller3A.onStopRepeating()
     }
 
     override fun close() {
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Controller3A.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Controller3A.kt
index f1360d3..bc91fcb 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Controller3A.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Controller3A.kt
@@ -145,6 +145,10 @@
         afRegions: List<MeteringRectangle>? = null,
         awbRegions: List<MeteringRectangle>? = null
     ): Deferred<Result3A> {
+        // If the GraphProcessor does not have a repeating request, we should fail immediately.
+        if (!graphProcessor.hasRepeatingRequest()) {
+            return CompletableDeferred(result3ASubmitFailed)
+        }
         // Add the listener to a global pool of 3A listeners to monitor the state change to the
         // desired one.
         val listener = createListenerFor3AParams(aeMode, afMode, awbMode, flashMode)
@@ -174,6 +178,10 @@
         afRegions: List<MeteringRectangle>? = null,
         awbRegions: List<MeteringRectangle>? = null
     ): Deferred<Result3A> {
+        // If the GraphProcessor does not have a repeating request, we should fail immediately.
+        if (!graphProcessor.hasRepeatingRequest()) {
+            return CompletableDeferred(result3ASubmitFailed)
+        }
         // Add the listener to a global pool of 3A listeners to monitor the state change to the
         // desired one.
         val listener = createListenerFor3AParams(aeMode, afMode, awbMode)
@@ -236,6 +244,10 @@
         if (aeLockBehavior == null && afLockBehaviorSanitized == null && awbLockBehavior == null) {
             return CompletableDeferred(Result3A(Status.OK, /* frameMetadata= */ null))
         }
+        // If the GraphProcessor does not have a repeating request, we should fail immediately.
+        if (!graphProcessor.hasRepeatingRequest()) {
+            return CompletableDeferred(result3ASubmitFailed)
+        }
         // Update the 3A state of camera graph with the given metering regions. If metering regions
         // are given as null then they are ignored and the current metering regions continue to be
         // applied in subsequent requests to the camera device.
@@ -329,6 +341,10 @@
         if (!(ae == true || afSanitized == true || awb == true)) {
             return CompletableDeferred(Result3A(Status.OK, /* frameMetadata= */ null))
         }
+        // If the GraphProcessor does not have a repeating request, we should fail immediately.
+        if (!graphProcessor.hasRepeatingRequest()) {
+            return CompletableDeferred(result3ASubmitFailed)
+        }
         // If we explicitly need to unlock af first before proceeding to lock it, we need to send
         // a single request with TRIGGER = TRIGGER_CANCEL so that af can start a fresh scan.
         if (afSanitized == true) {
@@ -361,6 +377,10 @@
         frameLimit: Int = DEFAULT_FRAME_LIMIT,
         timeLimitNs: Long = DEFAULT_TIME_LIMIT_NS
     ): Deferred<Result3A> {
+        // If the GraphProcessor does not have a repeating request, we should fail immediately.
+        if (!graphProcessor.hasRepeatingRequest()) {
+            return CompletableDeferred(result3ASubmitFailed)
+        }
         val listener =
             Result3AStateListenerImpl(
                 mapOf<CaptureResult.Key<*>, List<Any>>(
@@ -387,6 +407,10 @@
     }
 
     suspend fun unlock3APostCapture(): Deferred<Result3A> {
+        // If the GraphProcessor does not have a repeating request, we should fail immediately.
+        if (!graphProcessor.hasRepeatingRequest()) {
+            return CompletableDeferred(result3ASubmitFailed)
+        }
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             return unlock3APostCaptureAndroidMAndAbove()
         }
@@ -474,6 +498,10 @@
         return update3A(aeMode = desiredAeMode, flashMode = flashMode)
     }
 
+    internal fun onStopRepeating() {
+        graphListener3A.onStopRepeating()
+    }
+
     private suspend fun lock3ANow(
         aeLockBehavior: Lock3ABehavior?,
         afLockBehavior: Lock3ABehavior?,
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphProcessor.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphProcessor.kt
index e195621..d368299 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphProcessor.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphProcessor.kt
@@ -62,8 +62,9 @@
      * from 3A methods. It does this by setting the given parameters onto the current repeating
      * request on a best-effort basis.
      *
-     * If the CameraGraph hasn't been started yet, or we haven't yet submitted a repeating request,
-     * the method will suspend until we've met the criteria and only then submits the parameters.
+     * If the CameraGraph hasn't been started yet, but we do have a pending repeating request
+     * queued, the method will suspend until we have a submitted repeating request and only then
+     * submits the parameters.
      *
      * This behavior is required if users call 3A methods immediately after start. For example:
      *
@@ -76,9 +77,11 @@
      * ```
      *
      * Under this scenario, developers should reasonably expect things to work, and therefore
-     * the implementation handles this on a best-effort basis for the developer.
+     * the implementation handles this on a best-effort basis for the developer. Please read
+     * b/263211462 for more context.
      *
-     * Please read b/263211462 for more context.
+     * However, if the CameraGraph does NOT have a current repeating request or any repeating
+     * requests queued up, the method will return false.
      */
     suspend fun trySubmit(parameters: Map<*, Any?>): Boolean
 
@@ -86,6 +89,13 @@
     fun stopRepeating()
 
     /**
+     * Checks whether we have a repeating request in progress. Returns true when we have a repeating
+     * request already submitted or is being submitted. This is used to check whether we can try
+     * to submit parameters (used by 3A methods).
+     */
+    fun hasRepeatingRequest(): Boolean
+
+    /**
      * Indicates that internal parameters may have changed, and that the repeating request should be
      * updated as soon as possible.
      */
@@ -278,7 +288,12 @@
         graphScope.launch(threads.lightweightDispatcher) { submitLoop() }
     }
 
-    /** Submit a request to the camera using only the current repeating request. */
+    /**
+     * Submit a request to the camera using only the current repeating request. If we don't have the
+     * current repeating request, and there are no repeating requests queued, this will return
+     * false. Otherwise, the method tries to submit the provided [parameters] and suspends until
+     * it finishes.
+     */
     override suspend fun trySubmit(parameters: Map<*, Any?>): Boolean =
         withContext(threads.lightweightDispatcher) {
             val processor: GraphRequestProcessor?
@@ -291,6 +306,13 @@
                 processor = _requestProcessor
                 request = currentRepeatingRequest
 
+                // If there is no current repeating request and no repeating requests are in the
+                // queue (i.e., startRepeating wasn't called before the 3A methods), we should just
+                // fail immediately.
+                if (request == null && repeatingQueue.isEmpty()) {
+                    return@withContext false
+                }
+
                 requiredParameters.putAllMetadata(parameters.toMutableMap())
                 graphState3A.writeTo(requiredParameters)
                 requiredParameters.putAllMetadata(cameraGraphConfig.requiredParameters)
@@ -319,6 +341,10 @@
             }
         }
 
+    override fun hasRepeatingRequest() = synchronized(lock) {
+        currentRepeatingRequest != null || repeatingQueue.isNotEmpty()
+    }
+
     override fun invalidate() {
         // Invalidate is only used for updates to internal state (listeners, parameters, etc) and
         // should not (currently) attempt to resubmit the normal request queue.
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Listener3A.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Listener3A.kt
index c145ab2..de265be 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Listener3A.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Listener3A.kt
@@ -68,6 +68,12 @@
         listeners.remove(listener)
     }
 
+    internal fun onStopRepeating() {
+        for (listener in listeners) {
+            listener.onRequestSequenceStopped()
+        }
+    }
+
     private fun updateListeners(requestNumber: RequestNumber, metadata: FrameMetadata) {
         for (listener in listeners) {
             if (listener.update(requestNumber, metadata)) {
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Result3AStateListener.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Result3AStateListener.kt
index 31888e5..06dc9ee 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Result3AStateListener.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/Result3AStateListener.kt
@@ -44,6 +44,7 @@
 internal interface Result3AStateListener {
     fun onRequestSequenceCreated(requestNumber: RequestNumber)
     fun update(requestNumber: RequestNumber, frameMetadata: FrameMetadata): Boolean
+    fun onRequestSequenceStopped()
 }
 
 internal class Result3AStateListenerImpl(
@@ -127,6 +128,10 @@
         return true
     }
 
+    override fun onRequestSequenceStopped() {
+        _result.complete(Result3A(Result3A.Status.SUBMIT_CANCELLED))
+    }
+
     fun getDeferredResult(): Deferred<Result3A> {
         return _result
     }
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImplTest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImplTest.kt
index f2c065e..6a79e09 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImplTest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/CameraGraphSessionImplTest.kt
@@ -16,19 +16,37 @@
 
 package androidx.camera.camera2.pipe.graph
 
+import android.graphics.SurfaceTexture
+import android.hardware.camera2.CameraCharacteristics
+import android.hardware.camera2.CameraMetadata.CONTROL_AE_STATE_LOCKED
+import android.hardware.camera2.CaptureResult
 import android.os.Build
+import android.view.Surface
+import androidx.camera.camera2.pipe.FrameNumber
+import androidx.camera.camera2.pipe.Lock3ABehavior
 import androidx.camera.camera2.pipe.Request
+import androidx.camera.camera2.pipe.RequestNumber
+import androidx.camera.camera2.pipe.Result3A
+import androidx.camera.camera2.pipe.StreamId
 import androidx.camera.camera2.pipe.core.TokenLockImpl
 import androidx.camera.camera2.pipe.testing.FakeCameraMetadata
+import androidx.camera.camera2.pipe.testing.FakeCaptureSequenceProcessor
+import androidx.camera.camera2.pipe.testing.FakeFrameInfo
+import androidx.camera.camera2.pipe.testing.FakeFrameMetadata
 import androidx.camera.camera2.pipe.testing.FakeGraphProcessor
+import androidx.camera.camera2.pipe.testing.FakeRequestMetadata
 import androidx.camera.camera2.pipe.testing.RobolectricCameraPipeTestRunner
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.advanceUntilIdle
+import kotlinx.coroutines.test.runTest
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
 
+@OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricCameraPipeTestRunner::class)
 @DoNotInstrument
 @Config(minSdk = Build.VERSION_CODES.LOLLIPOP)
@@ -36,10 +54,21 @@
     private val tokenLock = TokenLockImpl(1)
 
     private val graphState3A = GraphState3A()
-    private val graphProcessor = FakeGraphProcessor(graphState3A = graphState3A)
     private val listener3A = Listener3A()
+    private val graphProcessor =
+        FakeGraphProcessor(graphState3A = graphState3A, defaultListeners = listOf(listener3A))
+    private val fakeCaptureSequenceProcessor = FakeCaptureSequenceProcessor()
+    private val fakeGraphRequestProcessor = GraphRequestProcessor.from(fakeCaptureSequenceProcessor)
     private val controller3A =
-        Controller3A(graphProcessor, FakeCameraMetadata(), graphState3A, listener3A)
+        Controller3A(
+            graphProcessor,
+            // Make sure our characteristics shows that it supports AF trigger.
+            FakeCameraMetadata(
+                characteristics = mapOf(
+                    CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE to 1.0f
+                )
+            ), graphState3A, listener3A
+        )
 
     private val session =
         CameraGraphSessionImpl(tokenLock.acquireOrNull(1, 1)!!, graphProcessor, controller3A)
@@ -56,4 +85,106 @@
         val result = assertThrows<IllegalStateException> { session.submit(Request(listOf())) }
         result.hasMessageThat().contains("submit")
     }
+
+    @Test
+    fun stopRepeatingShouldCancel3ARequests() = runTest {
+        val streamId = StreamId(1)
+        val surfaceTexture = SurfaceTexture(0).also { it.setDefaultBufferSize(640, 480) }
+        val surface = Surface(surfaceTexture)
+        graphProcessor.onGraphStarted(fakeGraphRequestProcessor)
+        fakeCaptureSequenceProcessor.surfaceMap = mapOf(streamId to surface)
+
+        session.startRepeating(Request(streams = listOf(StreamId(1))))
+        graphProcessor.invalidate()
+
+        val result = session.lock3A(aeLockBehavior = Lock3ABehavior.IMMEDIATE)
+
+        // Don't return any results to simulate that the 3A conditions haven't been met, but the
+        // app calls stopRepeating(). In which case, we should fail here with SUBMIT_CANCELLED.
+        session.stopRepeating()
+        assertThat(result.await().status).isEqualTo(Result3A.Status.SUBMIT_CANCELLED)
+    }
+
+    @Test
+    fun initiate3ARequestsShouldThrowWhenSessionIsClosed() = runTest {
+        graphProcessor.onGraphStarted(fakeGraphRequestProcessor)
+        session.startRepeating(Request(streams = listOf(StreamId(1))))
+        graphProcessor.invalidate()
+        advanceUntilIdle()
+
+        // Now close the session
+        session.close()
+        assertThrows<IllegalStateException> {
+            session.lock3A(aeLockBehavior = Lock3ABehavior.IMMEDIATE)
+        }
+    }
+
+    @Test
+    fun Lock3AShouldFailWhenInvokedBeforeStartRepeating() = runTest {
+        graphProcessor.onGraphStarted(fakeGraphRequestProcessor)
+
+        val afResult = session.lock3A(afLockBehavior = Lock3ABehavior.IMMEDIATE).await()
+        assertThat(afResult.status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+
+        val aeResult = session.lock3A(aeLockBehavior = Lock3ABehavior.IMMEDIATE).await()
+        assertThat(aeResult.status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+    }
+
+    @Test
+    fun Lock3AShouldSucceedWhenInvokedAfterStartRepeatingAndConverged() = runTest {
+        val streamId = StreamId(1)
+        val surfaceTexture = SurfaceTexture(0).also { it.setDefaultBufferSize(640, 480) }
+        val surface = Surface(surfaceTexture)
+        val requestMetadata = FakeRequestMetadata(requestNumber = RequestNumber(10))
+
+        graphProcessor.onGraphStarted(fakeGraphRequestProcessor)
+        fakeCaptureSequenceProcessor.surfaceMap = mapOf(streamId to surface)
+
+        session.startRepeating(Request(streams = listOf(streamId)))
+        graphProcessor.invalidate()
+        advanceUntilIdle()
+
+        val result = session.lock3A(aeLockBehavior = Lock3ABehavior.IMMEDIATE)
+        advanceUntilIdle()
+
+        listener3A.onTotalCaptureResult(
+            requestMetadata,
+            FrameNumber(10),
+            FakeFrameInfo(
+                metadata = FakeFrameMetadata(
+                    resultMetadata =
+                    mapOf(CaptureResult.CONTROL_AE_STATE to CONTROL_AE_STATE_LOCKED)
+                ),
+                requestMetadata = requestMetadata
+            )
+        )
+
+        assertThat(result.await().status).isEqualTo(Result3A.Status.OK)
+        surface.release()
+        surfaceTexture.release()
+    }
+
+    @Test
+    fun Lock3AShouldFailWhenInvokedAfterStartAndStopRepeating() = runTest {
+        val streamId = StreamId(1)
+        val surfaceTexture = SurfaceTexture(0).also { it.setDefaultBufferSize(640, 480) }
+        val surface = Surface(surfaceTexture)
+
+        graphProcessor.onGraphStarted(fakeGraphRequestProcessor)
+        fakeCaptureSequenceProcessor.surfaceMap = mapOf(streamId to surface)
+
+        session.startRepeating(Request(streams = listOf(streamId)))
+        graphProcessor.invalidate()
+        advanceUntilIdle()
+
+        // Stop repeating
+        session.stopRepeating()
+
+        // Now lock3A should fail immediately with SUBMIT_FAILED.
+        val result = session.lock3A(afLockBehavior = Lock3ABehavior.IMMEDIATE).await()
+        assertThat(result.status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+
+        surface.release()
+        surfaceTexture.release()
+    }
 }
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AForCaptureTest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AForCaptureTest.kt
index 2aa755f..1dd731f 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AForCaptureTest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AForCaptureTest.kt
@@ -26,6 +26,7 @@
 import androidx.camera.camera2.pipe.Result3A
 import androidx.camera.camera2.pipe.testing.FakeCameraMetadata
 import androidx.camera.camera2.pipe.testing.FakeFrameMetadata
+import androidx.camera.camera2.pipe.testing.FakeGraphProcessor
 import androidx.camera.camera2.pipe.testing.FakeRequestMetadata
 import androidx.camera.camera2.pipe.testing.RobolectricCameraPipeTestRunner
 import com.google.common.truth.Truth.assertThat
@@ -56,6 +57,20 @@
     }
 
     @Test
+    fun testLock3AForCaptureFailsImmediatelyWithoutRepeatingRequest() = runTest {
+        val graphProcessor2 = FakeGraphProcessor()
+        val controller3A =
+            Controller3A(
+                graphProcessor2,
+                FakeCameraMetadata(),
+                graphProcessor2.graphState3A,
+                listener3A
+            )
+        val result = controller3A.lock3AForCapture()
+        assertThat(result.await().status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+    }
+
+    @Test
     fun testLock3AForCapture() = runTest {
         val result = controller3A.lock3AForCapture()
         assertThat(result.isCompleted).isFalse()
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ALock3ATest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ALock3ATest.kt
index 8594455..ad3743d 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ALock3ATest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ALock3ATest.kt
@@ -27,6 +27,7 @@
 import androidx.camera.camera2.pipe.Result3A
 import androidx.camera.camera2.pipe.testing.FakeCameraMetadata
 import androidx.camera.camera2.pipe.testing.FakeFrameMetadata
+import androidx.camera.camera2.pipe.testing.FakeGraphProcessor
 import androidx.camera.camera2.pipe.testing.FakeRequestMetadata
 import androidx.camera.camera2.pipe.testing.RobolectricCameraPipeTestRunner
 import com.google.common.truth.Truth.assertThat
@@ -68,6 +69,15 @@
     }
 
     @Test
+    fun testLock3AFailsImmediatelyWithoutRepeatingRequest() = runTest {
+        val graphProcessor2 = FakeGraphProcessor()
+        val controller3A =
+            Controller3A(graphProcessor2, fakeMetadata, graphProcessor2.graphState3A, listener3A)
+        val result = controller3A.lock3A(afLockBehavior = Lock3ABehavior.IMMEDIATE)
+        assertThat(result.await().status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+    }
+
+    @Test
     fun testAfImmediateAeImmediate() = runTest {
         val result =
             controller3A.lock3A(
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASetTorchTest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASetTorchTest.kt
index b5edf4f..031aa70 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASetTorchTest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASetTorchTest.kt
@@ -26,6 +26,7 @@
 import androidx.camera.camera2.pipe.TorchState
 import androidx.camera.camera2.pipe.testing.FakeCameraMetadata
 import androidx.camera.camera2.pipe.testing.FakeFrameMetadata
+import androidx.camera.camera2.pipe.testing.FakeGraphProcessor
 import androidx.camera.camera2.pipe.testing.FakeRequestMetadata
 import androidx.camera.camera2.pipe.testing.RobolectricCameraPipeTestRunner
 import com.google.common.truth.Truth.assertThat
@@ -54,6 +55,20 @@
     }
 
     @Test
+    fun testSetTorchFailsImmediatelyWithoutRepeatingRequest() = runTest {
+        val graphProcessor2 = FakeGraphProcessor()
+        val controller3A =
+            Controller3A(
+                graphProcessor2,
+                FakeCameraMetadata(),
+                graphProcessor2.graphState3A,
+                listener3A
+            )
+        val result = controller3A.setTorch(TorchState.ON)
+        assertThat(result.await().status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+    }
+
+    @Test
     fun testSetTorchOn() = runTest {
         val result = controller3A.setTorch(TorchState.ON)
         assertThat(graphState3A.aeMode!!.value).isEqualTo(CaptureRequest.CONTROL_AE_MODE_ON)
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASubmit3ATest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASubmit3ATest.kt
index 924c289..a2ed480 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASubmit3ATest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3ASubmit3ATest.kt
@@ -28,6 +28,7 @@
 import androidx.camera.camera2.pipe.Result3A
 import androidx.camera.camera2.pipe.testing.FakeCameraMetadata
 import androidx.camera.camera2.pipe.testing.FakeFrameMetadata
+import androidx.camera.camera2.pipe.testing.FakeGraphProcessor
 import androidx.camera.camera2.pipe.testing.FakeRequestMetadata
 import androidx.camera.camera2.pipe.testing.RobolectricCameraPipeTestRunner
 import com.google.common.truth.Truth.assertThat
@@ -56,6 +57,20 @@
     }
 
     @Test
+    fun testSubmit3AFailsImmediatelyWithoutRepeatingRequest() = runTest {
+        val graphProcessor2 = FakeGraphProcessor()
+        val controller3A =
+            Controller3A(
+                graphProcessor2,
+                FakeCameraMetadata(),
+                graphProcessor2.graphState3A,
+                listener3A
+            )
+        val result = controller3A.submit3A(afMode = AfMode.OFF)
+        assertThat(result.await().status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+    }
+
+    @Test
     fun testSubmit3ADoesNotUpdateState3A() = runTest {
         val result = controller3A.submit3A(afMode = AfMode.OFF)
         assertThat(graphState3A.afMode?.value).isNotEqualTo(CaptureRequest.CONTROL_AF_MODE_OFF)
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUnlock3ATest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUnlock3ATest.kt
index 77153c1..69dafc1 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUnlock3ATest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUnlock3ATest.kt
@@ -25,6 +25,7 @@
 import androidx.camera.camera2.pipe.Result3A
 import androidx.camera.camera2.pipe.testing.FakeCameraMetadata
 import androidx.camera.camera2.pipe.testing.FakeFrameMetadata
+import androidx.camera.camera2.pipe.testing.FakeGraphProcessor
 import androidx.camera.camera2.pipe.testing.FakeRequestMetadata
 import androidx.camera.camera2.pipe.testing.RobolectricCameraPipeTestRunner
 import com.google.common.truth.Truth.assertThat
@@ -63,6 +64,15 @@
     }
 
     @Test
+    fun testUnlock3AFailsImmediatelyWithoutRepeatingRequest() = runTest {
+        val graphProcessor2 = FakeGraphProcessor()
+        val controller3A =
+            Controller3A(graphProcessor2, fakeMetadata, graphProcessor2.graphState3A, listener3A)
+        val result = controller3A.unlock3A(ae = true)
+        assertThat(result.await().status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+    }
+
+    @Test
     fun testUnlockAe() = runTest {
         val unLock3AAsyncTask = async { controller3A.unlock3A(ae = true) }
 
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUpdate3ATest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUpdate3ATest.kt
index 75e21ef..8db6ff4 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUpdate3ATest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/Controller3AUpdate3ATest.kt
@@ -56,6 +56,20 @@
         Controller3A(graphProcessor, FakeCameraMetadata(), graphState3A, listener3A)
 
     @Test
+    fun testUpdate3AFailsImmediatelyWithoutRepeatingRequest() = runTest {
+        val graphProcessor2 = FakeGraphProcessor()
+        val controller3A =
+            Controller3A(
+                graphProcessor2,
+                FakeCameraMetadata(),
+                graphProcessor2.graphState3A,
+                listener3A
+            )
+        val result = controller3A.update3A(afMode = AfMode.OFF)
+        assertThat(result.await().status).isEqualTo(Result3A.Status.SUBMIT_FAILED)
+    }
+
+    @Test
     fun testUpdate3AUpdatesState3A() {
         initGraphProcessor()
 
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/GraphProcessorTest.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/GraphProcessorTest.kt
index d95bfd2..21931e0 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/GraphProcessorTest.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/graph/GraphProcessorTest.kt
@@ -442,13 +442,16 @@
                 arrayListOf(globalListener)
             )
 
+        // Submit a repeating request first to make sure we have one in progress.
+        graphProcessor.startRepeating(request1)
+        advanceUntilIdle()
+
         val result = async {
             graphProcessor.trySubmit(mapOf<CaptureRequest.Key<*>, Any>(CONTROL_AE_LOCK to false))
         }
         advanceUntilIdle()
 
         graphProcessor.onGraphStarted(graphRequestProcessor1)
-        graphProcessor.startRepeating(request1)
         advanceUntilIdle()
 
         assertThat(result.await()).isTrue()
@@ -465,6 +468,10 @@
                 arrayListOf(globalListener)
             )
 
+        // Submit a repeating request first to make sure we have one in progress.
+        graphProcessor.startRepeating(request1)
+        advanceUntilIdle()
+
         val result1 = async {
             graphProcessor.trySubmit(mapOf<CaptureRequest.Key<*>, Any>(CONTROL_AE_LOCK to false))
         }
@@ -477,9 +484,6 @@
         graphProcessor.onGraphStarted(graphRequestProcessor1)
         advanceUntilIdle()
 
-        graphProcessor.startRepeating(request1)
-        advanceUntilIdle()
-
         val event1 = fakeProcessor1.nextEvent()
         assertThat(event1.requestSequence?.repeating).isTrue()
         val event2 = fakeProcessor1.nextEvent()
@@ -493,6 +497,25 @@
     }
 
     @Test
+    fun trySubmitShouldReturnFalseWhenNoRepeatingRequestIsQueued() = runTest {
+        val graphProcessor =
+            GraphProcessorImpl(
+                FakeThreads.fromTestScope(this),
+                FakeGraphConfigs.graphConfig,
+                graphState3A,
+                this,
+                arrayListOf(globalListener)
+            )
+
+        graphProcessor.onGraphStarted(graphRequestProcessor1)
+        advanceUntilIdle()
+
+        val result =
+            graphProcessor.trySubmit(mapOf<CaptureRequest.Key<*>, Any>(CONTROL_AE_LOCK to true))
+        assertThat(result).isFalse()
+    }
+
+    @Test
     fun graphProcessorChangesGraphStateOnError() = runTest {
         val graphProcessor =
             GraphProcessorImpl(
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/FakeGraphProcessor.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/FakeGraphProcessor.kt
index 6f450b9..0541e1d 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/FakeGraphProcessor.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/FakeGraphProcessor.kt
@@ -63,6 +63,8 @@
         repeatingRequest = null
     }
 
+    override fun hasRepeatingRequest() = repeatingRequest != null
+
     override fun submit(request: Request) {
         submit(listOf(request))
     }
@@ -75,6 +77,8 @@
         if (closed) {
             return false
         }
+        if (repeatingRequest == null) return false
+
         val currProcessor = processor
         val currRepeatingRequest = repeatingRequest
         val requiredParameters = mutableMapOf<Any, Any?>()
diff --git a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/UpdateCounting3AStateListener.kt b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/UpdateCounting3AStateListener.kt
index 06ecbf1..eb81f6b 100644
--- a/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/UpdateCounting3AStateListener.kt
+++ b/camera/camera-camera2-pipe/src/test/java/androidx/camera/camera2/pipe/testing/UpdateCounting3AStateListener.kt
@@ -35,4 +35,6 @@
         updateCount++
         return listener.update(requestNumber, frameMetadata)
     }
+
+    override fun onRequestSequenceStopped() {}
 }
diff --git a/camera/camera-camera2/build.gradle b/camera/camera-camera2/build.gradle
index 8c0100e..b4ad3b0 100644
--- a/camera/camera-camera2/build.gradle
+++ b/camera/camera-camera2/build.gradle
@@ -88,7 +88,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Library Camera2 Implementation/Extensions"
+    name = "Camera2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Camera2 implementation and extensions for the Jetpack Camera Library, a " +
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
index 505da1e..2648c23 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
@@ -26,6 +26,8 @@
 import static android.hardware.DataSpace.TRANSFER_UNSPECIFIED;
 import static android.os.Build.VERSION.SDK_INT;
 
+import static androidx.camera.core.DynamicRange.HLG_10_BIT;
+
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
@@ -152,8 +154,6 @@
 @SdkSuppress(minSdkVersion = 21)
 @RequiresApi(21)
 public final class CaptureSessionTest {
-    private static final DynamicRange DYNAMIC_RANGE_HLG10 =
-            new DynamicRange(DynamicRange.FORMAT_HLG, DynamicRange.BIT_DEPTH_10_BIT);
 
     // Enumerate possible SDR transfer functions. This may need to be updated if more transfer
     // functions are added to the DataSpace class.
@@ -385,7 +385,7 @@
     public void openCaptureSessionWithHlgDynamicRange()
             throws ExecutionException, InterruptedException, TimeoutException {
         openCaptureSessionAndVerifyDynamicRangeApplied(
-                DYNAMIC_RANGE_HLG10,
+                HLG_10_BIT,
                 Collections.singleton(STANDARD_BT2020),
                 Collections.singleton(TRANSFER_HLG));
     }
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/ProcessingCaptureSessionTest.kt b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/ProcessingCaptureSessionTest.kt
index 0a26bfb..201f1c5 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/ProcessingCaptureSessionTest.kt
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/ProcessingCaptureSessionTest.kt
@@ -281,6 +281,29 @@
         ).isTrue()
     }
 
+    @Test
+    fun setSessionConfigWithoutSurface_stopPreviewFrame(): Unit = runBlocking(Dispatchers.Main) {
+        // Arrange
+        val cameraDevice = cameraDeviceHolder.get()!!
+        val captureSession = createProcessingCaptureSession()
+        captureSession.sessionConfig =
+            sessionConfigParameters.getActiveSessionConfigForRepeating()
+        captureSession.open(
+            sessionConfigParameters.getSessionConfigForOpen(), cameraDevice,
+            captureSessionOpenerBuilder.build()
+        ).awaitWithTimeout(3000)
+        sessionConfigParameters.assertPreviewImageReceived()
+
+        // Act.  set SessionConfig without the surface.
+        captureSession.sessionConfig =
+            sessionConfigParameters.getActiveSessionConfigForRepeating(
+                includePreviewSurface = false
+            )
+
+        // Assert: ensure stopRepeating is invoked.
+        sessionProcessor.assertStopRepeatingInvoked()
+    }
+
     private fun areParametersConfigIdentical(config1: Config, config2: Config): Boolean {
         val options1 = CaptureRequestOptions.Builder.from(config1).build()
         val options2 = CaptureRequestOptions.Builder.from(config2).build()
@@ -824,8 +847,13 @@
             return sessionBuilder.build()
         }
 
-        fun getActiveSessionConfigForRepeating(): SessionConfig {
+        fun getActiveSessionConfigForRepeating(
+            includePreviewSurface: Boolean = true
+        ): SessionConfig {
             return SessionConfig.Builder().apply {
+                if (includePreviewSurface) {
+                    addSurface(previewOutputDeferrableSurface)
+                }
                 setImplementationOptions(
                     CaptureRequestOptions.Builder()
                         .setCaptureRequestOption(
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraImpl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraImpl.java
index 1612a15..e820f5c7 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraImpl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraImpl.java
@@ -652,9 +652,16 @@
     @Override
     public void onUseCaseReset(@NonNull UseCase useCase) {
         Preconditions.checkNotNull(useCase);
-        String useCaseId = getUseCaseId(useCase);
         SessionConfig sessionConfig = useCase.getSessionConfig();
         UseCaseConfig<?> useCaseConfig = useCase.getCurrentConfig();
+        resetUseCase(getUseCaseId(useCase), sessionConfig, useCaseConfig);
+    }
+
+    private void resetUseCase(
+            @NonNull String useCaseId,
+            @NonNull SessionConfig sessionConfig,
+            @NonNull UseCaseConfig<?> useCaseConfig
+    ) {
         mExecutor.execute(() -> {
             debugLog("Use case " + useCaseId + " RESET");
             mUseCaseAttachState.updateUseCase(useCaseId, sessionConfig, useCaseConfig);
@@ -976,7 +983,20 @@
                 if (mMeteringRepeatingSession == null) {
                     mMeteringRepeatingSession = new MeteringRepeatingSession(
                             mCameraInfoInternal.getCameraCharacteristicsCompat(),
-                            mDisplayInfoManager);
+                            mDisplayInfoManager,
+                            () -> {
+                                if (!isMeteringRepeatingAttached()) {
+                                    return;
+                                }
+
+                                SessionConfig sessionConfigMeteringRepeating =
+                                        mMeteringRepeatingSession.getSessionConfig();
+                                UseCaseConfig<?> useCaseConfig =
+                                        mMeteringRepeatingSession.getUseCaseConfig();
+
+                                resetUseCase(getMeteringRepeatingId(mMeteringRepeatingSession),
+                                        sessionConfigMeteringRepeating, useCaseConfig);
+                            });
                 }
                 addMeteringRepeating();
             } else {
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/DynamicRangeResolver.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/DynamicRangeResolver.java
index dc6a497..cb3d0cf 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/DynamicRangeResolver.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/DynamicRangeResolver.java
@@ -19,9 +19,9 @@
 import static android.hardware.camera2.CameraCharacteristics.REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE;
 
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED;
-import static androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED;
-import static androidx.camera.core.DynamicRange.FORMAT_SDR;
-import static androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.ENCODING_HDR_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.ENCODING_SDR;
+import static androidx.camera.core.DynamicRange.ENCODING_UNSPECIFIED;
 
 import android.hardware.camera2.CameraCharacteristics;
 import android.os.Build;
@@ -56,8 +56,6 @@
 @RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
 final class DynamicRangeResolver {
     private static final String TAG = "DynamicRangeResolver";
-    private static final DynamicRange DYNAMIC_RANGE_HLG10 =
-            new DynamicRange(DynamicRange.FORMAT_HLG, DynamicRange.BIT_DEPTH_10_BIT);
     private final CameraCharacteristicsCompat mCharacteristics;
     private final DynamicRangesCompat mDynamicRangesInfo;
     private final boolean mIs10BitSupported;
@@ -120,7 +118,7 @@
         // We want to resolve and validate dynamic ranges in the following order:
         // 1. First validate fully defined dynamic ranges. No resolving is required here.
         // 2. Resolve and validate partially defined dynamic ranges, such as HDR_UNSPECIFIED or
-        // dynamic ranges with concrete formats but BIT_DEPTH_UNSPECIFIED. We can now potentially
+        // dynamic ranges with concrete encodings but BIT_DEPTH_UNSPECIFIED. We can now potentially
         // infer a dynamic range based on constraints of the fully defined dynamic ranges or
         // the list of supported HDR dynamic ranges.
         // 3. Finally, resolve and validate UNSPECIFIED dynamic ranges. These will resolve
@@ -207,7 +205,7 @@
      * <p>This uses existing fully-specified dynamic ranges, new fully-specified dynamic ranges,
      * dynamic range constraints and the list of supported dynamic ranges to exhaustively search
      * for a dynamic range if the requested dynamic range is not fully specified, i.e., it has an
-     * UNSPECIFIED format or UNSPECIFIED bitrate.
+     * UNSPECIFIED encoding or UNSPECIFIED bitrate.
      *
      * <p>Any dynamic range returned will be validated to work according to the constraints and
      * supported dynamic ranges provided.
@@ -234,9 +232,9 @@
 
         // Explicitly handle the case of SDR with unspecified bit depth.
         // SDR is only supported as 8-bit.
-        int requestedFormat = requestedDynamicRange.getFormat();
+        int requestedEncoding = requestedDynamicRange.getEncoding();
         int requestedBitDepth = requestedDynamicRange.getBitDepth();
-        if (requestedFormat == FORMAT_SDR && requestedBitDepth == BIT_DEPTH_UNSPECIFIED) {
+        if (requestedEncoding == ENCODING_SDR && requestedBitDepth == BIT_DEPTH_UNSPECIFIED) {
             if (combinedConstraints.contains(DynamicRange.SDR)) {
                 return DynamicRange.SDR;
             }
@@ -279,9 +277,9 @@
             return DynamicRange.SDR;
         }
 
-        // For unspecified HDR formats (10-bit or unspecified bit depth), we have a
-        // couple options: the device recommended 10-bit format or the mandated HLG format.
-        if (requestedFormat == FORMAT_HDR_UNSPECIFIED && (
+        // For unspecified HDR encodings (10-bit or unspecified bit depth), we have a
+        // couple options: the device recommended 10-bit encoding or the mandated HLG encoding.
+        if (requestedEncoding == ENCODING_HDR_UNSPECIFIED && (
                 requestedBitDepth == DynamicRange.BIT_DEPTH_10_BIT
                         || requestedBitDepth == BIT_DEPTH_UNSPECIFIED)) {
             Set<DynamicRange> hdrDefaultRanges = new LinkedHashSet<>();
@@ -296,7 +294,7 @@
             }
             // Attempt to fall back to HLG since it is a mandated required 10-bit
             // dynamic range.
-            hdrDefaultRanges.add(DYNAMIC_RANGE_HLG10);
+            hdrDefaultRanges.add(DynamicRange.HLG_10_BIT);
             resolvedDynamicRange = findSupportedHdrMatch(requestedDynamicRange,
                     hdrDefaultRanges, combinedConstraints);
             if (resolvedDynamicRange != null) {
@@ -384,18 +382,18 @@
             @NonNull Collection<DynamicRange> fullySpecifiedCandidateRanges,
             @NonNull Set<DynamicRange> constraints) {
         // SDR can never match with HDR
-        if (rangeToMatch.getFormat() == FORMAT_SDR) {
+        if (rangeToMatch.getEncoding() == ENCODING_SDR) {
             return null;
         }
 
         for (DynamicRange candidateRange : fullySpecifiedCandidateRanges) {
             Preconditions.checkNotNull(candidateRange,
                     "Fully specified DynamicRange cannot be null.");
-            int candidateFormat = candidateRange.getFormat();
+            int candidateEncoding = candidateRange.getEncoding();
             Preconditions.checkState(isFullySpecified(candidateRange),
-                    "Fully specified DynamicRange must have fully defined format.");
-            if (candidateFormat == FORMAT_SDR) {
-                // Only consider HDR formats
+                    "Fully specified DynamicRange must have fully defined encoding.");
+            if (candidateEncoding == ENCODING_SDR) {
+                // Only consider HDR encodings
                 continue;
             }
 
@@ -426,30 +424,30 @@
     }
 
     /**
-     * Returns {@code true} if the dynamic range is FORMAT_UNSPECIFIED and BIT_DEPTH_UNSPECIFIED.
+     * Returns {@code true} if the dynamic range is ENCODING_UNSPECIFIED and BIT_DEPTH_UNSPECIFIED.
      */
     private static boolean isFullyUnspecified(@NonNull DynamicRange dynamicRange) {
         return Objects.equals(dynamicRange, DynamicRange.UNSPECIFIED);
     }
 
     /**
-     * Returns {@code true} if both the format and bit depth are not unspecified types.
+     * Returns {@code true} if both the encoding and bit depth are not unspecified types.
      */
     private static boolean isFullySpecified(@NonNull DynamicRange dynamicRange) {
-        return dynamicRange.getFormat() != FORMAT_UNSPECIFIED
-                && dynamicRange.getFormat() != FORMAT_HDR_UNSPECIFIED
+        return dynamicRange.getEncoding() != ENCODING_UNSPECIFIED
+                && dynamicRange.getEncoding() != ENCODING_HDR_UNSPECIFIED
                 && dynamicRange.getBitDepth() != BIT_DEPTH_UNSPECIFIED;
     }
 
     /**
-     * Returns {@code true} if the dynamic range has an unspecified HDR format, a concrete
-     * format with unspecified bit depth, or a concrete bit depth.
+     * Returns {@code true} if the dynamic range has an unspecified HDR encoding, a concrete
+     * encoding with unspecified bit depth, or a concrete bit depth.
      */
     private static boolean isPartiallySpecified(@NonNull DynamicRange dynamicRange) {
-        return dynamicRange.getFormat() == FORMAT_HDR_UNSPECIFIED || (
-                dynamicRange.getFormat() != FORMAT_UNSPECIFIED
+        return dynamicRange.getEncoding() == ENCODING_HDR_UNSPECIFIED || (
+                dynamicRange.getEncoding() != ENCODING_UNSPECIFIED
                         && dynamicRange.getBitDepth() == BIT_DEPTH_UNSPECIFIED) || (
-                                dynamicRange.getFormat() == FORMAT_UNSPECIFIED
+                                dynamicRange.getEncoding() == ENCODING_UNSPECIFIED
                                         && dynamicRange.getBitDepth() != BIT_DEPTH_UNSPECIFIED);
     }
 
@@ -489,14 +487,14 @@
             @NonNull DynamicRange fullySpecifiedRange) {
         Preconditions.checkState(isFullySpecified(fullySpecifiedRange), "Fully specified range is"
                 + " not actually fully specified.");
-        if (testRange.getFormat() == FORMAT_HDR_UNSPECIFIED
-                && fullySpecifiedRange.getFormat() == FORMAT_SDR) {
+        if (testRange.getEncoding() == ENCODING_HDR_UNSPECIFIED
+                && fullySpecifiedRange.getEncoding() == ENCODING_SDR) {
             return false;
         }
 
-        if (testRange.getFormat() != FORMAT_HDR_UNSPECIFIED
-                && testRange.getFormat() != FORMAT_UNSPECIFIED
-                && testRange.getFormat() != fullySpecifiedRange.getFormat()) {
+        if (testRange.getEncoding() != ENCODING_HDR_UNSPECIFIED
+                && testRange.getEncoding() != ENCODING_UNSPECIFIED
+                && testRange.getEncoding() != fullySpecifiedRange.getEncoding()) {
             return false;
         }
 
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/MeteringRepeatingSession.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/MeteringRepeatingSession.java
index 86f8333..11782c2 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/MeteringRepeatingSession.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/MeteringRepeatingSession.java
@@ -57,31 +57,50 @@
     private DeferrableSurface mDeferrableSurface;
 
     @NonNull
-    private final SessionConfig mSessionConfig;
+    private SessionConfig mSessionConfig;
 
     @NonNull
     private final MeteringRepeatingConfig mConfigWithDefaults;
 
     @NonNull
+    private final Size mMeteringRepeatingSize;
+
+    @NonNull
     private final SupportedRepeatingSurfaceSize mSupportedRepeatingSurfaceSize =
             new SupportedRepeatingSurfaceSize();
 
+    interface SurfaceResetCallback {
+        void onSurfaceReset();
+    }
+
+    @Nullable
+    private final SurfaceResetCallback mSurfaceResetCallback;
+
     /** Creates a new instance of a {@link MeteringRepeatingSession}. */
     MeteringRepeatingSession(@NonNull CameraCharacteristicsCompat cameraCharacteristicsCompat,
-            @NonNull DisplayInfoManager displayInfoManager) {
+            @NonNull DisplayInfoManager displayInfoManager,
+            @Nullable SurfaceResetCallback surfaceResetCallback) {
         mConfigWithDefaults = new MeteringRepeatingConfig();
+        mSurfaceResetCallback = surfaceResetCallback;
 
+        mMeteringRepeatingSize = getProperPreviewSize(
+                cameraCharacteristicsCompat, displayInfoManager);
+        Logger.d(TAG, "MeteringSession SurfaceTexture size: " + mMeteringRepeatingSize);
+
+        mSessionConfig = createSessionConfig();
+    }
+
+    @NonNull
+    SessionConfig createSessionConfig() {
         // Create the metering DeferrableSurface
         SurfaceTexture surfaceTexture = new SurfaceTexture(0);
-        Size meteringSurfaceSize = getProperPreviewSize(
-                cameraCharacteristicsCompat, displayInfoManager);
-        Logger.d(TAG, "MeteringSession SurfaceTexture size: " + meteringSurfaceSize);
-        surfaceTexture.setDefaultBufferSize(meteringSurfaceSize.getWidth(),
-                meteringSurfaceSize.getHeight());
+
+        surfaceTexture.setDefaultBufferSize(mMeteringRepeatingSize.getWidth(),
+                mMeteringRepeatingSize.getHeight());
         Surface surface = new Surface(surfaceTexture);
 
         SessionConfig.Builder builder = SessionConfig.Builder.createFrom(mConfigWithDefaults,
-                meteringSurfaceSize);
+                mMeteringRepeatingSize);
         builder.setTemplateType(CameraDevice.TEMPLATE_PREVIEW);
 
         mDeferrableSurface = new ImmediateSurface(surface);
@@ -102,7 +121,14 @@
 
         builder.addSurface(mDeferrableSurface);
 
-        mSessionConfig = builder.build();
+        builder.addErrorListener((sessionConfig, error) -> {
+            mSessionConfig = createSessionConfig();
+            if (mSurfaceResetCallback != null) {
+                mSurfaceResetCallback.onSurfaceReset();
+            }
+        });
+
+        return builder.build();
     }
 
     @NonNull
@@ -200,5 +226,3 @@
     }
 
 }
-
-
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java
index da5e717..5c9eb4b 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java
@@ -173,12 +173,6 @@
                                                 "Surface closed", deferrableSurface));
                             }
 
-                            try {
-                                DeferrableSurfaces.incrementAll(mOutputSurfaces);
-                            } catch (DeferrableSurface.SurfaceClosedException e) {
-                                return Futures.immediateFailedFuture(e);
-                            }
-
                             OutputSurface previewOutputSurface = null;
                             OutputSurface captureOutputSurface = null;
                             OutputSurface analysisOutputSurface = null;
@@ -210,13 +204,24 @@
                             }
 
                             mProcessorState = ProcessorState.SESSION_INITIALIZED;
+                            try {
+                                DeferrableSurfaces.incrementAll(mOutputSurfaces);
+                            } catch (DeferrableSurface.SurfaceClosedException e) {
+                                return Futures.immediateFailedFuture(e);
+                            }
                             Logger.w(TAG, "== initSession (id=" + mInstanceId + ")");
-                            mProcessorSessionConfig = mSessionProcessor.initSession(
-                                    mCamera2CameraInfoImpl,
-                                    previewOutputSurface,
-                                    captureOutputSurface,
-                                    analysisOutputSurface
-                            );
+                            try {
+                                mProcessorSessionConfig = mSessionProcessor.initSession(
+                                        mCamera2CameraInfoImpl,
+                                        previewOutputSurface,
+                                        captureOutputSurface,
+                                        analysisOutputSurface
+                                );
+                            } catch (Throwable e) {
+                                // Ensure we decrement the output surfaces if initSession failed.
+                                DeferrableSurfaces.decrementAll(mOutputSurfaces);
+                                throw e;
+                            }
 
                             // DecrementAll the output surfaces when ProcessorSurface
                             // terminates.
@@ -571,10 +576,28 @@
                     CaptureRequestOptions.Builder.from(sessionConfig.getImplementationOptions())
                             .build();
             updateParameters(mSessionOptions, mStillCaptureOptions);
-            mSessionProcessor.startRepeating(mSessionProcessorCaptureCallback);
+
+            // We can't disable only preview stream but enable ImageAnalysis in Extensions.
+            // The best we can do is, if the preview stream is not in repeating request,
+            // stop the repeating request totally. This is needed to stop the preview when
+            // Preview surfaceProvider is set to null.
+            if (!hasPreviewSurface(sessionConfig.getRepeatingCaptureConfig())) {
+                mSessionProcessor.stopRepeating();
+            } else {
+                mSessionProcessor.startRepeating(mSessionProcessorCaptureCallback);
+            }
         }
     }
 
+    private boolean hasPreviewSurface(CaptureConfig captureConfig) {
+        for (DeferrableSurface surface : captureConfig.getSurfaces()) {
+            if (Objects.equals(surface.getContainerClass(), Preview.class)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     @Override
     public void setStreamUseCaseMap(@NonNull Map<DeferrableSurface, Long> streamUseCaseMap) {
         // No-op
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/params/DynamicRangeConversions.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/params/DynamicRangeConversions.java
index 0d2982b..91bee96 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/params/DynamicRangeConversions.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/params/DynamicRangeConversions.java
@@ -59,45 +59,37 @@
         DR_TO_PROFILE_MAP.put(DynamicRange.SDR, Collections.singletonList(STANDARD));
 
         // HLG
-        PROFILE_TO_DR_MAP.put(HLG10,
-                new DynamicRange(DynamicRange.FORMAT_HLG, DynamicRange.BIT_DEPTH_10_BIT));
+        PROFILE_TO_DR_MAP.put(HLG10, DynamicRange.HLG_10_BIT);
         DR_TO_PROFILE_MAP.put(PROFILE_TO_DR_MAP.get(HLG10), Collections.singletonList(HLG10));
 
         // HDR10
-        DynamicRange hdr10 = new DynamicRange(DynamicRange.FORMAT_HDR10,
-                DynamicRange.BIT_DEPTH_10_BIT);
-        PROFILE_TO_DR_MAP.put(HDR10, hdr10);
-        DR_TO_PROFILE_MAP.put(hdr10, Collections.singletonList(HDR10));
+        PROFILE_TO_DR_MAP.put(HDR10, DynamicRange.HDR10_10_BIT);
+        DR_TO_PROFILE_MAP.put(DynamicRange.HDR10_10_BIT, Collections.singletonList(HDR10));
 
         // HDR10+
-        DynamicRange hdr10Plus = new DynamicRange(DynamicRange.FORMAT_HDR10_PLUS,
-                DynamicRange.BIT_DEPTH_10_BIT);
-        PROFILE_TO_DR_MAP.put(HDR10_PLUS, hdr10Plus);
-        DR_TO_PROFILE_MAP.put(hdr10Plus, Collections.singletonList(HDR10_PLUS));
+        PROFILE_TO_DR_MAP.put(HDR10_PLUS, DynamicRange.HDR10_PLUS_10_BIT);
+        DR_TO_PROFILE_MAP.put(DynamicRange.HDR10_PLUS_10_BIT,
+                Collections.singletonList(HDR10_PLUS));
 
         // Dolby Vision 10-bit
-        DynamicRange dolbyVision10Bit = new DynamicRange(DynamicRange.FORMAT_DOLBY_VISION,
-                DynamicRange.BIT_DEPTH_10_BIT);
         // A list of the Camera2 10-bit dolby vision profiles ordered by priority. Any API that
-        // takes a DynamicRange with dolby vision format will attempt to convert to these
+        // takes a DynamicRange with dolby vision encoding will attempt to convert to these
         // profiles in order, using the first one that is supported. We will need to add a
         // mechanism for choosing between these
         List<Long> dolbyVision10BitProfilesOrdered = Arrays.asList(DOLBY_VISION_10B_HDR_OEM,
                 DOLBY_VISION_10B_HDR_OEM_PO, DOLBY_VISION_10B_HDR_REF, DOLBY_VISION_10B_HDR_REF_PO);
         for (Long profile : dolbyVision10BitProfilesOrdered) {
-            PROFILE_TO_DR_MAP.put(profile, dolbyVision10Bit);
+            PROFILE_TO_DR_MAP.put(profile, DynamicRange.DOLBY_VISION_10_BIT);
         }
-        DR_TO_PROFILE_MAP.put(dolbyVision10Bit, dolbyVision10BitProfilesOrdered);
+        DR_TO_PROFILE_MAP.put(DynamicRange.DOLBY_VISION_10_BIT, dolbyVision10BitProfilesOrdered);
 
         // Dolby vision 8-bit
-        DynamicRange dolbyVision8Bit = new DynamicRange(DynamicRange.FORMAT_DOLBY_VISION,
-                DynamicRange.BIT_DEPTH_8_BIT);
         List<Long> dolbyVision8BitProfilesOrdered = Arrays.asList(DOLBY_VISION_8B_HDR_OEM,
                 DOLBY_VISION_8B_HDR_OEM_PO, DOLBY_VISION_8B_HDR_REF, DOLBY_VISION_8B_HDR_REF_PO);
         for (Long profile : dolbyVision8BitProfilesOrdered) {
-            PROFILE_TO_DR_MAP.put(profile, dolbyVision8Bit);
+            PROFILE_TO_DR_MAP.put(profile, DynamicRange.DOLBY_VISION_8_BIT);
         }
-        DR_TO_PROFILE_MAP.put(dolbyVision8Bit, dolbyVision8BitProfilesOrdered);
+        DR_TO_PROFILE_MAP.put(DynamicRange.DOLBY_VISION_8_BIT, dolbyVision8BitProfilesOrdered);
     }
 
     /**
@@ -117,8 +109,8 @@
      * returned. The order in which profiles are checked for support is internally defined.
      *
      * <p>This will only return profiles for fully defined dynamic ranges. For instance, if the
-     * format returned by {@link DynamicRange#getFormat()} is
-     * {@link DynamicRange#FORMAT_HDR_UNSPECIFIED}, this will return {@code null}.
+     * format returned by {@link DynamicRange#getEncoding()} is
+     * {@link DynamicRange#ENCODING_HDR_UNSPECIFIED}, this will return {@code null}.
      */
     @DoNotInline
     @Nullable
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
index 3f2f6ea..2707bd14 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
@@ -18,6 +18,7 @@
 
 import static android.hardware.camera2.CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES;
 
+import static androidx.camera.core.DynamicRange.HLG_10_BIT;
 import static androidx.camera.core.DynamicRange.SDR;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -143,9 +144,6 @@
             new Range<>(12, 30),
             new Range<>(30, 30),
     };
-    private static final DynamicRange HLG10 = new DynamicRange(DynamicRange.FORMAT_HLG,
-            DynamicRange.BIT_DEPTH_10_BIT);
-
     private CameraCharacteristicsCompat mCameraCharacteristics0;
     private CameraManagerCompat mCameraManagerCompat;
     private ZoomControl mMockZoomControl;
@@ -701,7 +699,7 @@
                 CAMERA0_ID, mCameraManagerCompat);
 
         Set<DynamicRange> supportedDynamicRanges = cameraInfo.getSupportedDynamicRanges();
-        assertThat(supportedDynamicRanges).containsExactly(SDR, HLG10);
+        assertThat(supportedDynamicRanges).containsExactly(SDR, HLG_10_BIT);
     }
 
     @Config(maxSdk = 32)
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt
index d0ea2aa..1380b77 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt
@@ -51,13 +51,11 @@
 import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
 import androidx.camera.core.DynamicRange.BIT_DEPTH_8_BIT
 import androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED
-import androidx.camera.core.DynamicRange.FORMAT_DOLBY_VISION
-import androidx.camera.core.DynamicRange.FORMAT_HDR10
-import androidx.camera.core.DynamicRange.FORMAT_HDR10_PLUS
-import androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED
-import androidx.camera.core.DynamicRange.FORMAT_HLG
-import androidx.camera.core.DynamicRange.FORMAT_SDR
-import androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED
+import androidx.camera.core.DynamicRange.ENCODING_DOLBY_VISION
+import androidx.camera.core.DynamicRange.ENCODING_HDR_UNSPECIFIED
+import androidx.camera.core.DynamicRange.ENCODING_SDR
+import androidx.camera.core.DynamicRange.ENCODING_UNSPECIFIED
+import androidx.camera.core.DynamicRange.HLG_10_BIT
 import androidx.camera.core.DynamicRange.SDR
 import androidx.camera.core.UseCase
 import androidx.camera.core.impl.AttachedSurfaceInfo
@@ -1729,7 +1727,7 @@
             useCase to MAXIMUM_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            useCase to DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            useCase to HLG_10_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1751,7 +1749,7 @@
             useCase to MAXIMUM_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            useCase to DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT)
+            useCase to DynamicRange.HDR10_10_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1768,13 +1766,13 @@
     fun dynamicRangeResolver_returnsDolbyVision8_dueToSupportedDynamicRanges() {
         val useCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_HDR_UNSPECIFIED, BIT_DEPTH_8_BIT)
+            dynamicRange = DynamicRange(ENCODING_HDR_UNSPECIFIED, BIT_DEPTH_8_BIT)
         )
         val useCaseExpectedSizeMap = mapOf(
             useCase to MAXIMUM_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            useCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            useCase to DynamicRange.DOLBY_VISION_8_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1789,13 +1787,13 @@
     fun dynamicRangeResolver_returnsDolbyVision8_fromUnspecifiedBitDepth() {
         val useCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
+            dynamicRange = DynamicRange(ENCODING_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
         )
         val useCaseExpectedSizeMap = mapOf(
             useCase to MAXIMUM_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            useCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            useCase to DynamicRange.DOLBY_VISION_8_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1810,13 +1808,13 @@
     fun dynamicRangeResolver_returnsDolbyVision10_fromUnspecifiedBitDepth() {
         val useCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
+            dynamicRange = DynamicRange(ENCODING_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
         )
         val useCaseExpectedSizeMap = mapOf(
             useCase to MAXIMUM_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            useCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT)
+            useCase to DynamicRange.DOLBY_VISION_10_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1832,13 +1830,13 @@
     fun dynamicRangeResolver_returnsDolbyVision8_fromUnspecifiedHdrWithUnspecifiedBitDepth() {
         val useCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_HDR_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
+            dynamicRange = DynamicRange(ENCODING_HDR_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
         )
         val useCaseExpectedSizeMap = mapOf(
             useCase to MAXIMUM_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            useCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            useCase to DynamicRange.DOLBY_VISION_8_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1853,13 +1851,13 @@
     fun dynamicRangeResolver_returnsDolbyVision10_fromUnspecifiedHdrWithUnspecifiedBitDepth() {
         val useCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_HDR_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
+            dynamicRange = DynamicRange(ENCODING_HDR_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
         )
         val useCaseExpectedSizeMap = mapOf(
             useCase to MAXIMUM_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            useCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT)
+            useCase to DynamicRange.DOLBY_VISION_10_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1876,19 +1874,19 @@
     fun dynamicRangeResolver_returnsDolbyVision8_withUndefinedBitDepth_andFullyDefinedHlg10() {
         val videoUseCase = createUseCase(
             CaptureType.VIDEO_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            dynamicRange = HLG_10_BIT
         )
         val previewUseCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
+            dynamicRange = DynamicRange(ENCODING_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
         )
         val useCaseExpectedSizeMap = mutableMapOf(
             videoUseCase to RECORD_SIZE,
             previewUseCase to PREVIEW_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            videoUseCase to DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT),
-            previewUseCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            videoUseCase to HLG_10_BIT,
+            previewUseCase to DynamicRange.DOLBY_VISION_8_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1905,12 +1903,12 @@
         // VideoCapture partially defined dynamic range
         val videoUseCase = createUseCase(
             CaptureType.VIDEO_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HDR_UNSPECIFIED, BIT_DEPTH_10_BIT)
+            dynamicRange = DynamicRange.HDR_UNSPECIFIED_10_BIT
         )
         // Preview fully defined dynamic range
         val previewUseCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT),
+            dynamicRange = DynamicRange.DOLBY_VISION_8_BIT,
 
             )
         val useCaseExpectedSizeMap = mutableMapOf(
@@ -1918,8 +1916,8 @@
             previewUseCase to PREVIEW_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            videoUseCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT),
-            previewUseCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            videoUseCase to DynamicRange.DOLBY_VISION_10_BIT,
+            previewUseCase to DynamicRange.DOLBY_VISION_8_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -1946,8 +1944,8 @@
             previewUseCase to PREVIEW_SIZE
         )
         val useCaseExpectedDynamicRangeMap = mapOf(
-            previewUseCase to DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT),
-            videoUseCase to DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            previewUseCase to HLG_10_BIT,
+            videoUseCase to HLG_10_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -2001,7 +1999,7 @@
     fun dynamicRangeResolver_resolvesToSdr8Bit_whenSdrWithUnspecifiedBitDepthProvided() {
         // Preview unspecified dynamic range
         val useCase = createUseCase(CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_SDR, BIT_DEPTH_UNSPECIFIED)
+            dynamicRange = DynamicRange(ENCODING_SDR, BIT_DEPTH_UNSPECIFIED)
         )
 
         val useCaseExpectedSizeMap = mutableMapOf(
@@ -2023,12 +2021,12 @@
         // VideoCapture has 10-bit HDR range with constraint for 8-bit non-SDR range
         val videoUseCase = createUseCase(
             CaptureType.VIDEO_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT)
+            dynamicRange = DynamicRange.DOLBY_VISION_10_BIT
         )
-        // Preview unspecified format but 8-bit bit depth
+        // Preview unspecified encoding but 8-bit bit depth
         val previewUseCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_UNSPECIFIED, BIT_DEPTH_8_BIT)
+            dynamicRange = DynamicRange(ENCODING_UNSPECIFIED, BIT_DEPTH_8_BIT)
         )
 
         val useCaseExpectedSizeMap = mutableMapOf(
@@ -2037,8 +2035,8 @@
         )
 
         val useCaseExpectedDynamicRangeMap = mapOf(
-            videoUseCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT),
-            previewUseCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            videoUseCase to DynamicRange.DOLBY_VISION_10_BIT,
+            previewUseCase to DynamicRange.DOLBY_VISION_8_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -2054,7 +2052,7 @@
     fun dynamicRangeResolver_resolvesToSdr_forUnspecified8Bit_whenNoOtherDynamicRangesPresent() {
         val useCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_UNSPECIFIED, BIT_DEPTH_8_BIT)
+            dynamicRange = DynamicRange(ENCODING_UNSPECIFIED, BIT_DEPTH_8_BIT)
         )
 
         val useCaseExpectedSizeMap = mutableMapOf(
@@ -2078,12 +2076,12 @@
         // VideoCapture fully resolved Dolby Vision 8-bit
         val videoUseCase = createUseCase(
             CaptureType.VIDEO_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            dynamicRange = DynamicRange.DOLBY_VISION_8_BIT
         )
-        // Preview unspecified format / 8-bit
+        // Preview unspecified encoding / 8-bit
         val previewUseCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
+            dynamicRange = DynamicRange.UNSPECIFIED
         )
 
         // Since there are no 10-bit dynamic ranges, the 10-bit resolution table isn't used.
@@ -2095,8 +2093,8 @@
         )
 
         val useCaseExpectedDynamicRangeMap = mapOf(
-            videoUseCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT),
-            previewUseCase to DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
+            videoUseCase to DynamicRange.DOLBY_VISION_8_BIT,
+            previewUseCase to DynamicRange.DOLBY_VISION_8_BIT
         )
 
         getSuggestedSpecsAndVerify(
@@ -2112,7 +2110,7 @@
         // JPEG use case can't be attached with an existing PRIV + YUV in the 10-bit tables
         val useCase = createUseCase(
             CaptureType.IMAGE_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            dynamicRange = HLG_10_BIT
         )
         val useCaseExpectedSizeMap = mapOf(
             // Size would be valid for LIMITED table
@@ -2161,7 +2159,7 @@
     fun dynamicRangeConstraints_causeAutoResolutionToThrow() {
         val useCase = createUseCase(
             CaptureType.IMAGE_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            dynamicRange = HLG_10_BIT
         )
         val useCaseExpectedSizeMap = mapOf(
             // Size would be valid for 10-bit table within constraints
@@ -2175,7 +2173,7 @@
             ),
             ImageFormat.PRIVATE,
             PREVIEW_SIZE,
-            DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT),
+            DynamicRange.HDR10_10_BIT,
             listOf(CaptureType.PREVIEW),
             useCase.currentConfig,
             /*targetFrameRate=*/null
@@ -2187,7 +2185,7 @@
             ),
             ImageFormat.YUV_420_888,
             RECORD_SIZE,
-            DynamicRange(FORMAT_HDR10_PLUS, BIT_DEPTH_10_BIT),
+            DynamicRange.HDR10_PLUS_10_BIT,
             listOf(CaptureType.VIDEO_CAPTURE),
             useCase.currentConfig,
             /*targetFrameRate=*/null
@@ -2219,7 +2217,7 @@
         // JPEG use case can be attached with an existing PRIV + PRIV in the 10-bit tables
         val useCase = createUseCase(
             CaptureType.IMAGE_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            dynamicRange = HLG_10_BIT
         )
         val useCaseExpectedSizeMap = mapOf(
             // Size is valid for 10-bit table within constraints
@@ -2265,7 +2263,7 @@
         // VideoCapture HLG dynamic range
         val videoUseCase = createUseCase(
             CaptureType.VIDEO_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            dynamicRange = HLG_10_BIT
         )
         // Preview SDR dynamic range
         val previewUseCase = createUseCase(
@@ -2294,7 +2292,7 @@
         // VideoCapture HLG dynamic range
         val videoUseCase = createUseCase(
             CaptureType.VIDEO_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            dynamicRange = HLG_10_BIT
         )
         // Preview SDR dynamic range
         val previewUseCase = createUseCase(
@@ -2321,12 +2319,12 @@
         // VideoCapture HDR10 dynamic range
         val videoUseCase = createUseCase(
             CaptureType.VIDEO_CAPTURE,
-            dynamicRange = DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT)
+            dynamicRange = DynamicRange.HDR10_10_BIT
         )
         // Preview HDR10_PLUS dynamic range
         val previewUseCase = createUseCase(
             CaptureType.PREVIEW,
-            dynamicRange = DynamicRange(FORMAT_HDR10_PLUS, BIT_DEPTH_10_BIT)
+            dynamicRange = DynamicRange.HDR10_PLUS_10_BIT
         )
 
         val useCaseExpectedSizeMap = mutableMapOf(
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/params/DynamicRangesCompatTest.kt b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/params/DynamicRangesCompatTest.kt
index 56d280e..f6d0ab7 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/params/DynamicRangesCompatTest.kt
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/params/DynamicRangesCompatTest.kt
@@ -30,13 +30,11 @@
 import androidx.camera.camera2.internal.HLG10_SDR_CONSTRAINED
 import androidx.camera.camera2.internal.HLG10_UNCONSTRAINED
 import androidx.camera.camera2.internal.compat.CameraCharacteristicsCompat
-import androidx.camera.core.DynamicRange
-import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
-import androidx.camera.core.DynamicRange.BIT_DEPTH_8_BIT
-import androidx.camera.core.DynamicRange.FORMAT_DOLBY_VISION
-import androidx.camera.core.DynamicRange.FORMAT_HDR10
-import androidx.camera.core.DynamicRange.FORMAT_HDR10_PLUS
-import androidx.camera.core.DynamicRange.FORMAT_HLG
+import androidx.camera.core.DynamicRange.DOLBY_VISION_10_BIT
+import androidx.camera.core.DynamicRange.DOLBY_VISION_8_BIT
+import androidx.camera.core.DynamicRange.HDR10_10_BIT
+import androidx.camera.core.DynamicRange.HDR10_PLUS_10_BIT
+import androidx.camera.core.DynamicRange.HLG_10_BIT
 import androidx.camera.core.DynamicRange.SDR
 import com.google.common.truth.Truth.assertThat
 import org.junit.Assert.assertThrows
@@ -52,15 +50,6 @@
 @DoNotInstrument
 @Config(minSdk = Build.VERSION_CODES.LOLLIPOP)
 class DynamicRangesCompatTest {
-
-    companion object {
-        val DYNAMIC_RANGE_HLG10 = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
-        val DYNAMIC_RANGE_HDR10 = DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT)
-        val DYNAMIC_RANGE_HDR10_PLUS = DynamicRange(FORMAT_HDR10_PLUS, BIT_DEPTH_10_BIT)
-        val DYNAMIC_RANGE_DOLBY_VISION_10B = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT)
-        val DYNAMIC_RANGE_DOLBY_VISION_8B = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_8_BIT)
-    }
-
     @Config(minSdk = Build.VERSION_CODES.TIRAMISU)
     @Test
     fun canWrapAndUnwrapDynamicRangeProfiles() {
@@ -74,14 +63,14 @@
     @Test
     fun canSupportDynamicRangeFromHlg10Profile() {
         val dynamicRangesCompat = DynamicRangesCompat.toDynamicRangesCompat(HLG10_UNCONSTRAINED)
-        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(DYNAMIC_RANGE_HLG10)
+        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(HLG_10_BIT)
     }
 
     @Config(minSdk = Build.VERSION_CODES.TIRAMISU)
     @Test
     fun canSupportDynamicRangeFromHdr10Profile() {
         val dynamicRangesCompat = DynamicRangesCompat.toDynamicRangesCompat(HDR10_UNCONSTRAINED)
-        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(DYNAMIC_RANGE_HDR10)
+        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(HDR10_10_BIT)
     }
 
     @Config(minSdk = Build.VERSION_CODES.TIRAMISU)
@@ -89,7 +78,7 @@
     fun canSupportDynamicRangeFromHdr10PlusProfile() {
         val dynamicRangesCompat =
             DynamicRangesCompat.toDynamicRangesCompat(HDR10_PLUS_UNCONSTRAINED)
-        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(DYNAMIC_RANGE_HDR10_PLUS)
+        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(HDR10_PLUS_10_BIT)
     }
 
     @Config(minSdk = Build.VERSION_CODES.TIRAMISU)
@@ -97,9 +86,7 @@
     fun canSupportDynamicRangeFromDolbyVision10bProfile() {
         val dynamicRangesCompat =
             DynamicRangesCompat.toDynamicRangesCompat(DOLBY_VISION_10B_UNCONSTRAINED)
-        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(
-            DYNAMIC_RANGE_DOLBY_VISION_10B
-        )
+        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(DOLBY_VISION_10_BIT)
     }
 
     @Config(minSdk = Build.VERSION_CODES.TIRAMISU)
@@ -107,9 +94,7 @@
     fun canSupportDynamicRangeFromDolbyVision8bProfile() {
         val dynamicRangesCompat =
             DynamicRangesCompat.toDynamicRangesCompat(DOLBY_VISION_8B_UNCONSTRAINED)
-        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(
-            DYNAMIC_RANGE_DOLBY_VISION_8B
-        )
+        assertThat(dynamicRangesCompat?.supportedDynamicRanges).contains(DOLBY_VISION_8_BIT)
     }
 
     @Config(minSdk = Build.VERSION_CODES.TIRAMISU)
@@ -121,20 +106,20 @@
         ).containsExactly(SDR)
         assertThat(
             hlg10ConstrainedWrapped?.getDynamicRangeCaptureRequestConstraints(
-                DYNAMIC_RANGE_HLG10
+                HLG_10_BIT
             )
-        ).containsExactly(DYNAMIC_RANGE_HLG10)
+        ).containsExactly(HLG_10_BIT)
 
         val hlg10SdrConstrainedWrapped =
             DynamicRangesCompat.toDynamicRangesCompat(HLG10_SDR_CONSTRAINED)
         assertThat(
             hlg10SdrConstrainedWrapped?.getDynamicRangeCaptureRequestConstraints(SDR)
-        ).containsExactly(SDR, DYNAMIC_RANGE_HLG10)
+        ).containsExactly(SDR, HLG_10_BIT)
         assertThat(
             hlg10SdrConstrainedWrapped?.getDynamicRangeCaptureRequestConstraints(
-                DYNAMIC_RANGE_HLG10
+                HLG_10_BIT
             )
-        ).containsExactly(DYNAMIC_RANGE_HLG10, SDR)
+        ).containsExactly(HLG_10_BIT, SDR)
 
         val hlg10Hdr10ConstrainedWrapped =
             DynamicRangesCompat.toDynamicRangesCompat(HLG10_HDR10_CONSTRAINED)
@@ -143,14 +128,12 @@
         ).containsExactly(SDR)
         assertThat(
             hlg10Hdr10ConstrainedWrapped?.getDynamicRangeCaptureRequestConstraints(
-                DYNAMIC_RANGE_HLG10
+                HLG_10_BIT
             )
-        ).containsExactly(DYNAMIC_RANGE_HLG10, DYNAMIC_RANGE_HDR10)
+        ).containsExactly(HLG_10_BIT, HDR10_10_BIT)
         assertThat(
-            hlg10Hdr10ConstrainedWrapped?.getDynamicRangeCaptureRequestConstraints(
-                DYNAMIC_RANGE_HDR10
-            )
-        ).containsExactly(DYNAMIC_RANGE_HDR10, DYNAMIC_RANGE_HLG10)
+            hlg10Hdr10ConstrainedWrapped?.getDynamicRangeCaptureRequestConstraints(HDR10_10_BIT)
+        ).containsExactly(HDR10_10_BIT, HLG_10_BIT)
     }
 
     @Config(minSdk = Build.VERSION_CODES.TIRAMISU)
@@ -160,9 +143,7 @@
             DynamicRangesCompat.toDynamicRangesCompat(DOLBY_VISION_10B_UNCONSTRAINED_SLOW)
         assertThat(dynamicRangesCompat?.isExtraLatencyPresent(SDR)).isFalse()
         assertThat(
-            dynamicRangesCompat?.isExtraLatencyPresent(
-                DYNAMIC_RANGE_DOLBY_VISION_10B
-            )
+            dynamicRangesCompat?.isExtraLatencyPresent(DOLBY_VISION_10_BIT)
         ).isTrue()
     }
 
@@ -171,7 +152,7 @@
     fun canProduceDynamicRangeWithoutConstraints() {
         val dynamicRangesCompat = DynamicRangesCompat.toDynamicRangesCompat(HLG10_UNCONSTRAINED)
         assertThat(
-            dynamicRangesCompat?.getDynamicRangeCaptureRequestConstraints(DYNAMIC_RANGE_HLG10)
+            dynamicRangesCompat?.getDynamicRangeCaptureRequestConstraints(HLG_10_BIT)
         ).isEmpty()
     }
 
@@ -226,20 +207,16 @@
             assertThat(dynamicRangesCompat.supportedDynamicRanges).containsExactly(SDR)
         } else {
             assertThat(dynamicRangesCompat.supportedDynamicRanges).containsExactly(
-                SDR, DYNAMIC_RANGE_DOLBY_VISION_8B
+                SDR, DOLBY_VISION_8_BIT
             )
         }
 
         assertThrows(IllegalArgumentException::class.java) {
-            dynamicRangesCompat.getDynamicRangeCaptureRequestConstraints(
-                DYNAMIC_RANGE_DOLBY_VISION_10B
-            )
+            dynamicRangesCompat.getDynamicRangeCaptureRequestConstraints(DOLBY_VISION_10_BIT)
         }
 
         assertThrows(IllegalArgumentException::class.java) {
-            dynamicRangesCompat.isExtraLatencyPresent(
-                DYNAMIC_RANGE_DOLBY_VISION_10B
-            )
+            dynamicRangesCompat.isExtraLatencyPresent(DOLBY_VISION_10_BIT)
         }
     }
 
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/quirk/CamcorderProfileResolutionQuirkTest.kt b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/quirk/CamcorderProfileResolutionQuirkTest.kt
index 5779b96..83defcab 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/quirk/CamcorderProfileResolutionQuirkTest.kt
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/quirk/CamcorderProfileResolutionQuirkTest.kt
@@ -29,8 +29,8 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
+import org.mockito.Mockito.`when`
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/concurrent/Camera2CameraCoordinatorTest.kt b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/concurrent/Camera2CameraCoordinatorTest.kt
index c526cd1..5354bb1 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/concurrent/Camera2CameraCoordinatorTest.kt
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/concurrent/Camera2CameraCoordinatorTest.kt
@@ -46,7 +46,6 @@
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
 import org.robolectric.shadow.api.Shadow
-
 import org.robolectric.shadows.ShadowCameraCharacteristics
 import org.robolectric.shadows.ShadowCameraManager
 
diff --git a/camera/camera-core/build.gradle b/camera/camera-core/build.gradle
index c789d6d..90360e1 100644
--- a/camera/camera-core/build.gradle
+++ b/camera/camera-core/build.gradle
@@ -111,7 +111,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Core Library"
+    name = "Camera Core"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Core components for the Jetpack Camera Library, a library providing a " +
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/AndroidImageProxyTest.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/AndroidImageProxyTest.kt
index a8dc00c..eafedc5 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/AndroidImageProxyTest.kt
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/AndroidImageProxyTest.kt
@@ -22,15 +22,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
+import com.google.common.truth.Truth.assertThat
+import java.nio.ByteBuffer
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.verify
-import java.nio.ByteBuffer
-
-import com.google.common.truth.Truth.assertThat
+import org.mockito.Mockito.`when`
 
 /**
  * Unit tests for {@link AndroidImageProxy}.
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/JpegBytes2DiskDeviceTest.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/JpegBytes2DiskDeviceTest.kt
index d414a20..1a60fa7 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/JpegBytes2DiskDeviceTest.kt
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/JpegBytes2DiskDeviceTest.kt
@@ -19,22 +19,20 @@
 import android.graphics.BitmapFactory
 import android.graphics.ImageFormat
 import android.graphics.Matrix
-import androidx.camera.core.imagecapture.Utils.CAMERA_CAPTURE_RESULT
-import androidx.camera.core.imagecapture.Utils.HEIGHT
-import androidx.camera.core.imagecapture.Utils.ROTATION_DEGREES
-import androidx.camera.core.imagecapture.Utils.WIDTH
-import androidx.camera.core.imagecapture.Utils.TEMP_FILE
-
 import android.graphics.Rect
 import android.util.Size
 import androidx.camera.core.ImageCapture
+import androidx.camera.core.imagecapture.Utils.CAMERA_CAPTURE_RESULT
+import androidx.camera.core.imagecapture.Utils.HEIGHT
+import androidx.camera.core.imagecapture.Utils.ROTATION_DEGREES
+import androidx.camera.core.imagecapture.Utils.TEMP_FILE
+import androidx.camera.core.imagecapture.Utils.WIDTH
 import androidx.camera.core.impl.utils.Exif
 import androidx.camera.core.processing.Packet
 import androidx.camera.testing.ExifUtil
+import androidx.camera.testing.TestImageUtil.createBitmap
 import androidx.camera.testing.TestImageUtil.createJpegBytes
 import androidx.camera.testing.TestImageUtil.getAverageDiff
-import androidx.camera.testing.TestImageUtil.createBitmap
-
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/utils/ExifOutputStreamTest.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/utils/ExifOutputStreamTest.kt
index c6386b0..5945f0a 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/utils/ExifOutputStreamTest.kt
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/utils/ExifOutputStreamTest.kt
@@ -23,8 +23,8 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import java.io.File
+import org.junit.Test
 
 @LargeTest
 @SdkSuppress(minSdkVersion = 21)
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/utils/ZslRingBufferTest.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/utils/ZslRingBufferTest.kt
index 76d4471..63fcf61 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/utils/ZslRingBufferTest.kt
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/utils/ZslRingBufferTest.kt
@@ -31,11 +31,11 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.any
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when`
 
 @RunWith(JUnit4::class)
 @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/DynamicRange.java b/camera/camera-core/src/main/java/androidx/camera/core/DynamicRange.java
index e1e221a..df198ab 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/DynamicRange.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/DynamicRange.java
@@ -24,35 +24,56 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-/** A representation of the dynamic range of an image. */
+/**
+ * A representation of the dynamic range of an image.
+ *
+ * <p>The dynamic range specifies an encoding for how pixels will be displayed on screen along
+ * with the number of bits used to encode each pixel. In general, the encoding represents a set
+ * of operations applied to each pixel to expand the range of light and dark pixels on a
+ * specific screen. The bit depth represents the discrete number of steps those pixels can assume
+ * between the lightest and darkest pixels.
+ *
+ * <p>A category of dynamic ranges called high-dynamic range (HDR) are able to encode brighter
+ * highlights, darker shadows, and richer color. This class contains constants for specific HDR
+ * dynamic ranges, such as {@link DynamicRange#HLG_10_BIT}, but also unspecified HDR dynamic
+ * ranges, such as {@link DynamicRange#HDR_UNSPECIFIED_10_BIT}. When used with a camera API, such
+ * as {@link androidx.camera.video.VideoCapture.Builder#setDynamicRange(DynamicRange)}, these
+ * unspecified dynamic ranges will use device defaults as the HDR encoding.
+ *
+ * <p>The legacy behavior of most devices is to capture in standard dynamic range (SDR), which is
+ * represented by {@link DynamicRange#SDR}. This will be the default dynamic range encoding for
+ * most APIs taking dynamic range unless otherwise specified.
+ *
+ * @see androidx.camera.video.VideoCapture.Builder#setDynamicRange(DynamicRange)
+ */
 @RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public final class DynamicRange {
     /**
-     * An unspecified dynamic range format which allows the device to determine the underlying
-     * dynamic range format.
+     * An unspecified dynamic range encoding which allows the device to determine the underlying
+     * dynamic range encoding.
      */
-    public static final int FORMAT_UNSPECIFIED = 0;
+    public static final int ENCODING_UNSPECIFIED = 0;
 
-    /** Standard Dynamic Range (SDR) format. */
-    public static final int FORMAT_SDR = 1;
+    /** Standard Dynamic Range (SDR) encoding. */
+    public static final int ENCODING_SDR = 1;
 
     //------------------------------------------------------------------------------//
-    //                            HDR Formats                                       //
+    //                            HDR Encodings                                     //
     //------------------------------------------------------------------------------//
     /**
-     * An unspecified dynamic range format which allows the device to determine the
-     * underlying dynamic range format, limited to High Dynamic Range (HDR) encodings.
+     * An unspecified dynamic range encoding which allows the device to determine the
+     * underlying dynamic range encoding, limited to High Dynamic Range (HDR) encodings.
      */
-    public static final int FORMAT_HDR_UNSPECIFIED = 2;
-    /** Hybrid Log Gamma (HLG) dynamic range format. */
-    public static final int FORMAT_HLG = FORMAT_HDR_UNSPECIFIED + 1;
-    /** HDR10 dynamic range format. */
-    public static final int FORMAT_HDR10 = FORMAT_HDR_UNSPECIFIED + 2;
-    /** HDR10+ dynamic range format. */
-    public static final int FORMAT_HDR10_PLUS = FORMAT_HDR_UNSPECIFIED + 3;
-    /** Dolby Vision dynamic range format. */
-    public static final int FORMAT_DOLBY_VISION = FORMAT_HDR_UNSPECIFIED + 4;
+    public static final int ENCODING_HDR_UNSPECIFIED = 2;
+    /** Hybrid Log Gamma (HLG) dynamic range encoding. */
+    public static final int ENCODING_HLG = ENCODING_HDR_UNSPECIFIED + 1;
+    /** HDR10 dynamic range encoding. */
+    public static final int ENCODING_HDR10 = ENCODING_HDR_UNSPECIFIED + 2;
+    /** HDR10+ dynamic range encoding. */
+    public static final int ENCODING_HDR10_PLUS = ENCODING_HDR_UNSPECIFIED + 3;
+    /** Dolby Vision dynamic range encoding. */
+    public static final int ENCODING_DOLBY_VISION = ENCODING_HDR_UNSPECIFIED + 4;
     //------------------------------------------------------------------------------//
 
     /** Bit depth is unspecified and may be determined automatically by the device. */
@@ -63,10 +84,11 @@
     public static final int BIT_DEPTH_10_BIT = 10;
 
     @RestrictTo(RestrictTo.Scope.LIBRARY)
-    @IntDef({FORMAT_UNSPECIFIED, FORMAT_SDR, FORMAT_HDR_UNSPECIFIED, FORMAT_HLG, FORMAT_HDR10,
-            FORMAT_HDR10_PLUS, FORMAT_DOLBY_VISION})
+    @IntDef({ENCODING_UNSPECIFIED, ENCODING_SDR, ENCODING_HDR_UNSPECIFIED, ENCODING_HLG,
+            ENCODING_HDR10,
+            ENCODING_HDR10_PLUS, ENCODING_DOLBY_VISION})
     @Retention(RetentionPolicy.SOURCE)
-    public @interface DynamicRangeFormat {
+    public @interface DynamicRangeEncoding {
     }
 
     @RestrictTo(RestrictTo.Scope.LIBRARY)
@@ -75,67 +97,155 @@
     public @interface BitDepth {
     }
 
+    //------------------------------------------------------------------------------//
+    //                         Pre-defined DynamicRanges                            //
+    //------------------------------------------------------------------------------//
     /**
-     * A dynamic range with unspecified format and bit depth
+     * A dynamic range with unspecified encoding and bit depth.
      *
      * <p>The dynamic range is unspecified and may defer to device defaults when used to select a
      * dynamic range.
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_UNSPECIFIED
+     *   Bit Depth: BIT_DEPTH_UNSPECIFIED
+     * </pre>
      */
     @NonNull
-    public static final DynamicRange UNSPECIFIED = new DynamicRange(FORMAT_UNSPECIFIED,
+    public static final DynamicRange UNSPECIFIED = new DynamicRange(ENCODING_UNSPECIFIED,
             BIT_DEPTH_UNSPECIFIED);
 
-    /** A dynamic range representing 8-bit standard dynamic range (SDR). */
+    /**
+     * A dynamic range representing 8-bit standard dynamic range (SDR).
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_SDR
+     *   Bit Depth: BIT_DEPTH_8_BIT
+     * </pre>
+     */
     @NonNull
-    public static final DynamicRange SDR = new DynamicRange(FORMAT_SDR, BIT_DEPTH_8_BIT);
+    public static final DynamicRange SDR = new DynamicRange(ENCODING_SDR, BIT_DEPTH_8_BIT);
 
     /**
-     * A dynamic range representing 10-bit high dynamic range (HDR) with unspecified format.
+     * A dynamic range representing 10-bit high dynamic range (HDR) with unspecified encoding.
      *
-     * <p>The HDR format is unspecified, and may defer to device defaults
+     * <p>The HDR encoding is unspecified, and may defer to device defaults
      * when used to select a dynamic range. In this case, the dynamic range will be limited to
      * 10-bit high dynamic ranges.
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_HDR_UNSPECIFIED
+     *   Bit Depth: BIT_DEPTH_10_BIT
+     * </pre>
      */
     @NonNull
     public static final DynamicRange HDR_UNSPECIFIED_10_BIT =
-            new DynamicRange(FORMAT_HDR_UNSPECIFIED, BIT_DEPTH_10_BIT);
+            new DynamicRange(ENCODING_HDR_UNSPECIFIED, BIT_DEPTH_10_BIT);
 
-    private final @DynamicRangeFormat int mFormat;
+    /**
+     * A 10-bit high-dynamic range with HLG encoding.
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_HLG
+     *   Bit Depth: BIT_DEPTH_10_BIT
+     * </pre>
+     */
+    @NonNull
+    public static final DynamicRange HLG_10_BIT = new DynamicRange(ENCODING_HLG, BIT_DEPTH_10_BIT);
+
+    /**
+     * A 10-bit high-dynamic range with HDR10 encoding.
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_HDR10
+     *   Bit Depth: BIT_DEPTH_10_BIT
+     * </pre>
+     */
+    @NonNull
+    public static final DynamicRange HDR10_10_BIT = new DynamicRange(ENCODING_HDR10,
+            BIT_DEPTH_10_BIT);
+
+    /**
+     * A 10-bit high-dynamic range with HDR10+ encoding.
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_HDR10_PLUS
+     *   Bit Depth: BIT_DEPTH_10_BIT
+     * </pre>
+     */
+    @NonNull
+    public static final DynamicRange HDR10_PLUS_10_BIT = new DynamicRange(ENCODING_HDR10_PLUS,
+            BIT_DEPTH_10_BIT);
+
+    /**
+     * A 10-bit high-dynamic range with Dolby Vision encoding.
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_DOLBY_VISION
+     *   Bit Depth: BIT_DEPTH_10_BIT
+     * </pre>
+     */
+    @NonNull
+    public static final DynamicRange DOLBY_VISION_10_BIT = new DynamicRange(ENCODING_DOLBY_VISION,
+            BIT_DEPTH_10_BIT);
+
+    /**
+     * An 8-bit high-dynamic range with Dolby Vision encoding.
+     *
+     * <p>This dynamic range is composed of:
+     * <pre>
+     *   Encoding: ENCODING_DOLBY_VISION
+     *   Bit Depth: BIT_DEPTH_8_BIT
+     * </pre>
+     */
+    @NonNull
+    public static final DynamicRange DOLBY_VISION_8_BIT = new DynamicRange(ENCODING_DOLBY_VISION,
+            BIT_DEPTH_8_BIT);
+    //------------------------------------------------------------------------------//
+
+    private final @DynamicRangeEncoding int mEncoding;
     private final @BitDepth int mBitDepth;
 
     /**
-     * Creates a dynamic range representation from a format and bit depth.
+     * Creates a dynamic range representation from a encoding and bit depth.
      *
      * <p>This constructor is left public for testing purposes. It does not do any verification that
-     * the provided arguments are a valid combination of format and bit depth.
+     * the provided arguments are a valid combination of encoding and bit depth.
      *
-     * @param format   The dynamic range format.
+     * @param encoding The dynamic range encoding.
      * @param bitDepth The bit depth.
      */
     public DynamicRange(
-            @DynamicRangeFormat int format,
+            @DynamicRangeEncoding int encoding,
             @BitDepth int bitDepth) {
-        mFormat = format;
+        mEncoding = encoding;
         mBitDepth = bitDepth;
     }
 
     /**
-     * Returns the dynamic range format.
+     * Returns the dynamic range encoding.
      *
-     * @return The dynamic range format. Possible values are {@link #FORMAT_SDR},
-     * {@link #FORMAT_HLG}, {@link #FORMAT_HDR10}, {@link #FORMAT_HDR10_PLUS}, or
-     * {@link #FORMAT_DOLBY_VISION}.
+     * @return The dynamic range encoding. Possible values are {@link #ENCODING_SDR},
+     * {@link #ENCODING_HLG}, {@link #ENCODING_HDR10}, {@link #ENCODING_HDR10_PLUS}, or
+     * {@link #ENCODING_DOLBY_VISION}.
      */
-    @DynamicRangeFormat
-    public int getFormat() {
-        return mFormat;
+    @DynamicRangeEncoding
+    public int getEncoding() {
+        return mEncoding;
     }
 
     /**
      * Returns the bit depth used by this dynamic range configuration.
      *
-     * <p>Common values are {@link #BIT_DEPTH_8_BIT}, such as for {@link #FORMAT_SDR} or
-     * {@link #BIT_DEPTH_10_BIT}, such as for {@link #FORMAT_HDR10}.
+     * <p>Common values are {@link #BIT_DEPTH_8_BIT}, such as for {@link #ENCODING_SDR} or
+     * {@link #BIT_DEPTH_10_BIT}, such as for {@link #ENCODING_HDR10}.
      *
      * @return The bit depth. Possible values are {@link #BIT_DEPTH_8_BIT},
      * {@link #BIT_DEPTH_10_BIT}, or {@link #BIT_DEPTH_UNSPECIFIED}.
@@ -149,7 +259,7 @@
     @Override
     public String toString() {
         return "DynamicRange@" + Integer.toHexString(System.identityHashCode(this)) + "{"
-                + "format=" + getFormatLabel(mFormat) + ", "
+                + "encoding=" + getEncodingLabel(mEncoding) + ", "
                 + "bitDepth=" + mBitDepth
                 + "}";
     }
@@ -161,7 +271,7 @@
         }
         if (o instanceof DynamicRange) {
             DynamicRange that = (DynamicRange) o;
-            return this.mFormat == that.getFormat()
+            return this.mEncoding == that.getEncoding()
                     && this.mBitDepth == that.getBitDepth();
         }
         return false;
@@ -171,22 +281,22 @@
     public int hashCode() {
         int hashCode = 1;
         hashCode *= 1000003;
-        hashCode ^= mFormat;
+        hashCode ^= mEncoding;
         hashCode *= 1000003;
         hashCode ^= mBitDepth;
         return hashCode;
     }
 
     @NonNull
-    private static String getFormatLabel(@DynamicRangeFormat int format) {
-        switch (format) {
-            case FORMAT_UNSPECIFIED: return "FORMAT_UNSPECIFIED";
-            case FORMAT_SDR: return "FORMAT_SDR";
-            case FORMAT_HDR_UNSPECIFIED: return "FORMAT_HDR_UNSPECIFIED";
-            case FORMAT_HLG: return "FORMAT_HLG";
-            case FORMAT_HDR10: return "FORMAT_HDR10";
-            case FORMAT_HDR10_PLUS: return "FORMAT_HDR10_PLUS";
-            case FORMAT_DOLBY_VISION: return "FORMAT_DOLBY_VISION";
+    private static String getEncodingLabel(@DynamicRangeEncoding int encoding) {
+        switch (encoding) {
+            case ENCODING_UNSPECIFIED: return "UNSPECIFIED";
+            case ENCODING_SDR: return "SDR";
+            case ENCODING_HDR_UNSPECIFIED: return "HDR_UNSPECIFIED";
+            case ENCODING_HLG: return "HLG";
+            case ENCODING_HDR10: return "HDR10";
+            case ENCODING_HDR10_PLUS: return "HDR10_PLUS";
+            case ENCODING_DOLBY_VISION: return "DOLBY_VISION";
         }
 
         return "<Unknown>";
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
index 3152b85..ef78ae5 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
@@ -87,25 +87,21 @@
 import androidx.annotation.RestrictTo.Scope;
 import androidx.annotation.UiThread;
 import androidx.annotation.VisibleForTesting;
-import androidx.camera.core.ForwardingImageProxy.OnImageCloseListener;
 import androidx.camera.core.imagecapture.ImageCaptureControl;
 import androidx.camera.core.imagecapture.ImagePipeline;
 import androidx.camera.core.imagecapture.TakePictureManager;
 import androidx.camera.core.imagecapture.TakePictureRequest;
-import androidx.camera.core.impl.CameraCaptureCallback;
 import androidx.camera.core.impl.CameraConfig;
 import androidx.camera.core.impl.CameraInfoInternal;
 import androidx.camera.core.impl.CameraInternal;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.Config;
 import androidx.camera.core.impl.ConfigProvider;
-import androidx.camera.core.impl.DeferrableSurface;
 import androidx.camera.core.impl.ImageCaptureConfig;
 import androidx.camera.core.impl.ImageInputConfig;
 import androidx.camera.core.impl.ImageOutputConfig;
 import androidx.camera.core.impl.ImageOutputConfig.RotationValue;
 import androidx.camera.core.impl.ImageReaderProxy;
-import androidx.camera.core.impl.ImmediateSurface;
 import androidx.camera.core.impl.MutableConfig;
 import androidx.camera.core.impl.MutableOptionsBundle;
 import androidx.camera.core.impl.OptionsBundle;
@@ -116,7 +112,6 @@
 import androidx.camera.core.impl.utils.CameraOrientationUtil;
 import androidx.camera.core.impl.utils.Exif;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
-import androidx.camera.core.impl.utils.futures.FutureCallback;
 import androidx.camera.core.impl.utils.futures.Futures;
 import androidx.camera.core.internal.IoConfig;
 import androidx.camera.core.internal.TargetConfig;
@@ -126,7 +121,6 @@
 import androidx.camera.core.resolutionselector.AspectRatioStrategy;
 import androidx.camera.core.resolutionselector.ResolutionSelector;
 import androidx.camera.core.resolutionselector.ResolutionStrategy;
-import androidx.concurrent.futures.CallbackToFutureAdapter;
 import androidx.core.util.Preconditions;
 import androidx.lifecycle.LifecycleOwner;
 
@@ -139,18 +133,11 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.nio.ByteBuffer;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Deque;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Objects;
 import java.util.Set;
 import java.util.UUID;
-import java.util.concurrent.CancellationException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -277,8 +264,6 @@
     @FlashMode
     private static final int DEFAULT_FLASH_MODE = FLASH_MODE_OFF;
 
-    boolean mUseProcessingPipeline = true;
-
     @SuppressWarnings("WeakerAccess") /* synthetic accessor */
     static final ExifRotationAvailability EXIF_ROTATION_AVAILABILITY =
             new ExifRotationAvailability();
@@ -291,9 +276,6 @@
         }
     };
 
-    @NonNull
-    @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-    final Executor mIoExecutor;
     @CaptureMode
     private final int mCaptureMode;
 
@@ -315,35 +297,16 @@
     private Rational mCropAspectRatio = null;
 
     ////////////////////////////////////////////////////////////////////////////////////////////
-    // [UseCase attached constant] - Is only valid when the UseCase is attached to a camera.
-    ////////////////////////////////////////////////////////////////////////////////////////////
-    private CaptureConfig mCaptureConfig;
-
-    /**
-     * Whether the software JPEG pipeline will be used.
-     */
-    private boolean mUseSoftwareJpeg = false;
-
-    ////////////////////////////////////////////////////////////////////////////////////////////
     // [UseCase attached dynamic] - Can change but is only available when the UseCase is attached.
     ////////////////////////////////////////////////////////////////////////////////////////////
 
     @SuppressWarnings("WeakerAccess") /* synthetic accessor */
             SessionConfig.Builder mSessionConfigBuilder;
 
-    /** synthetic accessor */
-    @SuppressWarnings("WeakerAccess")
-    SafeCloseImageReaderProxy mImageReader;
-
-    /** Callback used to match the {@link ImageProxy} with the {@link ImageInfo}. */
-    private CameraCaptureCallback mMetadataMatchingCaptureCallback;
-
-    private DeferrableSurface mDeferrableSurface;
-
-    private ImageCaptureRequestProcessor mImageCaptureRequestProcessor;
-    // Synthetic access
-    @SuppressWarnings("WeakerAccess")
-    final Executor mSequentialIoExecutor;
+    @Nullable
+    private ImagePipeline mImagePipeline;
+    @Nullable
+    private TakePictureManager mTakePictureManager;
 
     /**
      * Creates a new image capture use case from the given configuration.
@@ -363,119 +326,6 @@
         }
 
         mFlashType = useCaseConfig.getFlashType(FLASH_TYPE_ONE_SHOT_FLASH);
-
-        mIoExecutor = checkNotNull(
-                useCaseConfig.getIoExecutor(CameraXExecutors.ioExecutor()));
-        mSequentialIoExecutor = CameraXExecutors.newSequentialExecutor(mIoExecutor);
-
-    }
-
-    @UiThread
-    @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-    SessionConfig.Builder createPipeline(@NonNull String cameraId,
-            @NonNull ImageCaptureConfig config, @NonNull StreamSpec streamSpec) {
-        checkMainThread();
-        if (isNodeEnabled()) {
-            return createPipelineWithNode(cameraId, config, streamSpec);
-        }
-        SessionConfig.Builder sessionConfigBuilder = SessionConfig.Builder.createFrom(config,
-                streamSpec.getResolution());
-
-        if (Build.VERSION.SDK_INT >= 23 && getCaptureMode() == CAPTURE_MODE_ZERO_SHUTTER_LAG) {
-            getCameraControl().addZslConfig(sessionConfigBuilder);
-        }
-
-        if (streamSpec.getImplementationOptions() != null) {
-            sessionConfigBuilder.addImplementationOptions(streamSpec.getImplementationOptions());
-        }
-
-        // Setup the ImageReader to do processing
-        Size resolution = streamSpec.getResolution();
-        if (config.getImageReaderProxyProvider() != null) {
-            mImageReader =
-                    new SafeCloseImageReaderProxy(
-                            config.getImageReaderProxyProvider().newInstance(resolution.getWidth(),
-                                    resolution.getHeight(), getImageFormat(), MAX_IMAGES, 0));
-            mMetadataMatchingCaptureCallback = new CameraCaptureCallback() {
-            };
-        } else if (isSessionProcessorEnabledInCurrentCamera()) {
-            // TODO: remove this section and the rest of the code where it needs the
-            //  isSessionProcessorEnabledInCurrentCamera check.
-            ImageReaderProxy imageReader;
-            // SessionProcessor only outputs JPEG format.
-            if (getImageFormat() == ImageFormat.JPEG) {
-                // SessionProcessor can't guarantee that image and capture result have the same
-                // time stamp. Thus we can't use MetadataImageReader
-                imageReader = ImageReaderProxys.createIsolatedReader(resolution.getWidth(),
-                        resolution.getHeight(), ImageFormat.JPEG, MAX_IMAGES);
-                mMetadataMatchingCaptureCallback = new CameraCaptureCallback() {
-                };
-            } else {
-                throw new IllegalArgumentException("Unsupported image format:" + getImageFormat());
-            }
-            mImageReader = new SafeCloseImageReaderProxy(imageReader);
-        } else {
-            MetadataImageReader metadataImageReader = new MetadataImageReader(resolution.getWidth(),
-                    resolution.getHeight(), getImageFormat(), MAX_IMAGES);
-            mMetadataMatchingCaptureCallback = metadataImageReader.getCameraCaptureCallback();
-            mImageReader = new SafeCloseImageReaderProxy(metadataImageReader);
-        }
-
-        if (mImageCaptureRequestProcessor != null) {
-            mImageCaptureRequestProcessor.cancelRequests(
-                    new CancellationException("Request is canceled."));
-        }
-
-        mImageCaptureRequestProcessor = new ImageCaptureRequestProcessor(MAX_IMAGES,
-                this::takePictureInternal);
-
-        // By default close images that come from the listener.
-        mImageReader.setOnImageAvailableListener(mClosingListener,
-                CameraXExecutors.mainThreadExecutor());
-
-        if (mDeferrableSurface != null) {
-            mDeferrableSurface.close();
-        }
-
-        mDeferrableSurface = new ImmediateSurface(
-                requireNonNull(mImageReader.getSurface()),
-                new Size(mImageReader.getWidth(),
-                        mImageReader.getHeight()),
-                /* get the surface image format using getImageFormat */
-                getImageFormat());
-
-        mDeferrableSurface.getTerminationFuture().addListener(mImageReader::safeClose,
-                CameraXExecutors.mainThreadExecutor());
-
-        sessionConfigBuilder.addNonRepeatingSurface(mDeferrableSurface);
-
-        sessionConfigBuilder.addErrorListener((sessionConfig, error) -> {
-            // Get the unfinished requests before re-create the pipeline
-            List<ImageCaptureRequest> pendingRequests = (mImageCaptureRequestProcessor != null)
-                    ? mImageCaptureRequestProcessor.pullOutUnfinishedRequests()
-                    : Collections.emptyList();
-
-            clearPipeline();
-            // Ensure the attached camera has not changed before resetting.
-            // TODO(b/143915543): Ensure this never gets called by a camera that is not attached
-            //  to this use case so we don't need to do this check.
-            if (isCurrentCamera(cameraId)) {
-                // Only reset the pipeline when the bound camera is the same.
-                mSessionConfigBuilder = createPipeline(cameraId, config, streamSpec);
-
-                if (mImageCaptureRequestProcessor != null) {
-                    // Restore the unfinished requests to the created pipeline
-                    for (ImageCaptureRequest request : pendingRequests) {
-                        mImageCaptureRequestProcessor.sendRequest(request);
-                    }
-                }
-
-                updateSessionConfig(mSessionConfigBuilder.build());
-                notifyReset();
-            }
-        });
-
-        return sessionConfigBuilder;
     }
 
     private boolean isSessionProcessorEnabledInCurrentCamera() {
@@ -488,31 +338,6 @@
     }
 
     /**
-     * Clear the internal pipeline so that the pipeline can be set up again.
-     */
-    @UiThread
-    @SuppressWarnings("WeakerAccess")
-    void clearPipeline() {
-        checkMainThread();
-        if (isNodeEnabled()) {
-            clearPipelineWithNode();
-            return;
-        }
-        if (mImageCaptureRequestProcessor != null) {
-            mImageCaptureRequestProcessor.cancelRequests(
-                    new CancellationException("Request is canceled."));
-            mImageCaptureRequestProcessor = null;
-        }
-        DeferrableSurface deferrableSurface = mDeferrableSurface;
-        mDeferrableSurface = null;
-        mImageReader = null;
-
-        if (deferrableSurface != null) {
-            deferrableSurface.close();
-        }
-    }
-
-    /**
      * {@inheritDoc}
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
@@ -967,13 +792,8 @@
             return;
         }
 
-        if (isNodeEnabled()) {
-            takePictureWithNode(executor, callback, /*onDiskCallback=*/null,
-                    /*outputFileOptions=*/null);
-            return;
-        }
-
-        sendImageCaptureRequest(executor, callback, /*saveImage=*/false);
+        takePictureInternal(executor, callback, /*onDiskCallback=*/null,
+                /*outputFileOptions=*/null);
     }
 
     /**
@@ -999,83 +819,8 @@
                     () -> takePicture(outputFileOptions, executor, imageSavedCallback));
             return;
         }
-        if (isNodeEnabled()) {
-            takePictureWithNode(executor, /*inMemoryCallback=*/null, imageSavedCallback,
-                    outputFileOptions);
-            return;
-        }
-
-        /*
-         * We need to chain the following callbacks to save the image to disk:
-         *
-         * +-----------------------+
-         * |                       |
-         * |ImageCapture.          |
-         * |OnImageCapturedCallback|
-         * |                       |
-         * +-----------+-----------+
-         *             |
-         *             |
-         * +-----------v-----------+      +----------------------+
-         * |                       |      |                      |
-         * | ImageSaver.           |      | ImageCapture.        |
-         * | OnImageSavedCallback  +------> OnImageSavedCallback |
-         * |                       |      |                      |
-         * +-----------------------+      +----------------------+
-         */
-
-        // Convert the ImageSaver.OnImageSavedCallback to ImageCapture.OnImageSavedCallback
-        final ImageSaver.OnImageSavedCallback imageSavedCallbackWrapper =
-                new ImageSaver.OnImageSavedCallback() {
-                    @Override
-                    public void onImageSaved(@NonNull OutputFileResults outputFileResults) {
-                        imageSavedCallback.onImageSaved(outputFileResults);
-                    }
-
-                    @Override
-                    public void onError(@NonNull ImageSaver.SaveError error,
-                            @NonNull String message,
-                            @Nullable Throwable cause) {
-                        @ImageCaptureError int imageCaptureError = ERROR_UNKNOWN;
-                        // Keep the imageCaptureError as UNKNOWN_ERROR
-                        if (error == ImageSaver.SaveError.FILE_IO_FAILED) {
-                            imageCaptureError = ERROR_FILE_IO;
-                        }
-
-                        imageSavedCallback.onError(
-                                new ImageCaptureException(imageCaptureError, message, cause));
-                    }
-                };
-
-        int outputJpegQuality = getJpegQualityInternal();
-
-        // Wrap the ImageCapture.OnImageSavedCallback with an OnImageCapturedCallback so it can
-        // be put into the capture request queue
-        OnImageCapturedCallback imageCaptureCallbackWrapper =
-                new OnImageCapturedCallback() {
-                    @Override
-                    public void onCaptureSuccess(@NonNull ImageProxy image) {
-                        mIoExecutor.execute(
-                                new ImageSaver(
-                                        image,
-                                        outputFileOptions,
-                                        image.getImageInfo().getRotationDegrees(),
-                                        outputJpegQuality,
-                                        executor,
-                                        mSequentialIoExecutor,
-                                        imageSavedCallbackWrapper));
-                    }
-
-                    @Override
-                    public void onError(@NonNull final ImageCaptureException exception) {
-                        imageSavedCallback.onError(exception);
-                    }
-                };
-
-        // Always use the mainThreadExecutor for the initial callback so we don't need to double
-        // post to another thread
-        sendImageCaptureRequest(CameraXExecutors.mainThreadExecutor(),
-                imageCaptureCallbackWrapper, /*saveImage=*/true);
+        takePictureInternal(executor, /*inMemoryCallback=*/null, imageSavedCallback,
+                outputFileOptions);
     }
 
     @NonNull
@@ -1116,87 +861,9 @@
     private void abortImageCaptureRequests() {
         if (mTakePictureManager != null) {
             mTakePictureManager.abortRequests();
-        } else if (mImageCaptureRequestProcessor != null) {
-            Throwable throwable = new CameraClosedException("Camera is closed.");
-            mImageCaptureRequestProcessor.cancelRequests(throwable);
         }
     }
 
-    @UiThread
-    private void sendImageCaptureRequest(@NonNull Executor callbackExecutor,
-            @NonNull OnImageCapturedCallback callback, boolean saveImage) {
-
-        // TODO(b/143734846): From here on, the image capture request should be
-        //  self-contained and use this camera for everything. Currently the pre-capture
-        //  sequence does not follow this approach and could fail if this use case is unbound
-        //  or reattached to a different camera in the middle of pre-capture.
-        CameraInternal attachedCamera = getCamera();
-        if (attachedCamera == null) {
-            // Not bound. Notify callback.
-            callbackExecutor.execute(
-                    () -> callback.onError(new ImageCaptureException(ERROR_INVALID_CAMERA,
-                            "Not bound to a valid Camera [" + ImageCapture.this + "]", null)));
-            return;
-        }
-
-        if (mImageCaptureRequestProcessor == null) {
-            callbackExecutor.execute(
-                    () -> callback.onError(
-                            new ImageCaptureException(ERROR_UNKNOWN, "Request is canceled", null)));
-            return;
-        }
-
-        mImageCaptureRequestProcessor.sendRequest(new ImageCaptureRequest(
-                getRelativeRotation(attachedCamera),
-                getJpegQualityForImageCaptureRequest(attachedCamera, saveImage),
-                mCropAspectRatio,
-                getViewPortCropRect(),
-                getSensorToBufferTransformMatrix(),
-                callbackExecutor,
-                callback));
-    }
-
-    @UiThread
-    private int getJpegQualityForImageCaptureRequest(@NonNull CameraInternal cameraInternal,
-            boolean saveImage) {
-        int jpegQuality;
-        if (saveImage) {
-            int rotationDegrees = getRelativeRotation(cameraInternal);
-            Size dispatchResolution = requireNonNull(getAttachedSurfaceResolution());
-            // At this point, we can't know whether HAL will rotate the captured image or not. No
-            // matter HAL will rotate the image byte array or not, it won't affect whether the final
-            // image needs cropping or not. Therefore, we can still use the attached surface
-            // resolution and its relative rotation degrees against to the target rotation
-            // setting to calculate the possible crop rectangle and then use it to determine
-            // whether the final image will need cropping or not.
-            Rect cropRect = computeDispatchCropRect(getViewPortCropRect(), mCropAspectRatio,
-                    rotationDegrees, dispatchResolution, rotationDegrees);
-            boolean shouldCropImage = ImageUtil.shouldCropImage(dispatchResolution.getWidth(),
-                    dispatchResolution.getHeight(), cropRect.width(), cropRect.height());
-            if (shouldCropImage) {
-                // When cropping is required, jpeg compression will occur twice:
-                // 1. Jpeg quality set to camera HAL by camera capture request.
-                // 2. Bitmap compression during cropping process in ImageSaver.
-                // Here we need to define the first compression value and be careful to lose too
-                // much quality due to double compression.
-                // Setting 100 for the first compression can minimize quality loss, but will result
-                // in poor performance during cropping than setting 95 (see b/206348741 for more
-                // detail). As a trade-off, max quality mode is set to 100, and the others are set
-                // to 95.
-                jpegQuality = mCaptureMode == CAPTURE_MODE_MAXIMIZE_QUALITY ? 100 : 95;
-            } else {
-                jpegQuality = getJpegQualityInternal();
-            }
-        } else {
-            // The captured image will be directly provided to the app via the
-            // OnImageCapturedCallback callback. It won't be uncompressed and compressed again
-            // after the image is captured. The JPEG quality setting will be directly provided to
-            // the HAL to compress the output JPEG image.
-            jpegQuality = getJpegQualityInternal();
-        }
-        return jpegQuality;
-    }
-
     void lockFlashMode() {
         synchronized (mLockedFlashMode) {
             if (mLockedFlashMode.get() != null) {
@@ -1257,267 +924,6 @@
         }
     }
 
-    /**
-     * The take picture flow.
-     *
-     * <p>There are three steps to take a picture.
-     *
-     * <p>(1) Pre-take picture, which will trigger af/ae scan or open torch if necessary. Then check
-     * 3A converged if necessary.
-     *
-     * <p>(2) Issue take picture single request.
-     *
-     * <p>(3) Post-take picture, which will cancel af/ae scan or close torch if necessary.
-     */
-    @NonNull
-    private ListenableFuture<ImageProxy> takePictureInternal(
-            @NonNull ImageCaptureRequest imageCaptureRequest) {
-        return CallbackToFutureAdapter.getFuture(
-                completer -> {
-                    mImageReader.setOnImageAvailableListener(
-                            (imageReader) -> {
-                                try {
-                                    ImageProxy image = imageReader.acquireLatestImage();
-                                    if (image != null) {
-                                        if (!completer.set(image)) {
-                                            // If the future is already complete (probably be
-                                            // cancelled), then close the image.
-                                            image.close();
-                                        }
-                                    } else {
-                                        completer.setException(new IllegalStateException(
-                                                "Unable to acquire image"));
-                                    }
-                                } catch (IllegalStateException e) {
-                                    completer.setException(e);
-                                }
-                            },
-                            CameraXExecutors.mainThreadExecutor());
-
-                    lockFlashMode();
-                    ListenableFuture<Void> future = issueTakePicture(imageCaptureRequest);
-
-                    Futures.addCallback(future,
-                            new FutureCallback<Void>() {
-                                @Override
-                                public void onSuccess(Void result) {
-                                    unlockFlashMode();
-                                }
-
-                                @Override
-                                public void onFailure(@NonNull Throwable throwable) {
-                                    unlockFlashMode();
-
-                                    completer.setException(throwable);
-                                }
-                            },
-                            CameraXExecutors.mainThreadExecutor());
-
-                    completer.addCancellationListener(() -> future.cancel(true),
-                            CameraXExecutors.directExecutor());
-                    return "takePictureInternal";
-                });
-    }
-
-    /**
-     * A processor that manages and issues the pending {@link ImageCaptureRequest}s.
-     *
-     * <p>It ensures that only one single {@link ImageCaptureRequest} is in progress at a time
-     * and is able to process next request only when there is not over the maximum number of
-     * dispatched image.
-     */
-    @VisibleForTesting
-    static class ImageCaptureRequestProcessor implements OnImageCloseListener {
-        @GuardedBy("mLock")
-        private final Deque<ImageCaptureRequest> mPendingRequests = new ArrayDeque<>();
-
-        @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-        @GuardedBy("mLock")
-        ImageCaptureRequest mCurrentRequest = null;
-
-        @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-        @GuardedBy("mLock")
-        ListenableFuture<ImageProxy> mCurrentRequestFuture = null;
-
-        @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-        @GuardedBy("mLock")
-        int mOutstandingImages = 0;
-
-        @GuardedBy("mLock")
-        private final ImageCaptor mImageCaptor;
-        private final int mMaxImages;
-        @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-        final Object mLock = new Object();
-
-        ImageCaptureRequestProcessor(int maxImages, @NonNull ImageCaptor imageCaptor) {
-            mMaxImages = maxImages;
-            mImageCaptor = imageCaptor;
-        }
-
-        /**
-         * Sends an {@link ImageCaptureRequest} to queue.
-         *
-         * @param imageCaptureRequest the image request
-         */
-        public void sendRequest(@NonNull ImageCaptureRequest imageCaptureRequest) {
-            synchronized (mLock) {
-                mPendingRequests.offer(imageCaptureRequest);
-                Logger.d(TAG, String.format(Locale.US,
-                        "Send image capture request [current, pending] = [%d, %d]",
-                        mCurrentRequest != null ? 1 : 0, mPendingRequests.size()));
-                processNextRequest();
-            }
-        }
-
-        /** Cancels current processing and pending requests. */
-        public void cancelRequests(@NonNull Throwable throwable) {
-            ImageCaptureRequest currentRequest;
-            ListenableFuture<ImageProxy> currentRequestFuture;
-            List<ImageCaptureRequest> pendingRequests;
-            synchronized (mLock) {
-                currentRequest = mCurrentRequest;
-                mCurrentRequest = null;
-                currentRequestFuture = mCurrentRequestFuture;
-                mCurrentRequestFuture = null;
-                pendingRequests = new ArrayList<>(mPendingRequests);
-                mPendingRequests.clear();
-            }
-            if (currentRequest != null && currentRequestFuture != null) {
-                currentRequest.notifyCallbackError(getError(throwable), throwable.getMessage(),
-                        throwable);
-                currentRequestFuture.cancel(true);
-            }
-            for (ImageCaptureRequest request : pendingRequests) {
-                request.notifyCallbackError(getError(throwable), throwable.getMessage(), throwable);
-            }
-        }
-
-        /**
-         * Removes and returns all unfinished requests.
-         *
-         * <p>The unfinished requests include:
-         * <ul>
-         *     <li>Current running request if it is not complete yet.</li>
-         *     <li>All pending requests.</li>
-         * </ul>
-         *
-         * @return list of the remaining requests
-         */
-        @NonNull
-        public List<ImageCaptureRequest> pullOutUnfinishedRequests() {
-            List<ImageCaptureRequest> remainingRequests;
-            synchronized (mLock) {
-                remainingRequests = new ArrayList<>(mPendingRequests);
-                // Clear the pending requests before canceling the mCurrentRequestFuture.
-                mPendingRequests.clear();
-
-                ImageCaptureRequest currentRequest = mCurrentRequest;
-                mCurrentRequest = null;
-                if (currentRequest != null && mCurrentRequestFuture != null
-                        && mCurrentRequestFuture.cancel(true)) {
-                    remainingRequests.add(0, currentRequest);
-                }
-            }
-
-            return remainingRequests;
-        }
-
-        @Override
-        public void onImageClose(@NonNull ImageProxy image) {
-            synchronized (mLock) {
-                // TODO: mLock can be removed if all methods and callbacks in
-                //  ImageCaptureRequestProcessor are used in the main thread.
-                //  Side note: TakePictureManager already handles the requests in the main thread.
-                mOutstandingImages--;
-                CameraXExecutors.mainThreadExecutor().execute(this::processNextRequest);
-            }
-        }
-
-        @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-        void processNextRequest() {
-            synchronized (mLock) {
-                // Unable to issue request if there is currently a request in flight
-                if (mCurrentRequest != null) {
-                    return;
-                }
-
-                // Unable to issue request if the ImageReader has no available image buffer left.
-                if (mOutstandingImages >= mMaxImages) {
-                    Logger.w(TAG,
-                            "Too many acquire images. Close image to be able to process next.");
-                    return;
-                }
-
-                ImageCaptureRequest imageCaptureRequest = mPendingRequests.poll();
-                if (imageCaptureRequest == null) {
-                    return;
-                }
-
-                mCurrentRequest = imageCaptureRequest;
-                mCurrentRequestFuture = mImageCaptor.capture(imageCaptureRequest);
-                Futures.addCallback(mCurrentRequestFuture, new FutureCallback<ImageProxy>() {
-                    @Override
-                    public void onSuccess(@Nullable ImageProxy image) {
-                        synchronized (mLock) {
-                            checkNotNull(image);
-                            SingleCloseImageProxy wrappedImage = new SingleCloseImageProxy(image);
-                            wrappedImage.addOnImageCloseListener(ImageCaptureRequestProcessor.this);
-                            mOutstandingImages++;
-                            imageCaptureRequest.dispatchImage(wrappedImage);
-
-                            mCurrentRequest = null;
-                            mCurrentRequestFuture = null;
-                            processNextRequest();
-                        }
-                    }
-
-                    @Override
-                    public void onFailure(@NonNull Throwable t) {
-                        synchronized (mLock) {
-                            //noinspection StatementWithEmptyBody
-                            if (t instanceof CancellationException) {
-                                // Do not trigger callback which should be done in cancelRequests()
-                                // with a given throwable.
-                            } else {
-                                imageCaptureRequest.notifyCallbackError(getError(t),
-                                        t != null ? t.getMessage() : "Unknown error", t);
-                            }
-
-                            mCurrentRequest = null;
-                            mCurrentRequestFuture = null;
-                            processNextRequest();
-                        }
-                    }
-                }, CameraXExecutors.mainThreadExecutor());
-            }
-        }
-
-        /** An interface of an {@link ImageProxy} captor. */
-        interface ImageCaptor {
-            /**
-             * Captures an {@link ImageProxy} by giving a {@link ImageCaptureRequest}.
-             *
-             * @param imageCaptureRequest an {@link ImageCaptureRequest} contains required
-             *                            parameters for this capture.
-             * @return a {@link ListenableFuture represents the capture result. Cancellation to
-             * the future should cancel the capture task.
-             */
-            @NonNull
-            ListenableFuture<ImageProxy> capture(@NonNull ImageCaptureRequest imageCaptureRequest);
-        }
-
-        /**
-         * An interface to provide callbacks when processing each capture request.
-         */
-        interface RequestProcessCallback {
-            /**
-             * This will be called before starting to process the
-             * ImageCaptureRequest.
-             */
-            void onPreProcessRequest(@NonNull ImageCaptureRequest imageCaptureRequest);
-        }
-    }
-
     @NonNull
     @Override
     public String toString() {
@@ -1543,7 +949,6 @@
      * @return {@code true} if software JPEG will be used after applying constraints.
      */
     boolean enforceSoftwareJpegConstraints(@NonNull MutableConfig mutableConfig) {
-        // Software encoder currently only supports API 26+.
         if (Boolean.TRUE.equals(
                 mutableConfig.retrieveOption(OPTION_USE_SOFTWARE_JPEG_ENCODER, false))) {
             boolean supported = true;
@@ -1576,7 +981,6 @@
     public void onUnbind() {
         abortImageCaptureRequests();
         clearPipeline();
-        mUseSoftwareJpeg = false;
     }
 
     /**
@@ -1585,15 +989,6 @@
     @Override
     @RestrictTo(Scope.LIBRARY_GROUP)
     public void onBind() {
-        ImageCaptureConfig useCaseConfig = (ImageCaptureConfig) getCurrentConfig();
-
-        CaptureConfig.Builder captureBuilder = CaptureConfig.Builder.createFrom(useCaseConfig);
-        mCaptureConfig = captureBuilder.build();
-
-        // This will only be set to true if software JPEG was requested and
-        // enforceSoftwareJpegConstraints() hasn't removed the request.
-        mUseSoftwareJpeg = useCaseConfig.isSoftwareJpegEncoderRequested();
-
         CameraInternal camera = getCamera();
         checkNotNull(camera, "Attached camera cannot be null");
     }
@@ -1629,59 +1024,6 @@
     }
 
     /**
-     * Initiates a set of captures that will be used to create the output of
-     * {@link #takePicture(OutputFileOptions, Executor, OnImageSavedCallback)} and its variants.
-     *
-     * <p> This returns a {@link ListenableFuture} whose completion indicates that the
-     * captures are finished. Before the future is complete, any modification to the camera state
-     * such as 3A could affect the result of the captures. After the future is complete, then it
-     * is safe to reset or modify the 3A state.
-     */
-    ListenableFuture<Void> issueTakePicture(@NonNull ImageCaptureRequest imageCaptureRequest) {
-        Logger.d(TAG, "issueTakePicture");
-
-        final CaptureConfig.Builder builder = new CaptureConfig.Builder();
-        builder.setTemplateType(mCaptureConfig.getTemplateType());
-
-        // Add the default implementation options of ImageCapture
-        builder.addImplementationOptions(mCaptureConfig.getImplementationOptions());
-        builder.addAllCameraCaptureCallbacks(
-                mSessionConfigBuilder.getSingleCameraCaptureCallbacks());
-
-        builder.addSurface(mDeferrableSurface);
-
-        // Only sets the JPEG rotation and quality capture request options when capturing
-        // images in JPEG format. Some devices do not handle these CaptureRequest key values
-        // when capturing a non-JPEG image. Setting these capture requests and checking the
-        // returned capture results for specific purpose might cause problems. See b/204375890.
-        if (getImageFormat() == ImageFormat.JPEG) {
-            // Add the dynamic implementation options of ImageCapture
-            if (EXIF_ROTATION_AVAILABILITY.isRotationOptionSupported()) {
-                builder.addImplementationOption(CaptureConfig.OPTION_ROTATION,
-                        imageCaptureRequest.mRotationDegrees);
-            }
-            builder.addImplementationOption(CaptureConfig.OPTION_JPEG_QUALITY,
-                    imageCaptureRequest.mJpegQuality);
-        }
-
-        builder.addCameraCaptureCallback(mMetadataMatchingCaptureCallback);
-
-        return submitStillCaptureRequest(Arrays.asList(builder.build()));
-    }
-
-    /**
-     * ===== New architecture start =====
-     *
-     * TODO(b/229629844): unit test the interactions between {@link ImageCapture} and
-     *  {@link ImagePipeline}/{@link TakePictureManager}.
-     */
-
-    @Nullable
-    private ImagePipeline mImagePipeline;
-    @Nullable
-    private TakePictureManager mTakePictureManager;
-
-    /**
      * An {@link ImageCaptureControl} implementation to control this {@link ImageCapture} instance.
      */
     private final ImageCaptureControl mImageCaptureControl = new ImageCaptureControl() {
@@ -1708,31 +1050,14 @@
     };
 
     /**
-     * Checks if the node is enabled given the current configuration.
-     *
-     * <p>This method checks if the new architecture can be enabled based on the current
-     * configuration.
-     *
-     * <p>DO NOT turn on the new architecture until the 1.3 alpha branch is cut. We don't want
-     * the quality of 1.2 beta to be affected by the refactoring.
-     */
-    @MainThread
-    private boolean isNodeEnabled() {
-        checkMainThread();
-        return mUseProcessingPipeline;
-    }
-
-    /**
      * Creates the pipeline for both capture request configuration and image post-processing.
-     *
-     * <p> This is the new {@link #createPipeline}.
      */
     @OptIn(markerClass = ExperimentalZeroShutterLag.class)
     @MainThread
-    private SessionConfig.Builder createPipelineWithNode(@NonNull String cameraId,
+    private SessionConfig.Builder createPipeline(@NonNull String cameraId,
             @NonNull ImageCaptureConfig config, @NonNull StreamSpec streamSpec) {
         checkMainThread();
-        Log.d(TAG, String.format("createPipelineWithNode(cameraId: %s, streamSpec: %s)",
+        Log.d(TAG, String.format("createPipeline(cameraId: %s, streamSpec: %s)",
                 cameraId, streamSpec));
         Size resolution = streamSpec.getResolution();
 
@@ -1760,13 +1085,13 @@
             //  to this use case so we don't need to do this check.
             if (isCurrentCamera(cameraId)) {
                 mTakePictureManager.pause();
-                clearPipelineWithNode(/*keepTakePictureManager=*/ true);
+                clearPipeline(/*keepTakePictureManager=*/ true);
                 mSessionConfigBuilder = createPipeline(cameraId, config, streamSpec);
                 updateSessionConfig(mSessionConfigBuilder.build());
                 notifyReset();
                 mTakePictureManager.resume();
             } else {
-                clearPipelineWithNode();
+                clearPipeline();
             }
         });
 
@@ -1777,18 +1102,18 @@
      * Takes a picture with the new architecture.
      */
     @MainThread
-    private void takePictureWithNode(@NonNull Executor executor,
+    private void takePictureInternal(@NonNull Executor executor,
             @Nullable OnImageCapturedCallback inMemoryCallback,
             @Nullable ImageCapture.OnImageSavedCallback onDiskCallback,
             @Nullable OutputFileOptions outputFileOptions) {
         checkMainThread();
-        Log.d(TAG, "takePictureWithNode");
+        Log.d(TAG, "takePictureInternal");
         CameraInternal camera = getCamera();
         if (camera == null) {
             sendInvalidCameraError(executor, inMemoryCallback, onDiskCallback);
             return;
         }
-        mTakePictureManager.offerRequest(TakePictureRequest.of(
+        requireNonNull(mTakePictureManager).offerRequest(TakePictureRequest.of(
                 executor,
                 inMemoryCallback,
                 onDiskCallback,
@@ -1841,19 +1166,16 @@
      * Clears the pipeline without keeping the {@link TakePictureManager}.
      */
     @MainThread
-    private void clearPipelineWithNode() {
-        clearPipelineWithNode(/*keepTakePictureManager=*/false);
+    private void clearPipeline() {
+        clearPipeline(/*keepTakePictureManager=*/false);
     }
 
     /**
      * Clears the pipeline.
-     *
-     * <p>Similar to {@link #clearPipeline()}, this cancels unfinished requests and release
-     * resources.
      */
     @MainThread
-    private void clearPipelineWithNode(boolean keepTakePictureManager) {
-        Log.d(TAG, "clearPipelineWithNode");
+    private void clearPipeline(boolean keepTakePictureManager) {
+        Log.d(TAG, "clearPipeline");
         checkMainThread();
         if (mImagePipeline != null) {
             mImagePipeline.close();
@@ -1896,8 +1218,6 @@
         return requireNonNull(mTakePictureManager);
     }
 
-    // ===== New architecture end =====
-
     /**
      * @inheritDoc
      */
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java b/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java
index bc20e6b..b68ceca 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/SurfaceRequest.java
@@ -333,8 +333,9 @@
      * care should be taken to ensure the provided surface can support the requested dynamic
      * range. For example, if the returned dynamic range has {@link DynamicRange#getBitDepth()}
      * equal to {@link DynamicRange#BIT_DEPTH_10_BIT}, then the surface provided to
-     * {@link #provideSurface(Surface, Executor, Consumer)} should use a format that can support
-     * ten bits of dynamic range, such as {@link android.graphics.ImageFormat#PRIVATE} or
+     * {@link #provideSurface(Surface, Executor, Consumer)} should use an
+     * {@link android.graphics.ImageFormat} that can support ten bits of dynamic range, such as
+     * {@link android.graphics.ImageFormat#PRIVATE} or
      * {@link android.graphics.ImageFormat#YCBCR_P010}.
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/SessionConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/SessionConfig.java
index 1ba7e29..fdd0390 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/SessionConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/SessionConfig.java
@@ -113,7 +113,7 @@
         /**
          * Returns the dynamic range for this output configuration.
          *
-         * <p>The dynamic range will determine the dynamic range format and profile of pixels in
+         * <p>The dynamic range will determine the dynamic range encoding and profile for pixels in
          * the surfaces associated with this output configuration.
          *
          * <p>If not set, this defaults to {@link DynamicRange#SDR}.
@@ -172,8 +172,8 @@
             /**
              * Returns the dynamic range for this output configuration.
              *
-             * <p>The dynamic range will determine the dynamic range format and profile of pixels in
-             * the surfaces associated with this output configuration.
+             * <p>The dynamic range will determine the dynamic range encoding and profile for
+             * pixels in the surfaces associated with this output configuration.
              */
             @NonNull
             public abstract Builder setDynamicRange(@NonNull DynamicRange dynamicRange);
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/MatrixExt.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/MatrixExt.java
index 8020337..d9883e5 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/MatrixExt.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/MatrixExt.java
@@ -39,10 +39,10 @@
      * <p>The pivot point is the coordinate that should remain unchanged by the specified
      * transformation.
      *
-     * @param matrix the matrix to rotate
+     * @param matrix  the matrix to rotate
      * @param degrees the rotation degrees
-     * @param px px of pivot point at (px, py)
-     * @param py py of pivot point at (px, py)
+     * @param px      px of pivot point at (px, py)
+     * @param py      py of pivot point at (px, py)
      */
     public static void setRotate(@NonNull float[] matrix, float degrees, float px, float py) {
         Matrix.setIdentityM(matrix, 0);
@@ -55,10 +55,10 @@
      * <p>The pivot point is the coordinate that should remain unchanged by the specified
      * transformation.
      *
-     * @param matrix the matrix to rotate
+     * @param matrix  the matrix to rotate
      * @param degrees the rotation degrees
-     * @param px px of pivot point at (px, py)
-     * @param py py of pivot point at (px, py)
+     * @param px      px of pivot point at (px, py)
+     * @param py      py of pivot point at (px, py)
      */
     public static void preRotate(@NonNull float[] matrix, float degrees, float px, float py) {
         normalize(matrix, px, py);
@@ -72,10 +72,10 @@
      * <p>The pivot point is the coordinate that should remain unchanged by the specified
      * transformation.
      *
-     * @param matrix the matrix to rotate
+     * @param matrix  the matrix to rotate
      * @param degrees the rotation degrees
-     * @param px px of pivot point at (px, py)
-     * @param py py of pivot point at (px, py)
+     * @param px      px of pivot point at (px, py)
+     * @param py      py of pivot point at (px, py)
      */
     public static void postRotate(@NonNull float[] matrix, float degrees, float px, float py) {
         synchronized (sTemp) {
@@ -88,6 +88,18 @@
     }
 
     /**
+     * Preconcats the matrix with a vertical flip operation.
+     *
+     * @param matrix the matrix to flip
+     * @param y      the horizontal line to flip along
+     */
+    public static void preVerticalFlip(@NonNull float[] matrix, float y) {
+        normalize(matrix, 0, y);
+        Matrix.scaleM(matrix, 0, 1f, -1f, 1f);
+        denormalize(matrix, 0, y);
+    }
+
+    /**
      * Converts to a well-formed matrix for debugging.
      *
      * <p>Get the first 16 floats from the offset.
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/processing/DefaultSurfaceProcessor.java b/camera/camera-core/src/main/java/androidx/camera/core/processing/DefaultSurfaceProcessor.java
index 1eea449..8413467 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/processing/DefaultSurfaceProcessor.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/processing/DefaultSurfaceProcessor.java
@@ -306,12 +306,11 @@
     private Bitmap getBitmap(@NonNull Size size,
             @NonNull float[] textureTransform,
             int rotationDegrees) {
-        // Flip the snapshot. This is for reverting the GL transform added in SurfaceOutputImpl.
         float[] snapshotTransform = new float[16];
-        // TODO(b/278109696): move GL flipping to MatrixExt.
         Matrix.setIdentityM(snapshotTransform, 0);
-        Matrix.translateM(snapshotTransform, 0, 0f, 1f, 0f);
-        Matrix.scaleM(snapshotTransform, 0, 1f, -1f, 1f);
+
+        // Flip the snapshot. This is for reverting the GL transform added in SurfaceOutputImpl.
+        MatrixExt.preVerticalFlip(snapshotTransform, 0.5f);
 
         // Rotate the output if requested.
         MatrixExt.preRotate(snapshotTransform, rotationDegrees, 0.5f, 0.5f);
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/processing/SurfaceOutputImpl.java b/camera/camera-core/src/main/java/androidx/camera/core/processing/SurfaceOutputImpl.java
index d9c51b0..8038235 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/processing/SurfaceOutputImpl.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/processing/SurfaceOutputImpl.java
@@ -40,6 +40,7 @@
 import androidx.camera.core.SurfaceOutput;
 import androidx.camera.core.SurfaceProcessor;
 import androidx.camera.core.impl.CameraInternal;
+import androidx.camera.core.impl.utils.MatrixExt;
 import androidx.concurrent.futures.CallbackToFutureAdapter;
 import androidx.core.util.Consumer;
 
@@ -290,9 +291,7 @@
         // - Apply the crop rect
 
         // Flipping for GL.
-        // TODO(b/278109696): move GL flipping to MatrixExt.
-        Matrix.translateM(mAdditionalTransform, 0, 0f, 1f, 0f);
-        Matrix.scaleM(mAdditionalTransform, 0, 1f, -1f, 1f);
+        MatrixExt.preVerticalFlip(mAdditionalTransform, 0.5f);
 
         // Rotation
         preRotate(mAdditionalTransform, mRotationDegrees, 0.5f, 0.5f);
@@ -342,9 +341,7 @@
 
         // Flip for GL. SurfaceTexture#getTransformMatrix always contains this flipping regardless
         // of whether it has the camera transform.
-        // TODO(b/278109696): move GL flipping to MatrixExt.
-        Matrix.translateM(mInvertedTextureTransform, 0, 0f, 1f, 0f);
-        Matrix.scaleM(mInvertedTextureTransform, 0, 1f, -1f, 1f);
+        MatrixExt.preVerticalFlip(mInvertedTextureTransform, 0.5f);
 
         // Applies the camera sensor orientation if the input surface contains camera transform.
         if (mCameraInternal != null) {
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/DynamicRangeTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/DynamicRangeTest.kt
index c89e49a..ef41ac7 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/DynamicRangeTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/DynamicRangeTest.kt
@@ -32,16 +32,16 @@
     @Test
     fun canCreateUnspecifiedDynamicRange() {
         val dynamicRange = DynamicRange(
-            DynamicRange.FORMAT_HDR_UNSPECIFIED,
+            DynamicRange.ENCODING_HDR_UNSPECIFIED,
             DynamicRange.BIT_DEPTH_UNSPECIFIED
         )
-        assertThat(dynamicRange.format).isEqualTo(DynamicRange.FORMAT_HDR_UNSPECIFIED)
+        assertThat(dynamicRange.encoding).isEqualTo(DynamicRange.ENCODING_HDR_UNSPECIFIED)
         assertThat(dynamicRange.bitDepth).isEqualTo(DynamicRange.BIT_DEPTH_UNSPECIFIED)
     }
 
     @Test
     fun sdrDynamicRange_is8Bit() {
-        assertThat(DynamicRange.SDR.format).isEqualTo(DynamicRange.FORMAT_SDR)
+        assertThat(DynamicRange.SDR.encoding).isEqualTo(DynamicRange.ENCODING_SDR)
         assertThat(DynamicRange.SDR.bitDepth).isEqualTo(DynamicRange.BIT_DEPTH_8_BIT)
     }
 }
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/ImageCaptureTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/ImageCaptureTest.kt
index 0e822e5..2253979 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/ImageCaptureTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/ImageCaptureTest.kt
@@ -30,9 +30,6 @@
 import androidx.camera.core.CameraEffect.IMAGE_CAPTURE
 import androidx.camera.core.CameraEffect.PREVIEW
 import androidx.camera.core.CameraEffect.VIDEO_CAPTURE
-import androidx.camera.core.ImageCapture.ImageCaptureRequest
-import androidx.camera.core.ImageCapture.ImageCaptureRequestProcessor
-import androidx.camera.core.ImageCapture.ImageCaptureRequestProcessor.ImageCaptor
 import androidx.camera.core.MirrorMode.MIRROR_MODE_OFF
 import androidx.camera.core.MirrorMode.MIRROR_MODE_ON_FRONT_ONLY
 import androidx.camera.core.impl.CameraConfig
@@ -47,7 +44,6 @@
 import androidx.camera.core.impl.UseCaseConfig
 import androidx.camera.core.impl.utils.executor.CameraXExecutors
 import androidx.camera.core.impl.utils.executor.CameraXExecutors.mainThreadExecutor
-import androidx.camera.core.impl.utils.futures.Futures
 import androidx.camera.core.internal.CameraUseCaseAdapter
 import androidx.camera.core.internal.utils.SizeUtil
 import androidx.camera.core.resolutionselector.ResolutionSelector
@@ -58,30 +54,20 @@
 import androidx.camera.testing.fakes.FakeCameraControl
 import androidx.camera.testing.fakes.FakeCameraFactory
 import androidx.camera.testing.fakes.FakeCameraInfoInternal
-import androidx.camera.testing.fakes.FakeImageInfo
-import androidx.camera.testing.fakes.FakeImageProxy
 import androidx.camera.testing.fakes.FakeImageReaderProxy
-import androidx.camera.testing.fakes.FakeSessionProcessor
-import androidx.concurrent.futures.ResolvableFuture
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
 import java.io.File
-import java.util.ArrayDeque
 import java.util.Collections
 import java.util.concurrent.ExecutionException
 import java.util.concurrent.Executor
-import java.util.concurrent.atomic.AtomicReference
 import org.junit.After
 import org.junit.Assert.assertThrows
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.ArgumentCaptor
 import org.mockito.ArgumentMatchers.any
-import org.mockito.ArgumentMatchers.anyInt
-import org.mockito.ArgumentMatchers.eq
 import org.mockito.Mockito.mock
-import org.mockito.Mockito.never
 import org.mockito.Mockito.verify
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.Shadows.shadowOf
@@ -90,8 +76,6 @@
 import org.robolectric.shadow.api.Shadow
 import org.robolectric.shadows.ShadowLooper
 
-private const val MAX_IMAGES = 3
-
 /**
  * Unit tests for [ImageCapture].
  */
@@ -282,54 +266,11 @@
     }
 
     @Test
-    fun processingPipelineOn_pipelineEnabled() {
-        assertThat(
-            bindImageCapture(
-                useProcessingPipeline = true,
-                bufferFormat = ImageFormat.JPEG,
-            ).isProcessingPipelineEnabled
-        ).isTrue()
-    }
-
-    @Test
     fun detachWithoutAttach_doesNotCrash() {
         ImageCapture.Builder().build().onUnbind()
     }
 
     @Test
-    fun useImageReaderProvider_pipelineEnabled() {
-        assertThat(
-            bindImageCapture(
-                useProcessingPipeline = true,
-                bufferFormat = ImageFormat.JPEG,
-                imageReaderProxyProvider = getImageReaderProxyProvider(),
-            ).isProcessingPipelineEnabled
-        ).isTrue()
-    }
-
-    @Test
-    fun yuvFormat_pipelineEnabled() {
-        assertThat(
-            bindImageCapture(
-                useProcessingPipeline = true,
-                bufferFormat = ImageFormat.YUV_420_888,
-            ).isProcessingPipelineEnabled
-        ).isTrue()
-    }
-
-    @Config(minSdk = 28)
-    @Test
-    fun extensionIsOn_pipelineEnabled() {
-        val imageCapture = bindImageCapture(
-            useProcessingPipeline = true,
-            bufferFormat = ImageFormat.JPEG,
-            sessionProcessor = FakeSessionProcessor(null, null)
-        )
-        assertThat(imageCapture.isProcessingPipelineEnabled).isTrue()
-        assertThat(imageCapture.imagePipeline!!.expectsMetadata()).isFalse()
-    }
-
-    @Test
     fun captureImageWithViewPort_isSet() {
         // Arrange
         val imageCapture = bindImageCapture(
@@ -399,185 +340,6 @@
     }
 
     @Test
-    fun imageCaptureRequestProcessor_canSendRequest() {
-        // Arrange.
-        val requestProcessor = ImageCaptureRequestProcessor(MAX_IMAGES, createSuccessImageCaptor())
-        val request = createImageCaptureRequest()
-
-        // Act.
-        requestProcessor.sendRequest(request)
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Assert.
-        verify(request).dispatchImage(any())
-    }
-
-    @Test
-    fun imageCaptureRequestProcessor_canSendMultipleRequests() {
-        // Arrange.
-        val requestProcessor = ImageCaptureRequestProcessor(MAX_IMAGES, createSuccessImageCaptor())
-        for (i in 0 until MAX_IMAGES) {
-            val request = createImageCaptureRequest()
-
-            // Act.
-            requestProcessor.sendRequest(request)
-
-            // Ensure tasks are posted to the processing executor
-            shadowOf(getMainLooper()).idle()
-
-            // Assert.
-            verify(request).dispatchImage(any())
-        }
-    }
-
-    @Test
-    fun imageCaptureRequestProcessor_onlyAllowOneRequestProcessing() {
-        // Arrange.
-        // Create an ImageCaptor that won't complete the future.
-        val captorFutureRef = AtomicReference<ResolvableFuture<ImageProxy>?>()
-        val imageCaptor = createHoldImageCaptor(captorFutureRef)
-        val requestProcessor = ImageCaptureRequestProcessor(MAX_IMAGES, imageCaptor)
-        val request0 = createImageCaptureRequest()
-        val request1 = createImageCaptureRequest()
-
-        // Act.
-        requestProcessor.sendRequest(request0)
-        requestProcessor.sendRequest(request1)
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Assert.
-        // Has processing request but not complete.
-        assertThat(captorFutureRef.get()).isNotNull()
-        verify(request0, never()).dispatchImage(any())
-        verify(request1, never()).dispatchImage(any())
-
-        // Act.
-        // Complete request0.
-        captorFutureRef.getAndSet(null)!!.set(mock(ImageProxy::class.java))
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Assert.
-        // request0 is complete and request1 is in processing.
-        verify(request0).dispatchImage(any())
-        verify(request1, never()).dispatchImage(any())
-        assertThat(captorFutureRef.get()).isNotNull()
-
-        // Act.
-        // Complete request1.
-        captorFutureRef.getAndSet(null)!!.set(mock(ImageProxy::class.java))
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Assert.
-        verify(request1).dispatchImage(any())
-    }
-
-    @Test
-    fun imageCaptureRequestProcessor_unableToProcessNextWhenOverMaxImages() {
-        // Arrange.
-        val requestProcessor = ImageCaptureRequestProcessor(MAX_IMAGES, createSuccessImageCaptor())
-
-        // Exhaust outstanding image quota.
-        val images = ArrayDeque<ImageProxy>()
-        for (i in 0 until MAX_IMAGES) {
-            val request = createImageCaptureRequest()
-            requestProcessor.sendRequest(request)
-
-            // Ensure tasks are posted to the processing executor
-            shadowOf(getMainLooper()).idle()
-
-            // Save the dispatched images.
-            val captor = ArgumentCaptor.forClass(ImageProxy::class.java)
-            verify(request).dispatchImage(captor.capture())
-            images.offer(captor.value)
-        }
-        assertThat(images.size).isEqualTo(MAX_IMAGES)
-
-        // Act.
-        // Send one more request.
-        val request = createImageCaptureRequest()
-        requestProcessor.sendRequest(request)
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Assert.
-        verify(request, never()).dispatchImage(any())
-
-        // Act.
-        // Close one image to trigger next processing.
-        images.poll()!!.close()
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Assert.
-        // It should trigger next processing.
-        verify(request).dispatchImage(any())
-    }
-
-    @Test
-    fun imageCaptureRequestProcessor_canCancelRequests() {
-        // Arrange.
-        // Create an ImageCaptor that won't complete the future.
-        val captorFutureRef = AtomicReference<ResolvableFuture<ImageProxy>?>()
-        val imageCaptor = createHoldImageCaptor(captorFutureRef)
-        val requestProcessor = ImageCaptureRequestProcessor(MAX_IMAGES, imageCaptor)
-
-        // Send multiple requests and save these requests.
-        val requestList = ArrayList<ImageCaptureRequest>()
-        for (i in 0 until 5) {
-            val request = createImageCaptureRequest()
-            requestList.add(request)
-            requestProcessor.sendRequest(request)
-
-            // Ensure tasks are posted to the processing executor
-            shadowOf(getMainLooper()).idle()
-        }
-
-        // Act.
-        val errorMsg = "Cancel request."
-        val throwable = RuntimeException(errorMsg)
-        requestProcessor.cancelRequests(throwable)
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Assert.
-        for (request in requestList) {
-            verify(request).notifyCallbackError(anyInt(), eq(errorMsg), eq(throwable))
-        }
-        // Capture future is cancelled.
-        assertThat(captorFutureRef.get()!!.isCancelled).isTrue()
-    }
-
-    @Test
-    fun imageCaptureRequestProcessor_requestFail() {
-        // Arrange.
-        val errorMsg = "Capture failed."
-        val throwable = RuntimeException(errorMsg)
-        val requestProcessor =
-            ImageCaptureRequestProcessor(MAX_IMAGES, createFailedImageCaptor(throwable))
-        val request = createImageCaptureRequest()
-
-        // Act.
-        requestProcessor.sendRequest(request)
-
-        // Ensure tasks are posted to the processing executor
-        shadowOf(getMainLooper()).idle()
-
-        // Verify.
-        verify(request).notifyCallbackError(anyInt(), eq(errorMsg), eq(throwable))
-    }
-
-    @Test
     fun sessionConfigSurfaceFormat_isInputFormat() {
         // Act/arrange.
         val imageCapture = bindImageCapture(bufferFormat = ImageFormat.YUV_420_888,
@@ -684,7 +446,6 @@
         // Set non jpg format so it doesn't trigger the exif code path.
         bufferFormat: Int = ImageFormat.YUV_420_888,
         imageReaderProxyProvider: ImageReaderProxyProvider? = null,
-        useProcessingPipeline: Boolean? = null,
         sessionProcessor: SessionProcessor? = null
     ): ImageCapture {
         // Arrange.
@@ -693,9 +454,6 @@
             bufferFormat,
             imageReaderProxyProvider,
         )
-        if (useProcessingPipeline != null) {
-            imageCapture.mUseProcessingPipeline = useProcessingPipeline
-        }
 
         cameraUseCaseAdapter = CameraUtil.createCameraUseCaseAdapter(
             ApplicationProvider.getApplicationContext(),
@@ -711,7 +469,7 @@
 
                 override fun getSessionProcessor(
                     valueIfMissing: SessionProcessor?
-                ): SessionProcessor? {
+                ): SessionProcessor {
                     return sessionProcessor
                 }
 
@@ -764,30 +522,4 @@
     private fun flushHandler(handler: Handler?) {
         (Shadow.extract<Any>(handler!!.looper) as ShadowLooper).idle()
     }
-
-    private fun createImageCaptureRequest(): ImageCaptureRequest {
-        return mock(ImageCaptureRequest::class.java)
-    }
-
-    private fun createSuccessImageCaptor(): ImageCaptor {
-        return ImageCaptor {
-            Futures.immediateFuture(FakeImageProxy(FakeImageInfo()))
-        }
-    }
-
-    private fun createHoldImageCaptor(
-        futureHolder: AtomicReference<ResolvableFuture<ImageProxy>?>
-    ): ImageCaptor {
-        return ImageCaptor {
-            ResolvableFuture.create<ImageProxy>().apply {
-                futureHolder.set(this)
-            }
-        }
-    }
-
-    private fun createFailedImageCaptor(throwable: Throwable): ImageCaptor {
-        return ImageCaptor {
-            Futures.immediateFailedFuture(throwable)
-        }
-    }
 }
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraInternalTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraInternalTest.kt
index eb693ac..5299376 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraInternalTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraInternalTest.kt
@@ -20,12 +20,12 @@
 import androidx.camera.core.CameraSelector
 import androidx.camera.testing.fakes.FakeCamera
 import androidx.camera.testing.fakes.FakeCameraInfoInternal
+import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
-import com.google.common.truth.Truth.assertThat
 
 /**
  * Unit tests for [CameraInternal].
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/impl/StreamSpecTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/impl/StreamSpecTest.kt
index d8674dc..b7b122c 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/impl/StreamSpecTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/StreamSpecTest.kt
@@ -50,7 +50,7 @@
 
     @Test
     fun canRetrieveDynamicRange() {
-        val dynamicRange = DynamicRange(DynamicRange.FORMAT_HLG, DynamicRange.BIT_DEPTH_10_BIT)
+        val dynamicRange = DynamicRange.HLG_10_BIT
         val streamSpec = StreamSpec.builder(TEST_RESOLUTION).setDynamicRange(dynamicRange).build()
 
         assertThat(streamSpec.dynamicRange).isEqualTo(dynamicRange)
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/impl/utils/MatrixExtTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/impl/utils/MatrixExtTest.kt
index 0c5367d..3e259d6 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/impl/utils/MatrixExtTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/utils/MatrixExtTest.kt
@@ -33,6 +33,24 @@
 class MatrixExtTest {
 
     @Test
+    fun preVerticalFlip() {
+        // Arrange.
+        val flipLine = 0.5f
+        val matrix = FloatArray(16)
+        Matrix.setIdentityM(matrix, 0)
+        val expected = FloatArray(16)
+        Matrix.setIdentityM(expected, 0)
+
+        // Act: flip around the line y = 0.5.
+        MatrixExt.preVerticalFlip(matrix, flipLine)
+
+        // Assert: the matrix should be flipped around the line y = 0.5.
+        Matrix.translateM(expected, 0, 0f, flipLine * 2, 0f)
+        Matrix.scaleM(expected, 0, 1f, -flipLine * 2, 1f)
+        assertThat(matrix).usingTolerance(FLOAT_TOLERANCE).containsExactly(expected).inOrder()
+    }
+
+    @Test
     fun setRotate() {
         val transform = createIdentityMatrix().also {
             // 0.5x scaling on the Y axis
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/processing/SurfaceOutputImplTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/processing/SurfaceOutputImplTest.kt
index bc76e238..21dd66c 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/processing/SurfaceOutputImplTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/processing/SurfaceOutputImplTest.kt
@@ -23,8 +23,8 @@
 import android.util.Size
 import android.view.Surface
 import androidx.camera.core.CameraEffect
-import androidx.camera.core.impl.ImageFormatConstants.INTERNAL_DEFINED_IMAGE_FORMAT_PRIVATE
 import androidx.camera.core.CameraSelector.LENS_FACING_FRONT
+import androidx.camera.core.impl.ImageFormatConstants.INTERNAL_DEFINED_IMAGE_FORMAT_PRIVATE
 import androidx.camera.core.impl.utils.TransformUtils.sizeToRect
 import androidx.camera.core.impl.utils.executor.CameraXExecutors.mainThreadExecutor
 import androidx.camera.testing.fakes.FakeCamera
diff --git a/camera/camera-effects-still-portrait/build.gradle b/camera/camera-effects-still-portrait/build.gradle
index e6d14aa..647567c 100644
--- a/camera/camera-effects-still-portrait/build.gradle
+++ b/camera/camera-effects-still-portrait/build.gradle
@@ -32,7 +32,7 @@
     namespace "androidx.camera.effects.stillportrait"
 }
 androidx {
-    name = "Jetpack Camera Portrait Still Effect Library"
+    name = "Camera Effects: Still Portrait"
     publish = Publish.SNAPSHOT_ONLY
     inceptionYear = "2022"
     runApiTasks = new RunApiTasks.Yes()
diff --git a/camera/camera-effects/build.gradle b/camera/camera-effects/build.gradle
index d6fc08d..858866e 100644
--- a/camera/camera-effects/build.gradle
+++ b/camera/camera-effects/build.gradle
@@ -32,7 +32,7 @@
     namespace "androidx.camera.effects"
 }
 androidx {
-    name = "Jetpack Camera Effects Library"
+    name = "Camera Effects"
     publish = Publish.NONE
     inceptionYear = "2022"
     runApiTasks = new RunApiTasks.Yes()
diff --git a/camera/camera-extensions-stub/build.gradle b/camera/camera-extensions-stub/build.gradle
index de2b943..efca9c0 100644
--- a/camera/camera-extensions-stub/build.gradle
+++ b/camera/camera-extensions-stub/build.gradle
@@ -25,7 +25,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Library OEM Extensions Stub"
+    name = "Camera OEM Extensions Stub"
     publish = Publish.NONE
 
     inceptionYear = "2019"
diff --git a/camera/camera-extensions/build.gradle b/camera/camera-extensions/build.gradle
index 1627bec..4cb5a01 100644
--- a/camera/camera-extensions/build.gradle
+++ b/camera/camera-extensions/build.gradle
@@ -81,7 +81,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Library OEM Extensions"
+    name = "Camera Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
 
     inceptionYear = "2019"
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt
index 6aa7222..94f0466 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt
@@ -41,6 +41,7 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withContext
@@ -51,7 +52,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(Parameterized::class)
diff --git a/camera/camera-lifecycle/build.gradle b/camera/camera-lifecycle/build.gradle
index 7d0119c..4f7b607 100644
--- a/camera/camera-lifecycle/build.gradle
+++ b/camera/camera-lifecycle/build.gradle
@@ -61,7 +61,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Lifecycle Library"
+    name = "Camera Lifecycle"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Lifecycle components for the Jetpack Camera Library, a library providing a " +
diff --git a/camera/camera-mlkit-vision/build.gradle b/camera/camera-mlkit-vision/build.gradle
index f0f3bad..e569d1f 100644
--- a/camera/camera-mlkit-vision/build.gradle
+++ b/camera/camera-mlkit-vision/build.gradle
@@ -58,7 +58,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera MLKit Vision Library"
+    name = "Camera MLKit Vision"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2022"
     runApiTasks = new RunApiTasks.Yes()
diff --git a/camera/camera-testing/build.gradle b/camera/camera-testing/build.gradle
index 177e3db..3c9f0b7 100644
--- a/camera/camera-testing/build.gradle
+++ b/camera/camera-testing/build.gradle
@@ -91,7 +91,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Testing Library"
+    name = "Camera Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     runApiTasks = new RunApiTasks.No("Internal testing library without any release plan yet.")
     inceptionYear = "2019"
diff --git a/camera/camera-testing/src/androidTest/java/androidx/camera/testing/TestImageUtilDeviceTest.kt b/camera/camera-testing/src/androidTest/java/androidx/camera/testing/TestImageUtilDeviceTest.kt
index 1045e0b..7b69b03 100644
--- a/camera/camera-testing/src/androidTest/java/androidx/camera/testing/TestImageUtilDeviceTest.kt
+++ b/camera/camera-testing/src/androidTest/java/androidx/camera/testing/TestImageUtilDeviceTest.kt
@@ -24,9 +24,9 @@
 import androidx.camera.testing.TestImageUtil.createJpegBytes
 import androidx.camera.testing.TestImageUtil.createJpegFakeImageProxy
 import androidx.camera.testing.TestImageUtil.getAverageDiff
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
-import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/ObservableExtensions.kt b/camera/camera-testing/src/main/java/androidx/camera/testing/ObservableExtensions.kt
index aec51e1..79b54b7 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/ObservableExtensions.kt
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/ObservableExtensions.kt
@@ -21,6 +21,7 @@
 
 import androidx.annotation.RequiresApi
 import androidx.camera.core.impl.Observable
+import kotlin.coroutines.ContinuationInterceptor
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.asExecutor
@@ -28,7 +29,6 @@
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.callbackFlow
 import kotlinx.coroutines.launch
-import kotlin.coroutines.ContinuationInterceptor
 
 public fun <T> Observable<T>.asFlow(): Flow<T?> = callbackFlow {
     val observer = object : Observable.Observer<T> {
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeSessionProcessor.kt b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeSessionProcessor.kt
index ee51c7d..ba115c1 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeSessionProcessor.kt
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeSessionProcessor.kt
@@ -72,6 +72,7 @@
     private val startCaptureCalled = CompletableDeferred<Long>()
     private val setParametersCalled = CompletableDeferred<Config>()
     private val startTriggerCalled = CompletableDeferred<Config>()
+    private val stopRepeatingCalled = CompletableDeferred<Long>()
     private var latestParameters: Config = OptionsBundle.emptyBundle()
     private var blockRunAfterInitSession: () -> Unit = {}
 
@@ -277,6 +278,8 @@
     }
 
     override fun stopRepeating() {
+        requestProcessor!!.stopRepeating()
+        stopRepeatingCalled.complete(SystemClock.elapsedRealtimeNanos())
     }
 
     override fun startCapture(callback: SessionProcessor.CaptureCallback): Int {
@@ -380,6 +383,10 @@
         return startTriggerCalled.awaitWithTimeout(3000)
     }
 
+    suspend fun assertStopRepeatingInvoked(): Long {
+        return stopRepeatingCalled.awaitWithTimeout(3000)
+    }
+
     private suspend fun <T> Deferred<T>.awaitWithTimeout(timeMillis: Long): T {
         return withTimeout(timeMillis) {
             await()
diff --git a/camera/camera-testlib-extensions/build.gradle b/camera/camera-testlib-extensions/build.gradle
index 886b875..849e115 100644
--- a/camera/camera-testlib-extensions/build.gradle
+++ b/camera/camera-testlib-extensions/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Extensions Example Library"
+    name = "Camera Extensions Example"
     publish = Publish.NONE
     inceptionYear = "2019"
     description = "Example extension implementation for the Jetpack Camera Library, a library providing a " +
diff --git a/camera/camera-video/build.gradle b/camera/camera-video/build.gradle
index ff70608..d62ee62 100644
--- a/camera/camera-video/build.gradle
+++ b/camera/camera-video/build.gradle
@@ -87,7 +87,7 @@
 }
 
 androidx {
-    name = "Jetpack Camera Video Library"
+    name = "Camera Video"
     publish = Publish.SNAPSHOT_AND_RELEASE
     runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
     inceptionYear = "2020"
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
index 8366234..afb86b0 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.camera.video
 
-import androidx.camera.testing.mocks.helpers.ArgumentCaptor as ArgumentCaptorCameraX
 import android.Manifest
 import android.annotation.SuppressLint
 import android.app.AppOpsManager
@@ -56,6 +55,7 @@
 import androidx.camera.testing.SurfaceTextureProvider
 import androidx.camera.testing.asFlow
 import androidx.camera.testing.mocks.MockConsumer
+import androidx.camera.testing.mocks.helpers.ArgumentCaptor as ArgumentCaptorCameraX
 import androidx.camera.testing.mocks.helpers.CallTimes
 import androidx.camera.testing.mocks.helpers.CallTimesAtLeast
 import androidx.camera.video.VideoOutput.SourceState.ACTIVE_NON_STREAMING
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoCaptureDeviceTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoCaptureDeviceTest.kt
index 3f32f37..43507b1 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoCaptureDeviceTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoCaptureDeviceTest.kt
@@ -28,8 +28,8 @@
 import androidx.camera.core.CameraXConfig
 import androidx.camera.core.DynamicRange
 import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
-import androidx.camera.core.DynamicRange.FORMAT_HLG
 import androidx.camera.core.DynamicRange.HDR_UNSPECIFIED_10_BIT
+import androidx.camera.core.DynamicRange.HLG_10_BIT
 import androidx.camera.core.Preview
 import androidx.camera.core.SurfaceRequest
 import androidx.camera.core.impl.CameraInfoInternal
@@ -116,8 +116,6 @@
             arrayOf(Camera2Config::class.simpleName, Camera2Config.defaultConfig()),
             arrayOf(CameraPipeConfig::class.simpleName, CameraPipeConfig.defaultConfig())
         )
-
-        private val DYNAMIC_RANGE_HLG10 = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
     }
 
     private val context: Context = ApplicationProvider.getApplicationContext()
@@ -395,13 +393,13 @@
     fun dynamicRangeHlg_selectsHlg(): Unit = runBlocking {
         assumeTrue(
             "Device does not support HLG10",
-            cameraInfo.supportedDynamicRanges.contains(DYNAMIC_RANGE_HLG10)
+            cameraInfo.supportedDynamicRanges.contains(HLG_10_BIT)
         )
 
         testDynamicRangeSelection(
-            requestedDynamicRange = DYNAMIC_RANGE_HLG10
+            requestedDynamicRange = HLG_10_BIT
         ) { selectedDynamicRange ->
-            assertThat(selectedDynamicRange).isEqualTo(DYNAMIC_RANGE_HLG10)
+            assertThat(selectedDynamicRange).isEqualTo(HLG_10_BIT)
         }
     }
     @SdkSuppress(minSdkVersion = 33) // HLG10 only supported on API 33+
@@ -412,13 +410,13 @@
         assumeTrue(implName != CameraPipeConfig::class.simpleName)
         assumeTrue(
             "Device does not support HLG10",
-            cameraInfo.supportedDynamicRanges.contains(DYNAMIC_RANGE_HLG10)
+            cameraInfo.supportedDynamicRanges.contains(HLG_10_BIT)
         )
 
         // Arrange.
         val videoOutput = createTestVideoOutput()
         val videoCapture = VideoCapture.Builder(videoOutput)
-            .setDynamicRange(DYNAMIC_RANGE_HLG10)
+            .setDynamicRange(HLG_10_BIT)
             .build()
 
         // Act.
@@ -430,7 +428,7 @@
         // Wait for surface request to ensure session config was attached
         videoOutput.nextSurfaceRequest(5, TimeUnit.SECONDS)
         val outputConfig = videoCapture.sessionConfig.outputConfigs.first()
-        assertThat(outputConfig.dynamicRange).isEqualTo(DYNAMIC_RANGE_HLG10)
+        assertThat(outputConfig.dynamicRange).isEqualTo(HLG_10_BIT)
     }
 
     @SdkSuppress(minSdkVersion = 33) // 10-bit HDR only supported on API 33+
@@ -459,13 +457,13 @@
         assumeTrue(implName != CameraPipeConfig::class.simpleName)
         assumeTrue(
             "Device does not support HLG10",
-            cameraInfo.supportedDynamicRanges.contains(DYNAMIC_RANGE_HLG10)
+            cameraInfo.supportedDynamicRanges.contains(HLG_10_BIT)
         )
 
         // Arrange.
         val videoOutput = createTestVideoOutput()
         val videoCapture = VideoCapture.Builder(videoOutput)
-            .setDynamicRange(DYNAMIC_RANGE_HLG10)
+            .setDynamicRange(HLG_10_BIT)
             .build()
         // Preview will derive dynamic range from VideoCapture since it uses
         // DynamicRange.UNSPECIFIED by default.
@@ -487,8 +485,8 @@
              deferredSurfaceRequest.await()
         } ?: fail("Timed out waiting for Preview SurfaceRequest. Waited $timeout.")
         val previewOutputConfig = preview.sessionConfig.outputConfigs.first()
-        assertThat(previewSurfaceRequest.dynamicRange).isEqualTo(DYNAMIC_RANGE_HLG10)
-        assertThat(previewOutputConfig.dynamicRange).isEqualTo(DYNAMIC_RANGE_HLG10)
+        assertThat(previewSurfaceRequest.dynamicRange).isEqualTo(HLG_10_BIT)
+        assertThat(previewOutputConfig.dynamicRange).isEqualTo(HLG_10_BIT)
     }
 
     private suspend fun testDynamicRangeSelection(
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
index 39a9ec0..21b32bf 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
@@ -16,11 +16,6 @@
 
 package androidx.camera.video
 
-import androidx.camera.camera2.internal.compat.quirk.DeviceQuirks as Camera2DeviceQuirks
-import androidx.camera.camera2.internal.compat.quirk.ExtraCroppingQuirk as Camera2ExtraCroppingQuirk
-import androidx.camera.camera2.pipe.integration.compat.quirk.DeviceQuirks as PipeDeviceQuirks
-import androidx.camera.camera2.pipe.integration.compat.quirk.ExtraCroppingQuirk as PipeExtraCroppingQuirk
-import androidx.camera.testing.mocks.helpers.ArgumentCaptor as ArgumentCaptorCameraX
 import android.Manifest
 import android.content.Context
 import android.graphics.Rect
@@ -34,7 +29,11 @@
 import android.view.Surface
 import androidx.annotation.RequiresApi
 import androidx.camera.camera2.Camera2Config
+import androidx.camera.camera2.internal.compat.quirk.DeviceQuirks as Camera2DeviceQuirks
+import androidx.camera.camera2.internal.compat.quirk.ExtraCroppingQuirk as Camera2ExtraCroppingQuirk
 import androidx.camera.camera2.pipe.integration.CameraPipeConfig
+import androidx.camera.camera2.pipe.integration.compat.quirk.DeviceQuirks as PipeDeviceQuirks
+import androidx.camera.camera2.pipe.integration.compat.quirk.ExtraCroppingQuirk as PipeExtraCroppingQuirk
 import androidx.camera.core.AspectRatio
 import androidx.camera.core.Camera
 import androidx.camera.core.CameraInfo
@@ -57,6 +56,7 @@
 import androidx.camera.testing.SurfaceTextureProvider
 import androidx.camera.testing.fakes.FakeLifecycleOwner
 import androidx.camera.testing.mocks.MockConsumer
+import androidx.camera.testing.mocks.helpers.ArgumentCaptor as ArgumentCaptorCameraX
 import androidx.camera.testing.mocks.helpers.CallTimesAtLeast
 import androidx.camera.video.VideoRecordEvent.Finalize.ERROR_NONE
 import androidx.camera.video.VideoRecordEvent.Finalize.ERROR_SOURCE_INACTIVE
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/BackupHdrProfileEncoderProfilesProviderTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/BackupHdrProfileEncoderProfilesProviderTest.kt
index f887fa8..d5500c4 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/BackupHdrProfileEncoderProfilesProviderTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/BackupHdrProfileEncoderProfilesProviderTest.kt
@@ -25,7 +25,7 @@
 import androidx.camera.camera2.pipe.integration.adapter.EncoderProfilesProviderAdapter
 import androidx.camera.core.CameraSelector
 import androidx.camera.core.CameraXConfig
-import androidx.camera.core.DynamicRange
+import androidx.camera.core.DynamicRange.HLG_10_BIT
 import androidx.camera.core.DynamicRange.SDR
 import androidx.camera.core.impl.CameraInfoInternal
 import androidx.camera.core.impl.EncoderProfilesProvider
@@ -71,8 +71,6 @@
     val labTest: LabTestRule = LabTestRule()
 
     companion object {
-        private val HLG10 = DynamicRange(DynamicRange.FORMAT_HLG, DynamicRange.BIT_DEPTH_10_BIT)
-
         @JvmStatic
         private val qualities = arrayOf(
             CamcorderProfile.QUALITY_LOW,
@@ -169,7 +167,7 @@
     @Test
     fun providerWithDefaultValidator_provideHdrBackupProfile_whenBaseSdrProfileIsValid() {
         // Pre-arrange.
-        assumeTrue(cameraInfo.supportedDynamicRanges.containsAll(setOf(SDR, HLG10)))
+        assumeTrue(cameraInfo.supportedDynamicRanges.containsAll(setOf(SDR, HLG_10_BIT)))
 
         // Arrange.
         assumeTrue(baseProvider.hasProfile(quality))
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java b/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java
index ef2fd4c..7b78e91 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java
@@ -17,10 +17,10 @@
 package androidx.camera.video;
 
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED;
-import static androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED;
-import static androidx.camera.core.DynamicRange.FORMAT_HLG;
-import static androidx.camera.core.DynamicRange.FORMAT_SDR;
-import static androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.ENCODING_HDR_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.ENCODING_HLG;
+import static androidx.camera.core.DynamicRange.ENCODING_SDR;
+import static androidx.camera.core.DynamicRange.ENCODING_UNSPECIFIED;
 import static androidx.camera.video.internal.BackupHdrProfileEncoderProfilesProvider.DEFAULT_VALIDATOR;
 
 import android.util.Size;
@@ -79,8 +79,8 @@
     // Mappings of DynamicRange to recording capability information. The mappings are divided
     // into two collections based on the key's (DynamicRange) category, one for specified
     // DynamicRange and one for others. Specified DynamicRange means that its bit depth and
-    // format are specified values, not some wildcards, such as: FORMAT_UNSPECIFIED,
-    // FORMAT_HDR_UNSPECIFIED or BIT_DEPTH_UNSPECIFIED.
+    // format are specified values, not some wildcards, such as: ENCODING_UNSPECIFIED,
+    // ENCODING_HDR_UNSPECIFIED or BIT_DEPTH_UNSPECIFIED.
     private final Map<DynamicRange, CapabilitiesByQuality>
             mCapabilitiesMapForFullySpecifiedDynamicRange = new HashMap<>();
     private final Map<DynamicRange, CapabilitiesByQuality>
@@ -213,9 +213,9 @@
             @NonNull CameraInfoInternal cameraInfoInternal) {
         Set<DynamicRange> dynamicRanges = cameraInfoInternal.getSupportedDynamicRanges();
         for (DynamicRange dynamicRange : dynamicRanges) {
-            Integer format = dynamicRange.getFormat();
+            Integer encoding = dynamicRange.getEncoding();
             int bitDepth = dynamicRange.getBitDepth();
-            if (format.equals(FORMAT_HLG) && bitDepth == DynamicRange.BIT_DEPTH_10_BIT) {
+            if (encoding.equals(ENCODING_HLG) && bitDepth == DynamicRange.BIT_DEPTH_10_BIT) {
                 return true;
             }
         }
@@ -252,7 +252,7 @@
         } else {
             for (DynamicRange fullySpecifiedDynamicRange : fullySpecifiedDynamicRanges) {
                 if (canMatchBitDepth(dynamicRangeToTest, fullySpecifiedDynamicRange)
-                        && canMatchFormat(dynamicRangeToTest, fullySpecifiedDynamicRange)) {
+                        && canMatchEncoding(dynamicRangeToTest, fullySpecifiedDynamicRange)) {
                     return true;
                 }
             }
@@ -272,26 +272,26 @@
         return dynamicRangeToTest.getBitDepth() == fullySpecifiedDynamicRange.getBitDepth();
     }
 
-    private static boolean canMatchFormat(@NonNull DynamicRange dynamicRangeToTest,
+    private static boolean canMatchEncoding(@NonNull DynamicRange dynamicRangeToTest,
             @NonNull DynamicRange fullySpecifiedDynamicRange) {
         Preconditions.checkState(isFullySpecified(fullySpecifiedDynamicRange), "Fully specified "
                 + "range is not actually fully specified.");
-        int formatToTest = dynamicRangeToTest.getFormat();
-        if (formatToTest == FORMAT_UNSPECIFIED) {
+        int encodingToTest = dynamicRangeToTest.getEncoding();
+        if (encodingToTest == ENCODING_UNSPECIFIED) {
             return true;
         }
 
-        int fullySpecifiedFormat = fullySpecifiedDynamicRange.getFormat();
-        if (formatToTest == FORMAT_HDR_UNSPECIFIED && fullySpecifiedFormat != FORMAT_SDR) {
+        int fullySpecifiedEncoding = fullySpecifiedDynamicRange.getEncoding();
+        if (encodingToTest == ENCODING_HDR_UNSPECIFIED && fullySpecifiedEncoding != ENCODING_SDR) {
             return true;
         }
 
-        return formatToTest == fullySpecifiedFormat;
+        return encodingToTest == fullySpecifiedEncoding;
     }
 
     private static boolean isFullySpecified(@NonNull DynamicRange dynamicRange) {
-        return dynamicRange.getFormat() != FORMAT_UNSPECIFIED
-                && dynamicRange.getFormat() != FORMAT_HDR_UNSPECIFIED
+        return dynamicRange.getEncoding() != ENCODING_UNSPECIFIED
+                && dynamicRange.getEncoding() != ENCODING_HDR_UNSPECIFIED
                 && dynamicRange.getBitDepth() != BIT_DEPTH_UNSPECIFIED;
     }
 
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/VideoCapabilities.java b/camera/camera-video/src/main/java/androidx/camera/video/VideoCapabilities.java
index 5814ce7..0d8521c 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/VideoCapabilities.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/VideoCapabilities.java
@@ -41,7 +41,7 @@
      * Gets all dynamic ranges supported by both the camera and video output.
      *
      * <p>Only {@link DynamicRange}s with specified values both in {@link DynamicRange.BitDepth}
-     * and {@link DynamicRange.DynamicRangeFormat} will be present in the returned set.
+     * and {@link DynamicRange.DynamicRangeEncoding} will be present in the returned set.
      * {@link DynamicRange}s such as {@link DynamicRange#HDR_UNSPECIFIED_10_BIT} will not be
      * included, but they can be used in other methods, such as checking for quality support with
      * {@link #isQualitySupported(Quality, DynamicRange)}.
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProvider.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProvider.java
index b8c05c1..8567979 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProvider.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProvider.java
@@ -93,7 +93,7 @@
 
         List<VideoProfileProxy> validVideoProfiles = new ArrayList<>();
         for (VideoProfileProxy videoProfile : encoderProfiles.getVideoProfiles()) {
-            if (isBitDepthMatched(videoProfile, dynamicRange) && isHdrFormatMatched(videoProfile,
+            if (isBitDepthMatched(videoProfile, dynamicRange) && isHdrEncodingMatched(videoProfile,
                     dynamicRange)) {
                 validVideoProfiles.add(videoProfile);
             }
@@ -114,10 +114,11 @@
         return matchedBitDepths != null && matchedBitDepths.contains(videoProfile.getBitDepth());
     }
 
-    private static boolean isHdrFormatMatched(@NonNull VideoProfileProxy videoProfile,
+    private static boolean isHdrEncodingMatched(@NonNull VideoProfileProxy videoProfile,
             @NonNull DynamicRange dynamicRange) {
-        Set<Integer> matchedHdrFormats = DR_TO_VP_FORMAT_MAP.get(dynamicRange.getFormat());
+        Set<Integer> matchedHdrEncodings = DR_TO_VP_FORMAT_MAP.get(dynamicRange.getEncoding());
 
-        return matchedHdrFormats != null && matchedHdrFormats.contains(videoProfile.getHdrFormat());
+        return matchedHdrEncodings != null
+                && matchedHdrEncodings.contains(videoProfile.getHdrFormat());
     }
 }
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
index e079aba..63e67ae 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
@@ -25,13 +25,13 @@
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT;
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_8_BIT;
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED;
-import static androidx.camera.core.DynamicRange.FORMAT_DOLBY_VISION;
-import static androidx.camera.core.DynamicRange.FORMAT_HDR10;
-import static androidx.camera.core.DynamicRange.FORMAT_HDR10_PLUS;
-import static androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED;
-import static androidx.camera.core.DynamicRange.FORMAT_HLG;
-import static androidx.camera.core.DynamicRange.FORMAT_SDR;
-import static androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.ENCODING_DOLBY_VISION;
+import static androidx.camera.core.DynamicRange.ENCODING_HDR10;
+import static androidx.camera.core.DynamicRange.ENCODING_HDR10_PLUS;
+import static androidx.camera.core.DynamicRange.ENCODING_HDR_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.ENCODING_HLG;
+import static androidx.camera.core.DynamicRange.ENCODING_SDR;
+import static androidx.camera.core.DynamicRange.ENCODING_UNSPECIFIED;
 import static androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy.BIT_DEPTH_10;
 import static androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy.BIT_DEPTH_8;
 
@@ -65,23 +65,23 @@
         DR_TO_VP_BIT_DEPTH_MAP.put(BIT_DEPTH_UNSPECIFIED,
                 new HashSet<>(asList(BIT_DEPTH_8, BIT_DEPTH_10)));
 
-        // DynamicRange format to VideoProfile HDR format.
-        DR_TO_VP_FORMAT_MAP.put(FORMAT_UNSPECIFIED, new HashSet<>(asList(HDR_NONE, HDR_HLG,
+        // DynamicRange encoding to VideoProfile HDR format.
+        DR_TO_VP_FORMAT_MAP.put(ENCODING_UNSPECIFIED, new HashSet<>(asList(HDR_NONE, HDR_HLG,
                 HDR_HDR10, HDR_HDR10PLUS, HDR_DOLBY_VISION)));
-        DR_TO_VP_FORMAT_MAP.put(FORMAT_SDR, new HashSet<>(singletonList(HDR_NONE)));
-        DR_TO_VP_FORMAT_MAP.put(FORMAT_HDR_UNSPECIFIED,
+        DR_TO_VP_FORMAT_MAP.put(ENCODING_SDR, new HashSet<>(singletonList(HDR_NONE)));
+        DR_TO_VP_FORMAT_MAP.put(ENCODING_HDR_UNSPECIFIED,
                 new HashSet<>(asList(HDR_HLG, HDR_HDR10, HDR_HDR10PLUS, HDR_DOLBY_VISION)));
-        DR_TO_VP_FORMAT_MAP.put(FORMAT_HLG, new HashSet<>(singletonList(HDR_HLG)));
-        DR_TO_VP_FORMAT_MAP.put(FORMAT_HDR10, new HashSet<>(singletonList(HDR_HDR10)));
-        DR_TO_VP_FORMAT_MAP.put(FORMAT_HDR10_PLUS, new HashSet<>(singletonList(HDR_HDR10PLUS)));
-        DR_TO_VP_FORMAT_MAP.put(FORMAT_DOLBY_VISION,
+        DR_TO_VP_FORMAT_MAP.put(ENCODING_HLG, new HashSet<>(singletonList(HDR_HLG)));
+        DR_TO_VP_FORMAT_MAP.put(ENCODING_HDR10, new HashSet<>(singletonList(HDR_HDR10)));
+        DR_TO_VP_FORMAT_MAP.put(ENCODING_HDR10_PLUS, new HashSet<>(singletonList(HDR_HDR10PLUS)));
+        DR_TO_VP_FORMAT_MAP.put(ENCODING_DOLBY_VISION,
                 new HashSet<>(singletonList(HDR_DOLBY_VISION)));
 
-        // VideoProfile HDR format to DynamicRange format.
-        VP_TO_DR_FORMAT_MAP.put(HDR_NONE, FORMAT_SDR);
-        VP_TO_DR_FORMAT_MAP.put(HDR_HLG, FORMAT_HLG);
-        VP_TO_DR_FORMAT_MAP.put(HDR_HDR10, FORMAT_HDR10);
-        VP_TO_DR_FORMAT_MAP.put(HDR_HDR10PLUS, FORMAT_HDR10_PLUS);
-        VP_TO_DR_FORMAT_MAP.put(HDR_DOLBY_VISION, FORMAT_DOLBY_VISION);
+        // VideoProfile HDR format to DynamicRange encoding.
+        VP_TO_DR_FORMAT_MAP.put(HDR_NONE, ENCODING_SDR);
+        VP_TO_DR_FORMAT_MAP.put(HDR_HLG, ENCODING_HLG);
+        VP_TO_DR_FORMAT_MAP.put(HDR_HDR10, ENCODING_HDR10);
+        VP_TO_DR_FORMAT_MAP.put(HDR_HDR10PLUS, ENCODING_HDR10_PLUS);
+        VP_TO_DR_FORMAT_MAP.put(HDR_DOLBY_VISION, ENCODING_DOLBY_VISION);
     }
 }
diff --git a/camera/camera-video/src/test/java/androidx/camera/video/QualitySelectorTest.kt b/camera/camera-video/src/test/java/androidx/camera/video/QualitySelectorTest.kt
index 83ed028c..d65651c 100644
--- a/camera/camera-video/src/test/java/androidx/camera/video/QualitySelectorTest.kt
+++ b/camera/camera-video/src/test/java/androidx/camera/video/QualitySelectorTest.kt
@@ -22,8 +22,7 @@
 import android.media.CamcorderProfile.QUALITY_LOW
 import android.os.Build
 import androidx.camera.core.DynamicRange
-import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
-import androidx.camera.core.DynamicRange.FORMAT_HLG
+import androidx.camera.core.DynamicRange.HLG_10_BIT
 import androidx.camera.core.DynamicRange.SDR
 import androidx.camera.testing.EncoderProfilesUtil.PROFILES_2160P
 import androidx.camera.testing.EncoderProfilesUtil.PROFILES_720P
@@ -40,7 +39,6 @@
 import org.robolectric.annotation.internal.DoNotInstrument
 
 private const val CAMERA_ID_0 = "0"
-private val HLG10 = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
 
 @RunWith(RobolectricTestRunner::class)
 @DoNotInstrument
@@ -58,7 +56,7 @@
     private val videoCapabilities = createFakeVideoCapabilities(
         mapOf(
             SDR to listOf(Quality.UHD, Quality.HD),
-            HLG10 to listOf(Quality.FHD, Quality.SD)
+            HLG_10_BIT to listOf(Quality.FHD, Quality.SD)
         )
     )
 
@@ -345,7 +343,7 @@
         )
 
         // Act.
-        val supportedQualities = videoCapabilities.getSupportedQualities(HLG10)
+        val supportedQualities = videoCapabilities.getSupportedQualities(HLG_10_BIT)
         val selectedQualities = qualitySelector.getPrioritizedQualities(supportedQualities)
 
         // Assert.
@@ -362,7 +360,7 @@
         )
 
         // Act.
-        val supportedQualities = videoCapabilities.getSupportedQualities(HLG10)
+        val supportedQualities = videoCapabilities.getSupportedQualities(HLG_10_BIT)
         val selectedQualities = qualitySelector.getPrioritizedQualities(supportedQualities)
 
         // Assert.
@@ -379,7 +377,7 @@
         )
 
         // Act.
-        val supportedQualities = videoCapabilities.getSupportedQualities(HLG10)
+        val supportedQualities = videoCapabilities.getSupportedQualities(HLG_10_BIT)
         val selectedQualities = qualitySelector.getPrioritizedQualities(supportedQualities)
 
         // Assert.
@@ -396,7 +394,7 @@
         )
 
         // Act.
-        val supportedQualities = videoCapabilities.getSupportedQualities(HLG10)
+        val supportedQualities = videoCapabilities.getSupportedQualities(HLG_10_BIT)
         val selectedQualities = qualitySelector.getPrioritizedQualities(supportedQualities)
 
         // Assert.
@@ -413,7 +411,7 @@
         )
 
         // Act.
-        val supportedQualities = videoCapabilities.getSupportedQualities(HLG10)
+        val supportedQualities = videoCapabilities.getSupportedQualities(HLG_10_BIT)
         val selectedQualities = qualitySelector.getPrioritizedQualities(supportedQualities)
 
         // Assert.
diff --git a/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt b/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt
index f917aca..2a1c94e 100644
--- a/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt
+++ b/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt
@@ -23,12 +23,12 @@
 import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
 import androidx.camera.core.DynamicRange.BIT_DEPTH_8_BIT
 import androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED
-import androidx.camera.core.DynamicRange.FORMAT_DOLBY_VISION
-import androidx.camera.core.DynamicRange.FORMAT_HDR10
-import androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED
-import androidx.camera.core.DynamicRange.FORMAT_HLG
-import androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED
+import androidx.camera.core.DynamicRange.ENCODING_DOLBY_VISION
+import androidx.camera.core.DynamicRange.ENCODING_HDR_UNSPECIFIED
+import androidx.camera.core.DynamicRange.ENCODING_UNSPECIFIED
+import androidx.camera.core.DynamicRange.HDR10_10_BIT
 import androidx.camera.core.DynamicRange.HDR_UNSPECIFIED_10_BIT
+import androidx.camera.core.DynamicRange.HLG_10_BIT
 import androidx.camera.core.DynamicRange.SDR
 import androidx.camera.core.DynamicRange.UNSPECIFIED
 import androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy
@@ -54,12 +54,10 @@
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
 
-private val HLG10 = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
-private val HDR10 = DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT)
-private val UNSPECIFIED_8_BIT = DynamicRange(FORMAT_UNSPECIFIED, BIT_DEPTH_8_BIT)
-private val UNSPECIFIED_10_BIT = DynamicRange(FORMAT_UNSPECIFIED, BIT_DEPTH_10_BIT)
-private val HDR_UNSPECIFIED = DynamicRange(FORMAT_HDR_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
-private val DOLBY_VISION_UNSPECIFIED = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
+private val UNSPECIFIED_8_BIT = DynamicRange(ENCODING_UNSPECIFIED, BIT_DEPTH_8_BIT)
+private val UNSPECIFIED_10_BIT = DynamicRange(ENCODING_UNSPECIFIED, BIT_DEPTH_10_BIT)
+private val HDR_UNSPECIFIED = DynamicRange(ENCODING_HDR_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
+private val DOLBY_VISION_UNSPECIFIED = DynamicRange(ENCODING_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
 
 @RunWith(RobolectricTestRunner::class)
 @DoNotInstrument
@@ -72,7 +70,7 @@
         .add(CamcorderProfile.QUALITY_720P, PROFILES_720P) // HD (720p)
         .add(CamcorderProfile.QUALITY_LOW, PROFILES_720P) // HD (720p) per above definition
         .build()
-    private val defaultDynamicRanges = setOf(SDR, HLG10)
+    private val defaultDynamicRanges = setOf(SDR, HLG_10_BIT)
     private val cameraInfo = FakeCameraInfoInternal().apply {
         encoderProfilesProvider = defaultProfilesProvider
         supportedDynamicRanges = defaultDynamicRanges
@@ -88,7 +86,7 @@
 
     @Test
     fun canGetSupportedDynamicRanges() {
-        assertThat(videoCapabilities.supportedDynamicRanges).containsExactly(SDR, HLG10)
+        assertThat(videoCapabilities.supportedDynamicRanges).containsExactly(SDR, HLG_10_BIT)
     }
 
     @Test
@@ -98,12 +96,12 @@
 
     @Test
     fun hasSupportedQualities_hlg10() {
-        assertThat(videoCapabilities.getSupportedQualities(HLG10)).containsExactly(HD, UHD)
+        assertThat(videoCapabilities.getSupportedQualities(HLG_10_BIT)).containsExactly(HD, UHD)
     }
 
     @Test
     fun hasSupportedQualities_hdr10() {
-        assertThat(videoCapabilities.getSupportedQualities(HDR10)).isEmpty()
+        assertThat(videoCapabilities.getSupportedQualities(HDR10_10_BIT)).isEmpty()
     }
 
     @Test
@@ -162,12 +160,12 @@
 
     @Test
     fun isQualitySupported_hlg10WithBackupProfile() {
-        assertThat(videoCapabilities.isQualitySupported(HIGHEST, HLG10)).isTrue()
-        assertThat(videoCapabilities.isQualitySupported(LOWEST, HLG10)).isTrue()
-        assertThat(videoCapabilities.isQualitySupported(UHD, HLG10)).isTrue()
-        assertThat(videoCapabilities.isQualitySupported(FHD, HLG10)).isFalse()
-        assertThat(videoCapabilities.isQualitySupported(HD, HLG10)).isTrue()
-        assertThat(videoCapabilities.isQualitySupported(SD, HLG10)).isFalse()
+        assertThat(videoCapabilities.isQualitySupported(HIGHEST, HLG_10_BIT)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(LOWEST, HLG_10_BIT)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(UHD, HLG_10_BIT)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(FHD, HLG_10_BIT)).isFalse()
+        assertThat(videoCapabilities.isQualitySupported(HD, HLG_10_BIT)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(SD, HLG_10_BIT)).isFalse()
     }
 
     @Test
@@ -202,12 +200,12 @@
 
     @Test
     fun canGetNonNullHlg10BackupProfile_whenSdrProfileExisted() {
-        assertThat(videoCapabilities.getProfiles(HIGHEST, HLG10)).isNotNull()
-        assertThat(videoCapabilities.getProfiles(LOWEST, HLG10)).isNotNull()
-        assertThat(videoCapabilities.getProfiles(UHD, HLG10)).isNotNull()
-        assertThat(videoCapabilities.getProfiles(FHD, HLG10)).isNull()
-        assertThat(videoCapabilities.getProfiles(HD, HLG10)).isNotNull()
-        assertThat(videoCapabilities.getProfiles(SD, HLG10)).isNull()
+        assertThat(videoCapabilities.getProfiles(HIGHEST, HLG_10_BIT)).isNotNull()
+        assertThat(videoCapabilities.getProfiles(LOWEST, HLG_10_BIT)).isNotNull()
+        assertThat(videoCapabilities.getProfiles(UHD, HLG_10_BIT)).isNotNull()
+        assertThat(videoCapabilities.getProfiles(FHD, HLG_10_BIT)).isNull()
+        assertThat(videoCapabilities.getProfiles(HD, HLG_10_BIT)).isNotNull()
+        assertThat(videoCapabilities.getProfiles(SD, HLG_10_BIT)).isNull()
     }
 
     @Test
diff --git a/camera/camera-video/src/test/java/androidx/camera/video/VideoCaptureTest.kt b/camera/camera-video/src/test/java/androidx/camera/video/VideoCaptureTest.kt
index ccc85b0..b3c282b 100644
--- a/camera/camera-video/src/test/java/androidx/camera/video/VideoCaptureTest.kt
+++ b/camera/camera-video/src/test/java/androidx/camera/video/VideoCaptureTest.kt
@@ -45,8 +45,6 @@
 import androidx.camera.core.CameraSelector.LENS_FACING_FRONT
 import androidx.camera.core.CameraXConfig
 import androidx.camera.core.DynamicRange
-import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
-import androidx.camera.core.DynamicRange.FORMAT_HLG
 import androidx.camera.core.MirrorMode.MIRROR_MODE_OFF
 import androidx.camera.core.MirrorMode.MIRROR_MODE_ON
 import androidx.camera.core.MirrorMode.MIRROR_MODE_ON_FRONT_ONLY
@@ -1046,7 +1044,7 @@
         // propagated to the SurfaceRequest. It should come from the StreamSpec.
         testSurfaceRequestContainsExpected(
             requestedDynamicRange = DynamicRange.HDR_UNSPECIFIED_10_BIT,
-            expectedDynamicRange = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+            expectedDynamicRange = DynamicRange.HLG_10_BIT
         )
     }
 
diff --git a/camera/camera-video/src/test/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProviderTest.kt b/camera/camera-video/src/test/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProviderTest.kt
index 7c9a766..d9f0af8 100644
--- a/camera/camera-video/src/test/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProviderTest.kt
+++ b/camera/camera-video/src/test/java/androidx/camera/video/internal/DynamicRangeMatchedEncoderProfilesProviderTest.kt
@@ -23,13 +23,11 @@
 import android.media.EncoderProfiles.VideoProfile.HDR_HLG
 import android.media.EncoderProfiles.VideoProfile.HDR_NONE
 import android.os.Build
-import androidx.camera.core.DynamicRange
-import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
-import androidx.camera.core.DynamicRange.FORMAT_DOLBY_VISION
-import androidx.camera.core.DynamicRange.FORMAT_HDR10
-import androidx.camera.core.DynamicRange.FORMAT_HDR10_PLUS
-import androidx.camera.core.DynamicRange.FORMAT_HLG
+import androidx.camera.core.DynamicRange.DOLBY_VISION_10_BIT
+import androidx.camera.core.DynamicRange.HDR10_10_BIT
+import androidx.camera.core.DynamicRange.HDR10_PLUS_10_BIT
 import androidx.camera.core.DynamicRange.HDR_UNSPECIFIED_10_BIT
+import androidx.camera.core.DynamicRange.HLG_10_BIT
 import androidx.camera.core.DynamicRange.SDR
 import androidx.camera.core.impl.EncoderProfilesProvider
 import androidx.camera.core.impl.EncoderProfilesProxy
@@ -62,11 +60,12 @@
     fun hasNoProfile_canNotGetProfiles() {
         val emptyProvider = createFakeEncoderProfilesProvider()
         val sdrProvider = DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, SDR)
-        val hlgProvider = DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, HLG)
-        val hdr10Provider = DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, HDR10)
+        val hlgProvider = DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, HLG_10_BIT)
+        val hdr10Provider = DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, HDR10_10_BIT)
         val hdr10PlusProvider =
-            DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, HDR10_PLUS)
-        val dolbyProvider = DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, DOLBY_VISION)
+            DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, HDR10_PLUS_10_BIT)
+        val dolbyProvider =
+            DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, DOLBY_VISION_10_BIT)
         val hdrUnspecifiedProvider =
             DynamicRangeMatchedEncoderProfilesProvider(emptyProvider, HDR_UNSPECIFIED_10_BIT)
 
@@ -97,7 +96,7 @@
 
     @Test
     fun hlg_onlyContainsHlgProfile() {
-        val provider = DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, HLG)
+        val provider = DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, HLG_10_BIT)
 
         assertThat(provider.hasProfile(QUALITY_1080P)).isTrue()
         val videoProfiles = provider.getAll(QUALITY_1080P)!!.videoProfiles
@@ -108,7 +107,7 @@
 
     @Test
     fun hdr10_onlyContainsHdr10Profile() {
-        val provider = DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, HDR10)
+        val provider = DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, HDR10_10_BIT)
 
         assertThat(provider.hasProfile(QUALITY_1080P)).isTrue()
         val videoProfiles = provider.getAll(QUALITY_1080P)!!.videoProfiles
@@ -119,7 +118,8 @@
 
     @Test
     fun hdr10Plus_onlyContainsHdr10PlusProfile() {
-        val provider = DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, HDR10_PLUS)
+        val provider =
+            DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, HDR10_PLUS_10_BIT)
 
         assertThat(provider.hasProfile(QUALITY_1080P)).isTrue()
         val videoProfiles = provider.getAll(QUALITY_1080P)!!.videoProfiles
@@ -130,7 +130,8 @@
 
     @Test
     fun dolbyVision_onlyContainsDolbyVisionProfile() {
-        val provider = DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, DOLBY_VISION)
+        val provider =
+            DynamicRangeMatchedEncoderProfilesProvider(defaultProvider, DOLBY_VISION_10_BIT)
 
         assertThat(provider.hasProfile(QUALITY_1080P)).isTrue()
         val videoProfiles = provider.getAll(QUALITY_1080P)!!.videoProfiles
@@ -168,10 +169,6 @@
     }
 
     companion object {
-        private val HLG = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
-        private val HDR10 = DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT)
-        private val HDR10_PLUS = DynamicRange(FORMAT_HDR10_PLUS, BIT_DEPTH_10_BIT)
-        private val DOLBY_VISION = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_10_BIT)
         private val VIDEO_PROFILES_1080P_SDR =
             createFakeVideoProfileProxy(RESOLUTION_1080P.width, RESOLUTION_1080P.height)
         private val VIDEO_PROFILES_1080P_HLG =
diff --git a/camera/camera-view/build.gradle b/camera/camera-view/build.gradle
index fe34a08..2476a37 100644
--- a/camera/camera-view/build.gradle
+++ b/camera/camera-view/build.gradle
@@ -80,7 +80,7 @@
     namespace "androidx.camera.view"
 }
 androidx {
-    name = "Jetpack Camera View Library"
+    name = "Camera View"
     publish = Publish.SNAPSHOT_AND_RELEASE
 
     inceptionYear = "2019"
diff --git a/camera/camera-view/src/androidTest/java/androidx/camera/view/SurfaceViewImplementationTest.kt b/camera/camera-view/src/androidTest/java/androidx/camera/view/SurfaceViewImplementationTest.kt
index a3f1971..f5fdfb6 100644
--- a/camera/camera-view/src/androidTest/java/androidx/camera/view/SurfaceViewImplementationTest.kt
+++ b/camera/camera-view/src/androidTest/java/androidx/camera/view/SurfaceViewImplementationTest.kt
@@ -32,12 +32,12 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewImplementationTest.kt b/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewImplementationTest.kt
index 20d9291..25e1814 100644
--- a/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewImplementationTest.kt
+++ b/camera/camera-view/src/androidTest/java/androidx/camera/view/TextureViewImplementationTest.kt
@@ -15,14 +15,14 @@
  */
 package androidx.camera.view
 
-import android.widget.FrameLayout
 import android.graphics.SurfaceTexture
 import android.os.Build
 import android.util.Size
-import androidx.camera.view.PreviewViewImplementation.OnSurfaceNotInUseListener
 import android.view.TextureView
+import android.widget.FrameLayout
 import androidx.camera.core.SurfaceRequest
 import androidx.camera.testing.fakes.FakeCamera
+import androidx.camera.view.PreviewViewImplementation.OnSurfaceNotInUseListener
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.MediumTest
@@ -30,14 +30,14 @@
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth
-import org.junit.After
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.lang.Exception
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.TimeoutException
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/camera/camera-viewfinder-core/build.gradle b/camera/camera-viewfinder-core/build.gradle
index f2a2a9e..840c124 100644
--- a/camera/camera-viewfinder-core/build.gradle
+++ b/camera/camera-viewfinder-core/build.gradle
@@ -33,9 +33,9 @@
 }
 
 androidx {
-    name = "androidx.camera:camera-viewfinder-core"
+    name = "Camera ViewFinder Core"
     type = LibraryType.PUBLISHED_LIBRARY
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2023"
-    description = "core dependencies for viewfinder"
+    description = "Core dependencies for ViewFinder"
 }
diff --git a/camera/camera-viewfinder/build.gradle b/camera/camera-viewfinder/build.gradle
index 39c752c..e77d559 100644
--- a/camera/camera-viewfinder/build.gradle
+++ b/camera/camera-viewfinder/build.gradle
@@ -80,7 +80,7 @@
 }
 
 androidx {
-    name = "androidx.camera:camera-viewfinder"
+    name = "Camera ViewFinder"
     publish = Publish.SNAPSHOT_AND_RELEASE
     runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
     inceptionYear = "2022"
diff --git a/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/ViewfinderTransformationTest.kt b/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/ViewfinderTransformationTest.kt
index c8e7ac1..f24e5cd 100644
--- a/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/ViewfinderTransformationTest.kt
+++ b/camera/camera-viewfinder/src/test/java/androidx/camera/viewfinder/ViewfinderTransformationTest.kt
@@ -23,9 +23,9 @@
 import android.view.Surface
 import android.view.View
 import androidx.camera.viewfinder.CameraViewfinder.ScaleType
-import androidx.camera.viewfinder.internal.utils.TransformUtils.sizeToVertices
 import androidx.camera.viewfinder.internal.transform.Rotation.RotationValue
 import androidx.camera.viewfinder.internal.transform.TransformationInfo
+import androidx.camera.viewfinder.internal.utils.TransformUtils.sizeToVertices
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
 import kotlin.math.roundToInt
diff --git a/camera/integration-tests/avsynctestapp/src/androidTest/java/androidx/camera/integration/avsync/model/AudioGeneratorDeviceTest.kt b/camera/integration-tests/avsynctestapp/src/androidTest/java/androidx/camera/integration/avsync/model/AudioGeneratorDeviceTest.kt
index e42853e..75e45364 100644
--- a/camera/integration-tests/avsynctestapp/src/androidTest/java/androidx/camera/integration/avsync/model/AudioGeneratorDeviceTest.kt
+++ b/camera/integration-tests/avsynctestapp/src/androidTest/java/androidx/camera/integration/avsync/model/AudioGeneratorDeviceTest.kt
@@ -19,8 +19,8 @@
 import android.content.Context
 import android.media.AudioTrack
 import androidx.test.core.app.ApplicationProvider
-import androidx.test.filters.LargeTest
 import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.runBlocking
diff --git a/camera/integration-tests/avsynctestapp/src/main/java/androidx/camera/integration/avsync/model/AudioGenerator.kt b/camera/integration-tests/avsynctestapp/src/main/java/androidx/camera/integration/avsync/model/AudioGenerator.kt
index ab9edeb..76a8be0 100644
--- a/camera/integration-tests/avsynctestapp/src/main/java/androidx/camera/integration/avsync/model/AudioGenerator.kt
+++ b/camera/integration-tests/avsynctestapp/src/main/java/androidx/camera/integration/avsync/model/AudioGenerator.kt
@@ -25,10 +25,10 @@
 import androidx.camera.core.Logger
 import androidx.core.util.Preconditions.checkArgument
 import androidx.core.util.Preconditions.checkArgumentNonnegative
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
 import kotlin.math.pow
 import kotlin.math.sin
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
 
 private const val TAG = "AudioGenerator"
 private const val DEFAULT_SAMPLE_RATE: Int = 44100
diff --git a/camera/integration-tests/camerapipetestapp/src/test/java/androidx/camera/integration/camera2/pipe/GraphDataHolderValueImplTest.kt b/camera/integration-tests/camerapipetestapp/src/test/java/androidx/camera/integration/camera2/pipe/GraphDataHolderValueImplTest.kt
index 91278a7..9b2b13e 100644
--- a/camera/integration-tests/camerapipetestapp/src/test/java/androidx/camera/integration/camera2/pipe/GraphDataHolderValueImplTest.kt
+++ b/camera/integration-tests/camerapipetestapp/src/test/java/androidx/camera/integration/camera2/pipe/GraphDataHolderValueImplTest.kt
@@ -18,8 +18,8 @@
 
 import androidx.camera.integration.camera2.pipe.dataholders.GraphDataHolderValueImpl
 import androidx.camera.integration.camera2.pipe.dataholders.GraphDataSortedRingBuffer
-import org.junit.Test
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
 
 class GraphDataHolderValueImplTest {
     @Test(expected = IllegalArgumentException::class)
diff --git a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/CameraXInitTest.kt b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/CameraXInitTest.kt
index d8b0f40..082a3dd 100644
--- a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/CameraXInitTest.kt
+++ b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/CameraXInitTest.kt
@@ -29,6 +29,7 @@
 import androidx.test.filters.LargeTest
 import androidx.test.rule.GrantPermissionRule
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withTimeout
 import org.junit.After
@@ -38,7 +39,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit
 
 @LargeTest
 @RunWith(Parameterized::class)
diff --git a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt
index 1208c6a..e65b41d 100644
--- a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt
+++ b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt
@@ -1579,7 +1579,6 @@
 
     @Test
     fun unbindVideoCaptureWithoutStartingRecorder_imageCapturingShouldSuccess() = runBlocking {
-        assumeTrue("b/280379397", implName != Camera2Config::class.simpleName)
         assumeTrue(
             "b/280560222: takePicture request is discarded if UseCaseCamera is recreated",
             implName != CameraPipeConfig::class.simpleName
diff --git a/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/ImageCaptureTask.kt b/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/ImageCaptureTask.kt
index c7f3812..b032578 100644
--- a/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/ImageCaptureTask.kt
+++ b/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/ImageCaptureTask.kt
@@ -25,12 +25,12 @@
 import androidx.camera.view.CameraController.IMAGE_CAPTURE
 import androidx.camera.view.LifecycleCameraController
 import androidx.core.content.ContextCompat
-import kotlinx.coroutines.withContext
 import java.io.File
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.suspendCancellableCoroutine
+import kotlinx.coroutines.withContext
 
 /**
  * Diagnosis task that utilizes ImageCapture use case
diff --git a/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/MainActivity.kt b/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/MainActivity.kt
index 6eec96a..4327c6d 100644
--- a/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/MainActivity.kt
+++ b/camera/integration-tests/diagnosetestapp/src/main/java/androidx/camera/integration/diagnose/MainActivity.kt
@@ -32,10 +32,12 @@
 import androidx.appcompat.app.AppCompatActivity
 import androidx.camera.core.ImageCapture
 import androidx.camera.core.ImageCaptureException
+import androidx.camera.mlkit.vision.MlKitAnalyzer
 import androidx.camera.video.MediaStoreOutputOptions
 import androidx.camera.video.Recording
 import androidx.camera.video.VideoRecordEvent
 import androidx.camera.view.CameraController
+import androidx.camera.view.CameraController.IMAGE_ANALYSIS
 import androidx.camera.view.CameraController.IMAGE_CAPTURE
 import androidx.camera.view.CameraController.VIDEO_CAPTURE
 import androidx.camera.view.LifecycleCameraController
@@ -44,18 +46,16 @@
 import androidx.camera.view.video.ExperimentalVideo
 import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
-import java.text.SimpleDateFormat
-import java.util.Locale
-import java.util.concurrent.ExecutorService
-import androidx.camera.mlkit.vision.MlKitAnalyzer
-import androidx.camera.view.CameraController.IMAGE_ANALYSIS
 import androidx.core.util.Preconditions
 import androidx.lifecycle.lifecycleScope
 import com.google.android.material.tabs.TabLayout
 import com.google.mlkit.vision.barcode.BarcodeScanner
 import com.google.mlkit.vision.barcode.BarcodeScanning
 import java.io.IOException
+import java.text.SimpleDateFormat
+import java.util.Locale
 import java.util.concurrent.Executor
+import java.util.concurrent.ExecutorService
 import java.util.concurrent.Executors
 import kotlinx.coroutines.ExecutorCoroutineDispatcher
 import kotlinx.coroutines.asCoroutineDispatcher
diff --git a/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DataStoreTest.kt b/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DataStoreTest.kt
index 870902d..b2ca7af 100644
--- a/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DataStoreTest.kt
+++ b/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DataStoreTest.kt
@@ -22,6 +22,7 @@
 import android.graphics.Color
 import android.os.Build
 import androidx.test.core.app.ApplicationProvider
+import com.google.common.truth.Truth.assertThat
 import java.io.BufferedReader
 import java.io.File
 import java.io.InputStreamReader
@@ -30,7 +31,6 @@
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.annotation.Config
-import com.google.common.truth.Truth.assertThat
 
 @RunWith(RobolectricTestRunner::class)
 @Config(minSdk = Build.VERSION_CODES.M, maxSdk = 32)
diff --git a/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DiagnosisTest.kt b/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DiagnosisTest.kt
index 81d17de..e6af322 100644
--- a/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DiagnosisTest.kt
+++ b/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/DiagnosisTest.kt
@@ -23,6 +23,7 @@
 import androidx.camera.testing.fakes.FakeLifecycleOwner
 import androidx.camera.view.LifecycleCameraController
 import androidx.test.core.app.ApplicationProvider
+import com.google.common.truth.Truth.assertThat
 import java.io.BufferedReader
 import java.io.File
 import java.io.InputStreamReader
@@ -31,7 +32,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import com.google.common.truth.Truth.assertThat
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.annotation.Config
 
diff --git a/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/FakeTextAndImageSavingTask.kt b/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/FakeTextAndImageSavingTask.kt
index aec614a..f5837dc 100644
--- a/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/FakeTextAndImageSavingTask.kt
+++ b/camera/integration-tests/diagnosetestapp/src/test/java/androidx/camera/integration/diagnose/FakeTextAndImageSavingTask.kt
@@ -19,7 +19,6 @@
 import android.content.Context
 import android.graphics.Bitmap
 import android.graphics.Color.BLUE
-
 import androidx.camera.view.LifecycleCameraController
 
 class FakeTextAndImageSavingTask : DiagnosisTask("FakeTextAndImageSavingTask") {
diff --git a/camera/integration-tests/timingtestapp/src/androidTest/java/androidx/camera/integration/antelope/AntelopeInstrumentedTests.kt b/camera/integration-tests/timingtestapp/src/androidTest/java/androidx/camera/integration/antelope/AntelopeInstrumentedTests.kt
index 72e1b67..0b87c9a 100644
--- a/camera/integration-tests/timingtestapp/src/androidTest/java/androidx/camera/integration/antelope/AntelopeInstrumentedTests.kt
+++ b/camera/integration-tests/timingtestapp/src/androidTest/java/androidx/camera/integration/antelope/AntelopeInstrumentedTests.kt
@@ -23,35 +23,35 @@
 import android.hardware.camera2.CameraCharacteristics
 import android.hardware.camera2.CameraManager
 import android.hardware.camera2.CameraMetadata
-import android.preference.PreferenceManager
-import androidx.test.espresso.Espresso.onView
-import androidx.test.espresso.matcher.ViewMatchers.withId
-import androidx.test.espresso.IdlingRegistry
-import org.junit.Rule
-import androidx.test.rule.ActivityTestRule
-import androidx.test.rule.GrantPermissionRule
-import org.junit.Assert
-import org.junit.Test
-import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
-import org.junit.Before
 import android.os.Environment
+import android.preference.PreferenceManager
 import androidx.appcompat.app.AppCompatActivity
-import androidx.test.espresso.IdlingPolicies
-import androidx.test.espresso.assertion.ViewAssertions.matches
-import java.io.File
-import androidx.test.espresso.matcher.ViewMatchers.withSubstring
-import androidx.test.filters.MediumTest
-import androidx.test.filters.LargeTest
-import org.junit.Assume.assumeTrue
-import org.junit.FixMethodOrder
-import org.junit.runners.MethodSorters
-import java.util.concurrent.TimeUnit
 import androidx.camera.integration.antelope.MainActivity.Companion.antelopeIdlingResource
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.IdlingPolicies
+import androidx.test.espresso.IdlingRegistry
+import androidx.test.espresso.assertion.ViewAssertions.matches
+import androidx.test.espresso.matcher.ViewMatchers.withId
+import androidx.test.espresso.matcher.ViewMatchers.withSubstring
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.FlakyTest
-import org.junit.After
-import org.junit.runner.RunWith
+import androidx.test.filters.LargeTest
+import androidx.test.filters.MediumTest
+import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
+import androidx.test.rule.ActivityTestRule
+import androidx.test.rule.GrantPermissionRule
 import com.google.common.truth.Truth.assertThat
+import java.io.File
+import java.util.concurrent.TimeUnit
+import org.junit.After
+import org.junit.Assert
+import org.junit.Assume.assumeTrue
+import org.junit.Before
+import org.junit.FixMethodOrder
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.MethodSorters
 
 const val PREVIEW_BUFFER = "1500"
 
diff --git a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/CustomLifecycle.kt b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/CustomLifecycle.kt
index 10efb75..a68e4f2 100644
--- a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/CustomLifecycle.kt
+++ b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/CustomLifecycle.kt
@@ -18,10 +18,10 @@
 
 import android.os.Handler
 import android.os.Looper
+import androidx.camera.integration.antelope.MainActivity.Companion.logd
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.LifecycleRegistry
-import androidx.camera.integration.antelope.MainActivity.Companion.logd
 
 /**
  * Camera X normally handles lifecycle events itself. Optimizations in the API make it difficult
diff --git a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/TestUtils.kt b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/TestUtils.kt
index bc16441..e327e0e 100644
--- a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/TestUtils.kt
+++ b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/TestUtils.kt
@@ -17,11 +17,11 @@
 package androidx.camera.integration.antelope
 
 import androidx.camera.integration.antelope.MainActivity.Companion.antelopeIdlingResource
-import com.google.common.math.Stats
 import androidx.camera.integration.antelope.MainActivity.Companion.cameraParams
 import androidx.camera.integration.antelope.MainActivity.Companion.isSingleTestRunning
 import androidx.camera.integration.antelope.MainActivity.Companion.logd
 import androidx.camera.integration.antelope.MainActivity.Companion.testsRemaining
+import com.google.common.math.Stats
 import java.text.SimpleDateFormat
 import java.util.Calendar
 import kotlin.collections.ArrayList
diff --git a/car/app/app-automotive/build.gradle b/car/app/app-automotive/build.gradle
index a496e2d..7361f0e 100644
--- a/car/app/app-automotive/build.gradle
+++ b/car/app/app-automotive/build.gradle
@@ -72,7 +72,7 @@
 }
 
 androidx {
-    name = "Android for Cars App Library Automotive Extension"
+    name = "Android for Cars App Automotive Extension"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Automotive OS specific functionality to build navigation, parking, and charging apps for cars"
diff --git a/car/app/app-automotive/src/main/res/values-ky/strings.xml b/car/app/app-automotive/src/main/res/values-ky/strings.xml
index 90f8f6b2..db88152 100644
--- a/car/app/app-automotive/src/main/res/values-ky/strings.xml
+++ b/car/app/app-automotive/src/main/res/values-ky/strings.xml
@@ -21,8 +21,8 @@
     <string name="error_action_update_host" msgid="4802951804749609593">"Жаңыртууларды карап көрүү"</string>
     <string name="error_action_retry" msgid="985347670495166517">"Кайталоо"</string>
     <string name="error_message_client_side_error" msgid="3323186720368387787">"Колдонмодо ката кетти. Бул катаны колдонмонун иштеп чыгуучусуна кабарлаңыз"</string>
-    <string name="error_message_host_error" msgid="5484419926049675696">"Тутум катасы"</string>
-    <string name="error_message_host_connection_lost" msgid="5723205987837759151">"Тутум убактылуу жеткиликсиз"</string>
+    <string name="error_message_host_error" msgid="5484419926049675696">"Система катасы"</string>
+    <string name="error_message_host_connection_lost" msgid="5723205987837759151">"Система убактылуу жеткиликсиз"</string>
     <string name="error_message_host_not_found" msgid="3241065067065670113">"Системаны жаңыртуу керек"</string>
     <string name="error_message_host_incompatible" msgid="160406216155183851">"Системаны жаңыртуу керек"</string>
     <string name="error_message_multiple_hosts" msgid="2591031904206928207">"Шайкеш келбеген тутум"</string>
diff --git a/car/app/app-projected/build.gradle b/car/app/app-projected/build.gradle
index 5754a49..454cbec 100644
--- a/car/app/app-projected/build.gradle
+++ b/car/app/app-projected/build.gradle
@@ -60,7 +60,7 @@
 }
 
 androidx {
-    name = "Android for Cars App Library Projected Extension"
+    name = "Android for Cars App Projected Extension"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Android Auto Projected specific funationaltiy to build navigation, parking, and charging apps for cars"
diff --git a/car/app/app-samples/showcase/common/src/main/res/values-ky/strings.xml b/car/app/app-samples/showcase/common/src/main/res/values-ky/strings.xml
index 2452cc4..e753de6 100644
--- a/car/app/app-samples/showcase/common/src/main/res/values-ky/strings.xml
+++ b/car/app/app-samples/showcase/common/src/main/res/values-ky/strings.xml
@@ -123,7 +123,7 @@
     <string name="pop_to_prefix" msgid="4288884615669751608">"Кыска убакытка токтотуу"</string>
     <string name="pop_to_title" msgid="3924696281273379455">"Кыска убакытка токтотуу демосу"</string>
     <string name="package_not_found_error_msg" msgid="7525619456883627939">"Топтом табылган жок."</string>
-    <string name="permissions_granted_msg" msgid="2348556088141992714">"Бардык уруксаттар берилди. Уруксаттарга мүмкүнчүлүктү Жөндөөлөрдөн жабыңыз."</string>
+    <string name="permissions_granted_msg" msgid="2348556088141992714">"Бардык уруксаттар берилди. Уруксаттарга мүмкүнчүлүктү Параметрлерден жабыңыз."</string>
     <string name="needs_access_msg_prefix" msgid="2204136858798832382">"Колдонмого төмөнкү уруксаттар керек:\n"</string>
     <string name="phone_screen_permission_msg" msgid="3599815596923367256">"Телефондун экранындагы Уруксат берүү"</string>
     <string name="enable_location_permission_on_device_msg" msgid="472752487966156897">"Түзмөктө Жайгашкан жер уруксаттарын иштетүү"</string>
diff --git a/car/app/app/build.gradle b/car/app/app/build.gradle
index 43d2789..a2ac99a 100644
--- a/car/app/app/build.gradle
+++ b/car/app/app/build.gradle
@@ -100,7 +100,7 @@
 }
 
 androidx {
-    name = "Android for Cars App Library"
+    name = "Android for Cars App"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2020"
     description = "Build navigation, parking, and charging apps for Android Auto"
@@ -145,6 +145,7 @@
                 standardArgs,
                 false,
                 workerExecutor,
+                false,
         )
     }
 }
diff --git a/cardview/cardview/build.gradle b/cardview/cardview/build.gradle
index 239abf1..13cc235 100644
--- a/cardview/cardview/build.gradle
+++ b/cardview/cardview/build.gradle
@@ -11,7 +11,7 @@
 }
 
 androidx {
-    name = "Android Support CardView"
+    name = "CardView"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2011"
     description = "Android Support CardView"
diff --git a/collection/collection-benchmark/build.gradle b/collection/collection-benchmark/build.gradle
index dc0cf11..931098c 100644
--- a/collection/collection-benchmark/build.gradle
+++ b/collection/collection-benchmark/build.gradle
@@ -105,7 +105,7 @@
 }
 
 androidx {
-    name = "AndroidX Collections Benchmarks (Android / iOS)"
+    name = "Collections Benchmarks (Android / iOS)"
     inceptionYear = "2022"
     description = "AndroidX Collections Benchmarks (Android / iOS)"
 }
diff --git a/collection/collection/build.gradle b/collection/collection/build.gradle
index 0ac4f14..47b1d5e 100644
--- a/collection/collection/build.gradle
+++ b/collection/collection/build.gradle
@@ -136,7 +136,7 @@
 }
 
 androidx {
-    name = "Android Support Library collections"
+    name = "collections"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2018"
     description = "Standalone efficient collections."
diff --git a/collection/integration-tests/testapp/build.gradle b/collection/integration-tests/testapp/build.gradle
index a8d529f..67a0ce6 100644
--- a/collection/integration-tests/testapp/build.gradle
+++ b/collection/integration-tests/testapp/build.gradle
@@ -28,7 +28,7 @@
 }
 
 androidx {
-    name = "AndroidX Collection Integration Tests"
+    name = "Collection Integration Tests"
     publish = Publish.NONE
     inceptionYear = "2021"
     description = "AndroidX Collection Integration Tests"
diff --git a/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/TransitionDetector.kt b/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/TransitionDetector.kt
index d15d058..656461a 100644
--- a/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/TransitionDetector.kt
+++ b/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/TransitionDetector.kt
@@ -32,9 +32,9 @@
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiPrimitiveType
 import com.intellij.psi.impl.source.PsiClassReferenceType
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.ULambdaExpression
-import java.util.EnumSet
 
 /**
  * [Detector] that checks `Transition` usages for correctness.
diff --git a/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetector.kt b/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetector.kt
index adcf925..16dfcd4 100644
--- a/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetector.kt
+++ b/compose/animation/animation-core-lint/src/main/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetector.kt
@@ -32,9 +32,9 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.impl.source.PsiClassReferenceType
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.util.isConstructorCall
-import java.util.EnumSet
 
 /**
  * [Detector] that checks `Animatable` calls to make sure that if they are called inside a
diff --git a/compose/animation/animation-core/benchmark/src/androidTest/java/androidx/compose/animation/core/benchmark/SpringEstimationBenchmark.kt b/compose/animation/animation-core/benchmark/src/androidTest/java/androidx/compose/animation/core/benchmark/SpringEstimationBenchmark.kt
index 7c72011..0c15e61 100644
--- a/compose/animation/animation-core/benchmark/src/androidTest/java/androidx/compose/animation/core/benchmark/SpringEstimationBenchmark.kt
+++ b/compose/animation/animation-core/benchmark/src/androidTest/java/androidx/compose/animation/core/benchmark/SpringEstimationBenchmark.kt
@@ -21,10 +21,10 @@
 import androidx.compose.animation.core.estimateAnimationDurationMillis
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import kotlin.math.sqrt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.sqrt
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/animation/animation-core/samples/build.gradle b/compose/animation/animation-core/samples/build.gradle
index 160f365..735da8e 100644
--- a/compose/animation/animation-core/samples/build.gradle
+++ b/compose/animation/animation-core/samples/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Animation Library Core Classes Samples"
+    name = "Compose UI Animation Core Classes Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Animation Core Classes"
diff --git a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt
index 0ca9c61..160a753 100644
--- a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt
+++ b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatableSamples.kt
@@ -43,17 +43,17 @@
 import androidx.compose.ui.composed
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Size
-import androidx.compose.ui.input.pointer.util.VelocityTracker
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.input.pointer.positionChange
+import androidx.compose.ui.input.pointer.util.VelocityTracker
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.dp
+import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
-import kotlin.math.roundToInt
 
 @Sampled
 @Composable
diff --git a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatedValueSamples.kt b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatedValueSamples.kt
index 9a76f58..110f0c6 100644
--- a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatedValueSamples.kt
+++ b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimatedValueSamples.kt
@@ -19,11 +19,11 @@
 import androidx.annotation.Sampled
 import androidx.compose.animation.core.AnimationVector2D
 import androidx.compose.animation.core.TwoWayConverter
-import androidx.compose.animation.core.animateValueAsState
 import androidx.compose.animation.core.animateDpAsState
 import androidx.compose.animation.core.animateFloatAsState
 import androidx.compose.animation.core.animateIntOffsetAsState
 import androidx.compose.animation.core.animateOffsetAsState
+import androidx.compose.animation.core.animateValueAsState
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxWidth
diff --git a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimationSpecSamples.kt b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimationSpecSamples.kt
index 272a82d..96ce4ce 100644
--- a/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimationSpecSamples.kt
+++ b/compose/animation/animation-core/samples/src/main/java/androidx/compose/animation/core/samples/AnimationSpecSamples.kt
@@ -27,8 +27,8 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
diff --git a/compose/animation/animation-core/src/androidAndroidTest/kotlin/androidx/compose/animation/core/InfiniteTransitionTest.kt b/compose/animation/animation-core/src/androidAndroidTest/kotlin/androidx/compose/animation/core/InfiniteTransitionTest.kt
index 379163f..acc232c 100644
--- a/compose/animation/animation-core/src/androidAndroidTest/kotlin/androidx/compose/animation/core/InfiniteTransitionTest.kt
+++ b/compose/animation/animation-core/src/androidAndroidTest/kotlin/androidx/compose/animation/core/InfiniteTransitionTest.kt
@@ -19,8 +19,8 @@
 import androidx.compose.animation.VectorConverter
 import androidx.compose.animation.animateColor
 import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.withFrameNanos
 import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.withFrameNanos
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.test.ext.junit.runners.AndroidJUnit4
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/ComplexDouble.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/ComplexDouble.kt
index aeee770..1bc18567 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/ComplexDouble.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/ComplexDouble.kt
@@ -83,20 +83,20 @@
     b: Double,
     c: Double
 ): Pair<ComplexDouble, ComplexDouble> {
-    val firstRoot = (-b + complexSqrt(b * b - 4.0 * a * c)) / (2.0 * a)
-    val secondRoot = (-b - complexSqrt(b * b - 4.0 * a * c)) / (2.0 * a)
+    val partialRoot = b * b - 4.0 * a * c
+    val divisor = 1.0 / (2.0 * a)
+    val firstRoot = (-b + complexSqrt(partialRoot)) * divisor
+    val secondRoot = (-b - complexSqrt(partialRoot)) * divisor
     return firstRoot to secondRoot
 }
 
 /**
  * Returns the square root of [num] which may be imaginary.
  */
-internal fun complexSqrt(num: Double): ComplexDouble {
-    return if (num < 0.0) {
-        ComplexDouble(0.0, sqrt(abs(num)))
-    } else {
-        ComplexDouble(sqrt(num), 0.0)
-    }
+internal fun complexSqrt(num: Double): ComplexDouble = if (num < 0.0) {
+    ComplexDouble(0.0, sqrt(abs(num)))
+} else {
+    ComplexDouble(sqrt(num), 0.0)
 }
 
 internal inline operator fun Double.plus(other: ComplexDouble): ComplexDouble {
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/InternalMutatorMutex.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/InternalMutatorMutex.kt
index 0ba64b0..f0eff2f 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/InternalMutatorMutex.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/InternalMutatorMutex.kt
@@ -55,6 +55,19 @@
 }
 
 /**
+ * Used in place of the standard Job cancellation pathway to avoid reflective
+ * javaClass.simpleName lookups to build the exception message and stack trace collection.
+ * Remove if these are changed in kotlinx.coroutines.
+ */
+private class MutationInterruptedException : CancellationException("Mutation interrupted") {
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
+}
+
+/**
  * Mutual exclusion for UI state mutation over time.
  *
  * [mutate] permits interruptible state mutation over time using a standard [MutatePriority].
@@ -73,7 +86,7 @@
     private class Mutator(val priority: MutatePriority, val job: Job) {
         fun canInterrupt(other: Mutator) = priority >= other.priority
 
-        fun cancel() = job.cancel()
+        fun cancel() = job.cancel(MutationInterruptedException())
     }
 
     private val currentMutator = AtomicReference<Mutator?>(null)
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringEstimation.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringEstimation.kt
index e75fa39..45e2bf9 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringEstimation.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringEstimation.kt
@@ -52,10 +52,16 @@
     delta: Double
 ): Long {
     val dampingCoefficient = 2.0 * dampingRatio * sqrt(stiffness)
-    val roots = complexQuadraticFormula(1.0, dampingCoefficient, stiffness)
+
+    // Compute the roots of the polynomial [a]x^2+[b]x+[c]=0 which may be complex.
+    // Here a is set to the constant 1.0, and folded into the other computations
+    val partialRoot = dampingCoefficient * dampingCoefficient - 4.0 * stiffness
+    val firstRoot = (-dampingCoefficient + complexSqrt(partialRoot)) * 0.5
+    val secondRoot = (-dampingCoefficient - complexSqrt(partialRoot)) * 0.5
 
     return estimateDurationInternal(
-        roots,
+        firstRoot,
+        secondRoot,
         dampingRatio,
         initialVelocity,
         initialDisplacement,
@@ -77,14 +83,20 @@
 ): Long {
     val criticalDamping = 2.0 * sqrt(springConstant * mass)
     val dampingRatio = dampingCoefficient / criticalDamping
-    val roots = complexQuadraticFormula(mass, dampingCoefficient, springConstant)
+
+    // Compute the roots of the polynomial [a]x^2+[b]x+[c]=0 which may be complex.
+    val partialRoot = dampingCoefficient * dampingCoefficient - 4.0 * mass * springConstant
+    val divisor = 1.0 / (2.0 * mass)
+    val firstRoot = (-dampingCoefficient + complexSqrt(partialRoot)) * divisor
+    val secondRoot = (-dampingCoefficient - complexSqrt(partialRoot)) * divisor
 
     return estimateDurationInternal(
-        roots = roots,
-        dampingRatio = dampingRatio,
-        initialVelocity = initialVelocity,
-        initialPosition = initialDisplacement,
-        delta = delta
+        firstRoot,
+        secondRoot,
+        dampingRatio,
+        initialVelocity,
+        initialDisplacement,
+        delta
     )
 }
 
@@ -94,14 +106,14 @@
  * which simplifies to x(t) = c*e^(r*t)*cos(...) where c*e^(r*t) is the envelope of x(t)
  */
 private fun estimateUnderDamped(
-    roots: Pair<ComplexDouble, ComplexDouble>,
+    firstRoot: ComplexDouble,
     p0: Double,
     v0: Double,
     delta: Double
 ): Double {
-    val r = roots.first.real
+    val r = firstRoot.real
     val c1 = p0
-    val c2 = (v0 - r * c1) / roots.first.imaginary
+    val c2 = (v0 - r * c1) / firstRoot.imaginary
     val c = sqrt(c1 * c1 + c2 * c2)
 
     return ln(delta / c) / r
@@ -112,28 +124,27 @@
  * the equation x(t) = c_1*e^(r*t) + c_2*t*e^(r*t)
  */
 private fun estimateCriticallyDamped(
-    roots: Pair<ComplexDouble, ComplexDouble>,
+    firstRoot: ComplexDouble,
     p0: Double,
     v0: Double,
     delta: Double
 ): Double {
-    val r = roots.first.real
+    val r = firstRoot.real
     val c1 = p0
     val c2 = v0 - r * c1
 
-    // Application of Lambert's W function to solve te^t
-    fun t2Iterate(guess: Double, r: Double): Double {
-        var t = guess
-        for (i in 0..5) {
-            t = (guess - ln(abs(t / r)))
-        }
-        return t
-    }
-
     // For our initial guess, determine the max t of c_1*e^(r*t) = delta and
     // c_2*t*e^(r*t) = delta
     val t1 = ln(abs(delta / c1)) / r
-    val t2 = t2Iterate(ln(abs(delta / c2)), r) / r
+    val t2 = run {
+        // Application of Lambert's W function to solve te^t
+        val guess = ln(abs(delta / c2))
+        var t = guess
+        for (i in 0..5) {
+            t = (guess - ln(abs(t / r)))
+        }
+        t
+    } / r
     var tCurr = when {
         t1.isNotFinite() -> t2
         t2.isNotFinite() -> t1
@@ -142,13 +153,13 @@
 
     // Calculate the inflection time. This is important if the inflection is in t > 0
     val tInflection = -(r * c1 + c2) / (r * c2)
-    fun xInflection() = c1 * exp(r * tInflection) + c2 * tInflection * exp(r * tInflection)
+    val xInflection = c1 * exp(r * tInflection) + c2 * tInflection * exp(r * tInflection)
 
     // For inflection that does not exist in real time, we always solve for x(t)=delta. Note
     // the system is manipulated such that p0 is always positive.
     val signedDelta = if (tInflection.isNaN() || tInflection <= 0.0) {
         -delta
-    } else if (tInflection > 0.0 && -xInflection() < delta) {
+    } else if (tInflection > 0.0 && -xInflection < delta) {
         // In this scenario the first crossing with the threshold is to be found. Note that
         // the inflection does not exceed delta. As such, we search from the left.
         if (c2 < 0 && c1 > 0) {
@@ -169,15 +180,16 @@
         delta
     }
 
-    val fn: (Double) -> Double = { t -> (c1 + c2 * t) * exp(r * t) + signedDelta }
-    val fnPrime: (Double) -> Double = { t -> (c2 * (r * t + 1) + c1 * r) * exp(r * t) }
-
     var tDelta = Double.MAX_VALUE
     var iterations = 0
     while (tDelta > 0.001 && iterations < 100) {
         iterations++
         val tLast = tCurr
-        tCurr = iterateNewtonsMethod(tCurr, fn, fnPrime)
+        tCurr = iterateNewtonsMethod(
+            tCurr,
+            { t -> (c1 + c2 * t) * exp(r * t) + signedDelta },
+            { t -> (c2 * (r * t + 1) + c1 * r) * exp(r * t) }
+        )
         tDelta = abs(tLast - tCurr)
     }
 
@@ -189,13 +201,14 @@
  * the equation x(t) = c_1*e^(r_1*t) + c_2*e^(r_2*t)
  */
 private fun estimateOverDamped(
-    roots: Pair<ComplexDouble, ComplexDouble>,
+    firstRoot: ComplexDouble,
+    secondRoot: ComplexDouble,
     p0: Double,
     v0: Double,
     delta: Double
 ): Double {
-    val r1 = roots.first.real
-    val r2 = roots.second.real
+    val r1 = firstRoot.real
+    val r2 = secondRoot.real
     val c2 = (r1 * p0 - v0) / (r1 - r2)
     val c1 = p0 - c2
 
@@ -239,11 +252,8 @@
         delta
     }
 
-    val fn: (Double) -> Double = { t -> c1 * exp(r1 * t) + c2 * exp(r2 * t) + signedDelta }
-    val fnPrime: (Double) -> Double = { t -> c1 * r1 * exp(r1 * t) + c2 * r2 * exp(r2 * t) }
-
     // For a good initial guess, simply return
-    if (abs(fn(tCurr)) < 0.0001) {
+    if (abs(c1 * r1 * exp(r1 * tCurr) + c2 * r2 * exp(r2 * tCurr)) < 0.0001) {
         return tCurr
     }
     var tDelta = Double.MAX_VALUE
@@ -253,7 +263,11 @@
     while (tDelta > 0.001 && iterations < 100) {
         iterations++
         val tLast = tCurr
-        tCurr = iterateNewtonsMethod(tCurr, fn, fnPrime)
+        tCurr = iterateNewtonsMethod(
+            tCurr,
+            { t -> c1 * exp(r1 * t) + c2 * exp(r2 * t) + signedDelta },
+            { t -> c1 * r1 * exp(r1 * t) + c2 * r2 * exp(r2 * t) }
+        )
         tDelta = abs(tLast - tCurr)
     }
 
@@ -262,15 +276,14 @@
 
 // Applies Newton-Raphson's method to solve for the estimated time the spring mass system will
 // last be at [delta].
-@Suppress("UnnecessaryVariable")
 private fun estimateDurationInternal(
-    roots: Pair<ComplexDouble, ComplexDouble>,
+    firstRoot: ComplexDouble,
+    secondRoot: ComplexDouble,
     dampingRatio: Double,
     initialVelocity: Double,
     initialPosition: Double,
     delta: Double
 ): Long {
-
     if (initialPosition == 0.0 && initialVelocity == 0.0) {
         return 0L
     }
@@ -281,25 +294,26 @@
     return (
         when {
             dampingRatio > 1.0 -> estimateOverDamped(
-                roots = roots,
+                firstRoot = firstRoot,
+                secondRoot = secondRoot,
                 v0 = v0,
                 p0 = p0,
                 delta = delta
             )
             dampingRatio < 1.0 -> estimateUnderDamped(
-                roots = roots,
+                firstRoot = firstRoot,
                 v0 = v0,
                 p0 = p0,
                 delta = delta
             )
             else -> estimateCriticallyDamped(
-                roots = roots,
+                firstRoot = firstRoot,
                 v0 = v0,
                 p0 = p0,
                 delta = delta
             )
         } * 1000.0
-        ).toLong()
+    ).toLong()
 }
 
 private inline fun iterateNewtonsMethod(
@@ -311,4 +325,4 @@
 }
 
 @Suppress("NOTHING_TO_INLINE")
-private inline fun Double.isNotFinite() = !this.isFinite()
+private inline fun Double.isNotFinite() = !isFinite()
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringSimulation.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringSimulation.kt
index a2c7d99..23f1cce 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringSimulation.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/SpringSimulation.kt
@@ -19,7 +19,6 @@
 import androidx.compose.ui.util.packFloats
 import androidx.compose.ui.util.unpackFloat1
 import androidx.compose.ui.util.unpackFloat2
-
 import kotlin.math.cos
 import kotlin.math.exp
 import kotlin.math.sin
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt
index ccbfd2a..7ae4fe0 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt
@@ -18,6 +18,7 @@
 
 package androidx.compose.animation.core
 
+import androidx.compose.animation.core.internal.JvmDefaultWithCompatibility
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.LaunchedEffect
@@ -26,6 +27,7 @@
 import androidx.compose.runtime.State
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableLongStateOf
 import androidx.compose.runtime.mutableStateListOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
@@ -37,10 +39,8 @@
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
-import kotlin.math.max
-import androidx.compose.animation.core.internal.JvmDefaultWithCompatibility
-import androidx.compose.runtime.mutableLongStateOf
 import kotlin.jvm.JvmName
+import kotlin.math.max
 
 /**
  * This sets up a [Transition], and updates it with the target provided by [targetState]. When
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorConverters.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorConverters.kt
index 39415bc..e3354a9 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorConverters.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorConverters.kt
@@ -20,9 +20,9 @@
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.dp
 import kotlin.math.roundToInt
 
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorizedAnimationSpec.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorizedAnimationSpec.kt
index 83c39ce..bc21855 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorizedAnimationSpec.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VectorizedAnimationSpec.kt
@@ -17,8 +17,8 @@
 package androidx.compose.animation.core
 
 import androidx.compose.animation.core.AnimationConstants.DefaultDurationMillis
-import kotlin.math.min
 import androidx.compose.animation.core.internal.JvmDefaultWithCompatibility
+import kotlin.math.min
 
 /**
  * [VectorizedAnimationSpec]s are stateless vector based animation specifications. They do
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VisibilityThresholds.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VisibilityThresholds.kt
index 5b27b547..7293a1b 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VisibilityThresholds.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/VisibilityThresholds.kt
@@ -20,9 +20,9 @@
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.dp
 
 private const val DpVisibilityThreshold = 0.1f
diff --git a/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/AnimationTest.kt b/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/AnimationTest.kt
index c932fe1..a632f65 100644
--- a/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/AnimationTest.kt
+++ b/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/AnimationTest.kt
@@ -16,11 +16,11 @@
 
 package androidx.compose.animation.core
 
+import java.lang.Long.max
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.lang.Long.max
 
 @RunWith(JUnit4::class)
 class AnimationTest {
diff --git a/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/SpringEstimationTest.kt b/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/SpringEstimationTest.kt
index 7396ca5..9b0281d 100644
--- a/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/SpringEstimationTest.kt
+++ b/compose/animation/animation-core/src/test/java/androidx/compose/animation/core/SpringEstimationTest.kt
@@ -19,12 +19,12 @@
 import android.os.Build
 import androidx.test.filters.SdkSuppress
 import junit.framework.TestCase.assertTrue
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import kotlin.math.abs
 import kotlin.math.max
 import kotlin.math.sqrt
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @RunWith(Parameterized::class)
 class SpringEstimationTest(private val m: Double, private val k: Double) {
diff --git a/compose/animation/animation-graphics/samples/build.gradle b/compose/animation/animation-graphics/samples/build.gradle
index 2b0e793..c317288 100644
--- a/compose/animation/animation-graphics/samples/build.gradle
+++ b/compose/animation/animation-graphics/samples/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Animation Graphics Library Samples"
+    name = "Compose UI Animation Graphics Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains the sample code for the Androidx Compose UI Animation Graphics Library"
diff --git a/compose/animation/animation-graphics/src/androidAndroidTest/kotlin/androidx/compose/animation/graphics/vector/compat/XmlAnimatorParserTest.kt b/compose/animation/animation-graphics/src/androidAndroidTest/kotlin/androidx/compose/animation/graphics/vector/compat/XmlAnimatorParserTest.kt
index 6906bf6..e4cbe31 100644
--- a/compose/animation/animation-graphics/src/androidAndroidTest/kotlin/androidx/compose/animation/graphics/vector/compat/XmlAnimatorParserTest.kt
+++ b/compose/animation/animation-graphics/src/androidAndroidTest/kotlin/androidx/compose/animation/graphics/vector/compat/XmlAnimatorParserTest.kt
@@ -18,7 +18,10 @@
 
 import androidx.compose.animation.core.LinearEasing
 import androidx.compose.animation.core.RepeatMode
-import androidx.compose.ui.graphics.Color
+import androidx.compose.animation.graphics.res.AccelerateEasing
+import androidx.compose.animation.graphics.res.DecelerateEasing
+import androidx.compose.animation.graphics.res.loadAnimatorResource
+import androidx.compose.animation.graphics.test.R
 import androidx.compose.animation.graphics.vector.AnimatorSet
 import androidx.compose.animation.graphics.vector.ObjectAnimator
 import androidx.compose.animation.graphics.vector.Ordering
@@ -27,11 +30,8 @@
 import androidx.compose.animation.graphics.vector.PropertyValuesHolderFloat
 import androidx.compose.animation.graphics.vector.PropertyValuesHolderInt
 import androidx.compose.animation.graphics.vector.PropertyValuesHolderPath
-import androidx.compose.animation.graphics.res.AccelerateEasing
-import androidx.compose.animation.graphics.res.DecelerateEasing
-import androidx.compose.animation.graphics.res.loadAnimatorResource
-import androidx.compose.animation.graphics.test.R
 import androidx.compose.animation.graphics.vector.RepeatCountInfinite
+import androidx.compose.ui.graphics.Color
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
diff --git a/compose/animation/animation-graphics/src/androidMain/kotlin/androidx/compose/animation/graphics/res/AnimatorResources.android.kt b/compose/animation/animation-graphics/src/androidMain/kotlin/androidx/compose/animation/graphics/res/AnimatorResources.android.kt
index ed925eb..7c51152 100644
--- a/compose/animation/animation-graphics/src/androidMain/kotlin/androidx/compose/animation/graphics/res/AnimatorResources.android.kt
+++ b/compose/animation/animation-graphics/src/androidMain/kotlin/androidx/compose/animation/graphics/res/AnimatorResources.android.kt
@@ -26,19 +26,19 @@
 import androidx.compose.animation.core.FastOutSlowInEasing
 import androidx.compose.animation.core.LinearEasing
 import androidx.compose.animation.core.LinearOutSlowInEasing
-import androidx.compose.animation.graphics.vector.compat.AndroidVectorResources
 import androidx.compose.animation.graphics.vector.Animator
+import androidx.compose.animation.graphics.vector.compat.AndroidVectorResources
 import androidx.compose.animation.graphics.vector.compat.TagObjectAnimator
 import androidx.compose.animation.graphics.vector.compat.TagSet
-import androidx.compose.animation.graphics.vector.compat.seekToStartTag
 import androidx.compose.animation.graphics.vector.compat.parseAnimatorSet
 import androidx.compose.animation.graphics.vector.compat.parseInterpolator
 import androidx.compose.animation.graphics.vector.compat.parseObjectAnimator
-import org.xmlpull.v1.XmlPullParserException
+import androidx.compose.animation.graphics.vector.compat.seekToStartTag
 import kotlin.math.PI
 import kotlin.math.cos
 import kotlin.math.pow
 import kotlin.math.sin
+import org.xmlpull.v1.XmlPullParserException
 
 /**
  * Synchronously loads an [Animator] resource.
diff --git a/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/CrossfadeDetector.kt b/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/CrossfadeDetector.kt
index 9dcc564..fbef2b9 100644
--- a/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/CrossfadeDetector.kt
+++ b/compose/animation/animation-lint/src/main/java/androidx/compose/animation/lint/CrossfadeDetector.kt
@@ -31,9 +31,9 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.ULambdaExpression
-import java.util.EnumSet
 
 /**
  * [Detector] that checks `Crossfade` usages for correctness.
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/AnimatedClockDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/AnimatedClockDemo.kt
index e3a7df2..7bc053f 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/AnimatedClockDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/fancy/AnimatedClockDemo.kt
@@ -51,8 +51,8 @@
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
-import kotlinx.coroutines.isActive
 import java.util.Calendar
+import kotlinx.coroutines.isActive
 
 private class Time(hours: State<Int>, minutes: State<Int>, seconds: State<Int>) {
     val hours by hours
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/FancyScrollingDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/FancyScrollingDemo.kt
index dadf80c..86bc567 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/FancyScrollingDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/FancyScrollingDemo.kt
@@ -27,8 +27,8 @@
 import androidx.compose.foundation.gestures.rememberDraggableState
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableFloatStateOf
@@ -42,8 +42,8 @@
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
-import kotlinx.coroutines.launch
 import kotlin.math.roundToInt
+import kotlinx.coroutines.launch
 
 const val DEBUG = false
 
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt
index 71d4605..4f02955 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SpringBackScrollingDemo.kt
@@ -31,8 +31,8 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
@@ -51,9 +51,9 @@
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
+import kotlin.math.roundToInt
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
-import kotlin.math.roundToInt
 
 @Preview
 @Composable
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt
index faa1d47..2f0db13 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/gesture/SwipeToDismissDemo.kt
@@ -25,9 +25,9 @@
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.material.Button
 import androidx.compose.material.Text
@@ -49,9 +49,9 @@
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
+import kotlin.math.roundToInt
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
-import kotlin.math.roundToInt
 
 @Preview
 @Composable
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/layoutanimation/AnimateContentSizeDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/layoutanimation/AnimateContentSizeDemo.kt
index 7c036ad..15b8a2f 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/layoutanimation/AnimateContentSizeDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/layoutanimation/AnimateContentSizeDemo.kt
@@ -25,8 +25,8 @@
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.aspectRatio
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredSizeIn
 import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.layout.wrapContentSize
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/lookahead/LookaheadWithMovableContentDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/lookahead/LookaheadWithMovableContentDemo.kt
index 3100d36..f25cb8a 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/lookahead/LookaheadWithMovableContentDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/lookahead/LookaheadWithMovableContentDemo.kt
@@ -20,9 +20,9 @@
 
 import androidx.compose.animation.core.VectorConverter
 import androidx.compose.animation.core.spring
+import androidx.compose.animation.demos.fancy.AnimatedDotsDemo
 import androidx.compose.animation.demos.statetransition.InfiniteProgress
 import androidx.compose.animation.demos.statetransition.InfinitePulsingHeart
-import androidx.compose.animation.demos.fancy.AnimatedDotsDemo
 import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Box
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/MultiDimensionalAnimationDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/MultiDimensionalAnimationDemo.kt
index a32e677..01ca017 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/MultiDimensionalAnimationDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/MultiDimensionalAnimationDemo.kt
@@ -22,8 +22,8 @@
 import androidx.compose.animation.core.tween
 import androidx.compose.animation.core.updateTransition
 import androidx.compose.foundation.Canvas
-import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.clickable
+import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/RepeatedRotationDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/RepeatedRotationDemo.kt
index ade287e..5e89ee7 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/RepeatedRotationDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/statetransition/RepeatedRotationDemo.kt
@@ -20,8 +20,8 @@
 import androidx.compose.animation.core.animateFloat
 import androidx.compose.animation.core.keyframes
 import androidx.compose.animation.core.repeatable
-import androidx.compose.animation.core.updateTransition
 import androidx.compose.animation.core.tween
+import androidx.compose.animation.core.updateTransition
 import androidx.compose.foundation.Canvas
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Column
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/visualaid/ColumnConfigurationDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/visualaid/ColumnConfigurationDemo.kt
index 4b94c68..dfd5b8e 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/visualaid/ColumnConfigurationDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/visualaid/ColumnConfigurationDemo.kt
@@ -27,11 +27,11 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.ColumnScope
 import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.requiredHeight
-import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material.Text
diff --git a/compose/animation/animation/samples/build.gradle b/compose/animation/animation/samples/build.gradle
index d355cdf..9fd59da 100644
--- a/compose/animation/animation/samples/build.gradle
+++ b/compose/animation/animation/samples/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Animation Library Samples"
+    name = "Compose UI Animation Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Animation Library"
diff --git a/compose/animation/animation/src/androidAndroidTest/kotlin/androidx/compose/animation/AnimationModifierTest.kt b/compose/animation/animation/src/androidAndroidTest/kotlin/androidx/compose/animation/AnimationModifierTest.kt
index fb17dc0..ae167df 100644
--- a/compose/animation/animation/src/androidAndroidTest/kotlin/androidx/compose/animation/AnimationModifierTest.kt
+++ b/compose/animation/animation/src/androidAndroidTest/kotlin/androidx/compose/animation/AnimationModifierTest.kt
@@ -43,8 +43,8 @@
 import junit.framework.TestCase.assertNull
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.nullValue
-import org.junit.After
 import org.hamcrest.MatcherAssert.assertThat
+import org.junit.After
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
diff --git a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimatedVisibility.kt b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimatedVisibility.kt
index 408246d..2e6a3b2 100644
--- a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimatedVisibility.kt
+++ b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimatedVisibility.kt
@@ -25,6 +25,7 @@
 import androidx.compose.animation.core.Transition
 import androidx.compose.animation.core.createChildTransition
 import androidx.compose.animation.core.updateTransition
+import androidx.compose.animation.internal.JvmDefaultWithCompatibility
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.ColumnScope
 import androidx.compose.foundation.layout.Row
@@ -50,7 +51,6 @@
 import androidx.compose.ui.util.fastForEach
 import androidx.compose.ui.util.fastMaxBy
 import kotlinx.coroutines.flow.collect
-import androidx.compose.animation.internal.JvmDefaultWithCompatibility
 
 /**
  * [AnimatedVisibility] composable animates the appearance and disappearance of its content, as
diff --git a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimationModifier.kt b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimationModifier.kt
index 2763366..4d49ae5 100644
--- a/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimationModifier.kt
+++ b/compose/animation/animation/src/commonMain/kotlin/androidx/compose/animation/AnimationModifier.kt
@@ -23,10 +23,10 @@
 import androidx.compose.animation.core.FiniteAnimationSpec
 import androidx.compose.animation.core.VectorConverter
 import androidx.compose.animation.core.spring
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.getValue
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
diff --git a/compose/animation/animation/src/test/kotlin/androidx/compose/animation/ConverterTest.kt b/compose/animation/animation/src/test/kotlin/androidx/compose/animation/ConverterTest.kt
index 4a889dc..ea4d100 100644
--- a/compose/animation/animation/src/test/kotlin/androidx/compose/animation/ConverterTest.kt
+++ b/compose/animation/animation/src/test/kotlin/androidx/compose/animation/ConverterTest.kt
@@ -27,10 +27,10 @@
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import junit.framework.TestCase.assertEquals
+import kotlin.random.Random
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.random.Random
 
 @RunWith(JUnit4::class)
 class ConverterTest {
diff --git a/compose/benchmark-utils/src/main/java/androidx/compose/testutils/benchmark/BenchmarksExtensions.kt b/compose/benchmark-utils/src/main/java/androidx/compose/testutils/benchmark/BenchmarksExtensions.kt
index b0c29ab..b2247bd 100644
--- a/compose/benchmark-utils/src/main/java/androidx/compose/testutils/benchmark/BenchmarksExtensions.kt
+++ b/compose/benchmark-utils/src/main/java/androidx/compose/testutils/benchmark/BenchmarksExtensions.kt
@@ -20,12 +20,12 @@
 import androidx.benchmark.junit4.BenchmarkRule
 import androidx.benchmark.junit4.measureRepeated
 import androidx.compose.testutils.ComposeTestCase
-import androidx.compose.ui.graphics.Canvas
 import androidx.compose.testutils.ToggleableTestCase
 import androidx.compose.testutils.assertNoPendingChanges
 import androidx.compose.testutils.benchmark.android.AndroidTestCase
 import androidx.compose.testutils.doFramesUntilNoChangesPending
 import androidx.compose.testutils.recomposeAssertHadChanges
+import androidx.compose.ui.graphics.Canvas
 
 /**
  * Measures measure and layout performance of the given test case by toggling measure constraints.
diff --git a/compose/compiler/OWNERS b/compose/compiler/OWNERS
index e48b97d..51ec95d 100644
--- a/compose/compiler/OWNERS
+++ b/compose/compiler/OWNERS
@@ -3,4 +3,5 @@
 chuckj@google.com
 lelandr@google.com
 anbailey@google.com
+ashikov@google.com
 per-file settings.gradle = dustinlam@google.com, rahulrav@google.com
diff --git a/compose/compiler/compiler-daemon/integration-tests/build.gradle b/compose/compiler/compiler-daemon/integration-tests/build.gradle
index afda48a..5416516 100644
--- a/compose/compiler/compiler-daemon/integration-tests/build.gradle
+++ b/compose/compiler/compiler-daemon/integration-tests/build.gradle
@@ -30,7 +30,7 @@
 }
 
 androidx {
-    name = "AndroidX Compiler Daemon CLI Tests"
+    name = "Compiler Daemon CLI Tests"
     type = LibraryType.COMPILER_DAEMON_TEST
     inceptionYear = "2021"
     description = "Contains test for the compose compiler daemon"
diff --git a/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/CompilerTest.kt b/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/CompilerTest.kt
index 15fa946..8b284f3 100644
--- a/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/CompilerTest.kt
+++ b/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/CompilerTest.kt
@@ -16,14 +16,14 @@
 
 package androidx.compose.compiler.daemon
 
+import java.io.File
+import java.nio.file.Files
 import org.jetbrains.kotlin.cli.common.ExitCode
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.io.File
-import java.nio.file.Files
 
 @RunWith(Parameterized::class)
 class CompilerTest(
diff --git a/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/DaemonProtocolTest.kt b/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/DaemonProtocolTest.kt
index a97752d..d993c1e 100644
--- a/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/DaemonProtocolTest.kt
+++ b/compose/compiler/compiler-daemon/integration-tests/src/test/kotlin/androidx/compose/compiler/daemon/DaemonProtocolTest.kt
@@ -16,9 +16,6 @@
 
 package androidx.compose.compiler.daemon
 
-import org.jetbrains.kotlin.cli.common.ExitCode
-import org.junit.Assert.assertEquals
-import org.junit.Test
 import java.io.ByteArrayOutputStream
 import java.io.OutputStreamWriter
 import java.io.PipedReader
@@ -26,6 +23,9 @@
 import java.io.PrintWriter
 import java.util.concurrent.CountDownLatch
 import kotlin.concurrent.thread
+import org.jetbrains.kotlin.cli.common.ExitCode
+import org.junit.Assert.assertEquals
+import org.junit.Test
 
 class DaemonProtocolTest {
 
diff --git a/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/Compiler.kt b/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/Compiler.kt
index 976bfa8..65757e6 100644
--- a/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/Compiler.kt
+++ b/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/Compiler.kt
@@ -16,8 +16,11 @@
 
 package androidx.compose.compiler.daemon
 
+import java.io.File
+import java.nio.file.Files
 import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
 import org.jetbrains.kotlin.build.report.BuildReporter
+import org.jetbrains.kotlin.build.report.DoNothingICReporter
 import org.jetbrains.kotlin.build.report.metrics.DoNothingBuildMetricsReporter
 import org.jetbrains.kotlin.cli.common.ExitCode
 import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
@@ -26,13 +29,10 @@
 import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
 import org.jetbrains.kotlin.config.Services
 import org.jetbrains.kotlin.incremental.ClasspathChanges.ClasspathSnapshotEnabled
-import org.jetbrains.kotlin.build.report.DoNothingICReporter
+import org.jetbrains.kotlin.incremental.ClasspathSnapshotFiles
 import org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner
 import org.jetbrains.kotlin.incremental.multiproject.EmptyModulesApiHistory
 import org.jetbrains.kotlin.incremental.withIC
-import java.io.File
-import java.nio.file.Files
-import org.jetbrains.kotlin.incremental.ClasspathSnapshotFiles
 
 internal fun parseArgs(
     args: Array<String>,
diff --git a/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/main.kt b/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/main.kt
index 20445ef..8e8f201 100644
--- a/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/main.kt
+++ b/compose/compiler/compiler-daemon/src/main/kotlin/androidx/compose/compiler/daemon/main.kt
@@ -17,11 +17,11 @@
 package androidx.compose.compiler.daemon
 
 import java.io.File
-import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
 import java.io.PrintWriter
 import java.lang.IllegalArgumentException
 import java.net.URLDecoder
 import java.nio.charset.Charset
+import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
 
 private data class CliOptions(
     val disableEmbeddedPlugin: Boolean = false,
diff --git a/compose/compiler/compiler-hosted/build.gradle b/compose/compiler/compiler-hosted/build.gradle
index fb76744..e4ce28e 100644
--- a/compose/compiler/compiler-hosted/build.gradle
+++ b/compose/compiler/compiler-hosted/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Hosted Compiler Plugin"
+    name = "Compose Hosted Compiler Plugin"
     // This is only published because that is required when exporting it to g3.
     // Nobody should ever get this artifact from maven; just from studio or from source
     type = LibraryType.COMPILER_PLUGIN
diff --git a/compose/compiler/compiler-hosted/integration-tests/build.gradle b/compose/compiler/compiler-hosted/integration-tests/build.gradle
index b874154..00a111c 100644
--- a/compose/compiler/compiler-hosted/integration-tests/build.gradle
+++ b/compose/compiler/compiler-hosted/integration-tests/build.gradle
@@ -82,7 +82,7 @@
 }
 
 androidx {
-    name = "AndroidX Compiler CLI Tests"
+    name = "Compiler CLI Tests"
     publish = Publish.NONE
     inceptionYear = "2019"
     description = "Contains test for the compose compiler plugin"
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCodegenSignatureTest.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCodegenSignatureTest.kt
index f0a2827..668afad 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCodegenSignatureTest.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCodegenSignatureTest.kt
@@ -20,11 +20,11 @@
 import android.content.Context
 import android.os.Bundle
 import android.widget.LinearLayout
+import java.net.URLClassLoader
 import org.intellij.lang.annotations.Language
 import org.jetbrains.kotlin.backend.common.output.OutputFile
-import org.robolectric.Robolectric
-import java.net.URLClassLoader
 import org.junit.Assert.assertEquals
+import org.robolectric.Robolectric
 
 fun printPublicApi(classDump: String, name: String): String {
     return classDump
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractComposeDiagnosticsTest.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractComposeDiagnosticsTest.kt
index 2cf385c..9cc20bc 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractComposeDiagnosticsTest.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractComposeDiagnosticsTest.kt
@@ -16,103 +16,54 @@
 
 package androidx.compose.compiler.plugins.kotlin
 
-import androidx.compose.compiler.plugins.kotlin.facade.AnalysisResult
 import androidx.compose.compiler.plugins.kotlin.facade.SourceFile
 import org.jetbrains.kotlin.checkers.DiagnosedRange
 import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil
-import org.junit.Assert
+import org.jetbrains.kotlin.utils.addToStdlib.flatGroupBy
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertThrows
 
 abstract class AbstractComposeDiagnosticsTest : AbstractCompilerTest() {
-    private class DiagnosticTestException(message: String) : Exception(message)
-
     protected fun check(expectedText: String, ignoreParseErrors: Boolean = false) {
         val diagnosedRanges: MutableList<DiagnosedRange> = ArrayList()
         val clearText = CheckerTestUtil.parseDiagnosedRanges(expectedText, diagnosedRanges)
 
         val errors = analyze(
             listOf(SourceFile("test.kt", clearText, ignoreParseErrors))
-        ).diagnostics.toMutableList()
+        ).diagnostics
 
-        // Ensure all the expected messages are there
-        val message = StringBuilder()
-        val found = mutableSetOf<AnalysisResult.Diagnostic>()
-        for (range in diagnosedRanges) {
-            for (diagnostic in range.getDiagnostics()) {
-                val reportedDiagnostics = errors.filter { it.factoryName == diagnostic.name }
-                if (reportedDiagnostics.isNotEmpty()) {
-                    val reportedDiagnostic =
-                        reportedDiagnostics.find {
-                            it.textRanges.find {
-                                it.startOffset == range.start && it.endOffset == range.end
-                            } != null
-                        }
-                    if (reportedDiagnostic == null) {
-                        val firstRange = reportedDiagnostics.first().textRanges.first()
-                        message.append(
-                            "  Error ${diagnostic.name} reported at ${
-                                firstRange.startOffset
-                            }-${firstRange.endOffset} but expected at ${range.start}-${range.end}\n"
-                        )
-                        message.append(
-                            sourceInfo(clearText, firstRange.startOffset, firstRange.endOffset)
-                        )
-                    } else {
-                        errors.remove(reportedDiagnostic)
-                        found.add(reportedDiagnostic)
-                    }
-                } else {
-                    message.append(
-                        "  Diagnostic ${diagnostic.name} not reported, expected at ${
-                            range.start
-                        }\n"
-                    )
-                    message.append(
-                        sourceInfo(clearText, range.start, range.end)
-                    )
+        val rangeToDiagnostics = errors.flatGroupBy { it.textRanges }.mapValues { entry ->
+            entry.value.map { it.factoryName }.toSet()
+        }
+        val startOffsetToGroups = rangeToDiagnostics.entries.groupBy(
+            keySelector = { it.key.startOffset },
+            valueTransform = { it.value }
+        )
+        val endOffsetsToGroups = rangeToDiagnostics.entries.groupBy(
+            keySelector = { it.key.endOffset },
+            valueTransform = { it.value }
+        )
+
+        val annotatedText = buildString {
+            for ((i, c) in clearText.withIndex()) {
+                endOffsetsToGroups[i]?.let { groups ->
+                    repeat(groups.size) { append("<!>") }
                 }
+                startOffsetToGroups[i]?.let { groups ->
+                    for (diagnostics in groups) {
+                        append("<!${diagnostics.joinToString(",")}!>")
+                    }
+                }
+                append(c)
             }
         }
 
-        // Ensure only the expected errors are reported
-        for (diagnostic in errors) {
-            if (diagnostic !in found) {
-                val range = diagnostic.textRanges.first()
-                message.append(
-                    "  Unexpected diagnostic ${diagnostic.factoryName} reported at ${
-                        range.startOffset
-                    }\n"
-                )
-                message.append(
-                    sourceInfo(clearText, range.startOffset, range.endOffset)
-                )
-            }
-        }
-
-        // Throw an error if anything was found that was not expected
-        if (message.isNotEmpty()) throw DiagnosticTestException("Mismatched errors:\n$message")
+        assertEquals(expectedText, annotatedText)
     }
 
     protected fun checkFail(expectedText: String) {
-        Assert.assertThrows(DiagnosticTestException::class.java) {
+        assertThrows(AssertionError::class.java) {
             check(expectedText)
         }
     }
-
-    private fun String.lineStart(offset: Int): Int {
-        return this.lastIndexOf('\n', offset) + 1
-    }
-
-    private fun String.lineEnd(offset: Int): Int {
-        val result = this.indexOf('\n', offset)
-        return if (result < 0) this.length else result
-    }
-
-    // Return the source line that contains the given range with the range underlined with '~'s
-    private fun sourceInfo(clearText: String, start: Int, end: Int): String {
-        val lineStart = clearText.lineStart(start)
-        val lineEnd = clearText.lineEnd(start)
-        val displayEnd = if (end > lineEnd) lineEnd else end
-        return "  " + clearText.substring(lineStart, lineEnd) + "\n" +
-            " ".repeat(2 + start - lineStart) + "~".repeat(displayEnd - start) + "\n"
-    }
 }
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractLoweringTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractLoweringTests.kt
index 11a509a..7ce1dbf 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractLoweringTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractLoweringTests.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.runtime.Composer
 import androidx.compose.runtime.snapshots.Snapshot
+import java.net.URLClassLoader
 import org.intellij.lang.annotations.Language
 import org.robolectric.RuntimeEnvironment
-import java.net.URLClassLoader
 
 abstract class AbstractLoweringTests : AbstractCodegenTest() {
 
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt
index 6d470eb..e62740f 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt
@@ -17,6 +17,10 @@
 package androidx.compose.compiler.plugins.kotlin
 
 import com.intellij.openapi.util.io.FileUtil
+import java.io.ByteArrayOutputStream
+import java.io.File
+import java.io.PrintStream
+import java.io.PrintWriter
 import org.intellij.lang.annotations.Language
 import org.jetbrains.kotlin.cli.common.CLICompiler
 import org.jetbrains.kotlin.cli.common.CLITool
@@ -24,10 +28,6 @@
 import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
 import org.jetbrains.org.objectweb.asm.ClassReader
 import org.jetbrains.org.objectweb.asm.util.TraceClassVisitor
-import java.io.ByteArrayOutputStream
-import java.io.File
-import java.io.PrintStream
-import java.io.PrintWriter
 import org.junit.Assert.assertEquals
 import org.junit.Rule
 import org.junit.rules.TemporaryFolder
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposeCallResolverTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposeCallResolverTests.kt
index eee207e..f12fb25 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposeCallResolverTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ComposeCallResolverTests.kt
@@ -17,6 +17,7 @@
 package androidx.compose.compiler.plugins.kotlin
 
 import androidx.compose.compiler.plugins.kotlin.facade.SourceFile
+import androidx.compose.compiler.plugins.kotlin.k1.isComposableInvocation
 import com.intellij.psi.PsiElement
 import org.jetbrains.kotlin.psi.KtBlockExpression
 import org.jetbrains.kotlin.psi.KtDeclaration
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
index 48ceddc..096c0ac 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
@@ -455,7 +455,7 @@
                   A(%composer, 0)
                   if (condition) {
                     sourceInformationMarkerEnd(%composer)
-                    return
+                    return@M3
                   }
                   A(%composer, 0)
                   sourceInformationMarkerEnd(%composer)
@@ -504,7 +504,7 @@
                         if (isTraceInProgress()) {
                           traceEventEnd()
                         }
-                        return
+                        return@composableLambdaInstance
                       }
                       sourceInformationMarkerEnd(%composer)
                     }, %composer, 0)
@@ -575,7 +575,7 @@
                     sourceInformationMarkerStart(%composer, <>, "C:Test.kt")
                     if (condition) {
                       sourceInformationMarkerEnd(%composer)
-                      return
+                      return@M1
                     }
                     sourceInformationMarkerEnd(%composer)
                   }, %composer, 0)
@@ -636,7 +636,7 @@
                     sourceInformationMarkerStart(%composer, <>, "C:Test.kt")
                     if (condition) {
                       %composer.endToMarker(tmp0_marker)
-                      return
+                      return@M3
                     }
                     sourceInformationMarkerEnd(%composer)
                   }, %composer, 0)
@@ -773,7 +773,7 @@
                   A(%composer, 0)
                   if (condition) {
                     sourceInformationMarkerEnd(%composer)
-                    return
+                    return@M3
                   }
                   A(%composer, 0)
                   sourceInformationMarkerEnd(%composer)
@@ -783,7 +783,7 @@
                   A(%composer, 0)
                   if (condition) {
                     sourceInformationMarkerEnd(%composer)
-                    return
+                    return@M3
                   }
                   A(%composer, 0)
                   sourceInformationMarkerEnd(%composer)
@@ -908,7 +908,7 @@
                 sourceInformationMarkerStart(%composer, <>, "C<A()>:Test.kt")
                 if (condition) {
                   sourceInformationMarkerEnd(%composer)
-                  return
+                  return@FakeBox
                 }
                 A(%composer, 0)
                 sourceInformationMarkerEnd(%composer)
@@ -1081,7 +1081,7 @@
                   sourceInformationMarkerStart(%composer, <>, "C<A()>:Test.kt")
                   if (condition) {
                     sourceInformationMarkerEnd(%composer)
-                    return
+                    return@IW
                   }
                   A(%composer, 0)
                   sourceInformationMarkerEnd(%composer)
@@ -1242,7 +1242,7 @@
                   Identity {
                     if (condition) {
                       sourceInformationMarkerEnd(%composer)
-                      return
+                      return@M1
                     }
                   }
                   sourceInformationMarkerEnd(%composer)
@@ -6175,7 +6175,7 @@
                     sourceInformationMarkerStart(%composer, <>, "C:Test.kt")
                     if (true) {
                       %composer.endToMarker(tmp0_marker)
-                      return
+                      return@Inline1
                     }
                     sourceInformationMarkerEnd(%composer)
                   }, %composer, 0)
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FcsTypeResolutionTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FcsTypeResolutionTests.kt
index ad921b5..72f0c67 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FcsTypeResolutionTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/FcsTypeResolutionTests.kt
@@ -38,7 +38,7 @@
 
             @Composable
             fun Int.Foo(content: @Composable Int.(foo: String) -> Unit) {
-                content<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
+                content<!NO_VALUE_FOR_PARAMETER!>()<!>
             }
 
             @Composable
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RememberIntrinsicTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RememberIntrinsicTransformTests.kt
index 2cd3d0b..1ed753c 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RememberIntrinsicTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RememberIntrinsicTransformTests.kt
@@ -1167,10 +1167,10 @@
                 if (isTraceInProgress()) {
                   traceEventStart(<>, %dirty, -1, <>)
                 }
-                used(%composer.cache(%dirty and 0b1110 === 0b0100, {
+                used(%composer.cache(%dirty and 0b1110 === 0b0100) {
                   effect()
                 }
-                ))
+                )
                 if (isTraceInProgress()) {
                   traceEventEnd()
                 }
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RunComposableTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RunComposableTests.kt
index 4aad0a8..2fc2e49 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RunComposableTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/RunComposableTests.kt
@@ -21,6 +21,7 @@
 import androidx.compose.runtime.Composition
 import androidx.compose.runtime.MonotonicFrameClock
 import androidx.compose.runtime.Recomposer
+import java.net.URLClassLoader
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.Dispatchers
@@ -31,9 +32,8 @@
 import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
 import org.jetbrains.kotlin.cli.common.setupLanguageVersionSettings
 import org.jetbrains.kotlin.config.CompilerConfiguration
-import org.junit.Test
-import java.net.URLClassLoader
 import org.junit.Assert.assertEquals
+import org.junit.Test
 
 class RunComposableTests : AbstractCodegenTest() {
     override fun CompilerConfiguration.updateConfiguration() {
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ScopeComposabilityTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ScopeComposabilityTests.kt
index a21119e..bfaea3b1 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ScopeComposabilityTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ScopeComposabilityTests.kt
@@ -17,6 +17,7 @@
 package androidx.compose.compiler.plugins.kotlin
 
 import androidx.compose.compiler.plugins.kotlin.facade.SourceFile
+import androidx.compose.compiler.plugins.kotlin.k1.allowsComposableCalls
 import com.intellij.psi.PsiElement
 import org.jetbrains.kotlin.psi.KtElement
 import org.jetbrains.kotlin.psi.KtFunction
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposableDeclarationCheckerTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposableDeclarationCheckerTests.kt
index 07aa897..2c611cf 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposableDeclarationCheckerTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposableDeclarationCheckerTests.kt
@@ -128,7 +128,7 @@
                 acceptSuspend <!TYPE_MISMATCH!>@Composable {}<!>
                 acceptComposableSuspend @Composable {}
                 acceptComposableSuspend(composableLambda)
-                acceptSuspend(<!COMPOSABLE_SUSPEND_FUN, TYPE_MISMATCH!>@Composable suspend fun() { }<!>)
+                acceptSuspend(<!COMPOSABLE_SUSPEND_FUN,TYPE_MISMATCH!>@Composable suspend fun() { }<!>)
             }
         """
         )
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/debug/AbstractDebuggerTest.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/debug/AbstractDebuggerTest.kt
index 51ed468..ec3ef15 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/debug/AbstractDebuggerTest.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/debug/AbstractDebuggerTest.kt
@@ -39,13 +39,13 @@
 import com.sun.jdi.request.StepRequest
 import com.sun.tools.jdi.SocketAttachingConnector
 import java.io.File
+import java.net.URL
+import java.net.URLClassLoader
+import kotlin.properties.Delegates
 import org.intellij.lang.annotations.Language
 import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection
 import org.jetbrains.kotlin.cli.common.output.writeAllTo
 import org.jetbrains.kotlin.codegen.GeneratedClassLoader
-import java.net.URL
-import java.net.URLClassLoader
-import kotlin.properties.Delegates
 import org.junit.After
 import org.junit.AfterClass
 import org.junit.Before
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeFqNames.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeFqNames.kt
index 2158b63..27a64eb 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeFqNames.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeFqNames.kt
@@ -16,13 +16,6 @@
 
 package androidx.compose.compiler.plugins.kotlin
 
-import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.descriptors.SourceElement
-import org.jetbrains.kotlin.descriptors.annotations.Annotated
-import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
-import org.jetbrains.kotlin.descriptors.annotations.Annotations
-import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies
-import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
 import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer
 import org.jetbrains.kotlin.ir.types.IrType
 import org.jetbrains.kotlin.ir.util.hasAnnotation
@@ -30,12 +23,6 @@
 import org.jetbrains.kotlin.name.ClassId
 import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.resolve.constants.ConstantValue
-import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
-import org.jetbrains.kotlin.types.KotlinType
-import org.jetbrains.kotlin.types.TypeUtils.NO_EXPECTED_TYPE
-import org.jetbrains.kotlin.types.TypeUtils.UNIT_EXPECTED_TYPE
-import org.jetbrains.kotlin.types.typeUtil.replaceAnnotations
 
 private const val root = "androidx.compose.runtime"
 private const val internalRoot = "$root.internal"
@@ -126,94 +113,11 @@
     val Stable = fqNameFor("Stable")
     val Immutable = fqNameFor("Immutable")
     val Composer = ComposeClassIds.Composer.asSingleFqName()
-    val ComposeVersion = fqNameFor("ComposeVersion")
-    val Package = FqName(root)
     val StabilityInferred = ComposeClassIds.StabilityInferred.asSingleFqName()
-
-    fun makeComposableAnnotation(module: ModuleDescriptor): AnnotationDescriptor =
-        object : AnnotationDescriptor {
-            override val type: KotlinType
-                get() = module.findClassAcrossModuleDependencies(
-                    ClassId.topLevel(Composable)
-                )!!.defaultType
-            override val allValueArguments: Map<Name, ConstantValue<*>> get() = emptyMap()
-            override val source: SourceElement get() = SourceElement.NO_SOURCE
-            override fun toString() = "[@Composable]"
-        }
 }
 
-private fun makeComposableAnnotation(module: ModuleDescriptor): AnnotationDescriptor =
-    object : AnnotationDescriptor {
-        override val type: KotlinType
-            get() = module.findClassAcrossModuleDependencies(
-                ComposeClassIds.Composable
-            )!!.defaultType
-        override val allValueArguments: Map<Name, ConstantValue<*>> get() = emptyMap()
-        override val source: SourceElement get() = SourceElement.NO_SOURCE
-        override fun toString() = "[@Composable]"
-    }
-
-fun KotlinType.makeComposable(module: ModuleDescriptor): KotlinType {
-    if (hasComposableAnnotation()) return this
-    val annotation = makeComposableAnnotation(module)
-    return replaceAnnotations(Annotations.create(annotations + annotation))
-}
-
-fun AnonymousFunctionDescriptor.annotateAsComposable(module: ModuleDescriptor) =
-    AnonymousFunctionDescriptor(
-        containingDeclaration,
-        Annotations.create(annotations + makeComposableAnnotation(module)),
-        kind,
-        source,
-        isSuspend
-    )
-
 fun IrType.hasComposableAnnotation(): Boolean =
     hasAnnotation(ComposeFqNames.Composable)
 
 fun IrAnnotationContainer.hasComposableAnnotation(): Boolean =
     hasAnnotation(ComposeFqNames.Composable)
-
-fun KotlinType.hasComposableAnnotation(): Boolean =
-    !isSpecialType && annotations.findAnnotation(ComposeFqNames.Composable) != null
-fun Annotated.hasComposableAnnotation(): Boolean =
-    annotations.findAnnotation(ComposeFqNames.Composable) != null
-fun Annotated.hasNonRestartableComposableAnnotation(): Boolean =
-    annotations.findAnnotation(ComposeFqNames.NonRestartableComposable) != null
-fun Annotated.hasReadonlyComposableAnnotation(): Boolean =
-    annotations.findAnnotation(ComposeFqNames.ReadOnlyComposable) != null
-fun Annotated.hasExplicitGroupsAnnotation(): Boolean =
-    annotations.findAnnotation(ComposeFqNames.ExplicitGroupsComposable) != null
-fun Annotated.hasDisallowComposableCallsAnnotation(): Boolean =
-    annotations.findAnnotation(ComposeFqNames.DisallowComposableCalls) != null
-fun Annotated.compositionTarget(): String? =
-    annotations.map { it.compositionTarget() }.firstOrNull { it != null }
-
-fun Annotated.hasCompositionTargetMarker(): Boolean =
-    annotations.findAnnotation(
-        ComposeFqNames.ComposableTargetMarker
-    ) != null
-
-fun AnnotationDescriptor.compositionTarget(): String? =
-    if (fqName == ComposeFqNames.ComposableTarget)
-        allValueArguments[ComposeFqNames.ComposableTargetApplierArgument]?.value as? String
-    else if (annotationClass?.hasCompositionTargetMarker() == true) this.fqName.toString() else null
-
-fun Annotated.compositionScheme(): String? =
-    annotations.findAnnotation(
-        ComposeFqNames.ComposableInferredTarget
-    )?.allValueArguments?.let {
-        it[ComposeFqNames.ComposableInferredTargetSchemeArgument]?.value as? String
-    }
-
-fun Annotated.compositionOpenTarget(): Int? =
-    annotations.findAnnotation(
-        ComposeFqNames.ComposableOpenTarget
-    )?.allValueArguments?.let {
-        it[ComposeFqNames.ComposableOpenTargetIndexArgument]?.value as Int
-    }
-
-internal val KotlinType.isSpecialType: Boolean get() =
-    this === NO_EXPECTED_TYPE || this === UNIT_EXPECTED_TYPE
-
-val AnnotationDescriptor.isComposableAnnotation: Boolean get() = fqName == ComposeFqNames.Composable
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt
index 9aa4e7d..c337918 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt
@@ -16,6 +16,11 @@
 
 package androidx.compose.compiler.plugins.kotlin
 
+import androidx.compose.compiler.plugins.kotlin.k1.ComposableCallChecker
+import androidx.compose.compiler.plugins.kotlin.k1.ComposableDeclarationChecker
+import androidx.compose.compiler.plugins.kotlin.k1.ComposableTargetChecker
+import androidx.compose.compiler.plugins.kotlin.k1.ComposeDiagnosticSuppressor
+import androidx.compose.compiler.plugins.kotlin.k1.ComposeTypeResolutionInterceptorExtension
 import androidx.compose.compiler.plugins.kotlin.lower.ClassStabilityFieldSerializationPlugin
 import com.intellij.mock.MockProject
 import com.intellij.openapi.project.Project
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ValidatedAssignment.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ValidatedAssignment.kt
deleted file mode 100644
index 9646462..0000000
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ValidatedAssignment.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.compose.compiler.plugins.kotlin
-
-import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
-import org.jetbrains.kotlin.descriptors.FunctionDescriptor
-import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
-import org.jetbrains.kotlin.types.KotlinType
-
-class ValidatedAssignment(
-    val validationType: ValidationType,
-    val validationCall: ResolvedCall<*>?,
-    val uncheckedValidationCall: ResolvedCall<*>?,
-    val assignment: ResolvedCall<*>?,
-    val assignmentLambda: FunctionDescriptor?, // needed?
-    val type: KotlinType,
-    val name: String,
-    val descriptor: DeclarationDescriptor
-)
-
-enum class ValidationType {
-    CHANGED,
-    SET,
-    UPDATE
-}
\ No newline at end of file
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeWritableSlices.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeWritableSlices.kt
index 9261e3e..e2b36a9 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeWritableSlices.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeWritableSlices.kt
@@ -1,24 +1,15 @@
 package androidx.compose.compiler.plugins.kotlin.analysis
 
-import androidx.compose.compiler.plugins.kotlin.lower.KeyInfo
 import androidx.compose.compiler.plugins.kotlin.FunctionMetrics
-import androidx.compose.compiler.plugins.kotlin.inference.LazyScheme
-import org.jetbrains.kotlin.descriptors.FunctionDescriptor
+import androidx.compose.compiler.plugins.kotlin.lower.KeyInfo
 import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer
 import org.jetbrains.kotlin.ir.expressions.IrExpression
 import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
-import org.jetbrains.kotlin.psi.KtLambdaExpression
 import org.jetbrains.kotlin.util.slicedMap.BasicWritableSlice
 import org.jetbrains.kotlin.util.slicedMap.RewritePolicy
 import org.jetbrains.kotlin.util.slicedMap.WritableSlice
 
 object ComposeWritableSlices {
-    val INFERRED_COMPOSABLE_DESCRIPTOR: WritableSlice<FunctionDescriptor, Boolean> =
-        BasicWritableSlice(RewritePolicy.DO_NOTHING)
-    val LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE: WritableSlice<FunctionDescriptor, Boolean> =
-        BasicWritableSlice(RewritePolicy.DO_NOTHING)
-    val INFERRED_COMPOSABLE_LITERAL: WritableSlice<KtLambdaExpression, Boolean> =
-        BasicWritableSlice(RewritePolicy.DO_NOTHING)
     val IS_SYNTHETIC_COMPOSABLE_CALL: WritableSlice<IrFunctionAccessExpression, Boolean> =
         BasicWritableSlice(RewritePolicy.DO_NOTHING)
     val IS_STATIC_FUNCTION_EXPRESSION: WritableSlice<IrExpression, Boolean> =
@@ -35,8 +26,6 @@
         BasicWritableSlice(RewritePolicy.DO_NOTHING)
     val IS_TRANSFORMED_LAMBDA: WritableSlice<IrAttributeContainer, Boolean> =
         BasicWritableSlice(RewritePolicy.DO_NOTHING)
-    val COMPOSE_LAZY_SCHEME: WritableSlice<Any, LazyScheme> =
-        BasicWritableSlice(RewritePolicy.DO_NOTHING)
     val FUNCTION_METRICS: WritableSlice<IrAttributeContainer, FunctionMetrics> =
         BasicWritableSlice(RewritePolicy.DO_NOTHING)
 }
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/inference/Scheme.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/inference/Scheme.kt
index b1a6a30..5c4bf94 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/inference/Scheme.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/inference/Scheme.kt
@@ -416,4 +416,25 @@
             schemeParseError()
         }
     }
-}
\ No newline at end of file
+}
+
+internal fun Scheme.mergeWith(schemes: List<Scheme>): Scheme {
+    if (schemes.isEmpty()) return this
+
+    val lazyScheme = LazyScheme(this)
+    val bindings = lazyScheme.bindings
+
+    fun unifySchemes(a: LazyScheme, b: LazyScheme) {
+        bindings.unify(a.target, b.target)
+        for ((ap, bp) in a.parameters.zip(b.parameters)) {
+            unifySchemes(ap, bp)
+        }
+    }
+
+    schemes.forEach {
+        val overrideScheme = LazyScheme(it, bindings = lazyScheme.bindings)
+        unifySchemes(lazyScheme, overrideScheme)
+    }
+
+    return lazyScheme.toScheme()
+}
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/AnnotationUtils.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/AnnotationUtils.kt
new file mode 100644
index 0000000..3f01555
--- /dev/null
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/AnnotationUtils.kt
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.compiler.plugins.kotlin.k1
+
+import androidx.compose.compiler.plugins.kotlin.ComposeClassIds
+import androidx.compose.compiler.plugins.kotlin.ComposeFqNames
+import org.jetbrains.kotlin.descriptors.ModuleDescriptor
+import org.jetbrains.kotlin.descriptors.SourceElement
+import org.jetbrains.kotlin.descriptors.annotations.Annotated
+import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
+import org.jetbrains.kotlin.descriptors.annotations.Annotations
+import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies
+import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
+import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.resolve.constants.ConstantValue
+import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
+import org.jetbrains.kotlin.types.KotlinType
+import org.jetbrains.kotlin.types.TypeUtils
+import org.jetbrains.kotlin.types.typeUtil.replaceAnnotations
+
+private fun makeComposableAnnotation(module: ModuleDescriptor): AnnotationDescriptor =
+    object : AnnotationDescriptor {
+        override val type: KotlinType
+            get() = module.findClassAcrossModuleDependencies(
+                ComposeClassIds.Composable
+            )!!.defaultType
+        override val allValueArguments: Map<Name, ConstantValue<*>> get() = emptyMap()
+        override val source: SourceElement get() = SourceElement.NO_SOURCE
+        override fun toString() = "[@Composable]"
+    }
+
+fun KotlinType.makeComposable(module: ModuleDescriptor): KotlinType {
+    if (hasComposableAnnotation()) return this
+    val annotation = makeComposableAnnotation(module)
+    return replaceAnnotations(Annotations.create(annotations + annotation))
+}
+
+fun AnonymousFunctionDescriptor.annotateAsComposable(module: ModuleDescriptor) =
+    AnonymousFunctionDescriptor(
+        containingDeclaration,
+        Annotations.create(annotations + makeComposableAnnotation(module)),
+        kind,
+        source,
+        isSuspend
+    )
+
+fun KotlinType.hasComposableAnnotation(): Boolean =
+    !isSpecialType && annotations.findAnnotation(ComposeFqNames.Composable) != null
+fun Annotated.hasComposableAnnotation(): Boolean =
+    annotations.findAnnotation(ComposeFqNames.Composable) != null
+fun Annotated.hasReadonlyComposableAnnotation(): Boolean =
+    annotations.findAnnotation(ComposeFqNames.ReadOnlyComposable) != null
+fun Annotated.hasDisallowComposableCallsAnnotation(): Boolean =
+    annotations.findAnnotation(ComposeFqNames.DisallowComposableCalls) != null
+fun Annotated.compositionTarget(): String? =
+    annotations.map { it.compositionTarget() }.firstOrNull { it != null }
+
+fun Annotated.hasCompositionTargetMarker(): Boolean =
+    annotations.findAnnotation(
+        ComposeFqNames.ComposableTargetMarker
+    ) != null
+
+fun AnnotationDescriptor.compositionTarget(): String? =
+    if (fqName == ComposeFqNames.ComposableTarget)
+        allValueArguments[ComposeFqNames.ComposableTargetApplierArgument]?.value as? String
+    else if (annotationClass?.hasCompositionTargetMarker() == true) this.fqName.toString() else null
+
+fun Annotated.compositionScheme(): String? =
+    annotations.findAnnotation(
+        ComposeFqNames.ComposableInferredTarget
+    )?.allValueArguments?.let {
+        it[ComposeFqNames.ComposableInferredTargetSchemeArgument]?.value as? String
+    }
+
+fun Annotated.compositionOpenTarget(): Int? =
+    annotations.findAnnotation(
+        ComposeFqNames.ComposableOpenTarget
+    )?.allValueArguments?.let {
+        it[ComposeFqNames.ComposableOpenTargetIndexArgument]?.value as Int
+    }
+
+internal val KotlinType.isSpecialType: Boolean get() =
+    this === TypeUtils.NO_EXPECTED_TYPE || this === TypeUtils.UNIT_EXPECTED_TYPE
+
+val AnnotationDescriptor.isComposableAnnotation: Boolean get() = fqName == ComposeFqNames.Composable
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableCallChecker.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableCallChecker.kt
similarity index 97%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableCallChecker.kt
rename to compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableCallChecker.kt
index 25c7023..a294a25 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableCallChecker.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableCallChecker.kt
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.compiler.plugins.kotlin.k1
 
-import androidx.compose.compiler.plugins.kotlin.analysis.ComposeWritableSlices
 import com.intellij.psi.PsiElement
 import org.jetbrains.kotlin.builtins.isBuiltinFunctionalType
 import org.jetbrains.kotlin.container.StorageComponentContainer
@@ -160,7 +159,7 @@
                     val arg = getArgumentDescriptor(node.functionLiteral, bindingContext)
                     if (arg?.type?.hasDisallowComposableCallsAnnotation() == true) {
                         context.trace.record(
-                            ComposeWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
+                            FrontendWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
                             descriptor,
                             false
                         )
@@ -187,7 +186,7 @@
                         // since the function is inlined, we continue going up the PSI tree
                         // until we find a composable context. We also mark this lambda
                         context.trace.record(
-                            ComposeWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
+                            FrontendWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
                             descriptor,
                             true
                         )
@@ -381,7 +380,7 @@
 
                 if (!expectedComposable && isComposable) {
                     val inferred = c.trace.bindingContext[
-                        ComposeWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR,
+                        FrontendWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR,
                         descriptor
                     ] == true
                     if (inferred) {
@@ -524,7 +523,7 @@
     if (isMarkedAsComposable()) return true
     if (
         this is FunctionDescriptor &&
-        bindingContext[ComposeWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR, this] == true
+        bindingContext[FrontendWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR, this] == true
     ) {
         // even though it's not marked, it is inferred as so by the type system (by being passed
         // into a parameter marked as composable or a variable typed as one. This isn't much
@@ -543,7 +542,7 @@
     val lambdaExpr = functionLiteral.parent as? KtLambdaExpression
     if (
         lambdaExpr != null &&
-        bindingContext[ComposeWritableSlices.INFERRED_COMPOSABLE_LITERAL, lambdaExpr] == true
+        bindingContext[FrontendWritableSlices.INFERRED_COMPOSABLE_LITERAL, lambdaExpr] == true
     ) {
         // this lambda was marked as inferred to be composable
         return true
@@ -559,7 +558,7 @@
     // otherwise, this is only true if it is a lambda which can be capable of composer
     // capture
     return bindingContext[
-        ComposeWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
+        FrontendWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
         this
     ] == true
 }
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableDeclarationChecker.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableDeclarationChecker.kt
similarity index 89%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableDeclarationChecker.kt
rename to compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableDeclarationChecker.kt
index 2cc17dc..c47f997 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableDeclarationChecker.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableDeclarationChecker.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020 The Android Open Source Project
+ * Copyright 2023 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,13 +14,8 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.compiler.plugins.kotlin.k1
 
-import androidx.compose.compiler.plugins.kotlin.ComposeErrors.ABSTRACT_COMPOSABLE_DEFAULT_PARAMETER_VALUE
-import androidx.compose.compiler.plugins.kotlin.ComposeErrors.COMPOSABLE_FUN_MAIN
-import androidx.compose.compiler.plugins.kotlin.ComposeErrors.COMPOSABLE_PROPERTY_BACKING_FIELD
-import androidx.compose.compiler.plugins.kotlin.ComposeErrors.COMPOSABLE_SUSPEND_FUN
-import androidx.compose.compiler.plugins.kotlin.ComposeErrors.COMPOSABLE_VAR
 import com.intellij.psi.PsiElement
 import org.jetbrains.kotlin.builtins.isFunctionType
 import org.jetbrains.kotlin.builtins.isSuspendFunctionType
@@ -127,7 +122,9 @@
         }
         if (descriptor.isSuspend && hasComposableAnnotation) {
             context.trace.report(
-                COMPOSABLE_SUSPEND_FUN.on(declaration.nameIdentifier ?: declaration)
+                ComposeErrors.COMPOSABLE_SUSPEND_FUN.on(
+                    declaration.nameIdentifier ?: declaration
+                )
             )
         }
 
@@ -136,7 +133,7 @@
                 val defaultValue = it.defaultValue
                 if (defaultValue != null) {
                     context.trace.report(
-                        ABSTRACT_COMPOSABLE_DEFAULT_PARAMETER_VALUE.on(defaultValue)
+                        ComposeErrors.ABSTRACT_COMPOSABLE_DEFAULT_PARAMETER_VALUE.on(defaultValue)
                     )
                 }
             }
@@ -161,7 +158,9 @@
                 ).isMain(descriptor)
         ) {
             context.trace.report(
-                COMPOSABLE_FUN_MAIN.on(declaration.nameIdentifier ?: declaration)
+                ComposeErrors.COMPOSABLE_FUN_MAIN.on(
+                    declaration.nameIdentifier ?: declaration
+                )
             )
         }
 
@@ -185,7 +184,7 @@
     ) {
         if (type.hasComposableAnnotation() && type.isSuspendFunctionType) {
             context.trace.report(
-                COMPOSABLE_SUSPEND_FUN.on(element)
+                ComposeErrors.COMPOSABLE_SUSPEND_FUN.on(element)
             )
         }
     }
@@ -215,10 +214,10 @@
         val initializer = declaration.initializer
         val name = declaration.nameIdentifier
         if (initializer != null && name != null) {
-            context.trace.report(COMPOSABLE_PROPERTY_BACKING_FIELD.on(name))
+            context.trace.report(ComposeErrors.COMPOSABLE_PROPERTY_BACKING_FIELD.on(name))
         }
         if (descriptor.isVar && name != null) {
-            context.trace.report(COMPOSABLE_VAR.on(name))
+            context.trace.report(ComposeErrors.COMPOSABLE_VAR.on(name))
         }
     }
 
@@ -246,10 +245,10 @@
         }
         if (!hasComposableAnnotation) return
         if (initializer != null && name != null) {
-            context.trace.report(COMPOSABLE_PROPERTY_BACKING_FIELD.on(name))
+            context.trace.report(ComposeErrors.COMPOSABLE_PROPERTY_BACKING_FIELD.on(name))
         }
         if (propertyDescriptor.isVar && name != null) {
-            context.trace.report(COMPOSABLE_VAR.on(name))
+            context.trace.report(ComposeErrors.COMPOSABLE_VAR.on(name))
         }
     }
 
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableTargetChecker.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableTargetChecker.kt
similarity index 95%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableTargetChecker.kt
rename to compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableTargetChecker.kt
index bd9e032..f39b525 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposableTargetChecker.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposableTargetChecker.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 The Android Open Source Project
+ * Copyright 2023 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,12 +14,11 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.compiler.plugins.kotlin.k1
 
-import androidx.compose.compiler.plugins.kotlin.analysis.ComposeWritableSlices
-import androidx.compose.compiler.plugins.kotlin.inference.ErrorReporter
-import androidx.compose.compiler.plugins.kotlin.inference.TypeAdapter
+import androidx.compose.compiler.plugins.kotlin.ComposeFqNames
 import androidx.compose.compiler.plugins.kotlin.inference.ApplierInferencer
+import androidx.compose.compiler.plugins.kotlin.inference.ErrorReporter
 import androidx.compose.compiler.plugins.kotlin.inference.Item
 import androidx.compose.compiler.plugins.kotlin.inference.LazyScheme
 import androidx.compose.compiler.plugins.kotlin.inference.LazySchemeStorage
@@ -28,7 +27,9 @@
 import androidx.compose.compiler.plugins.kotlin.inference.Open
 import androidx.compose.compiler.plugins.kotlin.inference.Scheme
 import androidx.compose.compiler.plugins.kotlin.inference.Token
+import androidx.compose.compiler.plugins.kotlin.inference.TypeAdapter
 import androidx.compose.compiler.plugins.kotlin.inference.deserializeScheme
+import androidx.compose.compiler.plugins.kotlin.inference.mergeWith
 import com.intellij.psi.PsiElement
 import org.jetbrains.kotlin.backend.jvm.ir.psiElement
 import org.jetbrains.kotlin.builtins.isFunctionType
@@ -263,13 +264,13 @@
         lazySchemeStorage = object : LazySchemeStorage<InferenceNode> {
             override fun getLazyScheme(node: InferenceNode): LazyScheme? =
                 callContext.trace.bindingContext.get(
-                    ComposeWritableSlices.COMPOSE_LAZY_SCHEME,
+                    FrontendWritableSlices.COMPOSE_LAZY_SCHEME,
                     node.type
                 )
 
             override fun storeLazyScheme(node: InferenceNode, value: LazyScheme) {
                 callContext.trace.record(
-                    ComposeWritableSlices.COMPOSE_LAZY_SCHEME,
+                    FrontendWritableSlices.COMPOSE_LAZY_SCHEME,
                     node.type,
                     value
                 )
@@ -470,24 +471,3 @@
 
 private fun ValueParameterDescriptor.isSamComposable() =
     samComposableOrNull()?.hasComposableAnnotation() == true
-
-internal fun Scheme.mergeWith(schemes: List<Scheme>): Scheme {
-    if (schemes.isEmpty()) return this
-
-    val lazyScheme = LazyScheme(this)
-    val bindings = lazyScheme.bindings
-
-    fun unifySchemes(a: LazyScheme, b: LazyScheme) {
-        bindings.unify(a.target, b.target)
-        for ((ap, bp) in a.parameters.zip(b.parameters)) {
-            unifySchemes(ap, bp)
-        }
-    }
-
-    schemes.forEach {
-        val overrideScheme = LazyScheme(it, bindings = lazyScheme.bindings)
-        unifySchemes(lazyScheme, overrideScheme)
-    }
-
-    return lazyScheme.toScheme()
-}
\ No newline at end of file
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeDiagnosticSuppressor.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeDiagnosticSuppressor.kt
similarity index 96%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeDiagnosticSuppressor.kt
rename to compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeDiagnosticSuppressor.kt
index e0c1640..fc11167 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeDiagnosticSuppressor.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeDiagnosticSuppressor.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2023 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.compiler.plugins.kotlin.k1
 
 import com.intellij.openapi.extensions.Extensions
 import com.intellij.openapi.project.Project
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeErrorMessages.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeErrorMessages.kt
similarity index 97%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeErrorMessages.kt
rename to compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeErrorMessages.kt
index b000674..b56f597 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeErrorMessages.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeErrorMessages.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020 The Android Open Source Project
+ * Copyright 2023 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.compiler.plugins.kotlin.k1
 
 import org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers
 import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeErrors.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeErrors.kt
similarity index 97%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeErrors.kt
rename to compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeErrors.kt
index 2d7e47a..b04e05b 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeErrors.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeErrors.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020 The Android Open Source Project
+ * Copyright 2023 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.compiler.plugins.kotlin.k1
 
 import com.intellij.psi.PsiElement
 import org.jetbrains.kotlin.descriptors.CallableDescriptor
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeTypeResolutionInterceptorExtension.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeTypeResolutionInterceptorExtension.kt
similarity index 85%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeTypeResolutionInterceptorExtension.kt
rename to compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeTypeResolutionInterceptorExtension.kt
index b9912be..182f8ef 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeTypeResolutionInterceptorExtension.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/ComposeTypeResolutionInterceptorExtension.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2023 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,8 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.compiler.plugins.kotlin.k1
 
-import androidx.compose.compiler.plugins.kotlin.analysis.ComposeWritableSlices
-import androidx.compose.compiler.plugins.kotlin.analysis.ComposeWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR
 import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
 import org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptorExtension
 import org.jetbrains.kotlin.psi.KtElement
@@ -48,7 +46,11 @@
             // If the expected type has an @Composable annotation then the literal function
             // expression should infer a an @Composable annotation
             descriptor.annotateAsComposable(context.scope.ownerDescriptor.module).also {
-                context.trace.record(INFERRED_COMPOSABLE_DESCRIPTOR, it, true)
+                context.trace.record(
+                    FrontendWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR,
+                    it,
+                    true
+                )
             }
         } else {
             descriptor
@@ -67,7 +69,7 @@
             element.getAnnotationEntries().hasComposableAnnotation(context.trace.bindingContext) ||
             context.hasComposableExpectedType(element)
         ) {
-            context.trace.record(ComposeWritableSlices.INFERRED_COMPOSABLE_LITERAL, element, true)
+            context.trace.record(FrontendWritableSlices.INFERRED_COMPOSABLE_LITERAL, element, true)
             return resultType.makeComposable(context.scope.ownerDescriptor.module)
         }
         return resultType
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/FrontendWritableSlices.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/FrontendWritableSlices.kt
new file mode 100644
index 0000000..24bd498
--- /dev/null
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/k1/FrontendWritableSlices.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.compiler.plugins.kotlin.k1
+
+import androidx.compose.compiler.plugins.kotlin.inference.LazyScheme
+import org.jetbrains.kotlin.descriptors.FunctionDescriptor
+import org.jetbrains.kotlin.psi.KtLambdaExpression
+import org.jetbrains.kotlin.util.slicedMap.BasicWritableSlice
+import org.jetbrains.kotlin.util.slicedMap.RewritePolicy
+import org.jetbrains.kotlin.util.slicedMap.WritableSlice
+
+object FrontendWritableSlices {
+    val INFERRED_COMPOSABLE_DESCRIPTOR: WritableSlice<FunctionDescriptor, Boolean> =
+        BasicWritableSlice(RewritePolicy.DO_NOTHING)
+    val LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE: WritableSlice<FunctionDescriptor, Boolean> =
+        BasicWritableSlice(RewritePolicy.DO_NOTHING)
+    val INFERRED_COMPOSABLE_LITERAL: WritableSlice<KtLambdaExpression, Boolean> =
+        BasicWritableSlice(RewritePolicy.DO_NOTHING)
+    val COMPOSE_LAZY_SCHEME: WritableSlice<Any, LazyScheme> =
+        BasicWritableSlice(RewritePolicy.DO_NOTHING)
+}
\ No newline at end of file
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableSymbolRemapper.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableSymbolRemapper.kt
index 6974105..ee0a890 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableSymbolRemapper.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableSymbolRemapper.kt
@@ -16,7 +16,7 @@
 
 package androidx.compose.compiler.plugins.kotlin.lower
 
-import androidx.compose.compiler.plugins.kotlin.hasComposableAnnotation
+import androidx.compose.compiler.plugins.kotlin.k1.hasComposableAnnotation
 import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
 import org.jetbrains.kotlin.descriptors.FunctionDescriptor
 import org.jetbrains.kotlin.descriptors.ParameterDescriptor
@@ -43,6 +43,9 @@
  *
  * This conversion is only required with decoys, but can be applied to the JVM as well for
  * consistency.
+ *
+ * This is K1 specific. In K2, descriptors are only there for backwards compatibility and
+ * always reflect the IR.
  */
 class ComposableSymbolRemapper : DeepCopySymbolRemapper(
     object : DescriptorsRemapper {
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTargetAnnotationsTransformer.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTargetAnnotationsTransformer.kt
index 2eb7e75..32f328b 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTargetAnnotationsTransformer.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTargetAnnotationsTransformer.kt
@@ -23,7 +23,6 @@
 import androidx.compose.compiler.plugins.kotlin.analysis.ComposeWritableSlices
 import androidx.compose.compiler.plugins.kotlin.inference.ApplierInferencer
 import androidx.compose.compiler.plugins.kotlin.inference.ErrorReporter
-import androidx.compose.compiler.plugins.kotlin.inference.TypeAdapter
 import androidx.compose.compiler.plugins.kotlin.inference.Item
 import androidx.compose.compiler.plugins.kotlin.inference.LazyScheme
 import androidx.compose.compiler.plugins.kotlin.inference.LazySchemeStorage
@@ -32,9 +31,10 @@
 import androidx.compose.compiler.plugins.kotlin.inference.Open
 import androidx.compose.compiler.plugins.kotlin.inference.Scheme
 import androidx.compose.compiler.plugins.kotlin.inference.Token
+import androidx.compose.compiler.plugins.kotlin.inference.TypeAdapter
 import androidx.compose.compiler.plugins.kotlin.inference.deserializeScheme
+import androidx.compose.compiler.plugins.kotlin.inference.mergeWith
 import androidx.compose.compiler.plugins.kotlin.irTrace
-import androidx.compose.compiler.plugins.kotlin.mergeWith
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
 import org.jetbrains.kotlin.descriptors.ClassKind
 import org.jetbrains.kotlin.descriptors.Modality
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/CopyDefaultValuesFromExpectLowering.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/CopyDefaultValuesFromExpectLowering.kt
index 1ce5f87..6226df2 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/CopyDefaultValuesFromExpectLowering.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/CopyDefaultValuesFromExpectLowering.kt
@@ -76,8 +76,7 @@
  * only for functions marked with @Composable annotation or
  * for functions with @Composable lambdas in parameters.
  *
- * TODO(karpovich): When adding support for FIR we'll need to use different API.
- * Likely: fun FirBasedSymbol<*>.getSingleCompatibleExpectForActualOrNull(): FirBasedSymbol<*>?
+ * This lowering is K1 specific and should not be run in K2.
  */
 @OptIn(ObsoleteDescriptorBasedAPI::class)
 class CopyDefaultValuesFromExpectLowering(
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrInlineReferenceLocator.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrInlineReferenceLocator.kt
index f3b721c..7870f61 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrInlineReferenceLocator.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrInlineReferenceLocator.kt
@@ -61,7 +61,7 @@
                 val parent = declaration.parent as? IrFunction
                 if (parent?.isInlineFunctionCall(context) == true &&
                     declaration.isInlineParameter()) {
-                    declaration.defaultValue?.expression?.unwrapInlineLambda()?.let {
+                    declaration.defaultValue?.expression?.unwrapLambda()?.let {
                         inlineLambdaToParameter[it] = declaration
                     }
                 }
@@ -74,7 +74,7 @@
                     for (parameter in function.valueParameters) {
                         if (parameter.isInlineParameter()) {
                             expression.getValueArgument(parameter.index)
-                                ?.unwrapInlineLambda()
+                                ?.unwrapLambda()
                                 ?.let { inlineLambdaToParameter[it] = parameter }
                         }
                     }
@@ -96,8 +96,8 @@
             it in context.irBuiltIns.primitiveArraysToPrimitiveTypes
     }
 
-private fun IrExpression.unwrapInlineLambda(): IrFunctionSymbol? = when {
-    this is IrBlock && origin.isInlinable ->
+fun IrExpression.unwrapLambda(): IrFunctionSymbol? = when {
+    this is IrBlock && origin.isLambdaBlockOrigin ->
         (statements.lastOrNull() as? IrFunctionReference)?.symbol
 
     this is IrFunctionExpression ->
@@ -107,6 +107,6 @@
         null
 }
 
-private val IrStatementOrigin?.isInlinable: Boolean
+private val IrStatementOrigin?.isLambdaBlockOrigin: Boolean
     get() = isLambda || this == IrStatementOrigin.ADAPTED_FUNCTION_REFERENCE ||
         this == IrStatementOrigin.SUSPEND_CONVERSION
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrSourcePrinter.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrSourcePrinter.kt
index 01fc0be..ccf22cf 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrSourcePrinter.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/IrSourcePrinter.kt
@@ -23,6 +23,7 @@
 import org.jetbrains.kotlin.descriptors.Modality
 import org.jetbrains.kotlin.ir.IrBuiltIns
 import org.jetbrains.kotlin.ir.IrElement
+import org.jetbrains.kotlin.ir.IrStatement
 import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
 import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer
 import org.jetbrains.kotlin.ir.declarations.IrClass
@@ -89,6 +90,7 @@
 import org.jetbrains.kotlin.ir.expressions.IrWhen
 import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
 import org.jetbrains.kotlin.ir.expressions.impl.IrIfThenElseImpl
+import org.jetbrains.kotlin.ir.symbols.IrReturnTargetSymbol
 import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol
 import org.jetbrains.kotlin.ir.types.IrDynamicType
 import org.jetbrains.kotlin.ir.types.IrErrorType
@@ -115,6 +117,7 @@
 import org.jetbrains.kotlin.ir.util.statements
 import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
 import org.jetbrains.kotlin.ir.visitors.acceptVoid
+import org.jetbrains.kotlin.name.SpecialNames
 import org.jetbrains.kotlin.types.Variance
 import org.jetbrains.kotlin.utils.Printer
 
@@ -516,11 +519,16 @@
             val arg = getValueArgument(i)
             if (arg != null) {
                 val param = symbol.owner.valueParameters[i]
-                val isTrailingLambda = i == symbol.owner.valueParameters.size - 1 &&
-                    (
-                        arg is IrFunctionExpression ||
-                            (arg is IrBlock && arg.origin == IrStatementOrigin.LAMBDA)
-                        )
+                val isLambda = arg is IrFunctionExpression ||
+                    (arg is IrBlock &&
+                        (arg.origin == IrStatementOrigin.LAMBDA ||
+                            arg.origin == IrStatementOrigin.ADAPTED_FUNCTION_REFERENCE))
+                if (isLambda) {
+                    arg.unwrapLambda()?.let {
+                        returnTargetToCall[it] = this
+                    }
+                }
+                val isTrailingLambda = i == symbol.owner.valueParameters.size - 1 && isLambda
                 if (isTrailingLambda) {
                     trailingLambda = arg
                 } else {
@@ -801,33 +809,42 @@
         println("}")
     }
 
+    // Map local return targets to the corresponding function call.
+    // This is used to print qualified returns.
+    private val returnTargetToCall =
+        mutableMapOf<IrReturnTargetSymbol, IrFunctionAccessExpression>()
+
+    private val IrFunction.isLambda: Boolean
+        get() = name.asString() == SpecialNames.ANONYMOUS_STRING ||
+            origin == IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE
+
+    private fun IrExpression.isLastStatementIn(statements: List<IrStatement>): Boolean {
+        val lastStatement = statements.lastOrNull()
+        return when {
+            lastStatement === this -> true
+            lastStatement is IrBlock -> isLastStatementIn(lastStatement.statements)
+            else -> false
+        }
+    }
+
+    private fun IrExpression.isLastStatementIn(function: IrFunction): Boolean =
+        function.body?.let { isLastStatementIn(it.statements) } ?: false
+
     override fun visitReturn(expression: IrReturn) {
         val value = expression.value
-        // only print the return statement directly if it is not a lambda
+        // Only print the return statement directly if it is not the last statement in a lambda
         val returnTarget = expression.returnTargetSymbol.owner
-        if (returnTarget !is IrFunction ||
-            returnTarget.origin != IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE) {
-
-            val isLastStatementInLambda =
-                returnTarget is IrFunction &&
-                    returnTarget.name.asString() == "<anonymous>" &&
-                    returnTarget.body?.statements?.last().let {
-                        it == expression || (it is IrBlock && it.statements.last() == expression)
-                    }
-
-            if (!isLastStatementInLambda) {
-                print("return ")
-            }
+        if (returnTarget !is IrFunction || !returnTarget.isLambda ||
+            !expression.isLastStatementIn(returnTarget)) {
+            val suffix = returnTargetToCall[returnTarget.symbol]?.let {
+                "@${it.symbol.owner.name}"
+            } ?: ""
+            print("return$suffix ")
         }
-        if (expression.type.isUnit() || value.type.isUnit()) {
-            if (value is IrGetObjectValue) {
-                return
-            } else {
-                value.print()
-            }
-        } else {
-            value.print()
+        if (value.type.isUnit() && value is IrGetObjectValue) {
+            return
         }
+        value.print()
     }
 
     override fun visitBlock(expression: IrBlock) {
diff --git a/compose/compiler/compiler-hosted/src/main/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension b/compose/compiler/compiler-hosted/src/main/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension
index bc7e073..d5259a2 100644
--- a/compose/compiler/compiler-hosted/src/main/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension
+++ b/compose/compiler/compiler-hosted/src/main/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension
@@ -1 +1 @@
-androidx.compose.compiler.plugins.kotlin.ComposeErrorMessages
\ No newline at end of file
+androidx.compose.compiler.plugins.kotlin.k1.ComposeErrorMessages
\ No newline at end of file
diff --git a/compose/compiler/compiler/integration-tests/src/test/kotlin/androidx/compose/compiler/test/CompilerPluginRuntimeVersionCheckTest.kt b/compose/compiler/compiler/integration-tests/src/test/kotlin/androidx/compose/compiler/test/CompilerPluginRuntimeVersionCheckTest.kt
index fd0bf61..9559f16 100644
--- a/compose/compiler/compiler/integration-tests/src/test/kotlin/androidx/compose/compiler/test/CompilerPluginRuntimeVersionCheckTest.kt
+++ b/compose/compiler/compiler/integration-tests/src/test/kotlin/androidx/compose/compiler/test/CompilerPluginRuntimeVersionCheckTest.kt
@@ -17,6 +17,10 @@
 package androidx.compose.compiler.test
 
 import androidx.testutils.gradle.ProjectSetupRule
+import java.io.File
+import javax.xml.parsers.DocumentBuilderFactory
+import javax.xml.xpath.XPathConstants
+import javax.xml.xpath.XPathFactory
 import org.gradle.testkit.runner.GradleRunner
 import org.gradle.testkit.runner.TaskOutcome
 import org.junit.Assert.assertEquals
@@ -26,10 +30,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.io.File
-import javax.xml.parsers.DocumentBuilderFactory
-import javax.xml.xpath.XPathConstants
-import javax.xml.xpath.XPathFactory
 
 @RunWith(JUnit4::class)
 class CompilerPluginRuntimeVersionCheckTest {
diff --git a/compose/desktop/desktop/build.gradle b/compose/desktop/desktop/build.gradle
index 46e9c83..2ff1640 100644
--- a/compose/desktop/desktop/build.gradle
+++ b/compose/desktop/desktop/build.gradle
@@ -98,7 +98,7 @@
 }
 
 androidx {
-    name = "Jetpack Compose desktop implementation"
+    name = "Compose Desktop"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2020"
     legacyDisableKotlinStrictApiMode = true
diff --git a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt
index 584efe8..8bf13c0 100644
--- a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt
+++ b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt
@@ -24,7 +24,6 @@
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.ScrollState
 import androidx.compose.foundation.VerticalScrollbar
-import androidx.compose.foundation.mouseClickable
 import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Arrangement
@@ -42,6 +41,7 @@
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.lazy.rememberLazyListState
+import androidx.compose.foundation.mouseClickable
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.rememberScrollbarAdapter
 import androidx.compose.foundation.shape.CircleShape
@@ -75,29 +75,29 @@
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.focus.focusProperties
 import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusProperties
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shadow
 import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.input.key.Key
-import androidx.compose.ui.input.pointer.isAltPressed
-import androidx.compose.ui.input.pointer.isCtrlPressed
-import androidx.compose.ui.input.pointer.isMetaPressed
-import androidx.compose.ui.input.pointer.isPrimaryPressed
-import androidx.compose.ui.input.pointer.isSecondaryPressed
-import androidx.compose.ui.input.pointer.isShiftPressed
-import androidx.compose.ui.input.pointer.isTertiaryPressed
 import androidx.compose.ui.input.key.isMetaPressed
 import androidx.compose.ui.input.key.isShiftPressed
 import androidx.compose.ui.input.key.key
 import androidx.compose.ui.input.key.onPreviewKeyEvent
 import androidx.compose.ui.input.pointer.PointerEventType
 import androidx.compose.ui.input.pointer.PointerIcon
+import androidx.compose.ui.input.pointer.isAltPressed
 import androidx.compose.ui.input.pointer.isBackPressed
+import androidx.compose.ui.input.pointer.isCtrlPressed
 import androidx.compose.ui.input.pointer.isForwardPressed
+import androidx.compose.ui.input.pointer.isMetaPressed
+import androidx.compose.ui.input.pointer.isPrimaryPressed
+import androidx.compose.ui.input.pointer.isSecondaryPressed
+import androidx.compose.ui.input.pointer.isShiftPressed
+import androidx.compose.ui.input.pointer.isTertiaryPressed
 import androidx.compose.ui.input.pointer.pointerHoverIcon
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.platform.LocalUriHandler
@@ -118,15 +118,15 @@
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.em
 import androidx.compose.ui.unit.sp
-import androidx.compose.ui.window.Window
 import androidx.compose.ui.window.FrameWindowScope
+import androidx.compose.ui.window.Window
 import androidx.compose.ui.window.WindowState
 import androidx.compose.ui.window.launchApplication
 import androidx.compose.ui.window.rememberWindowState
 import androidx.compose.ui.window.singleWindowApplication
+import kotlin.random.Random
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.GlobalScope
-import kotlin.random.Random
 
 private const val title = "Desktop Compose Elements"
 
diff --git a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt
index 2b9d6c4..912f063 100644
--- a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt
+++ b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt
@@ -17,9 +17,9 @@
 package androidx.compose.desktop.examples.popupexample
 
 import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.compose.foundation.background
 import androidx.compose.foundation.TooltipArea
 import androidx.compose.foundation.TooltipPlacement
+import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
diff --git a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/swingexample/Main.jvm.kt b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/swingexample/Main.jvm.kt
index cb1aa60..06ddea7 100644
--- a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/swingexample/Main.jvm.kt
+++ b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/swingexample/Main.jvm.kt
@@ -47,13 +47,11 @@
 import androidx.compose.ui.window.Window
 import androidx.compose.ui.window.launchApplication
 import androidx.compose.ui.window.rememberWindowState
-import kotlinx.coroutines.DelicateCoroutinesApi
-import kotlinx.coroutines.GlobalScope
 import java.awt.BorderLayout
 import java.awt.Color as awtColor
 import java.awt.Component
-import java.awt.GridLayout
 import java.awt.Dimension
+import java.awt.GridLayout
 import java.awt.event.ActionEvent
 import java.awt.event.ActionListener
 import javax.swing.JButton
@@ -61,6 +59,8 @@
 import javax.swing.JPanel
 import javax.swing.SwingUtilities
 import javax.swing.WindowConstants
+import kotlinx.coroutines.DelicateCoroutinesApi
+import kotlinx.coroutines.GlobalScope
 
 val northClicks = mutableStateOf(0)
 val westClicks = mutableStateOf(0)
diff --git a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/windowapi/Examples.jvm.kt b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/windowapi/Examples.jvm.kt
index e360681..a74900c 100644
--- a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/windowapi/Examples.jvm.kt
+++ b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/windowapi/Examples.jvm.kt
@@ -60,6 +60,12 @@
 import androidx.compose.ui.window.launchApplication
 import androidx.compose.ui.window.rememberNotification
 import androidx.compose.ui.window.rememberWindowState
+import java.awt.Dimension
+import java.awt.FileDialog
+import java.awt.Frame
+import java.awt.event.WindowAdapter
+import java.awt.event.WindowEvent
+import javax.imageio.ImageIO
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.GlobalScope
@@ -67,12 +73,6 @@
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withContext
-import java.awt.Dimension
-import java.awt.FileDialog
-import java.awt.Frame
-import java.awt.event.WindowAdapter
-import java.awt.event.WindowEvent
-import javax.imageio.ImageIO
 
 @OptIn(DelicateCoroutinesApi::class)
 fun helloWorld() = GlobalScope.launchApplication {
diff --git a/compose/foundation/foundation-layout/benchmark/src/androidTest/java/androidx/compose/foundation/layout/benchmark/SpacingBenchmark.kt b/compose/foundation/foundation-layout/benchmark/src/androidTest/java/androidx/compose/foundation/layout/benchmark/SpacingBenchmark.kt
index 182d5b4..d0d5564 100644
--- a/compose/foundation/foundation-layout/benchmark/src/androidTest/java/androidx/compose/foundation/layout/benchmark/SpacingBenchmark.kt
+++ b/compose/foundation/foundation-layout/benchmark/src/androidTest/java/androidx/compose/foundation/layout/benchmark/SpacingBenchmark.kt
@@ -37,16 +37,16 @@
 import androidx.compose.testutils.benchmark.toggleStateBenchmarkLayout
 import androidx.compose.testutils.benchmark.toggleStateBenchmarkMeasure
 import androidx.compose.testutils.benchmark.toggleStateBenchmarkRecompose
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.offset
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/samples/build.gradle b/compose/foundation/foundation-layout/samples/build.gradle
index dd396a9..3e07527 100644
--- a/compose/foundation/foundation-layout/samples/build.gradle
+++ b/compose/foundation/foundation-layout/samples/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Core Layout Classes Samples"
+    name = "Compose UI Core Layout Classes Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Core Layout Classes"
diff --git a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/AspectRatioSample.kt b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/AspectRatioSample.kt
index 9063cd8..7a7f5b5 100644
--- a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/AspectRatioSample.kt
+++ b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/AspectRatioSample.kt
@@ -17,8 +17,8 @@
 package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.aspectRatio
 import androidx.compose.foundation.layout.width
 import androidx.compose.runtime.Composable
diff --git a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/BoxWithConstraintsSample.kt b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/BoxWithConstraintsSample.kt
index 8c17d20..0222c88 100644
--- a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/BoxWithConstraintsSample.kt
+++ b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/BoxWithConstraintsSample.kt
@@ -17,8 +17,8 @@
 package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxWithConstraints
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.size
diff --git a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ColumnSample.kt b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ColumnSample.kt
index 66fd1c0..c4cfe09 100644
--- a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ColumnSample.kt
+++ b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ColumnSample.kt
@@ -17,18 +17,18 @@
 package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.layout.VerticalAlignmentLine
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.Layout
+import androidx.compose.ui.layout.VerticalAlignmentLine
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import kotlin.math.max
diff --git a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutPaddingSample.kt b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutPaddingSample.kt
index b34d40f..86e4ea6 100644
--- a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutPaddingSample.kt
+++ b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutPaddingSample.kt
@@ -18,8 +18,8 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.absolutePadding
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
diff --git a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SizeModifierSample.kt b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SizeModifierSample.kt
index 90a175c..ac4662d 100644
--- a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SizeModifierSample.kt
+++ b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SizeModifierSample.kt
@@ -24,14 +24,14 @@
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.sizeIn
-import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.requiredSizeIn
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.sizeIn
+import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.foundation.layout.wrapContentWidth
diff --git a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SpacerSample.kt b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SpacerSample.kt
index fe7d2d5..ac36b09 100644
--- a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SpacerSample.kt
+++ b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SpacerSample.kt
@@ -17,8 +17,8 @@
 package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.size
diff --git a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/WindowInsetsPaddingSample.kt b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/WindowInsetsPaddingSample.kt
index ae72f5e..44ff60d 100644
--- a/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/WindowInsetsPaddingSample.kt
+++ b/compose/foundation/foundation-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/WindowInsetsPaddingSample.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.ExperimentalLayoutApi
 import androidx.compose.foundation.layout.MutableWindowInsets
-import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.asPaddingValues
 import androidx.compose.foundation.layout.captionBarPadding
 import androidx.compose.foundation.layout.consumeWindowInsets
@@ -34,7 +34,6 @@
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.ime
 import androidx.compose.foundation.layout.imePadding
-import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.layout.mandatorySystemGesturesPadding
 import androidx.compose.foundation.layout.navigationBars
 import androidx.compose.foundation.layout.navigationBarsPadding
@@ -51,6 +50,7 @@
 import androidx.compose.foundation.layout.systemGesturesPadding
 import androidx.compose.foundation.layout.union
 import androidx.compose.foundation.layout.waterfallPadding
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AlignmentLineTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AlignmentLineTest.kt
index 02d5c5c..c8d896e 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AlignmentLineTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AlignmentLineTest.kt
@@ -39,14 +39,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.min
 import org.junit.After
 import org.junit.Assert
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.min
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AspectRatioTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AspectRatioTest.kt
index 71c17f1..460b85a 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AspectRatioTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AspectRatioTest.kt
@@ -17,9 +17,9 @@
 package androidx.compose.foundation.layout
 
 import androidx.compose.runtime.Composable
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.node.Ref
 import androidx.compose.ui.platform.InspectableValue
 import androidx.compose.ui.platform.ValueElement
@@ -27,17 +27,17 @@
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt
index 55c4cb4..913aff8 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt
@@ -40,14 +40,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxWithConstraintsTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxWithConstraintsTest.kt
index a4c46cf..d3cdacb 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxWithConstraintsTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxWithConstraintsTest.kt
@@ -35,8 +35,8 @@
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.paint
 import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.draw.paint
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.vector.rememberVectorPainter
 import androidx.compose.ui.layout.Layout
@@ -57,15 +57,15 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.rule.ActivityTestRule
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import kotlin.math.abs
 import kotlin.math.max
 import kotlin.math.min
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertTrue
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/IntrinsicTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/IntrinsicTest.kt
index 0d96ae64..dcc13ab 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/IntrinsicTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/IntrinsicTest.kt
@@ -17,33 +17,33 @@
 package androidx.compose.foundation.layout
 
 import androidx.compose.runtime.Composable
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.layout.IntrinsicMeasurable
 import androidx.compose.ui.layout.IntrinsicMeasureScope
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.LayoutCoordinates
 import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasurePolicy
 import androidx.compose.ui.layout.MeasureResult
 import androidx.compose.ui.layout.MeasureScope
-import androidx.compose.ui.node.Ref
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.layout.onSizeChanged
+import androidx.compose.ui.node.Ref
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.constrainHeight
 import androidx.compose.ui.unit.constrainWidth
 import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutTest.kt
index 7b3e8ca..bfc6d1d 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutTest.kt
@@ -54,6 +54,9 @@
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.isFinite
 import androidx.compose.ui.unit.offset
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.max
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.runBlocking
 import org.junit.Assert.assertEquals
@@ -62,9 +65,6 @@
 import org.junit.Assert.fail
 import org.junit.Before
 import org.junit.Rule
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.max
 
 open class LayoutTest {
     @Suppress("DEPRECATION")
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/OffsetTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/OffsetTest.kt
index a20f98e..b784301 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/OffsetTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/OffsetTest.kt
@@ -40,6 +40,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import org.junit.After
 import org.junit.Assert
 import org.junit.Assert.assertEquals
@@ -48,7 +49,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/PaddingTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/PaddingTest.kt
index cb1732a..d1af40b1 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/PaddingTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/PaddingTest.kt
@@ -19,12 +19,12 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.Alignment
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.LayoutCoordinates
-import androidx.compose.ui.layout.positionInRoot
 import androidx.compose.ui.layout.onGloballyPositioned
+import androidx.compose.ui.layout.positionInRoot
 import androidx.compose.ui.platform.InspectableValue
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.ValueElement
@@ -34,8 +34,12 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.roundToInt
 import org.junit.After
 import org.junit.Assert
 import org.junit.Assert.assertEquals
@@ -43,10 +47,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.roundToInt
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SizeTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SizeTest.kt
index cee92f7..46f3307 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SizeTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SizeTest.kt
@@ -22,20 +22,20 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.layout.IntrinsicMeasurable
 import androidx.compose.ui.layout.IntrinsicMeasureScope
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.LayoutCoordinates
 import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasurePolicy
 import androidx.compose.ui.layout.MeasureResult
 import androidx.compose.ui.layout.MeasureScope
-import androidx.compose.ui.node.Ref
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.layout.positionInParent
 import androidx.compose.ui.layout.positionInRoot
+import androidx.compose.ui.node.Ref
 import androidx.compose.ui.platform.InspectableValue
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.ValueElement
@@ -48,21 +48,21 @@
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.constrain
 import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
+import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.roundToInt
 import org.junit.After
 import org.junit.Assert.assertEquals
+import org.junit.Assert.assertNotEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.MediumTest
-import androidx.test.filters.SdkSuppress
-import org.junit.Assert.assertNotEquals
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SpacerTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SpacerTest.kt
index cb7da5b..6d2bb4e 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SpacerTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SpacerTest.kt
@@ -21,14 +21,14 @@
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt
index 4872573..ca4f233 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt
@@ -16,13 +16,13 @@
 
 package androidx.compose.foundation.layout
 
+import android.content.Context
 import android.graphics.Insets as FrameworkInsets
 import android.graphics.Rect as AndroidRect
-import android.view.WindowInsets as AndroidWindowInsets
-import android.content.Context
 import android.os.Build
 import android.view.View
 import android.view.ViewGroup
+import android.view.WindowInsets as AndroidWindowInsets
 import android.view.WindowInsetsAnimation
 import android.view.animation.LinearInterpolator
 import android.widget.FrameLayout
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsSizeTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsSizeTest.kt
index 5615d51..f6d68db 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsSizeTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsSizeTest.kt
@@ -17,10 +17,10 @@
 package androidx.compose.foundation.layout
 
 import android.graphics.Rect as AndroidRect
-import android.view.WindowInsets as AndroidWindowInsets
 import android.os.Build
 import android.view.View
 import android.view.ViewGroup
+import android.view.WindowInsets as AndroidWindowInsets
 import androidx.activity.ComponentActivity
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
diff --git a/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsets.android.kt b/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsets.android.kt
index c77441a..44a21ed 100644
--- a/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsets.android.kt
+++ b/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsets.android.kt
@@ -16,7 +16,6 @@
 
 package androidx.compose.foundation.layout
 
-import androidx.core.graphics.Insets as AndroidXInsets
 import android.os.Build
 import android.view.View
 import android.view.View.OnAttachStateChangeListener
@@ -28,16 +27,17 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
 import androidx.compose.runtime.snapshots.Snapshot
+import androidx.compose.ui.R
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.platform.LocalView
+import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.LayoutDirection
+import androidx.core.graphics.Insets as AndroidXInsets
 import androidx.core.view.OnApplyWindowInsetsListener
 import androidx.core.view.ViewCompat
 import androidx.core.view.WindowInsetsAnimationCompat
 import androidx.core.view.WindowInsetsCompat
 import java.util.WeakHashMap
-import androidx.compose.ui.R
-import androidx.compose.ui.unit.Density
-import androidx.compose.ui.unit.LayoutDirection
 import org.jetbrains.annotations.TestOnly
 
 internal fun AndroidXInsets.toInsetsValues(): InsetsValues =
diff --git a/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsetsConnection.android.kt b/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsetsConnection.android.kt
index e406da8..bd2e95d 100644
--- a/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsetsConnection.android.kt
+++ b/compose/foundation/foundation-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/WindowInsetsConnection.android.kt
@@ -36,26 +36,27 @@
 import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
 import androidx.compose.ui.input.nestedscroll.NestedScrollSource
 import androidx.compose.ui.input.nestedscroll.nestedScroll
+import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.LocalView
-import androidx.compose.ui.unit.LayoutDirection
-import androidx.compose.ui.unit.Velocity
-import kotlin.math.roundToInt
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.launch
-import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.debugInspectorInfo
 import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.LayoutDirection
+import androidx.compose.ui.unit.Velocity
 import androidx.compose.ui.util.packFloats
 import androidx.compose.ui.util.unpackFloat1
 import androidx.compose.ui.util.unpackFloat2
 import kotlin.math.abs
 import kotlin.math.exp
 import kotlin.math.ln
+import kotlin.math.roundToInt
 import kotlin.math.sign
 import kotlinx.coroutines.CancellableContinuation
+import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.launch
 import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
@@ -129,6 +130,21 @@
  */
 private object DoNothingNestedScrollConnection : NestedScrollConnection
 
+/**
+ * Used in place of the standard Job cancellation pathway to avoid reflective
+ * javaClass.simpleName lookups to build the exception message and stack trace collection.
+ * Remove if these are changed in kotlinx.coroutines.
+ */
+private class WindowInsetsAnimationCancelledException : CancellationException(
+    "Window insets animation cancelled"
+) {
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
+}
+
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalLayoutApi::class)
 @RequiresApi(Build.VERSION_CODES.R)
 private class WindowInsetsNestedScrollConnection(
@@ -219,7 +235,7 @@
      */
     private fun scroll(available: Offset, scrollAmount: Float): Offset {
         animationJob?.let {
-            it.cancel()
+            it.cancel(WindowInsetsAnimationCancelledException())
             animationJob = null
         }
 
@@ -289,7 +305,7 @@
         flingAmount: Float,
         towardShown: Boolean
     ): Velocity {
-        animationJob?.cancel()
+        animationJob?.cancel(WindowInsetsAnimationCancelledException())
         animationJob = null
         partialConsumption = 0f
 
@@ -341,7 +357,7 @@
                             endVelocity = velocity
                             animationController.finish(targetShown)
                             this@WindowInsetsNestedScrollConnection.animationController = null
-                            animationJob?.cancel()
+                            animationJob?.cancel(WindowInsetsAnimationCancelledException())
                         }
                     }
                 }
@@ -426,7 +442,7 @@
         continuation = null
 
         // Cancel any animation that's running.
-        animationJob?.cancel()
+        animationJob?.cancel(WindowInsetsAnimationCancelledException())
         animationJob = null
 
         partialConsumption = 0f
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Arrangement.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Arrangement.kt
index a408742..b7e385e 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Arrangement.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Arrangement.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.foundation.layout
 
+import androidx.compose.foundation.layout.internal.JvmDefaultWithCompatibility
 import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.Stable
 import androidx.compose.ui.Alignment
@@ -25,7 +26,6 @@
 import androidx.compose.ui.unit.dp
 import kotlin.math.min
 import kotlin.math.roundToInt
-import androidx.compose.foundation.layout.internal.JvmDefaultWithCompatibility
 
 /**
  * Used to specify the arrangement of the layout's children in layouts like [Row] or [Column] in
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/AspectRatio.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/AspectRatio.kt
index bd8c46e..03ba1e45 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/AspectRatio.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/AspectRatio.kt
@@ -17,12 +17,12 @@
 package androidx.compose.foundation.layout
 
 import androidx.compose.runtime.Stable
-import androidx.compose.ui.layout.Measurable
-import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.layout.IntrinsicMeasurable
 import androidx.compose.ui.layout.IntrinsicMeasureScope
+import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasureResult
+import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.node.LayoutModifierNode
 import androidx.compose.ui.node.ModifierNodeElement
 import androidx.compose.ui.platform.InspectorInfo
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Intrinsic.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Intrinsic.kt
index 4b382a7..d4b84a8 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Intrinsic.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Intrinsic.kt
@@ -17,13 +17,13 @@
 package androidx.compose.foundation.layout
 
 import androidx.compose.runtime.Stable
-import androidx.compose.ui.layout.LayoutModifier
-import androidx.compose.ui.layout.Measurable
-import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.layout.IntrinsicMeasurable
 import androidx.compose.ui.layout.IntrinsicMeasureScope
+import androidx.compose.ui.layout.LayoutModifier
+import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasureResult
+import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.constrain
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Spacer.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Spacer.kt
index 2dfc2c8..4ba62fe 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Spacer.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Spacer.kt
@@ -18,13 +18,13 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.NonRestartableComposable
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasurePolicy
 import androidx.compose.ui.layout.MeasureResult
 import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.unit.Constraints
-import androidx.compose.ui.Modifier
 
 /**
  * Component that represents an empty space layout, whose size can be defined using
diff --git a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/NestedScrollerTestCase.kt b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/NestedScrollerTestCase.kt
index ff79ab3..96778f3 100644
--- a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/NestedScrollerTestCase.kt
+++ b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/NestedScrollerTestCase.kt
@@ -37,8 +37,8 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalDensity
-import kotlinx.coroutines.runBlocking
 import kotlin.random.Random
+import kotlinx.coroutines.runBlocking
 
 /**
  * Test case that puts many horizontal scrollers in a vertical scroller
diff --git a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/TrailingLambdaBenchmark.kt b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/TrailingLambdaBenchmark.kt
index 73585f9..3cc15b9 100644
--- a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/TrailingLambdaBenchmark.kt
+++ b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/TrailingLambdaBenchmark.kt
@@ -30,11 +30,11 @@
 import androidx.compose.testutils.benchmark.toggleStateBenchmarkRecompose
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/lazy/LazyGridScrollingBenchmark.kt b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/lazy/LazyGridScrollingBenchmark.kt
index d21da5c..2e190b3 100644
--- a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/lazy/LazyGridScrollingBenchmark.kt
+++ b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/lazy/LazyGridScrollingBenchmark.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredSize
-import androidx.compose.foundation.lazy.grid.LazyHorizontalGrid
-import androidx.compose.foundation.lazy.grid.LazyGridState
-import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
 import androidx.compose.foundation.lazy.grid.GridCells
+import androidx.compose.foundation.lazy.grid.LazyGridState
+import androidx.compose.foundation.lazy.grid.LazyHorizontalGrid
+import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
 import androidx.compose.foundation.lazy.grid.items
 import androidx.compose.foundation.lazy.grid.rememberLazyGridState
 import androidx.compose.foundation.shape.RoundedCornerShape
diff --git a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextDelegateBenchmark.kt b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextDelegateBenchmark.kt
index 9bb4429..101c12e 100644
--- a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextDelegateBenchmark.kt
+++ b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextDelegateBenchmark.kt
@@ -35,12 +35,12 @@
 import androidx.compose.ui.unit.sp
 import androidx.test.filters.LargeTest
 import androidx.test.platform.app.InstrumentationRegistry
+import kotlin.math.roundToInt
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.math.roundToInt
 
 @OptIn(InternalFoundationTextApi::class)
 @LargeTest
diff --git a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextFieldToggleTextTestCase.kt b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextFieldToggleTextTestCase.kt
index 308b085..92c706c 100644
--- a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextFieldToggleTextTestCase.kt
+++ b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/text/TextFieldToggleTextTestCase.kt
@@ -32,8 +32,8 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalTextInputService
-import androidx.compose.ui.text.benchmark.RandomTextGenerator
 import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.benchmark.RandomTextGenerator
 import androidx.compose.ui.text.input.EditCommand
 import androidx.compose.ui.text.input.ImeAction
 import androidx.compose.ui.text.input.ImeOptions
diff --git a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/view/AndroidNestedScrollViewTestCase.kt b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/view/AndroidNestedScrollViewTestCase.kt
index 7c7f2a5..eb41dcf 100644
--- a/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/view/AndroidNestedScrollViewTestCase.kt
+++ b/compose/foundation/foundation/benchmark/src/androidTest/java/androidx/compose/foundation/benchmark/view/AndroidNestedScrollViewTestCase.kt
@@ -20,11 +20,11 @@
 import android.view.View
 import android.view.ViewGroup
 import android.widget.HorizontalScrollView
+import androidx.compose.foundation.benchmark.NestedScrollerTestCase
 import androidx.compose.testutils.ToggleableTestCase
 import androidx.compose.testutils.benchmark.android.AndroidTestCase
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.toArgb
-import androidx.compose.foundation.benchmark.NestedScrollerTestCase
 import kotlin.random.Random
 
 /**
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt
index 0c0c3eb..ca3fffe 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt
@@ -19,8 +19,8 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.samples.BorderSample
 import androidx.compose.foundation.samples.BorderSampleWithBrush
 import androidx.compose.foundation.samples.BorderSampleWithDataClass
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/OverscrollDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/OverscrollDemo.kt
index df7592a..c375e4e 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/OverscrollDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/OverscrollDemo.kt
@@ -20,9 +20,9 @@
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.samples.OverscrollSample
 import androidx.compose.foundation.samples.OverscrollWithDraggable_After
 import androidx.compose.foundation.samples.OverscrollWithDraggable_Before
-import androidx.compose.foundation.samples.OverscrollSample
 import androidx.compose.foundation.verticalScroll
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/PointerIconDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/PointerIconDemo.kt
index 6a4a6cd..4c73cb5 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/PointerIconDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/PointerIconDemo.kt
@@ -26,8 +26,8 @@
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.integration.demos.common.ComposableDemo
-import androidx.compose.runtime.Composable
 import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.SolidColor
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/SuspendingGesturesDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/SuspendingGesturesDemo.kt
index 6bae60a..4a3744e 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/SuspendingGesturesDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/SuspendingGesturesDemo.kt
@@ -20,8 +20,8 @@
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
-import androidx.compose.foundation.gestures.detectDragGestures
 import androidx.compose.foundation.gestures.awaitEachGesture
+import androidx.compose.foundation.gestures.detectDragGestures
 import androidx.compose.foundation.gestures.detectHorizontalDragGestures
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.gestures.detectTransformGestures
@@ -33,12 +33,12 @@
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.requiredHeight
-import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.foundation.layout.size
 import androidx.compose.integration.demos.common.ComposableDemo
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/snapping/LazyGridSnappingDemos.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/snapping/LazyGridSnappingDemos.kt
index 7b7ec83..86151d9 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/snapping/LazyGridSnappingDemos.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/snapping/LazyGridSnappingDemos.kt
@@ -19,8 +19,8 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.background
 import androidx.compose.foundation.gestures.FlingBehavior
-import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior
 import androidx.compose.foundation.gestures.snapping.SnapLayoutInfoProvider
+import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeFontPadding.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeFontPadding.kt
index 3e76a2e..d20cf1b 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeFontPadding.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeFontPadding.kt
@@ -43,10 +43,10 @@
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.text.Placeholder
 import androidx.compose.ui.text.PlaceholderVerticalAlign
+import androidx.compose.ui.text.PlatformTextStyle
 import androidx.compose.ui.text.SpanStyle
 import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.buildAnnotatedString
-import androidx.compose.ui.text.PlatformTextStyle
 import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.text.withStyle
 import androidx.compose.ui.tooling.preview.Preview
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeText.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeText.kt
index 709067a..5a10e21 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeText.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeText.kt
@@ -44,8 +44,8 @@
 import androidx.compose.material.Icon
 import androidx.compose.material.IconButton
 import androidx.compose.material.ListItem
-import androidx.compose.material.Slider
 import androidx.compose.material.RadioButton
+import androidx.compose.material.Slider
 import androidx.compose.material.Switch
 import androidx.compose.material.Text
 import androidx.compose.material.icons.Icons
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextAccessibility.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextAccessibility.kt
index 3f36fd9..f3ccb2e 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextAccessibility.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextAccessibility.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.foundation.demos.text
 
-import androidx.compose.material.Text
 import androidx.compose.foundation.layout.Column
+import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.text.ExperimentalTextApi
 import androidx.compose.ui.text.SpanStyle
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelection.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelection.kt
index d251f63..fcfec76 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelection.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelection.kt
@@ -24,12 +24,12 @@
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.text.selection.DisableSelection
+import androidx.compose.foundation.text.selection.SelectionContainer
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-import androidx.compose.foundation.text.selection.DisableSelection
-import androidx.compose.foundation.text.selection.SelectionContainer
 import androidx.compose.ui.text.SpanStyle
 import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.buildAnnotatedString
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelectionSample.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelectionSample.kt
index 01670e0..9d63ed7 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelectionSample.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeTextSelectionSample.kt
@@ -24,15 +24,15 @@
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
+import androidx.compose.foundation.text.selection.SelectionContainer
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-import androidx.compose.foundation.text.selection.SelectionContainer
 import androidx.compose.ui.text.SpanStyle
 import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.withStyle
 import androidx.compose.ui.text.buildAnnotatedString
+import androidx.compose.ui.text.withStyle
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextFieldFocusKeyboardInteraction.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextFieldFocusKeyboardInteraction.kt
index e57604b..0d01e6b 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextFieldFocusKeyboardInteraction.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextFieldFocusKeyboardInteraction.kt
@@ -16,11 +16,11 @@
 
 package androidx.compose.foundation.demos.text
 
-import android.widget.Button as AndroidButton
 import android.content.Context
 import android.view.ViewGroup.LayoutParams.MATCH_PARENT
 import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
 import android.view.inputmethod.EditorInfo
+import android.widget.Button as AndroidButton
 import android.widget.EditText
 import android.widget.LinearLayout
 import androidx.compose.foundation.border
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/VariableFontsDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/VariableFontsDemo.kt
index 843f8fe..8e052ff 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/VariableFontsDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/VariableFontsDemo.kt
@@ -25,7 +25,6 @@
 import androidx.compose.foundation.Canvas
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.background
-import androidx.testutils.fonts.R
 import androidx.compose.foundation.demos.text.FontVariationSettingsCompot.compatSetFontVariationSettings
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
@@ -54,6 +53,7 @@
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
+import androidx.testutils.fonts.R
 import java.io.File
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext
diff --git a/compose/foundation/foundation/samples/build.gradle b/compose/foundation/foundation/samples/build.gradle
index 38d57ca..d6871de 100644
--- a/compose/foundation/foundation/samples/build.gradle
+++ b/compose/foundation/foundation/samples/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Foundational Component Samples"
+    name = "Compose UI Foundational Component Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Foundational Components"
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ClickableTextSample.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ClickableTextSample.kt
index 2cc6ff7..96b1a1e 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ClickableTextSample.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ClickableTextSample.kt
@@ -18,8 +18,8 @@
 
 import android.util.Log
 import androidx.annotation.Sampled
-import androidx.compose.foundation.text.ClickableText
 import androidx.compose.foundation.gestures.detectTapGestures
+import androidx.compose.foundation.text.ClickableText
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableStateOf
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/DragGestureDetectorSamples.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/DragGestureDetectorSamples.kt
index ed0b6f4..d08b4cf 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/DragGestureDetectorSamples.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/DragGestureDetectorSamples.kt
@@ -19,6 +19,7 @@
 import androidx.annotation.Sampled
 import androidx.compose.foundation.background
 import androidx.compose.foundation.gestures.awaitDragOrCancellation
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitHorizontalDragOrCancellation
 import androidx.compose.foundation.gestures.awaitHorizontalTouchSlopOrCancellation
@@ -27,7 +28,6 @@
 import androidx.compose.foundation.gestures.awaitVerticalTouchSlopOrCancellation
 import androidx.compose.foundation.gestures.detectDragGestures
 import androidx.compose.foundation.gestures.detectDragGesturesAfterLongPress
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.detectHorizontalDragGestures
 import androidx.compose.foundation.gestures.detectVerticalDragGestures
 import androidx.compose.foundation.gestures.drag
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/FocusableSample.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/FocusableSample.kt
index e394ae4..c90595b 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/FocusableSample.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/FocusableSample.kt
@@ -20,8 +20,8 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.border
 import androidx.compose.foundation.focusGroup
-import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.focusable
+import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.interaction.collectIsFocusedAsState
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionSourceSample.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionSourceSample.kt
index 4b8fb36..ffe33b6 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionSourceSample.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionSourceSample.kt
@@ -18,17 +18,17 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.BorderStroke
-import androidx.compose.foundation.interaction.DragInteraction
-import androidx.compose.foundation.interaction.Interaction
-import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.LocalIndication
-import androidx.compose.foundation.interaction.PressInteraction
 import androidx.compose.foundation.border
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.draggable
 import androidx.compose.foundation.gestures.rememberDraggableState
 import androidx.compose.foundation.indication
+import androidx.compose.foundation.interaction.DragInteraction
+import androidx.compose.foundation.interaction.Interaction
+import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.interaction.PressInteraction
 import androidx.compose.foundation.interaction.collectIsDraggedAsState
 import androidx.compose.foundation.interaction.collectIsPressedAsState
 import androidx.compose.foundation.layout.Box
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
index b0028b7..9a1430e 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
@@ -17,17 +17,17 @@
 package androidx.compose.foundation.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.gestures.scrollBy
-import androidx.compose.foundation.gestures.animateScrollBy
 import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
+import androidx.compose.foundation.gestures.animateScrollBy
+import androidx.compose.foundation.gestures.scrollBy
 import androidx.compose.foundation.horizontalScroll
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectionSample.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectionSample.kt
index 2d93ad6..38973fb 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectionSample.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectionSample.kt
@@ -18,10 +18,10 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.layout.Column
-import androidx.compose.material.Text
-import androidx.compose.runtime.Composable
 import androidx.compose.foundation.text.selection.DisableSelection
 import androidx.compose.foundation.text.selection.SelectionContainer
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
 
 @Sampled
 @Composable
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TapGestureSamples.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TapGestureSamples.kt
index 9255c67..b78ea5d 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TapGestureSamples.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TapGestureSamples.kt
@@ -20,9 +20,9 @@
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitLongPressOrCancellation
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TransformGestureSamples.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TransformGestureSamples.kt
index d4940a6..f0c3785 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TransformGestureSamples.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/TransformGestureSamples.kt
@@ -18,14 +18,14 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.background
+import androidx.compose.foundation.gestures.awaitEachGesture
+import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.calculateCentroid
 import androidx.compose.foundation.gestures.calculateCentroidSize
 import androidx.compose.foundation.gestures.calculatePan
 import androidx.compose.foundation.gestures.calculateRotation
 import androidx.compose.foundation.gestures.calculateZoom
 import androidx.compose.foundation.gestures.detectTransformGestures
-import androidx.compose.foundation.gestures.awaitFirstDown
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.offset
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
index 599ccd0..1eb8626 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
@@ -19,8 +19,8 @@
 import android.os.Build
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.requiredSize
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.foundation.shape.GenericShape
 import androidx.compose.foundation.shape.RoundedCornerShape
@@ -54,13 +54,13 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
+import kotlin.math.floor
+import kotlin.math.roundToInt
 import org.junit.Assert.assertEquals
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.math.floor
-import kotlin.math.roundToInt
 
 @MediumTest
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt
index f852d45..364d71f 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt
@@ -19,9 +19,9 @@
 import android.os.Build
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.sizeIn
-import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.foundation.test.R
 import androidx.compose.runtime.mutableStateOf
@@ -41,8 +41,8 @@
 import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.asAndroidBitmap
 import androidx.compose.ui.graphics.drawscope.CanvasDrawScope
-import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.graphics.toPixelMap
 import androidx.compose.ui.layout.ContentScale
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt
index 64ba70c..6de2d3d 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt
@@ -37,6 +37,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
@@ -45,8 +47,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
index 35b14c8..7ae5f78a 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
@@ -49,6 +49,7 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.setValue
+import androidx.compose.testutils.first
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
@@ -2161,7 +2162,8 @@
             consumeScrollDelta = { it }
         )
         rule.setContentAndGetScope {
-            val modifier = Modifier.scrollable(controller, Orientation.Vertical) as InspectableValue
+            val modifier =
+                Modifier.scrollable(controller, Orientation.Vertical).first() as InspectableValue
             assertThat(modifier.nameFallback).isEqualTo("scrollable")
             assertThat(modifier.valueOverride).isNull()
             assertThat(modifier.inspectableElements.map { it.name }.asIterable()).containsExactly(
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SystemGestureExclusionTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SystemGestureExclusionTest.kt
index 17e0b89..8314fe4 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SystemGestureExclusionTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SystemGestureExclusionTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.foundation
 
+import android.graphics.Rect as AndroidRect
 import android.os.Build
 import android.view.View
 import android.view.ViewGroup
@@ -41,7 +42,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import android.graphics.Rect as AndroidRect
 
 /**
  * Testing the support for Android Views in Compose UI.
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitEachGestureTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitEachGestureTest.kt
index 592c0df..2107d07 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitEachGestureTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitEachGestureTest.kt
@@ -34,14 +34,14 @@
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.coroutineScope
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitTouchEventTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitTouchEventTest.kt
index 591e968..851df06 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitTouchEventTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/AwaitTouchEventTest.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.foundation.gesture
 
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitLongPressOrCancellation
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.text.BasicText
 import androidx.compose.ui.Modifier
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/ForEachGestureTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/ForEachGestureTest.kt
index 5660223..59f9952 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/ForEachGestureTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/ForEachGestureTest.kt
@@ -31,10 +31,6 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertWithMessage
-import org.junit.Assert.assertTrue
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.CancellationException
@@ -42,6 +38,10 @@
 import kotlinx.coroutines.awaitCancellation
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
+import org.junit.Assert.assertTrue
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @Suppress("DEPRECATION")
 @MediumTest
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyGridSnapFlingBehaviorTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyGridSnapFlingBehaviorTest.kt
index 39f045c..af3679b 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyGridSnapFlingBehaviorTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyGridSnapFlingBehaviorTest.kt
@@ -24,7 +24,10 @@
 import androidx.compose.foundation.gestures.snapping.SnapLayoutInfoProvider
 import androidx.compose.foundation.gestures.snapping.SnapPositionInLayout.Companion.CenterToCenter
 import androidx.compose.foundation.gestures.snapping.calculateDistanceToDesiredSnapPosition
+import androidx.compose.foundation.gestures.snapping.offsetOnMainAxis
 import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior
+import androidx.compose.foundation.gestures.snapping.singleAxisViewportSize
+import androidx.compose.foundation.gestures.snapping.sizeOnMainAxis
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.size
@@ -469,11 +472,16 @@
         var itemIndex = -1
         if (state == null) return -1
         var minDistance = Float.POSITIVE_INFINITY
+        val layoutInfo = state.layoutInfo
         (state.layoutInfo.visibleItemsInfo).forEach {
             val distance = calculateDistanceToDesiredSnapPosition(
-                state.layoutInfo,
-                it,
-                CenterToCenter
+                mainAxisViewPortSize = layoutInfo.singleAxisViewportSize,
+                beforeContentPadding = layoutInfo.beforeContentPadding,
+                afterContentPadding = layoutInfo.afterContentPadding,
+                itemSize = it.sizeOnMainAxis(orientation = layoutInfo.orientation),
+                itemOffset = it.offsetOnMainAxis(orientation = layoutInfo.orientation),
+                itemIndex = it.index,
+                snapPositionInLayout = CenterToCenter
             )
             if (abs(distance) < minDistance) {
                 minDistance = abs(distance)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyListSnapFlingBehaviorTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyListSnapFlingBehaviorTest.kt
index 3153d92..603bbf7 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyListSnapFlingBehaviorTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/gesture/snapping/LazyListSnapFlingBehaviorTest.kt
@@ -26,6 +26,7 @@
 import androidx.compose.foundation.gestures.snapping.SnapPositionInLayout.Companion.CenterToCenter
 import androidx.compose.foundation.gestures.snapping.calculateDistanceToDesiredSnapPosition
 import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior
+import androidx.compose.foundation.gestures.snapping.singleAxisViewportSize
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.size
@@ -457,11 +458,16 @@
         var itemIndex = -1
         if (state == null) return -1
         var minDistance = Float.POSITIVE_INFINITY
+        val layoutInfo = state.layoutInfo
         (state.layoutInfo.visibleItemsInfo).forEach {
             val distance = calculateDistanceToDesiredSnapPosition(
-                state.layoutInfo,
-                it,
-                CenterToCenter
+                mainAxisViewPortSize = layoutInfo.singleAxisViewportSize,
+                beforeContentPadding = layoutInfo.beforeContentPadding,
+                afterContentPadding = layoutInfo.afterContentPadding,
+                itemSize = it.size,
+                itemOffset = it.offset,
+                itemIndex = it.index,
+                snapPositionInLayout = CenterToCenter
             )
             if (abs(distance) < minDistance) {
                 minDistance = abs(distance)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
index 030e1d7..5885114 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
@@ -18,6 +18,8 @@
 
 import androidx.compose.animation.core.FiniteAnimationSpec
 import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.VisibilityThreshold
+import androidx.compose.animation.core.spring
 import androidx.compose.animation.core.tween
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.gestures.scrollBy
@@ -28,6 +30,8 @@
 import androidx.compose.foundation.layout.requiredHeightIn
 import androidx.compose.foundation.layout.requiredWidth
 import androidx.compose.foundation.layout.requiredWidthIn
+import androidx.compose.foundation.lazy.list.getValueAtFrame
+import androidx.compose.foundation.lazy.list.getVelocityAtFrame
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
@@ -2254,6 +2258,70 @@
         }
     }
 
+    @Test
+    fun interruptedSizeChange() {
+        var item0Size by mutableStateOf(itemSizeDp)
+        val animSpec = spring(visibilityThreshold = IntOffset.VisibilityThreshold)
+        rule.setContent {
+            LazyGrid(cells = 1) {
+                items(2, key = { it }) {
+                    Item(it, if (it == 0) item0Size else itemSizeDp, animSpec = animSpec)
+                }
+            }
+        }
+
+        rule.runOnUiThread {
+            item0Size = itemSize2Dp
+        }
+
+        rule.waitForIdle()
+        rule.mainClock.advanceTimeByFrame()
+        onAnimationFrame(duration = FrameDuration) { fraction ->
+            if (fraction == 0f) {
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, itemSize)
+                )
+            } else {
+                assertThat(fraction).isEqualTo(1f)
+                val valueAfterOneFrame =
+                    animSpec.getValueAtFrame(1, from = itemSize, to = itemSize2)
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, valueAfterOneFrame)
+                )
+            }
+        }
+
+        rule.runOnUiThread {
+            item0Size = 0.dp
+        }
+
+        rule.waitForIdle()
+        val startValue = animSpec.getValueAtFrame(2, from = itemSize, to = itemSize2)
+        val startVelocity = animSpec.getVelocityAtFrame(2, from = itemSize, to = itemSize2)
+        onAnimationFrame(duration = FrameDuration) { fraction ->
+            if (fraction == 0f) {
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, startValue)
+                )
+            } else {
+                assertThat(fraction).isEqualTo(1f)
+                val valueAfterThreeFrames = animSpec.getValueAtFrame(
+                    1,
+                    from = startValue,
+                    to = 0f,
+                    initialVelocity = startVelocity
+                )
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, valueAfterThreeFrames)
+                )
+            }
+        }
+    }
+
     private fun AxisOffset(crossAxis: Float, mainAxis: Float) =
         if (isVertical) Offset(crossAxis, mainAxis) else Offset(mainAxis, crossAxis)
 
@@ -2337,9 +2405,11 @@
         for (i in 0..duration step FrameDuration) {
             val fraction = i / duration.toFloat()
             onFrame(fraction)
-            rule.mainClock.advanceTimeBy(FrameDuration)
-            expectedTime += FrameDuration
-            assertThat(expectedTime).isEqualTo(rule.mainClock.currentTime)
+            if (i < duration) {
+                rule.mainClock.advanceTimeBy(FrameDuration)
+                expectedTime += FrameDuration
+                assertThat(expectedTime).isEqualTo(rule.mainClock.currentTime)
+            }
         }
     }
 
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridsIndexedTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridsIndexedTest.kt
index d6b35bd..53934b3 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridsIndexedTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridsIndexedTest.kt
@@ -17,8 +17,8 @@
 package androidx.compose.foundation.lazy.grid
 
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.text.BasicText
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.testTag
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyNestedScrollingTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyNestedScrollingTest.kt
index eba984d..25502d0 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyNestedScrollingTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyNestedScrollingTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.foundation.lazy.grid
 
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.ScrollableState
 import androidx.compose.foundation.gestures.scrollable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.requiredSize
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.geometry.Offset
-import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.requiredHeight
+import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.lazy.list.TestTouchSlop
 import androidx.compose.foundation.lazy.list.scrollBy
 import androidx.compose.foundation.lazy.list.setContentWithTestViewConfiguration
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyScrollTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyScrollTest.kt
index c868e03..fc52c37 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyScrollTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyScrollTest.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.width
 import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.unit.Dp
 import androidx.test.filters.MediumTest
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
index fa60831..2763637 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
@@ -18,6 +18,10 @@
 
 import androidx.compose.animation.core.FiniteAnimationSpec
 import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.SpringSpec
+import androidx.compose.animation.core.VectorConverter
+import androidx.compose.animation.core.VisibilityThreshold
+import androidx.compose.animation.core.spring
 import androidx.compose.animation.core.tween
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.gestures.scrollBy
@@ -65,14 +69,15 @@
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.util.concurrent.TimeUnit
+import kotlin.math.roundToInt
 import kotlinx.coroutines.runBlocking
 import org.junit.Assume.assumeTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
-import org.junit.runners.Parameterized
-import kotlin.math.roundToInt
 import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @LargeTest
 @RunWith(Parameterized::class)
@@ -1703,6 +1708,58 @@
         }
     }
 
+    @Test
+    fun interruptedSizeChange() {
+        var item0Size by mutableStateOf(itemSizeDp)
+        val animSpec = spring(visibilityThreshold = IntOffset.VisibilityThreshold)
+        rule.setContent {
+            LazyList {
+                items(2, key = { it }) {
+                    Item(it, if (it == 0) item0Size else itemSizeDp, animSpec = animSpec)
+                }
+            }
+        }
+
+        rule.runOnUiThread {
+            item0Size = itemSize2Dp
+        }
+
+        rule.waitForIdle()
+        rule.mainClock.advanceTimeByFrame()
+        onAnimationFrame(duration = FrameDuration) { fraction ->
+            if (fraction == 0f) {
+                assertPositions(0 to 0f, 1 to itemSize)
+            } else {
+                assertThat(fraction).isEqualTo(1f)
+                val valueAfterOneFrame =
+                    animSpec.getValueAtFrame(1, from = itemSize, to = itemSize2)
+                assertPositions(0 to 0f, 1 to valueAfterOneFrame, fraction = fraction)
+            }
+        }
+
+        rule.runOnUiThread {
+            item0Size = 0.dp
+        }
+
+        rule.waitForIdle()
+        val startValue = animSpec.getValueAtFrame(2, from = itemSize, to = itemSize2)
+        val startVelocity = animSpec.getVelocityAtFrame(2, from = itemSize, to = itemSize2)
+        onAnimationFrame(duration = FrameDuration) { fraction ->
+            if (fraction == 0f) {
+                assertPositions(0 to 0f, 1 to startValue)
+            } else {
+                assertThat(fraction).isEqualTo(1f)
+                val valueAfterThreeFrames = animSpec.getValueAtFrame(
+                    1,
+                    from = startValue,
+                    to = 0f,
+                    initialVelocity = startVelocity
+                )
+                assertPositions(0 to 0f, 1 to valueAfterThreeFrames)
+            }
+        }
+    }
+
     private fun assertPositions(
         vararg expected: Pair<Any, Float>,
         crossAxis: List<Pair<Any, Float>>? = null,
@@ -1777,9 +1834,11 @@
         for (i in 0..duration step FrameDuration) {
             val fraction = i / duration.toFloat()
             onFrame(fraction)
-            rule.mainClock.advanceTimeBy(FrameDuration)
-            expectedTime += FrameDuration
-            assertThat(expectedTime).isEqualTo(rule.mainClock.currentTime)
+            if (i < duration) {
+                rule.mainClock.advanceTimeBy(FrameDuration)
+                expectedTime += FrameDuration
+                assertThat(expectedTime).isEqualTo(rule.mainClock.currentTime)
+            }
         }
     }
 
@@ -1923,3 +1982,51 @@
     End,
     Center
 }
+
+internal fun SpringSpec<IntOffset>.getValueAtFrame(
+    frameCount: Int,
+    from: Float,
+    to: Float,
+    initialVelocity: IntOffset = IntOffset.Zero
+): Float {
+    val frameInNanos = TimeUnit.MILLISECONDS.toNanos(FrameDuration)
+    val vectorized = vectorize(converter = IntOffset.VectorConverter)
+    return IntOffset.VectorConverter.convertFromVector(
+        vectorized.getValueFromNanos(
+            playTimeNanos = frameInNanos * frameCount,
+            initialValue = IntOffset.VectorConverter.convertToVector(
+                IntOffset(0, from.toInt())
+            ),
+            targetValue = IntOffset.VectorConverter.convertToVector(
+                IntOffset(0, to.toInt())
+            ),
+            initialVelocity = IntOffset.VectorConverter.convertToVector(
+                initialVelocity
+            )
+        )
+    ).y.toFloat()
+}
+
+internal fun SpringSpec<IntOffset>.getVelocityAtFrame(
+    frameCount: Int,
+    from: Float,
+    to: Float,
+    initialVelocity: IntOffset = IntOffset.Zero
+): IntOffset {
+    val frameInNanos = TimeUnit.MILLISECONDS.toNanos(FrameDuration)
+    val vectorized = vectorize(converter = IntOffset.VectorConverter)
+    return IntOffset.VectorConverter.convertFromVector(
+        vectorized.getVelocityFromNanos(
+            playTimeNanos = frameInNanos * frameCount,
+            initialValue = IntOffset.VectorConverter.convertToVector(
+                IntOffset(0, from.toInt())
+            ),
+            targetValue = IntOffset.VectorConverter.convertToVector(
+                IntOffset(0, to.toInt())
+            ),
+            initialVelocity = IntOffset.VectorConverter.convertToVector(
+                initialVelocity
+            )
+        )
+    )
+}
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
index a743ac3c..1b9ebac 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.LazyListState
+import androidx.compose.foundation.lazy.items
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.DisposableEffect
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListsIndexedTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListsIndexedTest.kt
index df2d615..41fc6d4 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListsIndexedTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListsIndexedTest.kt
@@ -21,10 +21,10 @@
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.LazyList
 import androidx.compose.foundation.lazy.LazyListScope
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyNestedScrollingTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyNestedScrollingTest.kt
index 78a5fdc..cac03bd 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyNestedScrollingTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyNestedScrollingTest.kt
@@ -16,17 +16,17 @@
 
 package androidx.compose.foundation.lazy.list
 
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.ScrollableState
 import androidx.compose.foundation.gestures.scrollable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.requiredSize
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.geometry.Offset
-import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.LazyRow
 import androidx.compose.foundation.lazy.items
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyScrollTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyScrollTest.kt
index bca1dc3..14fe3b1 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyScrollTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyScrollTest.kt
@@ -19,24 +19,26 @@
 import androidx.compose.animation.core.FloatSpringSpec
 import androidx.compose.foundation.AutoTestFrameClock
 import androidx.compose.foundation.BaseLazyLayoutTestWithOrientation.Companion.FrameDuration
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.animateScrollBy
+import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.width
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.LazyListState
 import androidx.compose.foundation.lazy.LazyRow
 import androidx.compose.foundation.lazy.rememberLazyListState
+import androidx.compose.runtime.Composable
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.unit.Dp
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.util.concurrent.TimeUnit
+import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
@@ -47,8 +49,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(Parameterized::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridAnimateItemPlacementTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridAnimateItemPlacementTest.kt
index 984c7d4..41f1c73f 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridAnimateItemPlacementTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridAnimateItemPlacementTest.kt
@@ -18,6 +18,8 @@
 
 import androidx.compose.animation.core.FiniteAnimationSpec
 import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.VisibilityThreshold
+import androidx.compose.animation.core.spring
 import androidx.compose.animation.core.tween
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.gestures.scrollBy
@@ -27,6 +29,8 @@
 import androidx.compose.foundation.layout.requiredHeightIn
 import androidx.compose.foundation.layout.requiredWidth
 import androidx.compose.foundation.layout.requiredWidthIn
+import androidx.compose.foundation.lazy.list.getValueAtFrame
+import androidx.compose.foundation.lazy.list.getVelocityAtFrame
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
@@ -1992,6 +1996,70 @@
         }
     }
 
+    @Test
+    fun interruptedSizeChange() {
+        var item0Size by mutableStateOf(itemSizeDp)
+        val animSpec = spring(visibilityThreshold = IntOffset.VisibilityThreshold)
+        rule.setContent {
+            LazyStaggeredGrid(cells = 1) {
+                items(2, key = { it }) {
+                    Item(it, if (it == 0) item0Size else itemSizeDp, animSpec = animSpec)
+                }
+            }
+        }
+
+        rule.runOnUiThread {
+            item0Size = itemSize2Dp
+        }
+
+        rule.waitForIdle()
+        rule.mainClock.advanceTimeByFrame()
+        onAnimationFrame(duration = FrameDuration) { fraction ->
+            if (fraction == 0f) {
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, itemSize)
+                )
+            } else {
+                assertThat(fraction).isEqualTo(1f)
+                val valueAfterOneFrame =
+                    animSpec.getValueAtFrame(1, from = itemSize, to = itemSize2)
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, valueAfterOneFrame)
+                )
+            }
+        }
+
+        rule.runOnUiThread {
+            item0Size = 0.dp
+        }
+
+        rule.waitForIdle()
+        val startValue = animSpec.getValueAtFrame(2, from = itemSize, to = itemSize2)
+        val startVelocity = animSpec.getVelocityAtFrame(2, from = itemSize, to = itemSize2)
+        onAnimationFrame(duration = FrameDuration) { fraction ->
+            if (fraction == 0f) {
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, startValue)
+                )
+            } else {
+                assertThat(fraction).isEqualTo(1f)
+                val valueAfterThreeFrames = animSpec.getValueAtFrame(
+                    1,
+                    from = startValue,
+                    to = 0f,
+                    initialVelocity = startVelocity
+                )
+                assertPositions(
+                    0 to AxisOffset(0f, 0f),
+                    1 to AxisOffset(0f, valueAfterThreeFrames)
+                )
+            }
+        }
+    }
+
     private fun AxisOffset(crossAxis: Float, mainAxis: Float) =
         if (isVertical) Offset(crossAxis, mainAxis) else Offset(mainAxis, crossAxis)
 
@@ -2075,9 +2143,11 @@
         for (i in 0..duration step FrameDuration) {
             val fraction = i / duration.toFloat()
             onFrame(fraction)
-            rule.mainClock.advanceTimeBy(FrameDuration)
-            expectedTime += FrameDuration
-            assertThat(expectedTime).isEqualTo(rule.mainClock.currentTime)
+            if (i < duration) {
+                rule.mainClock.advanceTimeBy(FrameDuration)
+                expectedTime += FrameDuration
+                assertThat(expectedTime).isEqualTo(rule.mainClock.currentTime)
+            }
         }
     }
 
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridReverseLayoutTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridReverseLayoutTest.kt
index 6af08de..344ebe3 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridReverseLayoutTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridReverseLayoutTest.kt
@@ -19,15 +19,15 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Box
-import androidx.compose.ui.Modifier
 import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalLayoutDirection
-import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.dp
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/relocation/BringIntoViewRequesterViewIntegrationTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/relocation/BringIntoViewRequesterViewIntegrationTest.kt
index d3a38ce..37436c9 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/relocation/BringIntoViewRequesterViewIntegrationTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/relocation/BringIntoViewRequesterViewIntegrationTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.foundation.relocation
 
-import android.graphics.Rect as AndroidRect
 import android.content.Context
+import android.graphics.Rect as AndroidRect
 import android.view.View
 import android.widget.FrameLayout
 import androidx.compose.foundation.ExperimentalFoundationApi
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/ClickableTextTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/ClickableTextTest.kt
index b23e468..d48e823 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/ClickableTextTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/ClickableTextTest.kt
@@ -29,6 +29,9 @@
 import androidx.compose.ui.text.AnnotatedString
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.argWhere
 import org.mockito.kotlin.inOrder
@@ -36,9 +39,6 @@
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.verifyNoMoreInteractions
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldSoftWrapTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldSoftWrapTest.kt
index bba26f4..e96325c 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldSoftWrapTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextFieldSoftWrapTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.foundation.text
 
-import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.platform.LocalDensity
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextInlineContentTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextInlineContentTest.kt
index 0226267..3d76e18 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextInlineContentTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/CoreTextInlineContentTest.kt
@@ -43,11 +43,11 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextDelegateIntegrationTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextDelegateIntegrationTest.kt
index 3120601..ecc70a7 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextDelegateIntegrationTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextDelegateIntegrationTest.kt
@@ -28,13 +28,13 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import kotlin.math.roundToInt
 
 @OptIn(InternalFoundationTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextFieldInteractionsTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextFieldInteractionsTest.kt
index dc5e79b..1970055 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextFieldInteractionsTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextFieldInteractionsTest.kt
@@ -16,12 +16,12 @@
 
 package androidx.compose.foundation.text
 
+import androidx.compose.foundation.focusable
 import androidx.compose.foundation.interaction.DragInteraction
 import androidx.compose.foundation.interaction.FocusInteraction
 import androidx.compose.foundation.interaction.Interaction
 import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.interaction.PressInteraction
-import androidx.compose.foundation.focusable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.runtime.mutableStateOf
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextLayoutResultIntegrationTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextLayoutResultIntegrationTest.kt
index b6a2ee9..2a3379c 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextLayoutResultIntegrationTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/TextLayoutResultIntegrationTest.kt
@@ -28,13 +28,13 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.floor
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import kotlin.math.floor
 
 @OptIn(InternalFoundationTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/modifiers/TextLayoutResultIntegrationTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/modifiers/TextLayoutResultIntegrationTest.kt
index 1735715..e86416a 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/modifiers/TextLayoutResultIntegrationTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/modifiers/TextLayoutResultIntegrationTest.kt
@@ -29,14 +29,14 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
+import com.google.common.truth.IntegerSubject
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.floor
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.google.common.truth.IntegerSubject
-import kotlin.math.floor
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/MultiWidgetSelectionDelegateTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/MultiWidgetSelectionDelegateTest.kt
index 05fbc24..e601a24 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/MultiWidgetSelectionDelegateTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/MultiWidgetSelectionDelegateTest.kt
@@ -40,10 +40,10 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerFocusTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerFocusTest.kt
index 4abc2b5..540a13b 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerFocusTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerFocusTest.kt
@@ -57,13 +57,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
 import java.util.concurrent.CountDownLatch
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerTest.kt
index 54927cb..7096695 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionContainerTest.kt
@@ -79,15 +79,15 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
 import java.util.concurrent.CountDownLatch
 import kotlin.math.max
 import kotlin.math.sign
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlePopupPositionTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlePopupPositionTest.kt
index 69c23d1..55b4d0e 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlePopupPositionTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlePopupPositionTest.kt
@@ -44,6 +44,8 @@
 import androidx.test.espresso.matcher.BoundedMatcher
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.hamcrest.CoreMatchers
 import org.hamcrest.Description
 import org.hamcrest.Matcher
@@ -51,8 +53,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlesTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlesTest.kt
index d4c185a..8e8cdac 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlesTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlesTest.kt
@@ -37,14 +37,14 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldDefaultWidthTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldDefaultWidthTest.kt
index 6ff37fe..bc01efe 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldDefaultWidthTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldDefaultWidthTest.kt
@@ -36,11 +36,11 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.ceil
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.ceil
-import kotlin.math.roundToInt
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldOnValueChangeTextFieldValueTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldOnValueChangeTextFieldValueTest.kt
index adda314..ed5ac51 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldOnValueChangeTextFieldValueTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldOnValueChangeTextFieldValueTest.kt
@@ -41,6 +41,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.argumentCaptor
 import org.mockito.kotlin.clearInvocations
@@ -48,10 +52,6 @@
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt
index 990b749..e697e3c 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt
@@ -150,12 +150,6 @@
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import org.mockito.kotlin.any
-import org.mockito.kotlin.argumentCaptor
-import org.mockito.kotlin.atLeastOnce
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
 import kotlin.test.assertFailsWith
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
@@ -163,6 +157,12 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.atLeastOnce
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
@@ -1441,6 +1441,43 @@
             assertThat(dividerSize!!.height).isEqualTo(size!!.height)
         }
     }
+
+    @Test
+    fun decorationBox_togglingInnerTextField() {
+        var value by mutableStateOf("")
+        val decorationTag = "decorationTag"
+        rule.setContent {
+            Column {
+                BasicTextField(
+                    value = value,
+                    onValueChange = { value = it },
+                    modifier = Modifier.fillMaxWidth().testTag(Tag),
+                    decorationBox = {
+                        // the core text field is at the very bottom
+                        if (value.isEmpty()) {
+                            BasicText("test", modifier = Modifier.testTag(decorationTag))
+                        } else {
+                            it()
+                        }
+                    }
+                )
+            }
+        }
+
+        rule.onNodeWithTag(decorationTag, true).assertExists()
+
+        rule.onNode(hasSetTextAction()).performTextInput("hello")
+
+        rule.onNodeWithTag(decorationTag, true).assertDoesNotExist()
+
+        rule.onNode(hasSetTextAction()).performTextClearance()
+
+        rule.onNodeWithTag(decorationTag, true).assertExists()
+
+        rule.onNode(hasSetTextAction()).performTextInput("hello2")
+
+        rule.onNodeWithTag(decorationTag, true).assertDoesNotExist()
+    }
 }
 
 private fun SemanticsNodeInteraction.assertEditableTextEquals(
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldUndoTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldUndoTest.kt
index 3ad3067..4d82c56 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldUndoTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldUndoTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.compose.foundation.textfield
 
-import androidx.compose.ui.input.key.KeyEvent as ComposeKeyEvent
 import android.view.KeyEvent
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.text.BasicTextField
@@ -27,6 +26,7 @@
 import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.input.key.Key
+import androidx.compose.ui.input.key.KeyEvent as ComposeKeyEvent
 import androidx.compose.ui.input.key.nativeKeyCode
 import androidx.compose.ui.platform.LocalTextInputService
 import androidx.compose.ui.test.hasSetTextAction
@@ -36,10 +36,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/AndroidOverscroll.kt b/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/AndroidOverscroll.kt
index 0df1c34..48fccdc 100644
--- a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/AndroidOverscroll.kt
+++ b/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/AndroidOverscroll.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.EdgeEffectCompat.onAbsorbCompat
 import androidx.compose.foundation.EdgeEffectCompat.onPullDistanceCompat
 import androidx.compose.foundation.EdgeEffectCompat.onReleaseWithOppositeDelta
-import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitEachGesture
+import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.neverEqualPolicy
diff --git a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/gestures/AndroidScrollable.android.kt b/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/gestures/AndroidScrollable.android.kt
index dfff476..3c4a1c1 100644
--- a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/gestures/AndroidScrollable.android.kt
+++ b/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/gestures/AndroidScrollable.android.kt
@@ -17,15 +17,15 @@
 package androidx.compose.foundation.gestures
 
 import androidx.compose.foundation.fastFold
-import androidx.compose.runtime.Composable
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.input.pointer.PointerEvent
+import androidx.compose.ui.node.CompositionLocalConsumerModifierNode
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
 
-@Composable
-internal actual fun platformScrollConfig(): ScrollConfig = AndroidConfig
+internal actual fun CompositionLocalConsumerModifierNode.platformScrollConfig(): ScrollConfig =
+    AndroidConfig
 
 private object AndroidConfig : ScrollConfig {
     override fun Density.calculateMouseWheelScroll(event: PointerEvent, bounds: IntSize): Offset {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Background.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Background.kt
index 7fb11a3..83ed93c 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Background.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Background.kt
@@ -16,7 +16,6 @@
 
 package androidx.compose.foundation
 
-import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.graphics.Brush
@@ -25,6 +24,7 @@
 import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.graphics.drawOutline
+import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.node.DrawModifierNode
 import androidx.compose.ui.node.ModifierNodeElement
 import androidx.compose.ui.platform.InspectorInfo
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Border.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Border.kt
index e188941..c95216d 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Border.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Border.kt
@@ -17,9 +17,9 @@
 package androidx.compose.foundation
 
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.CacheDrawModifierNode
 import androidx.compose.ui.draw.CacheDrawScope
 import androidx.compose.ui.draw.DrawResult
-import androidx.compose.ui.draw.CacheDrawModifierNode
 import androidx.compose.ui.geometry.CornerRadius
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.RoundRect
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/FocusedBounds.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/FocusedBounds.kt
index 9ea3c65..16a49d1 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/FocusedBounds.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/FocusedBounds.kt
@@ -68,7 +68,7 @@
     }
 }
 
-private class FocusedBoundsObserverNode(
+internal class FocusedBoundsObserverNode(
     var onPositioned: (LayoutCoordinates?) -> Unit
 ) : Modifier.Node(), ModifierLocalModifierNode, (LayoutCoordinates?) -> Unit {
     private val parent: ((LayoutCoordinates?) -> Unit)?
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Image.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Image.kt
index 48a21a8..64b4556 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Image.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Image.kt
@@ -20,7 +20,6 @@
 import androidx.compose.runtime.NonRestartableComposable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.clipToBounds
 import androidx.compose.ui.draw.paint
@@ -29,12 +28,13 @@
 import androidx.compose.ui.graphics.FilterQuality
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.graphics.drawscope.DrawScope.Companion.DefaultFilterQuality
-import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.graphics.vector.rememberVectorPainter
 import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.semantics.contentDescription
 import androidx.compose.ui.semantics.role
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Indication.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Indication.kt
index e15bfe4..d0ab687 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Indication.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Indication.kt
@@ -25,11 +25,11 @@
 import androidx.compose.runtime.State
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.staticCompositionLocalOf
-import androidx.compose.ui.graphics.drawscope.ContentDrawScope
-import androidx.compose.ui.draw.DrawModifier
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
+import androidx.compose.ui.draw.DrawModifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.platform.debugInspectorInfo
 
 /**
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/MutatorMutex.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/MutatorMutex.kt
index 07cfb24..ee7b694 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/MutatorMutex.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/MutatorMutex.kt
@@ -54,6 +54,19 @@
 }
 
 /**
+ * Used in place of the standard Job cancellation pathway to avoid reflective
+ * javaClass.simpleName lookups to build the exception message and stack trace collection.
+ * Remove if these are changed in kotlinx.coroutines.
+ */
+private class MutationInterruptedException : CancellationException("Mutation interrupted") {
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
+}
+
+/**
  * Mutual exclusion for UI state mutation over time.
  *
  * [mutate] permits interruptible state mutation over time using a standard [MutatePriority].
@@ -73,7 +86,7 @@
     private class Mutator(val priority: MutatePriority, val job: Job) {
         fun canInterrupt(other: Mutator) = priority >= other.priority
 
-        fun cancel() = job.cancel()
+        fun cancel() = job.cancel(MutationInterruptedException())
     }
 
     private val currentMutator = AtomicReference<Mutator?>(null)
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue.kt
index 6d1a818..3507443 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueue.kt
@@ -16,7 +16,7 @@
 
 package androidx.compose.foundation.gestures
 
-import androidx.compose.foundation.gestures.ContentInViewModifier.Request
+import androidx.compose.foundation.gestures.ContentInViewNode.Request
 import androidx.compose.runtime.collection.mutableVectorOf
 import androidx.compose.ui.geometry.Rect
 import kotlin.contracts.ExperimentalContracts
@@ -25,7 +25,7 @@
 import kotlinx.coroutines.CancellationException
 
 /**
- * Ongoing requests from [ContentInViewModifier.bringChildIntoView], with the invariant that it is
+ * Ongoing requests from [ContentInViewNode.bringChildIntoView], with the invariant that it is
  * always sorted by overlapping order: each item's bounds completely overlaps the next item.
  *
  * Requests are enqueued by calling [enqueue], which inserts the request at the correct position
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ContentInViewModifier.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ContentInViewNode.kt
similarity index 94%
rename from compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ContentInViewModifier.kt
rename to compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ContentInViewNode.kt
index 49929c3..bf1ffd3 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ContentInViewModifier.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ContentInViewNode.kt
@@ -19,24 +19,20 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.gestures.Orientation.Horizontal
 import androidx.compose.foundation.gestures.Orientation.Vertical
-import androidx.compose.foundation.onFocusedBoundsChanged
 import androidx.compose.foundation.relocation.BringIntoViewRequester
 import androidx.compose.foundation.relocation.BringIntoViewResponder
-import androidx.compose.foundation.relocation.bringIntoViewResponder
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.layout.LayoutCoordinates
-import androidx.compose.ui.layout.OnPlacedModifier
-import androidx.compose.ui.layout.OnRemeasuredModifier
+import androidx.compose.ui.node.LayoutAwareModifierNode
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.toSize
 import kotlin.math.abs
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineName
-import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.job
@@ -55,20 +51,14 @@
  * the [ScrollableState] to handle [BringIntoViewRequester] requests and keep the currently-focused
  * child in view when the viewport shrinks.
  *
- * Instances of this class should not be directly added to the modifier chain, instead use the
- * [modifier] property since this class relies on some modifiers that must be specified as modifier
- * factory functions and can't be implemented as interfaces.
  */
 // TODO(b/242732126) Make this logic reusable for TV's mario scrolling implementation.
 @OptIn(ExperimentalFoundationApi::class)
-internal class ContentInViewModifier(
-    private val scope: CoroutineScope,
-    private val orientation: Orientation,
-    private val scrollState: ScrollableState,
-    private val reverseDirection: Boolean
-) : BringIntoViewResponder,
-    OnRemeasuredModifier,
-    OnPlacedModifier {
+internal class ContentInViewNode(
+    private var orientation: Orientation,
+    private var scrollState: ScrollableState,
+    private var reverseDirection: Boolean
+) : Modifier.Node(), BringIntoViewResponder, LayoutAwareModifierNode {
 
     /**
      * Ongoing requests from [bringChildIntoView], with the invariant that it is always sorted by
@@ -106,13 +96,6 @@
     private var isAnimationRunning = false
     private val animationState = UpdatableAnimationState()
 
-    val modifier: Modifier = this
-        .onFocusedBoundsChanged {
-            focusedChild = it
-            if (DEBUG) println("[$TAG] new focused child: ${getFocusedChildBounds()}")
-        }
-        .bringIntoViewResponder(this)
-
     override fun calculateRectForParent(localRect: Rect): Rect {
         check(viewportSize != IntSize.Zero) {
             "Expected BringIntoViewRequester to not be used before parents are placed."
@@ -137,6 +120,10 @@
         }
     }
 
+    fun onFocusBoundsChanged(newBounds: LayoutCoordinates?) {
+        focusedChild = newBounds
+    }
+
     override fun onPlaced(coordinates: LayoutCoordinates) {
         this.coordinates = coordinates
     }
@@ -184,7 +171,7 @@
 
         if (DEBUG) println("[$TAG] launchAnimation")
 
-        scope.launch(start = CoroutineStart.UNDISPATCHED) {
+        coroutineScope.launch(start = CoroutineStart.UNDISPATCHED) {
             var cancellationException: CancellationException? = null
             val animationJob = coroutineContext.job
 
@@ -403,6 +390,12 @@
         Vertical -> height.compareTo(other.height)
     }
 
+    fun update(orientation: Orientation, state: ScrollableState, reverseDirection: Boolean) {
+        this.orientation = orientation
+        this.scrollState = state
+        this.reverseDirection = reverseDirection
+    }
+
     /**
      * A request to bring some [Rect] in the scrollable viewport.
      *
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ForEachGesture.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ForEachGesture.kt
index 4901cab..fde5758 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ForEachGesture.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ForEachGesture.kt
@@ -19,9 +19,9 @@
 import androidx.compose.ui.input.pointer.PointerEventPass
 import androidx.compose.ui.input.pointer.PointerInputScope
 import androidx.compose.ui.util.fastAny
+import kotlin.coroutines.cancellation.CancellationException
 import kotlinx.coroutines.currentCoroutineContext
 import kotlinx.coroutines.isActive
-import kotlin.coroutines.cancellation.CancellationException
 
 /**
  * A gesture was canceled and cannot continue, likely because another gesture has taken
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt
index c387135..fb5dc19 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt
@@ -20,43 +20,49 @@
 import androidx.compose.animation.core.DecayAnimationSpec
 import androidx.compose.animation.core.animateDecay
 import androidx.compose.animation.rememberSplineBasedDecay
+import androidx.compose.animation.splineBasedDecay
 import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.FocusedBoundsObserverNode
 import androidx.compose.foundation.MutatePriority
 import androidx.compose.foundation.OverscrollEffect
-import androidx.compose.foundation.focusGroup
 import androidx.compose.foundation.gestures.Orientation.Horizontal
 import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.relocation.BringIntoViewResponderNode
 import androidx.compose.foundation.rememberOverscrollEffect
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.State
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.runtime.rememberUpdatedState
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.MotionDurationScale
-import androidx.compose.ui.composed
+import androidx.compose.ui.focus.FocusProperties
+import androidx.compose.ui.focus.FocusPropertiesModifierNode
+import androidx.compose.ui.focus.FocusTargetNode
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
 import androidx.compose.ui.input.nestedscroll.NestedScrollDispatcher
 import androidx.compose.ui.input.nestedscroll.NestedScrollSource
 import androidx.compose.ui.input.nestedscroll.NestedScrollSource.Companion.Drag
 import androidx.compose.ui.input.nestedscroll.NestedScrollSource.Companion.Fling
-import androidx.compose.ui.input.nestedscroll.nestedScroll
+import androidx.compose.ui.input.nestedscroll.nestedScrollModifierNode
 import androidx.compose.ui.input.pointer.AwaitPointerEventScope
 import androidx.compose.ui.input.pointer.PointerEvent
-import androidx.compose.ui.input.pointer.PointerEventPass
 import androidx.compose.ui.input.pointer.PointerEventType
+import androidx.compose.ui.input.pointer.PointerInputChange
 import androidx.compose.ui.input.pointer.PointerType
 import androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNode
-import androidx.compose.ui.modifier.ModifierLocalProvider
+import androidx.compose.ui.modifier.ModifierLocalMap
+import androidx.compose.ui.modifier.ModifierLocalModifierNode
+import androidx.compose.ui.modifier.modifierLocalMapOf
 import androidx.compose.ui.modifier.modifierLocalOf
+import androidx.compose.ui.node.CompositionLocalConsumerModifierNode
 import androidx.compose.ui.node.DelegatingNode
 import androidx.compose.ui.node.ModifierNodeElement
-import androidx.compose.ui.node.PointerInputModifierNode
+import androidx.compose.ui.node.ObserverModifierNode
+import androidx.compose.ui.node.currentValueOf
+import androidx.compose.ui.node.observeReads
 import androidx.compose.ui.platform.InspectorInfo
+import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalLayoutDirection
-import androidx.compose.ui.platform.debugInspectorInfo
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
@@ -148,8 +154,78 @@
     reverseDirection: Boolean = false,
     flingBehavior: FlingBehavior? = null,
     interactionSource: MutableInteractionSource? = null
-): Modifier = composed(
-    inspectorInfo = debugInspectorInfo {
+): Modifier = this then ScrollableElement(
+    state,
+    orientation,
+    overscrollEffect,
+    enabled,
+    reverseDirection,
+    flingBehavior,
+    interactionSource
+)
+
+@OptIn(ExperimentalFoundationApi::class)
+private class ScrollableElement(
+    val state: ScrollableState,
+    val orientation: Orientation,
+    val overscrollEffect: OverscrollEffect?,
+    val enabled: Boolean,
+    val reverseDirection: Boolean,
+    val flingBehavior: FlingBehavior?,
+    val interactionSource: MutableInteractionSource?
+) : ModifierNodeElement<ScrollableNode>() {
+    override fun create(): ScrollableNode {
+        return ScrollableNode(
+            state,
+            orientation,
+            overscrollEffect,
+            enabled,
+            reverseDirection,
+            flingBehavior,
+            interactionSource
+        )
+    }
+
+    override fun update(node: ScrollableNode) {
+        node.update(
+            state,
+            orientation,
+            overscrollEffect,
+            enabled,
+            reverseDirection,
+            flingBehavior,
+            interactionSource
+        )
+    }
+
+    override fun hashCode(): Int {
+        var result = state.hashCode()
+        result = 31 * result + orientation.hashCode()
+        result = 31 * result + overscrollEffect.hashCode()
+        result = 31 * result + enabled.hashCode()
+        result = 31 * result + reverseDirection.hashCode()
+        result = 31 * result + flingBehavior.hashCode()
+        result = 31 * result + interactionSource.hashCode()
+        return result
+    }
+
+    override fun equals(other: Any?): Boolean {
+        if (this === other) return true
+
+        if (other !is ScrollableElement) return false
+
+        if (state != other.state) return false
+        if (orientation != other.orientation) return false
+        if (overscrollEffect != other.overscrollEffect) return false
+        if (enabled != other.enabled) return false
+        if (reverseDirection != other.reverseDirection) return false
+        if (flingBehavior != other.flingBehavior) return false
+        if (interactionSource != other.interactionSource) return false
+
+        return true
+    }
+
+    override fun InspectorInfo.inspectableProperties() {
         name = "scrollable"
         properties["orientation"] = orientation
         properties["state"] = state
@@ -158,29 +234,135 @@
         properties["reverseDirection"] = reverseDirection
         properties["flingBehavior"] = flingBehavior
         properties["interactionSource"] = interactionSource
-    },
-    factory = {
-        val coroutineScope = rememberCoroutineScope()
-        val keepFocusedChildInViewModifier =
-            remember(coroutineScope, orientation, state, reverseDirection) {
-                ContentInViewModifier(coroutineScope, orientation, state, reverseDirection)
-            }
-
-        Modifier
-            .focusGroup()
-            .then(keepFocusedChildInViewModifier.modifier)
-            .pointerScrollable(
-                interactionSource,
-                orientation,
-                reverseDirection,
-                state,
-                flingBehavior,
-                overscrollEffect,
-                enabled
-            )
-            .then(if (enabled) ModifierLocalScrollableContainerProvider else Modifier)
     }
-)
+}
+
+@OptIn(ExperimentalFoundationApi::class)
+private class ScrollableNode(
+    private var state: ScrollableState,
+    private var orientation: Orientation,
+    private var overscrollEffect: OverscrollEffect?,
+    private var enabled: Boolean,
+    private var reverseDirection: Boolean,
+    private var flingBehavior: FlingBehavior?,
+    private var interactionSource: MutableInteractionSource?
+) : DelegatingNode(), ObserverModifierNode, CompositionLocalConsumerModifierNode,
+    FocusPropertiesModifierNode {
+
+    val scrollConfig: ScrollConfig = platformScrollConfig()
+
+    val nestedScrollDispatcher = NestedScrollDispatcher()
+
+    // Place holder fling behavior, we'll initialize it when the density is available.
+    val defaultFlingBehavior = DefaultFlingBehavior(splineBasedDecay(UnityDensity))
+
+    val scrollingLogic = ScrollingLogic(
+        scrollableState = state,
+        orientation = orientation,
+        overscrollEffect = overscrollEffect,
+        reverseDirection = reverseDirection,
+        flingBehavior = flingBehavior ?: defaultFlingBehavior,
+        nestedScrollDispatcher = nestedScrollDispatcher,
+    )
+
+    val nestedScrollConnection =
+        ScrollableNestedScrollConnection(enabled = enabled, scrollingLogic = scrollingLogic)
+
+    val contentInViewNode = delegate(ContentInViewNode(orientation, state, reverseDirection))
+    val scrollableContainer = delegate(ModifierLocalScrollableContainerProvider(enabled))
+
+    init {
+        /**
+         * Nested scrolling
+         */
+        delegate(nestedScrollModifierNode(nestedScrollConnection, nestedScrollDispatcher))
+
+        /**
+         * Focus scrolling
+         */
+        delegate(FocusTargetNode())
+        delegate(BringIntoViewResponderNode(contentInViewNode))
+        delegate(FocusedBoundsObserverNode { contentInViewNode.onFocusBoundsChanged(it) })
+    }
+
+    /**
+     * Pointer gesture handling
+     */
+    val scrollableGesturesNode = delegate(
+        ScrollableGesturesNode(
+            interactionSource = interactionSource,
+            orientation = orientation,
+            enabled = enabled,
+            nestedScrollDispatcher = nestedScrollDispatcher,
+            scrollConfig = scrollConfig,
+            scrollLogic = scrollingLogic
+        )
+    )
+
+    fun update(
+        state: ScrollableState,
+        orientation: Orientation,
+        overscrollEffect: OverscrollEffect?,
+        enabled: Boolean,
+        reverseDirection: Boolean,
+        flingBehavior: FlingBehavior?,
+        interactionSource: MutableInteractionSource?
+    ) {
+
+        if (this.enabled != enabled) { // enabled changed
+            nestedScrollConnection.enabled = enabled
+            scrollableContainer.enabled = enabled
+        }
+        // a new fling behavior was set, change the resolved one.
+        val resolvedFlingBehavior = flingBehavior ?: defaultFlingBehavior
+
+        scrollingLogic.update(
+            scrollableState = state,
+            orientation = orientation,
+            overscrollEffect = overscrollEffect,
+            reverseDirection = reverseDirection,
+            flingBehavior = resolvedFlingBehavior,
+            nestedScrollDispatcher = nestedScrollDispatcher
+        )
+
+        scrollableGesturesNode.update(
+            interactionSource = interactionSource,
+            orientation = orientation,
+            scrollConfig = scrollConfig,
+            enabled = enabled
+        )
+
+        contentInViewNode.update(orientation, state, reverseDirection)
+
+        this.state = state
+        this.orientation = orientation
+        this.overscrollEffect = overscrollEffect
+        this.enabled = enabled
+        this.reverseDirection = reverseDirection
+        this.flingBehavior = flingBehavior
+        this.interactionSource = interactionSource
+    }
+
+    @Suppress("SuspiciousCompositionLocalModifierRead")
+    override fun onAttach() {
+        updateDefaultFlingBehavior()
+        observeReads { currentValueOf(LocalDensity) } // monitor change in Density
+    }
+
+    override fun onObservedReadsChanged() {
+        // if density changes, update the default fling behavior.
+        updateDefaultFlingBehavior()
+    }
+
+    private fun updateDefaultFlingBehavior() {
+        val density = currentValueOf(LocalDensity)
+        defaultFlingBehavior.flingDecay = splineBasedDecay(density)
+    }
+
+    override fun applyFocusProperties(focusProperties: FocusProperties) {
+        focusProperties.canFocus = false
+    }
+}
 
 /**
  * Contains the default values used by [scrollable]
@@ -239,98 +421,81 @@
     fun Density.calculateMouseWheelScroll(event: PointerEvent, bounds: IntSize): Offset
 }
 
-@Composable
-internal expect fun platformScrollConfig(): ScrollConfig
+internal expect fun CompositionLocalConsumerModifierNode.platformScrollConfig(): ScrollConfig
 
-@Suppress("ComposableModifierFactory")
-@Composable
-@OptIn(ExperimentalFoundationApi::class)
-private fun Modifier.pointerScrollable(
-    interactionSource: MutableInteractionSource?,
-    orientation: Orientation,
-    reverseDirection: Boolean,
-    controller: ScrollableState,
-    flingBehavior: FlingBehavior?,
-    overscrollEffect: OverscrollEffect?,
-    enabled: Boolean
-): Modifier {
-    val fling = flingBehavior ?: ScrollableDefaults.flingBehavior()
-    val nestedScrollDispatcher = remember { mutableStateOf(NestedScrollDispatcher()) }
-    val scrollLogic = rememberUpdatedState(
-        ScrollingLogic(
-            orientation,
-            reverseDirection,
-            nestedScrollDispatcher,
-            controller,
-            fling,
-            overscrollEffect
-        )
-    )
-    val nestedScrollConnection = remember(enabled) {
-        scrollableNestedScrollConnection(scrollLogic, enabled)
+/**
+ * A node that detects and processes all scrollable gestures.
+ */
+private class ScrollableGesturesNode(
+    val scrollLogic: ScrollingLogic,
+    val orientation: Orientation,
+    val enabled: Boolean,
+    val nestedScrollDispatcher: NestedScrollDispatcher,
+    val interactionSource: MutableInteractionSource?,
+    var scrollConfig: ScrollConfig
+) : DelegatingNode() {
+
+    val draggableState = ScrollDraggableState(scrollLogic)
+    private val startDragImmediately = { scrollLogic.shouldScrollImmediately() }
+    private val onDragStopped: suspend CoroutineScope.(velocity: Velocity) -> Unit = { velocity ->
+        nestedScrollDispatcher.coroutineScope.launch {
+            scrollLogic.onDragStopped(velocity)
+        }
     }
-    val draggableState = remember { ScrollDraggableState(scrollLogic) }
-    val scrollConfig = platformScrollConfig()
 
-    return this
-        .then(DraggableElement(
-            state = draggableState,
+    val draggableGesturesNode = delegate(
+        DraggableNode(
+            draggableState,
             orientation = orientation,
             enabled = enabled,
             interactionSource = interactionSource,
             reverseDirection = false,
-            startDragImmediately = { scrollLogic.value.shouldScrollImmediately() },
+            startDragImmediately = startDragImmediately,
+            onDragStopped = onDragStopped,
+            canDrag = CanDragCalculation,
+            onDragStarted = NoOpOnDragStarted
+        )
+    )
+
+    val mouseWheelScrollNode = delegate(MouseWheelScrollNode(scrollLogic, scrollConfig))
+
+    fun update(
+        scrollConfig: ScrollConfig,
+        orientation: Orientation,
+        enabled: Boolean,
+        interactionSource: MutableInteractionSource?,
+    ) {
+
+        // update draggable node
+        draggableGesturesNode.update(
+            draggableState,
+            orientation = orientation,
+            enabled = enabled,
+            interactionSource = interactionSource,
+            reverseDirection = false,
+            startDragImmediately = startDragImmediately,
             onDragStarted = NoOpOnDragStarted,
-            onDragStopped = { velocity ->
-                nestedScrollDispatcher.value.coroutineScope.launch {
-                    scrollLogic.value.onDragStopped(velocity)
-                }
-            },
-            canDrag = { down -> down.type != PointerType.Mouse }
-        ))
-        .then(MouseWheelScrollElement(scrollLogic, scrollConfig))
-        .nestedScroll(nestedScrollConnection, nestedScrollDispatcher.value)
+            onDragStopped = onDragStopped,
+            canDrag = CanDragCalculation
+        )
+
+        // update mouse wheel scroll
+        if (this.scrollConfig != scrollConfig) {
+            mouseWheelScrollNode.update(scrollConfig)
+        }
+        this.scrollConfig = scrollConfig
+    }
 }
 
-// {} isn't being memoized for us, so extract this to make sure we compare equally on recomposition.
+private val CanDragCalculation: (PointerInputChange) -> Boolean =
+    { down -> down.type != PointerType.Mouse }
+
 private val NoOpOnDragStarted: suspend CoroutineScope.(startedPosition: Offset) -> Unit = {}
 
-private class MouseWheelScrollElement(
-    val scrollingLogicState: State<ScrollingLogic>,
-    val mouseWheelScrollConfig: ScrollConfig
-) : ModifierNodeElement<MouseWheelScrollNode>() {
-    override fun create(): MouseWheelScrollNode {
-        return MouseWheelScrollNode(scrollingLogicState, mouseWheelScrollConfig)
-    }
-
-    override fun update(node: MouseWheelScrollNode) {
-        node.scrollingLogicState = scrollingLogicState
-        node.mouseWheelScrollConfig = mouseWheelScrollConfig
-    }
-
-    override fun hashCode(): Int {
-        var result = scrollingLogicState.hashCode()
-        result = 31 * result + mouseWheelScrollConfig.hashCode()
-        return result
-    }
-
-    override fun equals(other: Any?): Boolean {
-        if (this === other) return true
-        if (other !is MouseWheelScrollElement) return false
-
-        if (scrollingLogicState != other.scrollingLogicState) return false
-        if (mouseWheelScrollConfig != other.mouseWheelScrollConfig) return false
-        return true
-    }
-
-    override fun InspectorInfo.inspectableProperties() = Unit
-}
-
-// TODO(levima) Save the ScrollingLogic value in the ScrollableNode so we won't need a State here.
 private class MouseWheelScrollNode(
-    var scrollingLogicState: State<ScrollingLogic>,
-    var mouseWheelScrollConfig: ScrollConfig
-) : DelegatingNode(), PointerInputModifierNode {
+    private val scrollingLogic: ScrollingLogic,
+    private var mouseWheelScrollConfig: ScrollConfig
+) : DelegatingNode() {
 
     private val pointerInputNode = delegate(SuspendingPointerInputModifierNode {
         awaitPointerEventScope {
@@ -339,7 +504,7 @@
                 if (event.changes.fastAll { !it.isConsumed }) {
                     with(mouseWheelScrollConfig) {
                         val scrollAmount = calculateMouseWheelScroll(event, size)
-                        with(scrollingLogicState.value) {
+                        with(scrollingLogic) {
                             val delta = scrollAmount.toFloat().reverseIfNeeded()
                             val consumedDelta = scrollableState.dispatchRawDelta(delta)
                             if (consumedDelta != 0f) {
@@ -352,16 +517,9 @@
         }
     })
 
-    override fun onPointerEvent(
-        pointerEvent: PointerEvent,
-        pass: PointerEventPass,
-        bounds: IntSize
-    ) {
-        pointerInputNode.onPointerEvent(pointerEvent, pass, bounds)
-    }
-
-    override fun onCancelPointerInput() {
-        pointerInputNode.onCancelPointerInput()
+    fun update(mouseWheelScrollConfig: ScrollConfig) {
+        this.mouseWheelScrollConfig = mouseWheelScrollConfig
+        pointerInputNode.resetPointerInputHandler()
     }
 }
 
@@ -373,14 +531,18 @@
     return event
 }
 
+/**
+ * Holds all scrolling related logic: controls nested scrolling, flinging, overscroll and delta
+ * dispatching.
+ */
 @OptIn(ExperimentalFoundationApi::class)
 private class ScrollingLogic(
-    val orientation: Orientation,
-    val reverseDirection: Boolean,
-    val nestedScrollDispatcher: State<NestedScrollDispatcher>,
-    val scrollableState: ScrollableState,
-    val flingBehavior: FlingBehavior,
-    val overscrollEffect: OverscrollEffect?
+    var scrollableState: ScrollableState,
+    private var orientation: Orientation,
+    private var overscrollEffect: OverscrollEffect?,
+    private var reverseDirection: Boolean,
+    private var flingBehavior: FlingBehavior,
+    private var nestedScrollDispatcher: NestedScrollDispatcher,
 ) {
     private val isNestedFlinging = mutableStateOf(false)
     fun Float.toOffset(): Offset = when {
@@ -415,7 +577,6 @@
         val scrollDelta = availableDelta.singleAxisOffset()
 
         val performScroll: (Offset) -> Offset = { delta ->
-            val nestedScrollDispatcher = nestedScrollDispatcher.value
             val preConsumedByParent = nestedScrollDispatcher
                 .dispatchPreScroll(delta, source)
 
@@ -434,8 +595,9 @@
             preConsumedByParent + axisConsumed + parentConsumed
         }
 
-        return if (overscrollEffect != null && shouldDispatchOverscroll) {
-            overscrollEffect.applyToScroll(scrollDelta, source, performScroll)
+        val overscroll = overscrollEffect
+        return if (overscroll != null && shouldDispatchOverscroll) {
+            overscroll.applyToScroll(scrollDelta, source, performScroll)
         } else {
             performScroll(scrollDelta)
         }
@@ -461,11 +623,11 @@
 
         val performFling: suspend (Velocity) -> Velocity = { velocity ->
             val preConsumedByParent = nestedScrollDispatcher
-                .value.dispatchPreFling(velocity)
+                .dispatchPreFling(velocity)
             val available = velocity - preConsumedByParent
             val velocityLeft = doFlingAnimation(available)
             val consumedPost =
-                nestedScrollDispatcher.value.dispatchPostFling(
+                nestedScrollDispatcher.dispatchPostFling(
                     (available - velocityLeft),
                     velocityLeft
                 )
@@ -473,8 +635,9 @@
             velocity - totalLeft
         }
 
-        if (overscrollEffect != null && shouldDispatchOverscroll) {
-            overscrollEffect.applyToFling(availableVelocity, performFling)
+        val overscroll = overscrollEffect
+        if (overscroll != null && shouldDispatchOverscroll) {
+            overscroll.applyToFling(availableVelocity, performFling)
         } else {
             performFling(availableVelocity)
         }
@@ -494,6 +657,7 @@
                     return outerScopeScroll.invoke(pixels.toOffset()).toFloat()
                 }
             }
+
             with(scope) {
                 with(flingBehavior) {
                     result = result.update(
@@ -513,15 +677,31 @@
     fun registerNestedFling(isFlinging: Boolean) {
         isNestedFlinging.value = isFlinging
     }
+
+    fun update(
+        scrollableState: ScrollableState,
+        orientation: Orientation,
+        overscrollEffect: OverscrollEffect?,
+        reverseDirection: Boolean,
+        flingBehavior: FlingBehavior,
+        nestedScrollDispatcher: NestedScrollDispatcher,
+    ) {
+        this.scrollableState = scrollableState
+        this.orientation = orientation
+        this.overscrollEffect = overscrollEffect
+        this.reverseDirection = reverseDirection
+        this.flingBehavior = flingBehavior
+        this.nestedScrollDispatcher = nestedScrollDispatcher
+    }
 }
 
 private class ScrollDraggableState(
-    val scrollLogic: State<ScrollingLogic>
+    var scrollLogic: ScrollingLogic
 ) : DraggableState, DragScope {
     var latestScrollScope: ScrollScope = NoOpScrollScope
 
     override fun dragBy(pixels: Float) {
-        with(scrollLogic.value) {
+        with(scrollLogic) {
             with(latestScrollScope) {
                 dispatchScroll(pixels.toOffset(), Drag)
             }
@@ -529,14 +709,14 @@
     }
 
     override suspend fun drag(dragPriority: MutatePriority, block: suspend DragScope.() -> Unit) {
-        scrollLogic.value.scrollableState.scroll(dragPriority) {
+        scrollLogic.scrollableState.scroll(dragPriority) {
             latestScrollScope = this
             block()
         }
     }
 
     override fun dispatchRawDelta(delta: Float) {
-        with(scrollLogic.value) { performRawScroll(delta.toOffset()) }
+        with(scrollLogic) { performRawScroll(delta.toOffset()) }
     }
 }
 
@@ -544,14 +724,14 @@
     override fun scrollBy(pixels: Float): Float = pixels
 }
 
-private fun scrollableNestedScrollConnection(
-    scrollLogic: State<ScrollingLogic>,
-    enabled: Boolean
-): NestedScrollConnection = object : NestedScrollConnection {
+private class ScrollableNestedScrollConnection(
+    val scrollingLogic: ScrollingLogic,
+    var enabled: Boolean
+) : NestedScrollConnection {
     override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
         // child will fling, set
         if (source == Fling) {
-            scrollLogic.value.registerNestedFling(true)
+            scrollingLogic.registerNestedFling(true)
         }
         return Offset.Zero
     }
@@ -561,7 +741,7 @@
         available: Offset,
         source: NestedScrollSource
     ): Offset = if (enabled) {
-        scrollLogic.value.performRawScroll(available)
+        scrollingLogic.performRawScroll(available)
     } else {
         Offset.Zero
     }
@@ -571,19 +751,19 @@
         available: Velocity
     ): Velocity {
         return if (enabled) {
-            val velocityLeft = scrollLogic.value.doFlingAnimation(available)
+            val velocityLeft = scrollingLogic.doFlingAnimation(available)
             available - velocityLeft
         } else {
             Velocity.Zero
         }.also {
             // Flinging child finished flinging, reset
-            scrollLogic.value.registerNestedFling(false)
+            scrollingLogic.registerNestedFling(false)
         }
     }
 }
 
 internal class DefaultFlingBehavior(
-    private val flingDecay: DecayAnimationSpec<Float>,
+    var flingDecay: DecayAnimationSpec<Float>,
     private val motionDurationScale: MotionDurationScale = DefaultScrollMotionDurationScale
 ) : FlingBehavior {
 
@@ -624,14 +804,32 @@
  */
 internal val ModifierLocalScrollableContainer = modifierLocalOf { false }
 
-private object ModifierLocalScrollableContainerProvider : ModifierLocalProvider<Boolean> {
-    override val key = ModifierLocalScrollableContainer
-    override val value = true
+internal val NoOpFlingBehavior = object : FlingBehavior {
+    override suspend fun ScrollScope.performFling(initialVelocity: Float): Float = 0f
 }
 
 private const val DefaultScrollMotionDurationScaleFactor = 1f
-
 internal val DefaultScrollMotionDurationScale = object : MotionDurationScale {
     override val scaleFactor: Float
         get() = DefaultScrollMotionDurationScaleFactor
+}
+
+private class ModifierLocalScrollableContainerProvider(var enabled: Boolean) :
+    ModifierLocalModifierNode,
+    Modifier.Node() {
+    private val modifierLocalMap =
+        modifierLocalMapOf(entry = ModifierLocalScrollableContainer to true)
+    override val providedValues: ModifierLocalMap
+        get() = if (enabled) {
+            modifierLocalMap
+        } else {
+            modifierLocalMapOf()
+        }
+}
+
+private val UnityDensity = object : Density {
+    override val density: Float
+        get() = 1f
+    override val fontScale: Float
+        get() = 1f
 }
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt
index 33c8439..e56a7a43 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/ScrollableState.kt
@@ -18,12 +18,12 @@
 
 import androidx.compose.foundation.MutatePriority
 import androidx.compose.foundation.MutatorMutex
+import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberUpdatedState
 import kotlinx.coroutines.coroutineScope
-import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 
 /**
  * An object representing something that can be scrolled. This interface is implemented by states
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TapGestureDetector.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TapGestureDetector.kt
index 2614f34..4a19ae0 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TapGestureDetector.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TapGestureDetector.kt
@@ -16,11 +16,12 @@
 
 package androidx.compose.foundation.gestures
 
+import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.input.pointer.AwaitPointerEventScope
-import androidx.compose.ui.input.pointer.PointerEventTimeoutCancellationException
 import androidx.compose.ui.input.pointer.PointerEvent
 import androidx.compose.ui.input.pointer.PointerEventPass
+import androidx.compose.ui.input.pointer.PointerEventTimeoutCancellationException
 import androidx.compose.ui.input.pointer.PointerInputChange
 import androidx.compose.ui.input.pointer.PointerInputScope
 import androidx.compose.ui.input.pointer.changedToDown
@@ -35,7 +36,6 @@
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.sync.Mutex
-import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 
 /**
  * Receiver scope for [detectTapGestures]'s `onPress` lambda. This offers
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TransformableState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TransformableState.kt
index 8c196ac..39b957b 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TransformableState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/TransformableState.kt
@@ -24,13 +24,13 @@
 import androidx.compose.animation.core.animateTo
 import androidx.compose.foundation.MutatePriority
 import androidx.compose.foundation.MutatorMutex
+import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberUpdatedState
 import androidx.compose.ui.geometry.Offset
 import kotlinx.coroutines.coroutineScope
-import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 
 /**
  * State of [transformable]. Allows for a granular control of how different gesture
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyGridSnapLayoutInfoProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyGridSnapLayoutInfoProvider.kt
index 515dfc3..962b9d9 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyGridSnapLayoutInfoProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyGridSnapLayoutInfoProvider.kt
@@ -78,7 +78,15 @@
 
         layoutInfo.visibleItemsInfo.fastForEach { item ->
             val distance =
-                calculateDistanceToDesiredSnapPosition(layoutInfo, item, positionInLayout)
+                calculateDistanceToDesiredSnapPosition(
+                    mainAxisViewPortSize = layoutInfo.singleAxisViewportSize,
+                    beforeContentPadding = layoutInfo.beforeContentPadding,
+                    afterContentPadding = layoutInfo.afterContentPadding,
+                    itemSize = item.sizeOnMainAxis(orientation = layoutInfo.orientation),
+                    itemOffset = item.offsetOnMainAxis(orientation = layoutInfo.orientation),
+                    itemIndex = item.index,
+                    snapPositionInLayout = positionInLayout
+                )
 
             // Find item that is closest to the center
             if (distance <= 0 && distance > distanceFromItemBeforeTarget) {
@@ -112,32 +120,14 @@
     }
 }
 
-@OptIn(ExperimentalFoundationApi::class)
-internal fun Density.calculateDistanceToDesiredSnapPosition(
-    layoutInfo: LazyGridLayoutInfo,
-    item: LazyGridItemInfo,
-    positionInLayout: SnapPositionInLayout = SnapPositionInLayout.CenterToCenter
-): Float {
-
-    val containerSize =
-        with(layoutInfo) { singleAxisViewportSize - beforeContentPadding - afterContentPadding }
-
-    val desiredDistance = with(positionInLayout) {
-        position(containerSize, item.sizeOnMainAxis(layoutInfo.orientation), item.index)
-    }
-
-    val itemCurrentPosition = item.offsetOnMainAxis(layoutInfo.orientation)
-    return itemCurrentPosition - desiredDistance.toFloat()
-}
-
-private val LazyGridLayoutInfo.singleAxisViewportSize: Int
+internal val LazyGridLayoutInfo.singleAxisViewportSize: Int
     get() = if (orientation == Orientation.Vertical) {
         viewportSize.height
     } else {
         viewportSize.width
     }
 
-private fun LazyGridItemInfo.sizeOnMainAxis(orientation: Orientation): Int {
+internal fun LazyGridItemInfo.sizeOnMainAxis(orientation: Orientation): Int {
     return if (orientation == Orientation.Vertical) {
         size.height
     } else {
@@ -145,7 +135,7 @@
     }
 }
 
-private fun LazyGridItemInfo.offsetOnMainAxis(orientation: Orientation): Int {
+internal fun LazyGridItemInfo.offsetOnMainAxis(orientation: Orientation): Int {
     return if (orientation == Orientation.Vertical) {
         offset.y
     } else {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyListSnapLayoutInfoProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyListSnapLayoutInfoProvider.kt
index fece172..5df071b 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyListSnapLayoutInfoProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/LazyListSnapLayoutInfoProvider.kt
@@ -22,7 +22,6 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.gestures.FlingBehavior
 import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.foundation.lazy.LazyListItemInfo
 import androidx.compose.foundation.lazy.LazyListLayoutInfo
 import androidx.compose.foundation.lazy.LazyListState
 import androidx.compose.runtime.Composable
@@ -71,7 +70,15 @@
 
         layoutInfo.visibleItemsInfo.fastForEach { item ->
             val offset =
-                calculateDistanceToDesiredSnapPosition(layoutInfo, item, positionInLayout)
+                calculateDistanceToDesiredSnapPosition(
+                    mainAxisViewPortSize = layoutInfo.singleAxisViewportSize,
+                    beforeContentPadding = layoutInfo.beforeContentPadding,
+                    afterContentPadding = layoutInfo.afterContentPadding,
+                    itemSize = item.size,
+                    itemOffset = item.offset,
+                    itemIndex = item.index,
+                    snapPositionInLayout = positionInLayout
+                )
 
             // Find item that is closest to the center
             if (offset <= 0 && offset > lowerBoundOffset) {
@@ -110,22 +117,5 @@
     return rememberSnapFlingBehavior(snappingLayout)
 }
 
-@OptIn(ExperimentalFoundationApi::class)
-internal fun Density.calculateDistanceToDesiredSnapPosition(
-    layoutInfo: LazyListLayoutInfo,
-    item: LazyListItemInfo,
-    positionInLayout: SnapPositionInLayout
-): Float {
-    val containerSize =
-        with(layoutInfo) { singleAxisViewportSize - beforeContentPadding - afterContentPadding }
-
-    val desiredDistance = with(positionInLayout) {
-        position(containerSize, item.size, item.index)
-    }.toFloat()
-
-    val itemCurrentPosition = item.offset
-    return itemCurrentPosition - desiredDistance
-}
-
-private val LazyListLayoutInfo.singleAxisViewportSize: Int
+internal val LazyListLayoutInfo.singleAxisViewportSize: Int
     get() = if (orientation == Orientation.Vertical) viewportSize.height else viewportSize.width
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/SnapPositionInLayout.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/SnapPositionInLayout.kt
index 3b3f94f..6a16ff9 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/SnapPositionInLayout.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/snapping/SnapPositionInLayout.kt
@@ -39,4 +39,23 @@
         val CenterToCenter =
             SnapPositionInLayout { layoutSize, itemSize, _ -> layoutSize / 2 - itemSize / 2 }
     }
+}
+
+@OptIn(ExperimentalFoundationApi::class)
+internal fun Density.calculateDistanceToDesiredSnapPosition(
+    mainAxisViewPortSize: Int,
+    beforeContentPadding: Int,
+    afterContentPadding: Int,
+    itemSize: Int,
+    itemOffset: Int,
+    itemIndex: Int,
+    snapPositionInLayout: SnapPositionInLayout
+): Float {
+    val containerSize = mainAxisViewPortSize - beforeContentPadding - afterContentPadding
+
+    val desiredDistance = with(snapPositionInLayout) {
+        position(containerSize, itemSize, itemIndex)
+    }.toFloat()
+
+    return itemOffset - desiredDistance
 }
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItemScope.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItemScope.kt
index c1c594e..adba3f6 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItemScope.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItemScope.kt
@@ -21,11 +21,11 @@
 import androidx.compose.animation.core.VisibilityThreshold
 import androidx.compose.animation.core.spring
 import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 import androidx.compose.runtime.Stable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.IntOffset
-import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
 
 /**
  * Receiver scope being used by the item content parameter of LazyColumn/Row.
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListBeyondBoundsModifier.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListBeyondBoundsModifier.kt
index 6def944..5ef94fe 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListBeyondBoundsModifier.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListBeyondBoundsModifier.kt
@@ -17,8 +17,8 @@
 package androidx.compose.foundation.lazy
 
 import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsState
 import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsModifierLocal
+import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsState
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListLayoutInfo.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListLayoutInfo.kt
index be71365..37612eb 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListLayoutInfo.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListLayoutInfo.kt
@@ -17,8 +17,8 @@
 package androidx.compose.foundation.lazy
 
 import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.ui.unit.IntSize
 import androidx.compose.foundation.internal.JvmDefaultWithCompatibility
+import androidx.compose.ui.unit.IntSize
 
 /**
  * Contains useful information about the currently displayed layout state of lazy lists like
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt
index 193dfe2..73e2a21 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridState.kt
@@ -25,8 +25,8 @@
 import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.lazy.layout.AwaitFirstLayoutModifier
 import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsInfo
-import androidx.compose.foundation.lazy.layout.LazyLayoutPrefetchState
 import androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList
+import androidx.compose.foundation.lazy.layout.LazyLayoutPrefetchState
 import androidx.compose.foundation.lazy.layout.animateScrollToItem
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Stable
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode.kt
index 5623db2..dc2161f 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutAnimateItemModifierNode.kt
@@ -92,10 +92,17 @@
                 } else {
                     placementAnimationSpec
                 }
-                val startVelocity = placementDeltaAnimation.velocity
-                placementDeltaAnimation.snapTo(totalDelta)
-                placementDeltaAnimation.animateTo(IntOffset.Zero, spec, startVelocity) {
-                    placementDelta = value
+                if (!placementDeltaAnimation.isRunning) {
+                    // if not running we can snap to the initial value and animate to zero
+                    placementDeltaAnimation.snapTo(totalDelta)
+                }
+                // if animation is not currently running the target will be zero, otherwise
+                // we have to continue the animation from the current value, but keep the needed
+                // total delta for the new animation.
+                val animationTarget = placementDeltaAnimation.value - totalDelta
+                placementDeltaAnimation.animateTo(animationTarget, spec) {
+                    // placementDelta is calculated as if we always animate to target equal to zero
+                    placementDelta = value - animationTarget
                 }
 
                 isAnimationInProgress = false
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt
index 35b1261..84f9df6 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt
@@ -26,9 +26,9 @@
 import androidx.compose.foundation.lazy.layout.LazyAnimateScrollScope
 import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsInfo
 import androidx.compose.foundation.lazy.layout.LazyLayoutItemProvider
+import androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList
 import androidx.compose.foundation.lazy.layout.LazyLayoutPrefetchState
 import androidx.compose.foundation.lazy.layout.LazyLayoutPrefetchState.PrefetchHandle
-import androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList
 import androidx.compose.foundation.lazy.layout.animateScrollToItem
 import androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridLaneInfo.Companion.Unset
 import androidx.compose.runtime.Composable
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt
index 23c078e..96e93f6 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt
@@ -31,6 +31,7 @@
 import androidx.compose.foundation.gestures.snapping.MinFlingVelocityDp
 import androidx.compose.foundation.gestures.snapping.SnapFlingBehavior
 import androidx.compose.foundation.gestures.snapping.SnapLayoutInfoProvider
+import androidx.compose.foundation.gestures.snapping.calculateDistanceToDesiredSnapPosition
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Stable
@@ -673,9 +674,13 @@
 
             layoutInfo.visiblePagesInfo.fastForEach { page ->
                 val offset = calculateDistanceToDesiredSnapPosition(
-                    layoutInfo,
-                    page,
-                    SnapAlignmentStartToStart
+                    mainAxisViewPortSize = layoutInfo.mainAxisViewportSize,
+                    beforeContentPadding = layoutInfo.beforeContentPadding,
+                    afterContentPadding = layoutInfo.afterContentPadding,
+                    itemSize = layoutInfo.pageSize,
+                    itemOffset = page.offset,
+                    itemIndex = page.index,
+                    snapPositionInLayout = SnapAlignmentStartToStart
                 )
 
                 // Find page that is closest to the snap position, but before it
@@ -870,26 +875,6 @@
     })
 }
 
-@OptIn(ExperimentalFoundationApi::class)
-internal fun Density.calculateDistanceToDesiredSnapPosition(
-    layoutInfo: PagerLayoutInfo,
-    page: PageInfo,
-    positionInLayout: Density.(layoutSize: Float, itemSize: Float) -> Float
-): Float {
-    val containerSize =
-        with(layoutInfo) { mainAxisViewportSize - beforeContentPadding - afterContentPadding }
-
-    val desiredDistance =
-        positionInLayout(containerSize.toFloat(), layoutInfo.pageSize.toFloat())
-
-    val itemCurrentPosition = page.offset
-    return itemCurrentPosition - desiredDistance
-}
-
-@OptIn(ExperimentalFoundationApi::class)
-private val PagerLayoutInfo.mainAxisViewportSize: Int
-    get() = if (orientation == Orientation.Vertical) viewportSize.height else viewportSize.width
-
 private const val LowVelocityAnimationDefaultDuration = 500
 
 private const val DEBUG = false
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerBeyondBoundsModifier.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerBeyondBoundsModifier.kt
index 7c9deaf..84d4297 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerBeyondBoundsModifier.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerBeyondBoundsModifier.kt
@@ -17,8 +17,8 @@
 
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsState
 import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsModifierLocal
+import androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsState
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerLayoutInfo.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerLayoutInfo.kt
index 10a25d2..27009c4 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerLayoutInfo.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerLayoutInfo.kt
@@ -34,4 +34,8 @@
     val viewportSize: IntSize
     val orientation: Orientation
     val reverseLayout: Boolean
-}
\ No newline at end of file
+}
+
+@ExperimentalFoundationApi
+internal val PagerLayoutInfo.mainAxisViewportSize: Int
+    get() = if (orientation == Orientation.Vertical) viewportSize.height else viewportSize.width
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerMeasure.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerMeasure.kt
index 68693ac..2cc255c 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerMeasure.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerMeasure.kt
@@ -19,6 +19,7 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.fastFilter
 import androidx.compose.foundation.gestures.Orientation
+import androidx.compose.foundation.gestures.snapping.calculateDistanceToDesiredSnapPosition
 import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy
 import androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScope
 import androidx.compose.ui.Alignment
@@ -349,6 +350,7 @@
                 else
                     currentMainAxisOffset
             )
+
         val layoutHeight = constraints
             .constrainHeight(
                 if (orientation == Orientation.Vertical)
@@ -381,12 +383,13 @@
         val closestPageToSnapPosition = visiblePagesInfo.fastMaxBy {
             -abs(
                 calculateDistanceToDesiredSnapPosition(
-                    viewPortSize,
-                    beforeContentPadding,
-                    afterContentPadding,
-                    pageAvailableSize,
-                    it,
-                    SnapAlignmentStartToStart
+                    mainAxisViewPortSize = viewPortSize,
+                    beforeContentPadding = beforeContentPadding,
+                    afterContentPadding = afterContentPadding,
+                    itemSize = pageAvailableSize,
+                    itemOffset = it.offset,
+                    itemIndex = it.index,
+                    snapPositionInLayout = SnapAlignmentStartToStart
                 )
             )
         }
@@ -415,24 +418,6 @@
     }
 }
 
-@OptIn(ExperimentalFoundationApi::class)
-private fun Density.calculateDistanceToDesiredSnapPosition(
-    axisViewPortSize: Int,
-    beforeContentPadding: Int,
-    afterContentPadding: Int,
-    pageSize: Int,
-    page: PageInfo,
-    positionInLayout: Density.(layoutSize: Float, itemSize: Float) -> Float
-): Float {
-    val containerSize = axisViewPortSize - beforeContentPadding - afterContentPadding
-
-    val desiredDistance =
-        positionInLayout(containerSize.toFloat(), pageSize.toFloat())
-
-    val itemCurrentPosition = page.offset
-    return itemCurrentPosition - desiredDistance
-}
-
 private fun createPagesAfterList(
     currentLastPage: Int,
     pagesCount: Int,
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
index 715fe0a..ea799c2 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
@@ -25,6 +25,8 @@
 import androidx.compose.foundation.gestures.ScrollScope
 import androidx.compose.foundation.gestures.ScrollableState
 import androidx.compose.foundation.gestures.animateScrollBy
+import androidx.compose.foundation.gestures.snapping.SnapPositionInLayout
+import androidx.compose.foundation.gestures.snapping.calculateDistanceToDesiredSnapPosition
 import androidx.compose.foundation.interaction.InteractionSource
 import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.lazy.layout.AwaitFirstLayoutModifier
@@ -259,9 +261,13 @@
     private val distanceToSnapPosition: Float
         get() = layoutInfo.closestPageToSnapPosition?.let {
             density.calculateDistanceToDesiredSnapPosition(
-                layoutInfo,
-                it,
-                SnapAlignmentStartToStart
+                mainAxisViewPortSize = layoutInfo.mainAxisViewportSize,
+                beforeContentPadding = layoutInfo.beforeContentPadding,
+                afterContentPadding = layoutInfo.afterContentPadding,
+                itemSize = layoutInfo.pageSize,
+                itemOffset = it.offset,
+                itemIndex = it.index,
+                snapPositionInLayout = SnapAlignmentStartToStart
             )
         } ?: 0f
 
@@ -665,8 +671,8 @@
     override val fontScale: Float = 1f
 }
 
-internal val SnapAlignmentStartToStart: Density.(layoutSize: Float, itemSize: Float) -> Float =
-    { _, _ -> 0f }
+@OptIn(ExperimentalFoundationApi::class)
+internal val SnapAlignmentStartToStart = SnapPositionInLayout { _, _, _ -> 0 }
 
 private const val DEBUG = false
 private inline fun debugLog(generateMsg: () -> String) {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/BringIntoViewResponder.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/BringIntoViewResponder.kt
index 15c631e..71820cc 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/BringIntoViewResponder.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/BringIntoViewResponder.kt
@@ -132,7 +132,7 @@
  * for recursively propagating requests up the responder chain.
  */
 @OptIn(ExperimentalFoundationApi::class)
-private class BringIntoViewResponderNode(
+internal class BringIntoViewResponderNode(
     var responder: BringIntoViewResponder
 ) : BringIntoViewChildNode(), BringIntoViewParent {
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Selectable.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Selectable.kt
index 5b3869a..fcdba64 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Selectable.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/selection/Selectable.kt
@@ -17,9 +17,9 @@
 package androidx.compose.foundation.selection
 
 import androidx.compose.foundation.Indication
-import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.LocalIndication
 import androidx.compose.foundation.clickable
+import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
index 49de4bc..6be6e4b 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
@@ -81,7 +81,6 @@
 import androidx.compose.ui.semantics.disabled
 import androidx.compose.ui.semantics.editableText
 import androidx.compose.ui.semantics.getTextLayoutResult
-import androidx.compose.ui.semantics.imeAction
 import androidx.compose.ui.semantics.insertTextAtCursor
 import androidx.compose.ui.semantics.onClick
 import androidx.compose.ui.semantics.onLongClick
@@ -410,7 +409,6 @@
     val isPassword = visualTransformation is PasswordVisualTransformation
     val semanticsModifier = Modifier.semantics(true) {
         // focused semantics are handled by Modifier.focusable()
-        this.imeAction = imeOptions.imeAction
         this.editableText = transformedText.text
         this.textSelectionRange = value.selection
         if (!enabled) this.disabled()
@@ -503,7 +501,7 @@
                 false
             }
         }
-        performImeAction {
+        performImeAction(imeOptions.imeAction) {
             // This will perform the appropriate default action if no handler has been specified, so
             // as far as the platform is concerned, we always handle the action and never want to
             // defer to the default _platform_ implementation.
@@ -782,8 +780,17 @@
      */
     var minHeightForSingleLineField by mutableStateOf(0.dp)
 
-    /** The last layout coordinates for the Text's layout, used by selection */
-    var layoutCoordinates: LayoutCoordinates? = null
+    /**
+     * The last layout coordinates for the inner text field LayoutNode, used by selection and
+     * notifyFocusedRect. Since this layoutCoordinates only used for relative position calculation,
+     * we are guarding ourselves from using it when it's not attached.
+     */
+    private var _layoutCoordinates: LayoutCoordinates? = null
+    var layoutCoordinates: LayoutCoordinates?
+        get() = _layoutCoordinates?.takeIf { it.isAttached }
+        set(value) {
+            _layoutCoordinates = value
+        }
 
     /**
      * You should be using proxy type [TextLayoutResultProxy] if you need to translate touch
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/KeyboardActionRunner.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/KeyboardActionRunner.kt
index 96051ac..1bf9ca7 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/KeyboardActionRunner.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/KeyboardActionRunner.kt
@@ -20,13 +20,13 @@
 import androidx.compose.ui.focus.FocusManager
 import androidx.compose.ui.text.input.ImeAction
 import androidx.compose.ui.text.input.ImeAction.Companion.Default
-import androidx.compose.ui.text.input.ImeAction.Companion.None
+import androidx.compose.ui.text.input.ImeAction.Companion.Done
 import androidx.compose.ui.text.input.ImeAction.Companion.Go
+import androidx.compose.ui.text.input.ImeAction.Companion.Next
+import androidx.compose.ui.text.input.ImeAction.Companion.None
+import androidx.compose.ui.text.input.ImeAction.Companion.Previous
 import androidx.compose.ui.text.input.ImeAction.Companion.Search
 import androidx.compose.ui.text.input.ImeAction.Companion.Send
-import androidx.compose.ui.text.input.ImeAction.Companion.Previous
-import androidx.compose.ui.text.input.ImeAction.Companion.Next
-import androidx.compose.ui.text.input.ImeAction.Companion.Done
 import androidx.compose.ui.text.input.TextInputSession
 
 /**
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/LongPressTextDragObserver.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/LongPressTextDragObserver.kt
index d848b79..fa1811f 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/LongPressTextDragObserver.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/LongPressTextDragObserver.kt
@@ -16,10 +16,10 @@
 
 package androidx.compose.foundation.text
 
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.detectDragGestures
 import androidx.compose.foundation.gestures.detectDragGesturesAfterLongPress
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.input.pointer.PointerInputScope
 import androidx.compose.ui.util.fastAny
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImpl.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImpl.kt
index b07e058..27e669c 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImpl.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImpl.kt
@@ -17,9 +17,9 @@
 package androidx.compose.foundation.text.selection
 
 import androidx.compose.foundation.AtomicLong
-import androidx.compose.runtime.setValue
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.layout.LayoutCoordinates
 
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt
index 86ddbd5..7b68366 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt
@@ -27,9 +27,9 @@
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.text.BasicText
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
-import androidx.compose.runtime.getValue
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/Scrollbar.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/Scrollbar.desktop.kt
index 77c5476..1398ec3 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/Scrollbar.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/Scrollbar.desktop.kt
@@ -18,10 +18,10 @@
 
 import androidx.compose.animation.animateColorAsState
 import androidx.compose.animation.core.TweenSpec
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.detectTapAndPress
 import androidx.compose.foundation.gestures.drag
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.scrollBy
 import androidx.compose.foundation.interaction.DragInteraction
 import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -59,11 +59,11 @@
 import androidx.compose.ui.unit.constrainHeight
 import androidx.compose.ui.unit.constrainWidth
 import androidx.compose.ui.unit.dp
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.runBlocking
 import kotlin.math.abs
 import kotlin.math.roundToInt
 import kotlin.math.sign
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.runBlocking
 
 /**
  * [CompositionLocal] used to pass [ScrollbarStyle] down the tree.
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/TooltipArea.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/TooltipArea.desktop.kt
index 0de1a5c..4b9d393 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/TooltipArea.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/TooltipArea.desktop.kt
@@ -24,26 +24,26 @@
 import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.input.pointer.changedToDown
 import androidx.compose.ui.input.pointer.PointerEventPass
+import androidx.compose.ui.input.pointer.PointerEventType
 import androidx.compose.ui.input.pointer.PointerInputScope
+import androidx.compose.ui.input.pointer.changedToDown
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.layout.positionInWindow
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.input.pointer.PointerEventType
 import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntRect
+import androidx.compose.ui.unit.dp
 import androidx.compose.ui.window.Popup
 import androidx.compose.ui.window.PopupPositionProvider
-import androidx.compose.ui.window.rememberCursorPositionProvider
 import androidx.compose.ui.window.rememberComponentRectPositionProvider
-import kotlinx.coroutines.delay
+import androidx.compose.ui.window.rememberCursorPositionProvider
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 
 /**
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/gestures/DesktopScrollable.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/gestures/DesktopScrollable.desktop.kt
index 6314814..6e08d4e 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/gestures/DesktopScrollable.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/gestures/DesktopScrollable.desktop.kt
@@ -16,14 +16,15 @@
 
 package androidx.compose.foundation.gestures
 
-import androidx.compose.runtime.Composable
-import androidx.compose.foundation.fastFold
 import androidx.compose.foundation.DesktopPlatform
+import androidx.compose.foundation.fastFold
 import androidx.compose.runtime.compositionLocalOf
-import androidx.compose.ui.unit.Density
-import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.input.pointer.PointerEvent
+import androidx.compose.ui.node.CompositionLocalConsumerModifierNode
+import androidx.compose.ui.node.currentValueOf
+import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
 import java.awt.event.MouseWheelEvent
 import kotlin.math.sqrt
@@ -40,8 +41,8 @@
     }
 }
 
-@Composable
-internal actual fun platformScrollConfig() = LocalScrollConfig.current
+internal actual fun CompositionLocalConsumerModifierNode.platformScrollConfig() =
+    currentValueOf(LocalScrollConfig)
 
 // TODO(demin): is this formula actually correct? some experimental values don't fit
 //  the formula
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt
index fff404c..c525ae5 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.foundation.window
 
-import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitEachGesture
+import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.layout.Box
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
diff --git a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/ScrollbarTest.kt b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/ScrollbarTest.kt
index b086c51..7edf141 100644
--- a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/ScrollbarTest.kt
+++ b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/ScrollbarTest.kt
@@ -33,13 +33,13 @@
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.input.pointer.PointerEventType
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
-import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.input.pointer.PointerEvent
+import androidx.compose.ui.input.pointer.PointerEventType
+import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.ExperimentalTestApi
 import androidx.compose.ui.test.InternalTestApi
 import androidx.compose.ui.test.TouchInjectionScope
diff --git a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/gestures/DesktopScrollableTest.kt b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/gestures/DesktopScrollableTest.kt
index d7820234..b9b7073 100644
--- a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/gestures/DesktopScrollableTest.kt
+++ b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/gestures/DesktopScrollableTest.kt
@@ -32,11 +32,11 @@
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.sqrt
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.math.sqrt
 
 // TODO(demin): convert to ComposeScene instead of TestComposeWindow,
 //  after that we won't need `window.render`
diff --git a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/DesktopTextFieldSelectionManagerTest.kt b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/DesktopTextFieldSelectionManagerTest.kt
index f4df453..72b92ca 100644
--- a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/DesktopTextFieldSelectionManagerTest.kt
+++ b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/DesktopTextFieldSelectionManagerTest.kt
@@ -38,16 +38,16 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.LayoutDirection
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
-import org.mockito.kotlin.whenever
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.any
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
 
 @RunWith(JUnit4::class)
 @Ignore("b/271123970 Fails in AOSP. Will be fixed after upstreaming Compose for Desktop")
diff --git a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/StringHelpersTest.kt b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/StringHelpersTest.kt
index 650354d..1de6bae 100644
--- a/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/StringHelpersTest.kt
+++ b/compose/foundation/foundation/src/desktopTest/kotlin/androidx/compose/foundation/text/selection/StringHelpersTest.kt
@@ -19,7 +19,6 @@
 import androidx.compose.foundation.text.findFollowingBreak
 import androidx.compose.foundation.text.findPrecedingBreak
 import com.google.common.truth.Truth.assertThat
-
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueueTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueueTest.kt
index 3c89888..1839648 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueueTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/gestures/BringIntoViewRequestPriorityQueueTest.kt
@@ -16,7 +16,7 @@
 
 package androidx.compose.foundation.gestures
 
-import androidx.compose.foundation.gestures.ContentInViewModifier.Request
+import androidx.compose.foundation.gestures.ContentInViewNode.Request
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.Size
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextDelegateTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextDelegateTest.kt
index a878a1c..c9a1c17 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextDelegateTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextDelegateTest.kt
@@ -22,10 +22,10 @@
 import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.Density
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.mock
 
 @OptIn(InternalFoundationTextApi::class)
 @RunWith(JUnit4::class)
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldBringIntoViewTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldBringIntoViewTest.kt
index f936cd5..e80c61f 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldBringIntoViewTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldBringIntoViewTest.kt
@@ -33,17 +33,17 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
+import kotlinx.coroutines.runBlocking
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 import org.mockito.kotlin.any
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.reset
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.verifyBlocking
 import org.mockito.kotlin.whenever
-import kotlinx.coroutines.runBlocking
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @OptIn(InternalFoundationTextApi::class, ExperimentalFoundationApi::class)
 @RunWith(JUnit4::class)
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldDelegateTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldDelegateTest.kt
index 3ced499..f38fa30 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldDelegateTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldDelegateTest.kt
@@ -38,6 +38,10 @@
 import androidx.compose.ui.text.input.VisualTransformation
 import androidx.compose.ui.text.style.TextDecoration
 import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 import org.mockito.kotlin.any
 import org.mockito.kotlin.eq
 import org.mockito.kotlin.inOrder
@@ -45,10 +49,6 @@
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.whenever
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @OptIn(InternalFoundationTextApi::class)
 @RunWith(JUnit4::class)
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldStateTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldStateTest.kt
index 80a615d..c8ab92b 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldStateTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextFieldStateTest.kt
@@ -18,10 +18,10 @@
 
 import androidx.compose.runtime.snapshots.Snapshot
 import com.google.common.truth.Truth
-import org.mockito.kotlin.mock
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.mock
 
 @RunWith(JUnit4::class)
 internal class TextFieldStateTest {
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextLayoutHelperTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextLayoutHelperTest.kt
index 4420a2b..d14c552 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextLayoutHelperTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/TextLayoutHelperTest.kt
@@ -33,12 +33,12 @@
 import androidx.compose.ui.unit.em
 import androidx.compose.ui.unit.sp
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 @RunWith(JUnit4::class)
 class TextLayoutHelperTest {
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/MockCoordinates.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/MockCoordinates.kt
index 344ce0b..ec961c2 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/MockCoordinates.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/MockCoordinates.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.foundation.text.selection
 
-import androidx.compose.ui.layout.AlignmentLine
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
+import androidx.compose.ui.layout.AlignmentLine
 import androidx.compose.ui.layout.LayoutCoordinates
 import androidx.compose.ui.unit.IntSize
 
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionAdjustmentTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionAdjustmentTest.kt
index 84211e52..15f2365 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionAdjustmentTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionAdjustmentTest.kt
@@ -29,11 +29,11 @@
 import androidx.compose.ui.util.packInts
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.mock
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.any
+import org.mockito.kotlin.mock
 
 @SmallTest
 @RunWith(JUnit4::class)
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerDragTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerDragTest.kt
index 034e5cd..9bcffd9 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerDragTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerDragTest.kt
@@ -24,14 +24,14 @@
 import androidx.compose.ui.text.style.ResolvedTextDirection
 import androidx.compose.ui.unit.IntSize
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.spy
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
 
 @RunWith(JUnit4::class)
 class SelectionManagerDragTest {
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerTest.kt
index 2e206d7..a14887a 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionManagerTest.kt
@@ -26,6 +26,10 @@
 import androidx.compose.ui.text.AnnotatedString
 import androidx.compose.ui.text.style.ResolvedTextDirection
 import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 import org.mockito.kotlin.any
 import org.mockito.kotlin.argThat
 import org.mockito.kotlin.doReturn
@@ -37,10 +41,6 @@
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.whenever
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class SelectionManagerTest {
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImplTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImplTest.kt
index 0c8f63b..b0e573e 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImplTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/SelectionRegistrarImplTest.kt
@@ -17,14 +17,13 @@
 package androidx.compose.foundation.text.selection
 
 import androidx.compose.ui.geometry.Offset
-
 import androidx.compose.ui.layout.LayoutCoordinates
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 @RunWith(JUnit4::class)
 class SelectionRegistrarImplTest {
diff --git a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt
index c0a54f5..525e6bf 100644
--- a/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt
+++ b/compose/foundation/foundation/src/test/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.foundation.text.selection
 
-import androidx.compose.foundation.text.InternalFoundationTextApi
 import androidx.compose.foundation.text.HandleState
+import androidx.compose.foundation.text.InternalFoundationTextApi
 import androidx.compose.foundation.text.TextFieldState
 import androidx.compose.foundation.text.TextLayoutResultProxy
 import androidx.compose.ui.focus.FocusRequester
@@ -45,6 +45,11 @@
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.util.packInts
 import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.mockito.invocation.InvocationOnMock
 import org.mockito.kotlin.any
 import org.mockito.kotlin.anyOrNull
 import org.mockito.kotlin.isNull
@@ -53,11 +58,6 @@
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.whenever
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-import org.mockito.invocation.InvocationOnMock
 import org.mockito.stubbing.Answer
 
 @RunWith(JUnit4::class)
diff --git a/compose/integration-tests/demos/src/main/java/androidx/compose/integration/demos/Demos.kt b/compose/integration-tests/demos/src/main/java/androidx/compose/integration/demos/Demos.kt
index 8b85bc8..a987eda 100644
--- a/compose/integration-tests/demos/src/main/java/androidx/compose/integration/demos/Demos.kt
+++ b/compose/integration-tests/demos/src/main/java/androidx/compose/integration/demos/Demos.kt
@@ -18,13 +18,13 @@
 
 import androidx.compose.animation.demos.AnimationDemos
 import androidx.compose.foundation.demos.FoundationDemos
+import androidx.compose.foundation.demos.text.TextDemos
 import androidx.compose.foundation.layout.demos.LayoutDemos
 import androidx.compose.integration.demos.common.DemoCategory
-import androidx.compose.foundation.demos.text.TextDemos
 import androidx.compose.material.demos.MaterialDemos
 import androidx.compose.material3.demos.Material3Demos
-import androidx.compose.ui.demos.CoreDemos
 import androidx.compose.ui.demos.AccessibilityDemos
+import androidx.compose.ui.demos.CoreDemos
 import androidx.navigation.compose.demos.NavigationDemos
 import androidx.paging.compose.demos.PagingFoundationDemos
 
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/NavigationResponsiveUi.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/NavigationResponsiveUi.kt
index c8b4a9a..440795f 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/NavigationResponsiveUi.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/NavigationResponsiveUi.kt
@@ -24,8 +24,8 @@
 import androidx.compose.runtime.Composable
 import androidx.lifecycle.ViewModel
 import androidx.navigation.NavHostController
-import androidx.navigation.compose.composable
 import androidx.navigation.compose.NavHost
+import androidx.navigation.compose.composable
 import androidx.navigation.compose.navigation
 import androidx.navigation.compose.rememberNavController
 import kotlinx.coroutines.flow.MutableStateFlow
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/sideeffects/SideEffects.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/sideeffects/SideEffects.kt
index d2f586f..928fce9 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/sideeffects/SideEffects.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/sideeffects/SideEffects.kt
@@ -53,12 +53,6 @@
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.LifecycleOwner
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.collect
-import kotlinx.coroutines.flow.distinctUntilChanged
-import kotlinx.coroutines.flow.filter
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.launch
 import kotlin.Boolean
 import kotlin.Exception
 import kotlin.Long
@@ -67,6 +61,12 @@
 import kotlin.Suppress
 import kotlin.Unit
 import kotlin.random.Random
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.launch
 
 /**
  * This file lets DevRel track changes to snippets present in
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/state/State.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/state/State.kt
deleted file mode 100644
index 5d7c893..0000000
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/state/State.kt
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Ignore lint warnings in documentation snippets
-@file:Suppress("unused", "ControlFlowWithEmptyBody", "UNUSED_PARAMETER", "UNUSED_VARIABLE")
-
-package androidx.compose.integration.docs.state
-
-import android.content.res.Resources
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.lazy.LazyColumn
-import androidx.compose.foundation.lazy.LazyListState
-import androidx.compose.foundation.lazy.items
-import androidx.compose.material.Button
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.OutlinedTextField
-import androidx.compose.material.Scaffold
-import androidx.compose.material.ScaffoldState
-import androidx.compose.material.Text
-import androidx.compose.material.rememberScaffoldState
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.MutableState
-import androidx.compose.runtime.State
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.runtime.saveable.listSaver
-import androidx.compose.runtime.saveable.mapSaver
-import androidx.compose.runtime.saveable.rememberSaveable
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.unit.dp
-import androidx.lifecycle.SavedStateHandle
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.viewmodel.compose.viewModel
-import androidx.navigation.NavHostController
-import androidx.navigation.compose.NavHost
-import androidx.navigation.compose.rememberNavController
-import kotlinx.coroutines.launch
-
-/**
- * This file lets DevRel track changes to snippets present in
- * https://developer.android.com/jetpack/compose/state
- *
- * No action required if it's modified.
- */
-
-private object StateSnippet1 {
-    @Composable
-    fun HelloContent() {
-        Column(modifier = Modifier.padding(16.dp)) {
-            Text(
-                text = "Hello!",
-                modifier = Modifier.padding(bottom = 8.dp),
-                style = MaterialTheme.typography.h5
-            )
-            OutlinedTextField(
-                value = "",
-                onValueChange = { },
-                label = { Text("Name") }
-            )
-        }
-    }
-}
-
-private object StateSnippet2 {
-    /*
-     * MutableState is part of the API, so StateSnippet2 can't have the exact code
-     * for the published documentation. Instead, use the following commented code
-     * in the doc. If FakeState<T> changes, update the commented code accordingly.
-     *
-    interface MutableState<T> : State<T> {
-        override var value: T
-    }
-     */
-    interface FakeState<T> : State<T> {
-        override var value: T
-    }
-
-    interface FakeMutableState<T> : MutableState<String>
-}
-
-private object StateSnippet3 {
-    @Composable
-    fun HelloContent() {
-        Column(modifier = Modifier.padding(16.dp)) {
-            var name by remember { mutableStateOf("") }
-            if (name.isNotEmpty()) {
-                Text(
-                    text = "Hello, $name!",
-                    modifier = Modifier.padding(bottom = 8.dp),
-                    style = MaterialTheme.typography.h5
-                )
-            }
-            OutlinedTextField(
-                value = name,
-                onValueChange = { name = it },
-                label = { Text("Name") }
-            )
-        }
-    }
-}
-
-private object StateSnippet4 {
-    @Composable
-    fun HelloScreen() {
-        var name by rememberSaveable { mutableStateOf("") }
-
-        HelloContent(name = name, onNameChange = { name = it })
-    }
-
-    @Composable
-    fun HelloContent(name: String, onNameChange: (String) -> Unit) {
-        Column(modifier = Modifier.padding(16.dp)) {
-            Text(
-                text = "Hello, $name",
-                modifier = Modifier.padding(bottom = 8.dp),
-                style = MaterialTheme.typography.h5
-            )
-            OutlinedTextField(
-                value = name,
-                onValueChange = onNameChange,
-                label = { Text("Name") }
-            )
-        }
-    }
-}
-
-private object StateSnippet5 {
-    @Parcelize
-    data class City(val name: String, val country: String) : Parcelable
-
-    @Composable
-    fun CityScreen() {
-        var selectedCity = rememberSaveable {
-            mutableStateOf(City("Madrid", "Spain"))
-        }
-    }
-}
-
-private object StateSnippet6 {
-    data class City(val name: String, val country: String)
-
-    val CitySaver = run {
-        val nameKey = "Name"
-        val countryKey = "Country"
-        mapSaver(
-            save = { mapOf(nameKey to it.name, countryKey to it.country) },
-            restore = { City(it[nameKey] as String, it[countryKey] as String) }
-        )
-    }
-
-    @Composable
-    fun CityScreen() {
-        var selectedCity = rememberSaveable(stateSaver = CitySaver) {
-            mutableStateOf(City("Madrid", "Spain"))
-        }
-    }
-}
-
-@Composable
-private fun StateSnippets7() {
-    data class City(val name: String, val country: String)
-
-    val CitySaver = listSaver<City, Any>(
-        save = { listOf(it.name, it.country) },
-        restore = { City(it[0] as String, it[1] as String) }
-    )
-
-    @Composable
-    fun CityScreen() {
-        var selectedCity = rememberSaveable(stateSaver = CitySaver) {
-            mutableStateOf(City("Madrid", "Spain"))
-        }
-    }
-}
-
-@Composable
-private fun StateSnippets8() {
-    @Composable
-    fun MyApp() {
-        MyTheme {
-            val scaffoldState = rememberScaffoldState()
-            val coroutineScope = rememberCoroutineScope()
-
-            Scaffold(scaffoldState = scaffoldState) { innerPadding ->
-                MyContent(
-                    showSnackbar = { message ->
-                        coroutineScope.launch {
-                            scaffoldState.snackbarHostState.showSnackbar(message)
-                        }
-                    },
-                    modifier = Modifier.padding(innerPadding)
-                )
-            }
-        }
-    }
-}
-
-@Composable
-private fun StateSnippets9() {
-
-    // Plain class that manages App's UI logic and UI elements' state
-    class MyAppState(
-        val scaffoldState: ScaffoldState,
-        val navController: NavHostController,
-        private val resources: Resources,
-        /* ... */
-    ) {
-        val bottomBarTabs = /* State */
-            // DO NOT COPY IN DAC
-            Unit
-
-        // Logic to decide when to show the bottom bar
-        val shouldShowBottomBar: Boolean
-            get() = /* ... */
-                // DO NOT COPY IN DAC
-                false
-
-        // Navigation logic, which is a type of UI logic
-        fun navigateToBottomBarRoute(route: String) { /* ... */ }
-
-        // Show snackbar using Resources
-        fun showSnackbar(message: String) { /* ... */ }
-    }
-
-    @Composable
-    fun rememberMyAppState(
-        scaffoldState: ScaffoldState = rememberScaffoldState(),
-        navController: NavHostController = rememberNavController(),
-        resources: Resources = LocalContext.current.resources,
-        /* ... */
-    ) = remember(scaffoldState, navController, resources, /* ... */) {
-        MyAppState(scaffoldState, navController, resources, /* ... */)
-    }
-}
-
-@Composable
-private fun StateSnippets10() {
-    @Composable
-    fun MyApp() {
-        MyTheme {
-            val myAppState = rememberMyAppState()
-            Scaffold(
-                scaffoldState = myAppState.scaffoldState,
-                bottomBar = {
-                    if (myAppState.shouldShowBottomBar) {
-                        BottomBar(
-                            tabs = myAppState.bottomBarTabs,
-                            navigateToRoute = {
-                                myAppState.navigateToBottomBarRoute(it)
-                            }
-                        )
-                    }
-                }
-            ) { innerPadding ->
-                NavHost(
-                    navController = myAppState.navController,
-                    startDestination = "initial",
-                    modifier = Modifier.padding(innerPadding)
-                ) { /* ... */ }
-            }
-        }
-    }
-}
-
-@Composable
-private fun StateSnippets11() {
-    data class ExampleUiState(
-        val dataToDisplayOnScreen: List<Example> = emptyList(),
-        val userMessages: List<Message> = emptyList(),
-        val loading: Boolean = false
-    )
-
-    class ExampleViewModel(
-        private val repository: MyRepository,
-        private val savedState: SavedStateHandle
-    ) : ViewModel() {
-
-        var uiState by mutableStateOf(ExampleUiState())
-            private set
-
-        // Business logic
-        fun somethingRelatedToBusinessLogic() { /* ... */ }
-    }
-
-    @Composable
-    fun ExampleScreen(viewModel: ExampleViewModel = viewModel()) {
-
-        val uiState = viewModel.uiState
-        /* ... */
-
-        ExampleReusableComponent(
-            someData = uiState.dataToDisplayOnScreen,
-            onDoSomething = { viewModel.somethingRelatedToBusinessLogic() }
-        )
-    }
-
-    @Composable
-    fun ExampleReusableComponent(someData: Any, onDoSomething: () -> Unit) {
-        /* ... */
-        Button(onClick = onDoSomething) {
-            Text("Do something")
-        }
-    }
-}
-
-@Composable
-private fun StateSnippets12() {
-    class ExampleState(
-        val lazyListState: LazyListState,
-        private val resources: Resources,
-        private val expandedItems: List<Item> = emptyList()
-    ) {
-        fun isExpandedItem(item: Item): Boolean = TODO()
-        /* ... */
-    }
-
-    @Composable
-    fun rememberExampleState(/* ... */): ExampleState { TODO() }
-
-    @Composable
-    fun ExampleScreen(viewModel: ExampleViewModel = viewModel()) {
-
-        val uiState = viewModel.uiState
-        val exampleState = rememberExampleState()
-
-        LazyColumn(state = exampleState.lazyListState) {
-            items(uiState.dataToDisplayOnScreen) { item ->
-                if (exampleState.isExpandedItem(item)) {
-                    /* ... */
-                }
-                /* ... */
-            }
-        }
-    }
-}
-
-/*
- * Fakes needed for snippets to build:
- */
-
-private object binding {
-    object helloText {
-        var text = ""
-    }
-
-    object textInput {
-        fun doAfterTextChanged(function: () -> Unit) {}
-    }
-}
-
-@Composable
-private fun MyTheme(content: @Composable () -> Unit) {}
-
-@Composable
-private fun MyContent(showSnackbar: (String) -> Unit, modifier: Modifier = Modifier) {}
-
-@Composable
-private fun BottomBar(tabs: Unit, navigateToRoute: (String) -> Unit) {}
-
-@Composable
-private fun rememberMyAppState(
-    scaffoldState: ScaffoldState = rememberScaffoldState(),
-    navController: NavHostController = rememberNavController(),
-    resources: Resources = LocalContext.current.resources
-) = remember(scaffoldState, navController, resources) {
-    MyAppState(scaffoldState, navController, resources)
-}
-
-private class MyAppState(
-    val scaffoldState: ScaffoldState,
-    val navController: NavHostController,
-    private val resources: Resources,
-) {
-    val shouldShowBottomBar: Boolean = false
-    val bottomBarTabs = Unit
-    fun navigateToBottomBarRoute(route: String) {}
-}
-
-/**
- * Add fake Parcelize and Parcelable to avoid adding AndroidX wide dependency on
- * kotlin-parcelize just for snippets
- */
-private annotation class Parcelize
-private interface Parcelable
-
-private class Example
-private class Item
-private class Message
-private class MyRepository
-
-@Composable
-private fun ExampleReusableComponent(someData: List<Example>, onDoSomething: () -> Unit) {}
-
-private class ExampleViewModel : ViewModel() {
-    val uiState = ExampleUiState()
-}
-
-private data class ExampleUiState(
-    val dataToDisplayOnScreen: List<Item> = emptyList(),
-    val userMessages: List<Message> = emptyList(),
-    val loading: Boolean = false
-)
\ No newline at end of file
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt
index 8531dc7e..bda62b5 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt
@@ -20,6 +20,9 @@
 package androidx.compose.integration.docs.testing
 
 import android.os.Build
+import android.view.KeyEvent as AndroidKeyEvent
+import android.view.KeyEvent.ACTION_DOWN as ActionDown
+import android.view.KeyEvent.KEYCODE_A as KeyCodeA
 import androidx.activity.ComponentActivity
 import androidx.annotation.RequiresApi
 import androidx.compose.runtime.Composable
@@ -143,9 +146,6 @@
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
-import android.view.KeyEvent as AndroidKeyEvent
-import android.view.KeyEvent.ACTION_DOWN as ActionDown
-import android.view.KeyEvent.KEYCODE_A as KeyCodeA
 
 /**
  * This file lets DevRel track changes to snippets present in
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Custom.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Custom.kt
deleted file mode 100644
index beb52bb..0000000
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Custom.kt
+++ /dev/null
@@ -1,364 +0,0 @@
-// ktlint-disable indent https://github.com/pinterest/ktlint/issues/967
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Ignore lint warnings in documentation snippets
-@file:Suppress(
-    "unused", "UNUSED_PARAMETER", "UNUSED_VARIABLE", "RemoveEmptyParenthesesFromLambdaCall"
-)
-
-package androidx.compose.integration.docs.theming
-
-import androidx.compose.foundation.layout.RowScope
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.foundation.shape.ZeroCornerSize
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.Colors
-import androidx.compose.material.ContentAlpha
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.ProvideTextStyle
-import androidx.compose.material.Shapes
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.Immutable
-import androidx.compose.runtime.staticCompositionLocalOf
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.Shape
-import androidx.compose.ui.graphics.compositeOver
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-
-/**
- * This file lets DevRel track changes to snippets present in
- * https://developer.android.com/jetpack/compose/themes/custom
- *
- * No action required if it's modified.
- */
-
-private object CustomSnippet1 {
-    // Use with MaterialTheme.colors.snackbarAction
-    val Colors.snackbarAction: Color
-        get() = if (isLight) Red300 else Red700
-
-    // Use with MaterialTheme.typography.textFieldInput
-    val Typography.textFieldInput: TextStyle
-        get() = TextStyle(/* ... */)
-
-    // Use with MaterialTheme.shapes.card
-    val Shapes.card: Shape
-        get() = RoundedCornerShape(size = 20.dp)
-}
-
-private object CustomSnippet234 {
-    // Start snippet 2
-    @Immutable
-    data class ExtendedColors(
-        val tertiary: Color,
-        val onTertiary: Color
-    )
-
-    val LocalExtendedColors = staticCompositionLocalOf {
-        ExtendedColors(
-            tertiary = Color.Unspecified,
-            onTertiary = Color.Unspecified
-        )
-    }
-
-    @Composable
-    fun ExtendedTheme(
-        /* ... */
-        content: @Composable () -> Unit
-    ) {
-        val extendedColors = ExtendedColors(
-            tertiary = Color(0xFFA8EFF0),
-            onTertiary = Color(0xFF002021)
-        )
-        CompositionLocalProvider(LocalExtendedColors provides extendedColors) {
-            MaterialTheme(
-                /* colors = ..., typography = ..., shapes = ... */
-                content = content
-            )
-        }
-    }
-
-    // Use with eg. ExtendedTheme.colors.tertiary
-    object ExtendedTheme {
-        val colors: ExtendedColors
-            @Composable
-            get() = LocalExtendedColors.current
-    }
-    // End snippet 2
-
-    // Start snippet 3
-    @Composable
-    fun ExtendedButton(
-        onClick: () -> Unit,
-        modifier: Modifier = Modifier,
-        content: @Composable RowScope.() -> Unit
-    ) {
-        Button(
-            colors = ButtonDefaults.buttonColors(
-                backgroundColor = ExtendedTheme.colors.tertiary,
-                contentColor = ExtendedTheme.colors.onTertiary
-                /* Other colors use values from MaterialTheme */
-            ),
-            onClick = onClick,
-            modifier = modifier,
-            content = content
-        )
-    }
-    // End snippet 3
-
-    // Start snippet 4
-    @Composable
-    fun ExtendedApp() {
-        ExtendedTheme {
-            /*...*/
-            ExtendedButton(onClick = { /* ... */ }) {
-                /* ... */
-            }
-        }
-    }
-    // End snippet 4
-}
-
-private object CustomSnippet567 {
-    // Start snippet 5
-    @Immutable
-    data class ReplacementTypography(
-        val body: TextStyle,
-        val title: TextStyle
-    )
-
-    @Immutable
-    data class ReplacementShapes(
-        val component: Shape,
-        val surface: Shape
-    )
-
-    val LocalReplacementTypography = staticCompositionLocalOf {
-        ReplacementTypography(
-            body = TextStyle.Default,
-            title = TextStyle.Default
-        )
-    }
-    val LocalReplacementShapes = staticCompositionLocalOf {
-        ReplacementShapes(
-            component = RoundedCornerShape(ZeroCornerSize),
-            surface = RoundedCornerShape(ZeroCornerSize)
-        )
-    }
-
-    @Composable
-    fun ReplacementTheme(
-        /* ... */
-        content: @Composable () -> Unit
-    ) {
-        val replacementTypography = ReplacementTypography(
-            body = TextStyle(fontSize = 16.sp),
-            title = TextStyle(fontSize = 32.sp)
-        )
-        val replacementShapes = ReplacementShapes(
-            component = RoundedCornerShape(percent = 50),
-            surface = RoundedCornerShape(size = 40.dp)
-        )
-        CompositionLocalProvider(
-            LocalReplacementTypography provides replacementTypography,
-            LocalReplacementShapes provides replacementShapes
-        ) {
-            MaterialTheme(
-                /* colors = ... */
-                content = content
-            )
-        }
-    }
-
-    // Use with eg. ReplacementTheme.typography.body
-    object ReplacementTheme {
-        val typography: ReplacementTypography
-            @Composable
-            get() = LocalReplacementTypography.current
-        val shapes: ReplacementShapes
-            @Composable
-            get() = LocalReplacementShapes.current
-    }
-    // End snippet 5
-
-    // Start snippet 6
-    @Composable
-    fun ReplacementButton(
-        onClick: () -> Unit,
-        modifier: Modifier = Modifier,
-        content: @Composable RowScope.() -> Unit
-    ) {
-        Button(
-            shape = ReplacementTheme.shapes.component,
-            onClick = onClick,
-            modifier = modifier,
-            content = {
-                ProvideTextStyle(
-                    value = ReplacementTheme.typography.body
-                ) {
-                    content()
-                }
-            }
-        )
-    }
-    // End snippet 6
-
-    // Start snippet 7
-    @Composable
-    fun ReplacementApp() {
-        ReplacementTheme {
-            /*...*/
-            ReplacementButton(onClick = { /* ... */ }) {
-                /* ... */
-            }
-        }
-    }
-    // End snippet 7
-}
-
-private object CustomSnippet89 {
-    // Start snippet 8
-    @Immutable
-    data class CustomColors(
-        val content: Color,
-        val component: Color,
-        val background: List<Color>
-    )
-
-    @Immutable
-    data class CustomTypography(
-        val body: TextStyle,
-        val title: TextStyle
-    )
-
-    @Immutable
-    data class CustomElevation(
-        val default: Dp,
-        val pressed: Dp
-    )
-
-    val LocalCustomColors = staticCompositionLocalOf {
-        CustomColors(
-            content = Color.Unspecified,
-            component = Color.Unspecified,
-            background = emptyList()
-        )
-    }
-    val LocalCustomTypography = staticCompositionLocalOf {
-        CustomTypography(
-            body = TextStyle.Default,
-            title = TextStyle.Default
-        )
-    }
-    val LocalCustomElevation = staticCompositionLocalOf {
-        CustomElevation(
-            default = Dp.Unspecified,
-            pressed = Dp.Unspecified
-        )
-    }
-
-    @Composable
-    fun CustomTheme(
-        /* ... */
-        content: @Composable () -> Unit
-    ) {
-        val customColors = CustomColors(
-            content = Color(0xFFDD0D3C),
-            component = Color(0xFFC20029),
-            background = listOf(Color.White, Color(0xFFF8BBD0))
-        )
-        val customTypography = CustomTypography(
-            body = TextStyle(fontSize = 16.sp),
-            title = TextStyle(fontSize = 32.sp)
-        )
-        val customElevation = CustomElevation(
-            default = 4.dp,
-            pressed = 8.dp
-        )
-        CompositionLocalProvider(
-            LocalCustomColors provides customColors,
-            LocalCustomTypography provides customTypography,
-            LocalCustomElevation provides customElevation,
-            content = content
-        )
-    }
-
-    // Use with eg. CustomTheme.elevation.small
-    object CustomTheme {
-        val colors: CustomColors
-            @Composable
-            get() = LocalCustomColors.current
-        val typography: CustomTypography
-            @Composable
-            get() = LocalCustomTypography.current
-        val elevation: CustomElevation
-            @Composable
-            get() = LocalCustomElevation.current
-    }
-    // End snippet 8
-
-    // Start snippet 9
-    @Composable
-    fun CustomButton(
-        onClick: () -> Unit,
-        modifier: Modifier = Modifier,
-        content: @Composable RowScope.() -> Unit
-    ) {
-        Button(
-            colors = ButtonDefaults.buttonColors(
-                backgroundColor = CustomTheme.colors.component,
-                contentColor = CustomTheme.colors.content,
-                disabledBackgroundColor = CustomTheme.colors.content
-                    .copy(alpha = 0.12f)
-                    .compositeOver(CustomTheme.colors.component),
-                disabledContentColor = CustomTheme.colors.content
-                    .copy(alpha = ContentAlpha.disabled)
-            ),
-            shape = ButtonShape,
-            elevation = ButtonDefaults.elevation(
-                defaultElevation = CustomTheme.elevation.default,
-                pressedElevation = CustomTheme.elevation.pressed
-                /* disabledElevation = 0.dp */
-            ),
-            onClick = onClick,
-            modifier = modifier,
-            content = {
-                ProvideTextStyle(
-                    value = CustomTheme.typography.body
-                ) {
-                    content()
-                }
-            }
-        )
-    }
-
-    val ButtonShape = RoundedCornerShape(percent = 50)
-    // End snippet 9
-}
-
-/*
-Fakes needed for snippets to build:
- */
-
-private val Red300 = Color(0xffff0000)
-private val Red700 = Color(0xffff0000)
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Material.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Material.kt
deleted file mode 100644
index 8885249..0000000
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Material.kt
+++ /dev/null
@@ -1,448 +0,0 @@
-// ktlint-disable indent https://github.com/pinterest/ktlint/issues/967
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Ignore lint warnings in documentation snippets
-@file:Suppress(
-    "unused", "UNUSED_PARAMETER", "UNUSED_VARIABLE", "RemoveEmptyParenthesesFromLambdaCall"
-)
-
-package androidx.compose.integration.docs.theming
-
-import androidx.compose.foundation.isSystemInDarkTheme
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.RowScope
-import androidx.compose.foundation.shape.CutCornerShape
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material.Button
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.ContentAlpha
-import androidx.compose.material.Icon
-import androidx.compose.material.LocalContentAlpha
-import androidx.compose.material.LocalElevationOverlay
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Shapes
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
-import androidx.compose.material.TopAppBar
-import androidx.compose.material.Typography
-import androidx.compose.material.contentColorFor
-import androidx.compose.material.darkColors
-import androidx.compose.material.lightColors
-import androidx.compose.material.primarySurface
-import androidx.compose.material.ripple.LocalRippleTheme
-import androidx.compose.material.ripple.RippleTheme
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.Immutable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.compositeOver
-import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.Font
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-
-/**
- * This file lets DevRel track changes to snippets present in
- * https://developer.android.com/jetpack/compose/themes/material
- *
- * No action required if it's modified.
- */
-
-private object MaterialSnippet1 {
-    /* Can't be compiled. See snippet below for changes.
-    MaterialTheme(
-    colors = ...,
-    typography = ...,
-    shapes = ...
-    ) {
-        // app content
-    }
-     */
-    @Composable
-    fun MaterialTheming() {
-        MaterialTheme(
-            colors = MaterialTheme.colors,
-            typography = MaterialTheme.typography,
-            shapes = MaterialTheme.shapes
-        ) { }
-    }
-}
-
-private object MaterialSnippet2 {
-    val Red = Color(0xffff0000)
-    val Blue = Color(red = 0f, green = 0f, blue = 1f)
-}
-
-private object MaterialSnippet3 {
-    private val Yellow200 = Color(0xffffeb46)
-    private val Blue200 = Color(0xff91a4fc)
-    // ...
-
-    private val DarkColors = darkColors(
-        primary = Yellow200,
-        secondary = Blue200,
-        // ...
-    )
-    private val LightColors = lightColors(
-        primary = Yellow500,
-        primaryVariant = Yellow400,
-        secondary = Blue700,
-        // ...
-    )
-}
-
-private object MaterialSnippet4 {
-    @Composable
-    fun MaterialTheming() {
-        MaterialTheme(
-            colors = if (darkTheme) DarkColors else LightColors
-        ) {
-            // app content
-        }
-    }
-}
-
-private object MaterialSnippet5 {
-    @Composable
-    fun MaterialTheming() {
-        Text(
-            text = "Hello theming",
-            color = MaterialTheme.colors.primary
-        )
-    }
-}
-
-private object MaterialSnippet6 {
-    @Composable
-    fun MaterialTheming() {
-        /* This snippet comes from the API. It needs to be updated if the snippet below is modified:
-Surface(
-    color: Color = MaterialTheme.colors.surface,
-    contentColor: Color = contentColorFor(color),
-    ...
-
-TopAppBar(
-    backgroundColor: Color = MaterialTheme.colors.primarySurface,
-    contentColor: Color = contentColorFor(backgroundColor),
-    ...
-     */
-        Column {
-            Surface(
-                color = MaterialTheme.colors.surface,
-                contentColor = contentColorFor(MaterialTheme.colors.surface)
-            ) {}
-            TopAppBar(
-                backgroundColor = MaterialTheme.colors.primarySurface,
-                contentColor = contentColorFor(MaterialTheme.colors.primarySurface)
-            ) {}
-        }
-    }
-}
-
-private object MaterialSnippet7 {
-    @Composable
-    fun MaterialTheming() {
-        // By default, both Icon & Text use the combination of LocalContentColor &
-        // LocalContentAlpha. De-emphasize content by setting content alpha
-        CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {
-            Text(/*...*/)
-        }
-        CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.disabled) {
-            Icon(/*...*/)
-            Text(/*...*/)
-        }
-    }
-    @Composable private fun Icon() { }
-    @Composable private fun Text() { }
-}
-
-private object MaterialSnippet8 {
-    @Composable
-    fun MyTheme(
-        darkTheme: Boolean = isSystemInDarkTheme(),
-        content: @Composable () -> Unit
-    ) {
-        MaterialTheme(
-            colors = if (darkTheme) DarkColors else LightColors,
-            /*...*/
-            content = content
-        )
-    }
-}
-
-private object MaterialSnippet9 {
-    @Composable
-    fun MaterialTheming() {
-        val isLightTheme = MaterialTheme.colors.isLight
-        Icon(
-            painterResource(
-                id = if (isLightTheme) {
-                    R.drawable.ic_sun_24dp
-                } else {
-                    R.drawable.ic_moon_24dp
-                }
-            ),
-            contentDescription = "Theme"
-        )
-    }
-}
-
-private object MaterialSnippet10 {
-    @Composable
-    fun MaterialTheming() {
-        Surface(
-            elevation = 2.dp,
-            color = MaterialTheme.colors.surface, // color will be adjusted for elevation
-            /*...*/
-        ) { /*...*/ }
-    }
-}
-
-private object MaterialSnippet11 {
-    @Composable
-    fun MaterialTheming() {
-        // Elevation overlays
-        // Implemented in Surface (and any components that use it)
-        val color = MaterialTheme.colors.surface
-        val elevation = 4.dp
-        val overlaidColor = LocalElevationOverlay.current?.apply(
-            color, elevation
-        )
-    }
-}
-
-private object MaterialSnippet12 {
-    @Composable
-    fun MaterialTheming() {
-        MyTheme {
-            CompositionLocalProvider(LocalElevationOverlay provides null) {
-                // Content without elevation overlays
-            }
-        }
-    }
-}
-
-private object MaterialSnippet13 {
-    @Composable
-    fun MaterialTheming() {
-        Surface(
-            // Switches between primary in light theme and surface in dark theme
-            color = MaterialTheme.colors.primarySurface,
-            /*...*/
-        ) { /*...*/ }
-    }
-}
-
-private object MaterialSnippet14 {
-    @Composable
-    fun MaterialTheming() {
-        val Rubik = FontFamily(
-            Font(R.font.rubik_regular),
-            Font(R.font.rubik_medium, FontWeight.W500),
-            Font(R.font.rubik_bold, FontWeight.Bold)
-        )
-
-        val MyTypography = Typography(
-            h1 = TextStyle(
-                fontFamily = Rubik,
-                fontWeight = FontWeight.W300,
-                fontSize = 96.sp
-            ),
-            body1 = TextStyle(
-                fontFamily = Rubik,
-                fontWeight = FontWeight.W600,
-                fontSize = 16.sp
-            )
-            /*...*/
-        )
-        MaterialTheme(typography = MyTypography, /*...*/)
-    }
-    @Composable private fun MaterialTheme(typography: Typography) { }
-}
-
-private object MaterialSnippet15 {
-    @Composable
-    fun MaterialTheming() {
-        val typography = Typography(defaultFontFamily = Rubik)
-        MaterialTheme(typography = typography, /*...*/)
-    }
-    @Composable private fun MaterialTheme(typography: Typography) { }
-}
-
-private object MaterialSnippet16 {
-    @Composable
-    fun MaterialTheming() {
-        Text(
-            text = "Subtitle2 styled",
-            style = MaterialTheme.typography.subtitle2
-        )
-    }
-}
-
-private object MaterialSnippet17 {
-    @Composable
-    fun MaterialTheming() {
-        val Shapes = Shapes(
-            small = RoundedCornerShape(percent = 50),
-            medium = RoundedCornerShape(0f),
-            large = CutCornerShape(
-                topStart = 16.dp,
-                topEnd = 0.dp,
-                bottomEnd = 0.dp,
-                bottomStart = 16.dp
-            )
-        )
-
-        MaterialTheme(shapes = Shapes, /*...*/)
-    }
-    @Composable private fun MaterialTheme(shapes: Shapes) { }
-}
-
-private object MaterialSnippet18 {
-    @Composable
-    fun MaterialTheming() {
-        Surface(
-            shape = MaterialTheme.shapes.medium, /*...*/
-        ) {
-            /*...*/
-        }
-    }
-}
-
-private object MaterialSnippet19 {
-    @Composable
-    fun MyButton(
-        onClick: () -> Unit,
-        modifier: Modifier = Modifier,
-        content: @Composable RowScope.() -> Unit
-    ) {
-        Button(
-            colors = ButtonDefaults.buttonColors(
-                backgroundColor = MaterialTheme.colors.secondary
-            ),
-            onClick = onClick,
-            modifier = modifier,
-            content = content
-        )
-    }
-}
-
-private object MaterialSnippet20 {
-    @Composable
-    fun DetailsScreen(/* ... */) {
-        PinkTheme {
-            // other content
-            RelatedSection()
-        }
-    }
-
-    @Composable
-    fun RelatedSection(/* ... */) {
-        BlueTheme {
-            // content
-        }
-    }
-}
-
-private object MaterialSnippet21 {
-    @Composable
-    fun MaterialTheming() {
-        Button(
-            onClick = { /* ... */ },
-            enabled = true,
-            // Custom colors for different states
-            colors = ButtonDefaults.buttonColors(
-                backgroundColor = MaterialTheme.colors.secondary,
-                disabledBackgroundColor = MaterialTheme.colors.onBackground
-                    .copy(alpha = 0.2f)
-                    .compositeOver(MaterialTheme.colors.background)
-                // Also contentColor and disabledContentColor
-            ),
-            // Custom elevation for different states
-            elevation = ButtonDefaults.elevation(
-                defaultElevation = 8.dp,
-                disabledElevation = 2.dp,
-                // Also pressedElevation
-            )
-        ) { /* ... */ }
-    }
-}
-
-private object MaterialSnippet22 {
-    @Composable
-    fun MyApp() {
-        MaterialTheme {
-            CompositionLocalProvider(
-                LocalRippleTheme provides SecondaryRippleTheme
-            ) {
-                // App content
-            }
-        }
-    }
-
-    @Immutable
-    private object SecondaryRippleTheme : RippleTheme {
-        @Composable
-        override fun defaultColor() = RippleTheme.defaultRippleColor(
-            contentColor = MaterialTheme.colors.secondary,
-            lightTheme = MaterialTheme.colors.isLight
-        )
-
-        @Composable
-        override fun rippleAlpha() = RippleTheme.defaultRippleAlpha(
-            contentColor = MaterialTheme.colors.secondary,
-            lightTheme = MaterialTheme.colors.isLight
-        )
-    }
-}
-
-/*
-Fakes needed for snippets to build:
- */
-
-private val Yellow500 = Color(0xffffeb46)
-private val Yellow400 = Color(0xffffeb46)
-private val Blue700 = Color(0xffffeb46)
-
-private const val darkTheme = true
-private val DarkColors = darkColors()
-private val LightColors = lightColors()
-
-@Composable private fun MyTheme(content: @Composable () -> Unit) {}
-@Composable private fun PinkTheme(content: @Composable () -> Unit) {}
-@Composable private fun BlueTheme(content: @Composable () -> Unit) {}
-
-@Suppress("ClassName")
-internal object R {
-    object drawable {
-        const val ic_sun_24dp = 1
-        const val ic_moon_24dp = 1
-    }
-    object font {
-        const val rubik_regular = 1
-        const val rubik_medium = 1
-        const val rubik_bold = 1
-        const val karla_regular = 1
-        const val karla_bold = 1
-    }
-}
-
-private val Rubik = FontFamily()
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Material3.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Material3.kt
deleted file mode 100644
index d10cdb2..0000000
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/theming/Material3.kt
+++ /dev/null
@@ -1,193 +0,0 @@
-// ktlint-disable indent https://github.com/pinterest/ktlint/issues/967
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Ignore lint warnings in documentation snippets
-@file:Suppress(
-    "unused", "UNUSED_PARAMETER", "UNUSED_VARIABLE", "RemoveEmptyParenthesesFromLambdaCall"
-)
-
-package androidx.compose.integration.docs.theming
-
-import android.annotation.SuppressLint
-import android.os.Build
-import androidx.compose.foundation.isSystemInDarkTheme
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.Text
-import androidx.compose.material3.Typography
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.dynamicDarkColorScheme
-import androidx.compose.material3.dynamicLightColorScheme
-import androidx.compose.material3.lightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.Font
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-
-/**
- * This file lets DevRel track changes to snippets present in
- * https://developer.android.com/jetpack/compose/themes/material#material3
- *
- * No action required if it's modified.
- */
-
-private object Material3Snippet1 {
-    /* Can't be compiled. See snippet below for changes.
-      MaterialTheme(
-        colorScheme = …,
-        typography = …
-        // Updates to shapes coming soon
-      ) {
-        // M3 app content
-      }
-    */
-    @Composable
-    fun MaterialTheming() {
-        MaterialTheme(
-            colorScheme = MaterialTheme.colorScheme,
-            typography = MaterialTheme.typography
-        ) { }
-    }
-}
-
-private object Material3Snippet2 {
-    private val Blue40 = Color(0xff1e40ff)
-    private val DarkBlue40 = Color(0xff3e41f4)
-    private val Yellow40 = Color(0xff7d5700)
-    // Remaining colors from tonal palettes
-
-    private val LightColorScheme = lightColorScheme(
-        primary = Blue40,
-        secondary = DarkBlue40,
-        tertiary = Yellow40,
-        // error, primaryContainer, onSecondary, etc.
-    )
-    private val DarkColorScheme = darkColorScheme(
-        primary = Blue80,
-        secondary = DarkBlue80,
-        tertiary = Yellow80,
-        // error, primaryContainer, onSecondary, etc.
-    )
-}
-
-private object Material3Snippet3 {
-    @Composable
-    fun Material3Theming() {
-        val darkTheme = isSystemInDarkTheme()
-        MaterialTheme(
-            colorScheme = if (darkTheme) DarkColorScheme else LightColorScheme
-        ) {
-            // M3 app content
-        }
-    }
-}
-
-private object Material3Snippet4 {
-    @SuppressLint("NewApi")
-    @Composable
-    fun Material3Theming() {
-        // Dynamic color is available on Android 12+
-        val dynamicColor = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
-        val colorScheme = when {
-            dynamicColor && darkTheme -> dynamicDarkColorScheme(LocalContext.current)
-            dynamicColor && !darkTheme -> dynamicLightColorScheme(LocalContext.current)
-            darkTheme -> DarkColorScheme
-            else -> LightColorScheme
-        }
-    }
-}
-
-private object Material3Snippet5 {
-    @Composable
-    fun Material3Theming() {
-        Text(
-            text = "Hello M3 theming",
-            color = MaterialTheme.colorScheme.tertiary
-        )
-    }
-}
-
-private object Material3Snippet6 {
-    val KarlaFontFamily = FontFamily(
-        Font(R.font.karla_regular),
-        Font(R.font.karla_bold, FontWeight.Bold)
-    )
-
-    val AppTypography = Typography(
-        bodyLarge = TextStyle(
-            fontFamily = KarlaFontFamily,
-            fontWeight = FontWeight.Normal,
-            fontSize = 16.sp,
-            lineHeight = 24.sp,
-            letterSpacing = 0.15.sp
-        ),
-        // titleMedium, labelSmall, etc.
-    )
-}
-
-private object Material3Snippet7 {
-    @Composable
-    fun Material3Theming() {
-        MaterialTheme(
-            typography = AppTypography
-        ) {
-            // M3 app content
-        }
-    }
-}
-
-private object Material3Snippet8 {
-    @Composable
-    fun Material3Theming() {
-        Text(
-            text = "Hello M3 theming",
-            style = MaterialTheme.typography.bodyLarge
-        )
-    }
-}
-
-private object Material3Snippet9 {
-    @Composable
-    fun Material3Theming() {
-        Surface(
-            tonalElevation = 16.dp,
-            shadowElevation = 16.dp
-        ) {
-            // Surface content
-        }
-    }
-}
-
-/*
-Fakes needed for snippets to build:
- */
-
-private val Blue80 = Color(0xff1e40ff)
-private val DarkBlue80 = Color(0xff3e41f4)
-private val Yellow80 = Color(0xff7d5700)
-
-private val DarkColorScheme = darkColorScheme()
-private val LightColorScheme = lightColorScheme()
-
-private const val darkTheme = true
-
-private val AppTypography = Typography()
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/tutorial/Tutorial.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/tutorial/Tutorial.kt
index da8c1bc..4f9fd87 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/tutorial/Tutorial.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/tutorial/Tutorial.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.Text
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/tutorial/Tutorial.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/tutorial/Tutorial.kt
index b0b7e65..b17b824 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/tutorial/Tutorial.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/tutorial/Tutorial.kt
@@ -38,8 +38,8 @@
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.integration.tutorial.Lesson2_Layouts.Snippet4.MessageCard
 import androidx.compose.integration.tutorial.Lesson2_Layouts.Snippet1.Message
+import androidx.compose.integration.tutorial.Lesson2_Layouts.Snippet4.MessageCard
 import androidx.compose.integration.tutorial.Lesson4_ListsAnimations.Snippet1.Conversation
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.Surface
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml b/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
index 0b745aa..39a5d41 100644
--- a/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
+++ b/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
@@ -28,16 +28,19 @@
         <profileable android:shell="true"/>
 
         <!--
-        Activities need to be exported so the macrobenchmark can discover them
-        under the new package visibility changes for Android 11.
+        Activities need to be exported so the macrobenchmark can discover them.
+
+        Feel free to add the launcher intent filter to enable easier profiling,
+        just be sure to add a consistent label.
          -->
         <activity
             android:name=".TrivialStartupActivity"
+            android:label="C Trivial"
             android:exported="true">
-            <!--            <intent-filter>-->
-            <!--                <action android:name="android.intent.action.MAIN" />-->
-            <!--                <category android:name="android.intent.category.LAUNCHER" />-->
-            <!--            </intent-filter>-->
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
             <intent-filter>
                 <action android:name="androidx.compose.integration.macrobenchmark.target.TRIVIAL_STARTUP_ACTIVITY" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -54,10 +57,6 @@
         <activity
             android:name=".IoSettingsActivity"
             android:exported="true">
-            <!--            <intent-filter>-->
-            <!--                <action android:name="android.intent.action.MAIN" />-->
-            <!--                <category android:name="android.intent.category.LAUNCHER" />-->
-            <!--            </intent-filter>-->
             <intent-filter>
                 <action android:name="androidx.compose.integration.macrobenchmark.target.IO_SETTINGS_ACTIVITY" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -65,8 +64,13 @@
         </activity>
         <activity
             android:name=".LazyColumnActivity"
+            android:label="C LazyColumn"
             android:exported="true">
             <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+            <intent-filter>
                 <action android:name="androidx.compose.integration.macrobenchmark.target.LAZY_COLUMN_ACTIVITY" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
diff --git a/compose/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/NavGraph.kt b/compose/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/NavGraph.kt
index 21bee2a..22f5db5 100644
--- a/compose/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/NavGraph.kt
+++ b/compose/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/NavGraph.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.material.catalog.library.MaterialCatalogApp
 import androidx.compose.material.catalog.library.MaterialRoute
-import androidx.compose.material.catalog.model.MaterialSpecification
 import androidx.compose.material.catalog.model.Material3Specification
+import androidx.compose.material.catalog.model.MaterialSpecification
 import androidx.compose.material.catalog.model.Specifications
 import androidx.compose.material.catalog.ui.specification.Specification
 import androidx.compose.material3.catalog.library.Material3CatalogApp
diff --git a/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt b/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
index 47b7cad..1d2a07a 100644
--- a/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
+++ b/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
@@ -21,8 +21,8 @@
 import com.android.tools.lint.checks.infrastructure.LintDetectorTest.kotlin
 import com.android.tools.lint.checks.infrastructure.TestFile
 import com.android.tools.lint.checks.infrastructure.TestFiles.bytecode
-import org.intellij.lang.annotations.Language
 import java.util.Locale
+import org.intellij.lang.annotations.Language
 
 /**
  * Common Compose-related bytecode lint stubs used for testing
diff --git a/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt b/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt
index e8aa463..6c011af 100644
--- a/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt
+++ b/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt
@@ -20,15 +20,15 @@
 
 import androidx.compose.lint.test.Stubs
 import androidx.compose.lint.test.kotlinAndBytecodeStub
-import com.android.tools.lint.checks.infrastructure.TestLintResult
-import org.junit.Test
-import org.junit.runner.RunWith
 import com.android.tools.lint.checks.infrastructure.LintDetectorTest
 import com.android.tools.lint.checks.infrastructure.TestFile
+import com.android.tools.lint.checks.infrastructure.TestLintResult
 import com.android.tools.lint.checks.infrastructure.TestMode
 import com.android.tools.lint.detector.api.Detector
 import com.android.tools.lint.detector.api.Issue
 import org.intellij.lang.annotations.Language
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
 /* ktlint-disable max-line-length */
diff --git a/compose/material/material-icons-core/samples/build.gradle b/compose/material/material-icons-core/samples/build.gradle
index 040d910..0977215 100644
--- a/compose/material/material-icons-core/samples/build.gradle
+++ b/compose/material/material-icons-core/samples/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Core Material Icons Samples"
+    name = "Compose UI Core Material Icons Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Core Material Icons"
diff --git a/compose/material/material-icons-core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt b/compose/material/material-icons-core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
index 3031458..813f3ad 100644
--- a/compose/material/material-icons-core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
+++ b/compose/material/material-icons-core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
@@ -27,8 +27,8 @@
 import androidx.compose.ui.graphics.StrokeCap
 import androidx.compose.ui.graphics.StrokeJoin
 import androidx.compose.ui.graphics.vector.DefaultFillType
-import androidx.compose.ui.graphics.vector.PathBuilder
 import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.graphics.vector.PathBuilder
 import androidx.compose.ui.graphics.vector.path
 import androidx.compose.ui.unit.dp
 
diff --git a/compose/material/material-lint/src/main/java/androidx/compose/material/lint/ColorsDetector.kt b/compose/material/material-lint/src/main/java/androidx/compose/material/lint/ColorsDetector.kt
index 0e1a911..cedd663 100644
--- a/compose/material/material-lint/src/main/java/androidx/compose/material/lint/ColorsDetector.kt
+++ b/compose/material/material-lint/src/main/java/androidx/compose/material/lint/ColorsDetector.kt
@@ -33,6 +33,7 @@
 import com.android.tools.lint.detector.api.UastLintUtils
 import com.intellij.psi.PsiParameter
 import com.intellij.psi.PsiVariable
+import java.util.EnumSet
 import org.jetbrains.kotlin.asJava.elements.KtLightParameter
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.UElement
@@ -40,7 +41,6 @@
 import org.jetbrains.uast.toUElement
 import org.jetbrains.uast.tryResolve
 import org.jetbrains.uast.util.isConstructorCall
-import java.util.EnumSet
 
 /**
  * [Detector] that checks `Colors` definitions for correctness.
diff --git a/compose/material/material-ripple/src/androidMain/kotlin/androidx/compose/material/ripple/Ripple.android.kt b/compose/material/material-ripple/src/androidMain/kotlin/androidx/compose/material/ripple/Ripple.android.kt
index 2c574e4..928b4ff 100644
--- a/compose/material/material-ripple/src/androidMain/kotlin/androidx/compose/material/ripple/Ripple.android.kt
+++ b/compose/material/material-ripple/src/androidMain/kotlin/androidx/compose/material/ripple/Ripple.android.kt
@@ -37,8 +37,8 @@
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.isUnspecified
-import kotlinx.coroutines.CoroutineScope
 import kotlin.math.roundToInt
+import kotlinx.coroutines.CoroutineScope
 
 /**
  * Android specific Ripple implementation that uses a [RippleDrawable] under the hood, which allows
diff --git a/compose/material/material-ripple/src/commonMain/kotlin/androidx/compose/material/ripple/RippleAnimation.kt b/compose/material/material-ripple/src/commonMain/kotlin/androidx/compose/material/ripple/RippleAnimation.kt
index 6005049..b4aa27b 100644
--- a/compose/material/material-ripple/src/commonMain/kotlin/androidx/compose/material/ripple/RippleAnimation.kt
+++ b/compose/material/material-ripple/src/commonMain/kotlin/androidx/compose/material/ripple/RippleAnimation.kt
@@ -33,10 +33,10 @@
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.isUnspecified
 import androidx.compose.ui.util.lerp
+import kotlin.math.max
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
-import kotlin.math.max
 
 /**
  * [RippleAnimation]s are drawn as part of [Ripple] as a visual indicator for an
diff --git a/compose/material/material-ripple/src/test/kotlin/androidx/compose/material/ripple/RippleAnimationTest.kt b/compose/material/material-ripple/src/test/kotlin/androidx/compose/material/ripple/RippleAnimationTest.kt
index 31838e1..2bb2aec 100644
--- a/compose/material/material-ripple/src/test/kotlin/androidx/compose/material/ripple/RippleAnimationTest.kt
+++ b/compose/material/material-ripple/src/test/kotlin/androidx/compose/material/ripple/RippleAnimationTest.kt
@@ -19,10 +19,10 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.dp
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.sqrt
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.math.sqrt
 
 @RunWith(JUnit4::class)
 class RippleAnimationTest {
diff --git a/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt b/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt
index d705315..f264ab4 100644
--- a/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt
+++ b/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt
@@ -19,24 +19,24 @@
 import androidx.compose.material.icons.generator.Icon
 import androidx.compose.material.icons.generator.IconProcessor
 import com.android.build.gradle.LibraryExtension
+import java.io.File
+import java.util.Locale
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.InputDirectory
 import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.Internal
 import org.gradle.api.tasks.Optional
 import org.gradle.api.tasks.OutputDirectory
 import org.gradle.api.tasks.OutputFile
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
-import org.gradle.api.tasks.Internal
 import org.gradle.api.tasks.TaskProvider
 import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
 import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
-import java.io.File
-import java.util.Locale
 
 /**
  * Base [org.gradle.api.Task] for tasks relating to icon generation.
diff --git a/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconSourceTasks.kt b/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconSourceTasks.kt
index 4e62a3d..9e8c3fe 100644
--- a/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconSourceTasks.kt
+++ b/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconSourceTasks.kt
@@ -18,12 +18,12 @@
 
 import androidx.compose.material.icons.generator.CoreIcons
 import androidx.compose.material.icons.generator.IconWriter
+import java.io.File
 import org.gradle.api.Project
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Jar
 import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
-import java.io.File
 
 /**
  * Task responsible for converting core icons from xml to a programmatic representation.
diff --git a/compose/material/material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/IconProcessorTest.kt b/compose/material/material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/IconProcessorTest.kt
index 0e11d8c..15c45cb 100644
--- a/compose/material/material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/IconProcessorTest.kt
+++ b/compose/material/material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/IconProcessorTest.kt
@@ -17,13 +17,13 @@
 package androidx.compose.material.icons.generator
 
 import com.google.common.truth.Truth
+import java.io.File
 import org.junit.Assert.fail
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.io.File
 
 /**
  * Test for [IconProcessor].
diff --git a/compose/material/material/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/library/model/Examples.kt b/compose/material/material/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/library/model/Examples.kt
index 30fa679..4154cf1 100644
--- a/compose/material/material/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/library/model/Examples.kt
+++ b/compose/material/material/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/library/model/Examples.kt
@@ -25,8 +25,8 @@
 import androidx.compose.material.samples.AlertDialogSample
 import androidx.compose.material.samples.BackdropScaffoldSample
 import androidx.compose.material.samples.BottomDrawerSample
-import androidx.compose.material.samples.BottomNavigationSample
 import androidx.compose.material.samples.BottomNavigationItemWithBadge
+import androidx.compose.material.samples.BottomNavigationSample
 import androidx.compose.material.samples.BottomNavigationWithOnlySelectedLabelsSample
 import androidx.compose.material.samples.BottomSheetScaffoldSample
 import androidx.compose.material.samples.ButtonSample
diff --git a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ColorPickerDemo.kt b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ColorPickerDemo.kt
index 4aff510..a2e1d22 100644
--- a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ColorPickerDemo.kt
+++ b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ColorPickerDemo.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
-import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitEachGesture
+import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.drag
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxWithConstraints
diff --git a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/DynamicThemeActivity.kt b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/DynamicThemeActivity.kt
index 9489001..8612e36 100644
--- a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/DynamicThemeActivity.kt
+++ b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/DynamicThemeActivity.kt
@@ -23,8 +23,8 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.LazyListState
 import androidx.compose.foundation.lazy.rememberLazyListState
diff --git a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialDemos.kt b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialDemos.kt
index 6eaf8ed..111e82d 100644
--- a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialDemos.kt
+++ b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialDemos.kt
@@ -22,12 +22,12 @@
 import androidx.compose.material.samples.AlertDialogSample
 import androidx.compose.material.samples.BackdropScaffoldSample
 import androidx.compose.material.samples.BottomDrawerSample
-import androidx.compose.material.samples.CustomAlertDialogSample
-import androidx.compose.material.samples.ModalBottomSheetSample
-import androidx.compose.material.samples.ModalDrawerSample
 import androidx.compose.material.samples.BottomSheetScaffoldSample
 import androidx.compose.material.samples.ContentAlphaSample
+import androidx.compose.material.samples.CustomAlertDialogSample
 import androidx.compose.material.samples.CustomPullRefreshSample
+import androidx.compose.material.samples.ModalBottomSheetSample
+import androidx.compose.material.samples.ModalDrawerSample
 import androidx.compose.material.samples.PullRefreshIndicatorTransformSample
 import androidx.compose.material.samples.PullRefreshSample
 import androidx.compose.material.samples.ScaffoldWithBottomBarAndCutout
diff --git a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialTextField.kt b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialTextField.kt
index 858e9de..77c8de6 100644
--- a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialTextField.kt
+++ b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialTextField.kt
@@ -24,12 +24,12 @@
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredHeightIn
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.rememberScrollState
diff --git a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MenuDemo.kt b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MenuDemo.kt
index caf5517..c5cb10f 100644
--- a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MenuDemo.kt
+++ b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MenuDemo.kt
@@ -33,10 +33,10 @@
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
-import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.dp
 import kotlin.math.roundToInt
 
diff --git a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ProgressIndicatorDemo.kt b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ProgressIndicatorDemo.kt
index b3aaf5c..c3edd69 100644
--- a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ProgressIndicatorDemo.kt
+++ b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/ProgressIndicatorDemo.kt
@@ -18,9 +18,9 @@
 
 import android.os.Handler
 import android.os.Looper
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.border
 import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
diff --git a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/TabDemo.kt b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/TabDemo.kt
index 43a42d1..2837fc3 100644
--- a/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/TabDemo.kt
+++ b/compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/TabDemo.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.Button
@@ -29,10 +29,10 @@
 import androidx.compose.material.samples.FancyIndicatorTabs
 import androidx.compose.material.samples.FancyTabs
 import androidx.compose.material.samples.IconTabs
+import androidx.compose.material.samples.LeadingIconTabs
 import androidx.compose.material.samples.ScrollingFancyIndicatorContainerTabs
 import androidx.compose.material.samples.ScrollingTextTabs
 import androidx.compose.material.samples.TextAndIconTabs
-import androidx.compose.material.samples.LeadingIconTabs
 import androidx.compose.material.samples.TextTabs
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableStateOf
diff --git a/compose/material/material/samples/build.gradle b/compose/material/material/samples/build.gradle
index 0b5f612..73cef10 100644
--- a/compose/material/material/samples/build.gradle
+++ b/compose/material/material/samples/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Material Components Samples"
+    name = "Compose Material Components Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the AndroidX Compose Material components."
diff --git a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/BottomSheetScaffoldSamples.kt b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/BottomSheetScaffoldSamples.kt
index 85a3567..d9155c8 100644
--- a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/BottomSheetScaffoldSamples.kt
+++ b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/BottomSheetScaffoldSamples.kt
@@ -22,8 +22,8 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.material.BottomSheetScaffold
 import androidx.compose.material.Button
diff --git a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/ScaffoldSamples.kt b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/ScaffoldSamples.kt
index 370b121..66e071f 100644
--- a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/ScaffoldSamples.kt
+++ b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/ScaffoldSamples.kt
@@ -57,12 +57,12 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.unit.dp
+import kotlin.math.abs
+import kotlin.math.roundToInt
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.receiveAsFlow
 import kotlinx.coroutines.launch
-import kotlin.math.abs
-import kotlin.math.roundToInt
 
 private val colors = listOf(
     Color(0xFFffd7d7.toInt()),
diff --git a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SelectionControlsSamples.kt b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SelectionControlsSamples.kt
index cdad91a..dd3ae10 100644
--- a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SelectionControlsSamples.kt
+++ b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SelectionControlsSamples.kt
@@ -17,18 +17,18 @@
 package androidx.compose.material.samples
 
 import androidx.annotation.Sampled
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.foundation.selection.selectable
 import androidx.compose.foundation.selection.selectableGroup
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.selection.toggleable
 import androidx.compose.material.Checkbox
 import androidx.compose.material.CheckboxDefaults
@@ -38,22 +38,22 @@
 import androidx.compose.material.Text
 import androidx.compose.material.TriStateCheckbox
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
 import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.ExperimentalComposeUiApi
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.input.InputMode.Companion.Keyboard
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalInputModeManager
-import androidx.compose.ui.semantics.role
 import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.role
 import androidx.compose.ui.state.ToggleableState
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.ExperimentalComposeUiApi
 
 @Sampled
 @Composable
diff --git a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SwipeableSamples.kt b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SwipeableSamples.kt
index e38cd70..afe146a 100644
--- a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SwipeableSamples.kt
+++ b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/SwipeableSamples.kt
@@ -18,6 +18,7 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.background
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.size
@@ -30,7 +31,6 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.unit.IntOffset
diff --git a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TabSamples.kt b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TabSamples.kt
index 93f09c5..6ac79a1 100644
--- a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TabSamples.kt
+++ b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TabSamples.kt
@@ -29,21 +29,21 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material.Icon
+import androidx.compose.material.LeadingIconTab
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.ScrollableTabRow
 import androidx.compose.material.Tab
-import androidx.compose.material.TabRowDefaults.tabIndicatorOffset
 import androidx.compose.material.TabPosition
 import androidx.compose.material.TabRow
-import androidx.compose.material.LeadingIconTab
+import androidx.compose.material.TabRowDefaults.tabIndicatorOffset
 import androidx.compose.material.Text
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Favorite
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt
index 323ee25..863e352 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt
@@ -79,10 +79,10 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.abs
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.abs
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxTest.kt
index 7d233e4..64005ba 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxTest.kt
@@ -28,18 +28,18 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.platform.testTag
-import androidx.compose.ui.semantics.SemanticsProperties
 import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.SemanticsProperties
 import androidx.compose.ui.semantics.focused
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.state.ToggleableState
 import androidx.compose.ui.state.ToggleableState.Indeterminate
 import androidx.compose.ui.state.ToggleableState.Off
 import androidx.compose.ui.state.ToggleableState.On
-import androidx.compose.ui.test.assertHasClickAction
-import androidx.compose.ui.test.assertHasNoClickAction
 import androidx.compose.ui.test.SemanticsMatcher
 import androidx.compose.ui.test.assert
+import androidx.compose.ui.test.assertHasClickAction
+import androidx.compose.ui.test.assertHasNoClickAction
 import androidx.compose.ui.test.assertHeightIsEqualTo
 import androidx.compose.ui.test.assertIsEnabled
 import androidx.compose.ui.test.assertIsOff
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/DividerUiTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/DividerUiTest.kt
index 5b9920e..5609447 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/DividerUiTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/DividerUiTest.kt
@@ -37,10 +37,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/FloatingActionButtonTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/FloatingActionButtonTest.kt
index bfb6224..6ae0c2a 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/FloatingActionButtonTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/FloatingActionButtonTest.kt
@@ -20,8 +20,8 @@
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.requiredSize
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.shape.CutCornerShape
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Favorite
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/IconTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/IconTest.kt
index 77af7e3..e22a0c14 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/IconTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/IconTest.kt
@@ -26,8 +26,8 @@
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.graphics.drawscope.CanvasDrawScope
-import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.testTag
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ListItemTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ListItemTest.kt
index c16b858..e1e7ffd 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ListItemTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ListItemTest.kt
@@ -37,10 +37,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MenuTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MenuTest.kt
index 8ad3242..4d0270f 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MenuTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MenuTest.kt
@@ -19,8 +19,8 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.requiredSize
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
@@ -40,11 +40,11 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.performClick
 import androidx.compose.ui.unit.Density
-import androidx.compose.ui.unit.IntRect
+import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.IntOffset
+import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
-import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ObservableThemeTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ObservableThemeTest.kt
index b3ed829..b653c19 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ObservableThemeTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ObservableThemeTest.kt
@@ -18,9 +18,9 @@
 
 import androidx.activity.ComponentActivity
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.MutableState
-import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonTest.kt
index d34df51..04cd5e3 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonTest.kt
@@ -21,8 +21,8 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.testTag
-import androidx.compose.ui.semantics.SemanticsProperties
 import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.SemanticsProperties
 import androidx.compose.ui.semantics.focused
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.test.SemanticsMatcher
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SnackbarHostTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SnackbarHostTest.kt
index 5feb341..7eff0db 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SnackbarHostTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SnackbarHostTest.kt
@@ -34,10 +34,6 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth
-import org.mockito.kotlin.any
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.delay
@@ -47,6 +43,10 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.AdditionalMatchers.not
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt
index 126b642..26b529d 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwipeableTest.kt
@@ -51,6 +51,7 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.sign
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.async
 import kotlinx.coroutines.launch
@@ -61,7 +62,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.sign
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwitchScreenshotTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwitchScreenshotTest.kt
index 01414b2..cb03029 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwitchScreenshotTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwitchScreenshotTest.kt
@@ -29,10 +29,10 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.input.InputMode
 import androidx.compose.ui.input.InputModeManager
 import androidx.compose.ui.platform.LocalInputModeManager
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.ExperimentalTestApi
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/OutlinedTextFieldTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/OutlinedTextFieldTest.kt
index 91e8bc5..1c4e841 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/OutlinedTextFieldTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/OutlinedTextFieldTest.kt
@@ -102,16 +102,16 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.atLeastOnce
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
 import kotlin.math.max
 import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.atLeastOnce
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
index 5680102..214cfb7 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
@@ -20,21 +20,21 @@
 import android.os.Build
 import android.view.View
 import android.view.inputmethod.InputMethodManager
+import androidx.compose.foundation.background
 import androidx.compose.foundation.interaction.FocusInteraction
 import androidx.compose.foundation.interaction.Interaction
 import androidx.compose.foundation.interaction.MutableInteractionSource
-import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.IntrinsicSize
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.text.KeyboardOptions
 import androidx.compose.material.Divider
@@ -118,18 +118,18 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.atLeastOnce
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
+import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
+import org.mockito.kotlin.any
+import org.mockito.kotlin.atLeastOnce
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material/material/src/androidMain/kotlin/androidx/compose/material/internal/ExposedDropdownMenuPopup.kt b/compose/material/material/src/androidMain/kotlin/androidx/compose/material/internal/ExposedDropdownMenuPopup.kt
index 006240b..d6f140d 100644
--- a/compose/material/material/src/androidMain/kotlin/androidx/compose/material/internal/ExposedDropdownMenuPopup.kt
+++ b/compose/material/material/src/androidMain/kotlin/androidx/compose/material/internal/ExposedDropdownMenuPopup.kt
@@ -65,8 +65,8 @@
 import androidx.compose.ui.util.fastMap
 import androidx.compose.ui.window.PopupPositionProvider
 import androidx.lifecycle.findViewTreeLifecycleOwner
-import androidx.lifecycle.setViewTreeLifecycleOwner
 import androidx.lifecycle.findViewTreeViewModelStoreOwner
+import androidx.lifecycle.setViewTreeLifecycleOwner
 import androidx.lifecycle.setViewTreeViewModelStoreOwner
 import androidx.savedstate.findViewTreeSavedStateRegistryOwner
 import androidx.savedstate.setViewTreeSavedStateRegistryOwner
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BackdropScaffold.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BackdropScaffold.kt
index de183dc..ed10ccf 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BackdropScaffold.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BackdropScaffold.kt
@@ -59,11 +59,11 @@
 import androidx.compose.ui.util.fastForEach
 import androidx.compose.ui.util.fastMap
 import androidx.compose.ui.zIndex
-import kotlinx.coroutines.CancellationException
-import kotlinx.coroutines.launch
 import kotlin.math.max
 import kotlin.math.min
 import kotlin.math.roundToInt
+import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.launch
 
 /**
  * Possible values of [BackdropScaffoldState].
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BottomSheetScaffold.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BottomSheetScaffold.kt
index c674017..a8f712b 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BottomSheetScaffold.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/BottomSheetScaffold.kt
@@ -23,9 +23,9 @@
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.requiredHeightIn
+import androidx.compose.material.AnchoredDraggableState.AnchorChangedCallback
 import androidx.compose.material.BottomSheetValue.Collapsed
 import androidx.compose.material.BottomSheetValue.Expanded
-import androidx.compose.material.AnchoredDraggableState.AnchorChangedCallback
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.SideEffect
 import androidx.compose.runtime.Stable
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Divider.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Divider.kt
index e8c9fad..53b3b31 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Divider.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Divider.kt
@@ -16,11 +16,11 @@
 
 package androidx.compose.material
 
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt
index f42d552..d7162a6 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt
@@ -30,10 +30,10 @@
 import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.sizeIn
+import androidx.compose.material.AnchoredDraggableState.AnchorChangedCallback
 import androidx.compose.material.BottomDrawerValue.Closed
 import androidx.compose.material.BottomDrawerValue.Expanded
 import androidx.compose.material.BottomDrawerValue.Open
-import androidx.compose.material.AnchoredDraggableState.AnchorChangedCallback
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.SideEffect
 import androidx.compose.runtime.Stable
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/IconButton.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/IconButton.kt
index 8ffc43d..fc5182e 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/IconButton.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/IconButton.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.material
 
+import androidx.compose.foundation.clickable
 import androidx.compose.foundation.interaction.Interaction
 import androidx.compose.foundation.interaction.MutableInteractionSource
-import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.selection.toggleable
 import androidx.compose.material.ripple.rememberRipple
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/ListItem.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/ListItem.kt
index 6b1cd00..d3b5ef5 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/ListItem.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/ListItem.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.sizeIn
 import androidx.compose.foundation.layout.widthIn
 import androidx.compose.runtime.Composable
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTextSelectionColors.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTextSelectionColors.kt
index aea6370..3cbb183 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTextSelectionColors.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTextSelectionColors.kt
@@ -16,13 +16,13 @@
 
 package androidx.compose.material
 
+import androidx.compose.foundation.text.selection.TextSelectionColors
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.luminance
 import androidx.compose.ui.graphics.takeOrElse
-import androidx.compose.foundation.text.selection.TextSelectionColors
 import kotlin.math.max
 import kotlin.math.min
 
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTheme.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTheme.kt
index 50396c8..eaf511a 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTheme.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/MaterialTheme.kt
@@ -17,15 +17,15 @@
 package androidx.compose.material
 
 import androidx.compose.foundation.LocalIndication
+import androidx.compose.foundation.text.selection.LocalTextSelectionColors
 import androidx.compose.material.ripple.LocalRippleTheme
 import androidx.compose.material.ripple.RippleTheme
 import androidx.compose.material.ripple.rememberRipple
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.ReadOnlyComposable
 import androidx.compose.runtime.remember
-import androidx.compose.foundation.text.selection.LocalTextSelectionColors
 
 /**
  * <a href="https://material.io/design/material-theming/overview.html" class="external" target="_blank">Material Theming</a>.
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Slider.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Slider.kt
index 316474c..3f01485 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Slider.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Slider.kt
@@ -27,10 +27,10 @@
 import androidx.compose.foundation.gestures.DraggableState
 import androidx.compose.foundation.gestures.GestureCancellationException
 import androidx.compose.foundation.gestures.Orientation
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.gestures.draggable
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.horizontalDrag
 import androidx.compose.foundation.hoverable
 import androidx.compose.foundation.indication
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SnackbarHost.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SnackbarHost.kt
index 5e00644..e1af01b 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SnackbarHost.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SnackbarHost.kt
@@ -42,12 +42,12 @@
 import androidx.compose.ui.semantics.liveRegion
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.util.fastForEach
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
-import kotlin.coroutines.resume
 
 /**
  * State of the [SnackbarHost], controls the queue and the current [Snackbar] being shown inside
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SwipeToDismiss.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SwipeToDismiss.kt
index 0aa1377..1cda288 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SwipeToDismiss.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/SwipeToDismiss.kt
@@ -38,8 +38,8 @@
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.dp
-import kotlinx.coroutines.CancellationException
 import kotlin.math.roundToInt
+import kotlinx.coroutines.CancellationException
 
 /**
  * The directions in which a [SwipeToDismiss] can be dismissed.
diff --git a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt
index 1c886e0..125aaed 100644
--- a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt
+++ b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt
@@ -31,15 +31,15 @@
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.window.Dialog as CoreDialog
 import androidx.compose.ui.window.Popup
 import androidx.compose.ui.window.PopupPositionProvider
 import androidx.compose.ui.window.rememberDialogState
-import androidx.compose.ui.window.Dialog as CoreDialog
 
 /**
  * Alert dialog is a Dialog which interrupts the user with urgent information, details or actions.
diff --git a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
index ea91b6c..ba88fef 100644
--- a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
+++ b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
@@ -17,11 +17,11 @@
 package androidx.compose.material
 
 import androidx.compose.animation.core.MutableTransitionState
+import androidx.compose.foundation.ScrollState
 import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.layout.ColumnScope
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.RowScope
-import androidx.compose.foundation.ScrollState
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Immutable
@@ -32,14 +32,14 @@
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.DpOffset
-import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
-import androidx.compose.ui.window.rememberCursorPositionProvider
+import androidx.compose.ui.unit.dp
 import androidx.compose.ui.window.Popup
 import androidx.compose.ui.window.PopupPositionProvider
+import androidx.compose.ui.window.rememberCursorPositionProvider
 
 /**
  * A Material Design [dropdown menu](https://material.io/components/menus#dropdown-menu).
diff --git a/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopAlertDialogTest.kt b/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopAlertDialogTest.kt
index 0537f91..cc5e759 100644
--- a/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopAlertDialogTest.kt
+++ b/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopAlertDialogTest.kt
@@ -18,20 +18,20 @@
 
 import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.layout.positionInRoot
-import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.unit.Density
-import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.IntSize
+import androidx.compose.ui.unit.dp
 import com.google.common.truth.Truth.assertThat
-import org.junit.runners.JUnit4
-import org.junit.runner.RunWith
 import org.junit.Rule
 import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class DesktopAlertDialogTest {
diff --git a/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopMenuTest.kt b/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopMenuTest.kt
index d658276..7ec3efcb 100644
--- a/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopMenuTest.kt
+++ b/compose/material/material/src/desktopTest/kotlin/androidx/compose/material/DesktopMenuTest.kt
@@ -23,9 +23,9 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import com.google.common.truth.Truth.assertThat
-import org.junit.runners.JUnit4
-import org.junit.runner.RunWith
 import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class DesktopMenuTest {
diff --git a/compose/material3/material3-adaptive/api/public_plus_experimental_current.txt b/compose/material3/material3-adaptive/api/public_plus_experimental_current.txt
index e6f50d0..8ae70d9 100644
--- a/compose/material3/material3-adaptive/api/public_plus_experimental_current.txt
+++ b/compose/material3/material3-adaptive/api/public_plus_experimental_current.txt
@@ -1 +1,8 @@
 // Signature format: 4.0
+package androidx.compose.material3.adaptive {
+
+  @kotlin.RequiresOptIn(message="This material3-adaptive API is experimental and is likely to change or to be" + "removed in the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalMaterial3AdaptiveApi {
+  }
+
+}
+
diff --git a/compose/material3/material3-adaptive/build.gradle b/compose/material3/material3-adaptive/build.gradle
index b1aaced..57252de 100644
--- a/compose/material3/material3-adaptive/build.gradle
+++ b/compose/material3/material3-adaptive/build.gradle
@@ -36,6 +36,7 @@
             dependencies {
                 implementation(libs.kotlinStdlibCommon)
                 api(project(":compose:foundation:foundation"))
+                implementation(project(":compose:material3:material3"))
             }
         }
 
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeFlags.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ExperimentalMaterial3AdaptiveApi.kt
similarity index 63%
rename from compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeFlags.kt
rename to compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ExperimentalMaterial3AdaptiveApi.kt
index 99d7528..eb78310 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposeFlags.kt
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ExperimentalMaterial3AdaptiveApi.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2023 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,9 +14,11 @@
  * limitations under the License.
  */
 
-package androidx.compose.compiler.plugins.kotlin
+package androidx.compose.material3.adaptive
 
-object ComposeFlags {
-    var FRAMED_COMPONENTS = false
-    var FRAMED_MODEL_CLASSES = true
-}
\ No newline at end of file
+@RequiresOptIn(
+    "This material3-adaptive API is experimental and is likely to change or to be" +
+        "removed in the future."
+)
+@Retention(AnnotationRetention.BINARY)
+annotation class ExperimentalMaterial3AdaptiveApi
\ No newline at end of file
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/NavigationSuite.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/NavigationSuite.kt
new file mode 100644
index 0000000..002f5f5
--- /dev/null
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/NavigationSuite.kt
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.material3.adaptive
+
+import androidx.compose.foundation.layout.Box
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.contentColorFor
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.Layout
+import androidx.compose.ui.layout.layoutId
+
+/**
+ * The Navigation Suite wraps the provided content and places the adequate provided navigation
+ * component on the screen according to the current NavigationLayoutType.
+ *
+ * TODO: Add the navigationLayoutType param
+ * @param modifier the [Modifier] to be applied to the navigation suite
+ * @param navigationComponent the navigation component to be displayed
+ * @param containerColor the color used for the background of the navigation suite. Use
+ * [Color.Transparent] to have no color.
+ * @param contentColor the preferred color for content inside the navigation suite. Defaults to
+ * either the matching content color for [containerColor], or to the current LocalContentColor if
+ * [containerColor] is not a color from the theme.
+ * @param content the content of your screen
+ *
+ * TODO: Remove "internal".
+ */
+@ExperimentalMaterial3AdaptiveApi
+@Composable
+internal fun NavigationSuite(
+    modifier: Modifier = Modifier,
+    navigationComponent: @Composable () -> Unit,
+    containerColor: Color = MaterialTheme.colorScheme.background,
+    contentColor: Color = contentColorFor(containerColor),
+    content: @Composable () -> Unit = {},
+) {
+    Surface(modifier = modifier, color = containerColor, contentColor = contentColor) {
+        NavigationSuiteLayout(
+            navigationComponent = navigationComponent,
+            content = content
+        )
+    }
+}
+
+/**
+ * Layout for a [NavigationSuite]'s content.
+ *
+ * TODO: Add the navigationLayoutType param.
+ * @param navigationComponent the navigation component of the [NavigationSuite]
+ * @param content the main body of the [NavigationSuite]
+ */
+@OptIn(ExperimentalMaterial3AdaptiveApi::class)
+@Composable
+private fun NavigationSuiteLayout(
+    navigationComponent: @Composable () -> Unit,
+    content: @Composable () -> Unit = {}
+) {
+    Layout(
+        content = {
+            Box(modifier = Modifier.layoutId("navigation")) { navigationComponent() }
+            Box(modifier = Modifier.layoutId("content")) { content() }
+        }
+    ) { _, constraints ->
+        val layoutHeight = constraints.maxHeight
+        val layoutWidth = constraints.maxWidth
+
+        layout(layoutWidth, layoutHeight) {
+            // TODO: Add the placement logic based on the NavigationLayoutType.
+        }
+    }
+}
+
+/* TODO: Add NavigationLayoutType class and NavigationSuiteFeature. */
\ No newline at end of file
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/androidx-compose-material3-adaptive-documentation.md b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/androidx-compose-material3-adaptive-documentation.md
similarity index 100%
rename from compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/androidx-compose-material3-adaptive-documentation.md
rename to compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/androidx-compose-material3-adaptive-documentation.md
diff --git a/compose/material3/material3-window-size-class/samples/build.gradle b/compose/material3/material3-window-size-class/samples/build.gradle
index 4dc7891..71ffc63d1 100644
--- a/compose/material3/material3-window-size-class/samples/build.gradle
+++ b/compose/material3/material3-window-size-class/samples/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Material 3 Window Size Class Samples"
+    name = "Compose Material 3 Window Size Class Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2022"
     description = "Contains the sample code for the Material 3 Window Size Class APIs"
diff --git a/compose/material3/material3/api/public_plus_experimental_current.txt b/compose/material3/material3/api/public_plus_experimental_current.txt
index a2231ee..142cbc5 100644
--- a/compose/material3/material3/api/public_plus_experimental_current.txt
+++ b/compose/material3/material3/api/public_plus_experimental_current.txt
@@ -87,12 +87,14 @@
     method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.Shape getHiddenShape();
     method @androidx.compose.runtime.Composable public long getScrimColor();
     method public float getSheetPeekHeight();
+    method @androidx.compose.runtime.Composable public androidx.compose.foundation.layout.WindowInsets getWindowInsets();
     property @androidx.compose.runtime.Composable public final long ContainerColor;
     property public final float Elevation;
     property @androidx.compose.runtime.Composable public final androidx.compose.ui.graphics.Shape ExpandedShape;
     property @androidx.compose.runtime.Composable public final androidx.compose.ui.graphics.Shape HiddenShape;
     property @androidx.compose.runtime.Composable public final long ScrimColor;
     property public final float SheetPeekHeight;
+    property @androidx.compose.runtime.Composable public final androidx.compose.foundation.layout.WindowInsets windowInsets;
     field public static final androidx.compose.material3.BottomSheetDefaults INSTANCE;
   }
 
@@ -699,7 +701,7 @@
   }
 
   public final class ModalBottomSheet_androidKt {
-    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void ModalBottomSheet(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.material3.SheetState sheetState, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional float tonalElevation, optional long scrimColor, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dragHandle, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void ModalBottomSheet(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.material3.SheetState sheetState, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long contentColor, optional float tonalElevation, optional long scrimColor, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dragHandle, optional androidx.compose.foundation.layout.WindowInsets windowInsets, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
     method @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static androidx.compose.material3.SheetState rememberModalBottomSheetState(optional boolean skipPartiallyExpanded, optional kotlin.jvm.functions.Function1<? super androidx.compose.material3.SheetValue,java.lang.Boolean> confirmValueChange);
   }
 
diff --git a/compose/material3/material3/build.gradle b/compose/material3/material3/build.gradle
index f300862..9583afe 100644
--- a/compose/material3/material3/build.gradle
+++ b/compose/material3/material3/build.gradle
@@ -16,6 +16,7 @@
 
 import androidx.build.AndroidXComposePlugin
 import androidx.build.LibraryType
+import androidx.build.KmpPlatformsKt
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 plugins {
@@ -25,71 +26,15 @@
     id("AndroidXPaparazziPlugin")
 }
 
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
 
-dependencies {
+androidXMultiplatform {
+    android()
+    if (desktopEnabled) desktop()
 
-
-    if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
-        /*
-         * When updating dependencies, make sure to make the an an analogous update in the
-         * corresponding block below
-         */
-        implementation(libs.kotlinStdlibCommon)
-        implementation("androidx.activity:activity-compose:1.5.0")
-        implementation(project(":compose:animation:animation"))
-        implementation(project(":compose:foundation:foundation-layout"))
-        implementation("androidx.compose.ui:ui-util:1.4.2")
-        api(project(":compose:foundation:foundation"))
-        api("androidx.compose.material:material-icons-core:1.4.2")
-        api("androidx.compose.material:material-ripple:1.4.2")
-        api("androidx.compose.runtime:runtime:1.4.2")
-        api("androidx.compose.ui:ui-graphics:1.4.2")
-        api("androidx.compose.ui:ui:1.4.2")
-        api(project(":compose:ui:ui-text"))
-
-        // TODO: remove next 3 dependencies when b/202810604 is fixed
-        implementation("androidx.savedstate:savedstate-ktx:1.2.1")
-        implementation("androidx.lifecycle:lifecycle-runtime:2.6.1")
-        implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.1")
-
-        implementation("androidx.lifecycle:lifecycle-common-java8:2.6.1")
-
-        testImplementation(libs.testRules)
-        testImplementation(libs.testRunner)
-        testImplementation(libs.junit)
-        testImplementation(libs.truth)
-
-        androidTestImplementation(project(":compose:material3:material3:material3-samples"))
-        androidTestImplementation(project(":compose:foundation:foundation-layout"))
-        androidTestImplementation(project(":compose:test-utils"))
-        androidTestImplementation(project(":test:screenshot:screenshot"))
-        androidTestImplementation(project(":core:core"))
-        androidTestImplementation(libs.testRules)
-        androidTestImplementation(libs.testRunner)
-        androidTestImplementation(libs.junit)
-        androidTestImplementation(libs.truth)
-        androidTestImplementation(libs.dexmakerMockitoInlineExtended)
-        androidTestImplementation(libs.mockitoKotlin)
-        androidTestImplementation(libs.testUiautomator)
-
-        lintPublish project(":compose:material3:material3-lint")
-    }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
-    androidXComposeMultiplatform {
-        android()
-        desktop()
-    }
-
-    kotlin {
-        /*
-         * When updating dependencies, make sure to make the an an analogous update in the
-         * corresponding block above
-         */
-        sourceSets {
-            commonMain.dependencies {
+    sourceSets {
+        commonMain {
+            dependencies {
                 implementation(libs.kotlinStdlibCommon)
                 implementation(project(":compose:animation:animation-core"))
 
@@ -103,8 +48,37 @@
                 implementation(project(":compose:ui:ui-util"))
                 implementation(project(":compose:foundation:foundation-layout"))
             }
+        }
 
-            androidMain.dependencies {
+        commonTest {
+            dependencies {
+            }
+        }
+
+        jvmMain {
+            dependsOn(commonMain)
+            dependencies {
+            }
+        }
+
+        if (desktopEnabled) {
+            skikoMain {
+                dependsOn(commonMain)
+                dependencies {
+                    api(project(":compose:animation:animation-core"))
+                    api(project(":compose:runtime:runtime"))
+                    api(project(":compose:ui:ui"))
+                    api(project(":compose:ui:ui-text"))
+                    implementation(project(":compose:animation:animation"))
+                    implementation(project(":compose:foundation:foundation-layout"))
+                    implementation(project(":compose:ui:ui-util"))
+                }
+            }
+        }
+
+        androidMain {
+            dependsOn(jvmMain)
+            dependencies {
                 api("androidx.annotation:annotation:1.1.0")
                 implementation("androidx.activity:activity-compose:1.5.0")
 
@@ -115,23 +89,41 @@
 
                 implementation("androidx.lifecycle:lifecycle-common-java8:2.6.1")
             }
+        }
 
-            desktopMain.dependencies {
-                implementation(libs.kotlinStdlib)
+        if (desktopEnabled) {
+            desktopMain {
+                dependsOn(skikoMain)
+                dependsOn(jvmMain)
+                dependencies {
+                    implementation(libs.kotlinStdlib)
+                }
             }
+        }
 
-            // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
-            //  need to add Robolectric (which must be kept out of androidAndroidTest), use a top
-            //  level dependencies block instead:
-            //  `dependencies { testImplementation(libs.robolectric) }`
-            androidTest.dependencies {
+        jvmTest {
+            dependsOn(commonTest)
+            dependencies {
+            }
+        }
+
+        // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+        //  need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+        //  level dependencies block instead:
+        //  `dependencies { testImplementation(libs.robolectric) }`
+        androidTest {
+            dependsOn(jvmTest)
+            dependencies {
                 implementation(libs.testRules)
                 implementation(libs.testRunner)
                 implementation(libs.junit)
                 implementation(libs.truth)
             }
+        }
 
-            androidAndroidTest.dependencies {
+        androidAndroidTest {
+            dependsOn(jvmTest)
+            dependencies {
                 implementation(project(":compose:material3:material3:material3-samples"))
                 implementation(project(":compose:test-utils"))
                 implementation(project(':compose:foundation:foundation-layout'))
@@ -146,9 +138,26 @@
                 implementation(libs.testUiautomator)
             }
         }
+
+        if (desktopEnabled) {
+            desktopTest {
+                dependsOn(jvmTest)
+                dependsOn(desktopMain)
+                dependencies {
+                    implementation(project(":compose:ui:ui-test-junit4"))
+                    implementation(libs.truth)
+                    implementation(libs.junit)
+                    implementation(libs.skikoCurrentOs)
+                }
+            }
+        }
     }
 }
 
+dependencies {
+    lintPublish project(":compose:material3:material3-lint")
+}
+
 androidx {
     name = "Compose Material3 Components"
     type = LibraryType.PUBLISHED_LIBRARY
diff --git a/compose/material3/material3/integration-tests/material3-demos/build.gradle b/compose/material3/material3/integration-tests/material3-demos/build.gradle
index fc83ff8..76ba389 100644
--- a/compose/material3/material3/integration-tests/material3-demos/build.gradle
+++ b/compose/material3/material3/integration-tests/material3-demos/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Material3 Components Demos"
+    name = "Compose Material3 Components Demos"
     publish = Publish.NONE
     inceptionYear = "2022"
     description = "Contains the demo code for the AndroidX Compose Material 3 components."
diff --git a/compose/material3/material3/samples/build.gradle b/compose/material3/material3/samples/build.gradle
index 075b5f4..eb9d9a3 100644
--- a/compose/material3/material3/samples/build.gradle
+++ b/compose/material3/material3/samples/build.gradle
@@ -47,7 +47,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Material3 Components Samples"
+    name = "Compose Material3 Components Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains the sample code for the AndroidX Compose Material You components."
diff --git a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/BottomSheetSamples.kt b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/BottomSheetSamples.kt
index 226ffc70..5e6f497 100644
--- a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/BottomSheetSamples.kt
+++ b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/BottomSheetSamples.kt
@@ -23,6 +23,7 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
@@ -33,6 +34,7 @@
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Favorite
 import androidx.compose.material.icons.filled.Menu
+import androidx.compose.material3.BottomSheetDefaults
 import androidx.compose.material3.BottomSheetScaffold
 import androidx.compose.material3.Button
 import androidx.compose.material3.Checkbox
@@ -70,6 +72,7 @@
 fun ModalBottomSheetSample() {
     var openBottomSheet by rememberSaveable { mutableStateOf(false) }
     var skipPartiallyExpanded by remember { mutableStateOf(false) }
+    var edgeToEdgeEnabled by remember { mutableStateOf(false) }
     val scope = rememberCoroutineScope()
     val bottomSheetState = rememberModalBottomSheetState(
         skipPartiallyExpanded = skipPartiallyExpanded
@@ -92,6 +95,17 @@
             Spacer(Modifier.width(16.dp))
             Text("Skip partially expanded State")
         }
+        Row(
+            Modifier.toggleable(
+                value = edgeToEdgeEnabled,
+                role = Role.Checkbox,
+                onValueChange = { checked -> edgeToEdgeEnabled = checked }
+            )
+        ) {
+            Checkbox(checked = edgeToEdgeEnabled, onCheckedChange = null)
+            Spacer(Modifier.width(16.dp))
+            Text("Toggle edge to edge enabled.")
+        }
         Button(onClick = { openBottomSheet = !openBottomSheet }) {
             Text(text = "Show Bottom Sheet")
         }
@@ -99,9 +113,13 @@
 
     // Sheet content
     if (openBottomSheet) {
+        val windowInsets = if (edgeToEdgeEnabled)
+            WindowInsets(0) else BottomSheetDefaults.windowInsets
+
         ModalBottomSheet(
             onDismissRequest = { openBottomSheet = false },
             sheetState = bottomSheetState,
+            windowInsets = windowInsets
         ) {
             Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center) {
                 Button(
diff --git a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/ButtonSamples.kt b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/ButtonSamples.kt
index cc1daef..5521ab9 100644
--- a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/ButtonSamples.kt
+++ b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/ButtonSamples.kt
@@ -17,8 +17,8 @@
 package androidx.compose.material3.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.size
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Favorite
 import androidx.compose.material3.Button
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/DividerUiTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/DividerUiTest.kt
index a11f610..9e19fbb 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/DividerUiTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/DividerUiTest.kt
@@ -38,10 +38,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemTest.kt
index 1abb4ea..1b21463 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ListItemTest.kt
@@ -36,11 +36,11 @@
 import androidx.compose.ui.unit.width
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
-import com.google.common.truth.Truth.assertThat
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ModalBottomSheetTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ModalBottomSheetTest.kt
index 72643ec..34df5b3 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ModalBottomSheetTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/ModalBottomSheetTest.kt
@@ -24,6 +24,7 @@
 import androidx.compose.foundation.ScrollState
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
@@ -70,7 +71,6 @@
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.height
 import androidx.compose.ui.unit.width
-import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.test.uiautomator.UiDevice
@@ -84,11 +84,12 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @MediumTest
-@RunWith(AndroidJUnit4::class)
+@RunWith(Parameterized::class)
 @OptIn(ExperimentalMaterial3Api::class)
-class ModalBottomSheetTest {
+class ModalBottomSheetTest(private val edgeToEdgeWrapper: EdgeToEdgeWrapper) {
 
     @get:Rule
     val rule = createAndroidComposeRule<ComponentActivity>()
@@ -106,10 +107,14 @@
         val sheetState = SheetState(skipPartiallyExpanded = false)
 
         rule.setContent {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
             if (showBottomSheet) {
                 ModalBottomSheet(
                     sheetState = sheetState,
-                    onDismissRequest = { showBottomSheet = false }
+                    onDismissRequest = { showBottomSheet = false },
+                    windowInsets = windowInsets
                 ) {
                     Box(
                         Modifier
@@ -143,8 +148,13 @@
             val density = LocalDensity.current
             val resScreenWidth = context.resources.configuration.screenWidthDp
             with(density) { screenWidth = resScreenWidth.dp.roundToPx() }
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
 
-            ModalBottomSheet(onDismissRequest = {}) {
+            ModalBottomSheet(
+                onDismissRequest = {},
+                windowInsets = windowInsets
+            ) {
                 Box(
                     Modifier
                         .fillMaxWidth()
@@ -178,7 +188,12 @@
         try {
             latch.await(1500, TimeUnit.MILLISECONDS)
             rule.setContent {
-                ModalBottomSheet(onDismissRequest = {}) {
+                val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                    WindowInsets(0) else BottomSheetDefaults.windowInsets
+                ModalBottomSheet(
+                    onDismissRequest = {},
+                    windowInsets = windowInsets
+                ) {
                     Box(
                         Modifier
                             .testTag(sheetTag)
@@ -213,10 +228,21 @@
     @Test
     fun modalBottomSheet_defaultStateForSmallContentIsFullExpanded() {
         lateinit var sheetState: SheetState
+        var height by mutableStateOf(0.dp)
 
         rule.setContent {
+            val config = LocalContext.current.resources.configuration
+            height = config.screenHeightDp.dp
             sheetState = rememberModalBottomSheetState()
-            ModalBottomSheet(onDismissRequest = {}, sheetState = sheetState, dragHandle = null) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = sheetState,
+                dragHandle = null,
+                windowInsets = windowInsets
+            ) {
                 Box(
                     Modifier
                         .fillMaxWidth()
@@ -226,7 +252,7 @@
             }
         }
 
-        val height = rule.onNode(isPopup()).getUnclippedBoundsInRoot().height
+        height = rule.onNode(isPopup()).getUnclippedBoundsInRoot().height
         assertThat(sheetState.currentValue).isEqualTo(SheetValue.Expanded)
         rule.onNodeWithTag(sheetTag).assertTopPositionInRootIsEqualTo(height - sheetHeight)
     }
@@ -238,13 +264,13 @@
 
         rule.setContent {
             sheetState = rememberModalBottomSheetState()
-            val context = LocalContext.current
-            val density = LocalDensity.current
-            val resScreenHeight = context.resources.configuration.screenHeightDp
-            with(density) {
-                screenHeightPx = resScreenHeight.dp.roundToPx().toFloat()
-            }
-            ModalBottomSheet(onDismissRequest = {}, sheetState = sheetState) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = sheetState,
+                windowInsets = windowInsets
+                ) {
                 Box(
                     Modifier
                         // Deliberately use fraction != 1f
@@ -253,6 +279,9 @@
             }
         }
 
+        screenHeightPx = with(rule.density) {
+            rule.onNode(isPopup()).getUnclippedBoundsInRoot().height.toPx()
+        }
         assertThat(sheetState.currentValue).isEqualTo(SheetValue.PartiallyExpanded)
         assertThat(sheetState.requireOffset())
             .isWithin(1f)
@@ -266,10 +295,13 @@
 
         rule.setContent {
             val dispatcher = LocalOnBackPressedDispatcherOwner.current!!.onBackPressedDispatcher
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
             if (showBottomSheet) {
                 ModalBottomSheet(
                     sheetState = sheetState,
-                    onDismissRequest = { showBottomSheet = false }
+                    onDismissRequest = { showBottomSheet = false },
+                    windowInsets = windowInsets
                 ) {
                     Box(
                         Modifier
@@ -302,10 +334,13 @@
 
         rule.setContent {
             val dispatcher = LocalOnBackPressedDispatcherOwner.current!!.onBackPressedDispatcher
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
             if (showBottomSheet) {
                 ModalBottomSheet(
                     sheetState = sheetState,
-                    onDismissRequest = { showBottomSheet = false }
+                    onDismissRequest = { showBottomSheet = false },
+                    windowInsets = windowInsets
                 ) {
                     Box(
                         Modifier
@@ -344,10 +379,13 @@
             val context = LocalContext.current
             screenHeight = context.resources.configuration.screenHeightDp.dp
             state = rememberModalBottomSheetState()
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
             ModalBottomSheet(
                 onDismissRequest = {},
                 sheetState = state,
-                dragHandle = null
+                dragHandle = null,
+                windowInsets = windowInsets
             ) {
                 Box(
                     Modifier
@@ -356,15 +394,16 @@
                 )
             }
         }
-        assertThat(state.requireOffset()).isWithin(0.5f).of(expectedExpandedAnchor)
+        screenHeight = rule.onNode(isPopup()).getUnclippedBoundsInRoot().height
+        assertThat(state.requireOffset()).isWithin(1f).of(expectedExpandedAnchor)
 
         size = 100.dp
         rule.waitForIdle()
-        assertThat(state.requireOffset()).isWithin(0.5f).of(expectedExpandedAnchor)
+        assertThat(state.requireOffset()).isWithin(1f).of(expectedExpandedAnchor)
 
         size = 30.dp
         rule.waitForIdle()
-        assertThat(state.requireOffset()).isWithin(0.5f).of(expectedExpandedAnchor)
+        assertThat(state.requireOffset()).isWithin(1f).of(expectedExpandedAnchor)
     }
 
     @Test
@@ -374,8 +413,15 @@
         rule.setContent {
             state = rememberModalBottomSheetState()
             scope = rememberCoroutineScope()
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
 
-            ModalBottomSheet(onDismissRequest = {}, sheetState = state, dragHandle = null) {}
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = state,
+                dragHandle = null,
+                windowInsets = windowInsets
+                ) {}
         }
         assertThat(state.swipeableState.currentValue).isEqualTo(SheetValue.Hidden)
         val hiddenOffset = state.requireOffset()
@@ -395,10 +441,14 @@
         lateinit var scope: CoroutineScope
         rule.setContent {
             state = rememberModalBottomSheetState()
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
             ModalBottomSheet(
                 onDismissRequest = {},
                 sheetState = state,
                 dragHandle = null,
+                windowInsets = windowInsets
             ) {
                 scope = rememberCoroutineScope()
                 LazyColumn {
@@ -447,7 +497,7 @@
             sheetState = rememberModalBottomSheetState()
             ModalBottomSheet(
                 onDismissRequest = {},
-                sheetState = sheetState,
+                sheetState = sheetState
             ) {
                 scrollState = rememberScrollState()
                 Column(
@@ -517,10 +567,14 @@
 
         rule.setContent {
             scope = rememberCoroutineScope()
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
             ModalBottomSheet(
                 onDismissRequest = {},
                 modifier = Modifier.testTag(topTag),
                 sheetState = sheetState,
+                windowInsets = windowInsets
             ) {
                 if (showShortContent) {
                     Box(
@@ -561,7 +615,13 @@
         lateinit var sheetState: SheetState
         rule.setContent {
             sheetState = rememberModalBottomSheetState()
-            ModalBottomSheet(onDismissRequest = {}, sheetState = sheetState) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = sheetState,
+                windowInsets = windowInsets
+            ) {
                 Box(
                     Modifier
                         .fillMaxSize()
@@ -591,13 +651,17 @@
                     newState != SheetValue.Hidden
                 }
             )
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
             ModalBottomSheet(
                 onDismissRequest = {},
                 sheetState = sheetState,
                 dragHandle = { Box(
                     Modifier
                         .testTag(dragHandleTag)
-                        .size(dragHandleSize)) }
+                        .size(dragHandleSize)) },
+                windowInsets = windowInsets
             ) {
                 Box(
                     Modifier
@@ -643,7 +707,13 @@
         rule.setContent {
             sheetState = rememberModalBottomSheetState()
             scope = rememberCoroutineScope()
-            ModalBottomSheet(onDismissRequest = {}, sheetState = sheetState) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = sheetState,
+                windowInsets = windowInsets
+            ) {
                 Box(
                     Modifier
                         .fillMaxSize()
@@ -674,7 +744,14 @@
         lateinit var sheetState: SheetState
         rule.setContent {
             sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
-            ModalBottomSheet(onDismissRequest = {}, sheetState = sheetState) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = sheetState,
+                windowInsets = windowInsets
+            ) {
                 Box(
                     Modifier
                         .fillMaxWidth()
@@ -703,7 +780,13 @@
         lateinit var sheetState: SheetState
         rule.setContent {
             sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
-            ModalBottomSheet(onDismissRequest = {}, sheetState = sheetState) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = sheetState,
+                windowInsets = windowInsets
+            ) {
                 Box(
                     Modifier
                         .fillMaxSize()
@@ -726,7 +809,14 @@
         )
         rule.setContent {
             scope = rememberCoroutineScope()
-            ModalBottomSheet(onDismissRequest = {}, sheetState = bottomSheetState) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
+            ModalBottomSheet(
+                onDismissRequest = {},
+                sheetState = bottomSheetState,
+                windowInsets = windowInsets
+            ) {
                 Box(
                     Modifier
                         .fillMaxSize()
@@ -749,12 +839,15 @@
     @Test
     fun modalBottomSheet_testDismissAction_tallBottomSheet_whenPartiallyExpanded() {
         rule.setContent {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
             ModalBottomSheet(
                 onDismissRequest = {},
                 dragHandle = { Box(
                     Modifier
                         .testTag(dragHandleTag)
-                        .size(dragHandleSize)) }
+                        .size(dragHandleSize)) },
+                windowInsets = windowInsets
             ) {
                 Box(
                     Modifier
@@ -776,13 +869,16 @@
         lateinit var sheetState: SheetState
         rule.setContent {
             sheetState = rememberModalBottomSheetState()
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
             ModalBottomSheet(
                 onDismissRequest = {},
                 sheetState = sheetState,
                 dragHandle = { Box(
                     Modifier
                         .testTag(dragHandleTag)
-                        .size(dragHandleSize)) }
+                        .size(dragHandleSize)) },
+                windowInsets = windowInsets
             ) {
                 Box(
                     Modifier
@@ -813,12 +909,8 @@
         rule.setContent {
             sheetState = rememberModalBottomSheetState()
             scope = rememberCoroutineScope()
-            val context = LocalContext.current
-            val density = LocalDensity.current
-            val resScreenHeight = context.resources.configuration.screenHeightDp
-            with(density) {
-                screenHeightPx = resScreenHeight.dp.roundToPx().toFloat()
-            }
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
 
             ModalBottomSheet(
                 onDismissRequest = {},
@@ -826,7 +918,8 @@
                 dragHandle = { Box(
                     Modifier
                         .testTag(dragHandleTag)
-                        .size(dragHandleSize)) }
+                        .size(dragHandleSize)) },
+                windowInsets = windowInsets
             ) {
                 Box(
                     Modifier
@@ -835,6 +928,9 @@
                 )
             }
         }
+        screenHeightPx = with(rule.density) {
+            rule.onNode(isPopup()).getUnclippedBoundsInRoot().height.toPx()
+        }
         scope.launch {
             sheetState.expand()
         }
@@ -861,12 +957,8 @@
         rule.setContent {
             sheetState = rememberModalBottomSheetState()
             scope = rememberCoroutineScope()
-            val context = LocalContext.current
-            val density = LocalDensity.current
-            val resScreenHeight = context.resources.configuration.screenHeightDp
-            with(density) {
-                screenHeightPx = resScreenHeight.dp.roundToPx().toFloat()
-            }
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
 
             ModalBottomSheet(
                 onDismissRequest = {},
@@ -874,7 +966,8 @@
                 dragHandle = { Box(
                     Modifier
                         .testTag(dragHandleTag)
-                        .size(dragHandleSize)) }
+                        .size(dragHandleSize)) },
+                windowInsets = windowInsets
             ) {
                 Box(
                     Modifier
@@ -883,6 +976,9 @@
                 )
             }
         }
+        screenHeightPx = with(rule.density) {
+            rule.onNode(isPopup()).getUnclippedBoundsInRoot().height.toPx()
+        }
         scope.launch {
             sheetState.expand()
         }
@@ -906,10 +1002,14 @@
         lateinit var scope: CoroutineScope
         rule.setContent {
             scope = rememberCoroutineScope()
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
             ModalBottomSheet(
                 onDismissRequest = {},
                 sheetState = sheetState,
                 dragHandle = null,
+                windowInsets = windowInsets
             ) {
                 if (hasSheetContent) {
                     Box(Modifier.fillMaxHeight(0.4f))
@@ -941,10 +1041,14 @@
         lateinit var scope: CoroutineScope
         rule.setContent {
             scope = rememberCoroutineScope()
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
             ModalBottomSheet(
                 onDismissRequest = {},
                 sheetState = sheetState,
                 dragHandle = null,
+                windowInsets = windowInsets
             ) {
                 if (hasSheetContent) {
                     Box(Modifier.fillMaxHeight(0.6f))
@@ -983,7 +1087,14 @@
 
         rule.setContent {
             scope = rememberCoroutineScope()
-            ModalBottomSheet(onDismissRequest = { callCount += 1 }, sheetState = sheetState) {
+            val windowInsets = if (edgeToEdgeWrapper.edgeToEdgeEnabled)
+                WindowInsets(0) else BottomSheetDefaults.windowInsets
+
+            ModalBottomSheet(
+                onDismissRequest = { callCount += 1 },
+                sheetState = sheetState,
+                windowInsets = windowInsets
+            ) {
                 Column(
                     Modifier
                         .testTag(sheetTag)
@@ -1015,4 +1126,19 @@
         assertThat(sheetState.isVisible).isFalse()
         assertThat(callCount).isEqualTo(expectedCallCount)
     }
+
+    companion object {
+        @Parameterized.Parameters(name = "{0}")
+        @JvmStatic
+        fun parameters() = arrayOf(
+            EdgeToEdgeWrapper("EdgeToEdge", true),
+            EdgeToEdgeWrapper("NonEdgeToEdge", false)
+        )
+    }
+
+    class EdgeToEdgeWrapper(val name: String, val edgeToEdgeEnabled: Boolean) {
+        override fun toString(): String {
+            return name
+        }
+    }
 }
\ No newline at end of file
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt
index 7ed67d6..fddbdf2a 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt
@@ -1208,6 +1208,24 @@
     }
 
     @Test
+    fun testOutlinedTextField_supportingText_remainsVisibleWithTallInput() {
+        rule.setMaterialContent(lightColorScheme()) {
+            OutlinedTextField(
+                value = buildString {
+                    repeat(200) {
+                        append("line $it\n")
+                    }
+                },
+                onValueChange = {},
+                modifier = Modifier.size(width = ExpectedDefaultTextFieldWidth, height = 150.dp),
+                supportingText = { Text("Supporting", modifier = Modifier.testTag("Supporting")) }
+            )
+        }
+
+        rule.onNodeWithTag("Supporting", useUnmergedTree = true).assertIsDisplayed()
+    }
+
+    @Test
     fun testOutlinedTextField_supportingText_clickFocusesTextField() {
         var focused = false
         rule.setMaterialContent(lightColorScheme()) {
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SnackbarHostTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SnackbarHostTest.kt
index a5d5e9f..e67aa28 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SnackbarHostTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SnackbarHostTest.kt
@@ -36,10 +36,6 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth
-import org.mockito.kotlin.any
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.delay
@@ -49,6 +45,10 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.AdditionalMatchers.not
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SwitchScreenshotTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SwitchScreenshotTest.kt
index 30162ba..5fcafa4 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SwitchScreenshotTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SwitchScreenshotTest.kt
@@ -33,10 +33,10 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.input.InputMode
 import androidx.compose.ui.input.InputModeManager
 import androidx.compose.ui.platform.LocalInputModeManager
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.ExperimentalTestApi
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/TextFieldTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/TextFieldTest.kt
index 56f3967..e1b215d 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/TextFieldTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/TextFieldTest.kt
@@ -70,6 +70,7 @@
 import androidx.compose.ui.test.SemanticsMatcher
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertHeightIsEqualTo
+import androidx.compose.ui.test.assertIsDisplayed
 import androidx.compose.ui.test.assertWidthIsEqualTo
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.click
@@ -100,17 +101,17 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.atLeastOnce
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
 import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.atLeastOnce
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 @OptIn(ExperimentalMaterial3Api::class)
 @MediumTest
@@ -1172,6 +1173,24 @@
     }
 
     @Test
+    fun testTextField_supportingText_remainsVisibleWithTallInput() {
+        rule.setMaterialContent(lightColorScheme()) {
+            TextField(
+                value = buildString {
+                    repeat(200) {
+                        append("line $it\n")
+                    }
+                },
+                onValueChange = {},
+                modifier = Modifier.size(width = ExpectedDefaultTextFieldWidth, height = 150.dp),
+                supportingText = { Text("Supporting", modifier = Modifier.testTag("Supporting")) }
+            )
+        }
+
+        rule.onNodeWithTag("Supporting", useUnmergedTree = true).assertIsDisplayed()
+    }
+
+    @Test
     fun testTextField_supportingText_clickFocusesTextField() {
         var focused = false
         rule.setMaterialContent(lightColorScheme()) {
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/ModalBottomSheet.android.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/ModalBottomSheet.android.kt
index 33e9f0c..42b9c63 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/ModalBottomSheet.android.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/ModalBottomSheet.android.kt
@@ -16,6 +16,13 @@
 
 package androidx.compose.material3
 
+import android.content.Context
+import android.graphics.PixelFormat
+import android.view.Gravity
+import android.view.KeyEvent
+import android.view.View
+import android.view.ViewTreeObserver
+import android.view.WindowManager
 import androidx.compose.animation.core.TweenSpec
 import androidx.compose.animation.core.animateFloatAsState
 import androidx.compose.foundation.Canvas
@@ -26,18 +33,29 @@
 import androidx.compose.foundation.layout.BoxWithConstraints
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.imePadding
 import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.widthIn
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.material3.SheetValue.Expanded
 import androidx.compose.material3.SheetValue.Hidden
+import androidx.compose.material3.SheetValue.PartiallyExpanded
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionContext
+import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCompositionContext
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.rememberUpdatedState
+import androidx.compose.runtime.saveable.rememberSaveable
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
@@ -45,17 +63,27 @@
 import androidx.compose.ui.graphics.isSpecified
 import androidx.compose.ui.input.nestedscroll.nestedScroll
 import androidx.compose.ui.input.pointer.pointerInput
-import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.platform.AbstractComposeView
+import androidx.compose.ui.platform.LocalView
+import androidx.compose.ui.platform.ViewRootForInspector
 import androidx.compose.ui.semantics.clearAndSetSemantics
 import androidx.compose.ui.semantics.collapse
 import androidx.compose.ui.semantics.dismiss
 import androidx.compose.ui.semantics.expand
+import androidx.compose.ui.semantics.paneTitle
+import androidx.compose.ui.semantics.popup
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.IntOffset
-import androidx.compose.ui.window.Popup
-import androidx.compose.ui.window.PopupProperties
+import androidx.lifecycle.findViewTreeLifecycleOwner
+import androidx.lifecycle.findViewTreeViewModelStoreOwner
+import androidx.lifecycle.setViewTreeLifecycleOwner
+import androidx.lifecycle.setViewTreeViewModelStoreOwner
+import androidx.savedstate.findViewTreeSavedStateRegistryOwner
+import androidx.savedstate.setViewTreeSavedStateRegistryOwner
+import java.util.UUID
 import kotlin.math.max
+import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 
@@ -86,6 +114,8 @@
  * @param tonalElevation The tonal elevation of this bottom sheet.
  * @param scrimColor Color of the scrim that obscures content when the bottom sheet is open.
  * @param dragHandle Optional visual marker to swipe the bottom sheet.
+ * @param windowInsets window insets to be passed to the bottom sheet window via [PaddingValues]
+ * params.
  * @param content The content to be displayed inside the bottom sheet.
  */
 @Composable
@@ -100,6 +130,7 @@
     tonalElevation: Dp = BottomSheetDefaults.Elevation,
     scrimColor: Color = BottomSheetDefaults.ScrimColor,
     dragHandle: @Composable (() -> Unit)? = { BottomSheetDefaults.DragHandle() },
+    windowInsets: WindowInsets = BottomSheetDefaults.windowInsets,
     content: @Composable ColumnScope.() -> Unit,
 ) {
     val scope = rememberCoroutineScope()
@@ -125,10 +156,14 @@
             animateTo = { target, velocity ->
                 scope.launch { sheetState.animateTo(target, velocity = velocity) }
             },
-            snapTo = { target -> scope.launch { sheetState.snapTo(target) } }
+            snapTo = { target ->
+                val didSnapImmediately = sheetState.trySnapTo(target)
+                if (!didSnapImmediately) {
+                    scope.launch { sheetState.snapTo(target) }
+                }
+            }
         )
     }
-    val systemBarHeight = WindowInsets.systemBarsForVisualComponents.getBottom(LocalDensity.current)
 
     ModalBottomSheetPopup(
         onDismissRequest = {
@@ -137,7 +172,8 @@
             } else { // Is expanded without collapsed state or is collapsed.
                 scope.launch { sheetState.hide() }.invokeOnCompletion { onDismissRequest() }
             }
-        }
+        },
+        windowInsets = windowInsets,
     ) {
         BoxWithConstraints(Modifier.fillMaxSize()) {
             val fullHeight = constraints.maxHeight
@@ -146,11 +182,13 @@
                 onDismissRequest = animateToDismiss,
                 visible = sheetState.targetValue != Hidden
             )
+            val bottomSheetPaneTitle = getString(string = Strings.BottomSheetPaneTitle)
             Surface(
                 modifier = modifier
                     .widthIn(max = BottomSheetMaxWidth)
                     .fillMaxWidth()
                     .align(Alignment.TopCenter)
+                    .semantics { paneTitle = bottomSheetPaneTitle }
                     .offset {
                         IntOffset(
                             0,
@@ -172,7 +210,6 @@
                         sheetState = sheetState,
                         anchorChangeHandler = anchorChangeHandler,
                         screenHeight = fullHeight.toFloat(),
-                        bottomPadding = systemBarHeight.toFloat(),
                         onDragStopped = {
                             settleToDismiss(it)
                         },
@@ -188,35 +225,38 @@
                             getString(Strings.BottomSheetPartialExpandDescription)
                         val dismissActionLabel = getString(Strings.BottomSheetDismissDescription)
                         val expandActionLabel = getString(Strings.BottomSheetExpandDescription)
-                        Box(Modifier
-                            .align(Alignment.CenterHorizontally)
-                            .semantics(mergeDescendants = true) {
-                                // Provides semantics to interact with the bottomsheet based on its
-                                // current value.
-                                with(sheetState) {
-                                    dismiss(dismissActionLabel) {
-                                        animateToDismiss()
-                                        true
-                                    }
-                                    if (currentValue == SheetValue.PartiallyExpanded) {
-                                        expand(expandActionLabel) {
-                                            if (swipeableState.confirmValueChange(Expanded)) {
-                                                scope.launch { sheetState.expand() }
-                                            }
+                        Box(
+                            Modifier
+                                .align(Alignment.CenterHorizontally)
+                                .semantics(mergeDescendants = true) {
+                                    // Provides semantics to interact with the bottomsheet based on its
+                                    // current value.
+                                    with(sheetState) {
+                                        dismiss(dismissActionLabel) {
+                                            animateToDismiss()
                                             true
                                         }
-                                    } else if (hasPartiallyExpandedState) {
-                                        collapse(collapseActionLabel) {
-                                            val confirmPartial = swipeableState
-                                                .confirmValueChange(SheetValue.PartiallyExpanded)
-                                            if (confirmPartial) {
-                                                scope.launch { partialExpand() }
+                                        if (currentValue == PartiallyExpanded) {
+                                            expand(expandActionLabel) {
+                                                if (swipeableState.confirmValueChange(Expanded)) {
+                                                    scope.launch { sheetState.expand() }
+                                                }
+                                                true
                                             }
-                                            true
+                                        } else if (hasPartiallyExpandedState) {
+                                            collapse(collapseActionLabel) {
+                                                if (
+                                                    swipeableState.confirmValueChange(
+                                                        PartiallyExpanded
+                                                    )
+                                                ) {
+                                                    scope.launch { partialExpand() }
+                                                }
+                                                true
+                                            }
                                         }
                                     }
                                 }
-                            }
                         ) {
                             dragHandle()
                         }
@@ -265,7 +305,8 @@
                     detectTapGestures {
                         onDismissRequest()
                     }
-                }.clearAndSetSemantics {}
+                }
+                .clearAndSetSemantics {}
         } else {
             Modifier
         }
@@ -284,23 +325,22 @@
     sheetState: SheetState,
     anchorChangeHandler: AnchorChangeHandler<SheetValue>,
     screenHeight: Float,
-    bottomPadding: Float,
     onDragStopped: CoroutineScope.(velocity: Float) -> Unit,
 ) = draggable(
-    state = sheetState.swipeableState.swipeDraggableState,
-    orientation = Orientation.Vertical,
-    enabled = sheetState.isVisible,
-    startDragImmediately = sheetState.swipeableState.isAnimationRunning,
-    onDragStopped = onDragStopped
-)
+        state = sheetState.swipeableState.swipeDraggableState,
+        orientation = Orientation.Vertical,
+        enabled = sheetState.isVisible,
+        startDragImmediately = sheetState.swipeableState.isAnimationRunning,
+        onDragStopped = onDragStopped
+    )
     .swipeAnchors(
         state = sheetState.swipeableState,
         anchorChangeHandler = anchorChangeHandler,
-        possibleValues = setOf(Hidden, SheetValue.PartiallyExpanded, Expanded),
+        possibleValues = setOf(Hidden, PartiallyExpanded, Expanded),
     ) { value, sheetSize ->
         when (value) {
-            Hidden -> screenHeight + bottomPadding
-            SheetValue.PartiallyExpanded -> when {
+            Hidden -> screenHeight
+            PartiallyExpanded -> when {
                 sheetSize.height < screenHeight / 2 -> null
                 sheetState.skipPartiallyExpanded -> null
                 else -> screenHeight / 2f
@@ -320,9 +360,9 @@
     val previousTargetOffset = previousAnchors[previousTarget]
     val newTarget = when (previousTarget) {
         Hidden -> Hidden
-        SheetValue.PartiallyExpanded, Expanded -> {
-            val hasPartiallyExpandedState = newAnchors.containsKey(SheetValue.PartiallyExpanded)
-            val newTarget = if (hasPartiallyExpandedState) SheetValue.PartiallyExpanded
+        PartiallyExpanded, Expanded -> {
+            val hasPartiallyExpandedState = newAnchors.containsKey(PartiallyExpanded)
+            val newTarget = if (hasPartiallyExpandedState) PartiallyExpanded
             else if (newAnchors.containsKey(Expanded)) Expanded else Hidden
             newTarget
         }
@@ -343,12 +383,158 @@
  * Popup specific for modal bottom sheet.
  */
 @Composable
-@ExperimentalMaterial3Api
 internal fun ModalBottomSheetPopup(
     onDismissRequest: () -> Unit,
-    content: @Composable () -> Unit
-) = Popup(
-    onDismissRequest = onDismissRequest,
-    properties = PopupProperties(focusable = true),
-    content = content
-)
\ No newline at end of file
+    windowInsets: WindowInsets,
+    content: @Composable () -> Unit,
+) {
+    val view = LocalView.current
+    val id = rememberSaveable { UUID.randomUUID() }
+    val parentComposition = rememberCompositionContext()
+    val currentContent by rememberUpdatedState(content)
+    val modalBottomSheetWindow = remember {
+        ModalBottomSheetWindow(
+            onDismissRequest = onDismissRequest,
+            composeView = view,
+            saveId = id
+        ).apply {
+            setCustomContent(
+                parent = parentComposition,
+                content = {
+                    Box(
+                        Modifier
+                            .semantics { this.popup() }
+                            .windowInsetsPadding(windowInsets)
+                            .imePadding()
+                    ) {
+                        currentContent()
+                    }
+                }
+            )
+        }
+    }
+
+    DisposableEffect(modalBottomSheetWindow) {
+        modalBottomSheetWindow.show()
+        onDispose {
+            modalBottomSheetWindow.disposeComposition()
+            modalBottomSheetWindow.dismiss()
+        }
+    }
+}
+
+/** Custom compose view for [ModalBottomSheet] */
+private class ModalBottomSheetWindow(
+    private var onDismissRequest: () -> Unit,
+    private val composeView: View,
+    saveId: UUID,
+) :
+    AbstractComposeView(composeView.context),
+    ViewTreeObserver.OnGlobalLayoutListener,
+    ViewRootForInspector {
+    init {
+        id = android.R.id.content
+        // Set up view owners
+        setViewTreeLifecycleOwner(composeView.findViewTreeLifecycleOwner())
+        setViewTreeViewModelStoreOwner(composeView.findViewTreeViewModelStoreOwner())
+        setViewTreeSavedStateRegistryOwner(composeView.findViewTreeSavedStateRegistryOwner())
+        setTag(androidx.compose.ui.R.id.compose_view_saveable_id_tag, "Popup:$saveId")
+        // Enable children to draw their shadow by not clipping them
+        clipChildren = false
+    }
+
+    private val windowManager =
+        composeView.context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
+
+    private val displayWidth: Int
+        get() {
+            val density = context.resources.displayMetrics.density
+            return (context.resources.configuration.screenWidthDp * density).roundToInt()
+        }
+
+    private val params: WindowManager.LayoutParams =
+        WindowManager.LayoutParams().apply {
+            // Position bottom sheet from the bottom of the screen
+            gravity = Gravity.BOTTOM or Gravity.START
+            // Application panel window
+            type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL
+            // Fill up the entire app view
+            width = displayWidth
+            height = WindowManager.LayoutParams.MATCH_PARENT
+
+            // Format of screen pixels
+            format = PixelFormat.TRANSLUCENT
+            // Title used as fallback for a11y services
+            // TODO: Provide bottom sheet window resource
+            title = composeView.context.resources.getString(
+                androidx.compose.ui.R.string.default_popup_window_title
+            )
+            // Get the Window token from the parent view
+            token = composeView.applicationWindowToken
+
+            // Flags specific to modal bottom sheet.
+            flags = flags and (
+                WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES or
+                WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
+            ).inv()
+
+            flags = flags or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
+        }
+
+    private var content: @Composable () -> Unit by mutableStateOf({})
+
+    override var shouldCreateCompositionOnAttachedToWindow: Boolean = false
+        private set
+
+    @Composable
+    override fun Content() {
+        content()
+    }
+
+    fun setCustomContent(
+        parent: CompositionContext? = null,
+        content: @Composable () -> Unit
+    ) {
+        parent?.let { setParentCompositionContext(it) }
+        this.content = content
+        shouldCreateCompositionOnAttachedToWindow = true
+    }
+
+    fun show() {
+        windowManager.addView(this, params)
+    }
+
+    fun dismiss() {
+        setViewTreeLifecycleOwner(null)
+        setViewTreeSavedStateRegistryOwner(null)
+        composeView.viewTreeObserver.removeOnGlobalLayoutListener(this)
+        windowManager.removeViewImmediate(this)
+    }
+
+    /**
+     * Taken from PopupWindow. Calls [onDismissRequest] when back button is pressed.
+     */
+    override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+        if (event.keyCode == KeyEvent.KEYCODE_BACK) {
+            if (keyDispatcherState == null) {
+                return super.dispatchKeyEvent(event)
+            }
+            if (event.action == KeyEvent.ACTION_DOWN && event.repeatCount == 0) {
+                val state = keyDispatcherState
+                state?.startTracking(event, this)
+                return true
+            } else if (event.action == KeyEvent.ACTION_UP) {
+                val state = keyDispatcherState
+                if (state != null && state.isTracking(event) && !event.isCanceled) {
+                    onDismissRequest()
+                    return true
+                }
+            }
+        }
+        return super.dispatchKeyEvent(event)
+    }
+
+    override fun onGlobalLayout() {
+        // No-op
+    }
+}
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Strings.android.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Strings.android.kt
index 6a6c8c3..428cadd 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Strings.android.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Strings.android.kt
@@ -155,6 +155,9 @@
         Strings.DateRangeInputInvalidRangeInput -> resources.getString(
             androidx.compose.material3.R.string.m3c_date_range_input_invalid_range_input
         )
+        Strings.BottomSheetPaneTitle -> resources.getString(
+            androidx.compose.material3.R.string.m3c_bottom_sheet_pane_title
+        )
         Strings.BottomSheetDragHandleDescription -> resources.getString(
             androidx.compose.material3.R.string.m3c_bottom_sheet_drag_handle_description
         )
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/TouchExplorationStateProvider.android.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/TouchExplorationStateProvider.android.kt
index cbb7308..955ebc5 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/TouchExplorationStateProvider.android.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/TouchExplorationStateProvider.android.kt
@@ -25,9 +25,9 @@
 import androidx.compose.runtime.State
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.setValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalLifecycleOwner
 import androidx.lifecycle.Lifecycle
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/ExposedDropdownMenuPopup.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/ExposedDropdownMenuPopup.kt
index 6900df5..67a996d 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/ExposedDropdownMenuPopup.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/ExposedDropdownMenuPopup.kt
@@ -63,9 +63,9 @@
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.fastMap
 import androidx.compose.ui.window.PopupPositionProvider
-import androidx.lifecycle.setViewTreeLifecycleOwner
 import androidx.lifecycle.findViewTreeLifecycleOwner
 import androidx.lifecycle.findViewTreeViewModelStoreOwner
+import androidx.lifecycle.setViewTreeLifecycleOwner
 import androidx.lifecycle.setViewTreeViewModelStoreOwner
 import androidx.savedstate.findViewTreeSavedStateRegistryOwner
 import androidx.savedstate.setViewTreeSavedStateRegistryOwner
diff --git a/compose/material3/material3/src/androidMain/res/values-af/strings.xml b/compose/material3/material3/src/androidMain/res/values-af/strings.xml
new file mode 100644
index 0000000..52938d3
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-af/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialoog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Uitgevou"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Ingevou"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Maak toe"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Soek"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Voorstelle hieronder"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Kies datum"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Gekose datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Skakel oor na kies van ’n jaar"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Swiep om ’n jaar te kies of tik om terug te skakel om ’n dag te kies"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Verander na volgende maand"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Verander na vorige maand"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Gaan na jaar %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Huidige keuse: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Geen"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Vandag"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Jaarkieser sigbaar"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Kies datum"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Datum wat ingevoer is"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Datum wat ingevoer is: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Geen"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datum word nie toegelaat nie: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datum pas nie by die verwagte patroon nie: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum val buite verwagte jaardatumreeks %1$s-%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Skakel oor na kalenderinvoermodus"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Skakel oor na teksinvoermodus"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Rollees om later jare te wys"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Rollees om vroeër jare te wys"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Kies datums"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Begindatum"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Einddatum"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Rollees om die volgende maand te wys"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Rollees om die vorige maand te wys"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Binne datumreeks"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Voer datums in"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Ongeldige datumreeksinvoer"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Sleephandvatsel"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Vou onderste blad in"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Maak onderste blad toe"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Vou onderste blad uit"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Nutswenk"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Wys nutswenk"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"nm."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"vm."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Kies vm. of nm."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Kies uur"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Kies minute"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d uur"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d uur"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minute"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Uur"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"vir minute"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"vir uur"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-am/strings.xml b/compose/material3/material3/src/androidMain/res/values-am/strings.xml
new file mode 100644
index 0000000..a91d248
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-am/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"መገናኛ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ተዘርግቷል"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ተሰብስቧል"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"አሰናብት"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ፈልግ"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"የአስተያየት ጥቆማዎች ከታች"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"ቀን ይምረጡ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"የተመረጠው ቀን"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ወደ ዓመት መምረጥ ይቀይሩ"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ዓመት ለመምረጥ ያንሸራትቱ ወይም ወደ ቀንን መምረጥ መልሶ ለመቀየር መታ ያድርጉ"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"ወደ የሚቀጥለው ወር ይቀይሩ"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"ወደ ቀዳሚው ወር ይቀይሩ"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"ወደ ዓመት %1$s ያስሱ"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"የአሁን ምርጫ፦ %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ምንም"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ዛሬ"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"ዓመት መራጭ ይታያል"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"ቀን ይምረጡ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"የገባው ቀን"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"ቀን"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"የገባው ቀን፦ %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ምንም"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"ቀን አልተፈቀደም፦ %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"ቀኑ ከተጠበቀው ስርዓተ ጥለት ጋር አይዛመድም፦ %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"ቀን ከተጠበቀው የዓመት ክልል ውጪ ነው %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"ወደ የቀን መቁጠሪያ ግቤት ሁነታ ይቀይሩ"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ወደ የጽሁፍ ግቤት ሁነታ ይቀይሩ"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"ከዚህ በኋላ ያሉ ዓመታትን ለማሳየት ያሸብልሉ"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"ቀደም ያሉ ዓመታትን ለማሳየት ያሸብልሉ"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"ቀናትን ይምረጡ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"መጀመሪያ ቀን"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"የማብቂያ ቀን"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"ቀጣዩን ወር ለማሳየት ያሸብልሉ"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"ቀዳሚውን ወር ለማሳየት ያሸብልሉ"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"በክልል ውስጥ"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"ቀናትን ያስገቡ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"ልክ ያልሆነ የቀን ክልል ግቤት"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"መያዣ ይጎትቱ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"የግርጌ ሉህን ይሰብስቡ"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"የግርጌ ሉህን ያሰናብቱ"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"የግርጌ ሉህ ይዘርጉ"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"የመሣሪያ ጥቆማ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"መሣሪያ ጥቆማን አሳይ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"ፒኤም"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"ኤኤም"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"ኤኤም ወይም ፒኤምን ይምረጡ"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ሰዓት ምረጥ"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"ደቂቃዎችን ምረጥ"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d ሰዓት"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ሰዓታት"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d ደቂቃዎች"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"ደቂቃ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ሰዓት"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"ለደቂቃዎች"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ለሰዓት"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ar/strings.xml b/compose/material3/material3/src/androidMain/res/values-ar/strings.xml
new file mode 100644
index 0000000..c133e1c5
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ar/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"مربّع حوار"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"موسَّعة"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"مصغَّرة"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"إغلاق"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"شريط بحث"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"إليك الاقتراحات"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"اختيار تاريخ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"التاريخ المحدَّد"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"التبديل لاختيار سنة"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"مرِّر سريعًا لتحديد سنة، أو انقر للرجوع إلى تحديد يوم."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"التغيير إلى الشهر التالي"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"التغيير إلى الشهر السابق"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"‏الانتقال إلى سنة %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"‏الاختيار الحالي: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"بدون تاريخ"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"اليوم"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"أداة اختيار السنوات مرئية"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"اختيار تاريخ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"التاريخ الذي تم إدخاله"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"التاريخ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"‏التاريخ الذي تم إدخاله: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"بدون تاريخ"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"‏التاريخ غير مسموح به: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"‏لا يتوافق التاريخ مع النمط المتوقَّع: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"‏التاريخ خارج نطاق السنوات المتوقَّع: ‎%1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"التبديل إلى وضع \"الإدخال في التقويم\""</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"التبديل إلى \"وضع إدخال النص\""</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"انتقِل للأسفل أو للأعلى لإظهار السنوات التالية."</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"انتقِل للأسفل أو للأعلى لإظهار السنوات السابقة."</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"اختيار التواريخ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"تاريخ البدء"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"تاريخ الانتهاء"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"انتقِل للأسفل أو للأعلى لإظهار الشهر التالي."</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"انتقِل للأسفل أو للأعلى لإظهار الشهر السابق."</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"في النطاق"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"إدخال التواريخ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"إدخال نطاق زمني غير صالح"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"مقبض السحب"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"تصغير البطاقة السفلية"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"إغلاق البطاقة السفلية"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"توسيع البطاقة السفلية"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"تلميح"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"إظهار التلميح"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"م"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"ص"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"يُرجى اختيار \"ص\" أو \"م\"."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"اختيار الساعة"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"اختيار الدقائق"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"‏الساعة %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"‏%1$d ساعة"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"‏%1$d دقيقة"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"دقيقة"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ساعة"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"الدقائق"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"الساعات"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-as/strings.xml b/compose/material3/material3/src/androidMain/res/values-as/strings.xml
new file mode 100644
index 0000000..20cbe7e
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-as/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ডায়ল’গ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"বিস্তাৰ কৰা আছে"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"সংকোচন কৰা আছে"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"অগ্ৰাহ্য কৰক"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"সন্ধান কৰক"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"তলত পৰামৰ্শ দেখুওৱা হৈছে"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"তাৰিখ বাছনি কৰক"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"বাছনি কৰা তাৰিখ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"বছৰ বাছনি কৰাৰ সুবিধাটোলৈ সলনি কৰক"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"এটা বছৰ বাছনি কৰিবলৈ ছোৱাইপ কৰক অথবা এটা দিন বাছনি কৰাৰ সুবিধাটোলৈ উভতি যাবলৈ টিপক"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"পৰৱৰ্তী মাহলৈ সলনি কৰক"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"পূৰ্বৱৰ্তী মাহলৈ সলনি কৰক"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"বৰ্ষ %1$sলৈ নেভিগে’ট কৰক"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"বৰ্তমানৰ বাছনি: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"নাই"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"আজি"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"বছৰ বাছনিকৰ্তা দৃশ্যমান"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"তাৰিখ বাছনি কৰক"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"দিয়া তাৰিখ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"তাৰিখ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"দিয়া তাৰিখ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"নাই"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"অনুমোদিত নোহোৱা তাৰিখ: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"তাৰিখটো এই প্ৰত্যাশিত আৰ্হিটোৰ সৈতে মিলা নাই: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"তাৰিখটো প্ৰত্যাশিত বছৰৰ পৰিসৰ %1$s - %2$sৰ বাহিৰৰ"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"কেলেণ্ডাৰ ইনপুট ম’ডলৈ সলনি কৰক"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"পাঠ ইনপুট ম’ডলৈ সলনি কৰক"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"পাছৰ বছৰবোৰ দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"আগৰ বছৰবোৰ দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"তাৰিখ বাছনি কৰক"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"আৰম্ভণিৰ তাৰিখ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"সমাপ্তিৰ তাৰিখ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"পৰৱৰ্তী মাহটো দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"পূৰ্বৱৰ্তী মাহটো দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"পৰিসৰৰ ভিতৰত আছে"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"তাৰিখ দিয়ক"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"অমান্য তাৰিখৰ পৰিসৰৰ ইনপুট"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ড্ৰেগ হেণ্ডেল"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"তলৰ শ্বীটখন সংকোচন কৰক"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"তলৰ শ্বীটখন অগ্ৰাহ্য কৰক"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"তলৰ শ্বীটখন বিস্তাৰ কৰক"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"টুলটিপ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"টুলটিপ দেখুৱাওক"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM অথবা PM বাছনি কৰক"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ঘণ্টা বাছনি কৰক"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"মিনিট বাছনি কৰক"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d বাজিছে"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ঘণ্টা"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d মিনিট"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"মিনিট"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ঘণ্টা"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"মিনিটৰ বাবে"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ঘণ্টাৰ বাবে"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-az/strings.xml b/compose/material3/material3/src/androidMain/res/values-az/strings.xml
new file mode 100644
index 0000000..4d882ac
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-az/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialoq"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Genişləndirilb"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Yığcamlaşdırılıb"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Rədd edin"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Axtarış"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Təkliflər aşağıdadır"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Tarix seçin"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Seçilmiş tarix"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"İl seçiminə keçin"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"İl seçmək üçün sürüşdürün. Gün seçiminə qayıtmaq üçün toxunun"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Növbəti aya dəyişin"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Əvvəlki aya dəyişin"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Bu ilə keçin: %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Cari seçim: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Yoxdur"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Bu gün"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"İl seçicisi görünür"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Tarix seçin"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Daxil edilmiş tarix"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Tarix"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Daxil edilmiş tarix: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Yoxdur"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Tarixə icazə verilmir: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Tarix gözlənilən modelə uyğun gəlmir: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Tarix gözlənilən il aralığından kənardır: %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Təqvim daxiletmə rejiminə keçin"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Mətn daxiletmə rejiminə keçin"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Sonrakı illəri göstərmək üçün sürüşdürün"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Əvvəlki illəri göstərmək üçün sürüşdürün"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Tarixlər seçin"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Başlama tarixi"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Bitmə tarixi"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Növbəti ayı göstərmək üçün sürüşdürün"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Əvvəlki ayı göstərmək üçün sürüşdürün"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Bu aralıqda"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Tarixlər daxil edin"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Yanlış tarix aralığı daxiletməsi"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Dəstəyi çəkin"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Aşağıdakı vərəqi yığcamlaşdırın"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Aşağıdakı vərəqi rədd edin"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Aşağıdakı vərəqi genişləndirin"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Alət izahı"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Alət izahını göstərin"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM və ya PM seçin"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Saat seçin"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Dəqiqə seçin"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Saat: %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d saat"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d dəqiqə"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Dəqiqə"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Saat"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"dəqiqəlik"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"saatlıq"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-b+sr+Latn/strings.xml b/compose/material3/material3/src/androidMain/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..82602ea
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dijalog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Prošireno je"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Skupljeno je"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Odbaci"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Pretraga"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Predlozi su u nastavku"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Izaberite datum"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Izabrani datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Pređite na izbor godine"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Prevucite da biste izabrali godinu ili dodirnite da biste se vratili na izbor dana"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Pređite na sledeći mesec"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Pređite na prethodni mesec"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Idite na godinu: %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Aktuelni izbor: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ništa"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Danas"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Vidljiv birač godina"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Izaberite datum"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Uneti datum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Uneti datum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ništa"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datum nije dozvoljen: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datum ne odgovara očekivanom šablonu: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum je izvan očekivanog opsega godina %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Pređite na režim unosa u Kalendaru"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Pređite na režim unosa teksta"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Skrolujte da bi se prikazale kasnije godine"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Skrolujte da bi se prikazale ranije godine"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Izaberite datume"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Datum početka"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Datum završetka"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Pomerajte da bi se prikazao sledeći mesec"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Pomerajte da bi se prikazao prethodni mesec"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"U opsegu"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Unesite datume"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Unos opsega datuma je nevažeći"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Identifikator za prevlačenje"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Skupite donju tabelu"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Odbacite donju tabelu"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Proširite donju tabelu"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Objašnjenje"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Prikažite objašnjenje"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Izaberite pre podne ili po podne"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Izaberite sat"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Izaberite minute"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d s"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d s"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d min"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minut"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Sat"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"za minute"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"za sate"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-be/strings.xml b/compose/material3/material3/src/androidMain/res/values-be/strings.xml
new file mode 100644
index 0000000..bf493db
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-be/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Дыялогавае акно"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Разгорнута"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Згорнута"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Закрыць"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Пошук"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Прапановы ўнізе"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Выберыце дату"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Выбраная дата"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Перайсці да выбару года"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Правядзіце пальцам, каб выбраць год, або націсніце, каб вярнуцца да выбару даты"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Перайсці да наступнага месяца"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Перайсці да папярэдняга месяца"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Перайсці ў год %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Бягучы выбар: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Без абмежаванняў"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Сёння"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Бачны інструмент выбару года"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Выберыце дату"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Уведзеная дата"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Дата"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Уведзеная дата: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Без абмежаванняў"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Дата забаронена: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Дата не адпавядае ўзору: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Дата выходзіць за дазволены дыяпазон гадоў %1$s-%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Пераключыцца ў рэжым уводу \"Каляндар\""</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Пераключыцца ў рэжым уводу \"Тэкст\""</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Прагартайце экран, каб прагледзець пазнейшыя гады"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Прагартайце экран, каб прагледзець ранейшыя гады"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Выберыце даты"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Дата пачатку"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Дата заканчэння"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Прагартайце экран, каб прагледзець наступны месяц"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Прагартайце экран, каб прагледзець мінулы месяц"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"У межах дыяпазону"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Увядзіце даты"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Уведзены няправільны дыяпазон дат"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Маркер перацягвання"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Згарнуць ніжні аркуш"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Закрыць ніжні аркуш"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Разгарнуць ніжні аркуш"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Падказка"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Паказваць усплывальую падказку"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"пасля паўдня"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"да паўдня"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Выберыце AM (да паўдня) або PM (пасля паўдня)"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Выберыце гадзіны"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Выберыце хвіліны"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d гадз"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d гадз"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d хв"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Хвіліны"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Гадзіны"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"хвіліны"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"гадзіны"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-bg/strings.xml b/compose/material3/material3/src/androidMain/res/values-bg/strings.xml
new file mode 100644
index 0000000..f600a9a
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-bg/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Диалогов прозорец"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Разгънато"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Свито"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Отхвърляне"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Лента за търсене"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Предложенията са по-долу"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Избиране на дата"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Избрана дата"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Превключване към избиране на година"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Прекарайте пръст, за да изберете година, или докоснете, за да се върнете към избора на ден"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Преминаване към следващия месец"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Преминаване към предишния месец"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Навигиране до %1$s година"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Текущ избор: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Няма"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Днес"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Инструментът за избор на година е видим"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Избиране на дата"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Въведена дата"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Дата"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Въведена дата: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Няма"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Датата не е разрешена: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Датата не е в очаквания формат: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Датата е извън очаквания годишен диапазон: %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Превключване към режим за въвеждане в календар"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Превключване към режим за въвеждане на текст"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Превъртете, за да се покажат следващите години"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Превъртете, за да се покажат миналите години"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Избиране на дати"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Начална дата"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Крайна дата"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Превъртете, за да се покаже следващият месец"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Превъртете, за да се покаже предишният месец"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"В диапазона"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Въвеждане на дати"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Въведен е невалиден период от време"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Манипулатор за преместване с плъзгане"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Свиване на долния лист"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Отхвърляне на долния лист"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Разгъване на долния лист"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Подсказка"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Показване на подсказка"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Изберете AM или PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Изберете час"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Изберете минути"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d часа"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d часа"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d минути"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Минута"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Час"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"за минутите"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"за часа"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-bn/strings.xml b/compose/material3/material3/src/androidMain/res/values-bn/strings.xml
new file mode 100644
index 0000000..1a04e7f
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-bn/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ডায়ালগ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"বড় করা হয়েছে"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"আড়াল করা হয়েছে"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"বাতিল করুন"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"সার্চ করুন"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"নিচে দেওয়া সাজেশন"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"তারিখ বেছে নিন"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"বেছে নেওয়া তারিখ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"কোনও একটি বছর বেছে নিতে বদল করুন"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"একটি বছর বেছে নিতে সোয়াইপ করুন অথবা দিন বেছে নেওয়ার বিকল্পে ফিরে যেতে ট্যাপ করুন"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"আগামী মাসে পরিবর্তন করুন"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"আগের মাসে পরিবর্তন করুন"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"নেভিগেট করে %1$s বছরে যান"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"বর্তমানে বেছে নেওয়া হয়েছে: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"কোনওটিই নয়"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"আজ"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"বছর বেছে নেওয়ার তালিকা দেখা যাচ্ছে"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"তারিখ বেছে নিন"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"উল্লেখ করা তারিখ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"তারিখ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"উল্লেখ করা তারিখ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"কোনওটিই নয়"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"এই তারিখ লেখা যাবে না: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"প্রত্যাশিত প্যাটার্নের সাথে তারিখ মিলছে না: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"প্রত্যাশিত বছরের রেঞ্জের বাইরের তারিখ %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"ক্যালেন্ডার ইনপুট মোডে বদল করুন"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"টেক্সট ইনপুট মোডে বদল করুন"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"পরের বছরগুলি দেখতে স্ক্রল করুন"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"আগের বছরগুলি দেখতে স্ক্রল করুন"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"তারিখ বেছে নিন"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"শুরুর তারিখ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"শেষ হওয়ার তারিখ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"পরের মাস দেখতে স্ক্রল করুন"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"আগের মাস দেখতে স্ক্রল করুন"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"সীমার মধ্যে"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"তারিখ লিখুন"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"তারিখের ব্যাপ্তি সম্পর্কিত ইনপুট ভুল দেওয়া আছে"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"টেনে আনার হ্যান্ডেল"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"স্ক্রিনের নিচে অ্যাটাচ করা শিট আড়াল করুন"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"স্ক্রিনের নিচে অ্যাটাচ করা শিট বাতিল করুন"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"স্ক্রিনের নিচে অ্যাটাচ করা শিট বড় করুন"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"টুলটিপ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"টুলটিপ দেখান"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM বা PM বেছে নিন"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ঘণ্টা বেছে নিন"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"মিনিট বেছে নিন"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$dটা"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ঘণ্টা"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d মিনিট"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"মিনিট"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ঘণ্টা"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"এত মিনিটের জন্য"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"এত ঘণ্টার জন্য"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-bs/strings.xml b/compose/material3/material3/src/androidMain/res/values-bs/strings.xml
new file mode 100644
index 0000000..584bfe0
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-bs/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dijaloški okvir"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Prošireno"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Suženo"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Odbacivanje"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Pretraživanje"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Prijedlozi su u nastavku"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Odabir datuma"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Odabrani datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Prebacivanje na odabir godine"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Prevucite da odaberete godinu ili dodirnite da se vratite na odabir dana"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Promjena na sljedeći mjesec"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Promjena na prethodni mjesec"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Odlazak na %1$s. godinu"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Trenutni odabir: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ništa"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Danas"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Birač godine je vidljiv"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Odabir datuma"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Unesen je datum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Unesen je datum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ništa"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datum nije dozvoljen: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datumi se ne podudaraju s očekivanim obrascem: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum je izvan očekivanog raspona %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Prebacivanje na način rada unosa kalendara"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Prebacivanje na način rada unosa teksta"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Kliznite da se prikažu kasnije godine"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Kliznite da se prikažu ranije godine"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Odabir datuma"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Datum početka"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Datum završetka"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Kliznite da se prikaže sljedeći mjesec"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Kliznite da se prikaže prethodni mjesec"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"U rasponu"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Unos datuma"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Nevažeći unos raspona datuma"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Ručica za prevlačenje"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Sužavanje donje tabele"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Odbacivanje donje tabele"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Proširivanje donje tabele"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Skočni opis"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Prikaz skočnog opisa"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"poslijepodne"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"prijepodne"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Odaberite prijepodne ili poslijepodne"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Odaberite sate"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Odaberite minute"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d h"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d h"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d min"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuta"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Sat"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"za minute"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"za sat"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ca/strings.xml b/compose/material3/material3/src/androidMain/res/values-ca/strings.xml
new file mode 100644
index 0000000..982a4b0
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ca/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Quadre de diàleg"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"S\'ha desplegat"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"S\'ha replegat"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Ignora"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Cerca"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggeriments a continuació"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Selecciona la data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data seleccionada"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Canvia a la selecció de l\'any"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Llisca per seleccionar un any o toca per tornar a seleccionar un dia"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Canvia al mes següent"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Canvia al mes anterior"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navega fins a l\'any %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Selecció actual: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Cap"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Avui"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Selector d\'any visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Selecciona la data"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data introduïda"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data introduïda: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Cap"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data no permesa: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"La data no coincideix amb el patró esperat: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"La data no es troba dins de l\'interval d\'anys esperat: %1$s-%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Canvia al mode d\'introducció de calendari"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Canvia al mode d\'introducció de text"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Desplaça\'t per mostrar els anys posteriors"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Desplaça\'t per mostrar els anys anteriors"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Selecciona les dates"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data d\'inici"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data de finalització"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Desplaça\'t per mostrar el mes següent"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Desplaça\'t per mostrar el mes anterior"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dins de l\'interval"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Introdueix les dates"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"S\'ha introduït un interval de dates no vàlid"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Ansa per arrossegar"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Replega el full inferior"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Ignora el full inferior"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Desplega el full inferior"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Descripció emergent"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostra la descripció emergent"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selecciona AM o PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Selecciona l\'hora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Selecciona els minuts"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d en punt"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d hores"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minuts"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minut"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"per als minuts"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"per a l\'hora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-cs/strings.xml b/compose/material3/material3/src/androidMain/res/values-cs/strings.xml
new file mode 100644
index 0000000..0a3c854
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-cs/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogové okno"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Rozbaleno"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Sbaleno"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Zavřít"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Vyhledávání"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Níže jsou k dispozici návrhy"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Výběr data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Vybrané datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Přepnout na výběr roku"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Přejetím prstem vyberte rok nebo se klepnutím vraťte k výběru dne"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Přejít na další měsíc"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Přejít na předchozí měsíc"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Přejít na rok %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Aktuální výběr: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Žádné"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Dnes"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Je zobrazen výběr roku"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Vyberte datum"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Zadané datum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Zadané datum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Žádné"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Nepovolené datum: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datum neodpovídá očekávanému vzoru: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum není v očekávaném rozsahu roků %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Přepnout na režim zadávání pomocí kalendáře"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Přepnout na režim zadávání textu"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Posunutím zobrazíte pozdější roky"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Posunutím zobrazíte předchozí roky"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Vyberte data"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Datum zahájení"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Datum ukončení"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Posunutím zobrazíte další měsíc"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Posunutím zobrazíte předchozí měsíc"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"V rozsahu"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Zadejte data"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Neplatné období"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Úchyt pro přetažení"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Sbalit spodní tabulku"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Zavřít spodní tabulku"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Rozbalit spodní tabulku"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Popisek"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Zobrazit popisek"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Vyberte AM nebo PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Vybrat hodinu"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Vyberte minuty"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d hodin"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d hodin"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minut"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuta"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hodina"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"pro minuty"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"pro hodinu"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-da/strings.xml b/compose/material3/material3/src/androidMain/res/values-da/strings.xml
new file mode 100644
index 0000000..1acf697
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-da/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogboks"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Udvidet"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Skjult"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Afvis"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Søg"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Forslag nedenfor"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Vælg dato"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Valgt dato"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Skift til valg af år"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Stryg for at vælge et år, eller tryk for at skifte tilbage til datovælgeren"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Skift til næste måned"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Skift til forrige måned"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Gå til år %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Aktuelt valg: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ingen"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"I dag"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Årsvælgeren er synlig"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Vælg dato"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Angivet dato"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Dato"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Angivet dato: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ingen"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datoen er ikke tilladt: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datoen svarer ikke til det forventede format: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datoen er uden for det forventede årsinterval: %1$s-%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Skift til input-tilstand for kalender"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Skift til input-tilstand for tekst"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Rul for at se senere år"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Rul for at se tidligere år"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Vælg datoer"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Startdato"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Slutdato"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Rul for at se næste måned"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Rul for at se forrige måned"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Inden for de valgte dage"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Angiv datoer"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Det angivne datointerval er ugyldigt"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Håndtag"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Skjul felt i bunden"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Luk felt i bunden"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Udvid felt i bunden"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Værktøjstip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Se værktøjstip"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Vælg AM eller PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Vælg time"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Vælg minutter"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"kl. %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d timer"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutter"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minut"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Time"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"til minutter"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"til timer"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-de/strings.xml b/compose/material3/material3/src/androidMain/res/values-de/strings.xml
new file mode 100644
index 0000000..3cee3b1
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-de/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogfeld"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Maximiert"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Minimiert"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Schließen"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Suche"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Vorschläge unten"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Datum auswählen"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Ausgewähltes Datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Zur Jahresauswahl wechseln"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Wischen, um ein Jahr auszuwählen, oder tippen, um zur Tagesauswahl zurückzukehren"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Zum nächsten Monat wechseln"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Zum vorherigen Monat wechseln"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Zum Jahr %1$s wechseln"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Aktuelle Auswahl: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Kein Datum"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Heute"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Jahresauswahl sichtbar"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Datum auswählen"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Eingabedatum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Eingabedatum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Kein Datum"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Unzulässiges Datum: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datum entspricht nicht dem erwarteten Format: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum liegt außerhalb des erwarteten Jahresbereichs (%1$s–%2$s)"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"In den Kalendereingabemodus wechseln"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"In den Texteingabemodus wechseln"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Zum Ansehen nachfolgender Jahre scrollen"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Zum Ansehen vorheriger Jahre scrollen"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Daten auswählen"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Startdatum"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Enddatum"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Zum Ansehen des nächsten Monats scrollen"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Zum Ansehen des vorherigen Monats scrollen"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Im Zeitraum"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Daten eingeben"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Angegebener Zeitraum ungültig"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Ziehpunkt"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Ansicht am unteren Rand minimieren"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Ansicht am unteren Rand schließen"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Ansicht am unteren Rand maximieren"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Kurzinfo"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Kurzinfo anzeigen"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"Nachmittags"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"Vormittags"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Vormittags oder nachmittags auswählen"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Stunde auswählen"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Minuten auswählen"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d Uhr"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d Std."</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d Minuten"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Stunde"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"für Minuten"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"für Stunde"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-el/strings.xml b/compose/material3/material3/src/androidMain/res/values-el/strings.xml
new file mode 100644
index 0000000..bee936e
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-el/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Παράθυρο διαλόγου"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Αναπτυγμένο"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Συμπτυγμένο"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Παράβλεψη"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Αναζήτηση"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Προτάσεις παρακάτω"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Επιλογή ημερομηνίας"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Επιλεγμένη ημερομηνία"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Εναλλαγή σε επιλογή έτους"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Σύρετε για να επιλέξετε ένα έτος ή πατήστε για να επιστρέψετε στην επιλογή ημέρας."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Αλλαγή στον επόμενο μήνα"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Αλλαγή στον προηγούμενο μήνα"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Μετάβαση στο έτος %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Τρέχουσα επιλογή: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Καμία"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Σήμερα"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Το εργαλείο επιλογής έτους είναι ορατό"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Επιλογή ημερομηνίας"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Εισαγωγή ημερομηνίας"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Ημερομηνία"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Εισαγωγή ημερομηνίας: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Καμία"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Η ημερομηνία δεν επιτρέπεται: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Η ημερομηνία δεν αντιστοιχεί στο αναμενόμενο μοτίβο: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Η ημερομηνία είναι εκτός του αναμενόμενου εύρους ετών %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Εναλλαγή στη λειτουργία εισαγωγής ημερολογίου"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Εναλλαγή στη λειτουργία εισαγωγής κειμένου"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Κάντε κύλιση για εμφάνιση επόμενων ετών"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Κάντε κύλιση για εμφάνιση προηγούμενων ετών"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Επιλογή ημερομηνιών"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Ημερομηνία έναρξης"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Ημερομηνία λήξης"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Κάντε κύλιση για εμφάνιση του επόμενου μήνα"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Κάντε κύλιση για εμφάνιση του προηγούμενου μήνα"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Εντός εύρους"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Εισαγωγή ημερομηνιών"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Μη έγκυρη εισαγωγή εύρους ημερομηνιών"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Λαβή μεταφοράς"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Σύμπτυξη φύλλου κάτω μέρους"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Παράβλεψη φύλλου κάτω μέρους"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Ανάπτυξη φύλλου κάτω μέρους"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Επεξήγηση εργαλείου"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Προβολή επεξήγησης εργαλείου"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"μμ"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"πμ"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Επιλέξτε π.μ. ή μ.μ."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Επιλογή ώρας"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Επιλογή λεπτών"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d η ώρα"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"Ώρα %1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d λεπτά"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Λεπτό"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Ώρα"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"για λεπτά"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"για ώρα"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rAU/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..f2f7017
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-en-rAU/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogue"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Expanded"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Collapsed"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Dismiss"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Search"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggestions below"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Select date"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Selected date"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Switch to selecting a year"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Swipe to select a year or tap to switch back to selecting a day"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Change to next month"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Change to previous month"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigate to year %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Current selection: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"None"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Today"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Year picker visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Select date"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Entered date"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Date"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Entered date: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"None"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Date not allowed: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Date does not match expected pattern: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Date out of expected year range %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Switch to calendar input mode"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Switch to text input mode"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scroll to show later years"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scroll to show earlier years"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Select dates"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Start date"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"End date"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scroll to show the next month"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scroll to show the previous month"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"In range"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Enter dates"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Invalid date range input"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Drag handle"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Collapse bottom sheet"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Dismiss bottom sheet"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Expand bottom sheet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tooltip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Show tooltip"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"p.m."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"a.m."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Select a.m. or p.m."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Select hour"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Select minutes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d o\'clock"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d hours"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutes"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hour"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"for minutes"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"for hour"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml
index e1286b7..8914bb2 100644
--- a/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml
+++ b/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml
@@ -17,112 +17,59 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for m3c_dialog (7617233117134790350) -->
-    <skip />
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialog"</string>
     <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Expanded"</string>
     <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Collapsed"</string>
-    <!-- no translation found for m3c_snackbar_dismiss (6152755701819882931) -->
-    <skip />
-    <!-- no translation found for m3c_search_bar_search (6152806324422087846) -->
-    <skip />
-    <!-- no translation found for m3c_suggestions_available (7655536806087401899) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_title (7430790972741451689) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_headline (7605002211875882969) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_year_selection (791651718641787594) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_day_selection (395627960681594326) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_next_month (7142101321095356500) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_previous_month (228438865139394590) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_navigate_to_year_description (8436650776581492840) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_headline_description (3664277305226978227) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_no_selection_description (5811000998184572395) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_today_description (3199387177749801575) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_year_picker_pane_title (2068382232816991922) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_title (7306227249789210568) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_headline (8166741421776570875) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_label (2895559812010326913) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_headline_description (229313757840775812) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_no_input_description (1237013946323089826) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_invalid_not_allowed (2521768508935305279) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_invalid_for_pattern (6116910750161463197) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_invalid_year_range (7052898923934555305) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_calendar_mode (1804346892470238807) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_input_mode (2219746470065162704) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_scroll_to_later_years (5727367015496556177) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_scroll_to_earlier_years (7813882352367152251) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_title (3134165431120340385) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_start_headline (4665981448952749820) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_end_headline (4947636797751277713) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_scroll_to_next_month (602077859540990149) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_scroll_to_previous_month (4592174524846109496) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_day_in_range (2138321128465719402) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_input_title (3148384720560189467) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_input_invalid_range_input (3190049423327661366) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_drag_handle_description (8403354765404029791) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_collapse_description (2988463736136100848) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_dismiss_description (1555567894577437024) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_expand_description (6670819569745899763) -->
-    <skip />
-    <!-- no translation found for m3c_tooltip_pane_description (5460405025248574620) -->
-    <skip />
-    <!-- no translation found for m3c_tooltip_long_press_label (1805687647081129904) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_pm (6616362054113087709) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_am (2786685010796619560) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_period_toggle_description (5865171949528594571) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_selection (8876759303332837035) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute_selection (4699133535056739733) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_suffix (3458167507790628988) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_24h_suffix (9179527532316922345) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute_suffix (5064177921781937179) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute (4313071914266462005) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour (2349193472625211372) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute_text_field (7661234488295443182) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_text_field (6973808109666874069) -->
-    <skip />
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Dismiss"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Search"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggestions below"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Select date"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Selected date"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Switch to selecting a year"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Swipe to select a year, or tap to switch back to selecting a day"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Change to next month"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Change to previous month"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigate to year %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Current selection: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"None"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Today"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Year picker visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Select date"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Entered date"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Date"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Entered date: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"None"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Date not allowed: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Date does not match expected pattern: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Date out of expected year range %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Switch to calendar input mode"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Switch to text input mode"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scroll to show later years"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scroll to show earlier years"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Select dates"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Start date"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"End date"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scroll to show the next month"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scroll to show the previous month"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"In range"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Enter dates"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Invalid date range input"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Drag handle"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Collapse bottom sheet"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Dismiss bottom sheet"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Expand bottom sheet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tooltip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Show tooltip"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Select AM or PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Select hour"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Select minutes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d o\'clock"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d hours"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutes"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hour"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"for minutes"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"for hour"</string>
 </resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rGB/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..f2f7017
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-en-rGB/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogue"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Expanded"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Collapsed"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Dismiss"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Search"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggestions below"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Select date"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Selected date"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Switch to selecting a year"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Swipe to select a year or tap to switch back to selecting a day"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Change to next month"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Change to previous month"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigate to year %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Current selection: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"None"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Today"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Year picker visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Select date"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Entered date"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Date"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Entered date: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"None"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Date not allowed: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Date does not match expected pattern: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Date out of expected year range %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Switch to calendar input mode"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Switch to text input mode"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scroll to show later years"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scroll to show earlier years"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Select dates"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Start date"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"End date"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scroll to show the next month"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scroll to show the previous month"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"In range"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Enter dates"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Invalid date range input"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Drag handle"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Collapse bottom sheet"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Dismiss bottom sheet"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Expand bottom sheet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tooltip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Show tooltip"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"p.m."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"a.m."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Select a.m. or p.m."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Select hour"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Select minutes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d o\'clock"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d hours"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutes"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hour"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"for minutes"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"for hour"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rIN/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..f2f7017
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-en-rIN/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogue"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Expanded"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Collapsed"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Dismiss"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Search"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggestions below"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Select date"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Selected date"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Switch to selecting a year"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Swipe to select a year or tap to switch back to selecting a day"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Change to next month"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Change to previous month"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigate to year %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Current selection: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"None"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Today"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Year picker visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Select date"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Entered date"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Date"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Entered date: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"None"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Date not allowed: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Date does not match expected pattern: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Date out of expected year range %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Switch to calendar input mode"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Switch to text input mode"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scroll to show later years"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scroll to show earlier years"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Select dates"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Start date"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"End date"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scroll to show the next month"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scroll to show the previous month"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"In range"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Enter dates"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Invalid date range input"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Drag handle"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Collapse bottom sheet"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Dismiss bottom sheet"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Expand bottom sheet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tooltip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Show tooltip"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"p.m."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"a.m."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Select a.m. or p.m."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Select hour"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Select minutes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d o\'clock"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d hours"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutes"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hour"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"for minutes"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"for hour"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml
index af84efe..8713ddb 100644
--- a/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml
+++ b/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml
@@ -17,112 +17,59 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for m3c_dialog (7617233117134790350) -->
-    <skip />
+    <string name="m3c_dialog" msgid="7617233117134790350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‎‏‏‏‎‎Dialog‎‏‎‎‏‎"</string>
     <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‎‏‎‎Expanded‎‏‎‎‏‎"</string>
     <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‎‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‎Collapsed‎‏‎‎‏‎"</string>
-    <!-- no translation found for m3c_snackbar_dismiss (6152755701819882931) -->
-    <skip />
-    <!-- no translation found for m3c_search_bar_search (6152806324422087846) -->
-    <skip />
-    <!-- no translation found for m3c_suggestions_available (7655536806087401899) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_title (7430790972741451689) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_headline (7605002211875882969) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_year_selection (791651718641787594) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_day_selection (395627960681594326) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_next_month (7142101321095356500) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_previous_month (228438865139394590) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_navigate_to_year_description (8436650776581492840) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_headline_description (3664277305226978227) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_no_selection_description (5811000998184572395) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_today_description (3199387177749801575) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_year_picker_pane_title (2068382232816991922) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_title (7306227249789210568) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_headline (8166741421776570875) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_label (2895559812010326913) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_headline_description (229313757840775812) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_no_input_description (1237013946323089826) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_invalid_not_allowed (2521768508935305279) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_invalid_for_pattern (6116910750161463197) -->
-    <skip />
-    <!-- no translation found for m3c_date_input_invalid_year_range (7052898923934555305) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_calendar_mode (1804346892470238807) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_switch_to_input_mode (2219746470065162704) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_scroll_to_later_years (5727367015496556177) -->
-    <skip />
-    <!-- no translation found for m3c_date_picker_scroll_to_earlier_years (7813882352367152251) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_title (3134165431120340385) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_start_headline (4665981448952749820) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_end_headline (4947636797751277713) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_scroll_to_next_month (602077859540990149) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_scroll_to_previous_month (4592174524846109496) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_picker_day_in_range (2138321128465719402) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_input_title (3148384720560189467) -->
-    <skip />
-    <!-- no translation found for m3c_date_range_input_invalid_range_input (3190049423327661366) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_drag_handle_description (8403354765404029791) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_collapse_description (2988463736136100848) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_dismiss_description (1555567894577437024) -->
-    <skip />
-    <!-- no translation found for m3c_bottom_sheet_expand_description (6670819569745899763) -->
-    <skip />
-    <!-- no translation found for m3c_tooltip_pane_description (5460405025248574620) -->
-    <skip />
-    <!-- no translation found for m3c_tooltip_long_press_label (1805687647081129904) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_pm (6616362054113087709) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_am (2786685010796619560) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_period_toggle_description (5865171949528594571) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_selection (8876759303332837035) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute_selection (4699133535056739733) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_suffix (3458167507790628988) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_24h_suffix (9179527532316922345) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute_suffix (5064177921781937179) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute (4313071914266462005) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour (2349193472625211372) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_minute_text_field (7661234488295443182) -->
-    <skip />
-    <!-- no translation found for m3c_time_picker_hour_text_field (6973808109666874069) -->
-    <skip />
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‏‏‎Dismiss‎‏‎‎‏‎"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‎‏‎‏‎‎‏‏‎‎Search‎‏‎‎‏‎"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‏‏‎Suggestions below‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎Select date‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‏‎‎‏‎‏‎‎‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎Selected date‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‏‎‏‎‎Switch to selecting a year‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎Swipe to select a year, or tap to switch back to selecting a day‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‏‏‏‎‏‏‏‎‏‎‏‏‏‎‏‎‎‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‎‏‎‎‎Change to next month‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎‏‏‏‎‎‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‎‏‏‎‏‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎Change to previous month‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‏‎‎‎‎‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‎‎‎Navigate to year %1$s‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‏‎‎‎‏‏‎‎‎‏‏‏‎‏‏‎‎‏‏‎Current selection: %1$s‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‏‏‎None‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‏‏‏‎Today‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎Year picker visible‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‎‏‎‎‎‎Select date‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‎‏‏‎‏‏‏‎‎‏‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‎‏‏‎Entered date‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‏‎‎‏‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‏‎‏‏‏‎‏‏‏‎‎‎‎‎‎‏‎Date‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‏‏‏‎‏‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‏‏‎‎‏‏‎‏‎‏‎‎‎‎‏‎‎‎Entered date: %1$s‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‎‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎None‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‎‎‎‏‏‏‏‏‏‎Date not allowed: %1$s‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‏‎Date does not match expected pattern: %1$s‎‏‎‎‏‎"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎Date out of expected year range %1$s - %2$s‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‎‏‎‎‏‎‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎Switch to calendar input mode‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎Switch to text input mode‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‎‎‎‏‎Scroll to show later years‎‏‎‎‏‎"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‎‏‏‎‎‎‏‎‎‏‏‎‎‎‏‎‎‏‏‎‏‎‏‏‎‎‎‏‏‏‏‎‏‏‎Scroll to show earlier years‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‎‏‏‎‏‎‎‎‎‏‎Select dates‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‎‏‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎Start date‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‎‏‎End date‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‏‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‎‎‏‎‏‎Scroll to show the next month‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‏‏‎‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‎‎‎‏‏‎‎‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‎‎Scroll to show the previous month‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‎‏‎‏‎‎In range‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‏‏‎Enter dates‎‏‎‎‏‎"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‎‏‏‎‎Invalid date range input‎‏‎‎‏‎"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‏‎Drag handle‎‏‎‎‏‎"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎Collapse bottom sheet‎‏‎‎‏‎"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‏‎‏‎‎‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎Dismiss bottom sheet‎‏‎‎‏‎"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎Expand bottom sheet‎‏‎‎‏‎"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‎‎‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎‎Tooltip‎‏‎‎‏‎"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‎‏‎‏‎‎‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‎‎Show tooltip‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‏‎‏‎PM‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‎‎‎‎‎‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‏‎‏‎‎‎‎AM‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‎‏‎‎‎‏‎‏‏‎Select AM or PM‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎Select hour‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‏‎‏‎‏‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎‏‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‎‎‏‎‏‎‏‎Select minutes‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‏‏‎‎‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‎%1$d o\'clock‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‎‏‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‏‏‏‎‏‎‎‏‎%1$d hours‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‏‎‎‎‎‎‏‏‎‏‏‎%1$d minutes‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‏‎Minute‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‎‎Hour‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‎‎‏‎‏‏‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‏‏‎‎for minutes‎‏‎‎‏‎"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‏‎for hour‎‏‎‎‏‎"</string>
 </resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-es-rUS/strings.xml b/compose/material3/material3/src/androidMain/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..3ffdcf73
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-es-rUS/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Diálogo"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Expandido"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Contraído"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Descartar"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Buscar"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugerencias a continuación"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Seleccionar fecha"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Fecha seleccionada"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Cambiar a seleccionar un año"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Desliza el dedo para seleccionar un año o presiona para volver a la selección de día"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Cambiar al mes siguiente"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Cambiar al mes anterior"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navegar al año %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Selección actual: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ninguna"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hoy"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Selector de año visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Seleccionar fecha"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Fecha ingresada"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Fecha"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Fecha ingresada: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ninguna"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Fecha no permitida: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"La fecha no coincide con el patrón esperado: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"La fecha está fuera del rango de años esperado: %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Cambiar al modo de entrada de calendario"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Cambiar al modo de entrada de texto"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Desplázate para ver los últimos años"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Desplázate para ver los primeros años"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Seleccionar fechas"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Fecha de inicio"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Fecha de finalización"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Desplázate para ver el próximo mes"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Desplázate para ver el mes anterior"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"En el rango"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Ingresar fechas"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Se introdujo un período no válido"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Controlador de arrastre"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Contraer la hoja inferior"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Descartar la hoja inferior"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Expandir la hoja inferior"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Información"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostrar información"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selecciona a.m. o p.m."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Seleccionar hora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Seleccionar los minutos"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d en punto"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d horas"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutos"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuto"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"por minutos"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"por hora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-es/strings.xml b/compose/material3/material3/src/androidMain/res/values-es/strings.xml
new file mode 100644
index 0000000..659ba0b
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-es/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Cuadro de diálogo"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Desplegado"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Contraído"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Cerrar"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Buscar"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugerencias a continuación"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Seleccionar fecha"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Fecha seleccionada"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Cambiar para seleccionar un año"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Desliza para seleccionar un año o toca para volver a seleccionar un día"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Cambiar al mes siguiente"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Cambiar al mes anterior"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Ir al año %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Seleccionado: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"No hay datos"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hoy"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Selector de año visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Seleccionar fecha"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Fecha introducida"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Fecha"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Fecha introducida: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"No hay datos"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Fecha no permitida: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"La fecha no coincide con el patrón esperado: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Fecha fuera del intervalo de años previsto: %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Cambiar al modo de introducción de calendario"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Cambiar al modo de introducción de texto"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Desplázate para ver los años posteriores"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Desplázate para ver los años anteriores"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Seleccionar fechas"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Fecha de inicio"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Fecha de finalización"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Desplázate para ver el mes siguiente"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Desplázate para ver el mes anterior"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dentro del intervalo"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Introducir fechas"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"El intervalo de fechas no es válido"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Controlador de arrastre"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Contrae la hoja inferior"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Cierra la hoja inferior"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Despliega la hoja inferior"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Descripción emergente"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostrar descripción emergente"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selecciona AM o PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Seleccionar hora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Seleccionar minutos"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d en punto"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d horas"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutos"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minutos"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"para los minutos"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"para la hora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-et/strings.xml b/compose/material3/material3/src/androidMain/res/values-et/strings.xml
new file mode 100644
index 0000000..f283b3d
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-et/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialoog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Laiendatud"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Ahendatud"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Loobu"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Otsing"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Soovitused on allpool"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Valige kuupäev"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Valitud kuupäev"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Lülitu aasta valimisele"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Pühkige aasta valimiseks või puudutage, et minna tagasi päeva valimise juurde"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Vaheta järgmisele kuule"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Vaheta eelmisele kuule"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Liigu aasta %1$s juurde"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Praegune valik: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Puudub"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Täna"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Aasta valija on nähtav"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Valige kuupäev"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Sisestatud kuupäev"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Kuupäev"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Sisestatud kuupäev: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Puudub"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Kuupäev pole lubatud: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Kuupäev ei ühti eeldatud mustriga: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Kuupäev on väljaspool eeldatud aastavahemikku %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Lülitu kalendrisisestusrežiimile"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Lülitu tekstisisestusrežiimile"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Hilisemate aastate kuvamiseks kerige"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Varasemate aastate kuvamiseks kerige"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Valige kuupäevad"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Alguskuupäev"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Lõppkuupäev"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Järgmise kuu kuvamiseks kerige"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Eelmise kuu kuvamiseks kerige"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Vahemikus"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Sisestage kuupäevad"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Sisestati sobimatu kuupäevavahemik"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Lohistamispide"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Alumise lehe ahendamine"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Alumisest lehest loobumine"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Alumise lehe laiendamine"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Kohtspikker"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Kuva kohtspikker"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Valige AM või PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Tunni valimine"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Minutite valimine"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d.00"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d tundi"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutit"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minut"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Tunnid"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"minutite jaoks"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"tundide jaoks"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-eu/strings.xml b/compose/material3/material3/src/androidMain/res/values-eu/strings.xml
new file mode 100644
index 0000000..4a3ec21
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-eu/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Leihoa"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Zabalduta"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Tolestuta"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Baztertu"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Bilatu"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Iradokizunak daude behean"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Hautatu data bat"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Hautatutako data"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Joan urte-hautatzailera"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Pasatu hatza urte bat hautatzeko. Bestela, sakatu hau eguna hautatzeko pantailara itzultzeko."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Aldatu hurrengo hilabetera"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Aldatu aurreko hilabetera"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Joan %1$s. urtera"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Oraingo hautapena: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Bat ere ez"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Gaur"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Urte-hautatzailea ikusgai dago"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Hautatu data bat"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Idatzitako data"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Idatzitako data: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Bat ere ez"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Ez da onartzen data: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Data ez dator bat espero den ereduarekin: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Espero den urte tartetik (%1$s-%2$s) kanpo dago data"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Aldatu egutegiaren idazketa-metodora"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Aldatu testua idazteko modura"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Egin gora/behera etorkizuneko urteak erakusteko"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Egin gora/behera iraganeko urteak erakusteko"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Hautatu datak"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Hasiera-data"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Amaiera-data"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Egin gora/behera hurrengo hilabetea erakusteko"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Egin gora/behera aurreko hilabetea erakusteko"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Barrutian"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Idatzi datak"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Idatzitako data tarteak ez du balio"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Arrastatzeko kontrol-puntua"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Tolestu pantailaren behealdean ainguratutako orria"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Baztertu pantailaren behealdean ainguratutako orria"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Zabaldu pantailaren behealdean ainguratutako orria"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Aholkua"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Erakutsi aholkua"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Hautatu AM edo PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Hautatu ordua"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Hautatu minutuak"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutu"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minutua"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Ordua"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"minutuetarako"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ordurako"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fa/strings.xml b/compose/material3/material3/src/androidMain/res/values-fa/strings.xml
new file mode 100644
index 0000000..0cae189
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-fa/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"کادر گفتگو"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ازهم باز شد"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"جمع شد"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"بستن"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"جستجو"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"پیشنهادهای زیر"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"انتخاب تاریخ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"تاریخ انتخابی"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"رفتن به انتخاب سال"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"برای انتخاب سال، تند بکشید یا برای برگشتن به انتخاب روز، ضربه بزنید"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"تغییر به ماه بعدی"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"تغییر به ماه قبلی"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"‏پیمایش به سال %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"‏انتخاب فعلی: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"هیچ‌کدام"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"امروز"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"انتخابگر سال نمایان است"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"انتخاب تاریخ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"تاریخ واردشده"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"تاریخ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"‏تاریخ واردشده: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"هیچ‌کدام"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"‏تاریخ مجاز نیست: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"‏تاریخ با الگوی موردانتظار مطابقت ندارد: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"‏تاریخ خارج از بازه زمانی %1$s تا %2$s است"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"رفتن به روش ورودی تقویم"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"رفتن به حالت ورودی نوشتاری"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"برای نمایش سال‌های بعد پیمایش کنید"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"برای نمایش سال‌های قبل پیمایش کنید"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"تاریخ‌ها را انتخاب کنید"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"تاریخ شروع"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"تاریخ پایان"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"برای نمایش ماه بعد پیمایش کنید"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"برای نمایش ماه قبل پیمایش کنید"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"در محدوده"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"تاریخ‌ها را وارد کنید"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"محدوده تاریخ واردشده نامعتبر است"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"دستگیره کشاندن"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"جمع کردن برگ زیرین"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"بستن برگ زیرین"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ازهم باز کردن برگ زیرین"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"نکته‌ابزار"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"نمایش نکته‌ابزار"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"ب.ظ."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"ق.ظ."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"انتخاب ق.ظ. یا ب.ظ."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"انتخاب ساعت"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"انتخاب دقیقه"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"‏ساعت %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"‏%1$d ساعت"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"‏%1$d دقیقه"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"دقیقه"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ساعت"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"برای دقیقه"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"برای ساعت"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fi/strings.xml b/compose/material3/material3/src/androidMain/res/values-fi/strings.xml
new file mode 100644
index 0000000..4936890
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-fi/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Valintaikkuna"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Laajennettu"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Tiivistetty"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Ohita"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Hae"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Ehdotuksia alla"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Valitse päivämäärä"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Valittu päivämäärä"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Vaihda vuoden valintaan"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Valitse vuosi pyyhkäisemällä tai palaa päivän valintaan napauttamalla"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Vaihda seuraavaan kuukauteen"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Vaihda edelliseen kuukauteen"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Siirry vuoteen %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Nykyinen valinta: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"–"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Tänään"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Vuosivalitsin näkyvillä"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Valitse päivämäärä"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Lisätty päivämäärä"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Päivämäärä"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Lisätty päivämäärä: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"–"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Päivämäärä ei sallittu: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Päivämäärä ei vastaa odotettua mallia: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Päivämäärä ei sisälly odotettuun vuosiaikaväliin: %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Vaihda syöttötavaksi kalenteri"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Vaihda tekstinsyöttötilaan"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Vieritä nähdäksesi myöhemmät vuodet"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Vieritä nähdäksesi aiemmat vuodet"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Valitse päivämäärät"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Alkamispäivä"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Päättymispäivä"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Vieritä nähdäksesi seuraavan kuukauden"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Vieritä nähdäksesi edellisen kuukauden"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Valitulla välillä"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Lisää päivämäärät"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Virheellinen ajanjakso"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Vetokahva"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Tiivistä alapaneeli"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Hylkää alapaneeli"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Laajenna alapaneeli"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Vihjeteksti"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Näytä vihjeteksti"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"IP"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AP"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Valitse AP tai IP"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Valitse tunti"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Valitse minuutit"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Kello %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d h"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minuuttia"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuutti"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Tunti"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"minuuttien osalta"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"tuntien osalta"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fr-rCA/strings.xml b/compose/material3/material3/src/androidMain/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..9f32ba2
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-fr-rCA/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogue"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Développé"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Réduit"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Fermer"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Recherche"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggestions ci-dessous"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Sélectionner une date"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Date sélectionnée"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Passer à la sélection d\'une année"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Balayez l\'écran pour sélectionner une année, ou touchez pour revenir en arrière et sélectionner un jour"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Passer au mois suivant"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Passer au mois précédent"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Naviguez jusqu\'à l\'année %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Sélection actuelle : %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Aucune"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Aujourd\'hui"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Sélecteur d\'année visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Sélectionner une date"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Date entrée"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Date"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Date entrée : %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Aucune"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Date non autorisée : %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"La date ne correspond pas au schéma prévu : %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Date non comprise dans la fourchette prévue des années %1$s à %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Passer au mode d\'entrée de l\'agenda"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Passer au mode d\'entrée de texte"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Faites défiler pour afficher les années suivantes"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Faites défiler pour afficher les années précédentes"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Sélectionner les dates"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Date de début"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Date de fin"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Faites défiler pour afficher le mois suivant"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Faites défiler pour afficher le mois précédent"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dans la fourchette"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Entrer les dates"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Entrée de période incorrecte"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Poignée de déplacement"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Réduire la zone de contenu dans le bas de l\'écran"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Fermer la zone de contenu dans le bas de l\'écran"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Développer la zone de contenu dans le bas de l\'écran"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Infobulle"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Afficher une infobulle"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Sélectionner AM ou PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Sélectionner l\'heure"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Sélectionnez les minutes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d h"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d h"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutes"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Heure"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"pour les minutes"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"pour l\'heure"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fr/strings.xml b/compose/material3/material3/src/androidMain/res/values-fr/strings.xml
new file mode 100644
index 0000000..617abdc
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-fr/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Boîte de dialogue"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Développé"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Réduit"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Fermer"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Rechercher"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggestions ci-dessous"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Sélectionner une date"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Date sélectionnée"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Passer à la sélection d\'une année"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Balayez l\'écran pour sélectionner une année ou appuyez pour revenir à la sélection d\'un jour"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Passer au mois suivant"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Passer au mois précédent"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Accéder à l\'année %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Sélection actuelle : %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Aucun"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Aujourd\'hui"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Sélecteur d\'année visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Sélectionner une date"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Date saisie"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Date"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Date saisie : %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Aucun"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Date non autorisée : %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"La date ne correspond pas au format attendu : %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Date hors de la plage d\'années attendue : %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Passer au mode de saisie Agenda"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Passer au mode de saisie Texte"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Faites défiler pour afficher les années suivantes"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Faites défiler pour afficher les années précédentes"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Sélectionner des dates"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Date de début"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Date de fin"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Faites défiler pour afficher le mois suivant"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Faites défiler pour afficher le mois précédent"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dans la plage"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Saisir des dates"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Plage de dates non valide"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Poignée de déplacement"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Réduire la bottom sheet"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Fermer la bottom sheet"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Développer la bottom sheet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Info-bulle"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Afficher l\'info-bulle"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Sélectionner le format AM ou PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Sélectionner une heure"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Sélectionner des minutes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d heures"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d heures"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutes"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minute"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Heure"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"en minutes"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"en heures"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-gl/strings.xml b/compose/material3/material3/src/androidMain/res/values-gl/strings.xml
new file mode 100644
index 0000000..d0a13b4
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-gl/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Cadro de diálogo"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Despregado"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Contraído"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Pechar"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Buscar"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Hai suxestións abaixo"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Selecciona a data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data seleccionada"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Cambiar á selección do ano"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Pasar o dedo para seleccionar un ano ou tocar a pantalla para volver á selección do día"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Cambiar ao mes seguinte"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Cambiar ao mes anterior"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Ir ao ano %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Selección actual: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ningunha"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hoxe"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Selector de ano visible"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Selecciona a data"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data indicada"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data indicada: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ningunha"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data non permitida: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"A data non coincide co padrón esperado: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"A data está fóra do intervalo de anos esperado (%1$s - %2$s)"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Cambiar ao modo de introdución de texto do calendario"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Cambiar ao modo de introdución de texto"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Desprazarse para mostrar anos posteriores"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Desprazarse para mostrar anos anteriores"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Selecciona as datas"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data de inicio"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data de finalización"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Desprazarse para mostrar o mes seguinte"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Desprazarse para mostrar o mes anterior"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dentro do intervalo"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Indica as datas"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Indicouse un intervalo de datas que non é válido"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Controlador de arrastre"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Contrae o panel inferior"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Pecha o panel inferior"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Desprega o panel inferior"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Cadro de información"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostrar o cadro de información"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selecciona a.m. ou p.m."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Selecciona a hora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Selecciona os minutos"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d horas"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutos"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuto"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"por minuto"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"por hora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-gu/strings.xml b/compose/material3/material3/src/androidMain/res/values-gu/strings.xml
new file mode 100644
index 0000000..cacb9c4
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-gu/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"સંવાદ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"મોટી કરેલી"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"નાની કરેલી"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"છોડી દો"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"શોધો"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"સૂચનો નીચે છે"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"તારીખ પસંદ કરો"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"પસંદ કરેલી તારીખ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"વર્ષ પસંદ કરવાના વિકલ્પ પર સ્વિચ કરો"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"વર્ષ પસંદ કરવા માટે સ્વાઇપ કરો અથવા દિવસની પસંદગી પર પાછા સ્વિચ કરવા માટે ટૅપ કરો"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"બદલીને આગલો મહિનો પસંદ કરો"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"બદલીને પાછલો મહિનો પસંદ કરો"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"વર્ષ %1$s પર નૅવિગેટ કરો"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"હાલની પસંદગી: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"એકપણ નહીં"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"આજે"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"વર્ષ માટેનું પિકર દૃશ્યમાન છે"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"તારીખ પસંદ કરો"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"દાખલ કરેલી તારીખ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"તારીખ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"દાખલ કરેલી તારીખ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"એકપણ નહીં"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"આ તારીખની મંજૂરી નથી: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"તારીખ અપેક્ષિત પૅટર્ન સાથે મેળ ખાતી નથી: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"અપેક્ષિત વર્ષની શ્રેણી %1$s - %2$sની બહારની તારીખ"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"કૅલેન્ડર ઇનપુટ મોડ પર સ્વિચ કરો"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ટેક્સ્ટ ઇનપુટ મોડ પર સ્વિચ કરો"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"પછીના વર્ષો બતાવવા માટે સ્ક્રોલ કરો"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"અગાઉના વર્ષો બતાવવા માટે સ્ક્રોલ કરો"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"તારીખો પસંદ કરો"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"પ્રારંભ તારીખ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"સમાપ્તિ તારીખ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"આગલો મહિનો બતાવવા માટે સ્ક્રોલ કરો"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"પાછલો મહિનો બતાવવા માટે સ્ક્રોલ કરો"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"રેન્જમાં છે"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"તારીખો દાખલ કરો"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"તારીખની શ્રેણીનું અમાન્ય ઇનપુટ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ઑબ્જેક્ટ ખેંચવાનું હૅન્ડલ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"બોટમ શીટ નાની કરો"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"બોટમ શીટ છોડી દો"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"બોટમ શીટ મોટી કરો"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ટૂલટિપ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ટૂલટિપ બતાવો"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM કે PM પસંદ કરો"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"કલાક પસંદ કરો"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"મિનિટ પસંદ કરો"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d વાગ્યે"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d કલાક"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d મિનિટ"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"મિનિટ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"કલાક"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"મિનિટ માટે"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"કલાક માટે"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hi/strings.xml b/compose/material3/material3/src/androidMain/res/values-hi/strings.xml
new file mode 100644
index 0000000..3973f98
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-hi/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"डायलॉग"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"बड़ा किया गया"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"छोटा किया गया"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"खारिज करें"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"खोजें"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"सुझाव यहां मौजूद हैं"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"तारीख चुनें"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"चुनी गई तारीख"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"साल चुनने के लिए स्विच करें"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"किसी साल को चुनने के लिए स्वाइप करें या दिन को चुनने की सेटिंग पर वापस जाने के लिए टैप करें"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"अगले महीने पर सेट करें"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"पिछले महीने पर सेट करें"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"साल %1$s पर जाएं"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"फ़िलहाल, यह तारीख चुनी गई है: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"कोई नहीं"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"आज"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"साल चुनने का विकल्प दिख रहा है"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"तारीख चुनें"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"डाली गई तारीख"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"तारीख"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"डाली गई तारीख: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"कोई नहीं"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"यह तारीख सही नहीं है: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"तारीख सही फ़ॉर्मैट में नहीं डाली गई है: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"तारीख को साल की सही रेंज में नहीं डाला गया है %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"कैलेंडर इनपुट मोड पर स्विच करें"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"टेक्स्ट इनपुट मोड पर स्विच करें"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"बाद वाले सालों की तारीख देखने के लिए स्क्रोल करें"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"पिछले सालों की तारीख देखने के लिए स्क्रोल करें"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"तारीखें चुनें"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"शुरू होने की तारीख"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"खत्म होने की तारीख"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"अगले महीने की तारीख देखने के लिए स्क्रोल करें"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"पिछले महीने की तारीख देखने के लिए स्क्रोल करें"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"रेंज में"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"तारीखें डालें"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"तारीख की दी गई सीमा गलत है"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"खींचकर छोड़ने वाला हैंडल"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"बॉटम शीट को छोटा करें"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"बॉटम शीट को खारिज करें"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"बॉटम शीट को बड़ा करें"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"टूलटिप"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"टूलटिप देखें"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM या PM चुनें"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"घंटा चुनें"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"मिनट चुनें"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d बजे"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d घंटे"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d मिनट"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"मिनट"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"घंटा"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"मिनट के लिए"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"घंटे के लिए"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hr/strings.xml b/compose/material3/material3/src/androidMain/res/values-hr/strings.xml
new file mode 100644
index 0000000..70dab0f
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-hr/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dijaloški okvir"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Prošireno"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Sažeto"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Odbaci"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Pretraživanje"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Prijedlozi su u nastavku"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Odaberite datum"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Odabrani datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Prijelaz na odabir godine"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Pomaknite se za odabir godine ili dodirnite za povratak na odabir dana"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Pomicanje na sljedeći mjesec"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Pomicanje na prethodni mjesec"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Prelazak u godinu %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Trenutačni odabir: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ništa"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Danas"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Vidljiv je alat za odabir godine"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Odaberite datum"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Datum unosa"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Datum unosa: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ništa"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datum nije dopušten: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datum se ne podudara s očekivanim uzorkom: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum je izvan očekivanog raspona godine %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Prijelaz na način unosa u Kalendaru"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Prijelaz na način unosa teksta"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Pomaknite se za prikaz kasnijih godina"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Pomaknite se za prikaz ranijih godina"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Odabir datuma"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Datum početka"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Datum završetka"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Pomaknite se za prikaz sljedećeg mjeseca"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Pomaknite se za prikaz prethodnog mjeseca"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"U dometu"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Unos datuma"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Unos datumskog raspona nije važeći"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Marker za povlačenje"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Sažimanje donje tablice"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Odbacivanje donje tablice"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Proširivanje donje tablice"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Opis"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Prikaži opis"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"Poslijepodne"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"Prijepodne"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Odaberite prijepodne ili poslijepodne"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Odabir sata"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Odaberite minute"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d h"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d h"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d min"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuta"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Sat"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"za minute"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"za sat"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hu/strings.xml b/compose/material3/material3/src/androidMain/res/values-hu/strings.xml
new file mode 100644
index 0000000..7808ce8
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-hu/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Párbeszédpanel"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Kibontva"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Összecsukva"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Elvetés"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Keresés"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Javaslatok alább"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Dátum kiválasztása"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Kiválasztott dátum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Váltás az év kiválasztására"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Csúsztatással kiválaszthatja a kívánt évet, vagy koppintással visszaválthat a nap kiválasztásához."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Váltás a következő hónapra"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Váltás az előző hónapra"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigálás a következő évhez: %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Jelenleg kiválasztva: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Nincs"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Ma"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Látható az évválasztó"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Dátum kiválasztása"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Megadott dátum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Dátum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Megadott dátum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Nincs"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Nem engedélyezett dátum: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"A dátum nem felel meg a várt formátumnak: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"A dátum a várt időtartományon (%1$s – %2$s) kívül esik"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Váltás naptárbeviteli módra"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Váltás szövegbeviteli módra"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Görgessen a későbbi évek megjelenítéséhez"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Görgessen a korábbi évek megjelenítéséhez"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Dátumok kiválasztása"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Kezdő dátum"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Záró dátum"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Görgessen a következő hónap megjelenítéséhez"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Görgessen az előző hónap megjelenítéséhez"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Tartományon belül"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Dátumok megadása"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Érvénytelen a megadott dátumtartomány"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Fogópont"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Az alsó lap összecsukása"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Az alsó lap elvetése"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Az alsó lap kibontása"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Elemleírás"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Elemleírás megjelenítése"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"du."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"de."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Napszak kiválasztása"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Óra kiválasztása"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Perc kiválasztása"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d óra"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d óra"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d perc"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Perc"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Óra"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"perc megadása"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"óra megadása"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hy/strings.xml b/compose/material3/material3/src/androidMain/res/values-hy/strings.xml
new file mode 100644
index 0000000..f50f0f3
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-hy/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Երկխոսության պատուհան"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Ծավալված է"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Ծալված է"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Փակել"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Որոնում"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Առաջարկները հասանելի են ստորև"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Ընտրեք ամսաթիվը"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Ընտրված ամսաթիվ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Անցնել տարվա ընտրությանը"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Սահեցրեք՝ տարեթիվ ընտրելու համար, կամ հպեք՝ օրվա ընտրությանը վերադառնալու համար"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Անցնել հաջորդ ամսվան"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Անցնել նախորդ ամսվան"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Անցնել %1$s թվական"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Ընթացիկ ընտրությունը՝ %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Չկա"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Այսօր"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Տարեթվի ցուցադրվող ընտրիչ"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Ընտրեք ամսաթիվը"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Մուտքագրված ամսաթիվ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Ամսաթիվ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Մուտքագրված ամսաթիվ՝ %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Չկա"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Ամսաթիվը թույլատրված չէ՝ %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Ամսաթիվը չի համընկնում թույլատրելի ձևաչափի հետ՝ %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Ամսաթիվը տարեթվերի թույլատրելի միջակայքից (%1$s – %2$s) դուրս է"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Անցնել օրացույցի մուտքագրման ռեժիմ"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Անցնել տեքստի մուտքագրման ռեժիմին"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Ոլորեք՝ վերջին տարիները ցուցադրելու համար"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Ոլորեք՝ նախորդ տարիները ցուցադրելու համար"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Ընտրեք ամսաթվեր"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Սկզբի ամսաթիվ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Ավարտի ամսաթիվ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Ոլորեք՝ հաջորդ ամիսը ցուցադրելու համար"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Ոլորեք՝ նախորդ ամիսը ցուցադրելու համար"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Միջակայքում"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Մուտքագրեք ամսաթվերը"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Մուտքագրված ամսաթվերի միջակայքն անվավեր է"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Տեղափոխման նշիչ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Ծալել ներքևի էկրանը"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Փակել ներքևի էկրանը"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Ծավալել ներքևի էկրանը"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Հուշակ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Ցուցադրել հուշում"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Ընտրել AM կամ PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Ընտրեք ժամը"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Ընտրեք րոպեն"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ժամ"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d րոպե"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Րոպեներ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Ժամ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"րոպեներ"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ժամեր"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-in/strings.xml b/compose/material3/material3/src/androidMain/res/values-in/strings.xml
new file mode 100644
index 0000000..1622117
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-in/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Diperluas"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Diciutkan"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Tutup"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Telusuri"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Saran di bawah"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Pilih tanggal"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Tanggal yang dipilih"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Beralih ke memilih tahun"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Geser untuk memilih tahun, atau ketuk untuk beralih kembali ke pemilihan tanggal"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Ubah ke bulan berikutnya"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Ubah ke bulan sebelumnya"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Pilih tahun %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Pilihan saat ini: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Tidak ada"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hari ini"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Pemilih tahun terlihat"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Pilih tanggal"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Tanggal yang dimasukkan"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Tanggal"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Tanggal yang dimasukkan: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Tidak ada"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Tanggal tidak diizinkan: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Tanggal tidak cocok dengan pola yang diharapkan: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Tanggal di luar rentang tahun yang diharapkan %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Beralih ke mode input kalender"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Beralih ke mode input teks"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scroll untuk menampilkan tahun berikutnya"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scroll untuk menampilkan tahun sebelumnya"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Pilih tanggal"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Tanggal mulai"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Tanggal akhir"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scroll untuk menampilkan bulan berikutnya"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scroll untuk menampilkan bulan sebelumnya"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dalam rentang"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Masukkan tanggal"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Input rentang tanggal tidak valid"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Handel geser"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Menciutkan sheet bawah"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Menutup sheet bawah"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Meluaskan sheet bawah"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tooltip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Tampilkan tooltip"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Pilih AM atau PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Pilih jam"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Pilih menit"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Pukul %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d jam"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d menit"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Menit"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Jam"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"untuk menit"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"untuk jam"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-is/strings.xml b/compose/material3/material3/src/androidMain/res/values-is/strings.xml
new file mode 100644
index 0000000..5dcf9b3
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-is/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Gluggi"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Stækkað"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Minnkað"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Hunsa"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Leit"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Tillögur hér fyrir neðan"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Velja dagsetningu"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Valin dagsetning"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Skipta yfir í val á ári"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Strjúktu til að velja ár eða ýttu til að skipta aftur yfir í að velja dag"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Breyta í næsta mánuð"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Breyta í fyrri mánuð"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Fletta til ársins %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Núverandi val: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ekkert"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Í dag"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Ársval birt"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Velja dagsetningu"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Skráð dagsetning"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Dagsetning"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Skráð dagsetning: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ekkert"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Dagsetning er ekki leyfileg: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Dagsetning passar ekki við áætlað mynstur: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Dagsetning er utan áætlaðra ára: %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Skipta yfir í innfærsluaðferð fyrir dagatal"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Skipta yfir í textainnslátt"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Flettu til að sjá síðari ár"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Flettu til að sjá fyrri ár"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Velja dagsetningar"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Upphafsdagur"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Lokadagur"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Flettu til að sjá næsta mánuð"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Flettu til að sjá fyrri mánuð"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Innan tímabils"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Slá inn dagsetningar"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Ógilt tímabil fært inn"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Dragkló"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Minnka blað neðst"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Hunsa blað neðst"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Stækka blað neðst"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Ábending"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Sýna ábendingu"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"eh"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"fh"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Velja f.h. eða e.h."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Velja klst."</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Velja mínútur"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Kl. %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d klst."</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d mínútur"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Mínúta"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Klukkustund"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"fyrir mínútur"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"fyrir klukkustund"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-it/strings.xml b/compose/material3/material3/src/androidMain/res/values-it/strings.xml
new file mode 100644
index 0000000..62375a6
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-it/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Finestra di dialogo"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Espanso"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Compresso"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Chiudi"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Cerca"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggerimenti sotto"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Seleziona data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data selezionata"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Passa alla selezione di un anno"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Scorri per selezionare un anno o tocca per tornare alla selezione di un giorno"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Passa al mese successivo"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Passa al mese precedente"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Vai all\'anno %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Selezione attuale: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Nessuna selezione"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Oggi"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Selettore dell\'anno visibile"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Seleziona data"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data inserita"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data inserita: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Nessuna selezione"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data non consentita: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"La data non corrisponde al pattern previsto: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"La data non rientra nell\'intervallo di anni previsto (%1$s-%2$s)"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Passa alla modalità di immissione calendario"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Passa alla modalità di immissione testo"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scorri per visualizzare gli anni successivi"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scorri per visualizzare gli anni precedenti"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Seleziona date"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data di inizio"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data di fine"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scorri per visualizzare il mese successivo"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scorri per visualizzare il mese precedente"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Nell\'intervallo"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Inserisci date"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Intervallo di date inserito non valido"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Punto di trascinamento"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Comprimi il riquadro inferiore"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Chiudi il riquadro inferiore"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Espandi il riquadro inferiore"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Descrizione comando"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostra descrizione comando"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Seleziona AM o PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Seleziona l\'ora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Seleziona i minuti"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d in punto"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ore"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minuti"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuto"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Ora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"per i minuti"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"per l\'ora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-iw/strings.xml b/compose/material3/material3/src/androidMain/res/values-iw/strings.xml
new file mode 100644
index 0000000..fe7d309
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-iw/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"תיבת דו-שיח"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"התפריט הנפתח מורחב"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"התפריט הנפתח מכווץ"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"סגירה"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"חיפוש"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"הצעות מופיעות למטה"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"בחירת תאריך"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"התאריך הנבחר"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"החלפה לבחירה של שנה"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"יש להחליק כדי לבחור שנה, או להקיש כדי לחזור לבחירת היום"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"מעבר לחודש הבא"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"מעבר לחודש הקודם"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"‏ניווט לשנת %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"‏הבחירה הנוכחית: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ללא"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"היום"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"בורר השנה גלוי"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"בחירת תאריך"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"התאריך שהוזן"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"תאריך"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"‏התאריך שהוזן: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ללא"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"‏תאריך לא מורשה: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"‏התאריך לא תואם לקו ביטול הנעילה הצפוי: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"‏התאריך נמצא מחוץ לטווח השנים הצפוי %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"מעבר לשיטת קלט של יומן"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"מעבר לשיטת קלט של טקסט"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"צריך לגלול כדי להציג את השנים המאוחרות"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"צריך לגלול כדי להציג את השנים הקודמות"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"בחירת תאריכים"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"תאריך התחלה"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"תאריך סיום"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"צריך לגלול כדי להציג את החודש הבא"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"צריך לגלול כדי להציג את החודש הקודם"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"בטווח"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"הזנת תאריכים"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"קלט טווח תאריכים לא חוקי"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"נקודת אחיזה לגרירה"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"כיווץ הגיליון התחתון"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"סגירת הגיליון התחתון"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"הרחבת הגיליון התחתון"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"הסבר קצר"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"הצגת הסבר קצר"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"‏צריך לבחור ב-AM או ב-PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"בחירת שעה"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"בחירת דקות"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"‏%1$d שעות"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"‏%1$d דקות"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"דקות"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"שעות"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"דקות"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"שעות"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ja/strings.xml b/compose/material3/material3/src/androidMain/res/values-ja/strings.xml
new file mode 100644
index 0000000..c624ebe
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ja/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ダイアログ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"開いています"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"閉じています"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"閉じる"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"検索"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"検索候補は次のとおりです"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"日付の選択"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"選択した日付"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"年の選択に切り替え"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"スワイプして年を選択するか、タップして日付の選択に戻ります"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"翌月に変更"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"前月に変更"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"年に移動 %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"現在の選択: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"なし"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"今日"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"年の選択ツールの表示"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"日付の選択"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"入力された日付"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"日付"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"入力された日付: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"なし"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"許可されない日付: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"想定パターンと一致しない日付: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"想定される年の範囲(%1$s~%2$s)から日付が外れています"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"カレンダー入力モードに切り替え"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"テキスト入力モードに切り替え"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"これより後の年を表示するにはスクロールしてください"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"これより前の年を表示するにはスクロールしてください"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"日付の選択"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"開始日"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"終了日"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"翌月を表示するにはスクロールしてください"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"前月を表示するにはスクロールしてください"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"範囲内"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"日付の入力"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"入力された期間は無効です"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ドラッグ ハンドル"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ボトムシートを折りたたみます"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ボトムシートを閉じます"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ボトムシートを開きます"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ツールチップ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ツールチップを表示"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"午前または午後を選択"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"時刻を選択"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"分を選択"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d 時"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d 時間"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d 分"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"分"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"時間"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"(分単位)"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"(時間単位)"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ka/strings.xml b/compose/material3/material3/src/androidMain/res/values-ka/strings.xml
new file mode 100644
index 0000000..132e1f9
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ka/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"დიალოგი"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"გაფართოებული"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ჩაკეცილი"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"დახურვა"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ძიება"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"შემოთავაზებები იხილეთ ქვემოთ"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"თარიღის არჩევა"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"არჩეული თარიღი"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"წლის არჩევაზე გადასვლა"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"გადაფურცლეთ წლის ასარჩევად, ან შეხებით აირჩიეთ ისევ დღის არჩევაზე გადართვა"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"შემდეგ თვეზე გადასვლა"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"წინა თვეზე გადასვლა"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s-ზე გადასვლა"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"ამჟამინდელი არჩევანი: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"არცერთი"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"დღეს"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"არჩეული წელი ხილულია"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"თარიღის არჩევა"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"შეყვანილი სახელი"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"თარიღი"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"შეყვანილი თარიღი: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"არცერთი"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"თარიღი დაუშვებელია: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"თარიღი არ ემთხვევა მოსალოდნელ ნიმუშს: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"თარიღი არ არის წლების მოსალოდნელ დიაპაზონში %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"კალენდარში შეყვანის რეჟიმზე გადართვა"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ტექსტის შეყვანის რეჟიმზე გადართვა"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"გადააადგილეთ შემდგომი წლების საჩვენებლად"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"გადააადგილეთ წინა წლების საჩვენებლად"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"თარიღების არჩევა"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"დაწყების თარიღი"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"დასრულების თარიღი"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"გადააადგილეთ შემდეგი თვის საჩვენებლად"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"გადააადგილეთ წინა თვის საჩვენებლად"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"არეალშია"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"თარიღების შეყვანა"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"შეყვანილია თარიღების არასწორი დიაპაზონი"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"სახელური ჩავლებისთვის"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ქვედა ფურცლის ჩაკეცვა"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ქვედა ფურცლის უარყოფა"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ქვედა ფურცლის გაშლა"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"მინიშნება"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"მინიშნების ჩვენება"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"აირჩიეთ AM ან PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"აირჩიეთ საათი"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"აირჩიეთ წუთები"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d სთ"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d საათი"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d წთ"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"წუთი"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"საათი"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"რამდენიმე წუთით"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ერთი საათით"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-kk/strings.xml b/compose/material3/material3/src/androidMain/res/values-kk/strings.xml
new file mode 100644
index 0000000..e208383
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-kk/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Диалогтік терезе"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Жайылды"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Жиылды"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Жабу"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Іздеу"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Төмендегі ұсыныстар"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Күн таңдау"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Таңдалған күн"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Жыл таңдауға өту"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Жыл таңдау үшін сырғытыңыз. Күн таңдауға ауысу үшін түртіңіз."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Келесі айға өзгерту"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Алдыңғы айға өзгерту"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Мына жылға өту: %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Қазіргі таңдау: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ешқандай"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Бүгін"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Көрсетілген жыл таңдағышы"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Күн таңдау"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Деректер енгізілді"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Күні"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Деректер енгізілді: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ешқандай"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Деректер рұқсат етілмейді: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Деректер болжалды өрнекке сай келмейді: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Күтілетін жыл аралығы: %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Күнтізбенің енгізу режиміне ауысу"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Мәтін енгізу режиміне ауысу"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Кейінгі жылдарды көрсету үшін айналдырыңыз."</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Алдыңғы жылдарды көрсету үшін айналдырыңыз."</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Күндер таңдау"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Басталу күні"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Аяқталу күні"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Келесі айды көрсету үшін айналдырыңыз."</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Алдыңғы айды көрсету үшін айналдырыңыз."</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Күндер аралығында"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Күндерді енгізіңіз"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Жарамсыз күндер аралығы енгізілген."</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Сүйрейтін тетік"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Төменгі парақшаны жию"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Төменгі парақшаны жабу"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Төменгі парақшаны жаю"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Қалқыма көмек"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Қалқыма көмекті көрсету"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"түстен кейін"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"түске дейін"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"\"AM\" немесе \"PM\" форматын таңдау"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Сағатты таңдау"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Минут таңдау"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d сағат"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d сағат"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d минут"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Mинут"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Сағат"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"минут"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"сағат"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-km/strings.xml b/compose/material3/material3/src/androidMain/res/values-km/strings.xml
new file mode 100644
index 0000000..0e6572c
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-km/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ប្រអប់"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"បាន​ពង្រីក"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"បាន​បង្រួម"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ច្រានចោល"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ស្វែងរក"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"ការណែនាំខាងក្រោម"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"ជ្រើសរើស​កាលបរិច្ឆេទ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"កាលបរិច្ឆេទដែលបាន​ជ្រើសរើស"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ប្ដូរទៅ​ការជ្រើសរើសឆ្នាំ"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"អូសដើម្បីជ្រើសរើសឆ្នាំ ឬចុចដើម្បីប្ដូរត្រឡប់ទៅការជ្រើសរើសថ្ងៃវិញ"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"ប្ដូរ​ទៅ​ខែបន្ទាប់"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"ប្ដូរ​ទៅ​ខែមុន"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"រុករកទៅកាន់ឆ្នាំ %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"ការជ្រើសរើសបច្ចុប្បន្ន៖ %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"គ្មាន"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ថ្ងៃនេះ"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"អាចមើលឃើញផ្ទាំងជ្រើសរើសឆ្នាំ"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"ជ្រើសរើស​កាលបរិច្ឆេទ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"កាលបរិច្ឆេទដែលបានបញ្ចូល"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"កាលបរិច្ឆេទ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"កាលបរិច្ឆេទដែលបានបញ្ចូល៖ %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"គ្មាន"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"កាលបរិច្ឆេទដែលមិនបានអនុញ្ញាត៖ %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"កាលបរិច្ឆេទមិនត្រូវគ្នានឹងលំនាំដែលរំពឹងទុកទេ៖ %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"កាលបរិច្ឆេទដែលស្ថិតនៅក្រៅចន្លោះឆ្នាំដែលរំពឹងទុក %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"ប្ដូរទៅ​មុខងារបញ្ចូល​ប្រតិទិន"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ប្ដូរទៅ​មុខងារបញ្ចូល​អក្សរ"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"រំកិលដើម្បី​បង្ហាញឆ្នាំក្រោយៗ"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"រំកិលដើម្បី​បង្ហាញឆ្នាំមុនៗ"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"ជ្រើសរើស​កាល​បរិច្ឆេទ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"កាលបរិច្ឆេទ​ចាប់ផ្ដើម"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"កាលបរិច្ឆេទ​បញ្ចប់"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"រំកិលដើម្បីបង្ហាញខែក្រោយ"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"រំកិលដើម្បីបង្ហាញខែមុន"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"ក្នុងចន្លោះ"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"បញ្ចូល​កាលបរិច្ឆេទ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"ការបញ្ចូលចន្លោះកាលបរិច្ឆេទមិនត្រឹមត្រូវ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ដង​អូស"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"បង្រួម​សន្លឹកខាងក្រោម"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ច្រានចោល​សន្លឹកខាងក្រោម"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ពង្រីក​សន្លឹកខាងក្រោម"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"កំណត់​ពន្យល់"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"បង្ហាញ​កំណត់​ពន្យល់"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"ជ្រើសរើស AM ឬ PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ជ្រើសរើសម៉ោង"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"ជ្រើស​រើសនាទី"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"ម៉ោង %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ម៉ោង"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d នាទី"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"នាទី​"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ម៉ោង"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"រយៈពេលប៉ុន្មាននាទី"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"រយៈពេលប៉ុន្មានម៉ោង"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-kn/strings.xml b/compose/material3/material3/src/androidMain/res/values-kn/strings.xml
new file mode 100644
index 0000000..dfb622b
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-kn/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ಡೈಲಾಗ್"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ವಿಸ್ತರಿಸಲಾಗಿದೆ"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ಕುಗ್ಗಿಸಲಾಗಿದೆ"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ವಜಾಗೊಳಿಸಿ"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ಹುಡುಕಿ"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"ಸಲಹೆಗಳನ್ನು ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"ದಿನಾಂಕ ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"ಆಯ್ಕೆಮಾಡಲಾದ ದಿನಾಂಕ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ವರ್ಷವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಬದಲಿಸಿ"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ವರ್ಷವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಸ್ವೈಪ್ ಮಾಡಿ ಅಥವಾ ದಿನವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಹಿಂತಿರುಗಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"ಮುಂದಿನ ತಿಂಗಳಿಗೆ ಬದಲಿಸಿ"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"ಹಿಂದಿನ ತಿಂಗಳಿಗೆ ಬದಲಿಸಿ"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s ವರ್ಷಕ್ಕೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"ಪ್ರಸ್ತುತ ಆಯ್ಕೆ: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ಯಾವುದೂ ಅಲ್ಲ"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ಇಂದು"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"ವರ್ಷದ ಪಿಕರ್ ಗೋಚರಿಸುತ್ತದೆ"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"ದಿನಾಂಕ ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"ನಮೂದಿಸಿದ ದಿನಾಂಕ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"ದಿನಾಂಕ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"ನಮೂದಿಸಿದ ದಿನಾಂಕ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ಯಾವುದೂ ಅಲ್ಲ"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"ದಿನಾಂಕವನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"ನಿರೀಕ್ಷಿಸಿದ ಪ್ಯಾಟರ್ನ್‌ನೊಂದಿಗೆ ದಿನಾಂಕ ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತಿಲ್ಲ: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"ದಿನಾಂಕವು ನಿರೀಕ್ಷಿಸಿದ ವರ್ಷದ ವ್ಯಾಪ್ತಿಯನ್ನು ಮೀರಿದೆ %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"ಕ್ಯಾಲೆಂಡರ್ ಇನ್‌ಪುಟ್ ಮೋಡ್‌ಗೆ ಬದಲಿಸಿ"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ಪಠ್ಯ ಇನ್‌ಪುಟ್ ಮೋಡ್‌ಗೆ ಬದಲಿಸಿ"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"ನಂತರದ ವರ್ಷಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"ಹಿಂದಿನ ವರ್ಷಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್‌ ಮಾಡಿ"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"ದಿನಾಂಕಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"ಪ್ರಾರಂಭ ದಿನಾಂಕ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"ಅಂತಿಮ ದಿನಾಂಕ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"ಮುಂದಿನ ತಿಂಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"ಹಿಂದಿನ ತಿಂಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್‌ ಮಾಡಿ"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"ವ್ಯಾಪ್ತಿಯಲ್ಲಿದೆ"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"ದಿನಾಂಕಗಳನ್ನು ನಮೂದಿಸಿ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"ದಿನಾಂಕ ವ್ಯಾಪ್ತಿಯ ಇನ್‌ಪುಟ್ ಅಮಾನ್ಯವಾಗಿದೆ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ಹ್ಯಾಂಡಲ್ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ಕೆಳಭಾಗದ ಶೀಟ್ ಅನ್ನು ಕುಗ್ಗಿಸಿ"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ಕೆಳಭಾಗದ ಶೀಟ್ ಅನ್ನು ವಜಾಗೊಳಿಸಿ"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ಕೆಳಭಾಗದ ಶೀಟ್ ಅನ್ನು ವಿಸ್ತರಿಸಿ"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ಟೂಲ್‌ಟಿಪ್"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ಟೂಲ್‌ಟಿಪ್ ಅನ್ನು ತೋರಿಸಿ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM ಅಥವಾ PM ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ಸಮಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"ನಿಮಿಷಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d ಓ ಕ್ಲಾಕ್"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ಗಂಟೆ"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d ನಿಮಿಷಗಳು"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"ನಿಮಿಷ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ಗಂಟೆ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"ನಿಮಿಷಗಳವರೆಗೆ"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ಗಂಟೆಯವರೆಗೆ"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ko/strings.xml b/compose/material3/material3/src/androidMain/res/values-ko/strings.xml
new file mode 100644
index 0000000..fb57d2d
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ko/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"대화상자"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"펼침"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"접힘"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"닫기"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"검색"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"아래의 추천 검색어"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"날짜 선택"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"선택한 날짜"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"연도 선택으로 전환"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"스와이프하여 연도를 선택하거나 탭하여 날짜 선택으로 돌아가세요."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"다음 달로 변경"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"이전 달로 변경"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s년으로 이동"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"현재 선택사항: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"없음"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"오늘"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"연도 선택 도구 표시"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"날짜 선택"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"입력한 날짜"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"날짜"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"입력한 날짜: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"없음"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"데이터 허용 안 됨: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"데이터가 예상 패턴과 일치하지 않음: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"데이터가 예상 연도 범위(%1$s~%2$s)를 벗어남"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"캘린더 입력 모드로 전환"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"텍스트 입력 모드로 전환"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"스크롤하여 이후 연도 보기"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"스크롤하여 이전 연도 보기"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"날짜 선택"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"시작일"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"종료일"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"스크롤하여 다음 달 보기"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"스크롤하여 이전 달 보기"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"범위 내"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"날짜 입력"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"잘못된 기간 입력"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"드래그 핸들"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"하단 시트 접기"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"하단 시트 닫기"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"하단 시트 펼치기"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"도움말"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"도움말 표시"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"오후"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"오전"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"오전 또는 오후를 선택하세요."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"시간 선택"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"분 선택"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d시 정각"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d시간"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d분"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"분"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"시간"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"기간(분)"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"기간(시간)"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ky/strings.xml b/compose/material3/material3/src/androidMain/res/values-ky/strings.xml
new file mode 100644
index 0000000..849a323
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ky/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Диалог"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Жайылып көрсөтүлдү"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Жыйыштырылды"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Жабуу"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Издөө"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Сунуштар төмөндө келтирилди"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Күндү тандоо"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Тандалган күн"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Жыл тандоого которулуу"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Жылды тандоо үчүн экранды сүрүңүз же күндү тандоого кайтуу үчүн таптап коюңуз"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Кийинки айга өзгөртүү"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Мурунку айга өзгөртүү"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s-жылга өтүү"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Учурда %1$s тандалды"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Жок"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Бүгүн"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Көрсөтүлгөн жыл тандагыч"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Күндү тандоо"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Киргизилген күн"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Күнү"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Киргизилген күн: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Жок"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Күндүн мындай форматын колдонууга болбойт: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Күндүн форматы үлгүгө дал келген жок: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Күн %1$s — %2$s деп белгиленген жылдар диапазонуна кирбей калды"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Жылнаамага киргизүү режимине которулуу"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Текст киргизүү режимине которулуу"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Кийинки жылдарды көрүү үчүн сыдырыңыз"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Мурунку жылдарды көрүү үчүн сыдырыңыз"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Күндөрдү тандоо"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Башталуу күнү"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Аяктоо күнү"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Кийинки айды көрүү үчүн сыдырыңыз"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Мурунку айды көрүү үчүн сыдырыңыз"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Төмөнкү убакыт аралыгындагы күн"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Күндөрдү киргизүү"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Даталар диапазону туура эмес тандалды"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Сүйрөө маркери"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Ылдыйкы экранды жыйыштыруу"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Ылдыйкы экранды жабуу"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Ылдыйкы экранды жайып көрсөтүү"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Калкып чыгуучу кеңеш"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Калкып чыгуучу кеңешти көрсөтүү"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"түштөн кийин"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"түшкө чейин"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Түшкө чейинки же түштөн кийинки убакытты тандоо"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Саат тандоо"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Мүнөттөрдү тандаңыз"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d саат"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d саат"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d мүнөт"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Мүнөт"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Саат"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"мүнөткө"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"саатка"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-lo/strings.xml b/compose/material3/material3/src/androidMain/res/values-lo/strings.xml
new file mode 100644
index 0000000..f4f11a3
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-lo/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ກ່ອງໂຕ້ຕອບ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ຂະຫຍາຍແລ້ວ"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ຫຍໍ້ລົງແລ້ວ"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ປິດໄວ້"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ຊອກຫາ"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"ມີຄຳແນະນຳຢູ່ຂ້າງລຸ່ມ"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"ເລືອກວັນທີ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"ວັນທີທີ່ເລືອກໄວ້"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ປ່ຽນໄປເລືອກປີ"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ປັດເພື່ອເລືອກປີ ຫຼື ແຕະເພື່ອປ່ຽນກັບໄປຫາການເລືອກວັນ"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"ປ່ຽນເປັນເດືອນຕໍ່ໄປ"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"ປ່ຽນເປັນເດືອນກ່ອນໜ້າ"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"ນຳທາງໄປຫາປີ %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"ການເລືອກປັດຈຸບັນ: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ບໍ່ມີ"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ມື້ນີ້"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"ສະແດງຕົວເລືອກປີ"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"ເລືອກວັນທີ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"ລະບຸວັນທີແລ້ວ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"ວັນທີ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"ລະບຸວັນທີແລ້ວ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ບໍ່ມີ"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ວັນທີ: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"ວັນທີບໍ່ກົງກັບຮູບແບບທີ່ຄາດໄວ້: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"ວັນທີຢູ່ນອກໄລຍະປີທີ່ຄາດໄວ້ %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"ສະຫຼັບໄປໃຊ້ໂໝດປ້ອນຂໍ້ມູນປະຕິທິນ"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ສະຫຼັບໄປໃຊ້ໂໝດປ້ອນຂໍ້ຄວາມ"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"ເລື່ອນເພື່ອສະແດງປີຫຼັງຈາກນີ້"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"ເລື່ອນເພື່ອສະແດງປີກ່ອນໜ້ານີ້"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"ເລືອກວັນທີ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"ວັນທີເລີ່ມຕົ້ນ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"ວັນທີສິ້ນສຸດ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"ເລື່ອນເພື່ອສະແດງເດືອນຕໍ່ໄປ"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"ເລື່ອນເພື່ອສະແດງເດືອນກ່ອນໜ້າ"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"ຢູ່ໃນໄລຍະວັນທີທີ່ເລືອກ"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"ໃສ່ວັນທີ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"ອິນພຸດໄລຍະວັນທີບໍ່ຖືກຕ້ອງ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ບ່ອນຈັບລາກ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ຫຍໍ້ຊີດລຸ່ມສຸດລົງ"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ປິດຊີດລຸ່ມສຸດໄວ້"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ຂະຫຍາຍຊີດລຸ່ມສຸດ"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ຄຳແນະນຳ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ສະແດງຄຳແນະນຳ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"ຫຼັງທ່ຽງ"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"ກ່ອນທ່ຽງ"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"ເລືອກກ່ອນທ່ຽງ ຫຼື ຫຼັງທ່ຽງ"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ເລືອກຊົ່ວໂມງ"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"ເລືອກນາທີ"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d ໂມງ"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ຊົ່ວໂມງ"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d ນາທີ"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"ນາທີ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ຊົ່ວໂມງ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"ສຳລັບນາທີ"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ສຳລັບຊົ່ວໂມງ"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-lt/strings.xml b/compose/material3/material3/src/androidMain/res/values-lt/strings.xml
new file mode 100644
index 0000000..a24fa91
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-lt/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogo langas"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Išskleista"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Sutraukta"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Atsisakyti"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Paieška"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Pasiūlymai pateikti toliau"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Pasirinkite datą"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Pasirinkta data"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Perjungti į metų pasirinkimą"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Perbraukite, kad pasirinktumėte metus, arba palieskite, kad grįžtumėte ir vėl pasirinktumėte dieną"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Pakeisti į kitą mėnesį"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Pakeisti į ankstesnį mėnesį"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Eiti į %1$s m."</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Dabartinis pasirinkimas: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Nėra"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Šiandien"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Rodomas metų parinkiklis"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Pasirinkite datą"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Įvesta data"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Įvesta data: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Nėra"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data neleidžiama: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Data neatitinka numatyto šablono: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Data nepatenka į numatytų metų diapazoną: %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Perjungti į kalendoriaus įvesties režimą"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Perjungti į teksto įvesties režimą"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Slinkite, kol bus rodomi vėlesni metai"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Slinkite, kol bus rodomi ankstesni metai"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Pasirinkite datas"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Pradžios data"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Pabaigos data"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Slinkite, kol bus rodomas kitas mėnuo"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Slinkite, kol bus rodomas ankstesnis mėnuo"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Diapazone"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Įvesti datas"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Netinkama dienų sekos įvestis"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Vilkimo rankenėlė"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Sutraukti apatinį lapą"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Atsisakyti apatinio lapo"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Išskleisti apatinį lapą"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Patarimas"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Rodyti patarimą"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"popiet"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Pasirinkite „priešpiet“ arba „popiet“"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Pasirinkite valandą"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Pasirinkite minutes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d val."</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d val."</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%d min."</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minutė"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Valanda"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"minutės"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"valandos"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-lv/strings.xml b/compose/material3/material3/src/androidMain/res/values-lv/strings.xml
new file mode 100644
index 0000000..508be30
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-lv/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialoglodziņš"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Izvērsta"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Sakļauta"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Nerādīt"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Meklēšana"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Tālāk ir sniegti ieteikumi"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Atlasīt datumu"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Atlasītais datums"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Pāriet uz gada atlasi"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Velciet, lai atlasītu gadu, vai pieskarieties, lai pārietu atpakaļ pie dienas atlases"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Mainīt uz nākamo mēnesi"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Mainīt uz iepriekšējo mēnesi"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Pāriet uz %1$s. gadu"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Pašreizējā atlase: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Nav"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Šodien"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Redzams gada atlasītājs"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Atlasīt datumu"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Ievadītais datums"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datums"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Ievadītais datums: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Nav"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datums nav atļauts: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datums neatbilst paredzētajam formātam: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datums nav paredzētajā gadu diapazonā (%1$s.–%2$s. g.)"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Pārslēgties uz kalendāra ievades režīmu"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Pārslēgties uz teksta ievades režīmu"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Lai rādītu nākamos gadus, ritiniet"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Lai rādītu iepriekšējos gadus, ritiniet"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Atlasiet datumus"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Sākuma datums"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Beigu datums"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Lai rādītu nākamo mēnesi, ritiniet"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Lai rādītu iepriekšējo mēnesi, ritiniet"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Atlasītajā diapazonā"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Ievadiet datumus"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Ievadīts nederīgs datumu diapazons."</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Vilkšanas turis"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Sakļaut ekrāna apakšdaļas lapu"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Noraidīt ekrāna apakšdaļas lapu"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Izvērst ekrāna apakšdaļas lapu"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Rīka padoms"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Rādīt rīka padomu"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Atlasīt “AM” (priekšpusdienā) vai “PM” (pēcpusdienā)"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Atlasīt stundu"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Atlasīt minūtes"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"Minūtes: %1$d"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minūtes"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Stunda"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"minūtēm"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"stundām"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-mk/strings.xml b/compose/material3/material3/src/androidMain/res/values-mk/strings.xml
new file mode 100644
index 0000000..f137b45
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-mk/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Дијалог"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Проширено"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Собрано"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Отфрли"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Пребарување"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Предлозите се наведени подолу"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Изберете датум"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Избран датум"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Префрли на избирање година"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Повлечете за да изберете година или допрете за да се вратите на избирање ден"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Промени на следниот месец"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Промени на претходниот месец"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Одете на %1$s година"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Тековен избор: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Нема"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Денес"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Избирачот на година е видлив"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Изберете датум"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Внесен датум"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Датум"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Внесен датум: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Нема"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Датумот не е дозволен: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Не се совпаѓа со очекуваната шема: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Датумот не е во очекуваниот опсег на години %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Префрли на режим за внесување во календарот"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Префрли на режим за внесување текст"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Лизгајте за да ги прикажете подоцнежните години"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Лизгајте за да ги прикажете претходните години"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Изберете датуми"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Датум на започнување"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Датум на завршување"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Лизгајте за да се прикаже следниот месец"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Лизгајте за да се прикаже претходниот месец"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Во опсег"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Внесете датуми"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Внесовте неважечки временски период"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Рачка за влечење"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Собери го долниот лист"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Отфрли го долниот лист"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Прошири го долниот лист"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Совет за алатка"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Прикажи совет за алатка"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"попл."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"прет."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Изберете претпладне или попладне"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Изберете час"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Изберете минути"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d часот"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d часа"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d минути"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Минута"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Час"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"за минути"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"за час"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ml/strings.xml b/compose/material3/material3/src/androidMain/res/values-ml/strings.xml
new file mode 100644
index 0000000..a800a5a
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ml/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ഡയലോഗ്"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"വിപുലീകരിച്ചത്"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ചുരുക്കിയത്"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"തിരയുക"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"നിദ്ദേശങ്ങൾ ചുവടെയുണ്ട്"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"തീയതി തിരഞ്ഞെടുക്കുക"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"തിരഞ്ഞെടുത്ത തീയതി"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"വർഷം തിരഞ്ഞെടുക്കുന്നതിലേക്ക് മാറുക"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"വർഷം തിരഞ്ഞെടുക്കാൻ സ്വൈപ്പ് ചെയ്യുക അല്ലെങ്കിൽ ദിവസം തിരഞ്ഞെടുക്കുന്നതിലേക്ക് തിരികെ പോകാൻ ടാപ്പ് ചെയ്യുക"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"അടുത്ത മാസത്തിലേക്ക് മാറ്റുക"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"മുമ്പത്തെ മാസത്തിലേക്ക് മാറ്റുക"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s എന്ന വർഷത്തിലേക്ക് പോകുക"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"നിലവിലെ തിരഞ്ഞെടുപ്പ്: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ഒന്നുമില്ല"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ഇന്ന്"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"വർഷ പിക്കർ ദൃശ്യമാണ്"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"തീയതി തിരഞ്ഞെടുക്കുക"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"നൽകിയ തീയതി"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"തീയതി"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"നൽകിയ തീയതി: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ഒന്നുമില്ല"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"തീയതി അനുവദനീയമല്ല: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"പ്രതീക്ഷിച്ച പാറ്റേണുമായി തീയതി പൊരുത്തപ്പെടുന്നില്ല: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"പ്രതീക്ഷിക്കുന്ന കാലയളവിലെ വർഷമല്ല നൽകിയ തീയതിയുടേത് %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"കലണ്ടർ ഇൻപുട്ട് മോഡിലേക്ക് മാറുക"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ടെക്‌സ്‌റ്റ് ഇൻപുട്ട് മോഡിലേക്ക് മാറുക"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"പിന്നീടുള്ള വർഷങ്ങൾ കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"മുൻ വർഷങ്ങൾ കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"തീയതികൾ തിരഞ്ഞെടുക്കുക"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"ആരംഭിക്കുന്ന തീയതി"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"അവസാനിക്കുന്ന തീയതി"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"അടുത്ത മാസം കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"മുമ്പത്തെ മാസം കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"പരിധിയിൽ"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"തീയതികൾ നൽകുക"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"തീയതി ശ്രേണി ഇൻപുട്ട് അസാധുവാണ്"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"വലിച്ചിടുന്നതിനുള്ള ഹാൻഡിൽ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ബോട്ടം ഷീറ്റ് ചുരുക്കുക"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ബോട്ടം ഷീറ്റ് ഡിസ്മിസ് ചെയ്യുക"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ബോട്ടം ഷീറ്റ് വികസിപ്പിക്കുക"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ടൂൾടിപ്പ്"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ടൂൾടിപ്പ് കാണിക്കുക"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM അല്ലെങ്കിൽ PM തിരഞ്ഞെടുക്കുക"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"മണിക്കൂർ തിരഞ്ഞെടുക്കുക"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"മിനിറ്റ് തിരഞ്ഞെടുക്കുക"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d മണി"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d മ."</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d മിനിറ്റ്"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"മിനിറ്റ്"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"മണിക്കൂർ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"മിനിറ്റ് നേരത്തേക്ക്"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"മണിക്കൂർ നേരത്തേക്ക്"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-mn/strings.xml b/compose/material3/material3/src/androidMain/res/values-mn/strings.xml
new file mode 100644
index 0000000..485667d
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-mn/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Харилцах цонх"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Дэлгэсэн"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Хураасан"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Хаах"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Хайх"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Доорх зөвлөмжүүд"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Огноо сонгох"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Сонгосон огноо"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Он сонгох руу сэлгэх"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Он сонгохын тулд шудрах эсвэл өдөр сонгох руу буцааж сэлгэхийн тулд товшино уу"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Дараагийн сар луу өөрчлөх"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Өмнөх сар луу өөрчлөх"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s он руу шилжих"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Одоогийн сонголт: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Байхгүй"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Өнөөдөр"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Он сонгогч харагдаж байна"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Огноо сонгох"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Оруулсан огноо"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Огноо"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Оруулсан огноо: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Байхгүй"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Зөвшөөрөөгүй огноо: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Огноо нь тооцоолсон хээтэй таарахгүй байна: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Тооцоолсон оны %1$s - %2$s мужаас гарсан огноо"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Календарийн орох горим руу сэлгэх"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Текст оруулах горим руу сэлгэх"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Дараагийн жилүүдийг харуулахын тулд гүйлгэнэ үү"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Өмнөх жилүүдийг харуулахын тулд гүйлгэнэ үү"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Огноо сонгох"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Эхлэх огноо"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Дуусах огноо"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Дараагийн сарыг харуулахын тулд гүйлгэнэ үү"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Өмнөх сарыг харуулахын тулд гүйлгэнэ үү"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Мужид байгаа"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Огноо оруулах"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Хугацааны интервалын оролт буруу байна"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Чирэх бариул"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Доод хүснэгтийг хураах"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Доод хүснэгтийг хаах"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Доод хүснэгтийг дэлгэх"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Зөвлөмж"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Зөвлөмж харуулах"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"ҮХ"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"ҮӨ"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"ҮӨ эсвэл ҮХ эсэхийг сонгоно уу"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Цаг сонгох"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Минут сонгох"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d цаг"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d цаг"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d минут"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Минут"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Цаг"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"минутын турш"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"цагийн турш"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-mr/strings.xml b/compose/material3/material3/src/androidMain/res/values-mr/strings.xml
new file mode 100644
index 0000000..f5231f06
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-mr/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"डायलॉग"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"विस्तारित केला आहे"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"कोलॅप्स केला आहे"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"डिसमिस करा"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"शोधा"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"सूचना खाली आहेत"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"तारीख निवडा"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"निवडलेली तारीख"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"वर्ष निवडणे यावर स्विच करा"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"वर्ष निवडण्यासाठी स्‍वाइप करा किंवा दिवस निवडण्यावर परत स्विच करण्यासाठी टॅप करा"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"पुढील महिन्यावर बदला"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"मागील महिन्यावर बदला"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s वर्षावर नेव्हिगेट करा"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"सध्याची निवड: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"काहीही नाही"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"आज"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"वर्ष पिकर दृश्यमान आहे"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"तारीख निवडा"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"एंटर केलेली तारीख"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"तारीख"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"एंटर केली तारीख: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"काहीही नाही"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"अशा तारखेला अनुमती नाही: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"तारीख ही अपेक्षित पॅटर्नशी जुळत नाही: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"तारीख ही %1$s - %2$s या अपेक्षित रेंजच्या बाहेरची आहे"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"कॅलेंडर इनपुट मोडवर स्विच करा"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"टेक्स्ट इनपुट मोडवर स्विच करा"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"नंतरची वर्षे दाखवण्यासाठी स्क्रोल करा"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"मागील वर्षे दाखवण्यासाठी स्क्रोल करा"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"तारखा निवडा"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"सुरू होण्याची तारीख"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"संपण्याची तारीख"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"पुढील महिना दाखवण्यासाठी स्क्रोल करा"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"मागील महिना दाखवण्यासाठी स्क्रोल करा"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"रेंजमध्ये"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"तारखा एंटर करा"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"तारीख रेंजचे इनपुट चुकीचे आहे"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ड्रॅग हॅंडल"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"तळाशी असलेली शीट कोलॅप्स करा"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"तळाशी असलेली शीट डिसमिस करा"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"तळाशी असलेली शीट विस्तारीत करा"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"टूलटिप"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"टूलटिप दाखवा"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM किंवा PM निवडा"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"तास निवडा"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"मिनिटे निवडा"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d वाजता"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d तास"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d मिनिटे"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"मिनिट"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"तास"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"मिनिटांसाठी"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"तासासाठी"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ms/strings.xml b/compose/material3/material3/src/androidMain/res/values-ms/strings.xml
new file mode 100644
index 0000000..e6c51cd
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ms/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Dikembangkan"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Dikuncupkan"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Ketepikan"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Carian"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Cadangan di bawah"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Pilih tarikh"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Tarikh dipilih"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Beralih kepada pemilihan tahun"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Leret untuk memilih tahun atau ketik untuk bertukar kembali kepada pemilihan hari"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Tukar kepada bulan seterusnya"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Tukar kepada bulan sebelumnya"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigasi ke tahun %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Pilihan semasa: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Tiada"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hari ini"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Pemilih tahun kelihatan"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Pilih tarikh"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Tarikh yang dimasukkan"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Tarikh"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Tarikh yang dimasukkan: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Tiada"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Tarikh yang tidak dibenarkan: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Tarikh tidak sepadan dengan corak yang dijangkakan: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Tarikh di luar julat tahun yang dijangkakan %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Beralih kepada mod input kalendar"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Beralih kepada mod input teks"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Tatal untuk menunjukkan tahun kemudian"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Tatal untuk menunjukkan tahun terdahulu"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Pilih tarikh"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Tarikh mula"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Tarikh tamat"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Tatal untuk menunjukkan bulan seterusnya"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Tatal untuk menunjukkan bulan sebelumnya"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dalam liputan"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Masukkan tarikh"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Input julat tarikh tidak sah"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Pemegang seret"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Kuncupkan helaian bawah"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Ketepikan helaian bawah"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Kembangkan helaian bawah"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tip alat"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Tunjukkan tip alat"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"P/M"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"PG"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Pilih PG atau PTG/MLM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Pilih jam"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Pilih minit"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Pukul %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d jam"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minit"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minit"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Jam"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"selama # minit"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"selama # jam"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-my/strings.xml b/compose/material3/material3/src/androidMain/res/values-my/strings.xml
new file mode 100644
index 0000000..9d1ec09
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-my/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ဒိုင်ယာလော့"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ချဲ့ထားသည်"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ချုံ့ထားသည်"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ပယ်ရန်"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ရှာရန်"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"အကြံပြုချက်များသည် အောက်တွင်ရှိသည်"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"ရက်စွဲရွေးရန်"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"ရွေးထားသည့် ရက်စွဲ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"နှစ်ရွေးခြင်းသို့ ပြောင်းရန်"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ခုနှစ်ရွေးချယ်ရန် ပွတ်ဆွဲပါ (သို့) ရက်ရွေးချယ်ခြင်းသို့ ပြန်ရန် တို့ပါ"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"နောက်လသို့ ပြောင်းရန်"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"ယခင်လသို့ ပြောင်းရန်"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s ခုနှစ်သို့ သွားရန်"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"လက်ရှိ ရွေးချယ်မှု- %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"မရှိ"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ယနေ့"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"ခုနှစ်ရွေးချယ်ရေးစနစ်ကို မြင်ရသည်"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"ရက်စွဲရွေးရန်"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"ထည့်ထားသော ရက်စွဲ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"ရက်စွဲ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"ထည့်ထားသော ရက်စွဲ- %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"မရှိ"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"ရက်စွဲကို ခွင့်ပြုမထားပါ- %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"ရက်စွဲသည် မျှော်မှန်းထားသော ပုံစံနှင့် မကိုက်ညီပါ- %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"ရက်စွဲသည် မျှော်မှန်းထားသော နှစ်အပိုင်းအခြား %1$s - %2$s တွင် မပါဝင်ပါ"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"ပြက္ခဒိန် လက်ကွက်ထည့်သွင်းနည်းသို့ ပြောင်းရန်"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"စာရိုက်နည်းသို့ ပြောင်းရန်"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"နောက်ပိုင်းနှစ်များ ပြရန် လှိမ့်ပါ"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"ယခင်နှစ်များ ပြရန် လှိမ့်ပါ"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"ရက်စွဲများရွေးပါ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"စတင်ရက်"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"ပြီးဆုံးရက်"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"လာမည့်လကို ပြရန် လှိမ့်ပါ"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"ယခင်လကို ပြရန် လှိမ့်ပါ"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"အပိုင်းအခြားအတွင်း"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"ရက်စွဲများထည့်ပါ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"ဒေတာအပိုင်းအခြား ထည့်သွင်းမှု မမှန်ပါ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ဖိဆွဲအထိန်း"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"အောက်ခြေအပိုဆောင်း စာမျက်နှာကို ချုံ့သည်"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"အောက်ခြေအပိုဆောင်း စာမျက်နှာကို ပယ်သည်"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"အောက်ခြေအပိုဆောင်း စာမျက်နှာကို ချဲ့သည်"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"အကြံပြုချက်ပြ ပေါ့အပ် ဝင်းဒိုး"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"အကြံပြုချက်ပြ ပေါ့အပ်ဝင်းဒိုး ပြရန်"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM (သို့) PM ရွေးရန်"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"နာရီ ရွေးရန်"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"မိနစ်များရွေးပါ"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d နာရီ"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d နာရီ"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d မိနစ်"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"မိနစ်"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"နာရီ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"မိနစ်ကြာ"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"နာရီကြာ"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-nb/strings.xml b/compose/material3/material3/src/androidMain/res/values-nb/strings.xml
new file mode 100644
index 0000000..04edceb
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-nb/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogboks"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Vises"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Skjules"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Lukk"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Søk"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Du finner forslag nedenfor"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Velg dato"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Valgt dato"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Bytt til å velge et år"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Sveip for å velge år, eller trykk for å bytte tilbake til valg av dag"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Bytt til neste måned"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Bytt til forrige måned"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Gå til år %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Valgt: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ingen"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"I dag"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Årsvelgeren er synlig"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Velg dato"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Angitt dato"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Dato"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Angitt dato: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ingen"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datoen er ikke tillatt: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datoen matcher ikke det forventede mønsteret: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datoen er utenfor det forventede årsintervallet %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Bytt til kalendermodus for inndata"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Bytt til tekstmodus for inndata"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Rull for å vise senere år"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Rull for å vise tidligere år"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Velg datoer"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Startdato"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Sluttdato"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Rull for å vise den neste måneden"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Rull for å vise den forrige måneden"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Innenfor området"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Legg inn datoer"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"En ugyldig datoperiode er valgt"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Håndtak"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Skjul feltet nederst"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Lukk feltet nederst"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Vis feltet nederst"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Verktøytips"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Vis verktøytips"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Velg AM eller PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Velg time"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Velg minutter"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d timer"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutter"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minutt"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Time"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"for minutter"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"for timer"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ne/strings.xml b/compose/material3/material3/src/androidMain/res/values-ne/strings.xml
new file mode 100644
index 0000000..5079393
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ne/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"डायलग"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"एक्स्पान्ड गरिएको छ"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"कोल्याप्स गरिएको छ"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"खारेज गर्नुहोस्"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"खोज्नुहोस्"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"सुझावहरू तल दिइएका छन्"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"मिति चयन गर्नुहोस्"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"चयन गरिएको मिति"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"साल चयन गर्ने फिल्डमा जानुहोस्"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"कुनै साल छनौट गर्न स्वाइप गर्नुहोस् वा दिन चयन गर्न ट्याप गर्नुहोस्"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"हाल चयन गरिएको महिना परिवर्तन गरी आगामी महिना बनाउनुहोस्"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"हाल चयन गरिएको महिना परिवर्तन गरी अघिल्लो महिना बनाउनुहोस्"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"साल %1$s मा जानुहोस्"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"हालको छनौट: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"कुनै पनि होइन"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"आज"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"डेट पिकर देखिएको छ"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"मिति चयन गर्नुहोस्"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"हालिएको मिति"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"मिति"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"हालिएको मिति: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"कुनै पनि होइन"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"यो मिति हाल्न पाइँदैन: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"हालिएको मितिको प्याटर्न अपेक्षित प्याटर्नसँग मिल्दैन: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"हालिएको मिति सालको अपेक्षित दायरा (%1$s - %2$s) भित्र पर्दैन"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"पात्रोको इनपुट मोड प्रयोग गर्नुहोस्"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"टेक्स्ट इनपुट मोड प्रयोग गर्नुहोस्"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"आगामी सालहरूको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"विगतका सालहरूको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"मितिहरू चयन गर्नुहोस्"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"सुरु हुने मिति"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"अन्त्य हुने मिति"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"अर्को महिनाको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"गत महिनाको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"चयन गरिएका दिनभित्र पर्ने"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"मितिहरू हाल्नुहोस्"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"मितिको अवैध दायरा हालियो"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ड्र्याग ह्यान्डल"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"पुछारको पाना कोल्याप्स गर्नुहोस्"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"पुछारको पाना हटाउनुहोस्"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"पुछारको पाना एक्स्पान्ड गर्नुहोस्"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"टुलटिप"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"टुलटिप देखाइयोस्"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"अपराह्न"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"पूर्वाह्न"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"पूर्वाह्न वा अपराह्न चयन गर्नुहोस्"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"घण्टा चयन गर्नुहोस्"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"मिनेट चयन गर्नुहोस्"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d बजे"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d घण्टा"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d मिनेट"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"मिनेट"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"घण्टा"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"मिनेटका लागि"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"घण्टाका लागि"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-nl/strings.xml b/compose/material3/material3/src/androidMain/res/values-nl/strings.xml
new file mode 100644
index 0000000..0fd598d
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-nl/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialoogvenster"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Uitgevouwen"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Samengevouwen"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Sluiten"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Zoeken"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Suggesties hieronder"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Datum selecteren"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Geselecteerde datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Schakelaar om een jaar te selecteren"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Swipe om een jaar te selecteren of tik om terug te gaan en een dag te selecteren"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Naar volgende maand gaan"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Naar vorige maand gaan"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Ga naar jaar %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Huidige selectie: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Geen"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Vandaag"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Jaarselectie zichtbaar"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Datum selecteren"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Ingevulde datum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Ingevulde datum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Geen"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datum niet toegestaan: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"De datum komt niet overeen met het verwachte patroon: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum buiten het verwachte jaarbereik %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Overschakelen naar agenda-invoermodus"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Overschakelen naar tekstinvoermodus"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scroll om latere jaren te tonen"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scroll om eerdere jaren te tonen"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Datums selecteren"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Startdatum"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Einddatum"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scroll om de volgende maand te tonen"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scroll om de vorige maand te tonen"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Binnen bereik"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Datums opgeven"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Ongeldige invoer voor periode"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Handgreep voor slepen"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Blad onderaan samenvouwen"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Blad onderaan sluiten"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Blad onderaan uitvouwen"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tooltip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Tooltip tonen"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM of PM selecteren"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Uur selecteren"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Minuten selecteren"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d uur"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d uur"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minuten"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuut"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Uur"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"voor minuten"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"voor uur"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-or/strings.xml b/compose/material3/material3/src/androidMain/res/values-or/strings.xml
new file mode 100644
index 0000000..9babec3
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-or/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ଡାଏଲଗ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ବିସ୍ତାର କରାଯାଇଛି"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ସଙ୍କୁଚିତ କରାଯାଇଛି"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ଖାରଜ କରନ୍ତୁ"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"ପରାମର୍ଶ ତଳେ ଦିଆଯାଇଛି"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"ତାରିଖ ଚୟନ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"ଚୟନିତ ତାରିଖ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ଏକ ବର୍ଷ ଚୟନ କରିବାକୁ ସୁଇଚ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ଏକ ବର୍ଷ ଚୟନ କରିବା ପାଇଁ ସ୍ୱାଇପ କରନ୍ତୁ କିମ୍ବା ଏକ ଦିନ ଚୟନ କରିବା ପାଇଁ ପୁଣି ସୁଇଚ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"ପରବର୍ତ୍ତୀ ମାସକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"ପୂର୍ବବର୍ତ୍ତୀ ମାସକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s ବର୍ଷକୁ ନାଭିଗେଟ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"ବର୍ତ୍ତମାନର ଚୟନ: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"କିଛି ନାହିଁ"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ଆଜି"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"ବର୍ଷ ପିକର ଦେଖାଯାଉଛି"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"ତାରିଖ ଚୟନ କରନ୍ତୁ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"ଲେଖାଯାଇଥିବା ତାରିଖ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"ତାରିଖ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"ଲେଖାଯାଇଥିବା ତାରିଖ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"କିଛି ନାହିଁ"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"ତାରିଖକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"ଆଶା କରାଯାଉଥିବା ପାଟର୍ନ ସହ ତାରିଖ ମେଳ ହେଉନାହିଁ: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"ତାରିଖଟି ଆଶା କରାଯାଉଥିବା ବର୍ଷ ରେଞ୍ଜ %1$s - %2$sରୁ ବାହାରେ ଅଛି"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"କେଲେଣ୍ଡର ଇନପୁଟ ମୋଡକୁ ସୁଇଚ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ଟେକ୍ସଟ ଇନପୁଟ ମୋଡକୁ ସୁଇଚ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"ପର ବର୍ଷଗୁଡ଼ିକ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"ପୂର୍ବ ବର୍ଷଗୁଡ଼ିକ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"ତାରିଖଗୁଡ଼ିକ ଚୟନ କରନ୍ତୁ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"ଆରମ୍ଭ ତାରିଖ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"ଶେଷ ତାରିଖ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"ପରବର୍ତ୍ତୀ ମାସ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"ପୂର୍ବବର୍ତ୍ତୀ ମାସ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"ରେଞ୍ଜରେ ଅଛି"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"ତାରିଖଗୁଡ଼ିକ ଲେଖନ୍ତୁ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"ଅବୈଧ ତାରିଖ ରେଞ୍ଜ ଇନପୁଟ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ଡ୍ରାଗ ହେଣ୍ଡେଲ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ବଟମ ସିଟକୁ ସଙ୍କୁଚିତ କରନ୍ତୁ"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ବଟମ ସିଟକୁ ଖାରଜ କରନ୍ତୁ"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ବଟମ ସିଟକୁ ବିସ୍ତାର କରନ୍ତୁ"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ଟୁଲଟିପ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ଟୁଲଟିପ ଦେଖାନ୍ତୁ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM କିମ୍ବା PM ଚୟନ କରନ୍ତୁ"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ଘଣ୍ଟା ଚୟନ କରନ୍ତୁ"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"ମିନିଟ ଚୟନ କରନ୍ତୁ"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$dଟା"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ଘଣ୍ଟା"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d ମିନିଟ"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"ମିନିଟ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ଘଣ୍ଟା"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"ମିନିଟ ପାଇଁ"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ଘଣ୍ଟା ପାଇଁ"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pa/strings.xml b/compose/material3/material3/src/androidMain/res/values-pa/strings.xml
new file mode 100644
index 0000000..ccb24f9
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-pa/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ਡਾਇਲੌਗ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ਵਿਸਤਾਰ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ਸਮੇਟਿਆ ਗਿਆ"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ਖਾਰਜ ਕਰੋ"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ਖੋਜੋ"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"ਸੁਝਾਅ ਹੇਠਾਂ ਹਨ"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"ਤਾਰੀਖ ਚੁਣੋ"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"ਚੁਣੀ ਗਈ ਤਾਰੀਖ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ਸਾਲ ਚੁਣਨ ਲਈ ਸਵਿੱਚ ਕਰੋ"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ਕੋਈ ਸਾਲ ਚੁਣਨ ਲਈ ਸਵਾਈਪ ਕਰੋ ਜਾਂ ਕੋਈ ਦਿਨ ਚੁਣਨ ਲਈ ਵਾਪਸ ਜਾਣ ਵਾਸਤੇ ਟੈਪ ਕਰੋ"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"ਅਗਲੇ ਮਹੀਨੇ \'ਤੇ ਜਾਓ"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"ਪਿਛਲੇ ਮਹੀਨੇ \'ਤੇ ਜਾਓ"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"ਸਾਲ %1$s \'ਤੇ ਜਾਓ"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"ਮੌਜੂਦਾ ਚੋਣ: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ਕੋਈ ਨਹੀਂ"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"ਅੱਜ"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"ਸਾਲ ਚੋਣਕਾਰ ਦਿਖਣਯੋਗ ਹੈ"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"ਤਾਰੀਖ ਚੁਣੋ"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"ਦਾਖਲ ਕੀਤੀ ਗਈ ਤਾਰੀਖ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"ਤਾਰੀਖ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"ਦਾਖਲ ਕੀਤੀ ਗਈ ਤਾਰੀਖ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ਕੋਈ ਨਹੀਂ"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"ਇਸ ਤਾਰੀਖ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"ਤਾਰੀਖ ਸੰਭਾਵਿਤ ਪੈਟਰਨ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"ਤਾਰੀਖ ਸੰਭਾਵਿਤ ਸਾਲ ਦੀ ਰੇਂਜ, %1$s - %2$s ਤੋਂ ਬਾਹਰ ਹੈ"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"ਕੈਲੰਡਰ ਇਨਪੁੱਟ ਮੋਡ \'ਤੇ ਸਵਿੱਚ ਕਰੋ"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ਲਿਖਤ ਇਨਪੁੱਟ ਮੋਡ \'ਤੇ ਸਵਿੱਚ ਕਰੋ"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"ਬਾਅਦ ਵਾਲੇ ਸਾਲਾਂ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"ਪਿਛਲੇ ਸਾਲਾਂ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"ਤਾਰੀਖਾਂ ਚੁਣੋ"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"ਸ਼ੁੁਰੂਆਤੀ ਤਾਰੀਖ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"ਸਮਾਪਤੀ ਤਾਰੀਖ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"ਅਗਲਾ ਮਹੀਨਾ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"ਪਿਛਲਾ ਮਹੀਨਾ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"ਰੇਂਜ ਵਿੱਚ"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"ਤਾਰੀਖਾਂ ਦਾਖਲ ਕਰੋ"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"ਇਨਪੁੱਟ ਕੀਤੀ ਗਈ ਤਾਰੀਖ ਦੀ ਰੇਂਜ ਅਵੈਧ ਹੈ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ਘਸੀਟਣ ਵਾਲਾ ਹੈਂਡਲ"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ਹੇਠਲੀ ਸ਼ੀਟ ਨੂੰ ਸਮੇਟੋ"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ਹੇਠਲੀ ਸ਼ੀਟ ਨੂੰ ਖਾਰਜ ਕਰੋ"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ਹੇਠਲੀ ਸ਼ੀਟ ਦਾ ਵਿਸਤਾਰ ਕਰੋ"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ਟੂਲ-ਟਿੱਪ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ਟੂਲ-ਟਿੱਪ ਦਿਖਾਓ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM ਜਾਂ PM ਚੁਣੋ"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"ਘੰਟਾ ਚੁਣੋ"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"ਮਿੰਟ ਚੁਣੋ"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d ਵਜੇ"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ਘੰਟੇ"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d ਮਿੰਟ"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"ਮਿੰਟ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ਘੰਟਾ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"ਮਿੰਟਾਂ ਲਈ"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ਘੰਟੇ ਲਈ"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pl/strings.xml b/compose/material3/material3/src/androidMain/res/values-pl/strings.xml
new file mode 100644
index 0000000..69066e2
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-pl/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Okno"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Rozwinięte"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Zwinięte"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Zamknij"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Szukaj"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugestie znajdziesz poniżej"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Wybierz datę"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Wybrana data"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Przełącz na wybór roku"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Przesuń, aby wybrać rok, lub kliknij, aby wrócić do wyboru dnia"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Zmień na następny miesiąc"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Zmień na poprzedni miesiąc"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Przejdź do roku %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Obecnie wybrane: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Brak"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Dzisiaj"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Widoczny selektor roku"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Wybierz datę"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Wprowadzono datę"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Wprowadzono datę: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Brak"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data jest niedozwolona: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Data nie pasuje do oczekiwanego wzorca: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Data jest poza oczekiwanym zakresem lat %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Włącz tryb wprowadzania danych kalendarzowych"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Przełącz na tryb wprowadzania tekstu"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Przewiń, aby wyświetlić późniejsze lata"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Przewiń, aby wyświetlić wcześniejsze lata"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Wybierz daty"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data początkowa"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data końcowa"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Przewiń, aby wyświetlić następny miesiąc"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Przewiń, aby wyświetlić poprzedni miesiąc"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"W zakresie"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Wprowadź daty"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Nieprawidłowy zakres dat"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Uchwyt do przeciągania"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Zwiń planszę dolną"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Zamknij planszę dolną"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Rozwiń planszę dolną"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Etykietka"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Pokaż etykietkę"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Wybierz AM lub PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Wybierz godzinę"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Wybierz minuty"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"Minuty: %1$d"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuta"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Godzina"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"aby wpisać minuty"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"aby wpisać godzinę"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pt-rBR/strings.xml b/compose/material3/material3/src/androidMain/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..c281759
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-pt-rBR/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Caixa de diálogo"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Aberto"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Fechado"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Dispensar"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Pesquisar"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugestões abaixo"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Selecionar data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data selecionada"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Usar a seleção de ano"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Deslize para selecionar um ano ou toque para voltar à seleção de dia"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Mudar para o próximo mês"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Mudar para o mês anterior"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navegar para o ano de %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Seleção atual: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Nenhum"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hoje"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Seletor de ano visível"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Selecionar data"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data informada"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data informada: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Nenhum"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data não permitida: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"A data não está no padrão esperado: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"A data está fora do intervalo de anos esperado: %1$s a %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Usar o modo de entrada na agenda"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Usar o modo de entrada de texto"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Role a tela para mostrar anos seguintes"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Role a tela para mostrar anos anteriores"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Selecionar datas"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data de início"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data de término"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Role a tela para mostrar o mês seguinte"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Role a tela para mostrar o mês anterior"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dentro do período"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Informar datas"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Período inválido"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Alça de arrastar"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Fechar página inferior"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Dispensar página inferior"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Abrir página inferior"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Dica"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostrar dica"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selecione AM ou PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Selecione a hora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Selecione os minutos"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$dh"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d horas"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutos"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuto"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"por minutos"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"por hora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pt-rPT/strings.xml b/compose/material3/material3/src/androidMain/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..2a4eb3b
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-pt-rPT/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Caixa de diálogo"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Expandido"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Reduzido"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Ignorar"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Pesquisar"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugestões abaixo"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Selecione uma data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data selecionada"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Mudar para a seleção do ano"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Deslize rapidamente para selecionar um ano ou toque para mudar novamente para a seleção do dia"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Mudar para o mês seguinte"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Mudar para o mês anterior"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navegar para o ano %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Seleção atual: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Nenhuma"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hoje"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Selecionador de ano visível"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Selecione uma data"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data introduzida"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data introduzida: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Nenhuma"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data não permitida: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"A data não corresponde ao padrão esperado: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Data fora do intervalo de anos esperado: %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Mudar para o método de introdução de calendário"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Mudar para o método de introdução de texto"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Desloque a página para mostrar anos posteriores"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Desloque a página para mostrar anos anteriores"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Selecione as datas"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data de início"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data de fim"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Desloque a página para mostrar o mês seguinte"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Desloque a página para mostrar o mês anterior"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dentro do intervalo"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Introduza as datas"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Entrada do intervalo de datas inválida"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Indicador para arrastar"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Reduza a secção inferior"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Ignore a secção inferior"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Expanda a secção inferior"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Sugestão"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostrar sugestão"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selecione AM ou PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Selecionar hora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Selecionar minutos"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d h"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d horas"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutos"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuto"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"para minutos"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"para hora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pt/strings.xml b/compose/material3/material3/src/androidMain/res/values-pt/strings.xml
new file mode 100644
index 0000000..c281759
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-pt/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Caixa de diálogo"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Aberto"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Fechado"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Dispensar"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Pesquisar"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugestões abaixo"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Selecionar data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data selecionada"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Usar a seleção de ano"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Deslize para selecionar um ano ou toque para voltar à seleção de dia"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Mudar para o próximo mês"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Mudar para o mês anterior"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navegar para o ano de %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Seleção atual: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Nenhum"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hoje"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Seletor de ano visível"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Selecionar data"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data informada"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data informada: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Nenhum"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data não permitida: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"A data não está no padrão esperado: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"A data está fora do intervalo de anos esperado: %1$s a %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Usar o modo de entrada na agenda"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Usar o modo de entrada de texto"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Role a tela para mostrar anos seguintes"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Role a tela para mostrar anos anteriores"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Selecionar datas"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data de início"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data de término"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Role a tela para mostrar o mês seguinte"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Role a tela para mostrar o mês anterior"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Dentro do período"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Informar datas"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Período inválido"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Alça de arrastar"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Fechar página inferior"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Dispensar página inferior"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Abrir página inferior"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Dica"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Mostrar dica"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selecione AM ou PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Selecione a hora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Selecione os minutos"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$dh"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d horas"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minutos"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuto"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"por minutos"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"por hora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ro/strings.xml b/compose/material3/material3/src/androidMain/res/values-ro/strings.xml
new file mode 100644
index 0000000..0b357c8
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ro/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Extins"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Restrâns"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Închide"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Caută"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugestii mai jos"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Selectează data"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data selectată"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Comută la selectarea anului"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Glisează pentru a selecta un an sau atinge pentru a reveni la selectarea zilei"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Treci la luna următoare"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Treci la luna anterioară"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navighează la anul %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Opțiunea selectată: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Niciuna"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Azi"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Selectorul de an este vizibil"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Selectează data"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data introdusă"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Dată"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data introdusă: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Niciuna"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data nu este permisă: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Data nu corespunde modelului așteptat: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Data este în afara intervalului de ani %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Comută la modul de introducere în calendar"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Comută la modul de introducere a textului"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Derulează pentru a afișa anii ulteriori"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Derulează pentru a afișa anii anteriori"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Selectează datele"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data de începere"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data de încheiere"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Derulează pentru a afișa luna următoare"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Derulează pentru a afișa luna anterioară"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"În interval"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Introdu datele"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Intervalul de date introdus nu este valid"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Ghidaj de tragere"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Restrânge foaia din partea de jos"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Închide foaia din partea de jos"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Extinde foaia din partea de jos"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Balon explicativ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Afișează balonul explicativ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Selectează AM sau PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Selectează ora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Selectează minutele"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Ora %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"Ora %1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minute"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minut"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Oră"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"pentru minute"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"pentru oră"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ru/strings.xml b/compose/material3/material3/src/androidMain/res/values-ru/strings.xml
new file mode 100644
index 0000000..2443c51
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ru/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Диалоговое окно"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Развернуто"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Свернуто"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Закрыть"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Строка поиска"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Подсказки показаны ниже"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Выберите дату"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Выбранная дата"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Перейти к выбору года"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Проведите по экрану, чтобы выбрать год, или нажмите, чтобы вернуться к выбору дня."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Перейти к следующему месяцу"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Перейти к предыдущему месяцу"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Переход к %1$s году"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Текущий выбор: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Нет"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Сегодня"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Отображаемый выбор года"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Выберите дату"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Введенная дата"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Дата"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Введенная дата: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Нет"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Недопустимая дата: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Дата не соответствует допустимому шаблону: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Дата не входит в допустимый диапазон: %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Перейти в режим выбора даты"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Перейти в режим ввода текста"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Прокрутите до более поздних лет"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Прокрутите до более ранних лет"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Выберите даты"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Начальная дата"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Конечная дата"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Прокрутите до следующего месяца"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Прокрутите до предыдущего месяца"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"День в диапазоне дат"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Введите даты"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Указан недопустимый диапазон дат."</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Маркер перемещения"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Свернуть нижний экран"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Закрыть нижний экран"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Развернуть нижний экран"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Подсказка"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Показать подсказку"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Выбрать AM (до полудня) или PM (после полудня)"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Выбрать час"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Выберите минуты"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d ч."</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ч."</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d мин."</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Минуты"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Часы"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"минуты"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"часы"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-si/strings.xml b/compose/material3/material3/src/androidMain/res/values-si/strings.xml
new file mode 100644
index 0000000..461c6bf
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-si/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"සංවාදය"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"දිග හරින ලදි"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"හකුළන ලදි"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"අස් කරන්න"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"සෙවීම"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"පහත යෝජනා"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"දිනය තෝරන්න"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"තෝරා ගත් දිනය"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"වසරක් තේරීමට මාරු වන්න"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"වසරක් තේරීමට ස්වයිප් කරන්න, නැතහොත් දිනක් තේරීමට ආපසු මාරු වීමට තට්ටු කරන්න"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"ඊළඟ මාසයට වෙනස් කරන්න"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"පෙර මාසයට වෙනස් කරන්න"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s වසර වෙත සංචලන කරන්න"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"වත්මන් තේරීම: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"කිසිවක් නැත"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"අද"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"වසර තෝරකය දෘශ්‍යමානයි"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"දිනය තෝරන්න"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"ඇතුළත් කළ දිනය"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"දිනය"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"ඇතුළත් කළ දිනය: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"කිසිවක් නැත"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"දිනයට ඉඩ දෙනු නොලැබේ: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"දිනය අපේක්ෂිත රටාවට නොගැළපෙයි: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"දිනය %1$s - %2$s අපේක්ෂිත වසර පරාසයෙන් පිටත වේ"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"දිනදර්ශන ආදාන ප්‍රකාරයට මාරු වන්න"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"පාඨ ආදාන ප්‍රකාරයට මාරු වන්න"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"පසු වසර පෙන්වීමට අනුචලන කරන්න"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"පෙර වසර පෙන්වීමට අනුචලන කරන්න"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"දින තෝරන්න"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"ආරම්භක දිනය"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"අවසාන දිනය"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"ඊළඟ මාසය පෙන්වීමට අනුචලන කරන්න"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"පෙර මාසය පෙන්වීමට අනුචලන කරන්න"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"පරාසය තුළ"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"දින ඇතුළු කරන්න"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"අවලංගු දින පරාස ආදානය"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"ඇදීම් හැඬලය"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"පහළම පත්‍රය හකුළන්න"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"පහළම පත්‍රය අස් කරන්න"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"පහළම පත්‍රය දිග හරින්න"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"මෙවලම් ඉඟිය"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"මෙවලම් ඉඟිය පෙන්වන්න"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"ප.ව."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"පෙ.ව."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"පෙ.ව. හෝ ප.ව. තෝරන්න"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"පැය තෝරන්න"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"මිනිත්තු ගණන තෝරන්න"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$dට"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"පැය %1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"මිනිත්තු %1$d"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"විනාඩි"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"පැය"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"මිනිත්තු ගණනක් සඳහා"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"පැයක් සඳහා"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sk/strings.xml b/compose/material3/material3/src/androidMain/res/values-sk/strings.xml
new file mode 100644
index 0000000..744b6eb
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-sk/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialógové okno"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Rozbalené"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Zbalené"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Zavrieť"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Hľadať"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Návrhy sú nižšie"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Vybrať dátum"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Vybraný dátum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Prepnúť na výber roka"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Potiahnutím vyberte rok alebo klepnutím prepnite späť na výber dňa"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Zmeniť na nasledujúci mesiac"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Zmeniť na predchádzajúci mesiac"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Prejsť na rok %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Aktuálny výber: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Žiadne"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Dnes"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Výber roka je viditeľný"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Vybrať dátum"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Zadaný dátum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Dátum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Zadaný dátum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Žiadne"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Nepovolený dátum: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Dátum nezodpovedá očakávanému vzoru: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Dátum sa nenachádza v očakávanom rozsahu rokov: %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Prepnúť na kalendárový režim vstupu"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Prepnúť na režim zadávania textu"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Posunutím si zobrazte neskoršie roky"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Posunutím si zobrazte skoršie roky"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Vybrať dátumy"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Dátum začatia"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Dátum ukončenia"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Posunutím si zobrazte nasledujúci mesiac"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Posunutím si zobrazte predchádzajúci mesiac"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"V rozsahu"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Zadať dátumy"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Neplatné zadané obdobie"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Presúvadlo"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Zbaliť dolný hárok"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Zavrieť dolný hárok"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Rozbaliť dolný hárok"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Popis"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Zobraziť popis"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Vyberte AM alebo PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Vybrať hodinu"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Vybrať minúty"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d h"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d h"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d min"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minúty"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Hodina"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"minúty"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"hodiny"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sl/strings.xml b/compose/material3/material3/src/androidMain/res/values-sl/strings.xml
new file mode 100644
index 0000000..3d9543a
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-sl/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Pogovorno okno"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Razširjeno"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Strnjeno"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Opusti"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Iskanje"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Predlogi so spodaj"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Izbira datuma"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Izbrani datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Preklopi na izbiro leta"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Povlecite, da izberete leto, ali se dotaknite, da preklopite nazaj na izbiranje dneva."</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Spremeni na naslednji mesec"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Spremeni na prejšnji mesec"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Pomik na leto %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Trenutna izbira: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Brez"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Danes"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Izbirnik leta je viden"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Izbira datuma"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Vneseni datum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Vneseni datum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Brez"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Oblika datuma ni dovoljena: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datum se ne ujema s pričakovanim vzorcem: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datum je zunaj pričakovanega razpona let %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Preklop na način vnosa v koledar"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Preklop na način vnosa besedila"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Pomaknite se za prikaz poznejših let."</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Pomaknite se za prikaz zgodnejših let."</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Izberite datume"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Začetni datum"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Končni datum"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Pomaknite se za prikaz naslednjega meseca."</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Pomaknite se za prikaz prejšnjega meseca."</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Znotraj obdobja"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Vnesite datume"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Neveljaven vnos obdobja."</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Ročica za vlečenje"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Strnitev razdelka na dnu zaslona"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Opustitev razdelka na dnu zaslona"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Razširitev razdelka na dnu zaslona"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Opis orodja"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Pokaži opis orodja"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"pop."</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"dop."</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Izberite dopoldanski ali popoldanski čas."</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Izbira ure"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Izbira minut"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d min"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuta"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Ura"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"za minute"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"za uro"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sq/strings.xml b/compose/material3/material3/src/androidMain/res/values-sq/strings.xml
new file mode 100644
index 0000000..781881a
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-sq/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogu"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Zgjeruar"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Palosur"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Hiq"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Kërkimi"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Sugjerimet më poshtë"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Zgjidh datën"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Data e zgjedhur"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Kalo te zgjedhja e një viti"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Rrëshqit shpejt për të zgjedhur një vit ose trokit për të kaluar sërish te zgjedhja e ditës"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Ndrysho te muaji i ardhshëm"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Ndrysho te muaji i kaluar"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigo në vitin %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Zgjedhja aktuale: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Asnjë"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Sot"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Zgjedhësi i vitit i dukshëm"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Zgjidh datën"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Data e futur"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Data"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Data e futur: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Asnjë"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Data nuk lejohet: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Data nuk përputhet me motivin e pritur: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Data jashtë diapazonit të pritur të vitit %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Kalo te modaliteti i \"Hyrjes së kalendarit\""</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Kalo te modaliteti i \"Hyrjes së tekstit\""</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Lëviz për të shfaqur vitet e ardhshme"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Lëviz për të shfaqur vitet e mëparshme"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Zgjidh datat"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Data e fillimit"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Data e mbarimit"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Lëviz për të shfaqur muajin e ardhshëm"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Lëviz për të shfaqur muajin e mëparshëm"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Brenda intervalit"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Fut datat"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Hyrje e pavlefshme e diapazonit të datave"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Doreza e zvarritjes"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Palos fletën e poshtme"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Hiq fletën e poshtme"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Zgjero fletën e poshtme"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Këshilla për veglën"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Shfaq këshillat për veglën"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"pasdite"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"paradite"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Zgjidh paradite ose pasdite"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Zgjidh orën"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Zgjidh minutat"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"ora %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d orë"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minuta"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuta"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Ora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"për minuta"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"për orë"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sr/strings.xml b/compose/material3/material3/src/androidMain/res/values-sr/strings.xml
new file mode 100644
index 0000000..030fc23
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-sr/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Дијалог"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Проширено је"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Скупљено је"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Одбаци"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Претрага"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Предлози су у наставку"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Изаберите датум"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Изабрани датум"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Пређите на избор године"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Превуците да бисте изабрали годину или додирните да бисте се вратили на избор дана"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Пређите на следећи месец"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Пређите на претходни месец"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Идите на годину: %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Актуелни избор: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Ништа"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Данас"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Видљив бирач година"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Изаберите датум"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Унети датум"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Датум"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Унети датум: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Ништа"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Датум није дозвољен: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Датум не одговара очекиваном шаблону: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Датум је изван очекиваног опсега година %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Пређите на режим уноса у Календару"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Пређите на режим уноса текста"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Скролујте да би се приказале касније године"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Скролујте да би се приказале раније године"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Изаберите датуме"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Датум почетка"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Датум завршетка"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Померајте да би се приказао следећи месец"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Померајте да би се приказао претходни месец"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"У опсегу"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Унесите датуме"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Унос опсега датума је неважећи"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Идентификатор за превлачење"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Скупите доњу табелу"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Одбаците доњу табелу"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Проширите доњу табелу"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Објашњење"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Прикажите објашњење"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Изаберите пре подне или по подне"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Изаберите сат"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Изаберите минуте"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d с"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d с"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d мин"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Минут"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Сат"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"за минуте"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"за сате"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sv/strings.xml b/compose/material3/material3/src/androidMain/res/values-sv/strings.xml
new file mode 100644
index 0000000..b5a62cc
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-sv/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialogruta"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Utökad"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Komprimerad"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Stäng"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Sök"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Se förslag nedan"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Välj datum"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Valt datum"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Byt till att välja år"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Svep för att välja ett år eller tryck för att återgå till att välja en dag"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Ändra till nästa månad"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Ändra till föregående månad"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Navigera till %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Aktuellt val: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Inga"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"I dag"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Årväljaren är synlig"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Välj datum"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Angivet datum"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Datum"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Angivet datum: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Inga"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Datumet är inte tillåtet: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Datumet matchar inte det förväntade formatet: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Datumet faller utanför det förväntade årsintervallet %1$s–%2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Byt till kalender som inmatningsläge"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Byt till text som inmatningsläge"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Scrolla för att visa senare år"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Scrolla för att visa föregående år"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Välj datum"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Startdatum"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Slutdatum"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Scrolla för att visa nästa månad"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Scrolla för att visa föregående månad"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Inom intervall"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Ange datum"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Ett ogiltigt datumintervall har angetts"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Handtag"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Komprimera arket på nedre delen av skärmen"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Stäng arket på nedre delen av skärmen"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Utöka arket på nedre delen av skärmen"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Beskrivning"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Visa beskrivning"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"EM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"FM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Välj mellan FM och EM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Ange timme"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Välj minuter"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Kl. %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d tim"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d minuter"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minut"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Timme"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"för minuter"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"för timme"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sw/strings.xml b/compose/material3/material3/src/androidMain/res/values-sw/strings.xml
new file mode 100644
index 0000000..cc4d5a6
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-sw/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Kidirisha"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Imepanuliwa"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Imekunjwa"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Ondoa"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Tafuta"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Mapendekezo yaliyo hapa chini"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Chagua tarehe"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Tarehe uliyochagua"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Teua mwaka"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Telezesha kidole ili uchague mwaka au gusa ili urejee kuchagua siku"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Nenda kwenye mwezi unaofuata"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Rudi kwenye mwezi uliotangulia"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Nenda kwenye mwaka %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Ambayo umechagua: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Hamna"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Leo"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Kiteua mwaka kimeonyeshwa"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Chagua tarehe"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Tarehe uliyoweka"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Tarehe"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Tarehe uliyoweka: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Hamna"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Tarehe si sahihi: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Tarehe hailingani na mpangilio unaotumika: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Tarehe uliyoweka haiambatani na kipindi husika %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Badilisha uteue tarehe kwenye kalenda"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Badilisha uandike tarehe mwenyewe"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Sogeza ili uone miaka ya baadaye"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Sogeza ili uone miaka iliyopita"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Chagua tarehe"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Tarehe ya kuanza"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Tarehe ya mwisho"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Sogeza ili kuonyesha mwezi ujao"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Sogeza ili kuonyesha mwezi uliopita"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Ipo katika kipindi"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Weka tarehe"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Kipindi ulichoweka si sahihi"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Aikoni ya buruta"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Kunja safu ya chini"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Ondoa safu ya chini"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Panua safu ya chini"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Kidirisha cha vidokezo"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Onyesha kidirisha cha vidokezo"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Chagua AM au PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Chagua saa"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Chagua dakika"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Saa %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"Saa %1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"Dakika %1$d"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Dakika"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Saa"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"cha dakika"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"cha moja"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ta/strings.xml b/compose/material3/material3/src/androidMain/res/values-ta/strings.xml
new file mode 100644
index 0000000..12c420a
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ta/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"உரையாடல்"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"விரிவாக்கப்பட்டது"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"சுருக்கப்பட்டது"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"நிராகரிக்கும்"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"தேடல்"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"பரிந்துரைகள் கீழே கிடைக்கும்"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"தேதியைத் தேர்வுசெய்க"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"தேர்ந்தெடுக்கப்பட்ட தேதி"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ஆண்டைத் தேர்ந்தெடுக்கும் விருப்பத்திற்கு மாற்று"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ஆண்டைத் தேர்வுசெய்ய ஸ்வைப் செய்யுங்கள் அல்லது தேதியைத் தேர்வுசெய்யும் பக்கத்திற்கு மீண்டும் செல்ல தட்டுங்கள்"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"அடுத்த மாதத்திற்கு மாற்று"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"முந்தைய மாதத்திற்கு மாற்று"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$sக்குச் செல்லும்"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"தற்போதைய தேர்வு: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ஏதுமில்லை"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"இன்று"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"ஆண்டைத் தேர்வுசெய்யும் விருப்பம் காட்டப்படுகிறது"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"தேதியைத் தேர்வுசெய்க"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"உள்ளிட்ட தேதி"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"தேதி"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"உள்ளிட்ட தேதி: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ஏதுமில்லை"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"இந்தத் தேதி அனுமதிக்கப்படவில்லை: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"எதிர்பார்க்கப்படும் பேட்டர்னுடன் தேதி பொருந்தவில்லை: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"இந்தத் தேதி %1$s - %2$s ஆண்டு வரம்பிற்குள் இல்லை"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"கேலெண்டர் உள்ளீட்டு முறைக்கு மாற்று"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"எழுத்து உள்ளீட்டு முறைக்கு மாற்று"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"பிந்தைய ஆண்டுகளைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"முந்தைய ஆண்டுகளைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"தேதிகளைத் தேர்ந்தெடுங்கள்"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"தொடக்கத் தேதி"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"முடிவுத் தேதி"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"அடுத்த மாதத்தைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"முந்தைய மாதத்தைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"வரம்பிற்குள் உள்ளது"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"தேதிகளை உள்ளிடுங்கள்"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"தவறான தேதி வரம்பை உள்ளிட்டுள்ளீர்கள்"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"இழுப்பதற்கான ஹேண்டில்"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"கீழ்ப்புற ஷீட்டைச் சுருக்கும்"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"கீழ்ப்புற ஷீட்டை நிராகரிக்கும்"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"கீழ்ப்புற ஷீட்டை விரிவாக்கும்"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"உதவிக்குறிப்பு"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"உதவிக்குறிப்பைக் காட்டு"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM/PM என்பதைத் தேர்ந்தெடுக்கலாம்"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"மணிநேரத்தைத் தேர்ந்தெடுக்கலாம்"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"நிமிடங்களைத் தேர்ந்தெடுக்கலாம்"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d மணி"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d மணி"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d நிமிடங்கள்"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"நிமிடம்"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"மணிநேரம்"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"நிமிடங்களுக்கு"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"மணிநேரத்திற்கு"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-te/strings.xml b/compose/material3/material3/src/androidMain/res/values-te/strings.xml
new file mode 100644
index 0000000..29a5642
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-te/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"డైలాగ్"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"విస్తరించబడింది"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"కుదించబడింది"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"విస్మరించండి"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"సెర్చ్ చేయండి"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"సూచనలు దిగువున ఉన్నాయి"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"తేదీని ఎంచుకోండి"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"ఎంచుకున్న తేదీ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"సంవత్సరాన్ని ఎంచుకునే ఆప్షన్‌కు మారండి"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"సంవత్సరాన్ని ఎంచుకోవడానికి స్వైప్ చేయండి, లేదా తిరిగి రోజును ఎంచుకునేందుకు మారడానికి ట్యాప్ చేయండి"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"వచ్చే నెలకు మార్చండి"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"మునుపటి నెలకు మార్చండి"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s సంవత్సరానికి వెళ్లండి"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"ప్రస్తుత ఎంపిక: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ఏదీ లేదు"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"నేడు"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"సంవత్సరం పికర్ కనిపిస్తుంది"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"తేదీని ఎంచుకోండి"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"ఎంటర్ చేసిన తేదీ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"తేదీ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"ఎంటర్ చేసిన తేదీ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ఏదీ లేదు"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"చెల్లని తేదీ: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"తేదీ, ఉండాల్సిన ఫార్మాట్‌తో మ్యాచ్ కాలేదు: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"ఉండాల్సిన సంవత్సరాల పరిధి %1$s - %2$s‌లో తేదీ లేదు"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"క్యాలెండర్ ఇన్‌పుట్ మోడ్‌కు మారండి"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"టెక్స్ట్ ఇన్‌పుట్ మోడ్‌కు మారండి"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"తర్వాతి సంవత్సరాల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"మునుపటి సంవత్సరాల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"తేదీలను ఎంచుకోండి"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"ప్రారంభ తేదీ"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"ముగింపు తేదీ"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"వచ్చే నెల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"మునుపటి నెల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"పరిధిలో ఉంది"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"తేదీలను ఎంటర్ చేయండి"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"తేదీల పరిధి ఇన్‌పుట్ చెల్లదు"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"లాగే హ్యాండిల్"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"దిగువున ఉన్న షీట్‌ను కుదిస్తుంది"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"దిగువున ఉన్న షీట్‌ను విస్మరిస్తుంది"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"దిగువున ఉన్న షీట్‌ను విస్తరిస్తుంది"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"టూల్‌టిప్"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"టూల్‌టిప్‌ను చూడండి"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"AM లేదా PMను ఎంచుకోండి"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"గంటలను ఎంచుకోవడానికి వీలు కల్పిస్తుంది"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"నిమిషాలను ఎంచుకోండి"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d గం"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d గంటలు"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d నిమిషాలు"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"నిమిషం"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"గంట"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"నిమిషాలను ఎంచుకోవడం కోసం"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"గంటలను ఎంచుకోవడం కోసం"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-th/strings.xml b/compose/material3/material3/src/androidMain/res/values-th/strings.xml
new file mode 100644
index 0000000..e591400
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-th/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"กล่องโต้ตอบ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"ขยายแล้ว"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"ยุบแล้ว"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"ปิด"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"ค้นหา"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"มีคำแนะนำที่ด้านล่าง"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"เลือกวันที่"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"วันที่ที่เลือก"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"เปลี่ยนไปที่การเลือกปี"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ปัดเพื่อเลือกปีหรือแตะเพื่อเปลี่ยนกลับไปยังการเลือกวัน"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"เปลี่ยนไปที่เดือนถัดไป"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"เปลี่ยนไปที่เดือนก่อนหน้า"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"ไปยังปี %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"การเลือกปัจจุบัน: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"ไม่มี"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"วันนี้"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"แสดงตัวเลือกปี"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"เลือกวันที่"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"วันที่ป้อน"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"วันที่"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"วันที่ป้อน: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"ไม่มี"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"ไม่อนุญาตให้ใช้วันที่นี้: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"วันที่ไม่ตรงกับรูปแบบที่คาดไว้: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"วันที่อยู่นอกเหนือจากช่วงปีที่คาดไว้ %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"สลับไปใช้โหมดป้อนข้อมูลปฏิทิน"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"สลับไปใช้โหมดการป้อนข้อความ"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"เลื่อนเพื่อแสดงปีหลังจากนี้"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"เลื่อนเพื่อแสดงปีก่อนหน้านี้"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"เลือกวันที่"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"วันที่เริ่มต้น"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"วันที่สิ้นสุด"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"เลื่อนเพื่อแสดงเดือนถัดไป"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"เลื่อนเพื่อแสดงเดือนก่อนหน้า"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"อยู่ในช่วงวันที่ที่เลือก"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"ป้อนวันที่"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"การป้อนข้อมูลช่วงวันที่ไม่ถูกต้อง"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"แฮนเดิลการลาก"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"ยุบ Bottom Sheet"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"ปิด Bottom Sheet"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"ขยาย Bottom Sheet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"เคล็ดลับเครื่องมือ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"แสดงเคล็ดลับเครื่องมือ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"เลือก AM หรือ PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"เลือกชั่วโมง"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"เลือกนาที"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d น."</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d ชม."</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d นาที"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"นาที"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"ชั่วโมง"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"สำหรับนาที"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"สำหรับชั่วโมง"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-tl/strings.xml b/compose/material3/material3/src/androidMain/res/values-tl/strings.xml
new file mode 100644
index 0000000..6eee833
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-tl/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Naka-expand"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Naka-collapse"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"I-dismiss"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Maghanap"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Mga suhestyon sa ibaba"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Pumili ng petsa"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Piniling petsa"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Lumipat sa pagpili ng taon"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Mag-swipe para pumili ng taon, o mag-tap para bumalik sa pagpili ng araw"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Lumipat sa susunod na buwan"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Lumipat sa nakaraang buwan"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Mag-navigate papunta sa taong %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Kasalukuyang napili: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Wala"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Ngayon"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Nakikita ang picker ng taon"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Pumili ng petsa"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Inilagay na petsa"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Petsa"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Inilagay na petsa: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Wala"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Hindi pinapayagan ang petsa: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Hindi tumutugma ang petsa sa inaasahang pattern: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Wala ang petsa sa inaasahang hanay ng taon na %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Lumipat sa pamamaraan ng pag-input ng kalendaryo"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Lumipat sa pamamaraan ng pag-input ng text"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Mag-scroll para makita ang mga mas kamakailang taon"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Mag-scroll para ipakita ang mga mas naunang taon"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Pumili ng mga petsa"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Petsa ng pagsisimula"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Petsa ng pagtatapos"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Mag-scroll para ipakita ang susunod na buwan"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Mag-scroll para ipakita ang nakaraang buwan"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"May signal"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Maglagay ng mga petsa"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Invalid ang input na hanay ng petsa"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Handle sa pag-drag"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"I-collapse ang bottom sheet"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"I-dismiss ang bottom sheet"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Palawakin ang bottom sheet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Tooltip"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Ipakita ang tooltip"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Piliin ang AM o PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Pumili ng oras"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Pumili ng mga minuto"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d o\'clock"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d oras"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d (na) minuto"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Minuto"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Oras"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"nang ilang minuto"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"nang ilang oras"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-tr/strings.xml b/compose/material3/material3/src/androidMain/res/values-tr/strings.xml
new file mode 100644
index 0000000..a1bb70e
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-tr/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Dialog"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Genişletildi"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Daraltıldı"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Kapat"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Arama"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Önerileri aşağıda bulabilirsiniz"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Tarih seç"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Seçilen tarih"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Yıl seçimine geç"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Kaydırarak bir yıl seçin veya gün seçme bölümüne geri dönmek için dokunun"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Sonraki aya değiştir"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Önceki aya değiştir"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s yılına gidin"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Geçerli seçim: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Yok"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Bugün"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Yıl seçici görünür durumda"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Tarih seç"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Girilen tarih"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Tarih"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Girilen tarih: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Yok"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Tarihe izin verilmiyor: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Tarih, istenen biçimle eşleşmiyor: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Tarih, istenen %1$s-%2$s yıl aralığının dışında"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Takvim giriş moduna geç"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Metin giriş moduna geç"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Sonraki yılları göstermek için kaydırın"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Önceki yılları göstermek için kaydırın"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Tarihleri seçin"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Başlangıç tarihi"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Bitiş tarihi"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Sonraki ayı göstermek için kaydırın"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Önceki ayı göstermek için kaydırın"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Aralıkta"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Tarihleri girin"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Geçersiz tarih aralığı girişi"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Sürükleme tutamacı"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Alt sayfayı daralt"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Alt sayfayı kapat"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Alt sayfayı genişlet"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"İpucu"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Araç ipucunu göster"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"ÖS"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"ÖÖ"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"ÖÖ veya ÖS\'yi seçin"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Saat seçin"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Dakikayı seçin"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Saat %1$d"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d saat"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d dakika"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Dakika"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Saat"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"dakika"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"saat"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-uk/strings.xml b/compose/material3/material3/src/androidMain/res/values-uk/strings.xml
new file mode 100644
index 0000000..5c563cf
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-uk/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Вікно"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Розгорнуто"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Згорнуто"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Закрити"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Пошук"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Підказки внизу"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Виберіть дату"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Вибрана дата"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Перейти до вибору року"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Проведіть пальцем по екрану, щоб вибрати рік, або торкніться, щоб повернутися до вибору дня"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Перейти до наступного місяця"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Перейти до попереднього місяця"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Перейти до %1$s року"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Поточний вибір: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Немає"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Сьогодні"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Показувати засіб вибору року"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Виберіть дату"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Введена дата"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Дата"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Введена дата: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Немає"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Недопустима дата: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Дата не відповідає очікуваному шаблону: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Дата за межами очікуваного діапазону років %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Перейти в режим введення в календарі"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Перейти в режим введення тексту"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Прокрутіть, щоб відобразити пізніші роки"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Прокрутіть, щоб відобразити попередні роки"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Виберіть дати"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Дата початку"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Дата завершення"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Прокрутіть, щоб відобразити наступний місяць"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Прокрутіть, щоб відобразити попередній місяць"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"У діапазоні"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Введіть дати"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Указано недійсний діапазон дат"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Маркер переміщення"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Згорнути нижній екран"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Закрити нижній екран"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Розгорнути нижній екран"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Спливаюча підказка"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Показати спливаючу підказку"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"ПП"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"ДП"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Виберіть ДП чи ПП"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Вибрати годину"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Вибрати хвилини"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d год"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d год"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d хв"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Хвилина"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Година"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"для хвилин"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"для годин"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ur/strings.xml b/compose/material3/material3/src/androidMain/res/values-ur/strings.xml
new file mode 100644
index 0000000..90a6720
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-ur/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"ڈائلاگ"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"پھیلایا گیا"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"سکیڑا گیا"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"برخاست کریں"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"تلاش کریں"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"تلاش کی تجاویز نیچے دستیاب ہیں"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"تاریخ منتخب کریں"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"منتخب کردہ تاریخ"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"ایک سال کا انتخاب کرنے کے لیے سوئچ کریں"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"ایک سال منتخب کرنے کے لیے سوائپ کریں یا ایک دن منتخب کرنے کی خاطر دوبارہ سوئچ کرنے کے لیے تھپتھپائیں"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"اگلے ماہ میں تبدیل کریں"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"گزشتہ ماہ میں تبدیل کریں"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"‏سال ‎%1$s پر نیویگیٹ کریں"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"‏موجودہ انتخاب: ‎%1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"کوئی نہیں"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"آج"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"سال کا منتخب کنندہ مرئی ہے"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"تاریخ منتخب کریں"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"درج کردہ تاریخ"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"تاریخ"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"‏درج کردہ تاریخ: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"کوئی نہیں"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"‏تاریخ کی اجازت نہیں ہے: ‎%1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"‏تاریخ متوقع پیٹرن سے مماثل نہیں ہے: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"‏متوقع سال کی حد ‎%1$s‏ - %2$s سے باہر کی تاریخ"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"کیلنڈر اِن پٹ موڈ پر سوئچ کریں"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"ٹیکسٹ اِن پٹ موڈ پر سوئچ کریں"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"بعد کے سالوں کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"پچھلے سالوں کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"تواریخ منتخب کریں"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"تاریخ آغاز"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"تاریخ اختتام"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"اگلے ماہ کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"پچھلے ماہ کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"رینج میں ہے"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"تواریخ درج کریں"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"تاریخ کی حد کا غلط ان پٹ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"گھسیٹنے کا ہینڈل"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"نیچے کی شیٹ کو سکیڑیں"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"نیچے کی شیٹ کو برخاست کریں"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"نیچے کی شیٹ کو پھیلائیں"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"ٹول ٹپ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"ٹول ٹپ دکھائیں"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"‏AM یا PM منتخب کریں"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"گھنٹہ منتخب کریں"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"منٹ منتخب کریں"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"‏‎%1$d بجے"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"‏‎%1$d گھنٹے"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"‏%1$d منٹس"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"منٹ"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"گھنٹہ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"منٹ کے لیے"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"گھنٹے کے لیے"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-uz/strings.xml b/compose/material3/material3/src/androidMain/res/values-uz/strings.xml
new file mode 100644
index 0000000..cc90175
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-uz/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Muloqot oynasi"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Yoyilgan"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Yigʻilgan"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Yopish"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Qidiruv"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Takliflar quyida"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Sanani tanlang"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Tanlangan sana"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Tanlangan yilga oʻtish"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Yilni tanlash uchun suring yoki kunni tanlashga qaytish uchun tegining"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Keyingi oyga oʻzgartirish"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Avvalgi oyga oʻzgartirish"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"%1$s-yilga oʻtish"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Joriy tanlov: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Hech biri"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Bugun"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Yil tanlagich ochiq"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Sanani tanlang"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Kiritilgan sana"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Sana"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Kiritilgan sana: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Hech biri"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Sana xato: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Sana mavjud namunaga mos kelmaydi: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Sana kutilgan yillar oraligʻida emas: %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Taqvim kiritish rejimiga oʻtish"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Matn kiritish rejimiga oʻtish"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Keyingi yillarga varaqlang"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Avvalgi yillarga varaqlang"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Sanalarni tanlang"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Boshlanish sanasi"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Tugash sanasi"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Keyingi oyga varaqlang"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Avvalgi oyga varaqlang"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Xizmat doirasida"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Sanalarni kiriting"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Kiritilgan muddat yaroqsiz"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Surish dastagi"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Quyi ekranni yigʻish"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Quyi ekranni yopish"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Quyi ekranni yoyish"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Maslahat oynasi"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Maslahat oynasini koʻrsatish"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"TK"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"TO"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Tushdan oldin yoki keyinligini tanlang"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Soatni tanlang"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Daqiqani tanlang"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d soat"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d soat"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d daqiqa"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Daqiqa"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Soat"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"bir daqiqa"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"bir soat"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-vi/strings.xml b/compose/material3/material3/src/androidMain/res/values-vi/strings.xml
new file mode 100644
index 0000000..211355e
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-vi/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Hộp thoại"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Đã mở rộng"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Đã thu gọn"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Đóng"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Tìm kiếm"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Các đề xuất ở bên dưới"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Chọn ngày"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Ngày đã chọn"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Chuyển sang chọn năm"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Vuốt để chọn một năm hoặc nhấn để chuyển lại về chọn một ngày"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Chuyển sang tháng tiếp theo"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Chuyển về tháng trước"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Chuyển đến năm %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Lựa chọn hiện tại: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Không có"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Hôm nay"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Bộ chọn năm hiển thị"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Chọn ngày"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Ngày đã nhập"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Ngày"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Ngày đã nhập: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Không có"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Ngày không được phép: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Ngày không khớp với định dạng dự kiến: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Ngày không thuộc phạm vi năm dự kiến %1$s – %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Chuyển sang chế độ nhập lịch"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Chuyển sang chế độ nhập văn bản"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Cuộn để hiện những năm sau"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Cuộn để hiện những năm trước"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Chọn ngày"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Ngày bắt đầu"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Ngày kết thúc"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Cuộn để hiện tháng sau"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Cuộn để hiện tháng trước"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Trong khoảng"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Nhập ngày"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Phạm vi ngày đã nhập không hợp lệ"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Nút kéo"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Thu gọn bảng dưới cùng"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Đóng bảng dưới cùng"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Mở rộng bảng dưới cùng"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Chú giải công cụ"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Hiện chú giải công cụ"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"CH"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"SA"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Chọn SA hoặc CH"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Chọn giờ"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Chọn phút"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d giờ"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d giờ"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d phút"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Phút"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Giờ"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"nhập phút"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"nhập giờ"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zh-rCN/strings.xml b/compose/material3/material3/src/androidMain/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..bcb313d
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-zh-rCN/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"对话框"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"已展开"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"已收起"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"关闭"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"搜索"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"以下是搜索建议"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"选择日期"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"选定的日期"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"切换为选择年份"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"滑动可选择年份,点按可切换回选择日期"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"转到下个月"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"转到上个月"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"切换到年份:%1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"当前的选择:%1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"无"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"今天"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"年份选择器可见"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"选择日期"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"输入的日期"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"日期"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"输入的日期:%1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"无"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"日期无效:%1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"日期不符合格式要求:%1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"日期超出预期年份范围 %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"切换到日历输入模式"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"切换到文本字段输入模式"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"滚动即可显示之后的年份"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"滚动即可显示之前的年份"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"选择日期"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"开始日期"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"结束日期"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"滚动即可显示下个月"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"滚动即可显示上个月"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"在范围内"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"输入日期"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"输入的日期范围无效"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"拖动手柄"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"收起底部动作条"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"关闭底部动作条"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"展开底部动作条"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"提示"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"显示提示"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"下午"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"上午"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"选择上午或下午"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"选择小时"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"选择分钟"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d 点"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d 小时"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d 分钟"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"分钟"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"小时"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"输入分钟"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"输入小时"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zh-rHK/strings.xml b/compose/material3/material3/src/androidMain/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..c87746f
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-zh-rHK/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"對話框"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"已展開"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"已收合"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"關閉"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"搜尋"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"建議如下"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"選取日期"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"所選日期"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"切換為選取年份"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"滑動可選取年分,或可輕按返回選取日期"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"變更至下個月"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"變更至上個月"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"前往 %1$s 年"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"目前選項:%1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"無"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"今天"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"顯示年分挑選器"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"選取日期"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"已輸入的日期"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"日期"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"已輸入的日期:%1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"無"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"不允許的日期:%1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"日期格式不符:%1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"日期超出預期的年份範圍:%1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"切換至日曆輸入模式"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"切換至文字輸入模式"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"碌去顯示新啲嘅年份"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"碌去顯示舊啲嘅年份"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"選取日期"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"開始日期"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"結束日期"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"碌去顯示下一個月"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"碌去顯示上一個月"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"喺指定日期範圍內"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"輸入日期"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"輸入的日期範圍無效"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"拖曳控點"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"收合頁底面板"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"關閉頁底面板"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"展開頁底面板"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"提示"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"顯示提示"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"下午"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"上午"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"選取上午或下午"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"選取小時"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"選取分鐘"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d 點"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d 點"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d 分鐘"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"分鐘"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"小時"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"分鐘"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"小時"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zh-rTW/strings.xml b/compose/material3/material3/src/androidMain/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..c24a29a
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-zh-rTW/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"對話方塊"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"已展開"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"已收合"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"關閉"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"搜尋"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"建議如下"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"選取日期"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"所選日期"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"改為選取年份"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"滑動即可選取年分,也可輕觸返回選取日期"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"改成下個月"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"改成上個月"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"前往 %1$s 年"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"目前選項:%1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"無"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"今天"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"顯示年份挑選器"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"選取日期"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"輸入的日期"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"日期"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"輸入的日期:%1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"無"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"不允許的日期:%1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"日期格式不符:%1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"日期超出預期的年份範圍:%1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"切換至日曆輸入模式"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"切換至文字輸入模式"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"捲動即可顯示之後年分"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"捲動即可顯示先前年分"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"選取日期"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"開始日期"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"結束日期"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"捲動即可顯示下一個月"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"捲動即可顯示上一個月"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"在有效範圍內"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"輸入日期"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"輸入的日期範圍無效"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"拖曳控點"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"收合底部功能表"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"關閉底部功能表"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"展開底部功能表"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"工具提示"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"顯示工具提示"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"下午"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"上午"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"選取上午或下午"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"選取小時"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"選取分鐘數"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"%1$d 點"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"%1$d 時"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"%1$d 分鐘"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"分鐘"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"小時"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"分鐘"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"小時"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zu/strings.xml b/compose/material3/material3/src/androidMain/res/values-zu/strings.xml
new file mode 100644
index 0000000..f123626
--- /dev/null
+++ b/compose/material3/material3/src/androidMain/res/values-zu/strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  Copyright 2022 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="m3c_dialog" msgid="7617233117134790350">"Ibhokisi"</string>
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Kunwetshiwe"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Kugoqiwe"</string>
+    <string name="m3c_snackbar_dismiss" msgid="6152755701819882931">"Chitha"</string>
+    <string name="m3c_search_bar_search" msgid="6152806324422087846">"Sesha"</string>
+    <string name="m3c_suggestions_available" msgid="7655536806087401899">"Iziphakamiso ngezansi"</string>
+    <string name="m3c_date_picker_title" msgid="7430790972741451689">"Khetha usuku"</string>
+    <string name="m3c_date_picker_headline" msgid="7605002211875882969">"Usuku olukhethiwe"</string>
+    <string name="m3c_date_picker_switch_to_year_selection" msgid="791651718641787594">"Shintshela ekukhetheni unyaka"</string>
+    <string name="m3c_date_picker_switch_to_day_selection" msgid="395627960681594326">"Swayipha ukuze ukhethe unyaka, noma thepha ukuze ubuyele ekukhetheni usuku"</string>
+    <string name="m3c_date_picker_switch_to_next_month" msgid="7142101321095356500">"Shintshela kunyanga elandelayo"</string>
+    <string name="m3c_date_picker_switch_to_previous_month" msgid="228438865139394590">"Shintshela kunyanga edlule"</string>
+    <string name="m3c_date_picker_navigate_to_year_description" msgid="8436650776581492840">"Funa onyakeni %1$s"</string>
+    <string name="m3c_date_picker_headline_description" msgid="3664277305226978227">"Ukukhetha kwamanje: %1$s"</string>
+    <string name="m3c_date_picker_no_selection_description" msgid="5811000998184572395">"Lutho"</string>
+    <string name="m3c_date_picker_today_description" msgid="3199387177749801575">"Namuhla"</string>
+    <string name="m3c_date_picker_year_picker_pane_title" msgid="2068382232816991922">"Isikhethi sonyaka siyabonakala"</string>
+    <string name="m3c_date_input_title" msgid="7306227249789210568">"Khetha usuku"</string>
+    <string name="m3c_date_input_headline" msgid="8166741421776570875">"Usuku olufakiwe"</string>
+    <string name="m3c_date_input_label" msgid="2895559812010326913">"Usuku"</string>
+    <string name="m3c_date_input_headline_description" msgid="229313757840775812">"Usuku olufakiwe: %1$s"</string>
+    <string name="m3c_date_input_no_input_description" msgid="1237013946323089826">"Lutho"</string>
+    <string name="m3c_date_input_invalid_not_allowed" msgid="2521768508935305279">"Usuku aluvunyelwe: %1$s"</string>
+    <string name="m3c_date_input_invalid_for_pattern" msgid="6116910750161463197">"Usuku alufani nephethini elindelekile: %1$s"</string>
+    <string name="m3c_date_input_invalid_year_range" msgid="7052898923934555305">"Usuku lungaphandle kwebanga lonyaka elilindelekile %1$s - %2$s"</string>
+    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="1804346892470238807">"Shintshela kwimodi yokufaka yekhalenda"</string>
+    <string name="m3c_date_picker_switch_to_input_mode" msgid="2219746470065162704">"Shintshela kwimodi yokufaka yombhalo"</string>
+    <string name="m3c_date_picker_scroll_to_later_years" msgid="5727367015496556177">"Skrola ukuze ubonise iminyaka yakamuva"</string>
+    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="7813882352367152251">"Skrola ukuze ubonise iminyaka yangaphambilini"</string>
+    <string name="m3c_date_range_picker_title" msgid="3134165431120340385">"Khetha izinsuku"</string>
+    <string name="m3c_date_range_picker_start_headline" msgid="4665981448952749820">"Usuku lokuqala"</string>
+    <string name="m3c_date_range_picker_end_headline" msgid="4947636797751277713">"Usuku lokuphela"</string>
+    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="602077859540990149">"Skrola ukuze ubonise inyanga elandelayo"</string>
+    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4592174524846109496">"Skrola ukuze ubonise inyanga edlule"</string>
+    <string name="m3c_date_range_picker_day_in_range" msgid="2138321128465719402">"Ebangeni"</string>
+    <string name="m3c_date_range_input_title" msgid="3148384720560189467">"Faka izinsuku"</string>
+    <string name="m3c_date_range_input_invalid_range_input" msgid="3190049423327661366">"Okokufaka kwebanga losuku okungavumelekile"</string>
+    <string name="m3c_bottom_sheet_drag_handle_description" msgid="8403354765404029791">"Hudula isibambi"</string>
+    <string name="m3c_bottom_sheet_collapse_description" msgid="2988463736136100848">"Goqa ishidi eliphansi"</string>
+    <string name="m3c_bottom_sheet_dismiss_description" msgid="1555567894577437024">"Chitha ishidi eliphansi"</string>
+    <string name="m3c_bottom_sheet_expand_description" msgid="6670819569745899763">"Nweba ishidi eliphansi"</string>
+    <string name="m3c_tooltip_pane_description" msgid="5460405025248574620">"Ithulithiphu"</string>
+    <string name="m3c_tooltip_long_press_label" msgid="1805687647081129904">"Bonisa ithulithiphu"</string>
+    <string name="m3c_time_picker_pm" msgid="6616362054113087709">"PM"</string>
+    <string name="m3c_time_picker_am" msgid="2786685010796619560">"AM"</string>
+    <string name="m3c_time_picker_period_toggle_description" msgid="5865171949528594571">"Khetha u-AM noma u-PM"</string>
+    <string name="m3c_time_picker_hour_selection" msgid="8876759303332837035">"Khetha ihora"</string>
+    <string name="m3c_time_picker_minute_selection" msgid="4699133535056739733">"Khetha imizuzu"</string>
+    <string name="m3c_time_picker_hour_suffix" msgid="3458167507790628988">"Ngu-%1$d o\'clock"</string>
+    <string name="m3c_time_picker_hour_24h_suffix" msgid="9179527532316922345">"Amahora angu-%1$d"</string>
+    <string name="m3c_time_picker_minute_suffix" msgid="5064177921781937179">"Imizuzu engu-%1$d"</string>
+    <string name="m3c_time_picker_minute" msgid="4313071914266462005">"Umzuzu"</string>
+    <string name="m3c_time_picker_hour" msgid="2349193472625211372">"Ihora"</string>
+    <string name="m3c_time_picker_minute_text_field" msgid="7661234488295443182">"ngemizuzu"</string>
+    <string name="m3c_time_picker_hour_text_field" msgid="6973808109666874069">"ngehora"</string>
+</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values/strings.xml b/compose/material3/material3/src/androidMain/res/values/strings.xml
index a2c68b0..063958d 100644
--- a/compose/material3/material3/src/androidMain/res/values/strings.xml
+++ b/compose/material3/material3/src/androidMain/res/values/strings.xml
@@ -72,6 +72,8 @@
     Describes an invalid date range input when a user enters a start or end date [CHAR_LIMIT=NONE]
     -->
     <string name="m3c_date_range_input_invalid_range_input">Invalid date range input</string>
+    <!-- Spoken description of a bottom sheet -->
+    <string name="m3c_bottom_sheet_pane_title">Bottom Sheet</string>
     <!-- Names the drag handle visual for bottom sheet. -->
     <string name="m3c_bottom_sheet_drag_handle_description">Drag handle</string>
     <!-- Describes the collapse action for bottom sheet. -->
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/BottomSheetScaffold.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/BottomSheetScaffold.kt
index d0379dd..d81502f7 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/BottomSheetScaffold.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/BottomSheetScaffold.kt
@@ -24,9 +24,9 @@
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.requiredHeightIn
 import androidx.compose.foundation.layout.widthIn
-import androidx.compose.material3.SheetValue.PartiallyExpanded
 import androidx.compose.material3.SheetValue.Expanded
 import androidx.compose.material3.SheetValue.Hidden
+import androidx.compose.material3.SheetValue.PartiallyExpanded
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.remember
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Divider.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Divider.kt
index 73e47de..5da509f 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Divider.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Divider.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.material3
 
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.material3.tokens.DividerTokens
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt
index b67b61b..3d47224 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt
@@ -690,17 +690,20 @@
             onLabelMeasured(Size(it.width.toFloat(), it.height.toFloat()))
         }
 
+        // supporting text must be measured after other elements, but we
+        // reserve space for it using its intrinsic height as a heuristic
+        val supportingMeasurable = measurables.find { it.layoutId == SupportingId }
+        val supportingIntrinsicHeight =
+            supportingMeasurable?.minIntrinsicHeight(constraints.minWidth) ?: 0
+
         // measure text field
-        // On top, we offset either by default padding or by label's half height if its too big.
-        // On bottom, we offset to make room for supporting text.
-        // minHeight must not be set to 0 due to how foundation TextField treats zero minHeight.
         val topPadding = max(
             heightOrZero(labelPlaceable) / 2,
             paddingValues.calculateTopPadding().roundToPx()
         )
         val textConstraints = constraints.offset(
             horizontal = -occupiedSpaceHorizontally,
-            vertical = -bottomPadding - topPadding
+            vertical = -bottomPadding - topPadding - supportingIntrinsicHeight
         ).copy(minHeight = 0)
         val textFieldPlaceable =
             measurables.first { it.layoutId == TextFieldId }.measure(textConstraints)
@@ -735,8 +738,7 @@
         val supportingConstraints = relaxedConstraints.offset(
             vertical = -occupiedSpaceVertically
         ).copy(minHeight = 0, maxWidth = width)
-        val supportingPlaceable =
-            measurables.find { it.layoutId == SupportingId }?.measure(supportingConstraints)
+        val supportingPlaceable = supportingMeasurable?.measure(supportingConstraints)
         val supportingHeight = heightOrZero(supportingPlaceable)
 
         val totalHeight =
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Shapes.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Shapes.kt
index c0fcd04..2fed380 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Shapes.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Shapes.kt
@@ -25,8 +25,8 @@
 import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.ReadOnlyComposable
 import androidx.compose.runtime.staticCompositionLocalOf
-import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.graphics.RectangleShape
+import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.dp
 
 /**
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SheetDefaults.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SheetDefaults.kt
index 71dd117..141ffbf 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SheetDefaults.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SheetDefaults.kt
@@ -18,11 +18,14 @@
 
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.WindowInsetsSides
+import androidx.compose.foundation.layout.only
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
-import androidx.compose.material3.SheetValue.PartiallyExpanded
-import androidx.compose.material3.SheetValue.Hidden
 import androidx.compose.material3.SheetValue.Expanded
+import androidx.compose.material3.SheetValue.Hidden
+import androidx.compose.material3.SheetValue.PartiallyExpanded
 import androidx.compose.material3.tokens.ScrimTokens
 import androidx.compose.material3.tokens.SheetBottomTokens
 import androidx.compose.runtime.Composable
@@ -215,6 +218,15 @@
     }
 
     /**
+     * Attempt to snap synchronously. Snapping can happen synchronously when there is no other swipe
+     * transaction like a drag or an animation is progress. If there is another interaction in
+     * progress, the suspending [snapTo] overload needs to be used.
+     *
+     * @return true if the synchronous snap was successful, or false if we couldn't snap synchronous
+     */
+    internal fun trySnapTo(targetValue: SheetValue) = swipeableState.trySnapTo(targetValue)
+
+    /**
      * Find the closest anchor taking into account the velocity and settle at it with an animation.
      */
     internal suspend fun settle(velocity: Float) {
@@ -301,6 +313,13 @@
     val SheetPeekHeight = 56.dp
 
     /**
+     * Default insets to be used and consumed by the [ModalBottomSheet] window.
+     */
+    val windowInsets: WindowInsets
+        @Composable
+        get() = WindowInsets.systemBarsForVisualComponents.only(WindowInsetsSides.Vertical)
+
+    /**
      * The optional visual marker placed on top of a bottom sheet to indicate it may be dragged.
      */
     @Composable
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt
index da8bcc1..1bce0b5 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Slider.kt
@@ -27,10 +27,10 @@
 import androidx.compose.foundation.gestures.GestureCancellationException
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.PressGestureScope
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.gestures.draggable
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.horizontalDrag
 import androidx.compose.foundation.hoverable
 import androidx.compose.foundation.indication
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SnackbarHost.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SnackbarHost.kt
index 3e072a2..dce3b38 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SnackbarHost.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SnackbarHost.kt
@@ -41,12 +41,12 @@
 import androidx.compose.ui.semantics.dismiss
 import androidx.compose.ui.semantics.liveRegion
 import androidx.compose.ui.semantics.semantics
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
-import kotlin.coroutines.resume
 
 /**
  * State of the [SnackbarHost], which controls the queue and the current [Snackbar] being shown
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Strings.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Strings.kt
index dd8f671..285f8b4 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Strings.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Strings.kt
@@ -73,6 +73,7 @@
         val DateRangePickerDayInRange = Strings()
         val DateRangeInputTitle = Strings()
         val DateRangeInputInvalidRangeInput = Strings()
+        val BottomSheetPaneTitle = Strings()
         val BottomSheetDragHandleDescription = Strings()
         val BottomSheetPartialExpandDescription = Strings()
         val BottomSheetDismissDescription = Strings()
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SwipeToDismiss.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SwipeToDismiss.kt
index 271d0cf..dfd656f 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SwipeToDismiss.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/SwipeToDismiss.kt
@@ -27,8 +27,8 @@
 import androidx.compose.material3.DismissValue.DismissedToEnd
 import androidx.compose.material3.DismissValue.DismissedToStart
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.saveable.Saver
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.saveable.Saver
 import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalLayoutDirection
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Swipeable.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Swipeable.kt
index 8ebe654..3155cfd 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Swipeable.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Swipeable.kt
@@ -53,16 +53,16 @@
 import androidx.compose.ui.unit.Velocity
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.lerp
+import kotlin.math.PI
+import kotlin.math.abs
+import kotlin.math.sign
+import kotlin.math.sin
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.take
 import kotlinx.coroutines.launch
-import kotlin.math.PI
-import kotlin.math.abs
-import kotlin.math.sign
-import kotlin.math.sin
 
 /**
  * State of the [swipeable] modifier.
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tab.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tab.kt
index 31ab35e..b1cbd6f 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tab.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tab.kt
@@ -52,7 +52,6 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
-
 import kotlin.math.max
 
 /**
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt
index 2cb2dc2..039d06c 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt
@@ -678,13 +678,18 @@
         val labelPlaceable =
             measurables.find { it.layoutId == LabelId }?.measure(labelConstraints)
 
+        // supporting text must be measured after other elements, but we
+        // reserve space for it using its intrinsic height as a heuristic
+        val supportingMeasurable = measurables.find { it.layoutId == SupportingId }
+        val supportingIntrinsicHeight =
+            supportingMeasurable?.minIntrinsicHeight(constraints.minWidth) ?: 0
+
         // measure input field
         val effectiveTopOffset = topPaddingValue + heightOrZero(labelPlaceable)
-        val verticalConstraintOffset = -effectiveTopOffset - bottomPaddingValue
         val textFieldConstraints = constraints
             .copy(minHeight = 0)
             .offset(
-                vertical = verticalConstraintOffset,
+                vertical = -effectiveTopOffset - bottomPaddingValue - supportingIntrinsicHeight,
                 horizontal = -occupiedSpaceHorizontally
             )
         val textFieldPlaceable = measurables
@@ -717,8 +722,7 @@
         val supportingConstraints = looseConstraints.offset(
             vertical = -occupiedSpaceVertically
         ).copy(minHeight = 0, maxWidth = width)
-        val supportingPlaceable =
-            measurables.find { it.layoutId == SupportingId }?.measure(supportingConstraints)
+        val supportingPlaceable = supportingMeasurable?.measure(supportingConstraints)
         val supportingHeight = heightOrZero(supportingPlaceable)
 
         val totalHeight = calculateHeight(
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Typography.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Typography.kt
index fe45135..7b6273b 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Typography.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Typography.kt
@@ -17,10 +17,10 @@
 package androidx.compose.material3
 
 import androidx.compose.material3.tokens.TypographyKeyTokens
+import androidx.compose.material3.tokens.TypographyTokens
 import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.staticCompositionLocalOf
 import androidx.compose.ui.text.TextStyle
-import androidx.compose.material3.tokens.TypographyTokens
 
 /**
  * The Material Design type scale includes a range of contrasting styles that support the needs of
diff --git a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Strings.desktop.kt b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Strings.desktop.kt
index 2de7b31..81c26dd 100644
--- a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Strings.desktop.kt
+++ b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Strings.desktop.kt
@@ -18,7 +18,6 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ReadOnlyComposable
-
 import java.util.Locale
 
 @Composable
@@ -69,6 +68,7 @@
         Strings.DateRangePickerDayInRange -> "In range"
         Strings.DateRangeInputTitle -> "Enter dates"
         Strings.DateRangeInputInvalidRangeInput -> "Invalid date range input"
+        Strings.BottomSheetPaneTitle -> "Bottom Sheet"
         Strings.BottomSheetDragHandleDescription -> "Drag Handle"
         Strings.BottomSheetPartialExpandDescription -> "Collapse bottom sheet"
         Strings.BottomSheetDismissDescription -> "Dismiss bottom sheet"
diff --git a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/SystemBarsDefaultInsets.desktop.kt b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/SystemBarsDefaultInsets.desktop.kt
index fe5ca33..c48c446 100644
--- a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/SystemBarsDefaultInsets.desktop.kt
+++ b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/SystemBarsDefaultInsets.desktop.kt
@@ -17,8 +17,8 @@
 package androidx.compose.material3
 
 import androidx.compose.foundation.layout.WindowInsets
-import androidx.compose.ui.unit.dp
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.unit.dp
 
 internal actual val WindowInsets.Companion.systemBarsForVisualComponents: WindowInsets
     @Composable
diff --git a/compose/runtime/OWNERS b/compose/runtime/OWNERS
index a9c5fa6..1d23419 100644
--- a/compose/runtime/OWNERS
+++ b/compose/runtime/OWNERS
@@ -3,6 +3,7 @@
 chuckj@google.com
 lelandr@google.com
 anbailey@google.com
+ashikov@google.com
 
 # Per-file for Playground infra
 per-file settings.gradle = yboyar@google.com, dustinlam@google.com, rahulrav@google.com
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetector.kt
index 8f8df7f..373c6f1 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetector.kt
@@ -31,8 +31,8 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
-import org.jetbrains.uast.UCallExpression
 import java.util.EnumSet
+import org.jetbrains.uast.UCallExpression
 
 /**
  * [Detector] that checks `async` and `launch` calls to make sure they don't happen inside the
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetector.kt
index 7688c4f..024e954 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetector.kt
@@ -33,6 +33,7 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.impl.compiled.ClsMethodImpl
+import java.util.EnumSet
 import kotlinx.metadata.KmClassifier
 import org.jetbrains.kotlin.psi.KtNamedFunction
 import org.jetbrains.uast.UCallExpression
@@ -40,7 +41,6 @@
 import org.jetbrains.uast.UTypeReferenceExpression
 import org.jetbrains.uast.resolveToUElement
 import org.jetbrains.uast.toUElement
-import java.util.EnumSet
 
 /**
  * [Detector] that checks calls to Flow operator functions (such as map) to make sure they don't
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableLambdaParameterDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableLambdaParameterDetector.kt
index 1ed4cd9..5993c93 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableLambdaParameterDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableLambdaParameterDetector.kt
@@ -30,13 +30,13 @@
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
+import java.util.EnumSet
 import org.jetbrains.kotlin.psi.KtFunctionType
 import org.jetbrains.kotlin.psi.KtNullableType
 import org.jetbrains.kotlin.psi.KtParameter
 import org.jetbrains.uast.UElement
 import org.jetbrains.uast.UMethod
 import org.jetbrains.uast.UParameter
-import java.util.EnumSet
 
 /**
  * [Detector] that checks composable lambda parameters inside composable functions for
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableNamingDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableNamingDetector.kt
index 1bbfff0..c7be5bf 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableNamingDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableNamingDetector.kt
@@ -30,9 +30,9 @@
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
-import org.jetbrains.uast.UMethod
 import java.util.EnumSet
 import java.util.Locale
+import org.jetbrains.uast.UMethod
 
 /**
  * [Detector] that checks the naming of @Composable functions for consistency with guidelines.
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetector.kt
index 8673429..ce42adb 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetector.kt
@@ -32,9 +32,9 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.USimpleNameReferenceExpression
 import org.jetbrains.uast.tryResolve
-import java.util.EnumSet
 
 /**
  * [Detector] that checks calls to StateFlow.value to make sure they don't happen inside the body
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/CompositionLocalNamingDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/CompositionLocalNamingDetector.kt
index ef2fca4..dee4098 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/CompositionLocalNamingDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/CompositionLocalNamingDetector.kt
@@ -29,12 +29,12 @@
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
+import java.util.EnumSet
 import org.jetbrains.kotlin.psi.KtParameter
 import org.jetbrains.kotlin.psi.KtProperty
 import org.jetbrains.uast.UElement
 import org.jetbrains.uast.UParameter
 import org.jetbrains.uast.UVariable
-import java.util.EnumSet
 
 /**
  * [Detector] that checks the naming of CompositionLocal properties for consistency with guidelines.
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetector.kt
index 896c7bf..4285eca 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetector.kt
@@ -29,13 +29,13 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.kotlin.descriptors.containingPackage
 import org.jetbrains.kotlin.psi.KtExpression
 import org.jetbrains.kotlin.types.KotlinType
 import org.jetbrains.kotlin.types.typeUtil.supertypes
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.kotlin.KotlinUastResolveProviderService
-import java.util.EnumSet
 
 /**
  * [Detector] that checks `mutableStateOf` calls to warn if the type is a mutable collection, as
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ProduceStateDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ProduceStateDetector.kt
index a18642d..2afb1ab 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ProduceStateDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/ProduceStateDetector.kt
@@ -31,12 +31,12 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.USimpleNameReferenceExpression
 import org.jetbrains.uast.getParameterForArgument
 import org.jetbrains.uast.tryResolve
 import org.jetbrains.uast.visitor.AbstractUastVisitor
-import java.util.EnumSet
 
 /**
  * [Detector] that checks calls to produceState, to make sure that the producer lambda writes to
diff --git a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RememberDetector.kt b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RememberDetector.kt
index 559d08c..354a305 100644
--- a/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RememberDetector.kt
+++ b/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/RememberDetector.kt
@@ -30,10 +30,10 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
-import org.jetbrains.uast.UCallExpression
 import java.util.EnumSet
 import org.jetbrains.kotlin.psi.KtCallExpression
 import org.jetbrains.kotlin.psi.KtLambdaExpression
+import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.UExpression
 import org.jetbrains.uast.toUElementOfType
 
diff --git a/compose/runtime/runtime-livedata/samples/build.gradle b/compose/runtime/runtime-livedata/samples/build.gradle
index 78130f2..436d6e9 100644
--- a/compose/runtime/runtime-livedata/samples/build.gradle
+++ b/compose/runtime/runtime-livedata/samples/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Livedata Interop Samples"
+    name = "Compose UI Livedata Interop Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Livedata Interop System"
diff --git a/compose/runtime/runtime-rxjava2/samples/build.gradle b/compose/runtime/runtime-rxjava2/samples/build.gradle
index d73b254..5c9082f4 100644
--- a/compose/runtime/runtime-rxjava2/samples/build.gradle
+++ b/compose/runtime/runtime-rxjava2/samples/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose RxJava 2 Integration Samples"
+    name = "Compose RxJava 2 Integration Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose RxJava 2 Integration System"
diff --git a/compose/runtime/runtime-rxjava3/samples/build.gradle b/compose/runtime/runtime-rxjava3/samples/build.gradle
index aa111a0..9da055d 100644
--- a/compose/runtime/runtime-rxjava3/samples/build.gradle
+++ b/compose/runtime/runtime-rxjava3/samples/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose RxJava 3 Integration Samples"
+    name = "Compose RxJava 3 Integration Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2020"
     description = "Contains the sample code for the Androidx Compose RxJava 3 Integration System"
diff --git a/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetector.kt b/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetector.kt
index 146c33a..c96aa91 100644
--- a/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetector.kt
+++ b/compose/runtime/runtime-saveable-lint/src/main/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetector.kt
@@ -34,8 +34,8 @@
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiArrayType
 import com.intellij.psi.PsiMethod
-import org.jetbrains.uast.UCallExpression
 import java.util.EnumSet
+import org.jetbrains.uast.UCallExpression
 
 /**
  * [Detector] that checks `rememberSaveable` calls to make sure that a `Saver` is not passed to
diff --git a/compose/runtime/runtime-saveable/samples/build.gradle b/compose/runtime/runtime-saveable/samples/build.gradle
index 8483522..c69d961 100644
--- a/compose/runtime/runtime-saveable/samples/build.gradle
+++ b/compose/runtime/runtime-saveable/samples/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Saved Instance State System Samples"
+    name = "Compose Saved Instance State System Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose Saved Instance State System"
diff --git a/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/ActivityRecreationTest.kt b/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/ActivityRecreationTest.kt
index aaec57b..ab8811c 100644
--- a/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/ActivityRecreationTest.kt
+++ b/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/ActivityRecreationTest.kt
@@ -37,9 +37,9 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.random.Random
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.random.Random
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/RememberSaveableTest.kt b/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/RememberSaveableTest.kt
index 1d15b6c..ceffeeb 100644
--- a/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/RememberSaveableTest.kt
+++ b/compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/RememberSaveableTest.kt
@@ -26,13 +26,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/ComposeBenchmark.kt b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/ComposeBenchmark.kt
index 56ef072..147cc7b 100644
--- a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/ComposeBenchmark.kt
+++ b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/ComposeBenchmark.kt
@@ -21,9 +21,9 @@
 import androidx.compose.foundation.layout.padding
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
diff --git a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/DbMonsterBenchmark.kt b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/DbMonsterBenchmark.kt
index 5f134b7..ad91d96 100644
--- a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/DbMonsterBenchmark.kt
+++ b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/DbMonsterBenchmark.kt
@@ -25,12 +25,12 @@
 import androidx.test.annotation.UiThreadTest
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import kotlin.random.Random
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.FixMethodOrder
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.MethodSorters
-import kotlin.random.Random
 
 /**
  * This is an implementation of a classic web perf benchmark "dbmonster". This can provide insight into apps with
diff --git a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SiblingBenchmark.kt b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SiblingBenchmark.kt
index 391d120..da437421 100644
--- a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SiblingBenchmark.kt
+++ b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SiblingBenchmark.kt
@@ -25,11 +25,11 @@
 import androidx.compose.ui.test.ExperimentalTestApi
 import androidx.test.annotation.UiThreadTest
 import androidx.test.filters.LargeTest
+import kotlin.random.Random
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.random.Random
 
 /**
  * Managing “lists” of components that are siblings in Compose and other declarative reactive frameworks ends up
diff --git a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SnapshotStateObserverBenchmark.kt b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SnapshotStateObserverBenchmark.kt
index 4fe328d..055b6f9 100644
--- a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SnapshotStateObserverBenchmark.kt
+++ b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SnapshotStateObserverBenchmark.kt
@@ -21,8 +21,8 @@
 import android.os.Looper
 import androidx.benchmark.junit4.measureRepeated
 import androidx.compose.runtime.MutableState
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.derivedStateOf
+import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.runtime.snapshots.SnapshotStateObserver
 import androidx.test.ext.junit.runners.AndroidJUnit4
diff --git a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/deeptree/DeepTree.kt b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/deeptree/DeepTree.kt
index 45e8e80..c481a56 100644
--- a/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/deeptree/DeepTree.kt
+++ b/compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/deeptree/DeepTree.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.runtime.benchmark.deeptree
 
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxHeight
diff --git a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ComposeIntoTests.kt b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ComposeIntoTests.kt
index e22971c..79df8bd 100644
--- a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ComposeIntoTests.kt
+++ b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ComposeIntoTests.kt
@@ -21,10 +21,6 @@
 import androidx.core.os.HandlerCompat
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import org.junit.Assert.assertEquals
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.lang.ref.PhantomReference
 import java.lang.ref.ReferenceQueue
 import java.util.concurrent.CountDownLatch
@@ -32,6 +28,10 @@
 import kotlin.test.assertNotNull
 import kotlin.test.assertNull
 import kotlin.test.assertTrue
+import org.junit.Assert.assertEquals
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @RunWith(AndroidJUnit4::class)
 class ComposeIntoTests : BaseComposeTest() {
diff --git a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/EmittableComposer.kt b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/EmittableComposer.kt
index f34d918..1ab873f 100644
--- a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/EmittableComposer.kt
+++ b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/EmittableComposer.kt
@@ -17,8 +17,8 @@
 
 import android.view.View
 import android.widget.Button
-import android.widget.TextView
 import android.widget.LinearLayout
+import android.widget.TextView
 import androidx.compose.ui.viewinterop.AndroidView
 
 @Suppress("UNUSED_PARAMETER")
diff --git a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/FlowAdapterTest.kt b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/FlowAdapterTest.kt
index fdb2a56..7d7a083 100644
--- a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/FlowAdapterTest.kt
+++ b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/FlowAdapterTest.kt
@@ -20,6 +20,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.coroutines.CoroutineContext
+import kotlin.test.assertNotNull
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.MutableSharedFlow
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -27,8 +29,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.coroutines.CoroutineContext
-import kotlin.test.assertNotNull
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ProduceStateTests.kt b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ProduceStateTests.kt
index a550adb..ad0091f 100644
--- a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ProduceStateTests.kt
+++ b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/ProduceStateTests.kt
@@ -16,14 +16,14 @@
 
 package androidx.compose.runtime
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
+import kotlin.test.assertEquals
 import kotlinx.coroutines.channels.Channel
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import kotlin.test.assertEquals
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SideEffectTests.kt b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SideEffectTests.kt
index f156f72..da25ff8 100644
--- a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SideEffectTests.kt
+++ b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SideEffectTests.kt
@@ -19,18 +19,18 @@
 import android.view.Choreographer
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import kotlinx.coroutines.channels.Channel
-import kotlinx.coroutines.channels.ReceiveChannel
-import kotlinx.coroutines.channels.SendChannel
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import kotlin.test.assertEquals
 import kotlin.test.assertNotEquals
 import kotlin.test.assertNotNull
 import kotlin.test.assertSame
 import kotlin.test.assertTrue
 import kotlin.test.fail
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.ReceiveChannel
+import kotlinx.coroutines.channels.SendChannel
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @Suppress("UNUSED_VARIABLE")
 @MediumTest
diff --git a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt
index 09cdb86..243e11a 100644
--- a/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt
+++ b/compose/runtime/runtime/integration-tests/src/androidAndroidTest/kotlin/androidx/compose/runtime/SuspendingEffectsTests.kt
@@ -19,6 +19,12 @@
 import android.view.Choreographer
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertNotEquals
+import kotlin.test.assertNotNull
+import kotlin.test.assertSame
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.isActive
@@ -26,12 +32,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.test.assertEquals
-import kotlin.test.assertFalse
-import kotlin.test.assertNotEquals
-import kotlin.test.assertNotNull
-import kotlin.test.assertSame
-import kotlin.test.assertTrue
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/runtime/runtime/samples/build.gradle b/compose/runtime/runtime/samples/build.gradle
index 376b851..a8c279f 100644
--- a/compose/runtime/runtime/samples/build.gradle
+++ b/compose/runtime/runtime/samples/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Runtime Samples"
+    name = "Compose Runtime Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Compose runtime"
diff --git a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/CustomTreeCompositionSamples.kt b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/CustomTreeCompositionSamples.kt
index 688760c..28d0089 100644
--- a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/CustomTreeCompositionSamples.kt
+++ b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/CustomTreeCompositionSamples.kt
@@ -19,9 +19,9 @@
 import androidx.annotation.Sampled
 import androidx.compose.runtime.AbstractApplier
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.ComposeNode
 import androidx.compose.runtime.Composition
 import androidx.compose.runtime.CompositionContext
-import androidx.compose.runtime.ComposeNode
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
diff --git a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/ModelSamples.kt b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/ModelSamples.kt
index d1c516f..7080f39 100644
--- a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/ModelSamples.kt
+++ b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/ModelSamples.kt
@@ -18,9 +18,9 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.material.Button
 import androidx.compose.material.Text
-import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
diff --git a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateListSamples.kt b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateListSamples.kt
index db5044c..24f0b6f 100644
--- a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateListSamples.kt
+++ b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateListSamples.kt
@@ -20,9 +20,9 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.material.Button
 import androidx.compose.material.Text
-import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateListOf
diff --git a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateMapSample.kt b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateMapSample.kt
index 9d8b1ec3..8a6f4df 100644
--- a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateMapSample.kt
+++ b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/MutableStateMapSample.kt
@@ -20,9 +20,9 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.material.Button
 import androidx.compose.material.Text
-import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateMapOf
diff --git a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/SnapshotSamples.kt b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/SnapshotSamples.kt
index c6b6ac0..937674e 100644
--- a/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/SnapshotSamples.kt
+++ b/compose/runtime/runtime/samples/src/main/java/androidx/compose/runtime/samples/SnapshotSamples.kt
@@ -21,8 +21,8 @@
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
-import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.runtime.snapshotFlow
+import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.runtime.snapshots.asContextElement
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.collect
diff --git a/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/snapshots/ParcelableMutableStateTests.kt b/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/snapshots/ParcelableMutableStateTests.kt
index dbb8932..42e45c5 100644
--- a/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/snapshots/ParcelableMutableStateTests.kt
+++ b/compose/runtime/runtime/src/androidAndroidTest/kotlin/androidx/compose/runtime/snapshots/ParcelableMutableStateTests.kt
@@ -23,10 +23,10 @@
 import androidx.compose.runtime.neverEqualPolicy
 import androidx.compose.runtime.referentialEqualityPolicy
 import androidx.compose.runtime.structuralEqualityPolicy
+import kotlin.test.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.test.assertEquals
 
 @RunWith(Parameterized::class)
 class ParcelableMutableStateTests(
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/BroadcastFrameClock.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/BroadcastFrameClock.kt
index cec11b2..1718d92 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/BroadcastFrameClock.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/BroadcastFrameClock.kt
@@ -17,10 +17,10 @@
 package androidx.compose.runtime
 
 import androidx.compose.runtime.snapshots.fastForEach
-import kotlinx.coroutines.CancellationException
-import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlin.coroutines.Continuation
 import kotlin.coroutines.resumeWithException
+import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * A simple frame clock.
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Effects.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Effects.kt
index 9efcc11..cfb0359 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Effects.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Effects.kt
@@ -17,12 +17,12 @@
 package androidx.compose.runtime
 
 import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.launch
-import kotlin.coroutines.EmptyCoroutineContext
-import kotlinx.coroutines.CancellationException
 
 /**
  * Schedule [effect] to run when the current composition completes successfully and applies
@@ -389,7 +389,11 @@
 private class LeftCompositionCancellationException : CancellationException(
     "The coroutine scope left the composition"
 ) {
-    override fun fillInStackTrace(): Throwable = this
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
 }
 
 /**
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Latch.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Latch.kt
index 6be6d1a..8bb366f 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Latch.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Latch.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.runtime
 
-import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlin.coroutines.Continuation
 import kotlin.coroutines.resume
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * A boolean open or closed latch for awaiting a single repeating event, like pending
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/MonotonicFrameClock.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/MonotonicFrameClock.kt
index 9fa259d..c6227a5 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/MonotonicFrameClock.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/MonotonicFrameClock.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.runtime
 
+import androidx.compose.runtime.internal.JvmDefaultWithCompatibility
 import kotlin.coroutines.CoroutineContext
 import kotlin.coroutines.coroutineContext
-import androidx.compose.runtime.internal.JvmDefaultWithCompatibility
 
 /**
  * Provides a time source for display frames and the ability to perform an action on the next frame.
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt
index d5d312b..1df196c 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt
@@ -715,17 +715,20 @@
             this,
             openSnapshots.clear(currentGlobalSnapshot.get().id)
         ) else null
-        val (observers, globalModified) = sync {
+
+        var observers = emptyList<(Set<Any>, Snapshot) -> Unit>()
+        var globalModified: IdentityArraySet<StateObject>? = null
+        sync {
             validateOpen(this)
             if (modified == null || modified.size == 0) {
                 closeLocked()
                 val previousGlobalSnapshot = currentGlobalSnapshot.get()
                 takeNewGlobalSnapshot(previousGlobalSnapshot, emptyLambda)
-                val globalModified = previousGlobalSnapshot.modified
-                if (!globalModified.isNullOrEmpty())
-                    applyObservers.toMutableList() to globalModified
-                else
-                    emptyList<(Set<Any>, Snapshot) -> Unit>() to null
+                val previousModified = previousGlobalSnapshot.modified
+                if (!previousModified.isNullOrEmpty()) {
+                    observers = applyObservers.toMutableList()
+                    globalModified = previousModified
+                }
             } else {
                 val previousGlobalSnapshot = currentGlobalSnapshot.get()
                 val result = innerApplyLocked(
@@ -739,11 +742,12 @@
 
                 // Take a new global snapshot that includes this one.
                 takeNewGlobalSnapshot(previousGlobalSnapshot, emptyLambda)
-                val globalModified = previousGlobalSnapshot.modified
+                val previousModified = previousGlobalSnapshot.modified
                 this.modified = null
                 previousGlobalSnapshot.modified = null
 
-                applyObservers.toMutableList() to globalModified
+                observers = applyObservers.toMutableList()
+                globalModified = previousModified
             }
         }
 
@@ -752,8 +756,9 @@
 
         // Notify any apply observers that changes applied were seen
         if (!globalModified.isNullOrEmpty()) {
+            val nonNullGlobalModified = globalModified!!
             observers.fastForEach {
-                it(globalModified, this)
+                it(nonNullGlobalModified, this)
             }
         }
 
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt
index 21e14a5..a0f493d 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt
@@ -16,15 +16,15 @@
 
 package androidx.compose.runtime.dispatch
 
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.Deferred
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.async
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
-import kotlin.test.Test
-import kotlin.test.assertEquals
-import kotlin.test.assertTrue
 
 @ExperimentalCoroutinesApi
 class BroadcastFrameClockTest {
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt
index 468fd71..2dc9e36 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt
@@ -26,12 +26,12 @@
 import androidx.compose.runtime.mock.expectNoChanges
 import androidx.compose.runtime.mock.revalidate
 import androidx.compose.runtime.mock.validate
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.launch
-import kotlin.test.assertEquals
 import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.launch
 
 // Create a normal (dynamic) CompositionLocal with a string value
 val LocalSomeTextComposition = compositionLocalOf { "Default" }
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt
index 04c5b531..edfbac3 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt
@@ -19,11 +19,10 @@
 package androidx.compose.runtime
 
 import androidx.compose.runtime.mock.CompositionTestScope
+import androidx.compose.runtime.mock.View
 import androidx.compose.runtime.mock.compositionTest
 import androidx.compose.runtime.tooling.CompositionData
 import androidx.compose.runtime.tooling.CompositionGroup
-import androidx.compose.runtime.mock.View
-
 import kotlin.test.Test
 
 class GroupSizeValidationTests {
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/LatchTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/LatchTest.kt
index 3367da5..041d795 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/LatchTest.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/LatchTest.kt
@@ -16,13 +16,13 @@
 
 package androidx.compose.runtime
 
+import kotlin.test.Test
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.withTimeout
-import kotlin.test.Test
-import kotlin.test.assertTrue
 
 @ExperimentalCoroutinesApi
 class LatchTest {
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt
index 8e7e8fc..13b1ba4 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt
@@ -17,6 +17,8 @@
 package androidx.compose.runtime
 
 import androidx.compose.runtime.snapshots.Snapshot
+import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.launchIn
@@ -24,8 +26,6 @@
 import kotlinx.coroutines.plus
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.yield
-import kotlin.test.Test
-import kotlin.test.assertEquals
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @Suppress("RemoveExplicitTypeArguments")
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt
index 15e98c8..4a3d14b 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt
@@ -22,14 +22,14 @@
 import androidx.compose.runtime.InternalComposeApi
 import androidx.compose.runtime.Recomposer
 import androidx.compose.runtime.snapshots.Snapshot
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.launch
+import kotlinx.coroutines.test.TestCoroutineScheduler
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.withContext
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
-import kotlinx.coroutines.test.TestCoroutineScheduler
 
 @OptIn(InternalComposeApi::class, ExperimentalCoroutinesApi::class)
 fun compositionTest(block: suspend CompositionTestScope.() -> Unit) = runTest {
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Views.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Views.kt
index a5617c9..8babf4b 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Views.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Views.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ComposeNode
-import androidx.compose.runtime.ReusableComposeNode
-import androidx.compose.runtime.NonRestartableComposable
 import androidx.compose.runtime.ComposeNodeLifecycleCallback
+import androidx.compose.runtime.NonRestartableComposable
+import androidx.compose.runtime.ReusableComposeNode
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.key
 import androidx.compose.runtime.rememberUpdatedState
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt
index 3457ab2..0100bb8 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt
@@ -24,9 +24,9 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
 import androidx.compose.runtime.snapshots.Snapshot.Companion.openSnapshotCount
-import kotlin.test.Ignore
 import kotlin.test.AfterTest
 import kotlin.test.BeforeTest
+import kotlin.test.Ignore
 import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertNull
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt
index 762d20c..58cdedd 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt
@@ -19,12 +19,12 @@
 import androidx.compose.runtime.ExperimentalComposeApi
 import kotlin.test.Test
 import kotlin.test.assertSame
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import kotlinx.coroutines.withContext
 
 @OptIn(ExperimentalComposeApi::class, ExperimentalCoroutinesApi::class)
 class SnapshotContextElementTests {
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt
index 886b51c..d788ffe 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt
@@ -17,18 +17,18 @@
 package androidx.compose.runtime.snapshots
 
 import androidx.compose.runtime.mutableStateListOf
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.test.runTest
 import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.channels.consumeEach
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.test.runTest
 import kotlinx.test.IgnoreJsTarget
 
 class SnapshotStateListTests {
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt
index be1db36..dab7a74 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt
@@ -19,18 +19,18 @@
 package androidx.compose.runtime.snapshots
 
 import androidx.compose.runtime.mutableStateMapOf
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.test.runTest
 import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.channels.consumeEach
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.test.runTest
 import kotlinx.test.IgnoreJsTarget
 
 class SnapshotStateMapTests {
diff --git a/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt
index 6e5c2d70..d6b657f 100644
--- a/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt
@@ -18,22 +18,22 @@
 package androidx.compose.runtime
 
 import androidx.compose.runtime.mock.EmptyApplier
-import androidx.compose.runtime.mock.compositionTest
 import androidx.compose.runtime.mock.Text
 import androidx.compose.runtime.mock.View
 import androidx.compose.runtime.mock.ViewApplier
+import androidx.compose.runtime.mock.compositionTest
 import androidx.compose.runtime.mock.expectChanges
 import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.runtime.snapshots.SnapshotStateObserver
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import kotlinx.coroutines.test.runTest
 import kotlin.concurrent.thread
 import kotlin.test.AfterTest
 import kotlin.test.BeforeTest
-import kotlinx.coroutines.delay
 import kotlin.test.Test
 import kotlin.test.assertEquals
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runTest
 
 @Stable
 @OptIn(InternalComposeApi::class)
diff --git a/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt
index b555bea..a9b8eba 100644
--- a/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt
+++ b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt
@@ -16,11 +16,11 @@
 
 package androidx.compose.runtime
 
-import kotlinx.coroutines.runBlocking
 import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertSame
+import kotlinx.coroutines.runBlocking
 
 class MonotonicFrameClockTest {
     @ExperimentalComposeApi
diff --git a/compose/ui/ui-geometry/src/test/kotlin/androidx/compose/ui/geometry/RectTest.kt b/compose/ui/ui-geometry/src/test/kotlin/androidx/compose/ui/geometry/RectTest.kt
index 927b408..a911875 100644
--- a/compose/ui/ui-geometry/src/test/kotlin/androidx/compose/ui/geometry/RectTest.kt
+++ b/compose/ui/ui-geometry/src/test/kotlin/androidx/compose/ui/geometry/RectTest.kt
@@ -16,12 +16,12 @@
 
 package androidx.compose.ui.geometry
 
+import kotlin.test.assertTrue
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertTrue
 
 @RunWith(JUnit4::class)
 class RectTest {
diff --git a/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/ColorDetector.kt b/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/ColorDetector.kt
index 16a8216..8e5e6e3 100644
--- a/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/ColorDetector.kt
+++ b/compose/ui/ui-graphics-lint/src/main/java/androidx/compose/ui/graphics/lint/ColorDetector.kt
@@ -30,9 +30,9 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.kotlin.KotlinULiteralExpression
-import java.util.EnumSet
 
 /**
  * [Detector] that checks hex Color definitions to ensure that they provide values for all four
diff --git a/compose/ui/ui-graphics/benchmark/src/main/java/androidx/compose/ui/graphics/benchmark/ImageVectorTestCase.kt b/compose/ui/ui-graphics/benchmark/src/main/java/androidx/compose/ui/graphics/benchmark/ImageVectorTestCase.kt
index 294542e..f635bf3 100644
--- a/compose/ui/ui-graphics/benchmark/src/main/java/androidx/compose/ui/graphics/benchmark/ImageVectorTestCase.kt
+++ b/compose/ui/ui-graphics/benchmark/src/main/java/androidx/compose/ui/graphics/benchmark/ImageVectorTestCase.kt
@@ -16,21 +16,21 @@
 
 package androidx.compose.ui.graphics.benchmark
 
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.testTag
-import androidx.compose.ui.draw.paint
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.testutils.LayeredComposeTestCase
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.paint
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.SolidColor
 import androidx.compose.ui.graphics.StrokeCap
 import androidx.compose.ui.graphics.StrokeJoin
 import androidx.compose.ui.graphics.painter.Painter
-import androidx.compose.ui.graphics.vector.PathData
 import androidx.compose.ui.graphics.vector.ImageVector
-import androidx.compose.foundation.layout.size
-import androidx.compose.testutils.LayeredComposeTestCase
+import androidx.compose.ui.graphics.vector.PathData
 import androidx.compose.ui.graphics.vector.rememberVectorPainter
+import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.unit.dp
 
diff --git a/compose/ui/ui-graphics/benchmark/test/src/androidTest/java/androidx/compose/ui/graphics/benchmark/test/ImageVectorTest.kt b/compose/ui/ui-graphics/benchmark/test/src/androidTest/java/androidx/compose/ui/graphics/benchmark/test/ImageVectorTest.kt
index e7ef620..331886e 100644
--- a/compose/ui/ui-graphics/benchmark/test/src/androidTest/java/androidx/compose/ui/graphics/benchmark/test/ImageVectorTest.kt
+++ b/compose/ui/ui-graphics/benchmark/test/src/androidTest/java/androidx/compose/ui/graphics/benchmark/test/ImageVectorTest.kt
@@ -39,12 +39,12 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
+import kotlin.math.roundToInt
 import org.junit.Assert
 import org.junit.Assert.assertEquals
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 /**
  * Test to ensure that [XmlVectorTestCase] and [ProgrammaticVectorTestCase] have an identical pixel
diff --git a/compose/ui/ui-graphics/samples/build.gradle b/compose/ui/ui-graphics/samples/build.gradle
index b255806..15643a9 100644
--- a/compose/ui/ui-graphics/samples/build.gradle
+++ b/compose/ui/ui-graphics/samples/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Graphics Components Samples"
+    name = "Compose UI Graphics Components Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Graphics Components"
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidBlendModeTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidBlendModeTest.kt
index e5f71d0..25472a9 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidBlendModeTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidBlendModeTest.kt
@@ -18,6 +18,7 @@
 
 import android.graphics.PorterDuff
 import android.os.Build
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
@@ -25,7 +26,6 @@
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidCanvasTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidCanvasTest.kt
index c8fcfa2..d849eb1 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidCanvasTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidCanvasTest.kt
@@ -36,14 +36,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotEquals
+import org.junit.Assert.assertTrue
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import org.junit.Assert.assertTrue
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidMatrixTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidMatrixTest.kt
index a99ffed..d83241e 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidMatrixTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidMatrixTest.kt
@@ -16,13 +16,13 @@
 
 package androidx.compose.ui.graphics
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import org.junit.Assert.assertTrue
 
 private const val delta = 0.01f
 
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidTileModeTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidTileModeTest.kt
index 9bf63e5..a08d3dd 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidTileModeTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidTileModeTest.kt
@@ -17,14 +17,14 @@
 package androidx.compose.ui.graphics
 
 import android.os.Build
-import androidx.test.filters.SmallTest
-import org.junit.Test
-import org.junit.runner.RunWith
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
+import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ImageBitmapTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ImageBitmapTest.kt
index ab73407..0d59a3f 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ImageBitmapTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ImageBitmapTest.kt
@@ -17,12 +17,12 @@
 package androidx.compose.ui.graphics
 
 import androidx.compose.ui.graphics.colorspace.ColorSpaces
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PaintTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PaintTest.kt
index 659b84e..2c61d09 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PaintTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PaintTest.kt
@@ -16,14 +16,14 @@
 
 package androidx.compose.ui.graphics
 
-import androidx.test.filters.SmallTest
-import org.junit.Assert.assertTrue
-import org.junit.Test
-import org.junit.runner.RunWith
 import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertSame
+import org.junit.Assert.assertTrue
 import org.junit.Assert.fail
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PathTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PathTest.kt
index def70c3..a51bfb3 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PathTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PathTest.kt
@@ -19,14 +19,14 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.Size
-import androidx.test.filters.SmallTest
-import org.junit.Assert.assertEquals
-import org.junit.Test
-import org.junit.runner.RunWith
 import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
 import kotlin.math.PI
+import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PixelMapTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PixelMapTest.kt
index a733508..f7cb47c 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PixelMapTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/PixelMapTest.kt
@@ -17,11 +17,11 @@
 package androidx.compose.ui.graphics
 
 import androidx.compose.ui.geometry.Rect
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectHelperTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectHelperTest.kt
index 8c20469..51f9188 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectHelperTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectHelperTest.kt
@@ -18,11 +18,11 @@
 
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.unit.IntRect
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectangleShapeTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectangleShapeTest.kt
index bc7919f..7ed3e90 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectangleShapeTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/RectangleShapeTest.kt
@@ -20,11 +20,11 @@
 import androidx.compose.ui.geometry.toRect
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.LayoutDirection
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ShaderTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ShaderTest.kt
index a1c9071..1386ef1 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ShaderTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/ShaderTest.kt
@@ -24,12 +24,12 @@
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import org.junit.Assert.assertEquals
-import org.junit.Test
-import org.junit.runner.RunWith
 import kotlin.math.roundToInt
+import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/drawscope/DrawScopeTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/drawscope/DrawScopeTest.kt
index 658f78c..213e383 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/drawscope/DrawScopeTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/drawscope/DrawScopeTest.kt
@@ -44,12 +44,12 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SmallTest
+import kotlin.math.roundToInt
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/BitmapPainterTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/BitmapPainterTest.kt
index 489d888..ca0a142 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/BitmapPainterTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/BitmapPainterTest.kt
@@ -30,13 +30,13 @@
 import androidx.compose.ui.graphics.toPixelMap
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/PainterTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/PainterTest.kt
index 36e7215..ebd4c8e 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/PainterTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/painter/PainterTest.kt
@@ -29,13 +29,13 @@
 import androidx.compose.ui.graphics.drawscope.DrawScope
 import androidx.compose.ui.graphics.toPixelMap
 import androidx.compose.ui.unit.LayoutDirection
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/Canvas.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/Canvas.kt
index 9dd8132..64d8783 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/Canvas.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/Canvas.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
+import androidx.compose.ui.graphics.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.graphics.internal.JvmDefaultWithCompatibility
 
 /**
  * Create a new Canvas instance that targets its drawing commands
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ColorFilter.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ColorFilter.kt
index 91bef45..6d45d4d 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ColorFilter.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ColorFilter.kt
@@ -59,9 +59,8 @@
          * A lighting ColorFilter is defined by two parameters, one used to multiply the source
          * color and one used to add to the source color
          *
-         * @param multiply Color that will be added to the source color when the color
-         *          filter is applied
-         * @param add Color used to multiply the source color when the color filter is applied.
+         * @param multiply Color used to multiply the source color when the color filter is applied.
+         * @param add Color that will be added to the source color when the color filter is applied.
          */
         @Stable
         fun lighting(multiply: Color, add: Color): ColorFilter =
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawScope.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawScope.kt
index 5751016..15f30fe 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawScope.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawScope.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.graphics.drawscope
 
-import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.CornerRadius
+import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.center
 import androidx.compose.ui.graphics.BlendMode
@@ -35,12 +35,12 @@
 import androidx.compose.ui.graphics.StrokeCap
 import androidx.compose.ui.graphics.StrokeJoin
 import androidx.compose.ui.graphics.degrees
+import androidx.compose.ui.graphics.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.center
-import androidx.compose.ui.graphics.internal.JvmDefaultWithCompatibility
 
 /**
  * Simultaneously translate the [DrawScope] coordinate space by [left] and [top] as well as modify
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawTransform.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawTransform.kt
index 1cfd4d9..0aedc6ff 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawTransform.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/DrawTransform.kt
@@ -19,8 +19,8 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.graphics.ClipOp
-import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.Matrix
+import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.degrees
 import androidx.compose.ui.graphics.internal.JvmDefaultWithCompatibility
 
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/EmptyCanvas.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/EmptyCanvas.kt
index e09df38..a22662d 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/EmptyCanvas.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/drawscope/EmptyCanvas.kt
@@ -22,11 +22,11 @@
 import androidx.compose.ui.graphics.Canvas
 import androidx.compose.ui.graphics.ClipOp
 import androidx.compose.ui.graphics.ImageBitmap
+import androidx.compose.ui.graphics.Matrix
 import androidx.compose.ui.graphics.Paint
 import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.PointMode
 import androidx.compose.ui.graphics.Vertices
-import androidx.compose.ui.graphics.Matrix
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
 
diff --git a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/BlendModeTest.kt b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/BlendModeTest.kt
index 08f8bb8..38790bd 100644
--- a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/BlendModeTest.kt
+++ b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/BlendModeTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.graphics
 
-import kotlin.test.assertEquals
 import kotlin.test.Test
+import kotlin.test.assertEquals
 
 class BlendModeTest {
 
diff --git a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ClipOpTest.kt b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ClipOpTest.kt
index 3377989..da54628 100644
--- a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ClipOpTest.kt
+++ b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ClipOpTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.graphics
 
-import kotlin.test.assertEquals
 import kotlin.test.Test
+import kotlin.test.assertEquals
 
 class ClipOpTest {
 
diff --git a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ColorMatrixTest.kt b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ColorMatrixTest.kt
index 9c0338c..1a2e8fa 100644
--- a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ColorMatrixTest.kt
+++ b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/ColorMatrixTest.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.graphics
 
 import kotlin.test.BeforeTest
-import kotlin.test.assertEquals
 import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlin.test.assertTrue
 
 class ColorMatrixTest {
diff --git a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/MatrixTest.kt b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/MatrixTest.kt
index f4b7e7b..957d351 100644
--- a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/MatrixTest.kt
+++ b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/MatrixTest.kt
@@ -19,12 +19,12 @@
 import androidx.compose.ui.geometry.MutableRect
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
+import kotlin.math.abs
+import kotlin.math.sqrt
 import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
-import kotlin.math.abs
-import kotlin.math.sqrt
 
 class MatrixTest {
     @Test
diff --git a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/colorspace/ColorModelTest.kt b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/colorspace/ColorModelTest.kt
index 337146b..914c15f 100644
--- a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/colorspace/ColorModelTest.kt
+++ b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/colorspace/ColorModelTest.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.graphics.colorspace
 
 import androidx.compose.ui.util.packInts
-import kotlin.test.assertEquals
 import kotlin.test.Test
+import kotlin.test.assertEquals
 
 class ColorModelTest {
 
diff --git a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/vector/PathParserTest.kt b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/vector/PathParserTest.kt
index 31ff184..fc55c77 100644
--- a/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/vector/PathParserTest.kt
+++ b/compose/ui/ui-graphics/src/commonTest/kotlin/androidx/compose/ui/graphics/vector/PathParserTest.kt
@@ -23,8 +23,8 @@
 import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.PathFillType
 import androidx.compose.ui.graphics.PathOperation
-import kotlin.test.assertEquals
 import kotlin.test.Test
+import kotlin.test.assertEquals
 
 class PathParserTest {
     @Test
diff --git a/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageAsset.desktop.kt b/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageAsset.desktop.kt
index fd0bd46..96e7808 100644
--- a/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageAsset.desktop.kt
+++ b/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageAsset.desktop.kt
@@ -16,10 +16,10 @@
 
 package androidx.compose.ui.graphics
 
-import org.jetbrains.skia.Bitmap
-import org.jetbrains.skia.Image
 import java.nio.ByteBuffer
 import java.nio.ByteOrder
+import org.jetbrains.skia.Bitmap
+import org.jetbrains.skia.Image
 
 /**
  * Create an [ImageBitmap] from the given [Bitmap]. Note this does
diff --git a/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageConverters.desktop.kt b/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageConverters.desktop.kt
index b03678a6..8ead9ef 100644
--- a/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageConverters.desktop.kt
+++ b/compose/ui/ui-graphics/src/desktopMain/kotlin/androidx/compose/ui/graphics/DesktopImageConverters.desktop.kt
@@ -25,9 +25,6 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
-import org.jetbrains.skia.Bitmap
-import org.jetbrains.skia.ColorAlphaType
-import org.jetbrains.skia.ImageInfo
 import java.awt.Graphics
 import java.awt.Image
 import java.awt.Point
@@ -42,6 +39,9 @@
 import java.awt.image.Raster
 import java.awt.image.SinglePixelPackedSampleModel
 import kotlin.math.roundToInt
+import org.jetbrains.skia.Bitmap
+import org.jetbrains.skia.ColorAlphaType
+import org.jetbrains.skia.ImageInfo
 
 /**
  * Convert AWT [BufferedImage] to Compose [Painter], so it would be possible to pass it to Compose
diff --git a/compose/ui/ui-graphics/src/desktopTest/kotlin/androidx/compose/ui/graphics/DesktopPathTest.kt b/compose/ui/ui-graphics/src/desktopTest/kotlin/androidx/compose/ui/graphics/DesktopPathTest.kt
index 4dc92b9..564e422 100644
--- a/compose/ui/ui-graphics/src/desktopTest/kotlin/androidx/compose/ui/graphics/DesktopPathTest.kt
+++ b/compose/ui/ui-graphics/src/desktopTest/kotlin/androidx/compose/ui/graphics/DesktopPathTest.kt
@@ -20,8 +20,8 @@
 import androidx.compose.ui.geometry.RoundRect
 import androidx.compose.ui.test.InternalTestApi
 import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
 import org.junit.Assert.assertFalse
+import org.junit.Assert.assertTrue
 import org.junit.Test
 
 @OptIn(InternalTestApi::class)
diff --git a/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt b/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt
index 0e0f06e..9ea4923 100644
--- a/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt
+++ b/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt
@@ -22,16 +22,16 @@
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.util.fastForEach
+import org.jetbrains.skia.ClipMode as SkClipMode
 import org.jetbrains.skia.CubicResampler
 import org.jetbrains.skia.FilterMipmap
 import org.jetbrains.skia.FilterMode
 import org.jetbrains.skia.Image
 import org.jetbrains.skia.Matrix44
 import org.jetbrains.skia.MipmapMode
-import org.jetbrains.skia.SamplingMode
-import org.jetbrains.skia.ClipMode as SkClipMode
 import org.jetbrains.skia.RRect as SkRRect
 import org.jetbrains.skia.Rect as SkRect
+import org.jetbrains.skia.SamplingMode
 import org.jetbrains.skia.impl.use
 
 actual typealias NativeCanvas = org.jetbrains.skia.Canvas
diff --git a/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaImageAsset.skiko.kt b/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaImageAsset.skiko.kt
index fa11fe8f..3c3b207 100644
--- a/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaImageAsset.skiko.kt
+++ b/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaImageAsset.skiko.kt
@@ -18,13 +18,13 @@
 
 import androidx.compose.ui.graphics.colorspace.ColorSpace
 import androidx.compose.ui.graphics.colorspace.ColorSpaces
+import kotlin.math.abs
 import org.jetbrains.skia.Bitmap
 import org.jetbrains.skia.ColorAlphaType
 import org.jetbrains.skia.ColorInfo
 import org.jetbrains.skia.ColorType
 import org.jetbrains.skia.Image
 import org.jetbrains.skia.ImageInfo
-import kotlin.math.abs
 
 /**
  * Create an [ImageBitmap] from the given [Bitmap]. Note this does
diff --git a/compose/ui/ui-inspection/build.gradle b/compose/ui/ui-inspection/build.gradle
index d7db14f..9ee96cd9 100644
--- a/compose/ui/ui-inspection/build.gradle
+++ b/compose/ui/ui-inspection/build.gradle
@@ -62,7 +62,7 @@
 }
 
 androidx {
-    name = "Android Compose Layout Inspector"
+    name = "Compose Layout Inspector"
     type = LibraryType.IDE_PLUGIN
     inceptionYear = "2021"
     description = "Compose layout inspector. Exposes information to our tools for better IDE support."
diff --git a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/ParametersTest.kt b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/ParametersTest.kt
index 4e4932e..bc87381 100644
--- a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/ParametersTest.kt
+++ b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/ParametersTest.kt
@@ -22,8 +22,8 @@
 import androidx.compose.ui.inspection.util.GetComposablesCommand
 import androidx.compose.ui.inspection.util.GetParameterDetailsCommand
 import androidx.compose.ui.inspection.util.GetParametersByAnchorIdCommand
-import androidx.compose.ui.inspection.util.GetParametersCommand
 import androidx.compose.ui.inspection.util.GetParametersByIdCommand
+import androidx.compose.ui.inspection.util.GetParametersCommand
 import androidx.compose.ui.inspection.util.GetUpdateSettingsCommand
 import androidx.compose.ui.inspection.util.flatten
 import androidx.compose.ui.inspection.util.toMap
diff --git a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/ComposeInspectionRule.kt b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/ComposeInspectionRule.kt
index 933ee399..7e66fc6 100644
--- a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/ComposeInspectionRule.kt
+++ b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/ComposeInspectionRule.kt
@@ -30,15 +30,15 @@
 import androidx.compose.ui.platform.ViewRootForTest
 import androidx.inspection.testing.InspectorTester
 import androidx.test.core.app.ActivityScenario
-import kotlinx.coroutines.runBlocking
-import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.Command
-import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.Response
-import org.junit.rules.ExternalResource
 import java.util.Collections
 import java.util.WeakHashMap
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import kotlin.reflect.KClass
+import kotlinx.coroutines.runBlocking
+import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.Command
+import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.Response
+import org.junit.rules.ExternalResource
 
 /**
  * Test rule with common setup for compose inspector's tests:
diff --git a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/JvmtiRule.kt b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/JvmtiRule.kt
index f9bf89d..21982eb 100644
--- a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/JvmtiRule.kt
+++ b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/rules/JvmtiRule.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.inspection.rules
 
 import android.os.Debug
-import org.junit.rules.ExternalResource
 import java.io.IOException
+import org.junit.rules.ExternalResource
 
 class JvmtiRule : ExternalResource() {
     companion object {
diff --git a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/util/ProtoExtensions.kt b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/util/ProtoExtensions.kt
index 528b4c1..feba40c 100644
--- a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/util/ProtoExtensions.kt
+++ b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/util/ProtoExtensions.kt
@@ -21,8 +21,8 @@
 import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.ComposableNode
 import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.GetAllParametersCommand
 import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.GetComposablesCommand
-import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.GetParametersCommand
 import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.GetParameterDetailsCommand
+import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.GetParametersCommand
 import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.ParameterReference
 import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol.UpdateSettingsCommand
 
diff --git a/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/ParameterFactory.kt b/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/ParameterFactory.kt
index 0ee0076..4e7077f 100644
--- a/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/ParameterFactory.kt
+++ b/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/ParameterFactory.kt
@@ -16,7 +16,6 @@
 
 package androidx.compose.ui.inspection.inspector
 
-import java.lang.reflect.Modifier as JavaModifier
 import android.util.Log
 import android.view.View
 import androidx.compose.runtime.internal.ComposableLambda
@@ -46,6 +45,7 @@
 import androidx.compose.ui.unit.TextUnit
 import androidx.compose.ui.unit.TextUnitType
 import java.lang.reflect.Field
+import java.lang.reflect.Modifier as JavaModifier
 import java.util.IdentityHashMap
 import kotlin.jvm.internal.FunctionReference
 import kotlin.jvm.internal.Lambda
diff --git a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ComposedModifierDetector.kt b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ComposedModifierDetector.kt
index 557404e..1652ea2 100644
--- a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ComposedModifierDetector.kt
+++ b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ComposedModifierDetector.kt
@@ -30,12 +30,12 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.USimpleNameReferenceExpression
 import org.jetbrains.uast.getParameterForArgument
 import org.jetbrains.uast.tryResolve
 import org.jetbrains.uast.visitor.AbstractUastVisitor
-import java.util.EnumSet
 
 /**
  * [Detector] that checks calls to Modifier.composed to make sure they actually reference a
diff --git a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierParameterDetector.kt b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierParameterDetector.kt
index bcc5884..3577db2 100644
--- a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierParameterDetector.kt
+++ b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierParameterDetector.kt
@@ -32,12 +32,12 @@
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
+import java.util.EnumSet
+import java.util.Locale
 import org.jetbrains.kotlin.psi.KtNameReferenceExpression
 import org.jetbrains.kotlin.psi.KtParameter
 import org.jetbrains.uast.UElement
 import org.jetbrains.uast.UMethod
-import java.util.EnumSet
-import java.util.Locale
 
 /**
  * [Detector] that checks Composable functions with Modifiers parameters for consistency with
diff --git a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/SuspiciousCompositionLocalModifierReadDetector.kt b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/SuspiciousCompositionLocalModifierReadDetector.kt
index 9a3a49a..2c13d25 100644
--- a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/SuspiciousCompositionLocalModifierReadDetector.kt
+++ b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/SuspiciousCompositionLocalModifierReadDetector.kt
@@ -122,10 +122,12 @@
                 "callbacks are not invoked on every recomposition. If you read a " +
                 "CompositionLocal in onAttach() or onDetach(), you will only get the " +
                 "CompositionLocal's value once at the moment of the read, which may lead to " +
-                "unexpected behaviors. We recommend instead accessing CompositionLocals in the " +
-                "main phase of your Modifier, like measure(), draw(), semanticsConfiguration, " +
-                "onKeyEvent(), etc. Accesses to CompositionLocals in any of these main phase " +
-                "events will be kept informed ",
+                "unexpected behaviors. We recommend instead reading CompositionLocals at " +
+                "time-of-use in callbacks that apply your Modifier's behavior, like measure() " +
+                "for LayoutModifierNode, draw() for DrawModifierNode, and so on. To observe the " +
+                "value of the CompositionLocal manually, extend from the ObserverNode interface " +
+                "and place the read inside an observeReads {} block within the " +
+                "onObservedReadsChanged() callback.",
             Category.CORRECTNESS, 3, Severity.ERROR,
             Implementation(
                 SuspiciousCompositionLocalModifierReadDetector::class.java,
diff --git a/compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/SynchronizationMethodsTest.kt b/compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/SynchronizationMethodsTest.kt
index cfce9a0..ca74cd1 100644
--- a/compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/SynchronizationMethodsTest.kt
+++ b/compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/SynchronizationMethodsTest.kt
@@ -25,15 +25,15 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TestRule
 import org.junit.runner.RunWith
 import org.junit.runners.model.Statement
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/junit4/SkiaTest.desktop.kt b/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/junit4/SkiaTest.desktop.kt
index bc82a1a..2e6a994 100644
--- a/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/junit4/SkiaTest.desktop.kt
+++ b/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/junit4/SkiaTest.desktop.kt
@@ -15,15 +15,15 @@
  */
 package androidx.compose.ui.test.junit4
 
-import org.jetbrains.skia.Image
 import androidx.compose.ui.test.InternalTestApi
+import java.io.File
+import java.security.MessageDigest
+import java.util.LinkedList
+import org.jetbrains.skia.Image
 import org.jetbrains.skia.Surface
 import org.junit.rules.TestRule
 import org.junit.runner.Description
 import org.junit.runners.model.Statement
-import java.io.File
-import java.security.MessageDigest
-import java.util.LinkedList
 
 // TODO(https://github.com/JetBrains/compose-jb/issues/1041): refactor API
 
diff --git a/compose/ui/ui-test-junit4/src/jvmMain/kotlin/androidx/compose/ui/test/junit4/UncaughtExceptionHandler.jvm.kt b/compose/ui/ui-test-junit4/src/jvmMain/kotlin/androidx/compose/ui/test/junit4/UncaughtExceptionHandler.jvm.kt
index 3a8dda1..9efd549 100644
--- a/compose/ui/ui-test-junit4/src/jvmMain/kotlin/androidx/compose/ui/test/junit4/UncaughtExceptionHandler.jvm.kt
+++ b/compose/ui/ui-test-junit4/src/jvmMain/kotlin/androidx/compose/ui/test/junit4/UncaughtExceptionHandler.jvm.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.ui.test.junit4
 
-import kotlinx.coroutines.CoroutineExceptionHandler
 import kotlin.coroutines.AbstractCoroutineContextElement
 import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.CoroutineExceptionHandler
 
 /**
  * Similar to [TestCoroutineExceptionHandler], but with clearing all thrown exceptions
diff --git a/compose/ui/ui-test-junit4/src/test/kotlin/androidx/compose/ui/test/junit4/InfiniteAnimationPolicyTest.kt b/compose/ui/ui-test-junit4/src/test/kotlin/androidx/compose/ui/test/junit4/InfiniteAnimationPolicyTest.kt
index c505e085..310bfa7 100644
--- a/compose/ui/ui-test-junit4/src/test/kotlin/androidx/compose/ui/test/junit4/InfiniteAnimationPolicyTest.kt
+++ b/compose/ui/ui-test-junit4/src/test/kotlin/androidx/compose/ui/test/junit4/InfiniteAnimationPolicyTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.test.junit4
 
-import androidx.compose.animation.core.withInfiniteAnimationFrameNanos
 import androidx.compose.animation.core.withInfiniteAnimationFrameMillis
+import androidx.compose.animation.core.withInfiniteAnimationFrameNanos
 import androidx.compose.ui.platform.InfiniteAnimationPolicy
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.CancellationException
diff --git a/compose/ui/ui-test/samples/build.gradle b/compose/ui/ui-test/samples/build.gradle
index 668bb91..0845c78 100644
--- a/compose/ui/ui-test/samples/build.gradle
+++ b/compose/ui/ui-test/samples/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Testing Samples"
+    name = "Compose Testing Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2022"
     description = "Contains samples for AndroidX Compose Testing."
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/CallSemanticsActionTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/CallSemanticsActionTest.kt
index a354f96..a380a02 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/CallSemanticsActionTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/CallSemanticsActionTest.kt
@@ -27,11 +27,11 @@
 import androidx.compose.ui.semantics.contentDescription
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindAllTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindAllTest.kt
index 0cedb3f..2479e17 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindAllTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindAllTest.kt
@@ -23,11 +23,11 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindInPopupTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindInPopupTest.kt
index 835d945..0ce4aaa 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindInPopupTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindInPopupTest.kt
@@ -22,11 +22,11 @@
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.window.Popup
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 private const val contentTag = "content"
 private const val popupTag = "popup"
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindersTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindersTest.kt
index 5b58bec..0a19723 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindersTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/FindersTest.kt
@@ -20,21 +20,21 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.testutils.expectError
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.semantics.SemanticsPropertyReceiver
+import androidx.compose.ui.semantics.contentDescription
+import androidx.compose.ui.semantics.editableText
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.semantics.testTag
 import androidx.compose.ui.semantics.text
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.text.AnnotatedString
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import androidx.compose.testutils.expectError
-import androidx.compose.ui.semantics.contentDescription
-import androidx.compose.ui.semantics.editableText
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt
index 54c4bc2..f91c060 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt
@@ -280,7 +280,7 @@
                 setText { true }
                 requestFocus { true }
                 insertTextAtCursor { true }
-                performImeAction { false }
+                performImeAction(ImeAction.Done) { false }
             })
         }
 
@@ -314,7 +314,7 @@
         rule.setContent {
             BoundaryNode(testTag = "node", Modifier.semantics {
                 setText { true }
-                performImeAction { true }
+                performImeAction(ImeAction.Done) { true }
             })
         }
 
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAllTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAllTest.kt
index 3ee7a82..8b5f6d9 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAllTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAllTest.kt
@@ -18,17 +18,17 @@
 
 import androidx.compose.ui.test.assertAll
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChildren
 import androidx.compose.ui.test.onNodeWithTag
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessageStartsWith
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAnyTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAnyTest.kt
index 2d6f01c..50a9ca0 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAnyTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertAnyTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.ui.test.assertions
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assertAny
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChildren
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessageStartsWith
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertContentDescription.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertContentDescription.kt
index 3076fa0..876c983 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertContentDescription.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertContentDescription.kt
@@ -26,11 +26,11 @@
 import androidx.compose.ui.test.assertContentDescriptionEquals
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertText.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertText.kt
index 01ee757..2649649 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertText.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/assertions/AssertText.kt
@@ -31,11 +31,11 @@
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.text.AnnotatedString
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt
index ec61d21..e55845f 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt
@@ -64,10 +64,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeVelocityTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeVelocityTest.kt
index a23987f..42b4dcd 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeVelocityTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeVelocityTest.kt
@@ -37,11 +37,11 @@
 import androidx.compose.ui.test.util.recordedDurationMillis
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.max
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.math.max
 
 /**
  * Tests if we can generate gestures that end with a specific velocity
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt
index 6ba723d..9a3f36c 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt
@@ -44,13 +44,13 @@
 import androidx.compose.ui.test.util.verify
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.max
+import kotlin.math.roundToInt
+import kotlin.math.roundToLong
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.math.max
-import kotlin.math.roundToInt
-import kotlin.math.roundToLong
 
 /**
  * Tests [TouchInjectionScope.longClick] with arguments. Verifies that the click is in the middle
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveWithHistoryTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveWithHistoryTest.kt
index 9e60740..ca75c82 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveWithHistoryTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveWithHistoryTest.kt
@@ -39,10 +39,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithTouchSlopTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithTouchSlopTest.kt
index 4c447ad..c1cdadc 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithTouchSlopTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithTouchSlopTest.kt
@@ -32,10 +32,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 /**
  * Test to see if we can achieve precise scroll motion when injecting touch events in the
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithVelocityTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithVelocityTest.kt
index 6bf7069..5925354 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithVelocityTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeWithVelocityTest.kt
@@ -40,11 +40,11 @@
 import androidx.compose.ui.test.util.recordedDurationMillis
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.max
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.math.max
 
 /**
  * Test for [TouchInjectionScope.swipeWithVelocity] to see if we can generate gestures that end
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderCalculateDurationTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderCalculateDurationTest.kt
index aa7c8fd..c6bc9a6 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderCalculateDurationTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderCalculateDurationTest.kt
@@ -26,14 +26,14 @@
 import androidx.compose.ui.unit.Velocity
 import androidx.compose.ui.util.lerp
 import com.google.common.truth.Truth.assertThat
-import org.junit.Assert.fail
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import java.lang.IllegalArgumentException
 import kotlin.math.max
 import kotlin.math.roundToInt
 import kotlin.math.sqrt
+import org.junit.Assert.fail
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 /**
  * Test to check if [VelocityPathFinder.calculateDefaultDuration] calculates a duration for
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderTest.kt
index 87832cc..f213055 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/VelocityPathFinderTest.kt
@@ -26,14 +26,14 @@
 import androidx.compose.ui.unit.Velocity
 import androidx.compose.ui.util.lerp
 import com.google.common.truth.Truth.assertThat
-import org.junit.Assert.fail
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import kotlin.math.floor
 import kotlin.math.max
 import kotlin.math.roundToInt
 import kotlin.math.sqrt
+import org.junit.Assert.fail
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 /**
  * Tests of [VelocityPathFinder] creates paths that will lead to the desired velocity.
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/Common.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/Common.kt
index e32a432..924b49d 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/Common.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/Common.kt
@@ -19,8 +19,8 @@
 
 package androidx.compose.ui.test.partialgesturescope
 
-import androidx.compose.ui.test.junit4.ComposeTestRule
 import androidx.compose.ui.test.GestureScope
+import androidx.compose.ui.test.junit4.ComposeTestRule
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.performGesture
 import androidx.compose.ui.test.util.ClickableTestBox.defaultTag
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyAncestorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyAncestorTest.kt
index 40549c6..df67328 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyAncestorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyAncestorTest.kt
@@ -16,17 +16,17 @@
 
 package androidx.compose.ui.test.predicates
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasAnyAncestor
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyChildTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyChildTest.kt
index eaab244..b6c1c80 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyChildTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyChildTest.kt
@@ -16,17 +16,17 @@
 
 package androidx.compose.ui.test.predicates
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasAnyChild
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyDescendantTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyDescendantTest.kt
index 6e5483f..c98ec7f 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyDescendantTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnyDescendantTest.kt
@@ -16,17 +16,17 @@
 
 package androidx.compose.ui.test.predicates
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasAnyDescendant
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnySiblingTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnySiblingTest.kt
index 9f760a7..5178fee 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnySiblingTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasAnySiblingTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.ui.test.predicates
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasAnySibling
 import androidx.compose.ui.test.hasParent
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasParentTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasParentTest.kt
index 3c3a2ae..0ecda22 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasParentTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/predicates/HasParentTest.kt
@@ -16,17 +16,17 @@
 
 package androidx.compose.ui.test.predicates
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasParent
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AddIndexSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AddIndexSelectorTest.kt
index f7f6aba..faef8f6 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AddIndexSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AddIndexSelectorTest.kt
@@ -16,20 +16,20 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChildAt
 import androidx.compose.ui.test.onChildren
 import androidx.compose.ui.test.onFirst
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessageStartsWith
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AncestorsSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AncestorsSelectorTest.kt
index cb28f4c..8b35a6e 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AncestorsSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/AncestorsSelectorTest.kt
@@ -16,20 +16,20 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onAncestors
 import androidx.compose.ui.test.onFirst
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onParent
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildSelectorTest.kt
index b1ca854..22e9c6a 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildSelectorTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChild
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessageStartsWith
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildrenSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildrenSelectorTest.kt
index 1c10a00..0403487 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildrenSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ChildrenSelectorTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChildren
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterSelectorTest.kt
index e934f88..4a78db7 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterSelectorTest.kt
@@ -16,19 +16,19 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.filter
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChildren
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterToOneSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterToOneSelectorTest.kt
index a5f8fa1..129c653 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterToOneSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/FilterToOneSelectorTest.kt
@@ -16,19 +16,19 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.filterToOne
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChildren
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessageStartsWith
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/LastNodeSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/LastNodeSelectorTest.kt
index 61f4fb0..a78777d 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/LastNodeSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/LastNodeSelectorTest.kt
@@ -16,19 +16,19 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onChildren
 import androidx.compose.ui.test.onLast
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessageStartsWith
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ParentSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ParentSelectorTest.kt
index b110fae..1733f78 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ParentSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/ParentSelectorTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onParent
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessage
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingSelectorTest.kt
index e88d44a..aeefb12 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingSelectorTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onSibling
 import androidx.compose.ui.test.util.BoundaryNode
 import androidx.compose.ui.test.util.expectErrorMessageStartsWith
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingsSelectorTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingsSelectorTest.kt
index f054b8f..7332ead 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingsSelectorTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/selectors/SiblingsSelectorTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.compose.ui.test.selectors
 
-import androidx.test.filters.MediumTest
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertCountEquals
-import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onSiblings
 import androidx.compose.ui.test.util.BoundaryNode
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/ClickableTestBox.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/ClickableTestBox.kt
index 8c40101..69d84dc 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/ClickableTestBox.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/ClickableTestBox.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.test.util
 
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
diff --git a/compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/AndroidAssertions.android.kt b/compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/AndroidAssertions.android.kt
index 2f13281..d354263 100644
--- a/compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/AndroidAssertions.android.kt
+++ b/compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/AndroidAssertions.android.kt
@@ -16,12 +16,12 @@
 
 package androidx.compose.ui.test
 
-import androidx.test.espresso.matcher.ViewMatchers
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.layout.LayoutInfo
 import androidx.compose.ui.platform.ViewRootForTest
 import androidx.compose.ui.semantics.SemanticsNode
+import androidx.test.espresso.matcher.ViewMatchers
 
 internal actual fun SemanticsNodeInteraction.checkIsDisplayed(): Boolean {
     // hierarchy check - check layout nodes are visible
diff --git a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/InjectionScope.kt b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/InjectionScope.kt
index fb0f6a7..86b9c7c 100644
--- a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/InjectionScope.kt
+++ b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/InjectionScope.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.platform.ViewConfiguration
+import androidx.compose.ui.test.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.test.internal.JvmDefaultWithCompatibility
 
 /**
  * The receiver scope of all input injection lambdas offered in `ui-test`, such as
diff --git a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/TouchInjectionScope.kt b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/TouchInjectionScope.kt
index 3bcf792..d1f5822 100644
--- a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/TouchInjectionScope.kt
+++ b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/TouchInjectionScope.kt
@@ -19,12 +19,12 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.lerp
 import androidx.compose.ui.platform.ViewConfiguration
+import androidx.compose.ui.test.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.util.lerp
 import kotlin.math.ceil
 import kotlin.math.max
 import kotlin.math.roundToInt
 import kotlin.math.roundToLong
-import androidx.compose.ui.test.internal.JvmDefaultWithCompatibility
 
 /**
  * The receiver scope of the touch input injection lambda from [performTouchInput].
diff --git a/compose/ui/ui-test/src/desktopMain/kotlin/androidx/compose/ui/test/DesktopInputDispatcher.desktop.kt b/compose/ui/ui-test/src/desktopMain/kotlin/androidx/compose/ui/test/DesktopInputDispatcher.desktop.kt
index 80c5334..1d82eff 100644
--- a/compose/ui/ui-test/src/desktopMain/kotlin/androidx/compose/ui/test/DesktopInputDispatcher.desktop.kt
+++ b/compose/ui/ui-test/src/desktopMain/kotlin/androidx/compose/ui/test/DesktopInputDispatcher.desktop.kt
@@ -19,10 +19,10 @@
 package androidx.compose.ui.test
 
 import androidx.compose.ui.InternalComposeUiApi
+import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.input.key.Key
 import androidx.compose.ui.input.pointer.PointerId
 import androidx.compose.ui.input.pointer.TestPointerInputEventData
-import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.node.RootForTest
 import androidx.compose.ui.platform.SkiaRootForTest
 
diff --git a/compose/ui/ui-test/src/test/kotlin/androidx/compose/ui/test/inputdispatcher/InputDispatcherTest.kt b/compose/ui/ui-test/src/test/kotlin/androidx/compose/ui/test/inputdispatcher/InputDispatcherTest.kt
index a86efdb..30174dd 100644
--- a/compose/ui/ui-test/src/test/kotlin/androidx/compose/ui/test/inputdispatcher/InputDispatcherTest.kt
+++ b/compose/ui/ui-test/src/test/kotlin/androidx/compose/ui/test/inputdispatcher/InputDispatcherTest.kt
@@ -31,10 +31,10 @@
 import androidx.compose.ui.test.util.InputEventRecorder
 import androidx.compose.ui.test.util.assertNoTouchGestureInProgress
 import com.google.common.truth.Truth.assertThat
+import org.junit.After
 import org.mockito.kotlin.any
 import org.mockito.kotlin.doReturn
 import org.mockito.kotlin.mock
-import org.junit.After
 
 @OptIn(InternalTestApi::class)
 open class InputDispatcherTest {
diff --git a/compose/ui/ui-text-google-fonts/build.gradle b/compose/ui/ui-text-google-fonts/build.gradle
index d8c49be..f557000 100644
--- a/compose/ui/ui-text-google-fonts/build.gradle
+++ b/compose/ui/ui-text-google-fonts/build.gradle
@@ -42,7 +42,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose Google Fonts integration"
+    name = "Compose Google Fonts integration"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Compose Downloadable Fonts integration for Google Fonts"
diff --git a/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/FrameworkTextLayoutBenchmark.kt b/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/FrameworkTextLayoutBenchmark.kt
index 2872b3d..2765fb0 100644
--- a/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/FrameworkTextLayoutBenchmark.kt
+++ b/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/FrameworkTextLayoutBenchmark.kt
@@ -29,12 +29,12 @@
 import androidx.benchmark.junit4.measureRepeated
 import androidx.test.filters.LargeTest
 import androidx.test.platform.app.InstrumentationRegistry
+import kotlin.math.roundToInt
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.math.roundToInt
 
 @LargeTest
 @RunWith(Parameterized::class)
diff --git a/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/ParagraphBenchmark.kt b/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/ParagraphBenchmark.kt
index 7c217b8..02c2151 100644
--- a/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/ParagraphBenchmark.kt
+++ b/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/ParagraphBenchmark.kt
@@ -34,12 +34,12 @@
 import androidx.test.filters.LargeTest
 import androidx.test.platform.app.InstrumentationRegistry
 import kotlin.math.ceil
+import kotlin.math.roundToInt
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.math.roundToInt
 
 @LargeTest
 @RunWith(Parameterized::class)
diff --git a/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/input/EditProcessorBenchmark.kt b/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/input/EditProcessorBenchmark.kt
index d9549db..da8dcd1 100644
--- a/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/input/EditProcessorBenchmark.kt
+++ b/compose/ui/ui-text/benchmark/src/androidTest/java/androidx/compose/ui/text/benchmark/input/EditProcessorBenchmark.kt
@@ -18,8 +18,8 @@
 
 import androidx.benchmark.junit4.BenchmarkRule
 import androidx.benchmark.junit4.measureRepeated
-import androidx.compose.ui.text.benchmark.RandomTextGenerator
 import androidx.compose.ui.text.TextRange
+import androidx.compose.ui.text.benchmark.RandomTextGenerator
 import androidx.compose.ui.text.benchmark.cartesian
 import androidx.compose.ui.text.input.BackspaceCommand
 import androidx.compose.ui.text.input.CommitTextCommand
diff --git a/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkHelper.kt b/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkHelper.kt
index c83992d0..707ffb3 100644
--- a/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkHelper.kt
+++ b/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkHelper.kt
@@ -21,9 +21,9 @@
 import androidx.compose.ui.graphics.Shadow
 import androidx.compose.ui.text.AnnotatedString
 import androidx.compose.ui.text.SpanStyle
-import androidx.compose.ui.text.intl.LocaleList
 import androidx.compose.ui.text.font.FontStyle
 import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.intl.LocaleList
 import androidx.compose.ui.text.style.BaselineShift
 import androidx.compose.ui.text.style.TextDecoration
 import androidx.compose.ui.text.style.TextGeometricTransform
diff --git a/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkTestRule.kt b/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkTestRule.kt
index d8ac939..6f7f876 100644
--- a/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkTestRule.kt
+++ b/compose/ui/ui-text/benchmark/src/main/java/androidx/compose/ui/text/benchmark/TextBenchmarkTestRule.kt
@@ -17,11 +17,11 @@
 
 import android.graphics.Canvas
 import android.util.Log
+import kotlin.random.Random
 import org.junit.rules.RuleChain
 import org.junit.rules.TestRule
 import org.junit.runner.Description
 import org.junit.runners.model.Statement
-import kotlin.random.Random
 
 /**
  * Collection of text benchmark utilities. It tries to
diff --git a/compose/ui/ui-text/samples/build.gradle b/compose/ui/ui-text/samples/build.gradle
index 507a2ddb..a6d5aa4 100644
--- a/compose/ui/ui-text/samples/build.gradle
+++ b/compose/ui/ui-text/samples/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Text Core Samples"
+    name = "Compose UI Text Core Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains sample code for the Androidx Compose UI Text Core APIs and Utilities"
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/AndroidParagraphTextDirectionTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/AndroidParagraphTextDirectionTest.kt
index c9dcbb7..1268ee3 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/AndroidParagraphTextDirectionTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/AndroidParagraphTextDirectionTest.kt
@@ -21,14 +21,14 @@
 import androidx.compose.ui.text.intl.LocaleList
 import androidx.compose.ui.text.platform.resolveTextDirectionHeuristics
 import androidx.compose.ui.text.style.TextDirection
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.Locale
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.Locale
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/MultiParagraphIntegrationTextDirectionTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/MultiParagraphIntegrationTextDirectionTest.kt
index f86a193..fd2538f 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/MultiParagraphIntegrationTextDirectionTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/MultiParagraphIntegrationTextDirectionTest.kt
@@ -24,15 +24,15 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.TextUnit
 import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.Locale
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.Locale
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphFillBoundingBoxesTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphFillBoundingBoxesTest.kt
index 94f081a..d802b37 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphFillBoundingBoxesTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphFillBoundingBoxesTest.kt
@@ -19,11 +19,16 @@
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.text.font.createFontFamilyResolver
 import androidx.compose.ui.text.font.toFontFamily
+import androidx.compose.ui.text.matchers.assertThat
 import androidx.compose.ui.text.style.BaselineShift
+import androidx.compose.ui.text.style.LineHeightStyle
+import androidx.compose.ui.text.style.LineHeightStyle.Alignment
+import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextDirection
 import androidx.compose.ui.text.style.TextGeometricTransform
 import androidx.compose.ui.text.style.TextIndent
+import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.em
 import androidx.compose.ui.unit.sp
@@ -32,11 +37,6 @@
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import androidx.compose.ui.text.matchers.assertThat
-import androidx.compose.ui.text.style.LineHeightStyle
-import androidx.compose.ui.text.style.LineHeightStyle.Trim
-import androidx.compose.ui.text.style.LineHeightStyle.Alignment
-import androidx.compose.ui.unit.Constraints
 import org.junit.Test
 import org.junit.runner.RunWith
 
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationBoundingBoxTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationBoundingBoxTest.kt
new file mode 100644
index 0000000..c72f952
--- /dev/null
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationBoundingBoxTest.kt
@@ -0,0 +1,436 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.text
+
+import androidx.compose.ui.text.font.toFontFamily
+import androidx.compose.ui.text.style.TextDirection
+import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SdkSuppress
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+@SdkSuppress(minSdkVersion = 23)
+@SmallTest
+class ParagraphIntegrationBoundingBoxTest {
+    private val fontFamilyMeasureFont = FontTestData.BASIC_MEASURE_FONT.toFontFamily()
+    private val context = InstrumentationRegistry.getInstrumentation().context
+    private val fontFamilyResolver = UncachedFontFamilyResolver(context)
+    private val defaultDensity = Density(density = 1f)
+    private val fontSize = 10.sp
+    private val fontSizeInPx = with(defaultDensity) { fontSize.roundToPx() }
+
+    @Test
+    fun ltr_noBreak_noMaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.No, widthInFontSize = 3)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 1,
+                right = fontSizeInPx * 2,
+                top = fontSizeInPx,
+                bottom = fontSizeInPx * 2
+            )
+    }
+
+    @Test
+    fun ltr_noBreak_noMaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            textDirection = TextDirection.Ltr,
+            lineBreakFrom = LineBreakFrom.No,
+            widthInFontSize = 3,
+            heightIntFontSize = 1
+        ).assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_noBreak_noMaxLines_largeWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.No, widthInFontSize = 7)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 5,
+                right = fontSizeInPx * 6,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_noBreak_1MaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.No, widthInFontSize = 3, maxLines = 1)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_noBreak_1MaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Ltr,
+            LineBreakFrom.No,
+            widthInFontSize = 3,
+            heightIntFontSize = 1,
+            maxLines = 1
+        )
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_firstBreak_noMaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.First, widthInFontSize = 3)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 1,
+                right = fontSizeInPx * 2,
+                top = fontSizeInPx,
+                bottom = fontSizeInPx * 2
+            )
+    }
+
+    @Test
+    fun ltr_firstBreak_noMaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Ltr,
+            LineBreakFrom.First,
+            widthInFontSize = 3,
+            heightIntFontSize = 1
+        )
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_firstBreak_noMaxLines_largeWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.First, widthInFontSize = 7)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 1,
+                right = fontSizeInPx * 2,
+                top = fontSizeInPx,
+                bottom = fontSizeInPx * 2
+            )
+    }
+
+    @Test
+    fun ltr_firstBreak_1MaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.First, widthInFontSize = 3, maxLines = 1)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_firstBreak_1MaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Ltr,
+            LineBreakFrom.First,
+            widthInFontSize = 3,
+            heightIntFontSize = 1,
+            maxLines = 1
+        )
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_secondBreak_noMaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Ltr,
+            LineBreakFrom.Second,
+            widthInFontSize = 3,
+            heightIntFontSize = 1
+        )
+            .assertBoxLRTB(
+                offset = 9,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_secondBreak_noMaxLines_largeWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.Second, widthInFontSize = 7)
+            .assertBoxLRTB(
+                offset = 9,
+                left = fontSizeInPx * 1,
+                right = fontSizeInPx * 2,
+                top = fontSizeInPx,
+                bottom = fontSizeInPx * 2
+            )
+    }
+
+    @Test
+    fun ltr_secondBreak_1MaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Ltr, LineBreakFrom.Second, widthInFontSize = 3, maxLines = 1)
+            .assertBoxLRTB(
+                offset = 9,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun ltr_secondBreak_1MaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Ltr,
+            LineBreakFrom.Second,
+            widthInFontSize = 3,
+            heightIntFontSize = 1,
+            maxLines = 1
+        )
+            .assertBoxLRTB(
+                offset = 9,
+                left = fontSizeInPx * 3,
+                right = fontSizeInPx * 3,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun rtl_noBreak_noMaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Rtl, LineBreakFrom.No, widthInFontSize = 3)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 1,
+                right = fontSizeInPx * 2,
+                top = fontSizeInPx,
+                bottom = fontSizeInPx * 2
+            )
+    }
+
+    @Test
+    fun rtl_noBreak_noMaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            textDirection = TextDirection.Rtl,
+            lineBreakFrom = LineBreakFrom.No,
+            widthInFontSize = 3,
+            heightIntFontSize = 1
+        )
+            .assertBoxLRTB(
+                offset = 5,
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun rtl_noBreak_noMaxLines_largeWidth_noHeight() {
+        testParagraph(TextDirection.Rtl, LineBreakFrom.No, widthInFontSize = 7)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx,
+                right = fontSizeInPx * 2,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun rtl_noBreak_1MaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Rtl, LineBreakFrom.No, widthInFontSize = 3, maxLines = 1)
+            .assertBoxLRTB(
+                offset = 5,
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun rtl_noBreak_1MaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Rtl,
+            LineBreakFrom.No,
+            widthInFontSize = 3,
+            heightIntFontSize = 1,
+            maxLines = 1
+        )
+            .assertBoxLRTB(
+                offset = 5,
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun rtl_firstBreak_noMaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Rtl, LineBreakFrom.First, widthInFontSize = 3)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 1,
+                right = fontSizeInPx * 2,
+                top = fontSizeInPx,
+                bottom = fontSizeInPx * 2
+            )
+    }
+
+    @Test
+    fun rtl_firstBreak_noMaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Rtl,
+            LineBreakFrom.First,
+            widthInFontSize = 3,
+            heightIntFontSize = 1
+        )
+            .assertBoxLRTB(
+                offset = 5,
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun rtl_firstBreak_noMaxLines_largeWidth_noHeight() {
+        testParagraph(TextDirection.Rtl, LineBreakFrom.First, widthInFontSize = 7)
+            .assertBoxLRTB(
+                offset = 5,
+                left = fontSizeInPx * 5,
+                right = fontSizeInPx * 6,
+                top = fontSizeInPx,
+                bottom = fontSizeInPx * 2
+            )
+    }
+
+    @Test
+    fun rtl_firstBreak_1MaxLines_smallWidth_noHeight() {
+        testParagraph(TextDirection.Rtl, LineBreakFrom.First, widthInFontSize = 3, maxLines = 1)
+            .assertBoxLRTB(
+                offset = 5,
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    @Test
+    fun rtl_firstBreak_1MaxLines_smallWidth_smallHeight() {
+        testParagraph(
+            TextDirection.Rtl,
+            LineBreakFrom.First,
+            widthInFontSize = 3,
+            heightIntFontSize = 1,
+            maxLines = 1
+        )
+            .assertBoxLRTB(
+                offset = 5,
+                left = 0,
+                right = 0,
+                top = 0,
+                bottom = fontSizeInPx
+            )
+    }
+
+    private fun testParagraph(
+        textDirection: TextDirection,
+        lineBreakFrom: LineBreakFrom,
+        widthInFontSize: Int,
+        heightIntFontSize: Int? = null,
+        maxLines: Int = Int.MAX_VALUE
+    ) = Paragraph(
+        text = TEST_CONTENT_MAP[textDirection]!![lineBreakFrom]!!,
+        style = TextStyle(fontFamily = fontFamilyMeasureFont, fontSize = fontSize),
+        maxLines = maxLines,
+        ellipsis = true,
+        constraints = Constraints(
+            maxWidth = (widthInFontSize * fontSizeInPx),
+            maxHeight = (heightIntFontSize?.times(fontSizeInPx)) ?: Constraints.Infinity,
+        ),
+        density = defaultDensity,
+        fontFamilyResolver = fontFamilyResolver
+    )
+
+    private fun Paragraph.assertBoxLRTB(
+        offset: Int,
+        left: Int,
+        right: Int,
+        top: Int,
+        bottom: Int
+    ) {
+        val box = getBoundingBox(offset)
+        assertThat(box.left).isEqualTo(left)
+        assertThat(box.right).isEqualTo(right)
+        assertThat(box.top).isEqualTo(top)
+        assertThat(box.bottom).isEqualTo(bottom)
+    }
+}
+
+private enum class LineBreakFrom {
+    No,
+    First,
+    Second
+}
+
+private val TEST_CONTENT_MAP = mapOf(
+    TextDirection.Ltr to mapOf(
+        LineBreakFrom.No to "abc def abc",
+        LineBreakFrom.First to "abc\ndef abc",
+        LineBreakFrom.Second to "abc def\nabc",
+    ),
+    TextDirection.Rtl to mapOf(
+        LineBreakFrom.No to "\u05D0\u05D2\u05D2 \u05D3\u05D4\u05D5 \u05D0\u05D2\u05D2",
+        LineBreakFrom.First to "\u05D0\u05D2\u05D2\n\u05D3\u05D4\u05D5 \u05D0\u05D2\u05D2",
+        LineBreakFrom.Second to "\u05D0\u05D2\u05D2 \u05D3\u05D4\u05D5\n\u05D0\u05D2\u05D2",
+    )
+)
\ No newline at end of file
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationIndentationFixTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationIndentationFixTest.kt
index 20fe4e3..91547fd 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationIndentationFixTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationIndentationFixTest.kt
@@ -25,13 +25,13 @@
 import androidx.compose.ui.unit.TextUnit
 import androidx.compose.ui.unit.em
 import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationLineHeightStyleTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationLineHeightStyleTest.kt
index d68bd57..61ce517 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationLineHeightStyleTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationLineHeightStyleTest.kt
@@ -20,19 +20,19 @@
 import androidx.compose.ui.text.android.style.lineHeight
 import androidx.compose.ui.text.font.toFontFamily
 import androidx.compose.ui.text.style.LineHeightStyle
-import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.LineHeightStyle.Alignment
+import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 import kotlin.math.abs
 import kotlin.math.ceil
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt
index 1b3119b..0649f7f 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTest.kt
@@ -677,7 +677,139 @@
     }
 
     @Test
-    fun getBoundingBox_ltr_textPosition_negative() {
+    fun getBoundingBox_ltr_multiLines_lineFeedEllipsized_maxLines() {
+        with(defaultDensity) {
+            val text = "abc def\ndef"
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = 3 * fontSizeInPx,
+                ellipsis = true,
+                maxLines = 1
+            )
+
+            val box = paragraph.getBoundingBox(9)
+            assertThat(box.left).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.right).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test
+    fun getBoundingBox_bidi_singleLineHeight_softWrap_ellipsized() {
+        with(defaultDensity) {
+            val text = "abc \u05D0\u05D1\u05D2"
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = 3 * fontSizeInPx,
+                height = fontSizeInPx,
+                ellipsis = true
+            )
+
+            val box = paragraph.getBoundingBox(5)
+            assertThat(box.left).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.right).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test
+    fun getBoundingBox_bidi_singleLineHeight_softWrap_ellipsized_beforeLineFeed() {
+        with(defaultDensity) {
+            val text = "abc \u05D0\n\u05D1\u05D2"
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = 3 * fontSizeInPx,
+                height = fontSizeInPx,
+                ellipsis = true
+            )
+
+            val box = paragraph.getBoundingBox(4)
+            assertThat(box.left).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.right).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test
+    fun getBoundingBox_rtl_multiLines_lineFeedEllipsized_maxLines() {
+        with(defaultDensity) {
+            val text = "\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5\n\u05D0\u05D1\u05D2"
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = 3 * fontSizeInPx,
+                ellipsis = true,
+                maxLines = 1
+            )
+
+            val box = paragraph.getBoundingBox(9)
+            assertThat(box.left).isEqualTo(0)
+            assertThat(box.right).isEqualTo(0)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test
+    fun getBoundingBox_ltr_multiLines_lineFeedEllipsized_maxHeight() {
+        with(defaultDensity) {
+            val text = "abc def\ndef"
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = 3 * fontSizeInPx,
+                ellipsis = true,
+                height = fontSizeInPx
+            )
+
+            val box = paragraph.getBoundingBox(9)
+            assertThat(box.left).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.right).isEqualTo(3 * fontSizeInPx)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test
+    fun getBoundingBox_rtl_multiLines_lineFeedEllipsized_maxHeight() {
+        with(defaultDensity) {
+            val text = "\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5\n\u05D0\u05D1\u05D2"
+            val fontSize = 50.sp
+            val fontSizeInPx = fontSize.toPx()
+            val paragraph = simpleParagraph(
+                text = text,
+                style = TextStyle(fontSize = fontSize),
+                width = 3 * fontSizeInPx,
+                ellipsis = true,
+                height = fontSizeInPx
+            )
+
+            val box = paragraph.getBoundingBox(9)
+            assertThat(box.left).isEqualTo(0)
+            assertThat(box.right).isEqualTo(0)
+            assertThat(box.top).isEqualTo(0)
+            assertThat(box.bottom).isEqualTo(fontSizeInPx)
+        }
+    }
+
+    @Test(expected = java.lang.IllegalArgumentException::class)
+    fun getBoundingBox_ltr_textPosition_negative_throws_exception() {
         with(defaultDensity) {
             val text = "abc"
             val fontSize = 50.sp
@@ -697,8 +829,7 @@
         }
     }
 
-    @Test(expected = java.lang.IndexOutOfBoundsException::class)
-    @SdkSuppress(minSdkVersion = 26)
+    @Test(expected = java.lang.IllegalArgumentException::class)
     fun getBoundingBox_ltr_textPosition_larger_than_length_throw_exception() {
         with(defaultDensity) {
             val text = "abc"
@@ -715,7 +846,7 @@
         }
     }
 
-    @Test(expected = java.lang.AssertionError::class)
+    @Test(expected = java.lang.IllegalArgumentException::class)
     fun getCursorRect_larger_than_length_throw_exception() {
         with(defaultDensity) {
             val text = "abc"
@@ -731,7 +862,7 @@
         }
     }
 
-    @Test(expected = java.lang.AssertionError::class)
+    @Test(expected = java.lang.IllegalArgumentException::class)
     fun getCursorRect_negative_throw_exception() {
         with(defaultDensity) {
             val text = "abc"
@@ -4288,7 +4419,7 @@
         }
     }
 
-    @Test(expected = AssertionError::class)
+    @Test(expected = IllegalArgumentException::class)
     fun getPathForRange_throws_exception_if_start_larger_than_end() {
         val text = "ab"
         val textStart = 0
@@ -4298,7 +4429,7 @@
         paragraph.getPathForRange(textEnd, textStart)
     }
 
-    @Test(expected = AssertionError::class)
+    @Test(expected = IllegalArgumentException::class)
     fun getPathForRange_throws_exception_if_start_is_smaller_than_zero() {
         val text = "ab"
         val textStart = 0
@@ -4308,7 +4439,7 @@
         paragraph.getPathForRange(textStart - 2, textEnd - 1)
     }
 
-    @Test(expected = AssertionError::class)
+    @Test(expected = IllegalArgumentException::class)
     fun getPathForRange_throws_exception_if_end_is_larger_than_text_length() {
         val text = "ab"
         val textStart = 0
@@ -4589,7 +4720,8 @@
         ellipsis: Boolean = false,
         spanStyles: List<AnnotatedString.Range<SpanStyle>> = listOf(),
         density: Density? = null,
-        width: Float = Float.MAX_VALUE
+        width: Float = Float.MAX_VALUE,
+        height: Float = Float.MAX_VALUE
     ): Paragraph {
         return Paragraph(
             text = text,
@@ -4599,7 +4731,7 @@
             ).merge(style),
             maxLines = maxLines,
             ellipsis = ellipsis,
-            constraints = Constraints(maxWidth = width.ceilToInt()),
+            constraints = Constraints(maxWidth = width.ceilToInt(), maxHeight = height.ceilToInt()),
             density = density ?: defaultDensity,
             fontFamilyResolver = UncachedFontFamilyResolver(context)
         )
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTextDirectionTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTextDirectionTest.kt
index c41aea5..6416362 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTextDirectionTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntegrationTextDirectionTest.kt
@@ -20,15 +20,15 @@
 import androidx.compose.ui.text.style.ResolvedTextDirection
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.Locale
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.Locale
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntrinsicIntegrationTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntrinsicIntegrationTest.kt
index 322fee0..aa8e859 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntrinsicIntegrationTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/ParagraphIntrinsicIntegrationTest.kt
@@ -21,12 +21,12 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.TextUnit
 import androidx.compose.ui.unit.sp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/StringTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/StringTest.kt
index d151b1e..87f155b 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/StringTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/StringTest.kt
@@ -17,12 +17,12 @@
 package androidx.compose.ui.text
 
 import androidx.compose.ui.text.intl.LocaleList
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.Locale
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import java.util.Locale
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/AndroidFontTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/AndroidFontTest.kt
index 21b13dd..d5390c5 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/AndroidFontTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/AndroidFontTest.kt
@@ -25,11 +25,11 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.io.File
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.File
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/DelegatingFontLoaderForDeprecatedUsageTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/DelegatingFontLoaderForDeprecatedUsageTest.kt
index 8d69e3a..d42258b 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/DelegatingFontLoaderForDeprecatedUsageTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/DelegatingFontLoaderForDeprecatedUsageTest.kt
@@ -25,9 +25,9 @@
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontFamilyResolverFileTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontFamilyResolverFileTest.kt
index d0c931e..daf1c07 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontFamilyResolverFileTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontFamilyResolverFileTest.kt
@@ -26,11 +26,11 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
+import java.io.File
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.File
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterTest.kt
index b6168c47..e5de0d1 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapterTest.kt
@@ -29,6 +29,9 @@
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.coroutines.coroutineContext
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineExceptionHandler
@@ -39,19 +42,16 @@
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.TestCoroutineDispatcher
 import kotlinx.coroutines.test.TestCoroutineScope
+import kotlinx.coroutines.test.advanceTimeBy
+import kotlinx.coroutines.test.advanceUntilIdle
 import kotlinx.coroutines.test.runBlockingTest
+import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.withTimeout
 import kotlinx.coroutines.yield
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.coroutines.coroutineContext
-import kotlinx.coroutines.test.advanceTimeBy
-import kotlinx.coroutines.test.advanceUntilIdle
-import kotlinx.coroutines.test.runCurrent
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/BackspaceCommandTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/BackspaceCommandTest.kt
index abce9eb..9d05c2b 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/BackspaceCommandTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/BackspaceCommandTest.kt
@@ -16,12 +16,12 @@
 package androidx.compose.ui.text.input
 
 import androidx.compose.ui.text.TextRange
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/MoveCursorCommandTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/MoveCursorCommandTest.kt
index fa563af..849d7f8 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/MoveCursorCommandTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/MoveCursorCommandTest.kt
@@ -17,12 +17,12 @@
 package androidx.compose.ui.text.input
 
 import androidx.compose.ui.text.TextRange
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleListTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleListTest.kt
index f7e356c..d43cf4e 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleListTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleListTest.kt
@@ -16,11 +16,11 @@
 
 package androidx.compose.ui.text.intl
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleTest.kt
index a054588..44ecab1 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/intl/LocaleTest.kt
@@ -16,11 +16,11 @@
 
 package androidx.compose.ui.text.intl
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/ComposeMatchers.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/ComposeMatchers.kt
index c377578..90b4e7c 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/ComposeMatchers.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/ComposeMatchers.kt
@@ -18,8 +18,8 @@
 
 import android.graphics.Bitmap
 import android.graphics.Typeface
-import androidx.compose.ui.text.font.TypefaceResult
 import androidx.compose.ui.geometry.Rect
+import androidx.compose.ui.text.font.TypefaceResult
 import com.google.common.truth.IntegerSubject
 import com.google.common.truth.Truth.assertAbout
 
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/RectSubject.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/RectSubject.kt
index 4275a98..d253cae 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/RectSubject.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/matchers/RectSubject.kt
@@ -17,11 +17,11 @@
 package androidx.compose.ui.text.matchers
 
 import androidx.compose.ui.geometry.Rect
-import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Fact.simpleFact
 import com.google.common.truth.FailureMetadata
 import com.google.common.truth.Subject
 import com.google.common.truth.Subject.Factory
+import com.google.common.truth.Truth.assertThat
 
 internal class RectSubject private constructor(
     failureMetadata: FailureMetadata?,
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceCacheTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceCacheTest.kt
index 2f01f2f..162b8b0 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceCacheTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceCacheTest.kt
@@ -18,11 +18,11 @@
 
 import androidx.compose.ui.text.FontTestData
 import androidx.compose.ui.text.matchers.assertThat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceSubsetTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceSubsetTest.kt
index 8667cf4..0410d86 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceSubsetTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/AndroidTypefaceSubsetTest.kt
@@ -24,11 +24,11 @@
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.text.font.Typeface
 import androidx.compose.ui.text.matchers.assertThat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/GenericFontFamilyCacheTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/GenericFontFamilyCacheTest.kt
index 7852e76..121461be 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/GenericFontFamilyCacheTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/platform/GenericFontFamilyCacheTest.kt
@@ -21,10 +21,10 @@
 import androidx.compose.ui.text.font.FontSynthesis
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.text.matchers.assertThat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt
index cc2ed1d..677b664 100644
--- a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt
+++ b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt
@@ -16,7 +16,6 @@
 
 package androidx.compose.ui.text
 
-import java.util.Locale as JavaLocale
 import android.os.Build
 import android.text.Spannable
 import android.text.SpannableString
@@ -45,15 +44,15 @@
 import androidx.compose.ui.text.android.LayoutCompat.BREAK_STRATEGY_HIGH_QUALITY
 import androidx.compose.ui.text.android.LayoutCompat.BREAK_STRATEGY_SIMPLE
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_ALIGNMENT
-import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_HYPHENATION_FREQUENCY
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_BREAK_STRATEGY
+import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_HYPHENATION_FREQUENCY
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_JUSTIFICATION_MODE
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_LINESPACING_MULTIPLIER
-import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_NONE
-import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_FULL
-import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_FULL_FAST
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_LINE_BREAK_STYLE
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_LINE_BREAK_WORD_STYLE
+import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_FULL
+import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_FULL_FAST
+import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_NONE
 import androidx.compose.ui.text.android.LayoutCompat.JUSTIFICATION_MODE_INTER_WORD
 import androidx.compose.ui.text.android.LayoutCompat.LINE_BREAK_STYLE_LOOSE
 import androidx.compose.ui.text.android.LayoutCompat.LINE_BREAK_STYLE_NONE
@@ -80,6 +79,7 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.TextUnit
 import androidx.compose.ui.unit.sp
+import java.util.Locale as JavaLocale
 
 /**
  * Android specific implementation for [Paragraph]
@@ -310,6 +310,9 @@
      * the top, bottom, left and right of a character.
      */
     override fun getBoundingBox(offset: Int): Rect {
+        require(offset in charSequence.indices) {
+            "offset($offset) is out of bounds [0,${charSequence.length})"
+        }
         val rectF = layout.getBoundingBox(offset)
         return with(rectF) { Rect(left = left, top = top, right = right, bottom = bottom) }
     }
@@ -348,11 +351,9 @@
     }
 
     override fun getPathForRange(start: Int, end: Int): Path {
-        if (start !in 0..end || end > charSequence.length) {
-            throw AssertionError(
-                "Start($start) or End($end) is out of Range(0..${charSequence.length})," +
-                    " or start > end!"
-            )
+        require(start in 0..end && end <= charSequence.length) {
+            "start($start) or end($end) is out of range [0..${charSequence.length}]," +
+                " or start > end!"
         }
         val path = android.graphics.Path()
         layout.getSelectionPath(start, end, path)
@@ -360,8 +361,8 @@
     }
 
     override fun getCursorRect(offset: Int): Rect {
-        if (offset !in 0..charSequence.length) {
-            throw AssertionError("offset($offset) is out of bounds (0,${charSequence.length}")
+        require(offset in 0..charSequence.length) {
+            "offset($offset) is out of bounds [0,${charSequence.length}]"
         }
         val horizontal = layout.getPrimaryHorizontal(offset)
         val line = layout.getLineForOffset(offset)
diff --git a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/intl/AndroidLocaleDelegate.android.kt b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/intl/AndroidLocaleDelegate.android.kt
index 0f87b74..8c3d370 100644
--- a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/intl/AndroidLocaleDelegate.android.kt
+++ b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/intl/AndroidLocaleDelegate.android.kt
@@ -16,10 +16,10 @@
 
 package androidx.compose.ui.text.intl
 
-import androidx.annotation.RequiresApi
 import android.os.LocaleList as AndroidLocaleList
-import java.util.Locale as JavaLocale
+import androidx.annotation.RequiresApi
 import androidx.compose.ui.text.platform.createSynchronizedObject
+import java.util.Locale as JavaLocale
 
 /**
  * An Android implementation of Locale object
diff --git a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidTypeface.android.kt b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidTypeface.android.kt
index e525241..f5fd858 100644
--- a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidTypeface.android.kt
+++ b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/platform/AndroidTypeface.android.kt
@@ -16,11 +16,11 @@
 
 package androidx.compose.ui.text.platform
 
-import androidx.compose.ui.text.font.Typeface
+import android.graphics.Typeface as NativeTypeface
 import androidx.compose.ui.text.font.FontStyle
 import androidx.compose.ui.text.font.FontSynthesis
 import androidx.compose.ui.text.font.FontWeight
-import android.graphics.Typeface as NativeTypeface
+import androidx.compose.ui.text.font.Typeface
 
 /**
  * An interface of Android specific Typeface.
diff --git a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/caches/LruCache.kt b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/caches/LruCache.kt
index abf9bea..7cbb111 100644
--- a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/caches/LruCache.kt
+++ b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/caches/LruCache.kt
@@ -18,7 +18,6 @@
 
 import androidx.compose.ui.text.platform.createSynchronizedObject
 import androidx.compose.ui.text.platform.synchronized
-
 import kotlin.jvm.JvmName
 
 /**
diff --git a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter.kt b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter.kt
index 10b9df2..783254f 100644
--- a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter.kt
+++ b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter.kt
@@ -28,6 +28,9 @@
 import androidx.compose.ui.text.platform.synchronized
 import androidx.compose.ui.util.fastForEach
 import androidx.compose.ui.util.fastMap
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.coroutines.coroutineContext
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineExceptionHandler
 import kotlinx.coroutines.CoroutineScope
@@ -42,9 +45,6 @@
 import kotlinx.coroutines.withTimeout
 import kotlinx.coroutines.withTimeoutOrNull
 import kotlinx.coroutines.yield
-import kotlin.coroutines.CoroutineContext
-import kotlin.coroutines.EmptyCoroutineContext
-import kotlin.coroutines.coroutineContext
 
 internal class FontListFontFamilyTypefaceAdapter(
     private val asyncTypefaceCache: AsyncTypefaceCache = AsyncTypefaceCache(),
diff --git a/compose/ui/ui-text/src/desktopMain/kotlin/androidx/compose/ui/text/platform/DesktopFont.desktop.kt b/compose/ui/ui-text/src/desktopMain/kotlin/androidx/compose/ui/text/platform/DesktopFont.desktop.kt
index 4a7a9f2..9471053 100644
--- a/compose/ui/ui-text/src/desktopMain/kotlin/androidx/compose/ui/text/platform/DesktopFont.desktop.kt
+++ b/compose/ui/ui-text/src/desktopMain/kotlin/androidx/compose/ui/text/platform/DesktopFont.desktop.kt
@@ -28,8 +28,8 @@
 import java.io.File
 import java.security.MessageDigest
 import org.jetbrains.skia.Data
-import org.jetbrains.skia.makeFromFile
 import org.jetbrains.skia.Typeface as SkTypeface
+import org.jetbrains.skia.makeFromFile
 
 actual sealed class PlatformFont : Font {
     actual abstract val identity: String
diff --git a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt
index b772c2f..f9c9607 100644
--- a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt
+++ b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt
@@ -21,10 +21,10 @@
 import androidx.compose.ui.graphics.Canvas
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.test.junit4.createComposeRule
-import androidx.compose.ui.text.font.createFontFamilyResolver
 import androidx.compose.ui.text.font.FontFamily
 import androidx.compose.ui.text.font.FontStyle
 import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.font.createFontFamilyResolver
 import androidx.compose.ui.text.platform.Font
 import androidx.compose.ui.text.style.TextDirection
 import androidx.compose.ui.unit.Constraints
diff --git a/compose/ui/ui-text/src/jvmMain/kotlin/androidx/compose/ui/text/JvmAnnotatedString.jvm.kt b/compose/ui/ui-text/src/jvmMain/kotlin/androidx/compose/ui/text/JvmAnnotatedString.jvm.kt
index 09a611f..62a82c2 100644
--- a/compose/ui/ui-text/src/jvmMain/kotlin/androidx/compose/ui/text/JvmAnnotatedString.jvm.kt
+++ b/compose/ui/ui-text/src/jvmMain/kotlin/androidx/compose/ui/text/JvmAnnotatedString.jvm.kt
@@ -18,7 +18,6 @@
 
 import androidx.compose.ui.text.AnnotatedString.Range
 import androidx.compose.ui.util.fastMap
-
 import java.util.SortedSet
 
 /**
diff --git a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/SkiaParagraph.skiko.kt b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/SkiaParagraph.skiko.kt
index b91bd0f..1dde5de 100644
--- a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/SkiaParagraph.skiko.kt
+++ b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/SkiaParagraph.skiko.kt
@@ -16,7 +16,6 @@
 
 package androidx.compose.ui.text
 
-import org.jetbrains.skia.Rect as SkRect
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.graphics.BlendMode
@@ -35,6 +34,7 @@
 import androidx.compose.ui.text.style.TextDecoration
 import androidx.compose.ui.unit.Constraints
 import kotlin.math.floor
+import org.jetbrains.skia.Rect as SkRect
 import org.jetbrains.skia.paragraph.LineMetrics
 import org.jetbrains.skia.paragraph.RectHeightMode
 import org.jetbrains.skia.paragraph.RectWidthMode
diff --git a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.sikio.kt b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.sikio.kt
index 5be43e1f..73d9583 100644
--- a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.sikio.kt
+++ b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.sikio.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.text.font
 
-import androidx.compose.ui.text.platform.FontCache
 import androidx.compose.ui.text.ExperimentalTextApi
+import androidx.compose.ui.text.platform.FontCache
 import kotlin.coroutines.CoroutineContext
 
 /**
diff --git a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/PlatformFont.skiko.kt b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/PlatformFont.skiko.kt
index c8a98c8..9eb93ef 100644
--- a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/PlatformFont.skiko.kt
+++ b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/PlatformFont.skiko.kt
@@ -17,6 +17,7 @@
 
 import androidx.compose.ui.text.Cache
 import androidx.compose.ui.text.ExperimentalTextApi
+import androidx.compose.ui.text.font.Font
 import androidx.compose.ui.text.font.FontFamily
 import androidx.compose.ui.text.font.FontListFontFamily
 import androidx.compose.ui.text.font.FontLoadingStrategy
@@ -24,13 +25,12 @@
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.text.font.GenericFontFamily
 import androidx.compose.ui.text.font.LoadedFontFamily
+import androidx.compose.ui.text.font.Typeface
+import androidx.compose.ui.text.font.createFontFamilyResolver
 import org.jetbrains.skia.FontMgr
 import org.jetbrains.skia.Typeface as SkTypeface
 import org.jetbrains.skia.paragraph.FontCollection
 import org.jetbrains.skia.paragraph.TypefaceFontProvider
-import androidx.compose.ui.text.font.Font
-import androidx.compose.ui.text.font.Typeface
-import androidx.compose.ui.text.font.createFontFamilyResolver
 
 expect sealed class PlatformFont : Font {
     abstract val identity: String
diff --git a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt
index bf56205..58f1b98 100644
--- a/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt
+++ b/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt
@@ -15,22 +15,6 @@
  */
 package androidx.compose.ui.text.platform
 
-import org.jetbrains.skia.Font as SkFont
-import org.jetbrains.skia.FontStyle as SkFontStyle
-import org.jetbrains.skia.paragraph.Alignment as SkAlignment
-import org.jetbrains.skia.paragraph.BaselineMode
-import org.jetbrains.skia.paragraph.DecorationLineStyle as SkDecorationLineStyle
-import org.jetbrains.skia.paragraph.DecorationStyle as SkDecorationStyle
-import org.jetbrains.skia.paragraph.Direction as SkDirection
-import org.jetbrains.skia.paragraph.Paragraph as SkParagraph
-import org.jetbrains.skia.paragraph.ParagraphBuilder as SkParagraphBuilder
-import org.jetbrains.skia.paragraph.ParagraphStyle
-import org.jetbrains.skia.paragraph.PlaceholderAlignment
-import org.jetbrains.skia.paragraph.PlaceholderStyle
-import org.jetbrains.skia.paragraph.Shadow as SkShadow
-import org.jetbrains.skia.paragraph.StrutStyle
-import org.jetbrains.skia.paragraph.TextBox
-import org.jetbrains.skia.paragraph.TextStyle as SkTextStyle
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shadow
 import androidx.compose.ui.graphics.isSpecified
@@ -65,7 +49,23 @@
 import androidx.compose.ui.unit.isSpecified
 import androidx.compose.ui.unit.isUnspecified
 import androidx.compose.ui.unit.sp
+import org.jetbrains.skia.Font as SkFont
+import org.jetbrains.skia.FontStyle as SkFontStyle
 import org.jetbrains.skia.Paint
+import org.jetbrains.skia.paragraph.Alignment as SkAlignment
+import org.jetbrains.skia.paragraph.BaselineMode
+import org.jetbrains.skia.paragraph.DecorationLineStyle as SkDecorationLineStyle
+import org.jetbrains.skia.paragraph.DecorationStyle as SkDecorationStyle
+import org.jetbrains.skia.paragraph.Direction as SkDirection
+import org.jetbrains.skia.paragraph.Paragraph as SkParagraph
+import org.jetbrains.skia.paragraph.ParagraphBuilder as SkParagraphBuilder
+import org.jetbrains.skia.paragraph.ParagraphStyle
+import org.jetbrains.skia.paragraph.PlaceholderAlignment
+import org.jetbrains.skia.paragraph.PlaceholderStyle
+import org.jetbrains.skia.paragraph.Shadow as SkShadow
+import org.jetbrains.skia.paragraph.StrutStyle
+import org.jetbrains.skia.paragraph.TextBox
+import org.jetbrains.skia.paragraph.TextStyle as SkTextStyle
 
 private val DefaultFontSize = 16.sp
 
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/AnnotatedStringTransformTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/AnnotatedStringTransformTest.kt
index a510bfb..2f4bc88 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/AnnotatedStringTransformTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/AnnotatedStringTransformTest.kt
@@ -19,10 +19,10 @@
 import androidx.compose.ui.text.intl.LocaleList
 import androidx.compose.ui.unit.sp
 import com.google.common.truth.Truth.assertThat
+import java.util.Locale
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.Locale
 
 @RunWith(JUnit4::class)
 class AnnotatedStringTransformTest {
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/MultiParagraphTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/MultiParagraphTest.kt
index 01b844a..469aa3f 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/MultiParagraphTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/MultiParagraphTest.kt
@@ -17,10 +17,10 @@
 package androidx.compose.ui.text
 
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.mock
 
 @RunWith(JUnit4::class)
 class MultiParagraphTest {
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/ParagraphStyleTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/ParagraphStyleTest.kt
index 00d130c..1d3f964 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/ParagraphStyleTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/ParagraphStyleTest.kt
@@ -19,8 +19,8 @@
 import androidx.compose.ui.text.style.Hyphens
 import androidx.compose.ui.text.style.LineBreak
 import androidx.compose.ui.text.style.LineHeightStyle
-import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.LineHeightStyle.Alignment
+import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextDirection
 import androidx.compose.ui.text.style.TextIndent
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextInputServiceTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextInputServiceTest.kt
index 998ac9c..f5576cf 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextInputServiceTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextInputServiceTest.kt
@@ -24,15 +24,15 @@
 import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.input.TextInputService
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 import org.mockito.kotlin.any
 import org.mockito.kotlin.eq
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.never
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @Suppress("DEPRECATION")
 @RunWith(JUnit4::class)
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextStyleLayoutAttributesTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextStyleLayoutAttributesTest.kt
index d6376fd..7b894df 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextStyleLayoutAttributesTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextStyleLayoutAttributesTest.kt
@@ -27,8 +27,8 @@
 import androidx.compose.ui.text.style.BaselineShift
 import androidx.compose.ui.text.style.LineBreak
 import androidx.compose.ui.text.style.LineHeightStyle
-import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.LineHeightStyle.Alignment
+import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextDecoration
 import androidx.compose.ui.text.style.TextDirection
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/font/AsyncFontListLoaderTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/font/AsyncFontListLoaderTest.kt
index 61855e3f..89883bd 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/font/AsyncFontListLoaderTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/font/AsyncFontListLoaderTest.kt
@@ -18,6 +18,9 @@
 
 import androidx.compose.ui.text.ExperimentalTextApi
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.coroutines.coroutineContext
 import kotlinx.coroutines.CoroutineExceptionHandler
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.runBlocking
@@ -25,9 +28,6 @@
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.coroutines.coroutineContext
 
 @ExperimentalTextApi
 @RunWith(JUnit4::class)
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/input/EditProcessorTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/input/EditProcessorTest.kt
index dc71dd4..64bd8a4 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/input/EditProcessorTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/input/EditProcessorTest.kt
@@ -19,6 +19,10 @@
 import androidx.compose.ui.text.InternalTextApi
 import androidx.compose.ui.text.TextRange
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertFailsWith
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 import org.mockito.kotlin.any
 import org.mockito.kotlin.argumentCaptor
 import org.mockito.kotlin.eq
@@ -27,10 +31,6 @@
 import org.mockito.kotlin.reset
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import kotlin.test.assertFailsWith
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @OptIn(InternalTextApi::class)
 @RunWith(JUnit4::class)
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/matchers/EditBufferSubject.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/matchers/EditBufferSubject.kt
index 2505dfe..fcb894e 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/matchers/EditBufferSubject.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/matchers/EditBufferSubject.kt
@@ -21,8 +21,8 @@
 import androidx.compose.ui.text.input.PartialGapBuffer
 import com.google.common.truth.FailureMetadata
 import com.google.common.truth.Subject
-import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertAbout
+import com.google.common.truth.Truth.assertThat
 
 @OptIn(InternalTextApi::class)
 internal fun assertThat(buffer: PartialGapBuffer): EditBufferSubject {
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/style/LineHeightStyleTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/style/LineHeightStyleTest.kt
index 46c7cfd..1aeef097 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/style/LineHeightStyleTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/style/LineHeightStyleTest.kt
@@ -18,8 +18,8 @@
 package androidx.compose.ui.text.style
 
 import androidx.compose.ui.text.ExperimentalTextApi
-import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import androidx.compose.ui.text.style.LineHeightStyle.Alignment
+import androidx.compose.ui.text.style.LineHeightStyle.Trim
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/BoundsTest.kt b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/BoundsTest.kt
index a8d4eee..1ade585 100644
--- a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/BoundsTest.kt
+++ b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/BoundsTest.kt
@@ -34,11 +34,11 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @UiToolingDataApi
 @MediumTest
diff --git a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/Inspectable.kt b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/Inspectable.kt
index cd30be8..b10d6135 100644
--- a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/Inspectable.kt
+++ b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/Inspectable.kt
@@ -17,10 +17,10 @@
 package androidx.compose.ui.tooling.data
 
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.tooling.CompositionData
-import androidx.compose.runtime.InternalComposeApi
 import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.InternalComposeApi
 import androidx.compose.runtime.currentComposer
+import androidx.compose.runtime.tooling.CompositionData
 import androidx.compose.runtime.tooling.LocalInspectionTables
 import androidx.compose.ui.platform.LocalInspectionMode
 import java.util.Collections
diff --git a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/InspectableTests.kt b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/InspectableTests.kt
index 5f18bd8..a0802ab 100644
--- a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/InspectableTests.kt
+++ b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/InspectableTests.kt
@@ -35,6 +35,8 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertNotEquals
@@ -42,8 +44,6 @@
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @UiToolingDataApi
 @MediumTest
diff --git a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/ToolingTest.kt b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/ToolingTest.kt
index cf7783c..96411de 100644
--- a/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/ToolingTest.kt
+++ b/compose/ui/ui-tooling-data/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/data/ToolingTest.kt
@@ -27,12 +27,12 @@
 import androidx.compose.ui.R
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.platform.ViewRootForTest
-import org.junit.Before
-import org.junit.Rule
 import java.util.Collections
 import java.util.WeakHashMap
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Before
+import org.junit.Rule
 
 open class ToolingTest {
     @Suppress("DEPRECATION")
diff --git a/compose/ui/ui-tooling-preview/build.gradle b/compose/ui/ui-tooling-preview/build.gradle
index d6d3a42..a2aa077 100644
--- a/compose/ui/ui-tooling-preview/build.gradle
+++ b/compose/ui/ui-tooling-preview/build.gradle
@@ -109,7 +109,7 @@
 }
 
 androidx {
-    name = "Compose Tooling API"
+    name = "Compose UI Preview Tooling"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Compose tooling library API. This library provides the API required to declare" +
diff --git a/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/PreviewParameter.kt b/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/PreviewParameter.kt
index ba55dd6..348cc14 100644
--- a/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/PreviewParameter.kt
+++ b/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/PreviewParameter.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.tooling.preview
 
-import kotlin.reflect.KClass
 import kotlin.jvm.JvmDefaultWithCompatibility
+import kotlin.reflect.KClass
 
 /**
  * Interface to be implemented by any provider of values that you want to be injected as @[Preview]
diff --git a/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/LazyColumnPreview.kt b/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/LazyColumnPreview.kt
index a9252ae..03e6561 100644
--- a/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/LazyColumnPreview.kt
+++ b/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/LazyColumnPreview.kt
@@ -18,12 +18,12 @@
 
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.LazyRow
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.material.Button
 import androidx.compose.material.Surface
 import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.tooling.preview.Preview
 
 @Preview
 @Composable
diff --git a/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/ToolingTest.kt b/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/ToolingTest.kt
index 5bf2e09..b895328 100644
--- a/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/ToolingTest.kt
+++ b/compose/ui/ui-tooling/src/androidAndroidTest/kotlin/androidx/compose/ui/tooling/ToolingTest.kt
@@ -24,10 +24,10 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.layout.onGloballyPositioned
-import org.junit.Before
-import org.junit.Rule
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Before
+import org.junit.Rule
 
 open class ToolingTest {
     @Suppress("DEPRECATION")
diff --git a/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/Inspectable.kt b/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/Inspectable.kt
index f859c89..9014cde 100644
--- a/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/Inspectable.kt
+++ b/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/Inspectable.kt
@@ -17,9 +17,9 @@
 package androidx.compose.ui.tooling
 
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.tooling.CompositionData
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.currentComposer
+import androidx.compose.runtime.tooling.CompositionData
 import androidx.compose.runtime.tooling.LocalInspectionTables
 import androidx.compose.ui.platform.LocalInspectionMode
 import java.util.Collections
diff --git a/compose/ui/ui-unit/samples/build.gradle b/compose/ui/ui-unit/samples/build.gradle
index a1409de..45bec6c 100644
--- a/compose/ui/ui-unit/samples/build.gradle
+++ b/compose/ui/ui-unit/samples/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Simple Unit Classes Samples"
+    name = "Compose UI Simple Unit Classes Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Simple Unit Classes"
diff --git a/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/DpDeviceTest.kt b/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/DpDeviceTest.kt
index 29722d3..dc7c3ea 100644
--- a/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/DpDeviceTest.kt
+++ b/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/DpDeviceTest.kt
@@ -18,13 +18,13 @@
 
 import android.app.Activity
 import android.util.TypedValue
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/SpDeviceTest.kt b/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/SpDeviceTest.kt
index c7ed473..8c08f71 100644
--- a/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/SpDeviceTest.kt
+++ b/compose/ui/ui-unit/src/androidAndroidTest/kotlin/androidx/compose/ui/unit/SpDeviceTest.kt
@@ -18,13 +18,13 @@
 
 import android.app.Activity
 import android.util.TypedValue
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui-unit/src/commonMain/kotlin/androidx/compose/ui/unit/Density.kt b/compose/ui/ui-unit/src/commonMain/kotlin/androidx/compose/ui/unit/Density.kt
index c173679..bd1d343 100644
--- a/compose/ui/ui-unit/src/commonMain/kotlin/androidx/compose/ui/unit/Density.kt
+++ b/compose/ui/ui-unit/src/commonMain/kotlin/androidx/compose/ui/unit/Density.kt
@@ -21,8 +21,8 @@
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.isSpecified
-import kotlin.math.roundToInt
 import androidx.compose.ui.unit.internal.JvmDefaultWithCompatibility
+import kotlin.math.roundToInt
 
 /**
  * A density of the screen. Used for convert [Dp] to pixels.
diff --git a/compose/ui/ui-viewbinding/samples/build.gradle b/compose/ui/ui-viewbinding/samples/build.gradle
index 29fab3b..88219c6 100644
--- a/compose/ui/ui-viewbinding/samples/build.gradle
+++ b/compose/ui/ui-viewbinding/samples/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Simple Unit Classes Samples"
+    name = "Compose UI Simple Unit Classes Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Simple Unit Classes"
diff --git a/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/AndroidViewBindingTest.kt b/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/AndroidViewBindingTest.kt
index f1b25c9..908b85a 100644
--- a/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/AndroidViewBindingTest.kt
+++ b/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/AndroidViewBindingTest.kt
@@ -33,8 +33,8 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.viewinterop.AndroidViewBinding
 import androidx.compose.ui.viewbinding.samples.databinding.SampleLayoutBinding
+import androidx.compose.ui.viewinterop.AndroidViewBinding
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.MediumTest
diff --git a/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/FragmentRecreateTest.kt b/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/FragmentRecreateTest.kt
index 8dea4a0..1439a9b 100644
--- a/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/FragmentRecreateTest.kt
+++ b/compose/ui/ui-viewbinding/samples/src/androidTest/java/androidx/compose/ui/samples/FragmentRecreateTest.kt
@@ -20,10 +20,10 @@
 import android.view.LayoutInflater
 import android.view.ViewGroup
 import androidx.activity.compose.setContent
+import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.viewbinding.samples.R
 import androidx.compose.ui.viewbinding.samples.databinding.TestFragmentLayoutBinding
 import androidx.compose.ui.viewinterop.AndroidViewBinding
-import androidx.compose.ui.platform.ComposeView
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
 import androidx.fragment.app.FragmentContainerView
diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt
index 39aa37f..54a68e6 100644
--- a/compose/ui/ui/api/current.txt
+++ b/compose/ui/ui/api/current.txt
@@ -1718,10 +1718,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-    method public static androidx.compose.ui.Modifier motionEventSpy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super android.view.MotionEvent,kotlin.Unit> watcher);
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -3048,7 +3044,7 @@
     method public static androidx.compose.ui.text.AnnotatedString getEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static boolean getFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static androidx.compose.ui.semantics.ScrollAxisRange getHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
-    method public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
+    method @Deprecated public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static int getLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static String getPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static androidx.compose.ui.semantics.ProgressBarRangeInfo getProgressBarRangeInfo(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
@@ -3075,7 +3071,7 @@
     method public static void pageUp(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void password(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static void pasteText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
-    method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
+    method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int imeActionType, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void popup(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static void requestFocus(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void scrollBy(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,java.lang.Boolean>? action);
@@ -3089,7 +3085,7 @@
     method public static void setEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.text.AnnotatedString);
     method public static void setFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver, boolean);
     method public static void setHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
-    method public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
+    method @Deprecated public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
     method public static void setLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
     method public static void setPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver, String);
     method public static void setProgress(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Boolean>? action);
diff --git a/compose/ui/ui/api/public_plus_experimental_current.txt b/compose/ui/ui/api/public_plus_experimental_current.txt
index baaa2b1..044964f 100644
--- a/compose/ui/ui/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui/api/public_plus_experimental_current.txt
@@ -1863,7 +1863,7 @@
   }
 
   public final class PointerInteropFilter_androidKt {
-    method public static androidx.compose.ui.Modifier motionEventSpy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super android.view.MotionEvent,kotlin.Unit> watcher);
+    method @androidx.compose.ui.ExperimentalComposeUiApi public static androidx.compose.ui.Modifier motionEventSpy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super android.view.MotionEvent,kotlin.Unit> watcher);
     method @androidx.compose.ui.ExperimentalComposeUiApi public static androidx.compose.ui.Modifier pointerInteropFilter(androidx.compose.ui.Modifier, optional androidx.compose.ui.input.pointer.RequestDisallowInterceptTouchEvent? requestDisallowInterceptTouchEvent, kotlin.jvm.functions.Function1<? super android.view.MotionEvent,java.lang.Boolean> onTouchEvent);
   }
 
@@ -3320,7 +3320,7 @@
     method public static androidx.compose.ui.text.AnnotatedString getEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static boolean getFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static androidx.compose.ui.semantics.ScrollAxisRange getHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
-    method public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
+    method @Deprecated public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static int getLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static String getPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static androidx.compose.ui.semantics.ProgressBarRangeInfo getProgressBarRangeInfo(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
@@ -3348,7 +3348,7 @@
     method public static void pageUp(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void password(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static void pasteText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
-    method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
+    method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int imeActionType, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void popup(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static void requestFocus(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void scrollBy(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,java.lang.Boolean>? action);
@@ -3362,7 +3362,7 @@
     method public static void setEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.text.AnnotatedString);
     method public static void setFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver, boolean);
     method public static void setHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
-    method public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
+    method @Deprecated public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
     method public static void setLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
     method public static void setPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver, String);
     method public static void setProgress(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Boolean>? action);
diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt
index 7ce042d..bea4087 100644
--- a/compose/ui/ui/api/restricted_current.txt
+++ b/compose/ui/ui/api/restricted_current.txt
@@ -1718,10 +1718,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-    method public static androidx.compose.ui.Modifier motionEventSpy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super android.view.MotionEvent,kotlin.Unit> watcher);
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -3097,7 +3093,7 @@
     method public static androidx.compose.ui.text.AnnotatedString getEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static boolean getFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static androidx.compose.ui.semantics.ScrollAxisRange getHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
-    method public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
+    method @Deprecated public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static int getLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static String getPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static androidx.compose.ui.semantics.ProgressBarRangeInfo getProgressBarRangeInfo(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
@@ -3124,7 +3120,7 @@
     method public static void pageUp(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void password(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static void pasteText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
-    method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
+    method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int imeActionType, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void popup(androidx.compose.ui.semantics.SemanticsPropertyReceiver);
     method public static void requestFocus(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action);
     method public static void scrollBy(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,java.lang.Boolean>? action);
@@ -3138,7 +3134,7 @@
     method public static void setEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.text.AnnotatedString);
     method public static void setFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver, boolean);
     method public static void setHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
-    method public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
+    method @Deprecated public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
     method public static void setLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int);
     method public static void setPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver, String);
     method public static void setProgress(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Boolean>? action);
diff --git a/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/OnPositionedBenchmark.kt b/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/OnPositionedBenchmark.kt
index b14c52c..564fce8a 100644
--- a/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/OnPositionedBenchmark.kt
+++ b/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/OnPositionedBenchmark.kt
@@ -29,11 +29,11 @@
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/AndroidTapIntegrationBenchmark.kt b/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/AndroidTapIntegrationBenchmark.kt
index c6c0d53..87a6eab 100644
--- a/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/AndroidTapIntegrationBenchmark.kt
+++ b/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/AndroidTapIntegrationBenchmark.kt
@@ -32,13 +32,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.TimeUnit
 import org.junit.Assert
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 /**
  * Benchmark for simply tapping on an item in Android.
diff --git a/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/VelocityTrackerBenchmark.kt b/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/VelocityTrackerBenchmark.kt
index eb56a62..058b533 100644
--- a/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/VelocityTrackerBenchmark.kt
+++ b/compose/ui/ui/benchmark/src/androidTest/java/androidx/compose/ui/benchmark/input/pointer/VelocityTrackerBenchmark.kt
@@ -17,10 +17,8 @@
 
 import androidx.compose.testutils.benchmark.ComposeBenchmarkRule
 import androidx.compose.ui.input.pointer.util.VelocityTracker1D
-
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
-
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/compose/ui/ui/build.gradle b/compose/ui/ui/build.gradle
index 3beea81..caff544 100644
--- a/compose/ui/ui/build.gradle
+++ b/compose/ui/ui/build.gradle
@@ -217,7 +217,7 @@
 }
 
 androidx {
-    name = "Compose UI primitives"
+    name = "Compose UI"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2019"
     description = "Compose UI primitives. This library contains the primitives that form the Compose UI Toolkit, such as drawing, measurement and layout."
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/MultipleCollect.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/MultipleCollect.kt
index 0496cc5..a6a1c30 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/MultipleCollect.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/MultipleCollect.kt
@@ -18,13 +18,13 @@
 
 package androidx.compose.ui.demos
 
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.layoutId
 import androidx.compose.ui.unit.Constraints
 
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/PopupDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/PopupDemo.kt
index c656ad0..b5cc1be 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/PopupDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/PopupDemo.kt
@@ -27,9 +27,9 @@
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.requiredHeight
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.rememberScrollState
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt
index 4e65849..7576a56 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt
@@ -33,12 +33,12 @@
 import androidx.compose.ui.demos.focus.FocusInPopupDemo
 import androidx.compose.ui.demos.focus.FocusManagerMoveFocusDemo
 import androidx.compose.ui.demos.focus.FocusableDemo
+import androidx.compose.ui.demos.focus.LazyListChildFocusDemos
+import androidx.compose.ui.demos.focus.NestedLazyListFocusSearchDemo
 import androidx.compose.ui.demos.focus.OneDimensionalFocusSearchDemo
 import androidx.compose.ui.demos.focus.ReuseFocusRequesterDemo
 import androidx.compose.ui.demos.focus.ScrollableLazyRowFocusDemo
 import androidx.compose.ui.demos.focus.ScrollableRowFocusDemo
-import androidx.compose.ui.demos.focus.LazyListChildFocusDemos
-import androidx.compose.ui.demos.focus.NestedLazyListFocusSearchDemo
 import androidx.compose.ui.demos.focus.TwoDimensionalFocusSearchDemo
 import androidx.compose.ui.demos.gestures.ButtonMetaStateDemo
 import androidx.compose.ui.demos.gestures.DetectTapGesturesDemo
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/DragSlopExceededGestureFilterDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/DragSlopExceededGestureFilterDemo.kt
index 4ffbac4..9834a47 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/DragSlopExceededGestureFilterDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/DragSlopExceededGestureFilterDemo.kt
@@ -17,9 +17,9 @@
 package androidx.compose.ui.demos.gestures
 
 import androidx.compose.foundation.background
+import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitTouchSlopOrCancellation
-import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
index e79abb8..f6aa708 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
@@ -18,6 +18,7 @@
 
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.gestures.rememberScrollableState
 import androidx.compose.foundation.gestures.scrollable
@@ -28,15 +29,14 @@
 import androidx.compose.foundation.layout.size
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableFloatStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.DrawModifier
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.setValue
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.graphics.drawscope.clipRect
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/NestedScrollingDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/NestedScrollingDemo.kt
index a6af47f..213634a 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/NestedScrollingDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/NestedScrollingDemo.kt
@@ -19,26 +19,26 @@
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
-import androidx.compose.foundation.gestures.rememberScrollableState
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.detectTapGestures
+import androidx.compose.foundation.gestures.rememberScrollableState
 import androidx.compose.foundation.gestures.scrollable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableFloatStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.clipToBounds
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.setValue
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.layout.Layout
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/RawDragGestureDetectorDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/RawDragGestureDetectorDemo.kt
index 004e2b7..e1ec630 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/RawDragGestureDetectorDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/RawDragGestureDetectorDemo.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.demos.gestures
 
 import androidx.compose.foundation.background
-import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitEachGesture
+import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.drag
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/ScrollGestureFilterDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/ScrollGestureFilterDemo.kt
index 6d9fc2f..695fb40 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/ScrollGestureFilterDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/ScrollGestureFilterDemo.kt
@@ -16,10 +16,11 @@
 
 package androidx.compose.ui.demos.gestures
 
-import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.background
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.rememberScrollableState
 import androidx.compose.foundation.gestures.scrollable
+import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.interaction.collectIsDraggedAsState
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
@@ -29,13 +30,12 @@
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableFloatStateOf
+import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.unit.Dp
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
index 206cbf3..f755807 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
@@ -18,6 +18,7 @@
 
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.gestures.rememberScrollableState
 import androidx.compose.foundation.gestures.scrollable
@@ -28,22 +29,21 @@
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.requiredWidth
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableFloatStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.DrawModifier
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.setValue
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.graphics.drawscope.clipRect
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/modifier/CommunicatingModifierDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/modifier/CommunicatingModifierDemo.kt
index 6e04d4c..80b0d2e 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/modifier/CommunicatingModifierDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/modifier/CommunicatingModifierDemo.kt
@@ -38,8 +38,8 @@
 import androidx.compose.ui.graphics.Color.Companion.Gray
 import androidx.compose.ui.graphics.Color.Companion.Red
 import androidx.compose.ui.modifier.modifierLocalConsumer
-import androidx.compose.ui.modifier.modifierLocalProvider
 import androidx.compose.ui.modifier.modifierLocalOf
+import androidx.compose.ui.modifier.modifierLocalProvider
 import androidx.compose.ui.unit.dp
 import kotlinx.coroutines.launch
 
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/viewinterop/FocusTransferDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/viewinterop/FocusTransferDemo.kt
index b412aa6..61c2a44 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/viewinterop/FocusTransferDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/viewinterop/FocusTransferDemo.kt
@@ -24,24 +24,24 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.MutableState
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.focus.FocusRequester
 import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.focus.focusTarget
+import androidx.compose.ui.focus.onFocusEvent
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.platform.ComposeView
+import androidx.compose.ui.unit.sp
 import androidx.compose.ui.viewinterop.AndroidView
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import androidx.recyclerview.widget.RecyclerView.Adapter
-import androidx.recyclerview.widget.RecyclerView.ViewHolder
 import androidx.recyclerview.widget.RecyclerView.VERTICAL
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.ui.focus.focusTarget
-import androidx.compose.ui.focus.onFocusEvent
-import androidx.compose.ui.unit.sp
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
 
 @Composable
 fun FocusTransferDemo() {
diff --git a/compose/ui/ui/samples/build.gradle b/compose/ui/ui/samples/build.gradle
index f2675f6..d201f40 100644
--- a/compose/ui/ui/samples/build.gradle
+++ b/compose/ui/ui/samples/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Core Classes Samples"
+    name = "Compose UI Core Classes Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Compose UI Core Classes"
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/AlphaSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/AlphaSample.kt
index 0eda2b2..8dab4ab 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/AlphaSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/AlphaSample.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/BlurSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/BlurSample.kt
index c97aec8..4ecd92c 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/BlurSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/BlurSample.kt
@@ -18,8 +18,8 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.Image
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.foundation.shape.RoundedCornerShape
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/DialogSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/DialogSample.kt
index b5508de..d66efbd 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/DialogSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/DialogSample.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.mutableStateOf
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/LayoutSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/LayoutSample.kt
index 6c41b9f8..6908017 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/LayoutSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/LayoutSample.kt
@@ -22,11 +22,11 @@
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.layout.IntrinsicMeasurable
 import androidx.compose.ui.layout.IntrinsicMeasureScope
+import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.LayoutModifier
 import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasurePolicy
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierCompositionLocalSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierCompositionLocalSample.kt
index 8245a01..108ffc5 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierCompositionLocalSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierCompositionLocalSample.kt
@@ -27,7 +27,9 @@
 import androidx.compose.ui.node.CompositionLocalConsumerModifierNode
 import androidx.compose.ui.node.DrawModifierNode
 import androidx.compose.ui.node.ModifierNodeElement
+import androidx.compose.ui.node.ObserverModifierNode
 import androidx.compose.ui.node.currentValueOf
+import androidx.compose.ui.node.observeReads
 import androidx.compose.ui.platform.InspectorInfo
 
 @Sampled
@@ -55,4 +57,26 @@
     Box(Modifier.backgroundColor()) {
         Text("Hello, world!")
     }
+}
+
+@Sampled
+@Composable
+fun CompositionLocalConsumingModifierObserverNodeSample() {
+    val LocalValue = compositionLocalOf { "abc123" }
+    class ValueObserverModifierNode : Modifier.Node(),
+        CompositionLocalConsumerModifierNode, ObserverModifierNode {
+        private var observedValue: String? = null
+        override fun onAttach() {
+            onObservedReadsChanged()
+        }
+        override fun onDetach() {
+            observedValue = null
+        }
+        override fun onObservedReadsChanged() {
+            observeReads {
+                observedValue = currentValueOf(LocalValue)
+                // Do something with the new value
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierLocalSamples.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierLocalSamples.kt
index 0db443d..d1869e6 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierLocalSamples.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/ModifierLocalSamples.kt
@@ -28,8 +28,8 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
 import androidx.compose.ui.modifier.modifierLocalConsumer
-import androidx.compose.ui.modifier.modifierLocalProvider
 import androidx.compose.ui.modifier.modifierLocalOf
+import androidx.compose.ui.modifier.modifierLocalProvider
 
 @OptIn(ExperimentalComposeUiApi::class)
 @Sampled
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/OnGloballyPositionedSamples.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/OnGloballyPositionedSamples.kt
index 479029d..1b414e9 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/OnGloballyPositionedSamples.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/OnGloballyPositionedSamples.kt
@@ -17,15 +17,15 @@
 package androidx.compose.ui.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.layout.positionInRoot
 import androidx.compose.ui.layout.onGloballyPositioned
+import androidx.compose.ui.layout.positionInRoot
 import androidx.compose.ui.layout.positionInWindow
 import androidx.compose.ui.unit.dp
 
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt
index cbfcaea..f39a660 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt
@@ -18,8 +18,8 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.Image
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.runtime.Composable
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PopupSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PopupSample.kt
index 5939d56..7d311d3 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PopupSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PopupSample.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.samples
 
 import androidx.annotation.Sampled
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.runtime.Composable
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AccessibilityIteratorsTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AccessibilityIteratorsTest.kt
index ffa6615..bd38fe1 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AccessibilityIteratorsTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AccessibilityIteratorsTest.kt
@@ -42,11 +42,11 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth
+import java.util.Locale
+import kotlin.math.abs
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.Locale
-import kotlin.math.abs
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt
index 5d49476..67b261a 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt
@@ -43,8 +43,8 @@
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.ScrollState
 import androidx.compose.foundation.clickable
-import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.focusable
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.scrollBy
 import androidx.compose.foundation.gestures.scrollable
 import androidx.compose.foundation.layout.Arrangement
@@ -57,8 +57,8 @@
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.lazy.LazyColumn
-import androidx.compose.foundation.lazy.LazyRow
 import androidx.compose.foundation.lazy.LazyListState
+import androidx.compose.foundation.lazy.LazyRow
 import androidx.compose.foundation.progressSemantics
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.selection.selectable
@@ -158,8 +158,8 @@
 import androidx.compose.ui.text.toUpperCase
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.DpOffset
-import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.LayoutDirection
+import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.fastForEach
 import androidx.compose.ui.util.fastMap
 import androidx.compose.ui.viewinterop.AndroidView
@@ -171,13 +171,8 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.argThat
-import org.mockito.kotlin.atLeastOnce
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.spy
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
+import java.lang.reflect.Method
+import kotlin.math.max
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 import org.junit.Assert.assertEquals
@@ -195,8 +190,13 @@
 import org.mockito.ArgumentMatcher
 import org.mockito.ArgumentMatchers.any
 import org.mockito.internal.matchers.apachecommons.ReflectionEquals
-import java.lang.reflect.Method
-import kotlin.math.max
+import org.mockito.kotlin.argThat
+import org.mockito.kotlin.atLeastOnce
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidComposeViewAccessibilityDelegateCompatTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidComposeViewAccessibilityDelegateCompatTest.kt
index 337f866..5a160ba 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidComposeViewAccessibilityDelegateCompatTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidComposeViewAccessibilityDelegateCompatTest.kt
@@ -135,17 +135,6 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.argThat
-import org.mockito.kotlin.argumentCaptor
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.never
-import org.mockito.kotlin.spy
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
-import org.mockito.kotlin.whenever
 import java.util.concurrent.Executors
 import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.asCoroutineDispatcher
@@ -158,6 +147,17 @@
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatcher
 import org.mockito.ArgumentMatchers
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argThat
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/MemoryLeakTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/MemoryLeakTest.kt
index 9610e78..c6d3e83 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/MemoryLeakTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/MemoryLeakTest.kt
@@ -32,6 +32,8 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import java.text.NumberFormat
+import java.util.Locale
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withContext
@@ -39,8 +41,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.text.NumberFormat
-import java.util.Locale
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/ParentDataModifierTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/ParentDataModifierTest.kt
index adf79b7..9f8bae1 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/ParentDataModifierTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/ParentDataModifierTest.kt
@@ -37,6 +37,8 @@
 import androidx.compose.ui.unit.Density
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNull
 import org.junit.Assert.assertTrue
@@ -44,8 +46,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/RecyclerViewIntegrationTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/RecyclerViewIntegrationTest.kt
index 380b9b7..5d1a315 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/RecyclerViewIntegrationTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/RecyclerViewIntegrationTest.kt
@@ -34,10 +34,10 @@
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/AlphaTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/AlphaTest.kt
index d21fe8b..d67a405 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/AlphaTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/AlphaTest.kt
@@ -37,15 +37,15 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.max
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.max
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt
index 568809a..57531e5 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/DrawReorderingTest.kt
@@ -43,14 +43,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/GraphicsLayerModifierTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/GraphicsLayerModifierTest.kt
index 618ceb7..78b3042 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/GraphicsLayerModifierTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/GraphicsLayerModifierTest.kt
@@ -20,10 +20,10 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.CompositingStrategy
-import androidx.compose.ui.graphics.TransformOrigin
 import androidx.compose.ui.graphics.DefaultCameraDistance
 import androidx.compose.ui.graphics.DefaultShadowColor
 import androidx.compose.ui.graphics.RectangleShape
+import androidx.compose.ui.graphics.TransformOrigin
 import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.platform.InspectableValue
 import androidx.compose.ui.platform.ValueElement
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/PainterModifierTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/PainterModifierTest.kt
index 3d6683e..e49c957 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/PainterModifierTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/PainterModifierTest.kt
@@ -94,6 +94,8 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.max
+import kotlin.math.roundToInt
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Before
@@ -101,8 +103,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.max
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/ShadowTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/ShadowTest.kt
index f9d9136d..8f23d70 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/ShadowTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/ShadowTest.kt
@@ -50,6 +50,8 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Assert
 import org.junit.Assert.assertEquals
@@ -60,8 +62,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/CustomFocusTraversalTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/CustomFocusTraversalTest.kt
index e3749d3..d3eccf4 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/CustomFocusTraversalTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/CustomFocusTraversalTest.kt
@@ -27,12 +27,12 @@
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.input.key.Key.Companion.Tab
-import androidx.compose.ui.input.key.Key.Companion.DirectionUp
 import androidx.compose.ui.input.key.Key.Companion.DirectionDown
 import androidx.compose.ui.input.key.Key.Companion.DirectionLeft
 import androidx.compose.ui.input.key.Key.Companion.DirectionRight
+import androidx.compose.ui.input.key.Key.Companion.DirectionUp
 import androidx.compose.ui.input.key.Key.Companion.Enter
+import androidx.compose.ui.input.key.Key.Companion.Tab
 import androidx.compose.ui.input.key.KeyEvent
 import androidx.compose.ui.input.key.nativeKeyCode
 import androidx.compose.ui.platform.LocalFocusManager
@@ -40,10 +40,10 @@
 import androidx.compose.ui.test.onRoot
 import androidx.compose.ui.test.performKeyPress
 import androidx.test.filters.MediumTest
+import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import com.google.common.truth.Truth.assertThat
 import org.junit.runners.Parameterized
 import org.junit.runners.Parameterized.Parameters
 
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusChangedCountTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusChangedCountTest.kt
index f7b0dad..d1b5b2d 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusChangedCountTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusChangedCountTest.kt
@@ -21,8 +21,8 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.focus.FocusStateImpl.Inactive
 import androidx.compose.ui.focus.FocusStateImpl.Active
+import androidx.compose.ui.focus.FocusStateImpl.Inactive
 import androidx.compose.ui.platform.LocalFocusManager
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.test.ext.junit.runners.AndroidJUnit4
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusRequesterTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusRequesterTest.kt
index 7f44c86..faa13ae 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusRequesterTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusRequesterTest.kt
@@ -28,11 +28,11 @@
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
+import androidx.compose.ui.focus.focusRequester as modifierNodeFocusRequester
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.platform.debugInspectorInfo
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.focus.focusRequester as modifierNodeFocusRequester
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/KeyEventToFocusDirectionTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/KeyEventToFocusDirectionTest.kt
index 9cce01f..94dce03 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/KeyEventToFocusDirectionTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/KeyEventToFocusDirectionTest.kt
@@ -16,8 +16,13 @@
 
 package androidx.compose.ui.focus
 
+import android.view.KeyEvent as AndroidKeyEvent
+import android.view.KeyEvent.ACTION_DOWN as KeyDown
+import android.view.KeyEvent.META_SHIFT_ON as Shift
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.focus.FocusDirection.Companion.Down
+import androidx.compose.ui.focus.FocusDirection.Companion.Enter
+import androidx.compose.ui.focus.FocusDirection.Companion.Exit
 import androidx.compose.ui.focus.FocusDirection.Companion.Left
 import androidx.compose.ui.focus.FocusDirection.Companion.Next
 import androidx.compose.ui.focus.FocusDirection.Companion.Previous
@@ -36,11 +41,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import android.view.KeyEvent as AndroidKeyEvent
-import android.view.KeyEvent.ACTION_DOWN as KeyDown
-import android.view.KeyEvent.META_SHIFT_ON as Shift
-import androidx.compose.ui.focus.FocusDirection.Companion.Enter
-import androidx.compose.ui.focus.FocusDirection.Companion.Exit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/CursorAnchorInfoBuilderTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/CursorAnchorInfoBuilderTest.kt
index 0a383f3..190fd50 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/CursorAnchorInfoBuilderTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/CursorAnchorInfoBuilderTest.kt
@@ -20,10 +20,10 @@
 import android.view.inputmethod.CursorAnchorInfo
 import androidx.compose.ui.text.AnnotatedString
 import androidx.compose.ui.text.MultiParagraph
-import androidx.compose.ui.text.TextRange
-import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.TextLayoutInput
 import androidx.compose.ui.text.TextLayoutResult
+import androidx.compose.ui.text.TextRange
+import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.font.Font
 import androidx.compose.ui.text.font.FontStyle
 import androidx.compose.ui.text.font.FontWeight
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt
index 9028277..ed4776e 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/RecordingInputConnectionTest.kt
@@ -33,16 +33,16 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import org.junit.Assert.assertTrue
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.argumentCaptor
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.never
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Assert.assertTrue
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt
index 0aff99c..2bec941 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidEmojiTest.kt
@@ -29,12 +29,12 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
 import org.junit.After
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt
index 73c44e6..9d383b7 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/TextInputServiceAndroidOnStateUpdateTest.kt
@@ -31,6 +31,9 @@
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.eq
 import org.mockito.kotlin.mock
@@ -38,9 +41,6 @@
 import org.mockito.kotlin.reset
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/focus/FocusAwareEventPropagationTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/focus/FocusAwareEventPropagationTest.kt
index 3baf4aa..6d7da47 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/focus/FocusAwareEventPropagationTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/focus/FocusAwareEventPropagationTest.kt
@@ -31,8 +31,8 @@
 import androidx.compose.ui.input.focus.FocusAwareEventPropagationTest.NodeType.KeyInput
 import androidx.compose.ui.input.focus.FocusAwareEventPropagationTest.NodeType.RotaryInput
 import androidx.compose.ui.input.key.KeyEvent
-import androidx.compose.ui.input.key.onKeyEvent
 import androidx.compose.ui.input.key.onInterceptKeyBeforeSoftKeyboard
+import androidx.compose.ui.input.key.onKeyEvent
 import androidx.compose.ui.input.key.onPreInterceptKeyBeforeSoftKeyboard
 import androidx.compose.ui.input.key.onPreviewKeyEvent
 import androidx.compose.ui.input.rotary.RotaryScrollEvent
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/AndroidProcessKeyInputTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/AndroidProcessKeyInputTest.kt
index f17a1a2..f88a7ed 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/AndroidProcessKeyInputTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/AndroidProcessKeyInputTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.ui.input.key
 
+import android.view.KeyEvent as AndroidKeyEvent
 import android.view.KeyEvent.ACTION_DOWN as ActionDown
 import android.view.KeyEvent.ACTION_UP as ActionUp
 import android.view.KeyEvent.KEYCODE_A as KeyCodeA
@@ -30,18 +31,17 @@
 import androidx.compose.ui.input.key.Key.Companion.A
 import androidx.compose.ui.input.key.KeyEventType.Companion.KeyDown
 import androidx.compose.ui.input.key.KeyEventType.Companion.KeyUp
+import androidx.compose.ui.node.DelegatingNode
 import androidx.compose.ui.platform.LocalView
+import androidx.compose.ui.semantics.elementFor
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import android.view.KeyEvent as AndroidKeyEvent
-import androidx.compose.ui.node.DelegatingNode
-import androidx.compose.ui.semantics.elementFor
-import org.junit.Ignore
 import org.mockito.kotlin.inOrder
 
 /**
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/HardwareKeyInputTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/HardwareKeyInputTest.kt
index 5b4c1ba..262aaa7 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/HardwareKeyInputTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/HardwareKeyInputTest.kt
@@ -17,9 +17,9 @@
 package androidx.compose.ui.input.key
 
 import android.view.KeyEvent as AndroidKeyEvent
-import android.view.KeyEvent.KEYCODE_A as KeyCodeA
 import android.view.KeyEvent.ACTION_DOWN
 import android.view.KeyEvent.ACTION_UP
+import android.view.KeyEvent.KEYCODE_A as KeyCodeA
 import androidx.compose.foundation.focusable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.requiredSize
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/KeyTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/KeyTest.kt
index 6358175..3e73445 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/KeyTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/KeyTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.input.key
 
-import androidx.compose.ui.ExperimentalComposeUiApi
 import android.view.KeyEvent.KEYCODE_A as KeyCodeA
+import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/MetaKeyTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/MetaKeyTest.kt
index 5acd3bb..f4e78eb 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/MetaKeyTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/MetaKeyTest.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.ui.input.key
 
-import android.view.KeyEvent.KEYCODE_A as KeyCodeA
-import android.view.KeyEvent.ACTION_DOWN as KeyDown
 import android.view.KeyEvent as AndroidKeyEvent
+import android.view.KeyEvent.ACTION_DOWN as KeyDown
+import android.view.KeyEvent.KEYCODE_A as KeyCodeA
 import android.view.KeyEvent.META_ALT_ON
 import android.view.KeyEvent.META_CTRL_ON
 import android.view.KeyEvent.META_META_ON
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/ProcessKeyInputTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/ProcessKeyInputTest.kt
index 0c88d69..b085af2 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/ProcessKeyInputTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/key/ProcessKeyInputTest.kt
@@ -17,9 +17,9 @@
 package androidx.compose.ui.input.key
 
 import android.view.KeyEvent as AndroidKeyEvent
-import android.view.KeyEvent.KEYCODE_A as KeyCodeA
 import android.view.KeyEvent.ACTION_DOWN
 import android.view.KeyEvent.ACTION_UP
+import android.view.KeyEvent.KEYCODE_A as KeyCodeA
 import androidx.compose.foundation.layout.Box
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/AndroidPointerInputTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/AndroidPointerInputTest.kt
index 6470495..46f9946 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/AndroidPointerInputTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/AndroidPointerInputTest.kt
@@ -80,10 +80,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
-import org.mockito.kotlin.never
-import org.mockito.kotlin.spy
-import org.mockito.kotlin.verify
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
@@ -92,8 +90,10 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
+import org.mockito.kotlin.any
+import org.mockito.kotlin.never
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.verify
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/ClipPointerInputTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/ClipPointerInputTest.kt
index 905cbb2..0777bc1 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/ClipPointerInputTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/ClipPointerInputTest.kt
@@ -46,12 +46,12 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/LayerTouchTransformTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/LayerTouchTransformTest.kt
index e065521..7f69a0d 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/LayerTouchTransformTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/LayerTouchTransformTest.kt
@@ -43,14 +43,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.max
 import org.junit.Assert
 import org.junit.Assert.assertTrue
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.max
 
 @LargeTest
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/MouseEventTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/MouseEventTest.kt
index 1899a3c..9f9ade5 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/MouseEventTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/MouseEventTest.kt
@@ -35,10 +35,10 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
-import org.junit.Rule
-import org.junit.Test
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Rule
+import org.junit.Test
 
 @MediumTest
 @OptIn(ExperimentalTestApi::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilterAndroidViewOffsetsTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilterAndroidViewOffsetsTest.kt
index 849c2b9..877e911 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilterAndroidViewOffsetsTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilterAndroidViewOffsetsTest.kt
@@ -34,15 +34,15 @@
 import androidx.compose.ui.viewinterop.AndroidView
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.clearInvocations
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.never
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 
 // Tests that pointer offsets are correct when a pointer is dispatched from Android through
 // Compose and back into Android and each layer offsets the pointer during dispatch.
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilterTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilterTest.kt
index c521919..6a82429 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilterTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilterTest.kt
@@ -52,9 +52,9 @@
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Assert.fail
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.Rule
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/AlignmentLineTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/AlignmentLineTest.kt
index b3b3736..5714cc7 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/AlignmentLineTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/AlignmentLineTest.kt
@@ -22,8 +22,8 @@
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.mutableStateMapOf
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateMapOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
@@ -33,8 +33,8 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import org.junit.Assert.assertEquals
 import kotlin.math.min
+import org.junit.Assert.assertEquals
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/MeasureInPlacementTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/MeasureInPlacementTest.kt
index d272794..6f18534 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/MeasureInPlacementTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/MeasureInPlacementTest.kt
@@ -38,11 +38,11 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.TimeUnit
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnSizeChangedTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnSizeChangedTest.kt
index b825a77..cadfde0 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnSizeChangedTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnSizeChangedTest.kt
@@ -35,6 +35,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertNotEquals
@@ -43,8 +45,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RootNodeLayoutTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RootNodeLayoutTest.kt
index 26569b5..d850fd8 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RootNodeLayoutTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RootNodeLayoutTest.kt
@@ -27,6 +27,8 @@
 import androidx.compose.ui.unit.Constraints
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotEquals
 import org.junit.Assert.assertNotNull
@@ -35,8 +37,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RtlLayoutTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RtlLayoutTest.kt
index 038a111..37fe213 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RtlLayoutTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/RtlLayoutTest.kt
@@ -43,6 +43,10 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.abs
+import kotlin.math.roundToInt
 import org.junit.Assert
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
@@ -50,10 +54,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.abs
-import kotlin.math.roundToInt
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/HotReloadTests.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/HotReloadTests.kt
index b84b840..f9326295 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/HotReloadTests.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/HotReloadTests.kt
@@ -33,12 +33,12 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertTrue
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/ModelReadsTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/ModelReadsTest.kt
index 08c37a0..42dc17d 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/ModelReadsTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/node/ModelReadsTest.kt
@@ -32,6 +32,8 @@
 import androidx.compose.ui.test.TestActivity
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
@@ -39,8 +41,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInAppCompatActivityTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInAppCompatActivityTest.kt
index 9bfe97c..6c8d88b 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInAppCompatActivityTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInAppCompatActivityTest.kt
@@ -23,14 +23,14 @@
 import androidx.lifecycle.LifecycleOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInComponentActivityTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInComponentActivityTest.kt
index 336d599..9d79d60 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInComponentActivityTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInComponentActivityTest.kt
@@ -23,14 +23,14 @@
 import androidx.lifecycle.LifecycleOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInFragmentTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInFragmentTest.kt
index 44fb3a0..497f8be 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInFragmentTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/LifecycleOwnerInFragmentTest.kt
@@ -29,14 +29,14 @@
 import androidx.lifecycle.LifecycleOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInAppCompatActivityTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInAppCompatActivityTest.kt
index 2594fa9..f548965 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInAppCompatActivityTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInAppCompatActivityTest.kt
@@ -23,14 +23,14 @@
 import androidx.savedstate.SavedStateRegistryOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInComponentActivityTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInComponentActivityTest.kt
index d78a893..648ac1d 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInComponentActivityTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInComponentActivityTest.kt
@@ -23,14 +23,14 @@
 import androidx.savedstate.SavedStateRegistryOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInFragmentTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInFragmentTest.kt
index 0a290e5..9f5f371 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInFragmentTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/owners/SavedStateRegistryOwnerInFragmentTest.kt
@@ -28,14 +28,14 @@
 import androidx.savedstate.findViewTreeSavedStateRegistryOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidClipboardManagerTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidClipboardManagerTest.kt
index d9a4bc8..f35c3e2 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidClipboardManagerTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidClipboardManagerTest.kt
@@ -32,15 +32,14 @@
 import androidx.compose.ui.text.style.TextGeometricTransform
 import androidx.compose.ui.text.withStyle
 import androidx.compose.ui.unit.sp
-
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidViewCompatTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidViewCompatTest.kt
index 54db114..432b2fe 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidViewCompatTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/AndroidViewCompatTest.kt
@@ -94,11 +94,14 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import junit.framework.TestCase.assertNotNull
-import org.hamcrest.CoreMatchers.`is`
+import kotlin.math.roundToInt
 import org.hamcrest.CoreMatchers.allOf
 import org.hamcrest.CoreMatchers.endsWith
 import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.not
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
@@ -107,9 +110,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.roundToInt
 
 /**
  * Testing the support for Android Views in Compose UI.
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DepthSortedSetTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DepthSortedSetTest.kt
index 3893b7b..7de34c5 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DepthSortedSetTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DepthSortedSetTest.kt
@@ -23,11 +23,11 @@
 import androidx.compose.ui.node.add
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import org.mockito.kotlin.spy
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.spy
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt
index e6e19a8..e5e4927 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt
@@ -34,12 +34,12 @@
 import androidx.test.annotation.UiThreadTest
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.io.Serializable
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.Serializable
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LayoutIdTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LayoutIdTest.kt
index 81dbca9..6cc5157 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LayoutIdTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LayoutIdTest.kt
@@ -27,6 +27,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
@@ -34,8 +36,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardControllerTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardControllerTest.kt
index 0b6e22c..f3c9189 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardControllerTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardControllerTest.kt
@@ -31,13 +31,13 @@
 import androidx.compose.ui.text.input.TextInputService
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.never
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @ExperimentalComposeUiApi
 @LargeTest
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowInfoCompositionLocalTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowInfoCompositionLocalTest.kt
index 8b828ae..2a2d199 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowInfoCompositionLocalTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowInfoCompositionLocalTest.kt
@@ -31,12 +31,12 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit.SECONDS
 import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit.SECONDS
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt
index b4d9bbe..44ebf7c 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt
@@ -43,6 +43,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.MediumTest
+import java.lang.ref.WeakReference
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.Dispatchers
@@ -62,8 +64,6 @@
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.lang.ref.WeakReference
-import kotlin.coroutines.CoroutineContext
 
 @RunWith(AndroidJUnit4::class)
 class WindowRecomposerTest {
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WrapperTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WrapperTest.kt
index c4f9bbc..f6d5329 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WrapperTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WrapperTest.kt
@@ -32,13 +32,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @Composable private fun Recompose(body: @Composable (recompose: () -> Unit) -> Unit) {
     val scope = currentRecomposeScope
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/res/StringResourcesTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/res/StringResourcesTest.kt
index 9751449..89b9648 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/res/StringResourcesTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/res/StringResourcesTest.kt
@@ -25,10 +25,10 @@
 import androidx.test.filters.MediumTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.Locale
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.Locale
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt
index 2c1d8dd..f27b445 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/semantics/SemanticsTests.kt
@@ -44,8 +44,8 @@
 import androidx.compose.ui.test.SemanticsMatcher
 import androidx.compose.ui.test.SemanticsNodeInteraction
 import androidx.compose.ui.test.assert
-import androidx.compose.ui.test.assertCountEquals
 import androidx.compose.ui.test.assertContentDescriptionEquals
+import androidx.compose.ui.test.assertCountEquals
 import androidx.compose.ui.test.assertTextEquals
 import androidx.compose.ui.test.assertValueEquals
 import androidx.compose.ui.test.junit4.createComposeRule
@@ -62,6 +62,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.max
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
@@ -69,7 +70,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.max
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt
index f8fdabb..706dc6d 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt
@@ -195,7 +195,7 @@
                     }
                     return@setSelection false
                 }
-                performImeAction {
+                performImeAction(ImeAction.Go) {
                     editText.onEditorAction(ExpectedActionCode)
                     true
                 }
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/ComposeViewTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/ComposeViewTest.kt
index 0fe1ac4..8cef97d 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/ComposeViewTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/ComposeViewTest.kt
@@ -73,6 +73,9 @@
 import androidx.test.filters.FlakyTest
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SmallTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.roundToInt
 import org.hamcrest.CoreMatchers.instanceOf
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
@@ -83,9 +86,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/DialogTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/DialogTest.kt
index b6579e5..1dec8ea 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/DialogTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/DialogTest.kt
@@ -45,12 +45,12 @@
 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import androidx.test.uiautomator.UiDevice
 import com.google.common.truth.Truth
+import kotlin.math.roundToInt
 import org.junit.Assert.assertEquals
 import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupAlignmentTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupAlignmentTest.kt
index 537c3fc..b9949ca 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupAlignmentTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupAlignmentTest.kt
@@ -26,8 +26,8 @@
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.test.junit4.createComposeRule
-import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntOffset
+import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.height
@@ -35,12 +35,12 @@
 import androidx.test.espresso.matcher.BoundedMatcher
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.hamcrest.Description
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupDismissTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupDismissTest.kt
index fc01d13..edf32cd 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupDismissTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupDismissTest.kt
@@ -18,11 +18,11 @@
 
 import android.os.Build
 import android.view.View
-import androidx.compose.foundation.text.ClickableText
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.text.BasicText
+import androidx.compose.foundation.text.ClickableText
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
@@ -41,13 +41,13 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.test.uiautomator.UiDevice
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assume
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @LargeTest
 @RunWith(Parameterized::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupLayoutTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupLayoutTest.kt
index 1183a84..bcd39c1 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupLayoutTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupLayoutTest.kt
@@ -34,10 +34,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import java.util.UUID
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.UUID
 
 /**
  * Tests for the internal [PopupLayout] view used by [Popup].
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTest.kt
index 252b19d..36d5ef1 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTest.kt
@@ -23,8 +23,8 @@
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.requiredHeight
-import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.compositionLocalOf
 import androidx.compose.runtime.getValue
@@ -64,15 +64,15 @@
 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import androidx.test.uiautomator.UiDevice
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.roundToInt
 import org.hamcrest.CoreMatchers.instanceOf
 import org.hamcrest.Description
 import org.hamcrest.TypeSafeMatcher
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTestUtils.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTestUtils.kt
index d37dd10..b6cbe5c 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTestUtils.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTestUtils.kt
@@ -34,11 +34,11 @@
 import androidx.test.espresso.Espresso
 import androidx.test.espresso.Root
 import androidx.test.espresso.assertion.ViewAssertions
+import kotlin.math.max
 import org.hamcrest.CoreMatchers
 import org.hamcrest.Description
 import org.hamcrest.Matcher
 import org.hamcrest.TypeSafeMatcher
-import kotlin.math.max
 
 // TODO(b/139861182): Remove all of this and provide helpers on rule
 internal fun ComposeTestRule.popupMatches(popupTestTag: String, viewMatcher: Matcher<in View>) {
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PositionInWindowTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PositionInWindowTest.kt
index 5952258..960ddd4 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PositionInWindowTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PositionInWindowTest.kt
@@ -19,8 +19,8 @@
 import android.view.ViewGroup
 import androidx.activity.ComponentActivity
 import androidx.compose.foundation.background
-import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.awaitEachGesture
+import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.drag
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
@@ -52,13 +52,13 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerIcon.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerIcon.android.kt
index 054ec2b..c2c1350 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerIcon.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerIcon.android.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.input.pointer
 
 import android.view.PointerIcon.TYPE_CROSSHAIR
-import android.view.PointerIcon.TYPE_HAND
 import android.view.PointerIcon.TYPE_DEFAULT
+import android.view.PointerIcon.TYPE_HAND
 import android.view.PointerIcon.TYPE_TEXT
 
 internal class AndroidPointerIconType(val type: Int) :
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilter.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilter.android.kt
index 1508e04..8d5b474 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilter.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/input/pointer/PointerInteropFilter.android.kt
@@ -335,7 +335,10 @@
  *
  * Developers should use [pointerInput] to handle pointer input processing within Compose.
  * [motionEventSpy] is only useful as part of Android View interoperability.
+ *
+ * If you need to handle and consume [MotionEvent]s, use [pointerInteropFilter].
  */
+@ExperimentalComposeUiApi
 fun Modifier.motionEventSpy(watcher: (motionEvent: MotionEvent) -> Unit): Modifier =
     this.pointerInput(watcher) {
         interceptOutOfBoundsChildEvents = true
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt
index 087323c..553e319 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt
@@ -16,7 +16,6 @@
 
 package androidx.compose.ui.platform
 
-import android.view.KeyEvent as AndroidKeyEvent
 import android.annotation.SuppressLint
 import android.content.Context
 import android.content.res.Configuration
@@ -26,6 +25,7 @@
 import android.os.SystemClock
 import android.util.Log
 import android.util.SparseArray
+import android.view.KeyEvent as AndroidKeyEvent
 import android.view.MotionEvent
 import android.view.MotionEvent.ACTION_CANCEL
 import android.view.MotionEvent.ACTION_DOWN
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiDispatcher.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiDispatcher.android.kt
index 7dce6f5..387b2244 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiDispatcher.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiDispatcher.android.kt
@@ -20,10 +20,10 @@
 import android.view.Choreographer
 import androidx.compose.runtime.MonotonicFrameClock
 import androidx.core.os.HandlerCompat
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.runBlocking
-import kotlin.coroutines.CoroutineContext
 
 /**
  * A [CoroutineDispatcher] that will perform dispatch during a [handler] callback or
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiFrameClock.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiFrameClock.android.kt
index a9fd7ed..1f96ec4 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiFrameClock.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidUiFrameClock.android.kt
@@ -17,9 +17,9 @@
 package androidx.compose.ui.platform
 
 import android.view.Choreographer
-import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlin.coroutines.ContinuationInterceptor
 import kotlin.coroutines.coroutineContext
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 class AndroidUiFrameClock internal constructor(
     val choreographer: Choreographer,
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/ComposeView.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/ComposeView.android.kt
index 0ec62b8..0b898b5 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/ComposeView.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/ComposeView.android.kt
@@ -30,9 +30,9 @@
 import androidx.compose.ui.UiComposable
 import androidx.compose.ui.node.InternalCoreApi
 import androidx.compose.ui.node.Owner
-import androidx.lifecycle.findViewTreeLifecycleOwner
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.findViewTreeLifecycleOwner
 import java.lang.ref.WeakReference
 
 /**
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.android.kt
index 8663ca3..4dd7ef3 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.android.kt
@@ -18,11 +18,11 @@
 
 import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.ui.platform.GlobalSnapshotManager.ensureStarted
+import java.util.concurrent.atomic.AtomicBoolean
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.channels.consumeEach
 import kotlinx.coroutines.launch
-import java.util.concurrent.atomic.AtomicBoolean
 
 /**
  * Platform-specific mechanism for starting a monitor of global snapshot state writes
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/OutlineResolver.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/OutlineResolver.android.kt
index 6050279..090242b 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/OutlineResolver.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/OutlineResolver.android.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.ui.platform
 
+import android.graphics.Outline as AndroidOutline
 import android.os.Build
 import androidx.compose.ui.geometry.CornerRadius
 import androidx.compose.ui.geometry.Offset
@@ -32,7 +33,6 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.LayoutDirection
 import kotlin.math.roundToInt
-import android.graphics.Outline as AndroidOutline
 
 /**
  * Resolves the [AndroidOutline] from the [Shape] of an [OwnedLayer].
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/RenderNodeApi23.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/RenderNodeApi23.android.kt
index 8b27e39..681b0c5 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/RenderNodeApi23.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/RenderNodeApi23.android.kt
@@ -18,9 +18,9 @@
 
 import android.graphics.Color
 import android.graphics.Outline
-import android.view.RenderNode
-import android.view.DisplayListCanvas
 import android.os.Build
+import android.view.DisplayListCanvas
+import android.view.RenderNode
 import android.view.View
 import androidx.annotation.RequiresApi
 import androidx.compose.ui.graphics.Canvas
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/FontResources.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/FontResources.android.kt
index 58262b0..9203d2b 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/FontResources.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/FontResources.android.kt
@@ -21,10 +21,10 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ReadOnlyComposable
 import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.text.font.Typeface
 import androidx.compose.ui.text.font.FontFamily
 import androidx.compose.ui.text.font.LoadedFontFamily
 import androidx.compose.ui.text.font.SystemFontFamily
+import androidx.compose.ui.text.font.Typeface
 
 private val cacheLock = Object()
 
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/ImageResources.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/ImageResources.android.kt
index 5e7f956..e679a116 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/ImageResources.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/ImageResources.android.kt
@@ -17,14 +17,14 @@
 package androidx.compose.ui.res
 
 import android.content.res.Resources
+import android.graphics.drawable.BitmapDrawable
 import android.util.TypedValue
 import androidx.annotation.DrawableRes
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
-import androidx.compose.ui.platform.LocalContext
-import android.graphics.drawable.BitmapDrawable
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.graphics.asImageBitmap
+import androidx.compose.ui.platform.LocalContext
 
 /**
  * Load an ImageBitmap from an image resource.
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt
index e484aff..136a23c 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/res/VectorResources.android.kt
@@ -31,8 +31,8 @@
 import androidx.compose.ui.graphics.vector.compat.parseCurrentVectorNode
 import androidx.compose.ui.graphics.vector.compat.seekToStartTag
 import androidx.compose.ui.platform.LocalContext
-import org.xmlpull.v1.XmlPullParserException
 import java.lang.ref.WeakReference
+import org.xmlpull.v1.XmlPullParserException
 
 /**
  * Load an ImageVector from a vector resource.
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/window/AndroidPopup.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/window/AndroidPopup.android.kt
index 75b727e8..08611787 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/window/AndroidPopup.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/window/AndroidPopup.android.kt
@@ -75,8 +75,8 @@
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.fastMap
 import androidx.lifecycle.findViewTreeLifecycleOwner
-import androidx.lifecycle.setViewTreeLifecycleOwner
 import androidx.lifecycle.findViewTreeViewModelStoreOwner
+import androidx.lifecycle.setViewTreeLifecycleOwner
 import androidx.lifecycle.setViewTreeViewModelStoreOwner
 import androidx.savedstate.findViewTreeSavedStateRegistryOwner
 import androidx.savedstate.setViewTreeSavedStateRegistryOwner
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/Modifier.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/Modifier.kt
index 440914e..1868f44 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/Modifier.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/Modifier.kt
@@ -20,16 +20,32 @@
 import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.node.DelegatableNode
 import androidx.compose.ui.node.DrawModifierNode
-import androidx.compose.ui.node.ObserverNodeOwnerScope
 import androidx.compose.ui.node.NodeCoordinator
 import androidx.compose.ui.node.NodeKind
+import androidx.compose.ui.node.ObserverNodeOwnerScope
 import androidx.compose.ui.node.invalidateDraw
 import androidx.compose.ui.node.requireOwner
+import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.cancel
 
 /**
+ * Used in place of the standard Job cancellation pathway to avoid reflective
+ * javaClass.simpleName lookups to build the exception message and stack trace collection.
+ * Remove if these are changed in kotlinx.coroutines.
+ */
+private class ModifierNodeDetachedCancellationException : CancellationException(
+    "The Modifier.Node was detached"
+) {
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
+}
+
+/**
  * An ordered, immutable collection of [modifier elements][Modifier.Element] that decorate or add
  * behavior to Compose UI elements. For example, backgrounds, padding and click event listeners
  * decorate or add behavior to rows, text or buttons.
@@ -255,7 +271,7 @@
             isAttached = false
 
             scope?.let {
-                it.cancel()
+                it.cancel(ModifierNodeDetachedCancellationException())
                 scope = null
             }
         }
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/DrawModifier.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/DrawModifier.kt
index 165c0fc..0408729 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/DrawModifier.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/DrawModifier.kt
@@ -22,8 +22,8 @@
 import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.graphics.drawscope.DrawScope
 import androidx.compose.ui.internal.JvmDefaultWithCompatibility
-import androidx.compose.ui.node.DrawModifierNode
 import androidx.compose.ui.node.CacheDrawModifierNode
+import androidx.compose.ui.node.DrawModifierNode
 import androidx.compose.ui.node.ModifierNodeElement
 import androidx.compose.ui.node.Nodes
 import androidx.compose.ui.node.ObserverModifierNode
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/PainterModifier.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/PainterModifier.kt
index e4eaeb0..f251943 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/PainterModifier.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/draw/PainterModifier.kt
@@ -17,21 +17,21 @@
 package androidx.compose.ui.draw
 
 import androidx.compose.ui.Alignment
-import androidx.compose.ui.graphics.drawscope.ContentDrawScope
-import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.isSpecified
 import androidx.compose.ui.graphics.ColorFilter
 import androidx.compose.ui.graphics.DefaultAlpha
+import androidx.compose.ui.graphics.drawscope.ContentDrawScope
 import androidx.compose.ui.graphics.drawscope.translate
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.layout.ContentScale
-import androidx.compose.ui.layout.times
 import androidx.compose.ui.layout.IntrinsicMeasurable
 import androidx.compose.ui.layout.IntrinsicMeasureScope
 import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasureResult
+import androidx.compose.ui.layout.MeasureScope
+import androidx.compose.ui.layout.times
 import androidx.compose.ui.node.DrawModifierNode
 import androidx.compose.ui.node.LayoutModifierNode
 import androidx.compose.ui.node.ModifierNodeElement
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.kt
index 4241f32..783a2c3 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.graphics
 
 import androidx.compose.ui.geometry.Size
-import androidx.compose.ui.unit.Density
 import androidx.compose.ui.internal.JvmDefaultWithCompatibility
+import androidx.compose.ui.unit.Density
 
 /**
  * Default camera distance for all layers
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
index 0e155ef..9c256c7 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
@@ -24,6 +24,7 @@
 import androidx.compose.ui.graphics.Brush
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.graphics.Matrix
 import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.PathFillType
 import androidx.compose.ui.graphics.PathMeasure
@@ -32,7 +33,6 @@
 import androidx.compose.ui.graphics.drawscope.DrawScope
 import androidx.compose.ui.graphics.drawscope.Stroke
 import androidx.compose.ui.graphics.drawscope.withTransform
-import androidx.compose.ui.graphics.Matrix
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.util.fastForEach
 import kotlin.math.ceil
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt
index 3963cc0..58b3cd3 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt
@@ -34,10 +34,10 @@
 import androidx.compose.ui.graphics.drawscope.DrawScope
 import androidx.compose.ui.graphics.drawscope.scale
 import androidx.compose.ui.graphics.painter.Painter
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.LayoutDirection
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * Default identifier for the root group if a Vector graphic
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/PointerEvent.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/PointerEvent.kt
index b1671c9..7a6010a 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/PointerEvent.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/PointerEvent.kt
@@ -24,9 +24,9 @@
 import androidx.compose.ui.input.pointer.PointerEventPass.Final
 import androidx.compose.ui.input.pointer.PointerEventPass.Initial
 import androidx.compose.ui.input.pointer.PointerEventPass.Main
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.layout.LayoutCoordinates
 import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * A [Modifier.Element] that can interact with pointer input.
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilter.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilter.kt
index eab488c..ddf5d9e 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilter.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilter.kt
@@ -20,6 +20,11 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.fastMapNotNull
 import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
+import androidx.compose.ui.node.ModifierNodeElement
+import androidx.compose.ui.node.PointerInputModifierNode
+import androidx.compose.ui.node.requireLayoutNode
+import androidx.compose.ui.platform.InspectorInfo
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.ViewConfiguration
 import androidx.compose.ui.platform.synchronized
@@ -37,16 +42,11 @@
 import kotlin.math.max
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.CoroutineStart
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.suspendCancellableCoroutine
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
-import androidx.compose.ui.node.ModifierNodeElement
-import androidx.compose.ui.node.PointerInputModifierNode
-import androidx.compose.ui.node.requireLayoutNode
-import androidx.compose.ui.platform.InspectorInfo
-import kotlinx.coroutines.CoroutineStart
-import kotlinx.coroutines.Job
 
 /**
  * Receiver scope for awaiting pointer events in a call to
@@ -497,7 +497,7 @@
     override fun resetPointerInputHandler() {
         val localJob = pointerInputJob
         if (localJob != null) {
-            localJob.cancel()
+            localJob.cancel(PointerInputResetException())
             pointerInputJob = null
         }
     }
@@ -727,7 +727,7 @@
             try {
                 return block()
             } finally {
-                job.cancel()
+                job.cancel(CancelTimeoutCancellationException)
             }
         }
     }
@@ -739,4 +739,36 @@
  */
 class PointerEventTimeoutCancellationException(
     time: Long
-) : CancellationException("Timed out waiting for $time ms")
+) : CancellationException("Timed out waiting for $time ms") {
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
+}
+
+/**
+ * Used in place of the standard Job cancellation pathway to avoid reflective
+ * javaClass.simpleName lookups to build the exception message and stack trace collection.
+ * Remove if these are changed in kotlinx.coroutines.
+ */
+private class PointerInputResetException : CancellationException("Pointer input was reset") {
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
+}
+
+/**
+ * Also used in place of standard Job cancellation pathway; since we control this code path
+ * we shouldn't need to worry about other code calling addSuppressed on this exception
+ * so a singleton instance is used
+ */
+private object CancelTimeoutCancellationException : CancellationException() {
+    override fun fillInStackTrace(): Throwable {
+        // Avoid null.clone() on Android <= 6.0 when accessing stackTrace
+        stackTrace = emptyArray()
+        return this
+    }
+}
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/util/VelocityTracker.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/util/VelocityTracker.kt
index ea2846b..6d35f30 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/util/VelocityTracker.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/input/pointer/util/VelocityTracker.kt
@@ -160,6 +160,9 @@
     private val reusableDataPointsArray = FloatArray(HistorySize)
     private val reusableTimeArray = FloatArray(HistorySize)
 
+    // Reusable array to minimize allocations inside calculateLeastSquaresVelocity.
+    private val reusableVelocityCoefficients = FloatArray(3)
+
     /**
      * Adds a data point for velocity calculation at a given time, [timeMillis]. The data ponit
      * represents an amount of a change in position (for differential data points), or an absolute
@@ -252,10 +255,16 @@
         // The 2nd coefficient is the derivative of the quadratic polynomial at
         // x = 0, and that happens to be the last timestamp that we end up
         // passing to polyFitLeastSquares.
-        try {
-            return polyFitLeastSquares(time, dataPoints, sampleCount, 2)[1]
+        return try {
+            polyFitLeastSquares(
+                time,
+                dataPoints,
+                sampleCount,
+                2,
+                reusableVelocityCoefficients
+            )[1]
         } catch (exception: IllegalArgumentException) {
-            return 0f
+            0f
         }
     }
 }
@@ -356,7 +365,8 @@
     y: FloatArray,
     /** number of items in each array */
     sampleCount: Int,
-    degree: Int
+    degree: Int,
+    coefficients: FloatArray = FloatArray((degree + 1).coerceAtLeast(0))
 ): FloatArray {
     if (degree < 1) {
         throw IllegalArgumentException("The degree must be at positive integer")
@@ -372,7 +382,6 @@
             degree
         }
 
-    val coefficients = FloatArray(degree + 1)
     // Shorthands for the purpose of notation equivalence to original C++ code.
     val m: Int = sampleCount
     val n: Int = truncatedDegree + 1
@@ -380,31 +389,34 @@
     // Expand the X vector to a matrix A, pre-multiplied by the weights.
     val a = Matrix(n, m)
     for (h in 0 until m) {
-        a.set(0, h, DefaultWeight)
+        a[0, h] = DefaultWeight
         for (i in 1 until n) {
-            a.set(i, h, a.get(i - 1, h) * x[h])
+            a[i, h] = a[i - 1, h] * x[h]
         }
     }
 
     // Apply the Gram-Schmidt process to A to obtain its QR decomposition.
 
-    // Orthonormal basis, column-major ordVectorer.
+    // Orthonormal basis, column-major order.
     val q = Matrix(n, m)
     // Upper triangular matrix, row-major order.
     val r = Matrix(n, n)
     for (j in 0 until n) {
+        val w = q[j]
+        val aw = a[j]
         for (h in 0 until m) {
-            q.set(j, h, a.get(j, h))
+            w[h] = aw[h]
         }
         for (i in 0 until j) {
-            val dot: Float = q.getRow(j) * q.getRow(i)
+            val z = q[i]
+            val dot = w.dot(z)
             for (h in 0 until m) {
-                q.set(j, h, q.get(j, h) - dot * q.get(i, h))
+                w[h] -= dot * z[h]
             }
         }
 
-        val norm: Float = q.getRow(j).norm()
-        if (norm < 0.000001) {
+        val norm: Float = w.norm()
+        if (norm < 0.000001f) {
             // TODO(b/129494471): Determine what this actually means and see if there are
             // alternatives to throwing an Exception here.
 
@@ -417,25 +429,37 @@
 
         val inverseNorm: Float = 1.0f / norm
         for (h in 0 until m) {
-            q.set(j, h, q.get(j, h) * inverseNorm)
+            w[h] *= inverseNorm
         }
+        val v = r[j]
         for (i in 0 until n) {
-            r.set(j, i, if (i < j) 0.0f else q.getRow(j) * a.getRow(i))
+            v[i] = if (i < j) 0.0f else w.dot(a[i])
         }
     }
 
     // Solve R B = Qt W Y to find B. This is easy because R is upper triangular.
     // We just work from bottom-right to top-left calculating B's coefficients.
-    val wy = Vector(m)
-    for (h in 0 until m) {
-        wy[h] = y[h] * DefaultWeight
-    }
-    for (i in n - 1 downTo 0) {
-        coefficients[i] = q.getRow(i) * wy
-        for (j in n - 1 downTo i + 1) {
-            coefficients[i] -= r.get(i, j) * coefficients[j]
+    var wy = y
+
+    // NOTE: DefaultWeight is currently always set to 1.0f, there's no need to allocate a new
+    // array and to perform several multiplications for no reason
+    @Suppress("KotlinConstantConditions")
+    if (DefaultWeight != 1.0f) {
+        // TODO: Even when we pass the test above, this allocation is likely unnecessary.
+        // We could just modify wy (y) in place instead. This would need to be documented
+        // to avoid surprises for the caller though.
+        wy = FloatArray(m)
+        for (h in 0 until m) {
+            wy[h] = y[h] * DefaultWeight
         }
-        coefficients[i] /= r.get(i, i)
+    }
+
+    for (i in n - 1 downTo 0) {
+        coefficients[i] = q[i].dot(wy)
+        for (j in n - 1 downTo i + 1) {
+            coefficients[i] -= r[i, j] * coefficients[j]
+        }
+        coefficients[i] /= r[i, i]
     }
 
     return coefficients
@@ -561,44 +585,33 @@
  *          Kinetic Energy = 0.5 * mass * (velocity)^2
  * where a mass of "1" is used.
  */
-private fun kineticEnergyToVelocity(kineticEnergy: Float): Float {
+@Suppress("NOTHING_TO_INLINE")
+private inline fun kineticEnergyToVelocity(kineticEnergy: Float): Float {
     return sign(kineticEnergy) * sqrt(2 * abs(kineticEnergy))
 }
 
-private class Vector(
-    val length: Int
-) {
-    val elements: FloatArray = FloatArray(length)
+private typealias Vector = FloatArray
 
-    operator fun get(i: Int) = elements[i]
-
-    operator fun set(i: Int, value: Float) {
-        elements[i] = value
+private fun FloatArray.dot(a: FloatArray): Float {
+    var result = 0.0f
+    for (i in indices) {
+        result += this[i] * a[i]
     }
-
-    operator fun times(a: Vector): Float {
-        var result = 0.0f
-        for (i in 0 until length) {
-            result += this[i] * a[i]
-        }
-        return result
-    }
-
-    fun norm(): Float = sqrt(this * this)
+    return result
 }
 
-private class Matrix(rows: Int, cols: Int) {
-    private val elements: Array<Vector> = Array(rows) { Vector(cols) }
+@Suppress("NOTHING_TO_INLINE")
+private inline fun FloatArray.norm(): Float = sqrt(this.dot(this))
 
-    fun get(row: Int, col: Int): Float {
-        return elements[row][col]
-    }
+private typealias Matrix = Array<FloatArray>
 
-    fun set(row: Int, col: Int, value: Float) {
-        elements[row][col] = value
-    }
+@Suppress("NOTHING_TO_INLINE")
+private inline fun Matrix(rows: Int, cols: Int) = Array(rows) { Vector(cols) }
 
-    fun getRow(row: Int): Vector {
-        return elements[row]
-    }
-}
\ No newline at end of file
+@Suppress("NOTHING_TO_INLINE")
+private inline operator fun Matrix.get(row: Int, col: Int): Float = this[row][col]
+
+@Suppress("NOTHING_TO_INLINE")
+private inline operator fun Matrix.set(row: Int, col: Int, value: Float) {
+    this[row][col] = value
+}
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/LayoutCoordinates.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/LayoutCoordinates.kt
index 83d9751..af49d34 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/LayoutCoordinates.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/LayoutCoordinates.kt
@@ -19,9 +19,9 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.graphics.Matrix
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.node.NodeCoordinator
 import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * A holder of the measured bounds for the layout (MeasureBox).
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasurePolicy.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasurePolicy.kt
index 64dcbe3..7b10ef0 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasurePolicy.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasurePolicy.kt
@@ -17,11 +17,11 @@
 package androidx.compose.ui.layout
 
 import androidx.compose.runtime.Stable
-import androidx.compose.ui.unit.Constraints
-import androidx.compose.ui.util.fastMap
 import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.layout.RootMeasurePolicy.measure
 import androidx.compose.ui.layout.RootMeasurePolicy.minIntrinsicWidth
+import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.util.fastMap
 
 /**
  * Defines the measure and layout behavior of a [Layout]. [Layout] and [MeasurePolicy] are the way
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasureScope.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasureScope.kt
index eaef98e1d..a01db10 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasureScope.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/MeasureScope.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.layout
 
-import androidx.compose.ui.node.LookaheadCapablePlaceable
 import androidx.compose.ui.internal.JvmDefaultWithCompatibility
+import androidx.compose.ui.node.LookaheadCapablePlaceable
 
 /**
  * The receiver scope of a layout's measure lambda. The return value of the
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/OnRemeasuredModifier.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/OnRemeasuredModifier.kt
index 9da5ab4..6ebe14f 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/OnRemeasuredModifier.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/OnRemeasuredModifier.kt
@@ -19,11 +19,11 @@
 import androidx.compose.runtime.MutableState
 import androidx.compose.runtime.Stable
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.platform.InspectorInfo
 import androidx.compose.ui.platform.InspectorValueInfo
 import androidx.compose.ui.platform.debugInspectorInfo
 import androidx.compose.ui.unit.IntSize
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * Invoked with the size of the modified Compose UI element when the element is first measured or
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/ParentDataModifier.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/ParentDataModifier.kt
index c319547..9811bae 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/ParentDataModifier.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/ParentDataModifier.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.layout
 
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.Density
 import androidx.compose.ui.internal.JvmDefaultWithCompatibility
+import androidx.compose.ui.unit.Density
 
 /**
  * A [Modifier] that provides data to the parent [Layout]. This can be read from within the
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/Placeable.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/Placeable.kt
index 99301bd..94893a6 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/Placeable.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/Placeable.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.ui.graphics.GraphicsLayerScope
 import androidx.compose.ui.node.LayoutNodeLayoutDelegate
-import androidx.compose.ui.node.NodeCoordinator
 import androidx.compose.ui.node.LookaheadCapablePlaceable
+import androidx.compose.ui.node.NodeCoordinator
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntSize
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalConsumer.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalConsumer.kt
index eea668b..cb2ad69 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalConsumer.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalConsumer.kt
@@ -19,10 +19,10 @@
 import androidx.compose.runtime.Stable
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.platform.InspectorInfo
 import androidx.compose.ui.platform.InspectorValueInfo
 import androidx.compose.ui.platform.debugInspectorInfo
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * A Modifier that can be used to consume [ModifierLocal]s that were provided by other modifiers to
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalProvider.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalProvider.kt
index 7a38447..b689b69 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalProvider.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/modifier/ModifierLocalProvider.kt
@@ -21,9 +21,9 @@
 import androidx.compose.runtime.getValue
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.platform.InspectorValueInfo
 import androidx.compose.ui.platform.debugInspectorInfo
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * A Modifier that can be used to provide [ModifierLocal]s that can be read by other modifiers to
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode.kt
index d87ed28..2d6f733 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode.kt
@@ -17,6 +17,7 @@
 package androidx.compose.ui.node
 
 import androidx.compose.runtime.CompositionLocal
+import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.Modifier
 
 /**
@@ -37,34 +38,39 @@
  * Returns the current value of [local] at the position in the composition hierarchy of this
  * modifier's attached layout node.
  *
- * CompositionLocals should only be read with [currentValueOf] during the main phase of your
- * modifier's operations. This main phase of a modifier is defined as the timeframe of your Modifier
- * after it has been [attached][Modifier.Node.onAttach] and before it is
- * [detached][Modifier.Node.onDetach]. The main phase is when you will receive calls to your
- * modifier's primary hooks like [DrawModifierNode.draw], [LayoutModifierNode.measure],
- * [PointerInputModifierNode.onPointerEvent], etc. Every callback of a modifier that influences the
- * composable and is called after `onAttach()` and before `onDetach()` is considered part of the
- * main phase.
- *
  * Unlike [CompositionLocal.current], reads via this function are not automatically tracked by
  * Compose. Modifiers are not able to recompose in the same way that a Composable can, and therefore
  * can't receive updates arbitrarily for a CompositionLocal.
  *
- * Avoid reading CompositionLocals in [onAttach()][Modifier.Node.onAttach] and
- * [onDetach()][Modifier.Node.onDetach]. These lifecycle callbacks only happen once, meaning that
- * any reads in a lifecycle event will yield the value of the CompositionLocal as it was during the
- * event, and then never again. This can lead to Modifiers using stale CompositionLocal values and
- * unexpected behaviors in the UI.
+ * Because CompositionLocals may change arbitrarily, it is strongly recommended to ensure that
+ * the composition local is observed instead of being read once. If you call [currentValueOf]
+ * inside of a modifier callback like [LayoutModifierNode.measure] or [DrawModifierNode.draw],
+ * then Compose will track the CompositionLocal read. This happens automatically, because these
+ * Compose UI phases take place in a snapshot observer that tracks which states are read. If the
+ * value of the CompositionLocal changes, and it was read inside of the measure or draw phase,
+ * then that phase will automatically be invalidated.
+ *
+ * For all other reads of a CompositionLocal, this function will **not** notify you when the
+ * value of the local changes. [Modifier.Node] classes that also implement [ObserverModifierNode]
+ * may observe CompositionLocals arbitrarily by performing the lookup in an [observeReads] block.
+ * To continue observing values of the CompositionLocal, it must be read again in an [observeReads]
+ * block during or after the [ObserverModifierNode.onObservedReadsChanged] callback is invoked. See
+ * below for an example of how to implement this observation pattern.
+ *
+ * @sample androidx.compose.ui.samples.CompositionLocalConsumingModifierObserverNodeSample
  *
  * This function will fail with an [IllegalStateException] if you attempt to read a CompositionLocal
  * before the node is [attached][Modifier.Node.onAttach] or after the node is
  * [detached][Modifier.Node.onDetach].
+ *
+ * @param local The CompositionLocal to get the current value of
+ * @return The value provided by the nearest [CompositionLocalProvider] component that
+ * invokes, directly or indirectly, the composable function that this modifier is attached to.
+ * If [local] was never provided, its default value will be returned instead.
  */
 fun <T> CompositionLocalConsumerModifierNode.currentValueOf(local: CompositionLocal<T>): T {
     check(node.isAttached) {
-        "Cannot read CompositionLocal because the Modifier node is not currently attached. Make " +
-            "sure to only invoke currentValueOf() in the main phase of your modifier. See " +
-            "currentValueOf()'s documentation for more information."
+        "Cannot read CompositionLocal because the Modifier node is not currently attached."
     }
     return requireLayoutNode().compositionLocalMap[local]
 }
\ No newline at end of file
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy.kt
index b3fb83c..25b5cd5 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/InfiniteAnimationPolicy.kt
@@ -17,9 +17,9 @@
 package androidx.compose.ui.platform
 
 import androidx.compose.runtime.withFrameNanos
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import kotlin.coroutines.CoroutineContext
 import kotlin.coroutines.coroutineContext
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * Provides a policy that will be applied to animations that get their frame time from
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ShapeContainingUtil.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ShapeContainingUtil.kt
index 25b3abb..d52279c 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ShapeContainingUtil.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ShapeContainingUtil.kt
@@ -17,9 +17,9 @@
 package androidx.compose.ui.platform
 
 import androidx.compose.ui.geometry.CornerRadius
-import androidx.compose.ui.graphics.Outline
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.RoundRect
+import androidx.compose.ui.graphics.Outline
 import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.PathOperation
 
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ViewConfiguration.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ViewConfiguration.kt
index c7445f7..d74db18 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ViewConfiguration.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/ViewConfiguration.kt
@@ -16,9 +16,9 @@
 
 package androidx.compose.ui.platform
 
+import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.internal.JvmDefaultWithCompatibility
 
 /**
  * Contains methods to standard constants used in the UI for timeouts, sizes, and distances.
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt
index bf84d72..41096b6 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt
@@ -211,7 +211,7 @@
     val TextSelectionRange = SemanticsPropertyKey<TextRange>("TextSelectionRange")
 
     /**
-     *  @see SemanticsPropertyReceiver.imeAction
+     * @see SemanticsPropertyReceiver.performImeAction
      */
     val ImeAction = SemanticsPropertyKey<ImeAction>("ImeAction")
 
@@ -929,6 +929,9 @@
  * A node that specifies an action should also specify a callback to perform the action via
  * [performImeAction].
  */
+@Deprecated("Pass the ImeAction to performImeAction instead.")
+@get:Deprecated("Pass the ImeAction to performImeAction instead.")
+@set:Deprecated("Pass the ImeAction to performImeAction instead.")
 var SemanticsPropertyReceiver.imeAction by SemanticsProperties.ImeAction
 
 /**
@@ -1108,20 +1111,24 @@
 }
 
 /**
- * Action to invoke the IME action handler configured on the node.
+ * Action to invoke the IME action handler configured on the node, as well as specify the type of
+ * IME action provided by the node.
  *
  * Expected to be used on editable text fields.
  *
- * A node that specifies an action callback should also report what IME action it will perform via
- * the [imeAction] property.
- *
+ * @param imeActionType The IME type, such as [ImeAction.Next] or [ImeAction.Search]
  * @param label Optional label for this action.
  * @param action Action to be performed when [SemanticsActions.PerformImeAction] is called.
+ *
+ * @see SemanticsProperties.ImeAction
+ * @see SemanticsActions.PerformImeAction
  */
 fun SemanticsPropertyReceiver.performImeAction(
+    imeActionType: ImeAction,
     label: String? = null,
     action: (() -> Boolean)?
 ) {
+    this[SemanticsProperties.ImeAction] = imeActionType
     this[SemanticsActions.PerformImeAction] = AccessibilityAction(label, action)
 }
 
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/window/Popup.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/window/Popup.kt
index e1b79a2..e68401c 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/window/Popup.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/window/Popup.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.runtime.Immutable
 import androidx.compose.ui.Alignment
-import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntOffset
+import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.height
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeDialog.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeDialog.desktop.kt
index a4816ed..373e218 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeDialog.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeDialog.desktop.kt
@@ -19,13 +19,13 @@
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.input.key.KeyEvent
 import androidx.compose.ui.window.DialogWindowScope
-import org.jetbrains.skiko.GraphicsApi
 import java.awt.Component
 import java.awt.Window
 import java.awt.event.MouseListener
 import java.awt.event.MouseMotionListener
 import java.awt.event.MouseWheelListener
 import javax.swing.JDialog
+import org.jetbrains.skiko.GraphicsApi
 
 /**
  * ComposeDialog is a dialog for building UI using Compose for Desktop.
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeLayer.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeLayer.desktop.kt
index 59f4f89..a246312 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeLayer.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeLayer.desktop.kt
@@ -17,26 +17,22 @@
 package androidx.compose.ui.awt
 
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.ComposeScene
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.input.pointer.PointerEventType
-import androidx.compose.ui.input.pointer.PointerType
-import androidx.compose.ui.platform.PlatformComponent
-import androidx.compose.ui.ComposeScene
+import androidx.compose.ui.input.key.KeyEvent as ComposeKeyEvent
 import androidx.compose.ui.input.pointer.PointerButtons
+import androidx.compose.ui.input.pointer.PointerEventType
 import androidx.compose.ui.input.pointer.PointerKeyboardModifiers
-import androidx.compose.ui.platform.DesktopPlatform
+import androidx.compose.ui.input.pointer.PointerType
 import androidx.compose.ui.platform.AccessibilityControllerImpl
+import androidx.compose.ui.platform.DesktopPlatform
+import androidx.compose.ui.platform.PlatformComponent
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.window.density
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.swing.Swing
-import org.jetbrains.skia.Canvas
-import org.jetbrains.skiko.SkiaLayer
-import org.jetbrains.skiko.SkikoView
-import java.awt.Cursor
 import java.awt.Component
+import java.awt.Cursor
 import java.awt.Dimension
 import java.awt.Graphics
 import java.awt.Point
@@ -54,7 +50,11 @@
 import java.awt.im.InputMethodRequests
 import javax.accessibility.Accessible
 import javax.accessibility.AccessibleContext
-import androidx.compose.ui.input.key.KeyEvent as ComposeKeyEvent
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.swing.Swing
+import org.jetbrains.skia.Canvas
+import org.jetbrains.skiko.SkiaLayer
+import org.jetbrains.skiko.SkikoView
 
 internal class ComposeLayer {
     private var isDisposed = false
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposePanel.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposePanel.desktop.kt
index a9c1dbb..18a78ff 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposePanel.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposePanel.desktop.kt
@@ -17,13 +17,13 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
-import org.jetbrains.skiko.ClipComponent
-import org.jetbrains.skiko.GraphicsApi
 import java.awt.Color
 import java.awt.Component
 import java.awt.Dimension
 import javax.swing.JLayeredPane
 import javax.swing.SwingUtilities.isEventDispatchThread
+import org.jetbrains.skiko.ClipComponent
+import org.jetbrains.skiko.GraphicsApi
 
 /**
  * ComposePanel is a panel for building UI using Compose for Desktop.
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindow.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindow.desktop.kt
index 235f530..95e8140 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindow.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindow.desktop.kt
@@ -20,13 +20,13 @@
 import androidx.compose.ui.input.key.KeyEvent
 import androidx.compose.ui.window.FrameWindowScope
 import androidx.compose.ui.window.WindowPlacement
-import org.jetbrains.skiko.GraphicsApi
 import java.awt.Component
 import java.awt.GraphicsConfiguration
 import java.awt.event.MouseListener
 import java.awt.event.MouseMotionListener
 import java.awt.event.MouseWheelListener
 import javax.swing.JFrame
+import org.jetbrains.skiko.GraphicsApi
 
 /**
  * ComposeWindow is a window for building UI using Compose for Desktop.
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindowDelegate.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindowDelegate.desktop.kt
index bb2dbb1..349923f 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindowDelegate.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/awt/ComposeWindowDelegate.desktop.kt
@@ -21,11 +21,6 @@
 import androidx.compose.ui.input.key.KeyEvent
 import androidx.compose.ui.window.LocalWindow
 import androidx.compose.ui.window.UndecoratedWindowResizer
-import org.jetbrains.skiko.ClipComponent
-import org.jetbrains.skiko.GraphicsApi
-import org.jetbrains.skiko.OS
-import org.jetbrains.skiko.SkiaLayer
-import org.jetbrains.skiko.hostOs
 import java.awt.Color
 import java.awt.Component
 import java.awt.Window
@@ -33,6 +28,11 @@
 import java.awt.event.MouseMotionListener
 import java.awt.event.MouseWheelListener
 import javax.swing.JLayeredPane
+import org.jetbrains.skiko.ClipComponent
+import org.jetbrains.skiko.GraphicsApi
+import org.jetbrains.skiko.OS
+import org.jetbrains.skiko.SkiaLayer
+import org.jetbrains.skiko.hostOs
 
 internal class ComposeWindowDelegate(
     private val window: Window,
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/input/key/Key.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/input/key/Key.desktop.kt
index bc20dca..cfe17cd 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/input/key/Key.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/input/key/Key.desktop.kt
@@ -17,12 +17,12 @@
 package androidx.compose.ui.input.key
 
 import androidx.compose.ui.input.key.Key.Companion.Number
+import androidx.compose.ui.util.unpackInt1
 import java.awt.event.KeyEvent
 import java.awt.event.KeyEvent.KEY_LOCATION_LEFT
 import java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD
 import java.awt.event.KeyEvent.KEY_LOCATION_RIGHT
 import java.awt.event.KeyEvent.KEY_LOCATION_STANDARD
-import androidx.compose.ui.util.unpackInt1
 
 // TODO(demin): implement most of key codes
 
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/ComposeAccessible.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/ComposeAccessible.kt
index 53a47e7..f8aea9b 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/ComposeAccessible.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/ComposeAccessible.kt
@@ -19,8 +19,8 @@
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
-import androidx.compose.ui.node.requireCoordinator
 import androidx.compose.ui.node.Nodes
+import androidx.compose.ui.node.requireCoordinator
 import androidx.compose.ui.semantics.AccessibilityAction
 import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.semantics.SemanticsActions
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.desktop.kt
index 1786f77..0faafcf 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/GlobalSnapshotManager.desktop.kt
@@ -18,13 +18,13 @@
 
 import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.ui.platform.GlobalSnapshotManager.ensureStarted
+import java.util.concurrent.atomic.AtomicBoolean
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.channels.consumeEach
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.swing.Swing
-import java.util.concurrent.atomic.AtomicBoolean
 
 /**
  * Platform-specific mechanism for starting a monitor of global snapshot state writes
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/TestComposeWindow.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/TestComposeWindow.desktop.kt
index eea1038..bc88383 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/TestComposeWindow.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/platform/TestComposeWindow.desktop.kt
@@ -32,18 +32,18 @@
 import androidx.compose.ui.node.RootForTest
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.cancel
-import org.jetbrains.skia.Surface
-import org.jetbrains.skiko.FrameDispatcher
 import java.awt.Component
 import java.awt.event.MouseWheelEvent
 import kotlin.coroutines.CoroutineContext
 import kotlin.math.abs
 import kotlin.math.roundToInt
 import kotlin.math.sign
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.cancel
+import org.jetbrains.skia.Surface
+import org.jetbrains.skiko.FrameDispatcher
 
 @PublishedApi
 internal val EmptyDispatcher = object : CoroutineDispatcher() {
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
index 1e33a0f..5413fa0 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
@@ -27,6 +27,8 @@
 import androidx.compose.ui.graphics.vector.DrawCache
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
+import java.io.InputStream
+import kotlin.math.ceil
 import org.jetbrains.skia.Data
 import org.jetbrains.skia.Rect
 import org.jetbrains.skia.svg.SVGDOM
@@ -34,8 +36,6 @@
 import org.jetbrains.skia.svg.SVGLengthUnit
 import org.jetbrains.skia.svg.SVGPreserveAspectRatio
 import org.jetbrains.skia.svg.SVGPreserveAspectRatioAlign
-import java.io.InputStream
-import kotlin.math.ceil
 
 /**
  * Synchronously load an SVG image from some [inputStream].
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt
index 9768f21..bfc4781 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt
@@ -19,8 +19,8 @@
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.res.vector.parseVectorRoot
 import androidx.compose.ui.unit.Density
-import org.xml.sax.InputSource
 import javax.xml.parsers.DocumentBuilderFactory
+import org.xml.sax.InputSource
 
 /**
  * Synchronously load an xml vector image from some [inputSource].
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt
index 948938e..e862143 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.graphics.toComposeImageBitmap
-import org.jetbrains.skia.Image
 import java.io.InputStream
+import org.jetbrains.skia.Image
 
 /**
  * Load and decode [ImageBitmap] from the given [inputStream]. [inputStream] should contain encoded
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/PainterResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/PainterResources.desktop.kt
index 4890aed..410f0d6 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/PainterResources.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/PainterResources.desktop.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.res
 
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
 import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.remember
 import androidx.compose.ui.graphics.painter.BitmapPainter
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.graphics.vector.rememberVectorPainter
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/vector/DesktopXmlVectorParser.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/vector/DesktopXmlVectorParser.desktop.kt
index 9340c9e..c326802 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/vector/DesktopXmlVectorParser.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/vector/DesktopXmlVectorParser.desktop.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.res.vector
 
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.PathFillType
 import androidx.compose.ui.graphics.SolidColor
 import androidx.compose.ui.graphics.StrokeCap
@@ -36,9 +36,9 @@
 import androidx.compose.ui.graphics.vector.addPathNodes
 import androidx.compose.ui.res.vector.BuildContext.Group
 import androidx.compose.ui.unit.Density
+import java.util.LinkedList
 import org.w3c.dom.Element
 import org.w3c.dom.Node
-import java.util.LinkedList
 
 //  Parsing logic is the same as in Android implementation
 //  (compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/graphics/vector/compat/XmlVectorParser.kt)
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/util/Windows.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/util/Windows.desktop.kt
index c3e807c..a50f886 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/util/Windows.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/util/Windows.desktop.kt
@@ -19,8 +19,8 @@
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.awt.ComposeWindow
 import androidx.compose.ui.geometry.Size
-import androidx.compose.ui.graphics.toAwtImage
 import androidx.compose.ui.graphics.painter.Painter
+import androidx.compose.ui.graphics.toAwtImage
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Application.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Application.desktop.kt
index b4bc684..80d3f69 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Application.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Application.desktop.kt
@@ -35,6 +35,7 @@
 import androidx.compose.ui.configureSwingGlobalsForCompose
 import androidx.compose.ui.platform.GlobalSnapshotManager
 import androidx.compose.ui.platform.LocalDensity
+import java.awt.Window
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Job
@@ -43,7 +44,6 @@
 import kotlinx.coroutines.swing.Swing
 import kotlinx.coroutines.withContext
 import kotlinx.coroutines.yield
-import java.awt.Window
 
 /**
  * An entry point for the Compose application. See [awaitApplication] for more information.
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/AwtWindow.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/AwtWindow.desktop.kt
index d5d32eb..2b96713 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/AwtWindow.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/AwtWindow.desktop.kt
@@ -25,13 +25,13 @@
 import androidx.compose.ui.node.Ref
 import androidx.compose.ui.util.UpdateEffect
 import androidx.compose.ui.util.makeDisplayable
+import java.awt.Window
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.swing.Swing
-import java.awt.Window
 
 /**
  * Compose [Window] obtained from [create]. The [create] block will be called
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt
index 7934126..17abbcd 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt
@@ -31,8 +31,8 @@
 import androidx.compose.ui.input.key.KeyEvent
 import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.onGloballyPositioned
-import androidx.compose.ui.platform.SkiaBasedOwner
 import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.platform.SkiaBasedOwner
 import androidx.compose.ui.platform.setContent
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.DpOffset
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/LocalWindow.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/LocalWindow.kt
index 3b8921b..4208152 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/LocalWindow.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/LocalWindow.kt
@@ -16,10 +16,10 @@
 
 package androidx.compose.ui.window
 
+import androidx.compose.runtime.compositionLocalOf
 import androidx.compose.ui.awt.ComposeDialog
 import androidx.compose.ui.awt.ComposePanel
 import androidx.compose.ui.awt.ComposeWindow
-import androidx.compose.runtime.compositionLocalOf
 import java.awt.Window
 
 /**
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Tray.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Tray.desktop.kt
index 642f0e2..f0987df 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Tray.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Tray.desktop.kt
@@ -28,14 +28,14 @@
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.graphics.toAwtImage
 import androidx.compose.ui.platform.DesktopPlatform
+import java.awt.PopupMenu
+import java.awt.SystemTray
+import java.awt.TrayIcon
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.flow.receiveAsFlow
-import java.awt.PopupMenu
-import java.awt.SystemTray
-import java.awt.TrayIcon
 
 // In fact, this size doesn't affect anything on Windows/Linux, because they request what they
 // need, and not what we provide. It only affects macOs. This size will be scaled in asAwtImage to
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/ComposeSceneTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/ComposeSceneTest.kt
index fbc3334..485c67e 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/ComposeSceneTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/ComposeSceneTest.kt
@@ -61,21 +61,21 @@
 import androidx.compose.ui.input.pointer.PointerKeyboardModifiers
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.layout.Layout
-import androidx.compose.ui.test.InternalTestApi
 import androidx.compose.ui.platform.renderingTest
+import androidx.compose.ui.test.InternalTestApi
 import androidx.compose.ui.test.junit4.DesktopScreenshotTestRule
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onRoot
 import androidx.compose.ui.test.performKeyPress
 import androidx.compose.ui.unit.dp
 import com.google.common.truth.Truth.assertThat
+import java.awt.event.KeyEvent
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.runBlocking
 import org.junit.Assert.assertFalse
+import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
-import java.awt.event.KeyEvent
-import org.junit.Ignore
 
 @OptIn(InternalTestApi::class, ExperimentalComposeUiApi::class)
 class ComposeSceneTest {
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/awt/ComposePanelTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/awt/ComposePanelTest.kt
index 371a453..66ac55a 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/awt/ComposePanelTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/awt/ComposePanelTest.kt
@@ -24,14 +24,14 @@
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.window.density
 import com.google.common.truth.Truth.assertThat
+import java.awt.Dimension
+import java.awt.GraphicsEnvironment
+import javax.swing.JFrame
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.swing.Swing
 import org.junit.Assume
 import org.junit.Test
-import java.awt.Dimension
-import java.awt.GraphicsEnvironment
-import javax.swing.JFrame
 
 class ComposePanelTest {
     @Test
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/key/KeyInputUtil.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/key/KeyInputUtil.kt
index ca8ba74..043b142 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/key/KeyInputUtil.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/key/KeyInputUtil.kt
@@ -17,11 +17,11 @@
 package androidx.compose.ui.input.key
 
 import java.awt.Component
+import java.awt.event.KeyEvent as KeyEventAwt
 import java.awt.event.KeyEvent.KEY_PRESSED
 import java.awt.event.KeyEvent.KEY_RELEASED
 import java.awt.event.KeyEvent.KEY_TYPED
 import java.awt.event.KeyEvent.VK_UNDEFINED
-import java.awt.event.KeyEvent as KeyEventAwt
 
 private object DummyComponent : Component()
 /**
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/pointer/PointerIconTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/pointer/PointerIconTest.kt
index c586bfe..a4c7cbb 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/pointer/PointerIconTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/input/pointer/PointerIconTest.kt
@@ -25,10 +25,10 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.dp
 import com.google.common.truth.Truth.assertThat
+import java.awt.Cursor
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.awt.Cursor
 
 @RunWith(JUnit4::class)
 class PointerIconTest {
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/AccessibilityTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/AccessibilityTest.kt
index 712be2d..4ae3e53 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/AccessibilityTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/AccessibilityTest.kt
@@ -20,12 +20,12 @@
 import androidx.compose.ui.Modifier

 import androidx.compose.ui.test.junit4.createComposeRule

 import androidx.compose.ui.test.onNodeWithTag

+import javax.accessibility.AccessibleText

 import org.junit.Assert.assertEquals

 import org.junit.Rule

 import org.junit.Test

 import org.junit.runner.RunWith

 import org.junit.runners.JUnit4

-import javax.accessibility.AccessibleText

 

 @RunWith(JUnit4::class)

 class AccessibilityTest {

diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/DesktopInputComponentTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/DesktopInputComponentTest.kt
index 9bc4693..2ffaeea 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/DesktopInputComponentTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/DesktopInputComponentTest.kt
@@ -23,14 +23,14 @@
 import androidx.compose.ui.text.input.ImeOptions
 import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.input.TextInputService
+import java.awt.Component
+import java.awt.event.InputMethodEvent
+import java.text.AttributedString
 import org.junit.Assert
 import org.junit.Assume.assumeTrue
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.awt.Component
-import java.awt.event.InputMethodEvent
-import java.text.AttributedString
 
 private object DummyComponent : Component()
 
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcherTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcherTest.kt
index 55900fc..b784f0d 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcherTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcherTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.ui.platform
 
+import kotlin.random.Random
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -26,7 +27,6 @@
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Test
-import kotlin.random.Random
 
 @OptIn(ExperimentalCoroutinesApi::class, DelicateCoroutinesApi::class)
 class FlushCoroutineDispatcherTest {
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/RenderingTestScope.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/RenderingTestScope.kt
index dbc107b..81cc28a 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/RenderingTestScope.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/RenderingTestScope.kt
@@ -23,6 +23,7 @@
 import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.runBlocking
@@ -31,7 +32,6 @@
 import org.jetbrains.skia.Canvas
 import org.jetbrains.skia.Surface
 import org.jetbrains.skiko.FrameDispatcher
-import kotlin.coroutines.CoroutineContext
 
 internal fun renderingTest(
     width: Int,
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/SkiaLayerTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/SkiaLayerTest.kt
index af4ba78..2556f82 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/SkiaLayerTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/platform/SkiaLayerTest.kt
@@ -31,14 +31,14 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.round
+import kotlin.math.PI
+import kotlin.math.cos
+import kotlin.math.roundToInt
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
 import org.junit.Rule
 import org.junit.Test
-import kotlin.math.PI
-import kotlin.math.cos
-import kotlin.math.roundToInt
 
 class SkiaLayerTest {
     @get:Rule
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/ApplicationTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/ApplicationTest.kt
index 9a5f7c9..95cb554 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/ApplicationTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/ApplicationTest.kt
@@ -23,8 +23,8 @@
 import androidx.compose.runtime.ExperimentalComposeApi
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.MonotonicFrameClock
-import androidx.compose.runtime.monotonicFrameClock
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.monotonicFrameClock
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.ExperimentalComposeUiApi
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/MenuBarTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/MenuBarTest.kt
index e03ef3d..40d329b 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/MenuBarTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/MenuBarTest.kt
@@ -26,10 +26,10 @@
 import androidx.compose.ui.readFirstPixel
 import androidx.compose.ui.testImage
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import javax.swing.JCheckBoxMenuItem
 import javax.swing.JRadioButtonMenuItem
 import javax.swing.JSeparator
+import org.junit.Test
 
 @OptIn(ExperimentalComposeUiApi::class)
 class MenuBarTest {
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/TestUtils.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/TestUtils.kt
index d339947..427bda9 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/TestUtils.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/TestUtils.kt
@@ -21,6 +21,7 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
 import androidx.compose.runtime.snapshots.Snapshot
+import java.awt.GraphicsEnvironment
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -33,7 +34,6 @@
 import kotlinx.coroutines.withTimeout
 import kotlinx.coroutines.yield
 import org.junit.Assume.assumeFalse
-import java.awt.GraphicsEnvironment
 import org.junit.Assume.assumeTrue
 
 @OptIn(ExperimentalCoroutinesApi::class)
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/dialog/DialogTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/dialog/DialogTest.kt
index 7f1f30f..5009c3e 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/dialog/DialogTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/dialog/DialogTest.kt
@@ -48,11 +48,11 @@
 import androidx.compose.ui.window.rememberDialogState
 import androidx.compose.ui.window.runApplicationTest
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import java.awt.Dimension
 import java.awt.event.KeyEvent
 import java.awt.event.WindowAdapter
 import java.awt.event.WindowEvent
+import org.junit.Test
 
 @OptIn(ExperimentalComposeUiApi::class)
 class DialogTest {
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowInputEventTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowInputEventTest.kt
index 0e7f02c..b90df87 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowInputEventTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowInputEventTest.kt
@@ -49,11 +49,11 @@
 import androidx.compose.ui.window.rememberWindowState
 import androidx.compose.ui.window.runApplicationTest
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import java.awt.Toolkit
 import java.awt.event.KeyEvent
 import java.awt.event.MouseEvent
 import java.awt.event.MouseWheelEvent
+import org.junit.Test
 
 @OptIn(ExperimentalComposeUiApi::class)
 class WindowInputEventTest {
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowParameterTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowParameterTest.kt
index 1c60660..5e4cf77 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowParameterTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowParameterTest.kt
@@ -34,8 +34,8 @@
 import androidx.compose.ui.window.launchApplication
 import androidx.compose.ui.window.runApplicationTest
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import java.awt.event.WindowEvent
+import org.junit.Test
 
 @OptIn(ExperimentalComposeUiApi::class)
 class WindowParameterTest {
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowStateTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowStateTest.kt
index ed7b79d..e8279f5 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowStateTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/window/window/WindowStateTest.kt
@@ -40,10 +40,6 @@
 import androidx.compose.ui.window.rememberWindowState
 import androidx.compose.ui.window.runApplicationTest
 import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.channels.Channel
-import kotlinx.coroutines.channels.consumeEach
-import org.junit.Assume.assumeTrue
-import org.junit.Test
 import java.awt.Dimension
 import java.awt.Point
 import java.awt.Rectangle
@@ -52,6 +48,10 @@
 import javax.swing.JFrame
 import kotlin.math.abs
 import kotlin.math.max
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.consumeEach
+import org.junit.Assume.assumeTrue
+import org.junit.Test
 
 // Note that on Linux some tests are flaky. Swing event listener's on Linux has non-deterministic
 // nature. To avoid flaky'ness we use delays
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt
index 6f092a6..2f16c79 100644
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt
@@ -27,34 +27,34 @@
 import androidx.compose.runtime.staticCompositionLocalOf
 import androidx.compose.runtime.withFrameNanos
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.input.pointer.PointerButtons
 import androidx.compose.ui.input.key.KeyEvent as ComposeKeyEvent
+import androidx.compose.ui.input.pointer.PointerButtons
 import androidx.compose.ui.input.pointer.PointerEventType
 import androidx.compose.ui.input.pointer.PointerInputEvent
 import androidx.compose.ui.input.pointer.PointerKeyboardModifiers
 import androidx.compose.ui.input.pointer.PointerType
 import androidx.compose.ui.node.LayoutNode
+import androidx.compose.ui.node.RootForTest
 import androidx.compose.ui.platform.AccessibilityController
-import androidx.compose.ui.platform.PlatformComponent
-import androidx.compose.ui.platform.SkiaBasedOwner
-import androidx.compose.ui.platform.PlatformInput
 import androidx.compose.ui.platform.DummyPlatformComponent
 import androidx.compose.ui.platform.FlushCoroutineDispatcher
 import androidx.compose.ui.platform.GlobalSnapshotManager
+import androidx.compose.ui.platform.PlatformComponent
+import androidx.compose.ui.platform.PlatformInput
+import androidx.compose.ui.platform.SkiaBasedOwner
 import androidx.compose.ui.platform.setContent
-import androidx.compose.ui.node.RootForTest
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
+import kotlin.coroutines.CoroutineContext
+import kotlin.jvm.Volatile
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.launch
 import org.jetbrains.skia.Canvas
-import kotlin.coroutines.CoroutineContext
-import kotlin.jvm.Volatile
 
 internal val LocalComposeScene = staticCompositionLocalOf<ComposeScene> {
     error("CompositionLocal LocalComposeScene not provided")
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/DefaultViewConfiguration.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/DefaultViewConfiguration.skiko.kt
index d581a1f..04067d8 100644
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/DefaultViewConfiguration.skiko.kt
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/DefaultViewConfiguration.skiko.kt
@@ -16,8 +16,8 @@
 
 package androidx.compose.ui.platform
 
-import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.dp
 
 class DefaultViewConfiguration(private val density: Density) : ViewConfiguration {
     override val longPressTimeoutMillis: Long
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcher.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcher.skiko.kt
index 1caeef5..134f900 100644
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcher.skiko.kt
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/FlushCoroutineDispatcher.skiko.kt
@@ -16,13 +16,13 @@
 
 package androidx.compose.ui.platform
 
+import kotlin.coroutines.CoroutineContext
+import kotlin.jvm.Volatile
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Runnable
 import kotlinx.coroutines.launch
-import kotlin.coroutines.CoroutineContext
-import kotlin.jvm.Volatile
 
 /**
  * Dispatcher with the ability to immediately perform (flush) all pending tasks.
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/OutlineCache.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/OutlineCache.skiko.kt
index 9eca11a..1c339d4 100644
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/OutlineCache.skiko.kt
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/OutlineCache.skiko.kt
@@ -19,8 +19,8 @@
 import androidx.compose.ui.graphics.Outline
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.Density
-import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.IntSize
+import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.toSize
 
 /**
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaBasedOwner.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaBasedOwner.skiko.kt
index 9aab9d9..5addad3 100644
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaBasedOwner.skiko.kt
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaBasedOwner.skiko.kt
@@ -39,9 +39,9 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Canvas
 import androidx.compose.ui.graphics.asComposeCanvas
+import androidx.compose.ui.input.InputMode.Companion.Keyboard
 import androidx.compose.ui.input.InputModeManager
 import androidx.compose.ui.input.InputModeManagerImpl
-import androidx.compose.ui.input.InputMode.Companion.Keyboard
 import androidx.compose.ui.input.key.Key.Companion.Back
 import androidx.compose.ui.input.key.Key.Companion.DirectionCenter
 import androidx.compose.ui.input.key.Key.Companion.Tab
@@ -57,6 +57,7 @@
 import androidx.compose.ui.input.pointer.PointerIconService
 import androidx.compose.ui.input.pointer.PointerInputEvent
 import androidx.compose.ui.input.pointer.PointerInputEventProcessor
+import androidx.compose.ui.input.pointer.PointerKeyboardModifiers
 import androidx.compose.ui.input.pointer.PositionCalculator
 import androidx.compose.ui.input.pointer.ProcessResult
 import androidx.compose.ui.input.pointer.TestPointerInputEventData
@@ -72,19 +73,18 @@
 import androidx.compose.ui.semantics.EmptySemanticsElement
 import androidx.compose.ui.semantics.SemanticsOwner
 import androidx.compose.ui.text.ExperimentalTextApi
-import androidx.compose.ui.text.input.PlatformTextInputPluginRegistry
-import androidx.compose.ui.text.input.TextInputService
+import androidx.compose.ui.text.InternalTextApi
 import androidx.compose.ui.text.font.createFontFamilyResolver
+import androidx.compose.ui.text.input.PlatformTextInputPluginRegistry
+import androidx.compose.ui.text.input.PlatformTextInputPluginRegistryImpl
+import androidx.compose.ui.text.input.TextInputService
 import androidx.compose.ui.text.platform.FontLoader
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
-import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.IntRect
+import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
-import androidx.compose.ui.input.pointer.PointerKeyboardModifiers
-import androidx.compose.ui.text.InternalTextApi
-import androidx.compose.ui.text.input.PlatformTextInputPluginRegistryImpl
 import kotlin.coroutines.CoroutineContext
 
 private typealias Command = () -> Unit
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt
index 4091d4a..e7d9ae4 100644
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt
@@ -33,9 +33,9 @@
 import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.graphics.RenderEffect
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.graphics.SkiaBackedCanvas
 import androidx.compose.ui.graphics.TransformOrigin
 import androidx.compose.ui.graphics.asComposeCanvas
-import androidx.compose.ui.graphics.SkiaBackedCanvas
 import androidx.compose.ui.graphics.asSkiaPath
 import androidx.compose.ui.graphics.nativeCanvas
 import androidx.compose.ui.graphics.toArgb
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/ComposedModifierTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/ComposedModifierTest.kt
index 47c43e5..444cf73 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/ComposedModifierTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/ComposedModifierTest.kt
@@ -20,12 +20,12 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Composition
 import androidx.compose.runtime.InternalComposeApi
-import androidx.compose.runtime.Recomposer
+import androidx.compose.runtime.MonotonicFrameClock
 import androidx.compose.runtime.RecomposeScope
+import androidx.compose.runtime.Recomposer
+import androidx.compose.runtime.SideEffect
 import androidx.compose.runtime.currentComposer
 import androidx.compose.runtime.currentRecomposeScope
-import androidx.compose.runtime.MonotonicFrameClock
-import androidx.compose.runtime.SideEffect
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.withRunningRecomposer
 import kotlinx.coroutines.channels.Channel
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/hapticfeedback/HapticFeedbackTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/hapticfeedback/HapticFeedbackTest.kt
index 60064cf..9669e89 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/hapticfeedback/HapticFeedbackTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/hapticfeedback/HapticFeedbackTest.kt
@@ -18,13 +18,13 @@
 
 import android.view.HapticFeedbackConstants
 import android.view.View
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.spy
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class HapticFeedbackTest {
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionInactiveTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionInactiveTest.kt
index fa9d451..05a700a 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionInactiveTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/input/RecordingInputConnectionInactiveTest.kt
@@ -21,11 +21,11 @@
 import androidx.compose.ui.text.input.RecordingInputConnection
 import androidx.compose.ui.text.input.TextFieldValue
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.mock
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import org.mockito.kotlin.mock
 
 @RunWith(JUnit4::class)
 class RecordingInputConnectionInactiveTest {
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/layout/ConstraintsTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/layout/ConstraintsTest.kt
index 820b936..132d3dd6 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/layout/ConstraintsTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/layout/ConstraintsTest.kt
@@ -19,8 +19,8 @@
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.constrain
-import androidx.compose.ui.unit.offset
 import androidx.compose.ui.unit.isSatisfiedBy
+import androidx.compose.ui.unit.offset
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/DelegatingNodeTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/DelegatingNodeTest.kt
index 698d042..793d11e 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/DelegatingNodeTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/DelegatingNodeTest.kt
@@ -23,12 +23,11 @@
 import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.semantics.SemanticsPropertyReceiver
 import androidx.compose.ui.unit.Constraints
+import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
-import com.google.common.truth.Truth.assertThat
-
 @RunWith(JUnit4::class)
 class DelegatingNodeTest {
 
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/HitTestResultTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/HitTestResultTest.kt
index 665bb01..f23209c 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/HitTestResultTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/node/HitTestResultTest.kt
@@ -17,12 +17,11 @@
 package androidx.compose.ui.node
 
 import androidx.compose.ui.Modifier
+import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
-import com.google.common.truth.Truth.assertThat
-
 @RunWith(JUnit4::class)
 class HitTestResultTest {
     @Test
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/platform/ClipboardManagerTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/platform/ClipboardManagerTest.kt
index 48c769f..a9048bc 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/platform/ClipboardManagerTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/platform/ClipboardManagerTest.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.platform
 
 import androidx.compose.ui.text.AnnotatedString
-import org.junit.Test
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
 
 class ClipboardManagerTest {
 
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/TextActionModeCallbackTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/TextActionModeCallbackTest.kt
index cdfda51..9a2a069 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/TextActionModeCallbackTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/text/TextActionModeCallbackTest.kt
@@ -31,8 +31,8 @@
 import androidx.compose.ui.platform.actionmodecallback.MenuItemOption
 import androidx.compose.ui.platform.actionmodecallback.TextActionModeCallback
 import androidx.test.filters.SdkSuppress
-import org.junit.Test
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
 
 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.N)
 class TextActionModeCallbackTest {
diff --git a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/window/PopupPositionProviderTest.kt b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/window/PopupPositionProviderTest.kt
index 5a0aec0..cb80640 100644
--- a/compose/ui/ui/src/test/kotlin/androidx/compose/ui/window/PopupPositionProviderTest.kt
+++ b/compose/ui/ui/src/test/kotlin/androidx/compose/ui/window/PopupPositionProviderTest.kt
@@ -17,8 +17,8 @@
 package androidx.compose.ui.window
 
 import androidx.compose.ui.Alignment
-import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntOffset
+import androidx.compose.ui.unit.IntRect
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import com.google.common.truth.Truth.assertThat
diff --git a/concurrent/concurrent-futures-ktx/build.gradle b/concurrent/concurrent-futures-ktx/build.gradle
index 1c2ee74..3aee3a0 100644
--- a/concurrent/concurrent-futures-ktx/build.gradle
+++ b/concurrent/concurrent-futures-ktx/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Futures Kotlin Extensions"
+    name = "Futures Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Kotlin Extensions for Androidx implementation of Guava's ListenableFuture"
diff --git a/concurrent/concurrent-futures-ktx/src/main/java/androidx/concurrent/futures/ListenableFuture.kt b/concurrent/concurrent-futures-ktx/src/main/java/androidx/concurrent/futures/ListenableFuture.kt
index 8bf37d1..cf5f0a4 100644
--- a/concurrent/concurrent-futures-ktx/src/main/java/androidx/concurrent/futures/ListenableFuture.kt
+++ b/concurrent/concurrent-futures-ktx/src/main/java/androidx/concurrent/futures/ListenableFuture.kt
@@ -18,11 +18,11 @@
 
 import androidx.concurrent.futures.AbstractResolvableFuture.getUninterruptibly
 import com.google.common.util.concurrent.ListenableFuture
-import kotlinx.coroutines.CancellableContinuation
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.util.concurrent.ExecutionException
 import java.util.concurrent.Future
 import kotlin.coroutines.resumeWithException
+import kotlinx.coroutines.CancellableContinuation
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Awaits completion of `this` [ListenableFuture] without blocking a thread.
diff --git a/concurrent/concurrent-futures-ktx/src/test/java/androidx/concurrent/futures/ListenableFutureTest.kt b/concurrent/concurrent-futures-ktx/src/test/java/androidx/concurrent/futures/ListenableFutureTest.kt
index 6b3366e..3385556 100644
--- a/concurrent/concurrent-futures-ktx/src/test/java/androidx/concurrent/futures/ListenableFutureTest.kt
+++ b/concurrent/concurrent-futures-ktx/src/test/java/androidx/concurrent/futures/ListenableFutureTest.kt
@@ -18,6 +18,9 @@
 
 package androidx.concurrent.futures
 
+import java.util.concurrent.atomic.AtomicBoolean
+import java.util.concurrent.atomic.AtomicInteger
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.DelicateCoroutinesApi
@@ -27,15 +30,12 @@
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.yield
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.concurrent.atomic.AtomicBoolean
-import java.util.concurrent.atomic.AtomicInteger
-import kotlin.test.assertFailsWith
 
 @RunWith(JUnit4::class)
 @OptIn(DelicateCoroutinesApi::class)
diff --git a/concurrent/concurrent-futures/build.gradle b/concurrent/concurrent-futures/build.gradle
index 2f134c0..94a63aa 100644
--- a/concurrent/concurrent-futures/build.gradle
+++ b/concurrent/concurrent-futures/build.gradle
@@ -29,7 +29,7 @@
 }
 
 androidx {
-    name = "AndroidX Futures"
+    name = "Futures"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Androidx implementation of Guava's ListenableFuture"
diff --git a/constraintlayout/constraintlayout-compose/build.gradle b/constraintlayout/constraintlayout-compose/build.gradle
index 51a3271..207692f 100644
--- a/constraintlayout/constraintlayout-compose/build.gradle
+++ b/constraintlayout/constraintlayout-compose/build.gradle
@@ -99,7 +99,7 @@
 }
 
 androidx {
-    name = "Android ConstraintLayout Compose Library"
+    name = "ConstraintLayout Compose"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CONSTRAINTLAYOUT_COMPOSE
     inceptionYear = "2022"
diff --git a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/MotionLayoutActivity.kt b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/MotionLayoutActivity.kt
index 4e015c9..d104977 100644
--- a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/MotionLayoutActivity.kt
+++ b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/MotionLayoutActivity.kt
@@ -22,9 +22,6 @@
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.newmessage.NewMotionMessagePreview
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.newmessage.NewMotionMessagePreviewWithDsl
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.toolbar.MotionCollapseToolbarPreview
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.Surface
 import androidx.compose.runtime.Recomposer
@@ -33,6 +30,9 @@
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.semantics.testTagsAsResourceId
 import androidx.constraintlayout.compose.integration.macrobenchmark.target.graphs.DynamicGraphsPreview
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.newmessage.NewMotionMessagePreview
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.newmessage.NewMotionMessagePreviewWithDsl
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.toolbar.MotionCollapseToolbarPreview
 
 class MotionLayoutActivity : ComponentActivity() {
 
diff --git a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/common/components/CardSample.kt b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/common/components/CardSample.kt
index 30960cf..a1c4b31 100644
--- a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/common/components/CardSample.kt
+++ b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/common/components/CardSample.kt
@@ -28,10 +28,6 @@
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.verticalScroll
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.LoremIpsum
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.newHourMinuteTimeStamp
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.randomAvatarId
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.randomFullName
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
@@ -45,6 +41,10 @@
 import androidx.constraintlayout.compose.ConstraintLayout
 import androidx.constraintlayout.compose.ConstraintSet
 import androidx.constraintlayout.compose.Dimension
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.LoremIpsum
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.newHourMinuteTimeStamp
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.randomAvatarId
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.sampledata.randomFullName
 
 @Preview
 @Composable
diff --git a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/newmessage/NewMessage.kt b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/newmessage/NewMessage.kt
index 75c0dc8..95b79af 100644
--- a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/newmessage/NewMessage.kt
+++ b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/newmessage/NewMessage.kt
@@ -29,7 +29,6 @@
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.components.TestableButton
 import androidx.compose.material.Button
 import androidx.compose.material.ExperimentalMaterialApi
 import androidx.compose.material.Icon
@@ -69,6 +68,7 @@
 import androidx.constraintlayout.compose.MotionLayoutScope
 import androidx.constraintlayout.compose.MotionScene
 import androidx.constraintlayout.compose.Visibility
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.components.TestableButton
 
 // Copied from ComposeMail project
 
diff --git a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/toolbar/CollapsibleToolbar.kt b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/toolbar/CollapsibleToolbar.kt
index 3fe6074..846fd83 100644
--- a/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/toolbar/CollapsibleToolbar.kt
+++ b/constraintlayout/constraintlayout-compose/integration-tests/macrobenchmark-target/src/main/java/androidx/constraintlayout/compose/integration/macrobenchmark/target/toolbar/CollapsibleToolbar.kt
@@ -27,8 +27,6 @@
 import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.components.CardSample
-import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.components.OutlinedSearchBar
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
@@ -55,6 +53,8 @@
 import androidx.constraintlayout.compose.Dimension
 import androidx.constraintlayout.compose.ExperimentalMotionApi
 import androidx.constraintlayout.compose.MotionLayout
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.components.CardSample
+import androidx.constraintlayout.compose.integration.macrobenchmark.target.common.components.OutlinedSearchBar
 import kotlin.math.absoluteValue
 
 @Preview
diff --git a/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/MotionParserTest.kt b/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/MotionParserTest.kt
index bbb33db..b674c98 100644
--- a/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/MotionParserTest.kt
+++ b/constraintlayout/constraintlayout-compose/src/androidAndroidTest/kotlin/androidx/constraintlayout/compose/MotionParserTest.kt
@@ -31,12 +31,12 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import kotlin.test.assertFailsWith
 import org.junit.After
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.test.assertFailsWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/constraintlayout/constraintlayout-core/build.gradle b/constraintlayout/constraintlayout-core/build.gradle
index ce816fb..a466adb 100644
--- a/constraintlayout/constraintlayout-core/build.gradle
+++ b/constraintlayout/constraintlayout-core/build.gradle
@@ -28,7 +28,7 @@
 }
 
 androidx {
-    name = "Android ConstraintLayout Core Library"
+    name = "ConstraintLayout Core"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CONSTRAINTLAYOUT_CORE
     inceptionYear = "2022"
diff --git a/constraintlayout/constraintlayout/build.gradle b/constraintlayout/constraintlayout/build.gradle
index 060d756..52a3d6e 100644
--- a/constraintlayout/constraintlayout/build.gradle
+++ b/constraintlayout/constraintlayout/build.gradle
@@ -54,7 +54,7 @@
 }
 
 androidx {
-    name = "Android ConstraintLayout Library"
+    name = "ConstraintLayout"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CONSTRAINTLAYOUT
     inceptionYear = "2022"
diff --git a/contentpager/contentpager/build.gradle b/contentpager/contentpager/build.gradle
index d2624f7..81252bf 100644
--- a/contentpager/contentpager/build.gradle
+++ b/contentpager/contentpager/build.gradle
@@ -35,7 +35,7 @@
 }
 
 androidx {
-    name = "Android Support Content"
+    name = "Content"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Library providing support for paging across content exposed via a ContentProvider. Use of this library allows a client to avoid expensive interprocess \"cursor window swaps\" on the UI thread."
diff --git a/coordinatorlayout/coordinatorlayout/build.gradle b/coordinatorlayout/coordinatorlayout/build.gradle
index bc110f8..9578993 100644
--- a/coordinatorlayout/coordinatorlayout/build.gradle
+++ b/coordinatorlayout/coordinatorlayout/build.gradle
@@ -48,7 +48,7 @@
 }
 
 androidx {
-    name = "Android Support Library Coordinator Layout"
+    name = "Coordinator Layout"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2011"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/core/core-animation-testing/api/public_plus_experimental_current.txt b/core/core-animation-testing/api/public_plus_experimental_current.txt
deleted file mode 100644
index 348efb2..0000000
--- a/core/core-animation-testing/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Signature format: 4.0
-package androidx.core.animation {
-
-  public final class AnimatorTestRule implements org.junit.rules.TestRule {
-    ctor public AnimatorTestRule();
-    method public void advanceTimeBy(long);
-    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement, org.junit.runner.Description);
-    method public long getCurrentTime();
-  }
-
-}
-
diff --git a/core/core-animation-testing/build.gradle b/core/core-animation-testing/build.gradle
index 046bc43..78bb2e4 100644
--- a/core/core-animation-testing/build.gradle
+++ b/core/core-animation-testing/build.gradle
@@ -29,7 +29,7 @@
 }
 
 androidx {
-    name = "Android Support Animator Testing"
+    name = "Animation Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CORE_ANIMATION_TESTING
     inceptionYear = "2018"
diff --git a/core/core-animation/api/public_plus_experimental_current.txt b/core/core-animation/api/public_plus_experimental_current.txt
deleted file mode 100644
index 3477c13..0000000
--- a/core/core-animation/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,372 +0,0 @@
-// Signature format: 4.0
-package androidx.core.animation {
-
-  public class AccelerateDecelerateInterpolator implements androidx.core.animation.Interpolator {
-    ctor public AccelerateDecelerateInterpolator();
-    method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public class AccelerateInterpolator implements androidx.core.animation.Interpolator {
-    ctor public AccelerateInterpolator();
-    ctor public AccelerateInterpolator(float);
-    ctor public AccelerateInterpolator(android.content.Context, android.util.AttributeSet);
-    method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public abstract class Animator implements java.lang.Cloneable {
-    ctor public Animator();
-    method public void addListener(androidx.core.animation.Animator.AnimatorListener);
-    method public void addPauseListener(androidx.core.animation.Animator.AnimatorPauseListener);
-    method public void addUpdateListener(androidx.core.animation.Animator.AnimatorUpdateListener);
-    method public void cancel();
-    method public androidx.core.animation.Animator clone();
-    method public void end();
-    method public abstract long getDuration();
-    method public androidx.core.animation.Interpolator? getInterpolator();
-    method public abstract long getStartDelay();
-    method public long getTotalDuration();
-    method public boolean isPaused();
-    method public abstract boolean isRunning();
-    method public boolean isStarted();
-    method public void pause();
-    method public void removeAllListeners();
-    method public void removeAllUpdateListeners();
-    method public void removeListener(androidx.core.animation.Animator.AnimatorListener);
-    method public void removePauseListener(androidx.core.animation.Animator.AnimatorPauseListener);
-    method public void removeUpdateListener(androidx.core.animation.Animator.AnimatorUpdateListener);
-    method public void resume();
-    method public abstract androidx.core.animation.Animator setDuration(@IntRange(from=0) long);
-    method public abstract void setInterpolator(androidx.core.animation.Interpolator?);
-    method public abstract void setStartDelay(@IntRange(from=0) long);
-    method public void setTarget(Object?);
-    method public void setupEndValues();
-    method public void setupStartValues();
-    method public void start();
-    field public static final long DURATION_INFINITE = -1L; // 0xffffffffffffffffL
-  }
-
-  public static interface Animator.AnimatorListener {
-    method public void onAnimationCancel(androidx.core.animation.Animator);
-    method public default void onAnimationEnd(androidx.core.animation.Animator, boolean);
-    method public void onAnimationEnd(androidx.core.animation.Animator);
-    method public void onAnimationRepeat(androidx.core.animation.Animator);
-    method public default void onAnimationStart(androidx.core.animation.Animator, boolean);
-    method public void onAnimationStart(androidx.core.animation.Animator);
-  }
-
-  public static interface Animator.AnimatorPauseListener {
-    method public void onAnimationPause(androidx.core.animation.Animator);
-    method public void onAnimationResume(androidx.core.animation.Animator);
-  }
-
-  public static interface Animator.AnimatorUpdateListener {
-    method public void onAnimationUpdate(androidx.core.animation.Animator);
-  }
-
-  public class AnimatorInflater {
-    method public static androidx.core.animation.Animator loadAnimator(android.content.Context, @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public static androidx.core.animation.Animator loadAnimator(android.content.res.Resources, android.content.res.Resources.Theme?, @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
-    method public static androidx.core.animation.Interpolator loadInterpolator(android.content.Context, @AnimatorRes @InterpolatorRes int) throws android.content.res.Resources.NotFoundException;
-  }
-
-  public abstract class AnimatorListenerAdapter implements androidx.core.animation.Animator.AnimatorListener androidx.core.animation.Animator.AnimatorPauseListener {
-    ctor public AnimatorListenerAdapter();
-    method public void onAnimationCancel(androidx.core.animation.Animator);
-    method public void onAnimationEnd(androidx.core.animation.Animator);
-    method public void onAnimationPause(androidx.core.animation.Animator);
-    method public void onAnimationRepeat(androidx.core.animation.Animator);
-    method public void onAnimationResume(androidx.core.animation.Animator);
-    method public void onAnimationStart(androidx.core.animation.Animator);
-  }
-
-  public final class AnimatorSet extends androidx.core.animation.Animator {
-    ctor public AnimatorSet();
-    method public boolean canReverse();
-    method public androidx.core.animation.AnimatorSet clone();
-    method public java.util.ArrayList<androidx.core.animation.Animator!> getChildAnimations();
-    method public long getCurrentPlayTime();
-    method public long getDuration();
-    method public long getStartDelay();
-    method public boolean isRunning();
-    method public androidx.core.animation.AnimatorSet.Builder play(androidx.core.animation.Animator);
-    method public void playSequentially(androidx.core.animation.Animator!...);
-    method public void playSequentially(java.util.List<androidx.core.animation.Animator!>);
-    method public void playTogether(androidx.core.animation.Animator!...);
-    method public void playTogether(java.util.Collection<androidx.core.animation.Animator!>);
-    method public void reverse();
-    method public void setCurrentPlayTime(long);
-    method public androidx.core.animation.AnimatorSet setDuration(long);
-    method public void setInterpolator(androidx.core.animation.Interpolator?);
-    method public void setStartDelay(long);
-  }
-
-  public class AnimatorSet.Builder {
-    method public androidx.core.animation.AnimatorSet.Builder after(androidx.core.animation.Animator);
-    method public androidx.core.animation.AnimatorSet.Builder after(long);
-    method public androidx.core.animation.AnimatorSet.Builder before(androidx.core.animation.Animator);
-    method public androidx.core.animation.AnimatorSet.Builder with(androidx.core.animation.Animator);
-  }
-
-  public class AnticipateInterpolator implements androidx.core.animation.Interpolator {
-    ctor public AnticipateInterpolator();
-    ctor public AnticipateInterpolator(float);
-    ctor public AnticipateInterpolator(android.content.Context, android.util.AttributeSet?);
-    method @FloatRange(to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public class AnticipateOvershootInterpolator implements androidx.core.animation.Interpolator {
-    ctor public AnticipateOvershootInterpolator();
-    ctor public AnticipateOvershootInterpolator(float);
-    ctor public AnticipateOvershootInterpolator(float, float);
-    ctor public AnticipateOvershootInterpolator(android.content.Context, android.util.AttributeSet?);
-    method @FloatRange(to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public final class ArgbEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer> {
-    method public Integer evaluate(float, Integer, Integer);
-    method public static androidx.core.animation.ArgbEvaluator getInstance();
-  }
-
-  public abstract class BidirectionalTypeConverter<T, V> extends androidx.core.animation.TypeConverter<T,V> {
-    ctor public BidirectionalTypeConverter(Class<T!>, Class<V!>);
-    method public abstract T convertBack(V);
-    method public androidx.core.animation.BidirectionalTypeConverter<V!,T!> invert();
-  }
-
-  public class BounceInterpolator implements androidx.core.animation.Interpolator {
-    ctor public BounceInterpolator();
-    method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public class CycleInterpolator implements androidx.core.animation.Interpolator {
-    ctor public CycleInterpolator(float);
-    ctor public CycleInterpolator(android.content.Context, android.util.AttributeSet?);
-    method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public class DecelerateInterpolator implements androidx.core.animation.Interpolator {
-    ctor public DecelerateInterpolator();
-    ctor public DecelerateInterpolator(float);
-    ctor public DecelerateInterpolator(android.content.Context, android.util.AttributeSet?);
-    method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public final class FloatArrayEvaluator implements androidx.core.animation.TypeEvaluator<float[]> {
-    ctor public FloatArrayEvaluator();
-    ctor public FloatArrayEvaluator(float[]?);
-    method public float[] evaluate(float, float[], float[]);
-  }
-
-  public final class FloatEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Float> {
-    method public Float evaluate(float, Float, Float);
-    method public static androidx.core.animation.FloatEvaluator getInstance();
-  }
-
-  public abstract class FloatProperty<T> extends android.util.Property<T,java.lang.Float> {
-    ctor public FloatProperty(String);
-    ctor public FloatProperty();
-    method public final void set(T, Float);
-    method public abstract void setValue(T, float);
-  }
-
-  public class IntArrayEvaluator implements androidx.core.animation.TypeEvaluator<int[]> {
-    ctor public IntArrayEvaluator();
-    ctor public IntArrayEvaluator(int[]?);
-    method public int[] evaluate(float, int[], int[]);
-  }
-
-  public class IntEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer> {
-    method public Integer evaluate(float, Integer, Integer);
-    method public static androidx.core.animation.IntEvaluator getInstance();
-  }
-
-  public abstract class IntProperty<T> extends android.util.Property<T,java.lang.Integer> {
-    ctor public IntProperty(String);
-    ctor public IntProperty();
-    method public final void set(T, Integer);
-    method public abstract void setValue(T, int);
-  }
-
-  public interface Interpolator {
-    method public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public abstract class Keyframe<T> implements java.lang.Cloneable {
-    ctor public Keyframe();
-    method public abstract androidx.core.animation.Keyframe<T!> clone();
-    method @FloatRange(from=0, to=1) public float getFraction();
-    method public androidx.core.animation.Interpolator? getInterpolator();
-    method public Class<?> getType();
-    method public abstract T? getValue();
-    method public boolean hasValue();
-    method public static androidx.core.animation.Keyframe<java.lang.Float!> ofFloat(@FloatRange(from=0, to=1) float, float);
-    method public static androidx.core.animation.Keyframe<java.lang.Float!> ofFloat(@FloatRange(from=0, to=1) float);
-    method public static androidx.core.animation.Keyframe<java.lang.Integer!> ofInt(@FloatRange(from=0, to=1) float, int);
-    method public static androidx.core.animation.Keyframe<java.lang.Integer!> ofInt(@FloatRange(from=0, to=1) float);
-    method public static <T> androidx.core.animation.Keyframe<T!> ofObject(@FloatRange(from=0, to=1) float, T?);
-    method public static <T> androidx.core.animation.Keyframe<T!> ofObject(@FloatRange(from=0, to=1) float);
-    method public void setFraction(@FloatRange(from=0, to=1) float);
-    method public void setInterpolator(androidx.core.animation.Interpolator?);
-    method public abstract void setValue(T?);
-  }
-
-  public class LinearInterpolator implements androidx.core.animation.Interpolator {
-    ctor public LinearInterpolator();
-    ctor public LinearInterpolator(android.content.Context, android.util.AttributeSet?);
-    method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public final class ObjectAnimator extends androidx.core.animation.ValueAnimator {
-    ctor public ObjectAnimator();
-    method public androidx.core.animation.ObjectAnimator clone();
-    method public String getPropertyName();
-    method public Object? getTarget();
-    method public static androidx.core.animation.ObjectAnimator ofArgb(Object, String, int...);
-    method public static <T> androidx.core.animation.ObjectAnimator ofArgb(T, android.util.Property<T!,java.lang.Integer!>, int...);
-    method public static androidx.core.animation.ObjectAnimator ofFloat(Object, String, float...);
-    method public static androidx.core.animation.ObjectAnimator ofFloat(Object, String?, String?, android.graphics.Path);
-    method public static <T> androidx.core.animation.ObjectAnimator ofFloat(T, android.util.Property<T!,java.lang.Float!>, float...);
-    method public static <T> androidx.core.animation.ObjectAnimator ofFloat(T, android.util.Property<T!,java.lang.Float!>?, android.util.Property<T!,java.lang.Float!>?, android.graphics.Path);
-    method public static androidx.core.animation.ObjectAnimator ofInt(Object, String, int...);
-    method public static androidx.core.animation.ObjectAnimator ofInt(Object, String, String, android.graphics.Path);
-    method public static <T> androidx.core.animation.ObjectAnimator ofInt(T, android.util.Property<T!,java.lang.Integer!>, int...);
-    method public static <T> androidx.core.animation.ObjectAnimator ofInt(T, android.util.Property<T!,java.lang.Integer!>?, android.util.Property<T!,java.lang.Integer!>?, android.graphics.Path);
-    method public static androidx.core.animation.ObjectAnimator ofMultiFloat(Object, String, float[]![]);
-    method public static androidx.core.animation.ObjectAnimator ofMultiFloat(Object, String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T> androidx.core.animation.ObjectAnimator ofMultiFloat(Object, String, androidx.core.animation.TypeConverter<T!,float[]!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
-    method public static androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, int[]![]);
-    method public static androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T> androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, androidx.core.animation.TypeConverter<T!,int[]!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
-    method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeEvaluator, java.lang.Object!...);
-    method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeConverter<android.graphics.PointF!,?>?, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T, V> androidx.core.animation.ObjectAnimator ofObject(T, android.util.Property<T!,V!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
-    method @java.lang.SafeVarargs public static <T, V, P> androidx.core.animation.ObjectAnimator ofObject(T, android.util.Property<T!,P!>, androidx.core.animation.TypeConverter<V!,P!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
-    method public static <T, V> androidx.core.animation.ObjectAnimator ofObject(T, android.util.Property<T!,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
-    method public static androidx.core.animation.ObjectAnimator ofPropertyValuesHolder(Object, androidx.core.animation.PropertyValuesHolder!...);
-    method public void setAutoCancel(boolean);
-    method public androidx.core.animation.ObjectAnimator setDuration(long);
-    method public void setProperty(android.util.Property);
-    method public void setPropertyName(String);
-  }
-
-  public class OvershootInterpolator implements androidx.core.animation.Interpolator {
-    ctor public OvershootInterpolator();
-    ctor public OvershootInterpolator(float);
-    ctor public OvershootInterpolator(android.content.Context, android.util.AttributeSet?);
-    method @FloatRange(from=0) public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public class PathInterpolator implements androidx.core.animation.Interpolator {
-    ctor public PathInterpolator(android.graphics.Path);
-    ctor public PathInterpolator(float, float);
-    ctor public PathInterpolator(float, float, float, float);
-    ctor public PathInterpolator(android.content.Context, android.util.AttributeSet?, org.xmlpull.v1.XmlPullParser);
-    ctor public PathInterpolator(android.content.res.Resources, android.content.res.Resources.Theme?, android.util.AttributeSet?, org.xmlpull.v1.XmlPullParser);
-    method public float getInterpolation(@FloatRange(from=0, to=1) float);
-  }
-
-  public class PointFEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.PointF> {
-    ctor public PointFEvaluator();
-    ctor public PointFEvaluator(android.graphics.PointF);
-    method public android.graphics.PointF evaluate(float, android.graphics.PointF, android.graphics.PointF);
-  }
-
-  public class PropertyValuesHolder implements java.lang.Cloneable {
-    method public androidx.core.animation.PropertyValuesHolder clone();
-    method public String getPropertyName();
-    method public static androidx.core.animation.PropertyValuesHolder ofFloat(String, float...);
-    method public static androidx.core.animation.PropertyValuesHolder ofFloat(android.util.Property<?,java.lang.Float!>, float...);
-    method public static androidx.core.animation.PropertyValuesHolder ofInt(String, int...);
-    method public static androidx.core.animation.PropertyValuesHolder ofInt(android.util.Property<?,java.lang.Integer!>, int...);
-    method @java.lang.SafeVarargs public static androidx.core.animation.PropertyValuesHolder ofKeyframe(String, androidx.core.animation.Keyframe!...);
-    method @java.lang.SafeVarargs public static androidx.core.animation.PropertyValuesHolder ofKeyframe(android.util.Property, androidx.core.animation.Keyframe!...);
-    method public static androidx.core.animation.PropertyValuesHolder ofMultiFloat(String, float[]![]);
-    method public static androidx.core.animation.PropertyValuesHolder ofMultiFloat(String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> androidx.core.animation.PropertyValuesHolder ofMultiFloat(String, androidx.core.animation.TypeConverter<V!,float[]!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
-    method @java.lang.SafeVarargs public static <T> androidx.core.animation.PropertyValuesHolder ofMultiFloat(String, androidx.core.animation.TypeConverter<T!,float[]!>?, androidx.core.animation.TypeEvaluator<T!>, androidx.core.animation.Keyframe!...);
-    method public static androidx.core.animation.PropertyValuesHolder ofMultiInt(String, int[]![]);
-    method public static androidx.core.animation.PropertyValuesHolder ofMultiInt(String, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> androidx.core.animation.PropertyValuesHolder ofMultiInt(String, androidx.core.animation.TypeConverter<V!,int[]!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
-    method @java.lang.SafeVarargs public static <T> androidx.core.animation.PropertyValuesHolder ofMultiInt(String, androidx.core.animation.TypeConverter<T!,int[]!>?, androidx.core.animation.TypeEvaluator<T!>, androidx.core.animation.Keyframe!...);
-    method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeEvaluator, java.lang.Object!...);
-    method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeConverter<android.graphics.PointF!,?>?, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property, androidx.core.animation.TypeEvaluator<V!>, V!...);
-    method @java.lang.SafeVarargs public static <T, V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<?,V!>, androidx.core.animation.TypeConverter<T!,V!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
-    method public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<?,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
-    method public void setConverter(androidx.core.animation.TypeConverter?);
-    method public void setEvaluator(androidx.core.animation.TypeEvaluator);
-    method public void setFloatValues(float...);
-    method public void setIntValues(int...);
-    method public void setKeyframes(androidx.core.animation.Keyframe!...);
-    method public void setObjectValues(java.lang.Object!...);
-    method public void setProperty(android.util.Property);
-    method public void setPropertyName(String);
-  }
-
-  public class RectEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.Rect> {
-    ctor public RectEvaluator();
-    ctor public RectEvaluator(android.graphics.Rect);
-    method public android.graphics.Rect evaluate(float, android.graphics.Rect, android.graphics.Rect);
-  }
-
-  public class TimeAnimator extends androidx.core.animation.ValueAnimator {
-    ctor public TimeAnimator();
-    method public void setTimeListener(androidx.core.animation.TimeAnimator.TimeListener?);
-  }
-
-  public static interface TimeAnimator.TimeListener {
-    method public void onTimeUpdate(androidx.core.animation.TimeAnimator, long, long);
-  }
-
-  public abstract class TypeConverter<T, V> {
-    ctor public TypeConverter(Class<T!>, Class<V!>);
-    method public abstract V convert(T);
-  }
-
-  public interface TypeEvaluator<T> {
-    method public T evaluate(float, T, T);
-  }
-
-  public class ValueAnimator extends androidx.core.animation.Animator {
-    ctor public ValueAnimator();
-    method public static boolean areAnimatorsEnabled();
-    method public androidx.core.animation.ValueAnimator clone();
-    method public float getAnimatedFraction();
-    method public Object getAnimatedValue();
-    method public Object? getAnimatedValue(String);
-    method public long getCurrentPlayTime();
-    method public long getDuration();
-    method public static long getFrameDelay();
-    method public String getNameForTrace();
-    method public int getRepeatCount();
-    method public int getRepeatMode();
-    method public long getStartDelay();
-    method public androidx.core.animation.PropertyValuesHolder![] getValues();
-    method public boolean isRunning();
-    method public static androidx.core.animation.ValueAnimator ofArgb(int...);
-    method public static androidx.core.animation.ValueAnimator ofFloat(float...);
-    method public static androidx.core.animation.ValueAnimator ofInt(int...);
-    method public static androidx.core.animation.ValueAnimator ofObject(androidx.core.animation.TypeEvaluator, java.lang.Object!...);
-    method public static androidx.core.animation.ValueAnimator ofPropertyValuesHolder(androidx.core.animation.PropertyValuesHolder!...);
-    method public void reverse();
-    method public void setCurrentFraction(float);
-    method public void setCurrentPlayTime(long);
-    method public androidx.core.animation.ValueAnimator setDuration(long);
-    method public void setEvaluator(androidx.core.animation.TypeEvaluator);
-    method public void setFloatValues(float...);
-    method public static void setFrameDelay(long);
-    method public void setIntValues(int...);
-    method public void setInterpolator(androidx.core.animation.Interpolator?);
-    method public void setNameForTrace(String);
-    method public void setObjectValues(java.lang.Object!...);
-    method public void setRepeatCount(int);
-    method public void setRepeatMode(int);
-    method public void setStartDelay(long);
-    method public void setValues(androidx.core.animation.PropertyValuesHolder!...);
-    field public static final int INFINITE = -1; // 0xffffffff
-    field public static final int RESTART = 1; // 0x1
-    field public static final int REVERSE = 2; // 0x2
-  }
-
-}
-
diff --git a/core/core-animation/build.gradle b/core/core-animation/build.gradle
index fb7cc95..940504b 100644
--- a/core/core-animation/build.gradle
+++ b/core/core-animation/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android Support Animation"
+    name = "Animation"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CORE_ANIMATION
     inceptionYear = "2018"
diff --git a/core/core-appdigest/api/public_plus_experimental_current.txt b/core/core-appdigest/api/public_plus_experimental_current.txt
deleted file mode 100644
index a69aa74..0000000
--- a/core/core-appdigest/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-// Signature format: 4.0
-package androidx.core.appdigest {
-
-  public final class Checksum {
-    method public java.security.cert.Certificate? getInstallerCertificate() throws java.security.cert.CertificateException;
-    method public String? getInstallerPackageName();
-    method public String? getSplitName();
-    method public int getType();
-    method public byte[] getValue();
-    field public static final int TYPE_PARTIAL_MERKLE_ROOT_1M_SHA256 = 32; // 0x20
-    field public static final int TYPE_PARTIAL_MERKLE_ROOT_1M_SHA512 = 64; // 0x40
-    field @Deprecated public static final int TYPE_WHOLE_MD5 = 2; // 0x2
-    field public static final int TYPE_WHOLE_MERKLE_ROOT_4K_SHA256 = 1; // 0x1
-    field @Deprecated public static final int TYPE_WHOLE_SHA1 = 4; // 0x4
-    field @Deprecated public static final int TYPE_WHOLE_SHA256 = 8; // 0x8
-    field @Deprecated public static final int TYPE_WHOLE_SHA512 = 16; // 0x10
-  }
-
-  public final class Checksums {
-    method public static com.google.common.util.concurrent.ListenableFuture<androidx.core.appdigest.Checksum![]!> getChecksums(android.content.Context, String, boolean, int, java.util.List<java.security.cert.Certificate!>, java.util.concurrent.Executor) throws java.security.cert.CertificateEncodingException, android.content.pm.PackageManager.NameNotFoundException;
-    method public static com.google.common.util.concurrent.ListenableFuture<androidx.core.appdigest.Checksum![]!> getFileChecksums(android.content.Context, String, int, String?, java.util.List<java.security.cert.Certificate!>, java.util.concurrent.Executor);
-    field public static final java.util.List<java.security.cert.Certificate!> TRUST_ALL;
-    field public static final java.util.List<java.security.cert.Certificate!> TRUST_NONE;
-  }
-
-}
-
diff --git a/core/core-appdigest/build.gradle b/core/core-appdigest/build.gradle
index a0d4af2..7dadc10 100644
--- a/core/core-appdigest/build.gradle
+++ b/core/core-appdigest/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "AndroidX AppDigest Library"
+    name = "AppDigest"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CORE_APPDIGEST
     inceptionYear = "2020"
diff --git a/core/core-google-shortcuts/api/public_plus_experimental_current.txt b/core/core-google-shortcuts/api/public_plus_experimental_current.txt
deleted file mode 100644
index e6f50d0..0000000
--- a/core/core-google-shortcuts/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 4.0
diff --git a/core/core-google-shortcuts/build.gradle b/core/core-google-shortcuts/build.gradle
index 3071a80..615be8f 100644
--- a/core/core-google-shortcuts/build.gradle
+++ b/core/core-google-shortcuts/build.gradle
@@ -54,7 +54,7 @@
 }
 
 androidx {
-    name = "Google Shortcuts Integration Library"
+    name = "Google Shortcuts Integration"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CORE_GOOGLE_SHORTCUTS
     inceptionYear = "2021"
diff --git a/core/core-graphics-integration-tests/testapp/build.gradle b/core/core-graphics-integration-tests/testapp/build.gradle
index 59d5bb3..768d7b4 100644
--- a/core/core-graphics-integration-tests/testapp/build.gradle
+++ b/core/core-graphics-integration-tests/testapp/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "AndroidX bitmap scaling Sample"
+    name = "bitmap scaling Sample"
     inceptionYear = "2021"
     description = "Sample for the AndoridX graphics bitmap compatibility"
 }
diff --git a/core/core-i18n/api/public_plus_experimental_current.txt b/core/core-i18n/api/public_plus_experimental_current.txt
deleted file mode 100644
index 39d3859..0000000
--- a/core/core-i18n/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,280 +0,0 @@
-// Signature format: 4.0
-package androidx.core.i18n {
-
-  public final class DateTimeFormatter {
-    ctor public DateTimeFormatter(android.content.Context context, androidx.core.i18n.DateTimeFormatterSkeletonOptions options, optional java.util.Locale locale);
-    ctor public DateTimeFormatter(android.content.Context context, androidx.core.i18n.DateTimeFormatterSkeletonOptions options);
-    ctor public DateTimeFormatter(androidx.core.i18n.DateTimeFormatterJdkStyleOptions options, optional java.util.Locale locale);
-    ctor public DateTimeFormatter(androidx.core.i18n.DateTimeFormatterJdkStyleOptions options);
-    method public String format(long milliseconds);
-    method public String format(java.util.Date date);
-    method public String format(java.util.Calendar calendar);
-  }
-
-  public final class DateTimeFormatterCommonOptions {
-    ctor public DateTimeFormatterCommonOptions();
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions ABBR_MONTH_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions ABBR_MONTH_WEEKDAY_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterCommonOptions.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions HOUR24_MINUTE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions HOUR24_MINUTE_SECOND;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions HOUR_MINUTE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions HOUR_MINUTE_SECOND;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions MINUTE_SECOND;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions MONTH_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions MONTH_WEEKDAY_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions NUM_MONTH_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions NUM_MONTH_WEEKDAY_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_ABBR_MONTH;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_ABBR_MONTH_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_ABBR_MONTH_WEEKDAY_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_MONTH;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_MONTH_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_MONTH_WEEKDAY_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_NUM_MONTH;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_NUM_MONTH_DAY;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions YEAR_NUM_MONTH_WEEKDAY_DAY;
-  }
-
-  public static final class DateTimeFormatterCommonOptions.Companion {
-  }
-
-  public final class DateTimeFormatterJdkStyleOptions {
-    method public static androidx.core.i18n.DateTimeFormatterJdkStyleOptions createDateInstance(int style);
-    method public static androidx.core.i18n.DateTimeFormatterJdkStyleOptions createDateTimeInstance(int dateStyle, int timeStyle);
-    method public static androidx.core.i18n.DateTimeFormatterJdkStyleOptions createTimeInstance(int style);
-    method public int getDateStyle();
-    method public int getTimeStyle();
-    property public final int dateStyle;
-    property public final int timeStyle;
-    field public static final androidx.core.i18n.DateTimeFormatterJdkStyleOptions.Companion Companion;
-  }
-
-  public static final class DateTimeFormatterJdkStyleOptions.Companion {
-    method public androidx.core.i18n.DateTimeFormatterJdkStyleOptions createDateInstance(int style);
-    method public androidx.core.i18n.DateTimeFormatterJdkStyleOptions createDateTimeInstance(int dateStyle, int timeStyle);
-    method public androidx.core.i18n.DateTimeFormatterJdkStyleOptions createTimeInstance(int style);
-  }
-
-  public final class DateTimeFormatterSkeletonOptions {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions fromString(String value);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day getDay();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era getEra();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond getFractionalSecond();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour getHour();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute getMinute();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month getMonth();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period getPeriod();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second getSecond();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone getTimezone();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay getWeekDay();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year getYear();
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Companion Companion;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Builder {
-    ctor public DateTimeFormatterSkeletonOptions.Builder(optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era era, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year year, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month month, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day day, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay weekDay, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period period, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour hour, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute minute, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second second, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond fractionalSecond, optional androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone timezone);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions build();
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setDay(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day day);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setEra(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era era);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setFractionalSecond(androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond fractionalSecond);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setHour(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour hour);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setMinute(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute minute);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setMonth(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month month);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setPeriod(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period period);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setSecond(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second second);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setTimezone(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone timezone);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setWeekDay(androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay weekDay);
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Builder setYear(androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year year);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Day {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day TWO_DIGITS;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Day.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Era {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era ABBREVIATED;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era NARROW;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era WIDE;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Era.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Era fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.FractionalSecond {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond NUMERIC_1_DIGIT;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond NUMERIC_2_DIGITS;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond NUMERIC_3_DIGITS;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.FractionalSecond.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.FractionalSecond fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Hour {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour FORCE_12H_NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour FORCE_12H_TWO_DIGITS;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour FORCE_24H_NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour FORCE_24H_TWO_DIGITS;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour TWO_DIGITS;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Hour.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Minute {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute TWO_DIGITS;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Minute.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Month {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month ABBREVIATED;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month NARROW;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month TWO_DIGITS;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month WIDE;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Month.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Period {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period ABBREVIATED;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period FLEXIBLE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period NARROW;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period WIDE;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Period.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Period fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Second {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second TWO_DIGITS;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Second.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Timezone {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone LONG;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone LONG_GENERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone LONG_OFFSET;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone SHORT;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone SHORT_GENERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone SHORT_OFFSET;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Timezone.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Timezone fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.WeekDay {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay ABBREVIATED;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay NARROW;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay SHORT;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay WIDE;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.WeekDay.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay fromString(String value);
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Year {
-    method public static androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year fromString(String value);
-    method public String getValue();
-    property public final String value;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year.Companion Companion;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year NONE;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year NUMERIC;
-    field public static final androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year TWO_DIGITS;
-  }
-
-  public static final class DateTimeFormatterSkeletonOptions.Year.Companion {
-    method public androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year fromString(String value);
-  }
-
-  public final class MessageFormat {
-    method public static String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
-    method public static String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
-    method public static String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
-    field public static final androidx.core.i18n.MessageFormat.Companion Companion;
-  }
-
-  public static final class MessageFormat.Companion {
-    method public String format(android.content.Context context, optional java.util.Locale locale, String msg, java.util.Map<java.lang.String,?> namedArguments);
-    method public String format(android.content.Context context, String msg, java.util.Map<java.lang.String,?> namedArguments);
-    method public String format(android.content.Context context, int id, java.util.Map<java.lang.String,?> namedArguments);
-  }
-
-}
-
diff --git a/core/core-i18n/src/androidTest/java/androidx/core/i18n/CheckDeviceSettingsTest.kt b/core/core-i18n/src/androidTest/java/androidx/core/i18n/CheckDeviceSettingsTest.kt
index 877b8ca..a65431d 100644
--- a/core/core-i18n/src/androidTest/java/androidx/core/i18n/CheckDeviceSettingsTest.kt
+++ b/core/core-i18n/src/androidTest/java/androidx/core/i18n/CheckDeviceSettingsTest.kt
@@ -22,10 +22,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
+import java.util.Locale
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.Locale
 
 @RunWith(AndroidJUnit4::class)
 class CheckDeviceSettingsTest {
diff --git a/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatJdkStylesTest.kt b/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatJdkStylesTest.kt
index 4f0a3ea..dae2fa6 100644
--- a/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatJdkStylesTest.kt
+++ b/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatJdkStylesTest.kt
@@ -19,13 +19,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
-import org.junit.Assert.assertEquals
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.text.DateFormat
 import java.util.Calendar
 import java.util.GregorianCalendar
 import java.util.Locale
+import org.junit.Assert.assertEquals
+import org.junit.Test
+import org.junit.runner.RunWith
 
 /**
  * Instrumented test, which will execute on an Android device.
diff --git a/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatterTest.kt b/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatterTest.kt
index 9534b9f..94ff57d 100644
--- a/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatterTest.kt
+++ b/core/core-i18n/src/androidTest/java/androidx/core/i18n/DateTimeFormatterTest.kt
@@ -19,25 +19,25 @@
 import android.annotation.SuppressLint
 import android.os.Build
 import android.util.Log
+import androidx.core.i18n.DateTimeFormatterSkeletonOptions as SkeletonOptions
 import androidx.core.os.BuildCompat
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
-import org.junit.After
-import org.junit.Assert.assertEquals
-import org.junit.Before
-import org.junit.BeforeClass
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.Calendar
 import java.util.Date
 import java.util.GregorianCalendar
 import java.util.Locale
 import java.util.TimeZone
 import kotlin.test.assertFailsWith
-import androidx.core.i18n.DateTimeFormatterSkeletonOptions as SkeletonOptions
+import org.junit.After
+import org.junit.Assert.assertEquals
+import org.junit.Before
+import org.junit.BeforeClass
+import org.junit.Test
+import org.junit.runner.RunWith
 
 /** Must execute on an Android device. */
 @RunWith(AndroidJUnit4::class)
diff --git a/core/core-i18n/src/main/java/androidx/core/i18n/DateTimeFormatterCommonOptions.kt b/core/core-i18n/src/main/java/androidx/core/i18n/DateTimeFormatterCommonOptions.kt
index 4681fba..e5981a7 100644
--- a/core/core-i18n/src/main/java/androidx/core/i18n/DateTimeFormatterCommonOptions.kt
+++ b/core/core-i18n/src/main/java/androidx/core/i18n/DateTimeFormatterCommonOptions.kt
@@ -17,11 +17,11 @@
 package androidx.core.i18n
 
 import androidx.core.i18n.DateTimeFormatterSkeletonOptions.Day
-import androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month
-import androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay
 import androidx.core.i18n.DateTimeFormatterSkeletonOptions.Hour
 import androidx.core.i18n.DateTimeFormatterSkeletonOptions.Minute
+import androidx.core.i18n.DateTimeFormatterSkeletonOptions.Month
 import androidx.core.i18n.DateTimeFormatterSkeletonOptions.Second
+import androidx.core.i18n.DateTimeFormatterSkeletonOptions.WeekDay
 import androidx.core.i18n.DateTimeFormatterSkeletonOptions.Year
 
 /** Used to support common styles, similar to the ones defined in Closure / Material.
diff --git a/core/core-ktx/api/public_plus_experimental_current.txt b/core/core-ktx/api/public_plus_experimental_current.txt
deleted file mode 100644
index 89ab047..0000000
--- a/core/core-ktx/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,634 +0,0 @@
-// Signature format: 4.0
-package androidx.core.animation {
-
-  public final class AnimatorKt {
-    method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat);
-    method @RequiresApi(19) public static android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onPause);
-    method public static inline android.animation.Animator.AnimatorListener doOnCancel(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnEnd(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static android.animation.Animator.AnimatorPauseListener doOnPause(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnRepeat(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method @RequiresApi(19) public static android.animation.Animator.AnimatorPauseListener doOnResume(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-    method public static inline android.animation.Animator.AnimatorListener doOnStart(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content {
-
-  public final class ContentValuesKt {
-    method public static android.content.ContentValues contentValuesOf(kotlin.Pair<java.lang.String,?>... pairs);
-  }
-
-  public final class ContextKt {
-    method public static inline <reified T> T! getSystemService(android.content.Context);
-    method public static inline void withStyledAttributes(android.content.Context, optional android.util.AttributeSet? set, int[] attrs, optional @AttrRes int defStyleAttr, optional @StyleRes int defStyleRes, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-    method public static inline void withStyledAttributes(android.content.Context, @StyleRes int resourceId, int[] attrs, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
-  }
-
-  public final class SharedPreferencesKt {
-    method public static inline void edit(android.content.SharedPreferences, optional boolean commit, kotlin.jvm.functions.Function1<? super android.content.SharedPreferences.Editor,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.content.res {
-
-  public final class TypedArrayKt {
-    method public static boolean getBooleanOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @ColorInt public static int getColorOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.content.res.ColorStateList getColorStateListOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getDimensionOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelOffsetOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @Dimension public static int getDimensionPixelSizeOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static android.graphics.drawable.Drawable getDrawableOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static float getFloatOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @RequiresApi(26) public static android.graphics.Typeface getFontOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static int getIntegerOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method @AnyRes public static int getResourceIdOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static String getStringOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence![] getTextArrayOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static CharSequence getTextOrThrow(android.content.res.TypedArray, @StyleableRes int index);
-    method public static inline <R> R use(android.content.res.TypedArray, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,? extends R> block);
-  }
-
-}
-
-package androidx.core.database {
-
-  public final class CursorKt {
-    method public static inline byte[]? getBlobOrNull(android.database.Cursor, int index);
-    method public static inline Double? getDoubleOrNull(android.database.Cursor, int index);
-    method public static inline Float? getFloatOrNull(android.database.Cursor, int index);
-    method public static inline Integer? getIntOrNull(android.database.Cursor, int index);
-    method public static inline Long? getLongOrNull(android.database.Cursor, int index);
-    method public static inline Short? getShortOrNull(android.database.Cursor, int index);
-    method public static inline String? getStringOrNull(android.database.Cursor, int index);
-  }
-
-}
-
-package androidx.core.database.sqlite {
-
-  public final class SQLiteDatabaseKt {
-    method public static inline <T> T transaction(android.database.sqlite.SQLiteDatabase, optional boolean exclusive, kotlin.jvm.functions.Function1<? super android.database.sqlite.SQLiteDatabase,? extends T> body);
-  }
-
-}
-
-package androidx.core.graphics {
-
-  public final class BitmapKt {
-    method public static inline android.graphics.Bitmap applyCanvas(android.graphics.Bitmap, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.PointF p);
-    method public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config);
-    method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config, optional boolean hasAlpha, optional android.graphics.ColorSpace colorSpace);
-    method public static inline operator int get(android.graphics.Bitmap, int x, int y);
-    method public static inline android.graphics.Bitmap scale(android.graphics.Bitmap, int width, int height, optional boolean filter);
-    method public static inline operator void set(android.graphics.Bitmap, int x, int y, @ColorInt int color);
-  }
-
-  public final class CanvasKt {
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Rect clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.RectF clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, int left, int top, int right, int bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, float left, float top, float right, float bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withClip(android.graphics.Canvas, android.graphics.Path clipPath, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withMatrix(android.graphics.Canvas, optional android.graphics.Matrix matrix, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withRotation(android.graphics.Canvas, optional float degrees, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSave(android.graphics.Canvas, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withScale(android.graphics.Canvas, optional float x, optional float y, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withSkew(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-    method public static inline void withTranslation(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class ColorKt {
-    method @RequiresApi(26) public static inline operator float component1(android.graphics.Color);
-    method public static inline operator int component1(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component1(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component2(android.graphics.Color);
-    method public static inline operator int component2(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component2(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component3(android.graphics.Color);
-    method public static inline operator int component3(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component3(@ColorLong long);
-    method @RequiresApi(26) public static inline operator float component4(android.graphics.Color);
-    method public static inline operator int component4(@ColorInt int);
-    method @RequiresApi(26) public static inline operator float component4(@ColorLong long);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace.Named colorSpace);
-    method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace.Named colorSpace);
-    method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace colorSpace);
-    method public static inline int getAlpha(@ColorInt int);
-    method @RequiresApi(26) public static inline float getAlpha(@ColorLong long);
-    method public static inline int getBlue(@ColorInt int);
-    method @RequiresApi(26) public static inline float getBlue(@ColorLong long);
-    method @RequiresApi(26) public static inline android.graphics.ColorSpace getColorSpace(@ColorLong long);
-    method public static inline int getGreen(@ColorInt int);
-    method @RequiresApi(26) public static inline float getGreen(@ColorLong long);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorInt int);
-    method @RequiresApi(26) public static inline float getLuminance(@ColorLong long);
-    method public static inline int getRed(@ColorInt int);
-    method @RequiresApi(26) public static inline float getRed(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isSrgb(@ColorLong long);
-    method @RequiresApi(26) public static inline boolean isWideGamut(@ColorLong long);
-    method @RequiresApi(26) public static operator android.graphics.Color plus(android.graphics.Color, android.graphics.Color c);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorLong long);
-    method @ColorInt @RequiresApi(26) public static inline int toColorInt(@ColorLong long);
-    method @ColorInt public static inline int toColorInt(String);
-    method @ColorLong @RequiresApi(26) public static inline long toColorLong(@ColorInt int);
-  }
-
-  public final class ImageDecoderKt {
-    method @RequiresApi(28) public static inline android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-    method @RequiresApi(28) public static inline android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
-  }
-
-  public final class MatrixKt {
-    method public static android.graphics.Matrix rotationMatrix(float degrees, optional float px, optional float py);
-    method public static android.graphics.Matrix scaleMatrix(optional float sx, optional float sy);
-    method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
-    method public static android.graphics.Matrix translationMatrix(optional float tx, optional float ty);
-    method public static inline float[] values(android.graphics.Matrix);
-  }
-
-  public final class PaintKt {
-    method public static inline boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat? blendModeCompat);
-  }
-
-  public final class PathKt {
-    method @RequiresApi(19) public static inline infix android.graphics.Path and(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(26) public static Iterable<androidx.core.graphics.PathSegment> flatten(android.graphics.Path, optional float error);
-    method @RequiresApi(19) public static inline operator android.graphics.Path minus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path or(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline operator android.graphics.Path plus(android.graphics.Path, android.graphics.Path p);
-    method @RequiresApi(19) public static inline infix android.graphics.Path xor(android.graphics.Path, android.graphics.Path p);
-  }
-
-  public final class PictureKt {
-    method public static inline android.graphics.Picture record(android.graphics.Picture, int width, int height, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
-  }
-
-  public final class PointKt {
-    method public static inline operator int component1(android.graphics.Point);
-    method public static inline operator float component1(android.graphics.PointF);
-    method public static inline operator int component2(android.graphics.Point);
-    method public static inline operator float component2(android.graphics.PointF);
-    method public static inline operator android.graphics.Point div(android.graphics.Point, float scalar);
-    method public static inline operator android.graphics.PointF div(android.graphics.PointF, float scalar);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point minus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF minus(android.graphics.PointF, float xy);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, android.graphics.Point p);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Point plus(android.graphics.Point, int xy);
-    method public static inline operator android.graphics.PointF plus(android.graphics.PointF, float xy);
-    method public static inline operator android.graphics.Point times(android.graphics.Point, float scalar);
-    method public static inline operator android.graphics.PointF times(android.graphics.PointF, float scalar);
-    method public static inline android.graphics.Point toPoint(android.graphics.PointF);
-    method public static inline android.graphics.PointF toPointF(android.graphics.Point);
-    method public static inline operator android.graphics.Point unaryMinus(android.graphics.Point);
-    method public static inline operator android.graphics.PointF unaryMinus(android.graphics.PointF);
-  }
-
-  public final class PorterDuffKt {
-    method public static inline android.graphics.PorterDuffColorFilter toColorFilter(android.graphics.PorterDuff.Mode, int color);
-    method public static inline android.graphics.PorterDuffXfermode toXfermode(android.graphics.PorterDuff.Mode);
-  }
-
-  public final class RectKt {
-    method public static inline infix android.graphics.Rect and(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF and(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator int component1(android.graphics.Rect);
-    method public static inline operator float component1(android.graphics.RectF);
-    method public static inline operator int component2(android.graphics.Rect);
-    method public static inline operator float component2(android.graphics.RectF);
-    method public static inline operator int component3(android.graphics.Rect);
-    method public static inline operator float component3(android.graphics.RectF);
-    method public static inline operator int component4(android.graphics.Rect);
-    method public static inline operator float component4(android.graphics.RectF);
-    method public static inline operator boolean contains(android.graphics.Rect, android.graphics.Point p);
-    method public static inline operator boolean contains(android.graphics.RectF, android.graphics.PointF p);
-    method public static inline operator android.graphics.Region minus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect minus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF minus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline infix android.graphics.Rect or(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.RectF or(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.RectF r);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, int xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, float xy);
-    method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Point xy);
-    method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.PointF xy);
-    method public static inline operator android.graphics.Rect times(android.graphics.Rect, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, int factor);
-    method public static inline operator android.graphics.RectF times(android.graphics.RectF, float factor);
-    method public static inline android.graphics.Rect toRect(android.graphics.RectF);
-    method public static inline android.graphics.RectF toRectF(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.Rect);
-    method public static inline android.graphics.Region toRegion(android.graphics.RectF);
-    method public static inline android.graphics.RectF transform(android.graphics.RectF, android.graphics.Matrix m);
-    method public static inline infix android.graphics.Region xor(android.graphics.Rect, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.RectF, android.graphics.RectF r);
-  }
-
-  public final class RegionKt {
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator boolean contains(android.graphics.Region, android.graphics.Point p);
-    method public static inline void forEach(android.graphics.Region, kotlin.jvm.functions.Function1<? super android.graphics.Rect,kotlin.Unit> action);
-    method public static operator java.util.Iterator<android.graphics.Rect> iterator(android.graphics.Region);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region not(android.graphics.Region);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Rect r);
-    method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Region r);
-    method public static inline operator android.graphics.Region unaryMinus(android.graphics.Region);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Rect r);
-    method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Region r);
-  }
-
-  public final class ShaderKt {
-    method public static inline void transform(android.graphics.Shader, kotlin.jvm.functions.Function1<? super android.graphics.Matrix,kotlin.Unit> block);
-  }
-
-}
-
-package androidx.core.graphics.drawable {
-
-  public final class BitmapDrawableKt {
-    method public static inline android.graphics.drawable.BitmapDrawable toDrawable(android.graphics.Bitmap, android.content.res.Resources resources);
-  }
-
-  public final class ColorDrawableKt {
-    method public static inline android.graphics.drawable.ColorDrawable toDrawable(@ColorInt int);
-    method @RequiresApi(26) public static inline android.graphics.drawable.ColorDrawable toDrawable(android.graphics.Color);
-  }
-
-  public final class DrawableKt {
-    method public static android.graphics.Bitmap toBitmap(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
-    method public static android.graphics.Bitmap? toBitmapOrNull(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
-    method public static void updateBounds(android.graphics.drawable.Drawable, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
-  }
-
-  public final class IconKt {
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toAdaptiveIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.graphics.Bitmap);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.net.Uri);
-    method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(byte[]);
-  }
-
-}
-
-package androidx.core.location {
-
-  public final class LocationKt {
-    method public static inline operator double component1(android.location.Location);
-    method public static inline operator double component2(android.location.Location);
-  }
-
-}
-
-package androidx.core.net {
-
-  public final class UriKt {
-    method public static java.io.File toFile(android.net.Uri);
-    method public static inline android.net.Uri toUri(String);
-    method public static inline android.net.Uri toUri(java.io.File);
-  }
-
-}
-
-package androidx.core.os {
-
-  public final class BundleKt {
-    method public static android.os.Bundle bundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-    method public static android.os.Bundle bundleOf();
-  }
-
-  public final class HandlerKt {
-    method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-  }
-
-  @RequiresApi(31) public final class OutcomeReceiverKt {
-    method @RequiresApi(31) public static <R, E extends java.lang.Throwable> android.os.OutcomeReceiver<R,E> asOutcomeReceiver(kotlin.coroutines.Continuation<? super R>);
-  }
-
-  public final class PersistableBundleKt {
-    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
-    method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf();
-    method @RequiresApi(21) public static android.os.PersistableBundle toPersistableBundle(java.util.Map<java.lang.String,?>);
-  }
-
-  public final class TraceKt {
-    method @Deprecated public static inline <T> T trace(String sectionName, kotlin.jvm.functions.Function0<? extends T> block);
-  }
-
-}
-
-package androidx.core.text {
-
-  public final class CharSequenceKt {
-    method public static inline boolean isDigitsOnly(CharSequence);
-    method public static inline int trimmedLength(CharSequence);
-  }
-
-  public final class HtmlKt {
-    method public static inline android.text.Spanned parseAsHtml(String, optional int flags, optional android.text.Html.ImageGetter? imageGetter, optional android.text.Html.TagHandler? tagHandler);
-    method public static inline String toHtml(android.text.Spanned, optional int option);
-  }
-
-  public final class LocaleKt {
-    method @RequiresApi(17) public static inline int getLayoutDirection(java.util.Locale);
-  }
-
-  public final class SpannableStringBuilderKt {
-    method public static inline android.text.SpannableStringBuilder backgroundColor(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder bold(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannedString buildSpannedString(kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder color(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object![] spans, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object span, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder italic(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder scale(android.text.SpannableStringBuilder, float proportion, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder strikeThrough(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder subscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder superscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-    method public static inline android.text.SpannableStringBuilder underline(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
-  }
-
-  public final class SpannableStringKt {
-    method public static inline void clearSpans(android.text.Spannable);
-    method public static inline operator void set(android.text.Spannable, int start, int end, Object span);
-    method public static inline operator void set(android.text.Spannable, kotlin.ranges.IntRange range, Object span);
-    method public static inline android.text.Spannable toSpannable(CharSequence);
-  }
-
-  public final class SpannedStringKt {
-    method public static inline <reified T> T![] getSpans(android.text.Spanned, optional int start, optional int end);
-    method public static inline android.text.Spanned toSpanned(CharSequence);
-  }
-
-  public final class StringKt {
-    method public static inline String htmlEncode(String);
-  }
-
-}
-
-package androidx.core.transition {
-
-  public final class TransitionKt {
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener addListener(android.transition.Transition, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onPause);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnCancel(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnEnd(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnPause(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnResume(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-    method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnStart(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
-  }
-
-}
-
-package androidx.core.util {
-
-  public final class AndroidXConsumerKt {
-    method public static <T> androidx.core.util.Consumer<T> asAndroidXConsumer(kotlin.coroutines.Continuation<? super T>);
-  }
-
-  public final class AtomicFileKt {
-    method @RequiresApi(17) public static inline byte[] readBytes(android.util.AtomicFile);
-    method @RequiresApi(17) public static String readText(android.util.AtomicFile, optional java.nio.charset.Charset charset);
-    method @RequiresApi(17) public static inline void tryWrite(android.util.AtomicFile, kotlin.jvm.functions.Function1<? super java.io.FileOutputStream,kotlin.Unit> block);
-    method @RequiresApi(17) public static void writeBytes(android.util.AtomicFile, byte[] array);
-    method @RequiresApi(17) public static void writeText(android.util.AtomicFile, String text, optional java.nio.charset.Charset charset);
-  }
-
-  @RequiresApi(24) public final class ConsumerKt {
-    method @RequiresApi(24) public static <T> java.util.function.Consumer<T> asConsumer(kotlin.coroutines.Continuation<? super T>);
-  }
-
-  public final class HalfKt {
-    method @RequiresApi(26) public static inline android.util.Half toHalf(@HalfFloat short);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(float);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(double);
-    method @RequiresApi(26) public static inline android.util.Half toHalf(String);
-  }
-
-  public final class LongSparseArrayKt {
-    method @RequiresApi(16) public static inline operator <T> boolean contains(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsKey(android.util.LongSparseArray<T>, long key);
-    method @RequiresApi(16) public static inline <T> boolean containsValue(android.util.LongSparseArray<T>, T value);
-    method @RequiresApi(16) public static inline <T> void forEach(android.util.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
-    method @RequiresApi(16) public static inline <T> T getOrDefault(android.util.LongSparseArray<T>, long key, T defaultValue);
-    method @RequiresApi(16) public static inline <T> T getOrElse(android.util.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method @RequiresApi(16) public static inline <T> int getSize(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static inline <T> boolean isNotEmpty(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static <T> kotlin.collections.LongIterator keyIterator(android.util.LongSparseArray<T>);
-    method @RequiresApi(16) public static operator <T> android.util.LongSparseArray<T> plus(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> void putAll(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
-    method @RequiresApi(16) public static <T> boolean remove(android.util.LongSparseArray<T>, long key, T value);
-    method @RequiresApi(16) public static inline operator <T> void set(android.util.LongSparseArray<T>, long key, T value);
-    method @RequiresApi(16) public static <T> java.util.Iterator<T> valueIterator(android.util.LongSparseArray<T>);
-  }
-
-  public final class LruCacheKt {
-    method public static inline <K, V> android.util.LruCache<K,V> lruCache(int maxSize, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved);
-  }
-
-  public final class PairKt {
-    method public static inline operator <F, S> F component1(androidx.core.util.Pair<F,S>);
-    method public static inline operator <F, S> F component1(android.util.Pair<F,S>);
-    method public static inline operator <F, S> S component2(androidx.core.util.Pair<F,S>);
-    method public static inline operator <F, S> S component2(android.util.Pair<F,S>);
-    method public static inline <F, S> android.util.Pair<F,S> toAndroidPair(kotlin.Pair<? extends F,? extends S>);
-    method public static inline <F, S> androidx.core.util.Pair<F,S> toAndroidXPair(kotlin.Pair<? extends F,? extends S>);
-    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(androidx.core.util.Pair<F,S>);
-    method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(android.util.Pair<F,S>);
-  }
-
-  public final class RangeKt {
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> and(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, T value);
-    method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, android.util.Range<T> other);
-    method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> rangeTo(T, T that);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> kotlin.ranges.ClosedRange<T> toClosedRange(android.util.Range<T>);
-    method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> toRange(kotlin.ranges.ClosedRange<T>);
-  }
-
-  public final class RunnableKt {
-    method public static Runnable asRunnable(kotlin.coroutines.Continuation<? super kotlin.Unit>);
-  }
-
-  public final class SizeKt {
-    method @RequiresApi(21) public static inline operator int component1(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component1(android.util.SizeF);
-    method public static inline operator float component1(androidx.core.util.SizeFCompat);
-    method @RequiresApi(21) public static inline operator int component2(android.util.Size);
-    method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
-    method public static inline operator float component2(androidx.core.util.SizeFCompat);
-  }
-
-  public final class SparseArrayKt {
-    method public static inline operator <T> boolean contains(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsKey(android.util.SparseArray<T>, int key);
-    method public static inline <T> boolean containsValue(android.util.SparseArray<T>, T value);
-    method public static inline <T> void forEach(android.util.SparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
-    method public static inline <T> T getOrDefault(android.util.SparseArray<T>, int key, T defaultValue);
-    method public static inline <T> T getOrElse(android.util.SparseArray<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
-    method public static inline <T> int getSize(android.util.SparseArray<T>);
-    method public static inline <T> boolean isEmpty(android.util.SparseArray<T>);
-    method public static inline <T> boolean isNotEmpty(android.util.SparseArray<T>);
-    method public static <T> kotlin.collections.IntIterator keyIterator(android.util.SparseArray<T>);
-    method public static operator <T> android.util.SparseArray<T> plus(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> void putAll(android.util.SparseArray<T>, android.util.SparseArray<T> other);
-    method public static <T> boolean remove(android.util.SparseArray<T>, int key, T value);
-    method public static inline operator <T> void set(android.util.SparseArray<T>, int key, T value);
-    method public static <T> java.util.Iterator<T> valueIterator(android.util.SparseArray<T>);
-  }
-
-  public final class SparseBooleanArrayKt {
-    method public static inline operator boolean contains(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsKey(android.util.SparseBooleanArray, int key);
-    method public static inline boolean containsValue(android.util.SparseBooleanArray, boolean value);
-    method public static inline void forEach(android.util.SparseBooleanArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> action);
-    method public static inline boolean getOrDefault(android.util.SparseBooleanArray, int key, boolean defaultValue);
-    method public static inline boolean getOrElse(android.util.SparseBooleanArray, int key, kotlin.jvm.functions.Function0<java.lang.Boolean> defaultValue);
-    method public static inline int getSize(android.util.SparseBooleanArray);
-    method public static inline boolean isEmpty(android.util.SparseBooleanArray);
-    method public static inline boolean isNotEmpty(android.util.SparseBooleanArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseBooleanArray);
-    method public static operator android.util.SparseBooleanArray plus(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static void putAll(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
-    method public static boolean remove(android.util.SparseBooleanArray, int key, boolean value);
-    method public static inline operator void set(android.util.SparseBooleanArray, int key, boolean value);
-    method public static kotlin.collections.BooleanIterator valueIterator(android.util.SparseBooleanArray);
-  }
-
-  public final class SparseIntArrayKt {
-    method public static inline operator boolean contains(android.util.SparseIntArray, int key);
-    method public static inline boolean containsKey(android.util.SparseIntArray, int key);
-    method public static inline boolean containsValue(android.util.SparseIntArray, int value);
-    method public static inline void forEach(android.util.SparseIntArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline int getOrDefault(android.util.SparseIntArray, int key, int defaultValue);
-    method public static inline int getOrElse(android.util.SparseIntArray, int key, kotlin.jvm.functions.Function0<java.lang.Integer> defaultValue);
-    method public static inline int getSize(android.util.SparseIntArray);
-    method public static inline boolean isEmpty(android.util.SparseIntArray);
-    method public static inline boolean isNotEmpty(android.util.SparseIntArray);
-    method public static kotlin.collections.IntIterator keyIterator(android.util.SparseIntArray);
-    method public static operator android.util.SparseIntArray plus(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static void putAll(android.util.SparseIntArray, android.util.SparseIntArray other);
-    method public static boolean remove(android.util.SparseIntArray, int key, int value);
-    method public static inline operator void set(android.util.SparseIntArray, int key, int value);
-    method public static kotlin.collections.IntIterator valueIterator(android.util.SparseIntArray);
-  }
-
-  public final class SparseLongArrayKt {
-    method @RequiresApi(18) public static inline operator boolean contains(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsKey(android.util.SparseLongArray, int key);
-    method @RequiresApi(18) public static inline boolean containsValue(android.util.SparseLongArray, long value);
-    method @RequiresApi(18) public static inline void forEach(android.util.SparseLongArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Long,kotlin.Unit> action);
-    method @RequiresApi(18) public static inline long getOrDefault(android.util.SparseLongArray, int key, long defaultValue);
-    method @RequiresApi(18) public static inline long getOrElse(android.util.SparseLongArray, int key, kotlin.jvm.functions.Function0<java.lang.Long> defaultValue);
-    method @RequiresApi(18) public static inline int getSize(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static inline boolean isNotEmpty(android.util.SparseLongArray);
-    method @RequiresApi(18) public static kotlin.collections.IntIterator keyIterator(android.util.SparseLongArray);
-    method @RequiresApi(18) public static operator android.util.SparseLongArray plus(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static void putAll(android.util.SparseLongArray, android.util.SparseLongArray other);
-    method @RequiresApi(18) public static boolean remove(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static inline operator void set(android.util.SparseLongArray, int key, long value);
-    method @RequiresApi(18) public static kotlin.collections.LongIterator valueIterator(android.util.SparseLongArray);
-  }
-
-}
-
-package androidx.core.view {
-
-  public final class MenuKt {
-    method public static operator boolean contains(android.view.Menu, android.view.MenuItem item);
-    method public static inline void forEach(android.view.Menu, kotlin.jvm.functions.Function1<? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.Menu, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.MenuItem,kotlin.Unit> action);
-    method public static inline operator android.view.MenuItem get(android.view.Menu, int index);
-    method public static kotlin.sequences.Sequence<android.view.MenuItem> getChildren(android.view.Menu);
-    method public static inline int getSize(android.view.Menu);
-    method public static inline boolean isEmpty(android.view.Menu);
-    method public static inline boolean isNotEmpty(android.view.Menu);
-    method public static operator java.util.Iterator<android.view.MenuItem> iterator(android.view.Menu);
-    method public static inline operator void minusAssign(android.view.Menu, android.view.MenuItem item);
-    method public static inline void removeItemAt(android.view.Menu, int index);
-  }
-
-  public final class ViewGroupKt {
-    method public static inline operator boolean contains(android.view.ViewGroup, android.view.View view);
-    method public static inline void forEach(android.view.ViewGroup, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void forEachIndexed(android.view.ViewGroup, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.View,kotlin.Unit> action);
-    method public static operator android.view.View get(android.view.ViewGroup, int index);
-    method public static kotlin.sequences.Sequence<android.view.View> getChildren(android.view.ViewGroup);
-    method public static kotlin.sequences.Sequence<android.view.View> getDescendants(android.view.ViewGroup);
-    method public static inline kotlin.ranges.IntRange getIndices(android.view.ViewGroup);
-    method public static inline int getSize(android.view.ViewGroup);
-    method public static inline boolean isEmpty(android.view.ViewGroup);
-    method public static inline boolean isNotEmpty(android.view.ViewGroup);
-    method public static operator java.util.Iterator<android.view.View> iterator(android.view.ViewGroup);
-    method public static inline operator void minusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline operator void plusAssign(android.view.ViewGroup, android.view.View view);
-    method public static inline void setMargins(android.view.ViewGroup.MarginLayoutParams, @Px int size);
-    method public static inline void updateMargins(android.view.ViewGroup.MarginLayoutParams, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
-    method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
-  }
-
-  public final class ViewKt {
-    method public static inline void doOnAttach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnDetach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline void doOnNextLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static inline androidx.core.view.OneShotPreDrawListener doOnPreDraw(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
-    method public static android.graphics.Bitmap drawToBitmap(android.view.View, optional android.graphics.Bitmap.Config config);
-    method public static kotlin.sequences.Sequence<android.view.View> getAllViews(android.view.View);
-    method public static kotlin.sequences.Sequence<android.view.ViewParent> getAncestors(android.view.View);
-    method public static inline int getMarginBottom(android.view.View);
-    method public static inline int getMarginEnd(android.view.View);
-    method public static inline int getMarginLeft(android.view.View);
-    method public static inline int getMarginRight(android.view.View);
-    method public static inline int getMarginStart(android.view.View);
-    method public static inline int getMarginTop(android.view.View);
-    method public static inline boolean isGone(android.view.View);
-    method public static inline boolean isInvisible(android.view.View);
-    method public static inline boolean isVisible(android.view.View);
-    method public static inline Runnable postDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method @RequiresApi(16) public static Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
-    method public static inline void setGone(android.view.View, boolean);
-    method public static inline void setInvisible(android.view.View, boolean);
-    method public static inline void setPadding(android.view.View, @Px int size);
-    method public static inline void setVisible(android.view.View, boolean);
-    method public static inline void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super android.view.ViewGroup.LayoutParams,kotlin.Unit> block);
-    method public static inline <reified T extends android.view.ViewGroup.LayoutParams> void updateLayoutParamsTyped(android.view.View, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> block);
-    method public static inline void updatePadding(android.view.View, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
-    method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
-  }
-
-}
-
-package androidx.core.widget {
-
-  public final class TextViewKt {
-    method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged, optional kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> afterTextChanged);
-    method public static inline android.text.TextWatcher doAfterTextChanged(android.widget.TextView, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doBeforeTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-    method public static inline android.text.TextWatcher doOnTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
-  }
-
-}
-
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/content/ContentValuesTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/content/ContentValuesTest.kt
index a02e0f7..36c9173 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/content/ContentValuesTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/content/ContentValuesTest.kt
@@ -18,11 +18,11 @@
 
 import androidx.test.filters.SmallTest
 import androidx.testutils.assertThrows
+import java.util.concurrent.atomic.AtomicInteger
 import org.junit.Assert.assertArrayEquals
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNull
 import org.junit.Test
-import java.util.concurrent.atomic.AtomicInteger
 
 @SmallTest
 class ContentValuesTest {
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/content/ContextTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/content/ContextTest.kt
index d733203..46c852a 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/content/ContextTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/content/ContextTest.kt
@@ -17,8 +17,8 @@
 package androidx.core.content
 
 import android.content.ContextWrapper
-import androidx.core.ktx.test.R
 import androidx.core.getAttributeSet
+import androidx.core.ktx.test.R
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/content/res/TypedArrayTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/content/res/TypedArrayTest.kt
index fee7dd4..2c9a791 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/content/res/TypedArrayTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/content/res/TypedArrayTest.kt
@@ -18,9 +18,9 @@
 
 import android.graphics.Color
 import androidx.core.getAttributeSet
+import androidx.core.ktx.test.R
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.SdkSuppress
-import androidx.core.ktx.test.R
 import androidx.test.filters.SmallTest
 import androidx.testutils.assertThrows
 import org.junit.Assert.assertEquals
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/graphics/ImageDecoderTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/graphics/ImageDecoderTest.kt
index 34bdeec..5e0afa0 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/graphics/ImageDecoderTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/graphics/ImageDecoderTest.kt
@@ -20,11 +20,11 @@
 import android.graphics.ImageDecoder
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
+import java.io.ByteArrayOutputStream
+import java.nio.ByteBuffer
 import org.junit.Assert.assertEquals
 import org.junit.BeforeClass
 import org.junit.Test
-import java.io.ByteArrayOutputStream
-import java.nio.ByteBuffer
 
 @SdkSuppress(minSdkVersion = 28)
 @SmallTest
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/graphics/drawable/IconTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/graphics/drawable/IconTest.kt
index d124360..8392569 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/graphics/drawable/IconTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/graphics/drawable/IconTest.kt
@@ -26,9 +26,9 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
+import java.io.File
 import org.junit.Assert.assertEquals
 import org.junit.Test
-import java.io.File
 
 @SdkSuppress(minSdkVersion = 26)
 @SmallTest
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/net/UriTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/net/UriTest.kt
index 600318f..129cd08 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/net/UriTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/net/UriTest.kt
@@ -19,9 +19,9 @@
 import android.net.Uri
 import androidx.test.filters.SmallTest
 import androidx.testutils.assertThrows
+import java.io.File
 import org.junit.Assert.assertEquals
 import org.junit.Test
-import java.io.File
 
 @SmallTest
 class UriTest {
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/os/BundleTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/os/BundleTest.kt
index c312bda..a1af056 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/os/BundleTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/os/BundleTest.kt
@@ -29,12 +29,12 @@
 import androidx.test.filters.SmallTest
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.atomic.AtomicInteger
 import org.junit.Assert.assertArrayEquals
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNull
 import org.junit.Assert.assertSame
 import org.junit.Test
-import java.util.concurrent.atomic.AtomicInteger
 
 @SmallTest
 class BundleTest {
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/os/HandlerTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/os/HandlerTest.kt
index e8cc7e2..f167abd 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/os/HandlerTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/os/HandlerTest.kt
@@ -25,16 +25,16 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.TimeUnit.MILLISECONDS
+import java.util.concurrent.TimeUnit.SECONDS
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.TimeUnit.MILLISECONDS
-import java.util.concurrent.TimeUnit.SECONDS
 
 @SmallTest
 @SdkSuppress(minSdkVersion = 26)
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/text/LocaleTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/text/LocaleTest.kt
index 1a2f5ed..73cd538 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/text/LocaleTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/text/LocaleTest.kt
@@ -19,9 +19,9 @@
 import android.view.View
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
+import java.util.Locale
 import org.junit.Assert.assertEquals
 import org.junit.Test
-import java.util.Locale
 
 @SdkSuppress(minSdkVersion = 21)
 @SmallTest
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/transition/TransitionTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/transition/TransitionTest.kt
index e2ec8f0..4abd56a 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/transition/TransitionTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/transition/TransitionTest.kt
@@ -27,13 +27,13 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.atomic.AtomicBoolean
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.atomic.AtomicBoolean
 
 @SdkSuppress(minSdkVersion = 19)
 @MediumTest
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/util/AtomicFileTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/util/AtomicFileTest.kt
index e2586fd..9101f82 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/util/AtomicFileTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/util/AtomicFileTest.kt
@@ -20,13 +20,13 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import androidx.testutils.assertThrows
+import java.io.IOException
 import org.junit.Assert.assertArrayEquals
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.IOException
 
 @SdkSuppress(minSdkVersion = 17)
 @SmallTest
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/util/PairTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/util/PairTest.kt
index 4be680d..dbc1686 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/util/PairTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/util/PairTest.kt
@@ -16,12 +16,12 @@
 
 package androidx.core.util
 
+import android.util.Pair as AndroidPair
 import androidx.test.filters.SmallTest
+import kotlin.Pair as KotlinPair
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertSame
 import org.junit.Test
-import android.util.Pair as AndroidPair
-import kotlin.Pair as KotlinPair
 
 @SmallTest
 class PairTest {
diff --git a/core/core-ktx/src/androidTest/java/androidx/core/widget/TextViewTest.kt b/core/core-ktx/src/androidTest/java/androidx/core/widget/TextViewTest.kt
index f20dbb4..b172a5d 100644
--- a/core/core-ktx/src/androidTest/java/androidx/core/widget/TextViewTest.kt
+++ b/core/core-ktx/src/androidTest/java/androidx/core/widget/TextViewTest.kt
@@ -21,11 +21,11 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import java.util.concurrent.atomic.AtomicBoolean
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.atomic.AtomicBoolean
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/core/core-location-altitude/api/public_plus_experimental_current.txt b/core/core-location-altitude/api/public_plus_experimental_current.txt
deleted file mode 100644
index e6f50d0..0000000
--- a/core/core-location-altitude/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 4.0
diff --git a/core/core-location-altitude/build.gradle b/core/core-location-altitude/build.gradle
index 6f5e108..ccee9b7 100644
--- a/core/core-location-altitude/build.gradle
+++ b/core/core-location-altitude/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = "Location Altitude Compatibility Library"
+    name = "Location Altitude"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CORE_LOCATION_ALTITUDE
     inceptionYear = "2022"
diff --git a/core/core-performance/api/public_plus_experimental_current.txt b/core/core-performance/api/public_plus_experimental_current.txt
deleted file mode 100644
index 406c06f..0000000
--- a/core/core-performance/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// Signature format: 4.0
-package androidx.core.performance {
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface DevicePerformance {
-    method public default static androidx.core.performance.DevicePerformance create(android.content.Context context);
-    method public int getMediaPerformanceClass();
-    property public abstract int mediaPerformanceClass;
-    field public static final androidx.core.performance.DevicePerformance.Companion Companion;
-  }
-
-  public static final class DevicePerformance.Companion {
-    method public androidx.core.performance.DevicePerformance create(android.content.Context context);
-  }
-
-}
-
diff --git a/core/core-remoteviews/api/public_plus_experimental_current.txt b/core/core-remoteviews/api/public_plus_experimental_current.txt
deleted file mode 100644
index 58dee29..0000000
--- a/core/core-remoteviews/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,294 +0,0 @@
-// Signature format: 4.0
-package androidx.core.widget {
-
-  public final class AppWidgetManagerCompat {
-    method public static android.widget.RemoteViews createExactSizeAppWidget(android.appwidget.AppWidgetManager appWidgetManager, int appWidgetId, kotlin.jvm.functions.Function1<? super androidx.core.util.SizeFCompat,? extends android.widget.RemoteViews> factory);
-    method public static android.widget.RemoteViews createResponsiveSizeAppWidget(android.appwidget.AppWidgetManager appWidgetManager, int appWidgetId, java.util.Collection<androidx.core.util.SizeFCompat> dpSizes, kotlin.jvm.functions.Function1<? super androidx.core.util.SizeFCompat,? extends android.widget.RemoteViews> factory);
-    method public static void updateAppWidget(android.appwidget.AppWidgetManager, int appWidgetId, kotlin.jvm.functions.Function1<? super androidx.core.util.SizeFCompat,? extends android.widget.RemoteViews> factory);
-    method public static void updateAppWidget(android.appwidget.AppWidgetManager, int appWidgetId, java.util.Collection<androidx.core.util.SizeFCompat> dpSizes, kotlin.jvm.functions.Function1<? super androidx.core.util.SizeFCompat,? extends android.widget.RemoteViews> factory);
-  }
-
-  public final class RemoteViewsCompat {
-    method public static void setChronometerBase(android.widget.RemoteViews, @IdRes int viewId, long base);
-    method public static void setChronometerFormat(android.widget.RemoteViews, @IdRes int viewId, String? format);
-    method @RequiresApi(31) public static void setCompoundButtonDrawable(android.widget.RemoteViews, @IdRes int viewId, @DrawableRes int resId);
-    method @RequiresApi(31) public static void setCompoundButtonIcon(android.widget.RemoteViews, @IdRes int viewId, android.graphics.drawable.Icon? icon);
-    method @RequiresApi(31) public static void setCompoundButtonTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? tintMode);
-    method @RequiresApi(31) public static void setCompoundButtonTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setCompoundButtonTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNight, android.content.res.ColorStateList? night);
-    method @RequiresApi(31) public static void setCompoundButtonTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setCompoundButtonTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setFrameLayoutForegroundGravity(android.widget.RemoteViews, @IdRes int viewId, int foregroundGravity);
-    method public static void setFrameLayoutMeasureAllChildren(android.widget.RemoteViews, @IdRes int viewId, boolean measureAll);
-    method @RequiresApi(31) public static void setGridLayoutAlignmentMode(android.widget.RemoteViews, @IdRes int viewId, int alignmentMode);
-    method @RequiresApi(31) public static void setGridLayoutColumnCount(android.widget.RemoteViews, @IdRes int viewId, int columnCount);
-    method @RequiresApi(31) public static void setGridLayoutRowCount(android.widget.RemoteViews, @IdRes int viewId, int rowCount);
-    method @RequiresApi(31) public static void setGridViewColumnWidth(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setGridViewColumnWidthDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int columnWidth);
-    method @RequiresApi(31) public static void setGridViewColumnWidthDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int columnWidth);
-    method @RequiresApi(31) public static void setGridViewGravity(android.widget.RemoteViews, @IdRes int viewId, int gravity);
-    method @RequiresApi(31) public static void setGridViewHorizontalSpacing(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setGridViewHorizontalSpacingDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setGridViewHorizontalSpacingDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setGridViewNumColumns(android.widget.RemoteViews, @IdRes int viewId, int numColumns);
-    method @RequiresApi(31) public static void setGridViewStretchMode(android.widget.RemoteViews, @IdRes int viewId, int stretchMode);
-    method @RequiresApi(31) public static void setGridViewVerticalSpacing(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setGridViewVerticalSpacingDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setGridViewVerticalSpacingDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setImageViewAdjustViewBounds(android.widget.RemoteViews, @IdRes int viewId, boolean adjustViewBounds);
-    method public static void setImageViewColorFilter(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int color);
-    method @RequiresApi(31) public static void setImageViewColorFilter(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int notNight, @ColorInt int night);
-    method @RequiresApi(31) public static void setImageViewColorFilterAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setImageViewColorFilterResource(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method public static void setImageViewImageAlpha(android.widget.RemoteViews, @IdRes int viewId, int alpha);
-    method public static void setImageViewImageLevel(android.widget.RemoteViews, @IdRes int viewId, int level);
-    method @RequiresApi(31) public static void setImageViewImageTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setImageViewImageTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setImageViewImageTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNightTint, android.content.res.ColorStateList? nightTint);
-    method @RequiresApi(31) public static void setImageViewImageTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setImageViewImageTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setImageViewMaxHeight(android.widget.RemoteViews, @IdRes int viewId, @Px int maxHeight);
-    method @RequiresApi(31) public static void setImageViewMaxHeight(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setImageViewMaxHeightDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setImageViewMaxHeightDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setImageViewMaxWidth(android.widget.RemoteViews, @IdRes int viewId, @Px int maxWidth);
-    method @RequiresApi(31) public static void setImageViewMaxWidth(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setImageViewMaxWidthDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setImageViewMaxWidthDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setLinearLayoutBaselineAligned(android.widget.RemoteViews, @IdRes int viewId, boolean baselineAligned);
-    method public static void setLinearLayoutBaselineAlignedChildIndex(android.widget.RemoteViews, @IdRes int viewId, int i);
-    method public static void setLinearLayoutGravity(android.widget.RemoteViews, @IdRes int viewId, int gravity);
-    method public static void setLinearLayoutHorizontalGravity(android.widget.RemoteViews, @IdRes int viewId, int horizontalGravity);
-    method public static void setLinearLayoutMeasureWithLargestChildEnabled(android.widget.RemoteViews, @IdRes int viewId, boolean enabled);
-    method public static void setLinearLayoutVerticalGravity(android.widget.RemoteViews, @IdRes int viewId, int verticalGravity);
-    method public static void setLinearLayoutWeightSum(android.widget.RemoteViews, @IdRes int viewId, float weightSum);
-    method public static void setProgressBarIndeterminate(android.widget.RemoteViews, @IdRes int viewId, boolean indeterminate);
-    method @RequiresApi(31) public static void setProgressBarIndeterminateTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setProgressBarIndeterminateTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setProgressBarIndeterminateTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNightTint, android.content.res.ColorStateList? nightTint);
-    method @RequiresApi(31) public static void setProgressBarIndeterminateTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setProgressBarIndeterminateTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setProgressBarMax(android.widget.RemoteViews, @IdRes int viewId, int max);
-    method @RequiresApi(26) public static void setProgressBarMin(android.widget.RemoteViews, @IdRes int viewId, int min);
-    method public static void setProgressBarProgress(android.widget.RemoteViews, @IdRes int viewId, int progress);
-    method @RequiresApi(31) public static void setProgressBarProgressBackgroundTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setProgressBarProgressBackgroundTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setProgressBarProgressBackgroundTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNightTint, android.content.res.ColorStateList? nightTint);
-    method @RequiresApi(31) public static void setProgressBarProgressBackgroundTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setProgressBarProgressBackgroundTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setProgressBarProgressTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setProgressBarProgressTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setProgressBarProgressTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNightTint, android.content.res.ColorStateList? nightTint);
-    method @RequiresApi(31) public static void setProgressBarProgressTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setProgressBarProgressTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setProgressBarSecondaryProgress(android.widget.RemoteViews, @IdRes int viewId, int secondaryProgress);
-    method @RequiresApi(31) public static void setProgressBarSecondaryProgressTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setProgressBarSecondaryProgressTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setProgressBarSecondaryProgressTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNightTint, android.content.res.ColorStateList? nightTint);
-    method @RequiresApi(31) public static void setProgressBarSecondaryProgressTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setProgressBarSecondaryProgressTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setProgressBarStateDescription(android.widget.RemoteViews, @IdRes int viewId, CharSequence? stateDescription);
-    method @RequiresApi(31) public static void setProgressBarStateDescription(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setProgressBarStateDescriptionAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setRelativeLayoutGravity(android.widget.RemoteViews, @IdRes int viewId, int gravity);
-    method public static void setRelativeLayoutHorizontalGravity(android.widget.RemoteViews, @IdRes int viewId, int horizontalGravity);
-    method public static void setRelativeLayoutIgnoreGravity(android.widget.RemoteViews, @IdRes int viewId, @IdRes int childViewId);
-    method public static void setRelativeLayoutVerticalGravity(android.widget.RemoteViews, @IdRes int viewId, int verticalGravity);
-    method public static void setRemoteAdapter(android.content.Context context, android.widget.RemoteViews remoteViews, int appWidgetId, @IdRes int viewId, androidx.core.widget.RemoteViewsCompat.RemoteCollectionItems items);
-    method @RequiresApi(31) public static void setSwitchMinWidth(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setSwitchMinWidthDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setSwitchMinWidthDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setSwitchPadding(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setSwitchPaddingDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setSwitchPaddingDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setSwitchShowText(android.widget.RemoteViews, @IdRes int viewId, boolean showText);
-    method @RequiresApi(31) public static void setSwitchSplitTrack(android.widget.RemoteViews, @IdRes int viewId, boolean splitTrack);
-    method @RequiresApi(31) public static void setSwitchTextOff(android.widget.RemoteViews, @IdRes int viewId, CharSequence? textOff);
-    method @RequiresApi(31) public static void setSwitchTextOff(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setSwitchTextOffAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setSwitchTextOn(android.widget.RemoteViews, @IdRes int viewId, CharSequence? textOn);
-    method @RequiresApi(31) public static void setSwitchTextOn(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setSwitchTextOnAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setSwitchThumbIcon(android.widget.RemoteViews, @IdRes int viewId, android.graphics.drawable.Icon? icon);
-    method @RequiresApi(31) public static void setSwitchThumbIcon(android.widget.RemoteViews, @IdRes int viewId, android.graphics.drawable.Icon? notNight, android.graphics.drawable.Icon? night);
-    method @RequiresApi(31) public static void setSwitchThumbResource(android.widget.RemoteViews, @IdRes int viewId, @DrawableRes int resId);
-    method @RequiresApi(31) public static void setSwitchThumbTextPadding(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setSwitchThumbTextPaddingDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setSwitchThumbTextPaddingDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setSwitchThumbTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setSwitchThumbTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setSwitchThumbTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNight, android.content.res.ColorStateList? night);
-    method @RequiresApi(31) public static void setSwitchThumbTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setSwitchThumbTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setSwitchTrackIcon(android.widget.RemoteViews, @IdRes int viewId, android.graphics.drawable.Icon? icon);
-    method @RequiresApi(31) public static void setSwitchTrackIcon(android.widget.RemoteViews, @IdRes int viewId, android.graphics.drawable.Icon? notNight, android.graphics.drawable.Icon? night);
-    method @RequiresApi(31) public static void setSwitchTrackResource(android.widget.RemoteViews, @IdRes int viewId, @DrawableRes int resId);
-    method @RequiresApi(31) public static void setSwitchTrackTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setSwitchTrackTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setSwitchTrackTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNight, android.content.res.ColorStateList? night);
-    method @RequiresApi(31) public static void setSwitchTrackTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setSwitchTrackTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(17) public static void setTextClockFormat12Hour(android.widget.RemoteViews, @IdRes int viewId, CharSequence? format);
-    method @RequiresApi(31) public static void setTextClockFormat12Hour(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setTextClockFormat12HourAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(17) public static void setTextClockFormat24Hour(android.widget.RemoteViews, @IdRes int viewId, CharSequence? format);
-    method @RequiresApi(31) public static void setTextClockFormat24Hour(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setTextClockFormat24HourAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(17) public static void setTextClockTimeZone(android.widget.RemoteViews, @IdRes int viewId, String? timeZone);
-    method @RequiresApi(31) public static void setTextViewAllCaps(android.widget.RemoteViews, @IdRes int viewId, boolean allCaps);
-    method public static void setTextViewAutoLinkMask(android.widget.RemoteViews, @IdRes int viewId, int mask);
-    method @RequiresApi(16) public static void setTextViewCompoundDrawablePadding(android.widget.RemoteViews, @IdRes int viewId, @Px int pad);
-    method @RequiresApi(31) public static void setTextViewCompoundDrawablePadding(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewCompoundDrawablePaddingDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewCompoundDrawablePaddingDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewEms(android.widget.RemoteViews, @IdRes int viewId, int ems);
-    method public static void setTextViewError(android.widget.RemoteViews, @IdRes int viewId, CharSequence? error);
-    method @RequiresApi(31) public static void setTextViewError(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setTextViewErrorAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(21) public static void setTextViewFontFeatureSettings(android.widget.RemoteViews, @IdRes int viewId, String fontFeatureSettings);
-    method @RequiresApi(31) public static void setTextViewGravity(android.widget.RemoteViews, @IdRes int viewId, int gravity);
-    method public static void setTextViewHeight(android.widget.RemoteViews, @IdRes int viewId, @Px int pixels);
-    method @RequiresApi(31) public static void setTextViewHeight(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewHeightDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewHeightDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewHighlightColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int color);
-    method @RequiresApi(31) public static void setTextViewHighlightColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int notNight, @ColorInt int night);
-    method @RequiresApi(31) public static void setTextViewHighlightColorAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setTextViewHighlightColorResource(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method public static void setTextViewHint(android.widget.RemoteViews, @IdRes int viewId, CharSequence? hint);
-    method public static void setTextViewHint(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setTextViewHintAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewHintTextColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int color);
-    method @RequiresApi(31) public static void setTextViewHintTextColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int notNight, @ColorInt int night);
-    method @RequiresApi(31) public static void setTextViewHintTextColorAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setTextViewHintTextColorResource(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setTextViewJustificationMode(android.widget.RemoteViews, @IdRes int viewId, int justificationMode);
-    method @RequiresApi(21) public static void setTextViewLetterSpacing(android.widget.RemoteViews, @IdRes int viewId, float letterSpacing);
-    method @RequiresApi(31) public static void setTextViewLineHeight(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewLineHeightDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewLineHeightDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewLines(android.widget.RemoteViews, @IdRes int viewId, int lines);
-    method public static void setTextViewLinkTextColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int color);
-    method @RequiresApi(31) public static void setTextViewLinkTextColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int notNight, @ColorInt int night);
-    method @RequiresApi(31) public static void setTextViewLinkTextColorAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setTextViewLinkTextColorResource(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method public static void setTextViewLinksClickable(android.widget.RemoteViews, @IdRes int viewId, boolean whether);
-    method public static void setTextViewMaxEms(android.widget.RemoteViews, @IdRes int viewId, int maxems);
-    method public static void setTextViewMaxHeight(android.widget.RemoteViews, @IdRes int viewId, @Px int maxHeight);
-    method @RequiresApi(31) public static void setTextViewMaxHeight(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewMaxHeightDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewMaxHeightDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewMaxLines(android.widget.RemoteViews, @IdRes int viewId, int maxLines);
-    method public static void setTextViewMaxWidth(android.widget.RemoteViews, @IdRes int viewId, @Px int maxWidth);
-    method @RequiresApi(31) public static void setTextViewMaxWidth(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewMaxWidthDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewMaxWidthDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewMinEms(android.widget.RemoteViews, @IdRes int viewId, int minems);
-    method public static void setTextViewMinHeight(android.widget.RemoteViews, @IdRes int viewId, @Px int minHeight);
-    method @RequiresApi(31) public static void setTextViewMinHeight(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewMinHeightDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewMinHeightDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewMinLines(android.widget.RemoteViews, @IdRes int viewId, int minLines);
-    method public static void setTextViewMinWidth(android.widget.RemoteViews, @IdRes int viewId, @Px int minWidth);
-    method @RequiresApi(31) public static void setTextViewMinWidth(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewMinWidthDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewMinWidthDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewPaintFlags(android.widget.RemoteViews, @IdRes int viewId, int flags);
-    method public static void setTextViewSelectAllOnFocus(android.widget.RemoteViews, @IdRes int viewId, boolean selectAllOnFocus);
-    method public static void setTextViewSingleLine(android.widget.RemoteViews, @IdRes int viewId, boolean singleLine);
-    method public static void setTextViewText(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setTextViewTextAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewTextColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int color);
-    method @RequiresApi(31) public static void setTextViewTextColor(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList colors);
-    method @RequiresApi(31) public static void setTextViewTextColor(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList notNight, android.content.res.ColorStateList night);
-    method @RequiresApi(31) public static void setTextViewTextColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int notNight, @ColorInt int night);
-    method @RequiresApi(31) public static void setTextViewTextColorAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setTextViewTextColorResource(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method public static void setTextViewTextScaleX(android.widget.RemoteViews, @IdRes int viewId, float size);
-    method @RequiresApi(31) public static void setTextViewTextSizeDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewTextSizeDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setTextViewWidth(android.widget.RemoteViews, @IdRes int viewId, @Px int pixels);
-    method @RequiresApi(31) public static void setTextViewWidth(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setTextViewWidthDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setTextViewWidthDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setViewAlpha(android.widget.RemoteViews, @IdRes int viewId, float alpha);
-    method public static void setViewBackgroundColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int color);
-    method @RequiresApi(31) public static void setViewBackgroundColor(android.widget.RemoteViews, @IdRes int viewId, @ColorInt int notNight, @ColorInt int night);
-    method @RequiresApi(31) public static void setViewBackgroundColorAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method public static void setViewBackgroundColorResource(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method public static void setViewBackgroundResource(android.widget.RemoteViews, @IdRes int viewId, @DrawableRes int resId);
-    method @RequiresApi(31) public static void setViewBackgroundTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setViewBackgroundTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setViewBackgroundTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNightTint, android.content.res.ColorStateList? nightTint);
-    method @RequiresApi(31) public static void setViewBackgroundTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setViewBackgroundTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setViewClipToOutline(android.widget.RemoteViews, @IdRes int viewId, boolean clipToOutline);
-    method public static void setViewContentDescription(android.widget.RemoteViews, @IdRes int viewId, CharSequence? contentDescription);
-    method @RequiresApi(31) public static void setViewContentDescription(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setViewContentDescriptionAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setViewElevationDimen(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setViewElevationDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setViewElevationDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(24) public static void setViewEnabled(android.widget.RemoteViews, @IdRes int viewId, boolean enabled);
-    method @RequiresApi(31) public static void setViewFocusable(android.widget.RemoteViews, @IdRes int viewId, boolean focusable);
-    method @RequiresApi(31) public static void setViewFocusable(android.widget.RemoteViews, @IdRes int viewId, int focusable);
-    method @RequiresApi(31) public static void setViewFocusableInTouchMode(android.widget.RemoteViews, @IdRes int viewId, boolean focusableInTouchMode);
-    method @RequiresApi(31) public static void setViewFocusedByDefault(android.widget.RemoteViews, @IdRes int viewId, boolean isFocusedByDefault);
-    method @RequiresApi(31) public static void setViewForegroundTintBlendMode(android.widget.RemoteViews, @IdRes int viewId, android.graphics.BlendMode? blendMode);
-    method @RequiresApi(31) public static void setViewForegroundTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? tint);
-    method @RequiresApi(31) public static void setViewForegroundTintList(android.widget.RemoteViews, @IdRes int viewId, android.content.res.ColorStateList? notNightTint, android.content.res.ColorStateList? nightTint);
-    method @RequiresApi(31) public static void setViewForegroundTintList(android.widget.RemoteViews, @IdRes int viewId, @ColorRes int resId);
-    method @RequiresApi(31) public static void setViewForegroundTintListAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(17) public static void setViewLayoutDirection(android.widget.RemoteViews, @IdRes int viewId, int layoutDirection);
-    method @RequiresApi(24) public static void setViewMinimumHeight(android.widget.RemoteViews, @IdRes int viewId, @Px int minHeight);
-    method @RequiresApi(31) public static void setViewMinimumHeight(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setViewMinimumHeightDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setViewMinimumHeightDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setViewMinimumWidth(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setViewMinimumWidthDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setViewMinimumWidthDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setViewPivotX(android.widget.RemoteViews, @IdRes int viewId, float pivotX);
-    method @RequiresApi(31) public static void setViewPivotY(android.widget.RemoteViews, @IdRes int viewId, float pivotY);
-    method @RequiresApi(31) public static void setViewRotation(android.widget.RemoteViews, @IdRes int viewId, float rotation);
-    method @RequiresApi(31) public static void setViewRotationX(android.widget.RemoteViews, @IdRes int viewId, float rotationX);
-    method @RequiresApi(31) public static void setViewRotationY(android.widget.RemoteViews, @IdRes int viewId, float rotationY);
-    method @RequiresApi(31) public static void setViewScaleX(android.widget.RemoteViews, @IdRes int viewId, float scaleX);
-    method @RequiresApi(31) public static void setViewScaleY(android.widget.RemoteViews, @IdRes int viewId, float scaleY);
-    method @RequiresApi(31) public static void setViewScrollIndicators(android.widget.RemoteViews, @IdRes int viewId, int scrollIndicators);
-    method @RequiresApi(30) public static void setViewStateDescription(android.widget.RemoteViews, @IdRes int viewId, CharSequence? stateDescription);
-    method @RequiresApi(31) public static void setViewStateDescription(android.widget.RemoteViews, @IdRes int viewId, @StringRes int resId);
-    method @RequiresApi(31) public static void setViewStateDescriptionAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(16) public static void setViewStubInflatedId(android.widget.RemoteViews, @IdRes int viewId, int inflatedId);
-    method @RequiresApi(16) public static void setViewStubLayoutResource(android.widget.RemoteViews, @IdRes int viewId, @LayoutRes int layoutResource);
-    method @RequiresApi(31) public static void setViewTranslationXDimen(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setViewTranslationXDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setViewTranslationXDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setViewTranslationYDimen(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setViewTranslationYDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setViewTranslationYDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    method @RequiresApi(31) public static void setViewTranslationZDimen(android.widget.RemoteViews, @IdRes int viewId, float value, int unit);
-    method @RequiresApi(31) public static void setViewTranslationZDimen(android.widget.RemoteViews, @IdRes int viewId, @DimenRes int resId);
-    method @RequiresApi(31) public static void setViewTranslationZDimenAttr(android.widget.RemoteViews, @IdRes int viewId, @AttrRes int resId);
-    field public static final androidx.core.widget.RemoteViewsCompat INSTANCE;
-  }
-
-  public static final class RemoteViewsCompat.RemoteCollectionItems {
-    method public int getItemCount();
-    method public long getItemId(int position);
-    method public android.widget.RemoteViews getItemView(int position);
-    method public int getViewTypeCount();
-    method public boolean hasStableIds();
-    property public final int itemCount;
-    property public final int viewTypeCount;
-  }
-
-  public static final class RemoteViewsCompat.RemoteCollectionItems.Builder {
-    ctor public RemoteViewsCompat.RemoteCollectionItems.Builder();
-    method public androidx.core.widget.RemoteViewsCompat.RemoteCollectionItems.Builder addItem(long id, android.widget.RemoteViews view);
-    method public androidx.core.widget.RemoteViewsCompat.RemoteCollectionItems build();
-    method public androidx.core.widget.RemoteViewsCompat.RemoteCollectionItems.Builder setHasStableIds(boolean hasStableIds);
-    method public androidx.core.widget.RemoteViewsCompat.RemoteCollectionItems.Builder setViewTypeCount(int viewTypeCount);
-  }
-
-}
-
diff --git a/core/core-remoteviews/build.gradle b/core/core-remoteviews/build.gradle
index eb33cc1..78adb5b 100644
--- a/core/core-remoteviews/build.gradle
+++ b/core/core-remoteviews/build.gradle
@@ -58,7 +58,7 @@
 }
 
 androidx {
-    name = "AndroidX RemoteViews Support"
+    name = "RemoteViews"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CORE_REMOTEVIEWS
     inceptionYear = "2021"
diff --git a/core/core-remoteviews/src/androidTest/java/androidx/core/widget/AppWidgetManagerDeviceTest.kt b/core/core-remoteviews/src/androidTest/java/androidx/core/widget/AppWidgetManagerDeviceTest.kt
index eaba22c..053b013 100644
--- a/core/core-remoteviews/src/androidTest/java/androidx/core/widget/AppWidgetManagerDeviceTest.kt
+++ b/core/core-remoteviews/src/androidTest/java/androidx/core/widget/AppWidgetManagerDeviceTest.kt
@@ -43,13 +43,13 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.test.fail
 import org.junit.After
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.test.fail
 
 @SdkSuppress(minSdkVersion = 29)
 @MediumTest
diff --git a/core/core-remoteviews/src/androidTest/java/androidx/core/widget/RemoteViewsCompatTest.kt b/core/core-remoteviews/src/androidTest/java/androidx/core/widget/RemoteViewsCompatTest.kt
index 9282469..c5f9f09 100644
--- a/core/core-remoteviews/src/androidTest/java/androidx/core/widget/RemoteViewsCompatTest.kt
+++ b/core/core-remoteviews/src/androidTest/java/androidx/core/widget/RemoteViewsCompatTest.kt
@@ -42,15 +42,15 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.test.assertFailsWith
+import kotlin.test.fail
 import org.junit.After
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.test.assertFailsWith
-import kotlin.test.fail
 
 @SdkSuppress(minSdkVersion = 29)
 @MediumTest
diff --git a/core/core-remoteviews/src/test/java/androidx/core/widget/AppWidgetManagerCompatTest.kt b/core/core-remoteviews/src/test/java/androidx/core/widget/AppWidgetManagerCompatTest.kt
index 9b160b0..dd00746 100644
--- a/core/core-remoteviews/src/test/java/androidx/core/widget/AppWidgetManagerCompatTest.kt
+++ b/core/core-remoteviews/src/test/java/androidx/core/widget/AppWidgetManagerCompatTest.kt
@@ -37,6 +37,7 @@
 import androidx.core.util.component2
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertFailsWith
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
@@ -44,7 +45,6 @@
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
 import org.robolectric.util.ReflectionHelpers
-import kotlin.test.assertFailsWith
 
 @RunWith(RobolectricTestRunner::class)
 @DoNotInstrument
diff --git a/core/core-remoteviews/src/test/java/androidx/core/widget/RemoteViewsTest.kt b/core/core-remoteviews/src/test/java/androidx/core/widget/RemoteViewsTest.kt
index 181b000..0a38a01 100644
--- a/core/core-remoteviews/src/test/java/androidx/core/widget/RemoteViewsTest.kt
+++ b/core/core-remoteviews/src/test/java/androidx/core/widget/RemoteViewsTest.kt
@@ -28,7 +28,6 @@
 import android.widget.RemoteViews
 import android.widget.TextView
 import androidx.annotation.RequiresApi
-import androidx.test.core.app.ApplicationProvider
 import androidx.core.remoteviews.test.R
 import androidx.core.widget.RemoteViewsCompat.setLinearLayoutWeightSum
 import androidx.core.widget.RemoteViewsCompat.setTextViewError
@@ -36,16 +35,17 @@
 import androidx.core.widget.RemoteViewsCompat.setTextViewMaxLines
 import androidx.core.widget.RemoteViewsCompat.setViewBackgroundColorResource
 import androidx.core.widget.RemoteViewsCompat.setViewEnabled
+import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import java.util.Locale
+import kotlin.test.assertIs
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
-import java.util.Locale
-import kotlin.test.assertIs
 
 @RunWith(RobolectricTestRunner::class)
 @DoNotInstrument
diff --git a/core/core-role/api/public_plus_experimental_current.txt b/core/core-role/api/public_plus_experimental_current.txt
deleted file mode 100644
index 18ffe6f..0000000
--- a/core/core-role/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// Signature format: 4.0
-package androidx.core.role {
-
-  public final class RoleManagerCompat {
-    field public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
-    field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
-    field public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
-    field public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
-    field public static final String ROLE_DIALER = "android.app.role.DIALER";
-    field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
-    field public static final String ROLE_HOME = "android.app.role.HOME";
-    field public static final String ROLE_SMS = "android.app.role.SMS";
-    field public static final String ROLE_SYSTEM_GALLERY = "android.app.role.SYSTEM_GALLERY";
-  }
-
-}
-
diff --git a/core/core-role/build.gradle b/core/core-role/build.gradle
index e2f2c0a..f820a13 100644
--- a/core/core-role/build.gradle
+++ b/core/core-role/build.gradle
@@ -14,7 +14,7 @@
 }
 
 androidx {
-    name = "Android Support Library Role"
+    name = "Role"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CORE_ROLE
     inceptionYear = "2019"
diff --git a/core/core-splashscreen/api/public_plus_experimental_current.txt b/core/core-splashscreen/api/public_plus_experimental_current.txt
deleted file mode 100644
index 5208466..0000000
--- a/core/core-splashscreen/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-// Signature format: 4.0
-package androidx.core.splashscreen {
-
-  public final class SplashScreen {
-    method public static androidx.core.splashscreen.SplashScreen installSplashScreen(android.app.Activity);
-    method public void setKeepOnScreenCondition(androidx.core.splashscreen.SplashScreen.KeepOnScreenCondition condition);
-    method public void setOnExitAnimationListener(androidx.core.splashscreen.SplashScreen.OnExitAnimationListener listener);
-    field public static final androidx.core.splashscreen.SplashScreen.Companion Companion;
-  }
-
-  public static final class SplashScreen.Companion {
-    method public androidx.core.splashscreen.SplashScreen installSplashScreen(android.app.Activity);
-  }
-
-  public static fun interface SplashScreen.KeepOnScreenCondition {
-    method @MainThread public boolean shouldKeepOnScreen();
-  }
-
-  public static fun interface SplashScreen.OnExitAnimationListener {
-    method @MainThread public void onSplashScreenExit(androidx.core.splashscreen.SplashScreenViewProvider splashScreenViewProvider);
-  }
-
-  public final class SplashScreenViewProvider {
-    method public long getIconAnimationDurationMillis();
-    method public long getIconAnimationStartMillis();
-    method public android.view.View getIconView();
-    method public android.view.View getView();
-    method public void remove();
-    property public final long iconAnimationDurationMillis;
-    property public final long iconAnimationStartMillis;
-    property public final android.view.View iconView;
-    property public final android.view.View view;
-  }
-
-}
-
diff --git a/core/core-splashscreen/samples/build.gradle b/core/core-splashscreen/samples/build.gradle
index 3c59a31..ae1d810 100644
--- a/core/core-splashscreen/samples/build.gradle
+++ b/core/core-splashscreen/samples/build.gradle
@@ -42,7 +42,7 @@
 }
 
 androidx {
-    name = "AndroidX Splashscreen Samples"
+    name = "Splashscreen Samples"
     type = LibraryType.SAMPLES
     mavenVersion = LibraryVersions.CORE_SPLASHSCREEN
     inceptionYear = "2021"
diff --git a/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestController.kt b/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestController.kt
index 27d75f7..4c96776 100644
--- a/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestController.kt
+++ b/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestController.kt
@@ -23,12 +23,12 @@
 import android.util.TypedValue
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
+import androidx.core.splashscreen.R as SR
 import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
 import androidx.core.splashscreen.SplashScreenViewProvider
+import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.atomic.AtomicBoolean
-import androidx.core.splashscreen.R as SR
-import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 
 /**
  * If true, sets an [androidx.core.splashscreen.SplashScreen.OnExitAnimationListener] on the
diff --git a/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestUtils.kt b/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestUtils.kt
index ab7c012..490eea2 100644
--- a/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestUtils.kt
+++ b/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashScreenTestUtils.kt
@@ -26,10 +26,10 @@
 import androidx.test.uiautomator.By
 import androidx.test.uiautomator.UiDevice
 import androidx.test.uiautomator.Until
-import org.hamcrest.core.IsNull
-import org.hamcrest.MatcherAssert.assertThat
-import org.junit.Assert
 import kotlin.reflect.KClass
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.core.IsNull
+import org.junit.Assert
 
 private const val SPLASH_SCREEN_STYLE_ICON = 1
 private const val KEY_SPLASH_SCREEN_STYLE: String = "android.activity.splashScreenStyle"
diff --git a/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashscreenParametrizedTest.kt b/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashscreenParametrizedTest.kt
index e84532f..b5df1b0 100644
--- a/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashscreenParametrizedTest.kt
+++ b/core/core-splashscreen/src/androidTest/java/androidx/core/splashscreen/test/SplashscreenParametrizedTest.kt
@@ -28,6 +28,12 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.test.screenshot.matchers.MSSIMMatcher
 import androidx.test.uiautomator.UiDevice
+import java.io.File
+import java.io.FileOutputStream
+import java.io.IOException
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.reflect.KClass
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertNull
@@ -38,12 +44,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.io.File
-import java.io.FileOutputStream
-import java.io.IOException
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.reflect.KClass
 
 @LargeTest
 @RunWith(Parameterized::class)
diff --git a/core/core-testing/api/public_plus_experimental_current.txt b/core/core-testing/api/public_plus_experimental_current.txt
deleted file mode 100644
index 40c6d07..0000000
--- a/core/core-testing/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Signature format: 4.0
-package androidx.core.testing.util {
-
-  public final class TestConsumer<T> implements androidx.core.util.Consumer<T> {
-    ctor public TestConsumer();
-    method public void accept(T t);
-    method public void assertValues(java.util.List<? extends T> values);
-  }
-
-}
-
diff --git a/core/core-testing/build.gradle b/core/core-testing/build.gradle
index fdc6f76..1708420 100644
--- a/core/core-testing/build.gradle
+++ b/core/core-testing/build.gradle
@@ -41,9 +41,9 @@
 }
 
 androidx {
-    name = "androidx.core:core-testing"
+    name = "Core Testing"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CORE
     inceptionYear = "2023"
-    description = "Write tests using core APIs."
+    description = "Provides extensions for tests using Core APIs."
 }
diff --git a/core/core/api/current.txt b/core/core/api/current.txt
index 4e95224..1e6c816 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -2400,6 +2400,31 @@
     field public static final int START = 8388611; // 0x800003
   }
 
+  public final class HapticFeedbackConstantsCompat {
+    field public static final int CLOCK_TICK = 4; // 0x4
+    field public static final int CONFIRM = 16; // 0x10
+    field public static final int CONTEXT_CLICK = 6; // 0x6
+    field public static final int DRAG_START = 25; // 0x19
+    field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1
+    field public static final int GESTURE_END = 13; // 0xd
+    field public static final int GESTURE_START = 12; // 0xc
+    field public static final int GESTURE_THRESHOLD_ACTIVATE = 23; // 0x17
+    field public static final int GESTURE_THRESHOLD_DEACTIVATE = 24; // 0x18
+    field public static final int KEYBOARD_PRESS = 3; // 0x3
+    field public static final int KEYBOARD_RELEASE = 7; // 0x7
+    field public static final int KEYBOARD_TAP = 3; // 0x3
+    field public static final int LONG_PRESS = 0; // 0x0
+    field public static final int NO_HAPTICS = -1; // 0xffffffff
+    field public static final int REJECT = 17; // 0x11
+    field public static final int SEGMENT_FREQUENT_TICK = 27; // 0x1b
+    field public static final int SEGMENT_TICK = 26; // 0x1a
+    field public static final int TEXT_HANDLE_MOVE = 9; // 0x9
+    field public static final int TOGGLE_OFF = 22; // 0x16
+    field public static final int TOGGLE_ON = 21; // 0x15
+    field public static final int VIRTUAL_KEY = 1; // 0x1
+    field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8
+  }
+
   public final class InputDeviceCompat {
     field public static final int SOURCE_ANY = -256; // 0xffffff00
     field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
@@ -2847,6 +2872,8 @@
     method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
     method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
     method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle?);
+    method public static boolean performHapticFeedback(android.view.View, int);
+    method public static boolean performHapticFeedback(android.view.View, int, int);
     method public static androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
     method public static void postInvalidateOnAnimation(android.view.View);
     method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
diff --git a/core/core/api/public_plus_experimental_current.txt b/core/core/api/public_plus_experimental_current.txt
index 7c8a63c..2a81007 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -2407,6 +2407,31 @@
     field public static final int START = 8388611; // 0x800003
   }
 
+  public final class HapticFeedbackConstantsCompat {
+    field public static final int CLOCK_TICK = 4; // 0x4
+    field public static final int CONFIRM = 16; // 0x10
+    field public static final int CONTEXT_CLICK = 6; // 0x6
+    field public static final int DRAG_START = 25; // 0x19
+    field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1
+    field public static final int GESTURE_END = 13; // 0xd
+    field public static final int GESTURE_START = 12; // 0xc
+    field public static final int GESTURE_THRESHOLD_ACTIVATE = 23; // 0x17
+    field public static final int GESTURE_THRESHOLD_DEACTIVATE = 24; // 0x18
+    field public static final int KEYBOARD_PRESS = 3; // 0x3
+    field public static final int KEYBOARD_RELEASE = 7; // 0x7
+    field public static final int KEYBOARD_TAP = 3; // 0x3
+    field public static final int LONG_PRESS = 0; // 0x0
+    field public static final int NO_HAPTICS = -1; // 0xffffffff
+    field public static final int REJECT = 17; // 0x11
+    field public static final int SEGMENT_FREQUENT_TICK = 27; // 0x1b
+    field public static final int SEGMENT_TICK = 26; // 0x1a
+    field public static final int TEXT_HANDLE_MOVE = 9; // 0x9
+    field public static final int TOGGLE_OFF = 22; // 0x16
+    field public static final int TOGGLE_ON = 21; // 0x15
+    field public static final int VIRTUAL_KEY = 1; // 0x1
+    field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8
+  }
+
   public final class InputDeviceCompat {
     field public static final int SOURCE_ANY = -256; // 0xffffff00
     field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
@@ -2854,6 +2879,8 @@
     method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
     method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
     method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle?);
+    method public static boolean performHapticFeedback(android.view.View, int);
+    method public static boolean performHapticFeedback(android.view.View, int, int);
     method public static androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
     method public static void postInvalidateOnAnimation(android.view.View);
     method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index 945e47f..c27d0b0 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -2834,6 +2834,31 @@
     field public static final int START = 8388611; // 0x800003
   }
 
+  public final class HapticFeedbackConstantsCompat {
+    field public static final int CLOCK_TICK = 4; // 0x4
+    field public static final int CONFIRM = 16; // 0x10
+    field public static final int CONTEXT_CLICK = 6; // 0x6
+    field public static final int DRAG_START = 25; // 0x19
+    field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1
+    field public static final int GESTURE_END = 13; // 0xd
+    field public static final int GESTURE_START = 12; // 0xc
+    field public static final int GESTURE_THRESHOLD_ACTIVATE = 23; // 0x17
+    field public static final int GESTURE_THRESHOLD_DEACTIVATE = 24; // 0x18
+    field public static final int KEYBOARD_PRESS = 3; // 0x3
+    field public static final int KEYBOARD_RELEASE = 7; // 0x7
+    field public static final int KEYBOARD_TAP = 3; // 0x3
+    field public static final int LONG_PRESS = 0; // 0x0
+    field public static final int NO_HAPTICS = -1; // 0xffffffff
+    field public static final int REJECT = 17; // 0x11
+    field public static final int SEGMENT_FREQUENT_TICK = 27; // 0x1b
+    field public static final int SEGMENT_TICK = 26; // 0x1a
+    field public static final int TEXT_HANDLE_MOVE = 9; // 0x9
+    field public static final int TOGGLE_OFF = 22; // 0x16
+    field public static final int TOGGLE_ON = 21; // 0x15
+    field public static final int VIRTUAL_KEY = 1; // 0x1
+    field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8
+  }
+
   public final class InputDeviceCompat {
     field public static final int SOURCE_ANY = -256; // 0xffffff00
     field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
@@ -3291,6 +3316,8 @@
     method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat);
     method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
     method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle?);
+    method public static boolean performHapticFeedback(android.view.View, int);
+    method public static boolean performHapticFeedback(android.view.View, int, int);
     method public static androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
     method public static void postInvalidateOnAnimation(android.view.View);
     method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
diff --git a/core/core/build.gradle b/core/core/build.gradle
index fa351a1..832085f 100644
--- a/core/core/build.gradle
+++ b/core/core/build.gradle
@@ -90,10 +90,11 @@
 }
 
 androidx {
-    name = "Android Support Library compat"
+    name = "Core"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CORE
     inceptionYear = "2015"
-    description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren\'t a part of the framework APIs. Compatible on devices running API 14 or later."
+    description = "Provides backward-compatible implementations of Android platform APIs and " +
+            "features."
     failOnDeprecationWarnings = false
 }
diff --git a/core/core/src/androidTest/java/androidx/core/app/ActivityCompatRecreateFromLifecycleStatesTestCase.kt b/core/core/src/androidTest/java/androidx/core/app/ActivityCompatRecreateFromLifecycleStatesTestCase.kt
index 7f2a7de..36b0b0a 100644
--- a/core/core/src/androidTest/java/androidx/core/app/ActivityCompatRecreateFromLifecycleStatesTestCase.kt
+++ b/core/core/src/androidTest/java/androidx/core/app/ActivityCompatRecreateFromLifecycleStatesTestCase.kt
@@ -24,12 +24,12 @@
 import androidx.test.rule.ActivityTestRule
 import androidx.testutils.LifecycleOwnerUtils
 import androidx.testutils.PollingCheck
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import junit.framework.Assert.assertEquals
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/core/core/src/androidTest/java/androidx/core/app/NotificationTester.kt b/core/core/src/androidTest/java/androidx/core/app/NotificationTester.kt
index e73a557..aab6d1e 100644
--- a/core/core/src/androidTest/java/androidx/core/app/NotificationTester.kt
+++ b/core/core/src/androidTest/java/androidx/core/app/NotificationTester.kt
@@ -18,8 +18,8 @@
 import android.app.Notification
 import android.os.Build
 import android.os.Bundle
-import org.junit.Assert.assertEquals
 import java.util.TreeSet
+import org.junit.Assert.assertEquals
 
 internal object NotificationTester {
     @JvmStatic
diff --git a/core/core/src/androidTest/java/androidx/core/content/pm/PackageInfoCompatHasSignaturesTest.kt b/core/core/src/androidTest/java/androidx/core/content/pm/PackageInfoCompatHasSignaturesTest.kt
index bc98c5f..156affb 100644
--- a/core/core/src/androidTest/java/androidx/core/content/pm/PackageInfoCompatHasSignaturesTest.kt
+++ b/core/core/src/androidTest/java/androidx/core/content/pm/PackageInfoCompatHasSignaturesTest.kt
@@ -29,6 +29,7 @@
 import androidx.testutils.mockito.mockThrowOnUnmocked
 import androidx.testutils.mockito.whenever
 import com.google.common.truth.Truth.assertThat
+import java.security.MessageDigest
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
@@ -38,7 +39,6 @@
 import org.mockito.Mockito.anyInt
 import org.mockito.Mockito.eq
 import org.mockito.internal.util.reflection.FieldSetter
-import java.security.MessageDigest
 
 /**
  * Verifies [PackageInfoCompat.hasSignatures].
diff --git a/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java b/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java
index 41b6b15..a27a4e2 100644
--- a/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/view/ViewCompatTest.java
@@ -15,6 +15,26 @@
  */
 package androidx.core.view;
 
+import static androidx.core.view.HapticFeedbackConstantsCompat.CLOCK_TICK;
+import static androidx.core.view.HapticFeedbackConstantsCompat.CONFIRM;
+import static androidx.core.view.HapticFeedbackConstantsCompat.CONTEXT_CLICK;
+import static androidx.core.view.HapticFeedbackConstantsCompat.DRAG_START;
+import static androidx.core.view.HapticFeedbackConstantsCompat.GESTURE_END;
+import static androidx.core.view.HapticFeedbackConstantsCompat.GESTURE_START;
+import static androidx.core.view.HapticFeedbackConstantsCompat.GESTURE_THRESHOLD_ACTIVATE;
+import static androidx.core.view.HapticFeedbackConstantsCompat.GESTURE_THRESHOLD_DEACTIVATE;
+import static androidx.core.view.HapticFeedbackConstantsCompat.KEYBOARD_RELEASE;
+import static androidx.core.view.HapticFeedbackConstantsCompat.KEYBOARD_TAP;
+import static androidx.core.view.HapticFeedbackConstantsCompat.LONG_PRESS;
+import static androidx.core.view.HapticFeedbackConstantsCompat.NO_HAPTICS;
+import static androidx.core.view.HapticFeedbackConstantsCompat.REJECT;
+import static androidx.core.view.HapticFeedbackConstantsCompat.SEGMENT_FREQUENT_TICK;
+import static androidx.core.view.HapticFeedbackConstantsCompat.SEGMENT_TICK;
+import static androidx.core.view.HapticFeedbackConstantsCompat.TEXT_HANDLE_MOVE;
+import static androidx.core.view.HapticFeedbackConstantsCompat.TOGGLE_OFF;
+import static androidx.core.view.HapticFeedbackConstantsCompat.TOGGLE_ON;
+import static androidx.core.view.HapticFeedbackConstantsCompat.VIRTUAL_KEY;
+import static androidx.core.view.HapticFeedbackConstantsCompat.VIRTUAL_KEY_RELEASE;
 import static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT;
 import static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
 
@@ -33,6 +53,7 @@
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
 import android.app.Activity;
@@ -401,6 +422,168 @@
         assertEquals(contentCaptureSession, result.toContentCaptureSession());
     }
 
+    @Test
+    public void testPerformHapticFeedback_skipsHapticFeedbackForNoHapticsConstant() {
+        View spyView = spy(mView);
+        ViewCompat.performHapticFeedback(spyView, NO_HAPTICS);
+        verify(spyView, never()).performHapticFeedback(anyInt(), anyInt());
+    }
+
+    @SdkSuppress(minSdkVersion = 34)
+    @Test
+    public void testPerformHapticFeedback_useSameInputFeedbackConstantOnSdk34() {
+        for (int constant = HapticFeedbackConstantsCompat.FIRST_CONSTANT_INT;
+                constant < HapticFeedbackConstantsCompat.LAST_CONSTANT_INT; constant++) {
+            assertHapticFeedbackPerformed(constant);
+        }
+    }
+
+    @SdkSuppress(minSdkVersion = 30, maxSdkVersion = 33)
+    @Test
+    public void testPerformHapticFeedback_useFallbackForConstantsFromSdk34() {
+        // Maintain constants supported in SDK >= 30
+        assertHapticFeedbackPerformed(CONFIRM);
+        assertHapticFeedbackPerformed(REJECT);
+        assertHapticFeedbackPerformed(GESTURE_START);
+        assertHapticFeedbackPerformed(GESTURE_END);
+
+        // Fallbacks for constants from SDK >= 34
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, DRAG_START);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, TOGGLE_ON);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, SEGMENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, GESTURE_THRESHOLD_ACTIVATE);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, TOGGLE_OFF);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, SEGMENT_FREQUENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, GESTURE_THRESHOLD_DEACTIVATE);
+    }
+
+    @SdkSuppress(minSdkVersion = 27, maxSdkVersion = 29)
+    @Test
+    public void testPerformHapticFeedback_useFallbackForConstantsFromSdk30() {
+        // Maintain constants supported in SDK >= 27
+        assertHapticFeedbackPerformed(TEXT_HANDLE_MOVE);
+        assertHapticFeedbackPerformed(KEYBOARD_RELEASE);
+        assertHapticFeedbackPerformed(VIRTUAL_KEY_RELEASE);
+
+        // Fallbacks for constants from SDK >= 30
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, DRAG_START);
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, REJECT);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, CONFIRM);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, GESTURE_START);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, GESTURE_END);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, TOGGLE_ON);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, SEGMENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, GESTURE_THRESHOLD_ACTIVATE);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, TOGGLE_OFF);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, SEGMENT_FREQUENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, GESTURE_THRESHOLD_DEACTIVATE);
+    }
+
+    @SdkSuppress(minSdkVersion = 23, maxSdkVersion = 26)
+    @Test
+    public void testPerformHapticFeedback_useFallbackForConstantsFromSdk27() {
+        // Maintain constants supported in SDK >= 23
+        assertHapticFeedbackPerformed(CONTEXT_CLICK);
+
+        // Fallbacks for constants from SDK >= 27
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, DRAG_START);
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, REJECT);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, CONFIRM);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, GESTURE_START);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, GESTURE_END);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, TOGGLE_ON);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, SEGMENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CONTEXT_CLICK, GESTURE_THRESHOLD_ACTIVATE);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, TOGGLE_OFF);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, SEGMENT_FREQUENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, GESTURE_THRESHOLD_DEACTIVATE);
+        assertNoHapticFeedbackPerformed(TEXT_HANDLE_MOVE);
+        assertNoHapticFeedbackPerformed(KEYBOARD_RELEASE);
+        assertNoHapticFeedbackPerformed(VIRTUAL_KEY_RELEASE);
+    }
+
+    @SdkSuppress(minSdkVersion = 21, maxSdkVersion = 22)
+    @Test
+    public void testPerformHapticFeedback_useFallbackForConstantsFromSdk23() {
+        // Maintain constants supported in SDK >= 21
+        assertHapticFeedbackPerformed(CLOCK_TICK);
+
+        // Fallbacks for constants from SDK >= 23
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, DRAG_START);
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, REJECT);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, CONFIRM);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, GESTURE_START);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, GESTURE_END);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, TOGGLE_ON);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, SEGMENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, GESTURE_THRESHOLD_ACTIVATE);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, TOGGLE_OFF);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, SEGMENT_FREQUENT_TICK);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, GESTURE_THRESHOLD_DEACTIVATE);
+        assertFallbackHapticFeedbackPerformed(CLOCK_TICK, CONTEXT_CLICK);
+        assertNoHapticFeedbackPerformed(TEXT_HANDLE_MOVE);
+        assertNoHapticFeedbackPerformed(KEYBOARD_RELEASE);
+        assertNoHapticFeedbackPerformed(VIRTUAL_KEY_RELEASE);
+    }
+
+    @SdkSuppress(maxSdkVersion = 20)
+    @Test
+    public void testPerformHapticFeedback_useFallbackForConstantsFromSdk21() {
+        // Maintain constants supported in SDK < 21
+        assertHapticFeedbackPerformed(KEYBOARD_TAP);
+
+        // Fallbacks for constants from SDK >= 21
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, DRAG_START);
+        assertFallbackHapticFeedbackPerformed(LONG_PRESS, REJECT);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, CONFIRM);
+        assertFallbackHapticFeedbackPerformed(VIRTUAL_KEY, GESTURE_START);
+        assertNoHapticFeedbackPerformed(GESTURE_END);
+        assertNoHapticFeedbackPerformed(TOGGLE_ON);
+        assertNoHapticFeedbackPerformed(SEGMENT_TICK);
+        assertNoHapticFeedbackPerformed(GESTURE_THRESHOLD_ACTIVATE);
+        assertNoHapticFeedbackPerformed(TOGGLE_OFF);
+        assertNoHapticFeedbackPerformed(SEGMENT_FREQUENT_TICK);
+        assertNoHapticFeedbackPerformed(GESTURE_THRESHOLD_DEACTIVATE);
+        assertNoHapticFeedbackPerformed(CONTEXT_CLICK);
+        assertNoHapticFeedbackPerformed(CLOCK_TICK);
+        assertNoHapticFeedbackPerformed(TEXT_HANDLE_MOVE);
+        assertNoHapticFeedbackPerformed(KEYBOARD_RELEASE);
+        assertNoHapticFeedbackPerformed(VIRTUAL_KEY_RELEASE);
+    }
+
+    private void assertHapticFeedbackPerformed(int feedbackConstant) {
+        View spyView = spy(mView);
+        int flags = HapticFeedbackConstantsCompat.FLAG_IGNORE_VIEW_SETTING;
+
+        ViewCompat.performHapticFeedback(spyView, feedbackConstant);
+        verify(spyView).performHapticFeedback(eq(feedbackConstant));
+
+        ViewCompat.performHapticFeedback(spyView, feedbackConstant, flags);
+        verify(spyView).performHapticFeedback(eq(feedbackConstant), eq(flags));
+    }
+
+    private void assertNoHapticFeedbackPerformed(int feedbackConstant) {
+        View spyView = spy(mView);
+        int flags = HapticFeedbackConstantsCompat.FLAG_IGNORE_VIEW_SETTING;
+
+        ViewCompat.performHapticFeedback(spyView, feedbackConstant);
+        verify(spyView, never()).performHapticFeedback(anyInt());
+
+        ViewCompat.performHapticFeedback(spyView, feedbackConstant, flags);
+        verify(spyView, never()).performHapticFeedback(anyInt(), anyInt());
+    }
+
+    private void assertFallbackHapticFeedbackPerformed(int expectedFallback, int feedbackConstant) {
+        View spyView = spy(mView);
+        int flags = HapticFeedbackConstantsCompat.FLAG_IGNORE_VIEW_SETTING;
+
+        ViewCompat.performHapticFeedback(spyView, feedbackConstant);
+        verify(spyView).performHapticFeedback(eq(expectedFallback));
+
+        ViewCompat.performHapticFeedback(spyView, feedbackConstant, flags);
+        verify(spyView).performHapticFeedback(eq(expectedFallback), eq(flags));
+    }
+
     private static boolean isViewIdGenerated(int id) {
         return (id & 0xFF000000) == 0 && (id & 0x00FFFFFF) != 0;
     }
diff --git a/core/core/src/androidTest/java/androidx/core/view/WindowCompatTest.kt b/core/core/src/androidTest/java/androidx/core/view/WindowCompatTest.kt
index 110a615..eb75b11 100644
--- a/core/core/src/androidTest/java/androidx/core/view/WindowCompatTest.kt
+++ b/core/core/src/androidTest/java/androidx/core/view/WindowCompatTest.kt
@@ -22,12 +22,12 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/core/core/src/androidTest/java/androidx/core/view/WindowInsetsAnimationCompatActivityTest.kt b/core/core/src/androidTest/java/androidx/core/view/WindowInsetsAnimationCompatActivityTest.kt
index 971024c..633908c 100644
--- a/core/core/src/androidTest/java/androidx/core/view/WindowInsetsAnimationCompatActivityTest.kt
+++ b/core/core/src/androidTest/java/androidx/core/view/WindowInsetsAnimationCompatActivityTest.kt
@@ -36,14 +36,14 @@
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.withActivity
 import com.google.common.truth.Truth
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
 import org.junit.Assume
 import org.junit.Before
 import org.junit.Test
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @SdkSuppress(minSdkVersion = 21)
 @RequiresApi(21)
diff --git a/core/core/src/androidTest/java/androidx/core/view/WindowInsetsCompatActivityTest.kt b/core/core/src/androidTest/java/androidx/core/view/WindowInsetsCompatActivityTest.kt
index e50c0bf..ffa754f 100644
--- a/core/core/src/androidTest/java/androidx/core/view/WindowInsetsCompatActivityTest.kt
+++ b/core/core/src/androidTest/java/androidx/core/view/WindowInsetsCompatActivityTest.kt
@@ -40,6 +40,9 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.withActivity
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.atomic.AtomicReference
 import org.hamcrest.Matchers.`is`
 import org.junit.After
 import org.junit.Assert.assertEquals
@@ -52,9 +55,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.atomic.AtomicReference
 
 @Suppress("DEPRECATION") // Testing deprecated methods
 @SdkSuppress(minSdkVersion = 16)
diff --git a/core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt b/core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
index 6a40e06..42f97ba 100644
--- a/core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
+++ b/core/core/src/androidTest/java/androidx/core/view/WindowInsetsControllerCompatActivityTest.kt
@@ -36,8 +36,12 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.withActivity
-import org.hamcrest.Matchers.`is`
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.atomic.AtomicReference
+import kotlin.concurrent.thread
 import org.hamcrest.Matchers.equalTo
+import org.hamcrest.Matchers.`is`
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.fail
@@ -46,10 +50,6 @@
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.atomic.AtomicReference
-import kotlin.concurrent.thread
 
 @Suppress("DEPRECATION")
 @SdkSuppress(minSdkVersion = 23)
diff --git a/core/core/src/androidTest/java/androidx/core/widget/NestedScrollViewNestedScrollingFlingVelocityTest.kt b/core/core/src/androidTest/java/androidx/core/widget/NestedScrollViewNestedScrollingFlingVelocityTest.kt
index 4eed461..4f73447 100644
--- a/core/core/src/androidTest/java/androidx/core/widget/NestedScrollViewNestedScrollingFlingVelocityTest.kt
+++ b/core/core/src/androidTest/java/androidx/core/widget/NestedScrollViewNestedScrollingFlingVelocityTest.kt
@@ -25,6 +25,7 @@
 import androidx.core.view.NestedScrollingParent3
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.LargeTest
+import java.util.Arrays
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.closeTo
 import org.junit.Before
@@ -32,7 +33,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.Arrays
 
 /**
  * This test verifies that the velocity that NestedScrollView flings with in response to finger
diff --git a/core/core/src/main/java/androidx/core/view/HapticFeedbackConstantsCompat.java b/core/core/src/main/java/androidx/core/view/HapticFeedbackConstantsCompat.java
new file mode 100644
index 0000000..4ed4078
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/view/HapticFeedbackConstantsCompat.java
@@ -0,0 +1,384 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.view;
+
+import android.os.Build;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.VisibleForTesting;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Helper class for accessing values in {@link android.view.HapticFeedbackConstants}.
+ */
+public final class HapticFeedbackConstantsCompat {
+
+    /**
+     * No haptic feedback should be performed. Applications may use this value to indicate skipping
+     * a call to {@link android.view.View#performHapticFeedback} entirely, or else rely that it
+     * will immediately return {@code false}.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same behavior, immediately returns false</li>
+     * </ul>
+     */
+    public static final int NO_HAPTICS = -1;
+
+    /**
+     * The user has performed a long press on an object that is resulting in an action being
+     * performed.
+     */
+    public static final int LONG_PRESS = 0;
+
+    /**
+     * The user has pressed on a virtual on-screen key.
+     */
+    public static final int VIRTUAL_KEY = 1;
+
+    /**
+     * The user has pressed a soft keyboard key.
+     */
+    public static final int KEYBOARD_TAP = 3;
+
+    /**
+     * The user has pressed either an hour or minute tick of a Clock.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int CLOCK_TICK = 4;
+
+    /**
+     * The user has performed a context click on an object.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 23: Same feedback as CLOCK_TICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int CONTEXT_CLICK = 6;
+
+    /**
+     * The user has pressed a virtual or software keyboard key.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 27: Same feedback as KEYBOARD_TAP</li>
+     * </ul>
+     */
+    public static final int KEYBOARD_PRESS = KEYBOARD_TAP; // Platform constant is also the same.
+
+    /**
+     * The user has released a virtual keyboard key.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 27: No-op</li>
+     * </ul>
+     */
+    public static final int KEYBOARD_RELEASE = 7;
+
+    /**
+     * The user has released a virtual key.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 27: No-op</li>
+     * </ul>
+     */
+    public static final int VIRTUAL_KEY_RELEASE = 8;
+
+    /**
+     * The user has performed a selection/insertion handle move on text field.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 27: No-op</li>
+     * </ul>
+     */
+    public static final int TEXT_HANDLE_MOVE = 9;
+
+    /**
+     * The user has started a gesture (e.g. on the soft keyboard).
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 30: Same feedback as VIRTUAL_KEY</li>
+     * </ul>
+     */
+    public static final int GESTURE_START = 12;
+
+    /**
+     * The user has finished a gesture (e.g. on the soft keyboard).
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 30: Same feedback as CONTEXT_CLICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int GESTURE_END = 13;
+
+    /**
+     * A haptic effect to signal the confirmation or successful completion of a user interaction.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 30: Same feedback as VIRTUAL_KEY</li>
+     * </ul>
+     */
+    public static final int CONFIRM = 16;
+
+    /**
+     * A haptic effect to signal the rejection or failure of a user interaction.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 30: Same feedback as LONG_PRESS</li>
+     * </ul>
+     */
+    public static final int REJECT = 17;
+
+    /**
+     * The user has toggled a switch or button into the on position.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same feedback as CONTEXT_CLICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int TOGGLE_ON = 21;
+
+    /**
+     * The user has toggled a switch or button into the off position.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same feedback as CLOCK_TICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int TOGGLE_OFF = 22;
+
+    /**
+     * The user is executing a swipe/drag-style gesture, such as pull-to-refresh, where the
+     * gesture action is “eligible” at a certain threshold of movement, and can be cancelled by
+     * moving back past the threshold. This constant indicates that the user's motion has just
+     * passed the threshold for the action to be activated on release.
+     *
+     * @see #GESTURE_THRESHOLD_DEACTIVATE
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same feedback as CONTEXT_CLICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int GESTURE_THRESHOLD_ACTIVATE = 23;
+
+    /**
+     * The user is executing a swipe/drag-style gesture, such as pull-to-refresh, where the
+     * gesture action is “eligible” at a certain threshold of movement, and can be cancelled by
+     * moving back past the threshold. This constant indicates that the user's motion has just
+     * re-crossed back "under" the threshold for the action to be activated, meaning the gesture is
+     * currently in a cancelled state.
+     *
+     * @see #GESTURE_THRESHOLD_ACTIVATE
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same feedback as CLOCK_TICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int GESTURE_THRESHOLD_DEACTIVATE = 24;
+
+    /**
+     * The user has started a drag-and-drop gesture. The drag target has just been "picked up".
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same feedback as LONG_PRESS</li>
+     * </ul>
+     */
+    public static final int DRAG_START = 25;
+
+    /**
+     * The user is switching between a series of potential choices, for example items in a list
+     * or discrete points on a slider.
+     *
+     * <p>See also {@link #SEGMENT_FREQUENT_TICK} for cases where density of choices is high, and
+     * the haptics should be lighter or suppressed for a better user experience.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same feedback as CONTEXT_CLICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int SEGMENT_TICK = 26;
+
+    /**
+     * The user is switching between a series of many potential choices, for example minutes on a
+     * clock face, or individual percentages. This constant is expected to be very soft, so as
+     * not to be uncomfortable when performed a lot in quick succession. If the device can’t make
+     * a suitably soft vibration, then it may not make any vibration.
+     *
+     * <p>Some specializations of this constant exist for specific actions, notably
+     * {@link #CLOCK_TICK} and {@link #TEXT_HANDLE_MOVE}.
+     *
+     * <p>See also {@link #SEGMENT_TICK}.
+     *
+     * <p>Compatibility:
+     * <ul>
+     *     <li>API &lt; 34: Same feedback as CLOCK_TICK</li>
+     *     <li>API &lt; 21: No-op</li>
+     * </ul>
+     */
+    public static final int SEGMENT_FREQUENT_TICK = 27;
+
+    /** First constant value, excluding {@link #NO_HAPTICS} constant. */
+    @VisibleForTesting
+    static final int FIRST_CONSTANT_INT = LONG_PRESS;
+
+    /** Last constant value used. */
+    @VisibleForTesting
+    static final int LAST_CONSTANT_INT = SEGMENT_FREQUENT_TICK;
+
+    /**
+     * Flag for {@link ViewCompat#performHapticFeedback(android.view.View, int, int)}: Ignore the
+     * setting in the view for whether to perform haptic feedback, do it always.
+     */
+    public static final int FLAG_IGNORE_VIEW_SETTING = 0x0001;
+
+    /** Haptic feedback types. */
+    @IntDef(value = {
+            NO_HAPTICS,
+            LONG_PRESS,
+            VIRTUAL_KEY,
+            KEYBOARD_TAP,
+            CLOCK_TICK,
+            CONTEXT_CLICK,
+            KEYBOARD_PRESS,
+            KEYBOARD_RELEASE,
+            VIRTUAL_KEY_RELEASE,
+            TEXT_HANDLE_MOVE,
+            GESTURE_START,
+            GESTURE_END,
+            CONFIRM,
+            REJECT,
+            TOGGLE_ON,
+            TOGGLE_OFF,
+            GESTURE_THRESHOLD_ACTIVATE,
+            GESTURE_THRESHOLD_DEACTIVATE,
+            DRAG_START,
+            SEGMENT_TICK,
+            SEGMENT_FREQUENT_TICK
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
+    public @interface HapticFeedbackType {
+    }
+
+    /** Flags for performing haptic feedback. */
+    @IntDef(flag = true, value = {
+            FLAG_IGNORE_VIEW_SETTING
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
+    public @interface HapticFeedbackFlags {
+    }
+
+    /**
+     * Returns a haptic feedback constant that is available for this platform build.
+     *
+     * @param feedbackConstant The feedback constant requested
+     * @return The same constant, if supported by this platform build, or a supported fallback.
+     */
+    @HapticFeedbackType
+    static int getFeedbackConstantOrFallback(@HapticFeedbackType int feedbackConstant) {
+        if (feedbackConstant == NO_HAPTICS) {
+            // Skip fallback logic if constant is no-op.
+            return NO_HAPTICS;
+        }
+        if (Build.VERSION.SDK_INT < 34) {
+            switch (feedbackConstant) {
+                case DRAG_START:
+                    feedbackConstant = LONG_PRESS;
+                    break;
+                case TOGGLE_ON:
+                case SEGMENT_TICK:
+                case GESTURE_THRESHOLD_ACTIVATE:
+                    feedbackConstant = CONTEXT_CLICK;
+                    break;
+                case TOGGLE_OFF:
+                case SEGMENT_FREQUENT_TICK:
+                case GESTURE_THRESHOLD_DEACTIVATE:
+                    feedbackConstant = CLOCK_TICK;
+                    break;
+            }
+        }
+        if (Build.VERSION.SDK_INT < 30) {
+            switch (feedbackConstant) {
+                case REJECT:
+                    feedbackConstant = LONG_PRESS;
+                    break;
+                case CONFIRM:
+                case GESTURE_START:
+                    feedbackConstant = VIRTUAL_KEY;
+                    break;
+                case GESTURE_END:
+                    feedbackConstant = CONTEXT_CLICK;
+                    break;
+            }
+        }
+        if (Build.VERSION.SDK_INT < 27) {
+            switch (feedbackConstant) {
+                case KEYBOARD_RELEASE:
+                case VIRTUAL_KEY_RELEASE:
+                case TEXT_HANDLE_MOVE:
+                    feedbackConstant = NO_HAPTICS;
+                    break;
+            }
+        }
+        if (Build.VERSION.SDK_INT < 23) {
+            switch (feedbackConstant) {
+                case CONTEXT_CLICK:
+                    feedbackConstant = CLOCK_TICK;
+                    break;
+            }
+        }
+        if (Build.VERSION.SDK_INT < 21) {
+            switch (feedbackConstant) {
+                case CLOCK_TICK:
+                    feedbackConstant = NO_HAPTICS;
+                    break;
+            }
+        }
+        return feedbackConstant;
+    }
+
+    private HapticFeedbackConstantsCompat() {}
+}
diff --git a/core/core/src/main/java/androidx/core/view/ViewCompat.java b/core/core/src/main/java/androidx/core/view/ViewCompat.java
index 856e06d..5f551cf 100644
--- a/core/core/src/main/java/androidx/core/view/ViewCompat.java
+++ b/core/core/src/main/java/androidx/core/view/ViewCompat.java
@@ -76,6 +76,8 @@
 import androidx.core.R;
 import androidx.core.util.Preconditions;
 import androidx.core.view.AccessibilityDelegateCompat.AccessibilityDelegateAdapter;
+import androidx.core.view.HapticFeedbackConstantsCompat.HapticFeedbackFlags;
+import androidx.core.view.HapticFeedbackConstantsCompat.HapticFeedbackType;
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
 import androidx.core.view.accessibility.AccessibilityNodeProviderCompat;
@@ -1483,6 +1485,58 @@
     }
 
     /**
+     * Perform a haptic feedback to the user for the view.
+     *
+     * <p>The framework will provide haptic feedback for some built in actions, such as long
+     * presses, but you may wish to provide feedback for your own widget.
+     *
+     * <p>The feedback will only be performed if {@link android.view.View#isHapticFeedbackEnabled()}
+     * is true.
+     *
+     * <em>Note:</em> Check compatibility support for each feedback constant described at
+     * {@link HapticFeedbackConstantsCompat}.
+     *
+     * @param view             The view.
+     * @param feedbackConstant One of the constants defined in {@link HapticFeedbackConstantsCompat}
+     * @return Whether the feedback might be performed - generally this result should be ignored
+     */
+    public static boolean performHapticFeedback(@NonNull View view,
+            @HapticFeedbackType int feedbackConstant) {
+        feedbackConstant =
+                HapticFeedbackConstantsCompat.getFeedbackConstantOrFallback(feedbackConstant);
+        if (feedbackConstant == HapticFeedbackConstantsCompat.NO_HAPTICS) {
+            // This compat implementation is straightforward.
+            return false;
+        }
+        return view.performHapticFeedback(feedbackConstant);
+    }
+
+    /**
+     * Perform a haptic feedback to the user for the view.
+     *
+     * <p>This is similar to {@link #performHapticFeedback(android.view.View, int)}, with
+     * additional options.
+     *
+     * <em>Note:</em> Check compatibility support for each feedback constant described at
+     * {@link HapticFeedbackConstantsCompat}.
+     *
+     * @param view             The view.
+     * @param feedbackConstant One of the constants defined in {@link HapticFeedbackConstantsCompat}
+     * @param flags            Additional flags as per {@link HapticFeedbackConstantsCompat}
+     * @return Whether the feedback might be performed - generally this result should be ignored
+     */
+    public static boolean performHapticFeedback(@NonNull View view,
+            @HapticFeedbackType int feedbackConstant, @HapticFeedbackFlags int flags) {
+        feedbackConstant =
+                HapticFeedbackConstantsCompat.getFeedbackConstantOrFallback(feedbackConstant);
+        if (feedbackConstant == HapticFeedbackConstantsCompat.NO_HAPTICS) {
+            // This compat implementation is straightforward.
+            return false;
+        }
+        return view.performHapticFeedback(feedbackConstant, flags);
+    }
+
+    /**
      * Adds an accessibility action that can be performed on a node associated with a view.
      * A view can only have 32 actions created with this API.
      *
diff --git a/core/uwb/uwb-rxjava3/api/public_plus_experimental_current.txt b/core/uwb/uwb-rxjava3/api/public_plus_experimental_current.txt
deleted file mode 100644
index 9f9d29f..0000000
--- a/core/uwb/uwb-rxjava3/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-// Signature format: 4.0
-package androidx.core.uwb.rxjava3 {
-
-  public final class UwbClientSessionScopeRx {
-    method public static io.reactivex.rxjava3.core.Flowable<androidx.core.uwb.RangingResult> rangingResultsFlowable(androidx.core.uwb.UwbClientSessionScope, androidx.core.uwb.RangingParameters parameters);
-    method public static io.reactivex.rxjava3.core.Observable<androidx.core.uwb.RangingResult> rangingResultsObservable(androidx.core.uwb.UwbClientSessionScope, androidx.core.uwb.RangingParameters parameters);
-  }
-
-  public final class UwbControllerSessionScopeRx {
-    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> addControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
-    method public static io.reactivex.rxjava3.core.Single<kotlin.Unit> removeControleeSingle(androidx.core.uwb.UwbControllerSessionScope, androidx.core.uwb.UwbAddress address);
-  }
-
-  public final class UwbManagerRx {
-    method @Deprecated public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbClientSessionScope> clientSessionScopeSingle(androidx.core.uwb.UwbManager);
-    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControleeSessionScope> controleeSessionScopeSingle(androidx.core.uwb.UwbManager);
-    method public static io.reactivex.rxjava3.core.Single<androidx.core.uwb.UwbControllerSessionScope> controllerSessionScopeSingle(androidx.core.uwb.UwbManager);
-  }
-
-}
-
diff --git a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt
index 92785bf3..112a643 100644
--- a/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt
+++ b/core/uwb/uwb-rxjava3/src/androidTest/java/androidx/core/uwb/rxjava3/mock/TestUwbManager.kt
@@ -16,12 +16,12 @@
 
 package androidx.core.uwb.rxjava3.mock
 
-import androidx.core.uwb.UwbManager
-import androidx.core.uwb.UwbAddress
 import androidx.core.uwb.RangingCapabilities
+import androidx.core.uwb.UwbAddress
 import androidx.core.uwb.UwbClientSessionScope
 import androidx.core.uwb.UwbControleeSessionScope
 import androidx.core.uwb.UwbControllerSessionScope
+import androidx.core.uwb.UwbManager
 import com.google.android.gms.nearby.uwb.UwbComplexChannel
 
 /** A default implementation of [UwbManager] used in testing. */
diff --git a/core/uwb/uwb/api/public_plus_experimental_current.txt b/core/uwb/uwb/api/public_plus_experimental_current.txt
deleted file mode 100644
index 57ac364..0000000
--- a/core/uwb/uwb/api/public_plus_experimental_current.txt
+++ /dev/null
@@ -1,166 +0,0 @@
-// Signature format: 4.0
-package androidx.core.uwb {
-
-  public final class RangingCapabilities {
-    ctor public RangingCapabilities(boolean isDistanceSupported, boolean isAzimuthalAngleSupported, boolean isElevationAngleSupported, int minRangingInterval, java.util.Set<java.lang.Integer> supportedChannels, java.util.Set<java.lang.Integer> supportedConfigIds);
-    method public int getMinRangingInterval();
-    method public java.util.Set<java.lang.Integer> getSupportedChannels();
-    method public java.util.Set<java.lang.Integer> getSupportedConfigIds();
-    method public boolean isAzimuthalAngleSupported();
-    method public boolean isDistanceSupported();
-    method public boolean isElevationAngleSupported();
-    property public final boolean isAzimuthalAngleSupported;
-    property public final boolean isDistanceSupported;
-    property public final boolean isElevationAngleSupported;
-    property public final int minRangingInterval;
-    property public final java.util.Set<java.lang.Integer> supportedChannels;
-    property public final java.util.Set<java.lang.Integer> supportedConfigIds;
-  }
-
-  public final class RangingMeasurement {
-    ctor public RangingMeasurement(float value);
-    method public float getValue();
-    property public final float value;
-  }
-
-  public final class RangingParameters {
-    ctor public RangingParameters(int uwbConfigType, int sessionId, byte[]? sessionKeyInfo, androidx.core.uwb.UwbComplexChannel? complexChannel, java.util.List<androidx.core.uwb.UwbDevice> peerDevices, int updateRateType);
-    method public androidx.core.uwb.UwbComplexChannel? getComplexChannel();
-    method public java.util.List<androidx.core.uwb.UwbDevice> getPeerDevices();
-    method public int getSessionId();
-    method public byte[]? getSessionKeyInfo();
-    method public int getUpdateRateType();
-    method public int getUwbConfigType();
-    property public final androidx.core.uwb.UwbComplexChannel? complexChannel;
-    property public final java.util.List<androidx.core.uwb.UwbDevice> peerDevices;
-    property public final int sessionId;
-    property public final byte[]? sessionKeyInfo;
-    property public final int updateRateType;
-    property public final int uwbConfigType;
-    field public static final int CONFIG_MULTICAST_DS_TWR;
-    field public static final int CONFIG_UNICAST_DS_TWR;
-    field public static final androidx.core.uwb.RangingParameters.Companion Companion;
-    field public static final int RANGING_UPDATE_RATE_AUTOMATIC;
-    field public static final int RANGING_UPDATE_RATE_FREQUENT;
-    field public static final int RANGING_UPDATE_RATE_INFREQUENT;
-  }
-
-  public static final class RangingParameters.Companion {
-  }
-
-  public final class RangingPosition {
-    ctor public RangingPosition(androidx.core.uwb.RangingMeasurement? distance, androidx.core.uwb.RangingMeasurement? azimuth, androidx.core.uwb.RangingMeasurement? elevation, long elapsedRealtimeNanos);
-    method public androidx.core.uwb.RangingMeasurement? getAzimuth();
-    method public androidx.core.uwb.RangingMeasurement? getDistance();
-    method public long getElapsedRealtimeNanos();
-    method public androidx.core.uwb.RangingMeasurement? getElevation();
-    property public final androidx.core.uwb.RangingMeasurement? azimuth;
-    property public final androidx.core.uwb.RangingMeasurement? distance;
-    property public final long elapsedRealtimeNanos;
-    property public final androidx.core.uwb.RangingMeasurement? elevation;
-  }
-
-  public abstract class RangingResult {
-    method public abstract androidx.core.uwb.UwbDevice getDevice();
-    property public abstract androidx.core.uwb.UwbDevice device;
-  }
-
-  public static final class RangingResult.RangingResultPeerDisconnected extends androidx.core.uwb.RangingResult {
-    ctor public RangingResult.RangingResultPeerDisconnected(androidx.core.uwb.UwbDevice device);
-    method public androidx.core.uwb.UwbDevice getDevice();
-    property public androidx.core.uwb.UwbDevice device;
-  }
-
-  public static final class RangingResult.RangingResultPosition extends androidx.core.uwb.RangingResult {
-    ctor public RangingResult.RangingResultPosition(androidx.core.uwb.UwbDevice device, androidx.core.uwb.RangingPosition position);
-    method public androidx.core.uwb.UwbDevice getDevice();
-    method public androidx.core.uwb.RangingPosition getPosition();
-    property public androidx.core.uwb.UwbDevice device;
-    property public final androidx.core.uwb.RangingPosition position;
-  }
-
-  public final class UwbAddress {
-    ctor public UwbAddress(byte[] address);
-    ctor public UwbAddress(String address);
-    method public byte[] getAddress();
-    property public final byte[] address;
-    field public static final androidx.core.uwb.UwbAddress.Companion Companion;
-  }
-
-  public static final class UwbAddress.Companion {
-  }
-
-  public interface UwbClientSessionScope {
-    method public androidx.core.uwb.UwbAddress getLocalAddress();
-    method public androidx.core.uwb.RangingCapabilities getRangingCapabilities();
-    method public kotlinx.coroutines.flow.Flow<androidx.core.uwb.RangingResult> prepareSession(androidx.core.uwb.RangingParameters parameters);
-    property public abstract androidx.core.uwb.UwbAddress localAddress;
-    property public abstract androidx.core.uwb.RangingCapabilities rangingCapabilities;
-  }
-
-  public final class UwbComplexChannel {
-    ctor public UwbComplexChannel(int channel, int preambleIndex);
-    method public int getChannel();
-    method public int getPreambleIndex();
-    property public final int channel;
-    property public final int preambleIndex;
-  }
-
-  public interface UwbControleeSessionScope extends androidx.core.uwb.UwbClientSessionScope {
-  }
-
-  public interface UwbControllerSessionScope extends androidx.core.uwb.UwbClientSessionScope {
-    method public suspend Object? addControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method public androidx.core.uwb.UwbComplexChannel getUwbComplexChannel();
-    method public suspend Object? removeControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    property public abstract androidx.core.uwb.UwbComplexChannel uwbComplexChannel;
-  }
-
-  public final class UwbDevice {
-    ctor public UwbDevice(androidx.core.uwb.UwbAddress address);
-    method public static androidx.core.uwb.UwbDevice createForAddress(String address);
-    method public static androidx.core.uwb.UwbDevice createForAddress(byte[] address);
-    method public androidx.core.uwb.UwbAddress getAddress();
-    property public final androidx.core.uwb.UwbAddress address;
-    field public static final androidx.core.uwb.UwbDevice.Companion Companion;
-  }
-
-  public static final class UwbDevice.Companion {
-    method public androidx.core.uwb.UwbDevice createForAddress(String address);
-    method public androidx.core.uwb.UwbDevice createForAddress(byte[] address);
-  }
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface UwbManager {
-    method @Deprecated public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
-    method public suspend Object? controleeSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControleeSessionScope>);
-    method public suspend Object? controllerSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControllerSessionScope>);
-    method public default static androidx.core.uwb.UwbManager createInstance(android.content.Context context);
-    field public static final androidx.core.uwb.UwbManager.Companion Companion;
-  }
-
-  public static final class UwbManager.Companion {
-    method public androidx.core.uwb.UwbManager createInstance(android.content.Context context);
-  }
-
-}
-
-package androidx.core.uwb.exceptions {
-
-  public class UwbApiException extends java.lang.Exception {
-    ctor public UwbApiException(String message);
-  }
-
-  public final class UwbHardwareNotAvailableException extends androidx.core.uwb.exceptions.UwbApiException {
-    ctor public UwbHardwareNotAvailableException(String message);
-  }
-
-  public final class UwbServiceNotAvailableException extends androidx.core.uwb.exceptions.UwbApiException {
-    ctor public UwbServiceNotAvailableException(String message);
-  }
-
-  public final class UwbSystemCallbackException extends androidx.core.uwb.exceptions.UwbApiException {
-    ctor public UwbSystemCallbackException(String message);
-  }
-
-}
-
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbClientSessionScopeImpl.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbClientSessionScopeImpl.kt
index 86c1559..aafd713 100644
--- a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbClientSessionScopeImpl.kt
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbClientSessionScopeImpl.kt
@@ -20,10 +20,11 @@
 import androidx.core.uwb.RangingCapabilities
 import androidx.core.uwb.RangingMeasurement
 import androidx.core.uwb.RangingParameters
-import androidx.core.uwb.RangingResult.RangingResultPosition
 import androidx.core.uwb.RangingResult.RangingResultPeerDisconnected
+import androidx.core.uwb.RangingResult.RangingResultPosition
 import androidx.core.uwb.UwbAddress
 import androidx.core.uwb.UwbControleeSessionScope
+import androidx.core.uwb.helper.handleApiException
 import com.google.android.gms.common.api.ApiException
 import com.google.android.gms.nearby.uwb.RangingPosition
 import com.google.android.gms.nearby.uwb.RangingSessionCallback
@@ -32,11 +33,10 @@
 import com.google.android.gms.nearby.uwb.UwbDevice
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.flow.callbackFlow
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.tasks.await
-import androidx.core.uwb.helper.handleApiException
-import kotlinx.coroutines.channels.awaitClose
 
 internal class UwbClientSessionScopeImpl(
     private val uwbClient: UwbClient,
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt
index 4edf85e..489bef6 100644
--- a/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/impl/UwbManagerImpl.kt
@@ -30,13 +30,13 @@
 import androidx.core.uwb.UwbControllerSessionScope
 import androidx.core.uwb.UwbManager
 import androidx.core.uwb.backend.IUwb
-import com.google.android.gms.common.api.ApiException
-import com.google.android.gms.nearby.Nearby
-import kotlinx.coroutines.tasks.await
 import androidx.core.uwb.helper.checkSystemFeature
 import androidx.core.uwb.helper.handleApiException
 import com.google.android.gms.common.ConnectionResult
 import com.google.android.gms.common.GoogleApiAvailability
+import com.google.android.gms.common.api.ApiException
+import com.google.android.gms.nearby.Nearby
+import kotlinx.coroutines.tasks.await
 
 internal class UwbManagerImpl(private val context: Context) : UwbManager {
     companion object {
@@ -83,6 +83,10 @@
         Log.i(TAG, "Creating Gms Client session scope")
         val uwbClient = if (isController)
             Nearby.getUwbControllerClient(context) else Nearby.getUwbControleeClient(context)
+        if (!uwbClient.isAvailable().await()) {
+            Log.e(TAG, "Uwb availability : false")
+            throw RuntimeException("Cannot start a ranging session when UWB is unavailable")
+        }
         try {
             val nearbyLocalAddress = uwbClient.localAddress.await()
             val nearbyRangingCapabilities = uwbClient.rangingCapabilities.await()
diff --git a/credentials/credentials-play-services-auth/build.gradle b/credentials/credentials-play-services-auth/build.gradle
index 4558801..dab1da2 100644
--- a/credentials/credentials-play-services-auth/build.gradle
+++ b/credentials/credentials-play-services-auth/build.gradle
@@ -68,7 +68,7 @@
 }
 
 androidx {
-    name = "Credentials Play Services Auth Library"
+    name = "Credentials Play Services Auth"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "sign into apps using play-services-auth library"
diff --git a/credentials/credentials-play-services-auth/src/androidTest/java/androidx/credentials/playservices/beginsignin/CredentialProviderBeginSignInControllerTest.kt b/credentials/credentials-play-services-auth/src/androidTest/java/androidx/credentials/playservices/beginsignin/CredentialProviderBeginSignInControllerTest.kt
index 9652061..a783ea6 100644
--- a/credentials/credentials-play-services-auth/src/androidTest/java/androidx/credentials/playservices/beginsignin/CredentialProviderBeginSignInControllerTest.kt
+++ b/credentials/credentials-play-services-auth/src/androidTest/java/androidx/credentials/playservices/beginsignin/CredentialProviderBeginSignInControllerTest.kt
@@ -25,10 +25,10 @@
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import com.google.android.libraries.identity.googleid.GetGoogleIdOption
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import com.google.android.libraries.identity.googleid.GetGoogleIdOption
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/CredentialProviderPlayServicesImpl.kt b/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/CredentialProviderPlayServicesImpl.kt
index 3524fe2..d4dc2c5 100644
--- a/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/CredentialProviderPlayServicesImpl.kt
+++ b/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/CredentialProviderPlayServicesImpl.kt
@@ -20,8 +20,8 @@
 import android.content.Context
 import android.os.CancellationSignal
 import android.util.Log
-import androidx.credentials.ClearCredentialStateRequest
 import androidx.annotation.VisibleForTesting
+import androidx.credentials.ClearCredentialStateRequest
 import androidx.credentials.CreateCredentialRequest
 import androidx.credentials.CreateCredentialResponse
 import androidx.credentials.CreatePasswordRequest
diff --git a/credentials/credentials-provider/build.gradle b/credentials/credentials-provider/build.gradle
index 0f5fb6d..a2d506c 100644
--- a/credentials/credentials-provider/build.gradle
+++ b/credentials/credentials-provider/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "Credentials Provider Library"
+    name = "Credentials Provider"
     publish = Publish.NONE
     inceptionYear = "2022"
     description = "use utility APIs to process requests from, and return responses to the android" +
diff --git a/credentials/credentials/build.gradle b/credentials/credentials/build.gradle
index 0c8c3fb..c548aa0 100644
--- a/credentials/credentials/build.gradle
+++ b/credentials/credentials/build.gradle
@@ -47,7 +47,7 @@
 }
 
 androidx {
-    name = "Credentials Core Library"
+    name = "Credentials"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Android Credentials Library"
diff --git a/credentials/credentials/src/androidTest/java/androidx/credentials/GetCredentialRequestTest.kt b/credentials/credentials/src/androidTest/java/androidx/credentials/GetCredentialRequestTest.kt
index fafee67..1f477d4 100644
--- a/credentials/credentials/src/androidTest/java/androidx/credentials/GetCredentialRequestTest.kt
+++ b/credentials/credentials/src/androidTest/java/androidx/credentials/GetCredentialRequestTest.kt
@@ -16,13 +16,10 @@
 
 package androidx.credentials
 
-import com.google.common.truth.Truth.assertThat
-
-import org.junit.Assert.assertThrows
-
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-
+import com.google.common.truth.Truth.assertThat
+import org.junit.Assert.assertThrows
 import org.junit.Test
 import org.junit.runner.RunWith
 
diff --git a/cursoradapter/cursoradapter/build.gradle b/cursoradapter/cursoradapter/build.gradle
index 486beb8..05db38f 100644
--- a/cursoradapter/cursoradapter/build.gradle
+++ b/cursoradapter/cursoradapter/build.gradle
@@ -10,7 +10,7 @@
 }
 
 androidx {
-    name = "Android Support Library Cursor Adapter"
+    name = "Cursor Adapter"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/customview/customview-poolingcontainer/build.gradle b/customview/customview-poolingcontainer/build.gradle
index 49ae408..524083d 100644
--- a/customview/customview-poolingcontainer/build.gradle
+++ b/customview/customview-poolingcontainer/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "androidx.customview:poolingcontainer"
+    name = "CustomView Pooling Container"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.CUSTOMVIEW_POOLINGCONTAINER
     inceptionYear = "2021"
diff --git a/customview/customview/build.gradle b/customview/customview/build.gradle
index 041da7f..e184a65 100644
--- a/customview/customview/build.gradle
+++ b/customview/customview/build.gradle
@@ -20,7 +20,7 @@
 }
 
 androidx {
-    name = "Android Support Library Custom View"
+    name = "Custom View"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.CUSTOMVIEW
     inceptionYear = "2018"
diff --git a/customview/customview/src/androidTest/java/androidx/customview/widget/TestActivity.kt b/customview/customview/src/androidTest/java/androidx/customview/widget/TestActivity.kt
index 65fd739..af04aa5 100644
--- a/customview/customview/src/androidTest/java/androidx/customview/widget/TestActivity.kt
+++ b/customview/customview/src/androidTest/java/androidx/customview/widget/TestActivity.kt
@@ -18,7 +18,6 @@
 
 import android.app.Activity
 import android.os.Bundle
-
 import androidx.customview.test.R
 
 class TestActivity : Activity() {
diff --git a/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/CountActivity.kt b/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/CountActivity.kt
index ec8bea7..ff0c660 100644
--- a/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/CountActivity.kt
+++ b/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/CountActivity.kt
@@ -18,7 +18,6 @@
 
 import android.os.Bundle
 import android.os.StrictMode
-
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.compose.foundation.layout.Arrangement
diff --git a/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/data/CountRepository.kt b/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/data/CountRepository.kt
index 52a3ec0..428b189 100644
--- a/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/data/CountRepository.kt
+++ b/datastore/datastore-compose-samples/src/main/java/com/example/datastorecomposesamples/data/CountRepository.kt
@@ -27,13 +27,13 @@
 import androidx.datastore.preferences.preferencesDataStore
 import com.example.datastorecomposesamples.CountPreferences
 import java.io.File
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.catch
-import kotlinx.coroutines.flow.map
 import java.io.IOException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 
 data class CountState(val count: Int)
diff --git a/datastore/datastore-core-okio/build.gradle b/datastore/datastore-core-okio/build.gradle
index d1c5ba1..99bb8ec 100644
--- a/datastore/datastore-core-okio/build.gradle
+++ b/datastore/datastore-core-okio/build.gradle
@@ -97,7 +97,7 @@
 }
 
 androidx {
-    name = "Android DataStore Core Okio"
+    name = "DataStore Core Okio"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2020"
     description = "Android DataStore Core Okio- contains APIs to use datastore-core in multiplatform via okio"
diff --git a/datastore/datastore-core-okio/src/commonMain/kotlin/androidx/datastore/core/okio/OkioStorage.kt b/datastore/datastore-core-okio/src/commonMain/kotlin/androidx/datastore/core/okio/OkioStorage.kt
index e2ff9fb..234680e 100644
--- a/datastore/datastore-core-okio/src/commonMain/kotlin/androidx/datastore/core/okio/OkioStorage.kt
+++ b/datastore/datastore-core-okio/src/commonMain/kotlin/androidx/datastore/core/okio/OkioStorage.kt
@@ -23,9 +23,9 @@
 import androidx.datastore.core.WriteScope
 import androidx.datastore.core.createSingleProcessCoordinator
 import androidx.datastore.core.use
-import kotlinx.atomicfu.locks.synchronized
-import kotlinx.atomicfu.locks.SynchronizedObject
 import kotlinx.atomicfu.atomic
+import kotlinx.atomicfu.locks.SynchronizedObject
+import kotlinx.atomicfu.locks.synchronized
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
 import okio.FileNotFoundException
diff --git a/datastore/datastore-core-okio/src/commonTest/kotlin/androidx/datastore/core/okio/OkioStorageTest.kt b/datastore/datastore-core-okio/src/commonTest/kotlin/androidx/datastore/core/okio/OkioStorageTest.kt
index f2b88b1..11db7e0 100644
--- a/datastore/datastore-core-okio/src/commonTest/kotlin/androidx/datastore/core/okio/OkioStorageTest.kt
+++ b/datastore/datastore-core-okio/src/commonTest/kotlin/androidx/datastore/core/okio/OkioStorageTest.kt
@@ -17,6 +17,8 @@
 package androidx.datastore.core.okio
 
 import androidx.datastore.OkioTestIO
+import androidx.datastore.TestingOkioSerializer
+import androidx.datastore.TestingSerializerConfig
 import androidx.datastore.core.ReadScope
 import androidx.datastore.core.Storage
 import androidx.datastore.core.StorageConnection
@@ -24,19 +26,17 @@
 import androidx.datastore.core.readData
 import androidx.datastore.core.use
 import androidx.datastore.core.writeData
-import androidx.datastore.TestingOkioSerializer
-import androidx.datastore.TestingSerializerConfig
 import androidx.kruth.assertThat
 import androidx.kruth.assertThrows
-import kotlin.test.Test
 import kotlin.test.BeforeTest
+import kotlin.test.Test
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.async
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.yield
 import okio.FileSystem
 import okio.IOException
diff --git a/datastore/datastore-core-okio/src/nativeMain/kotlin/androidx/datastore/core/okio/Atomic.native.kt b/datastore/datastore-core-okio/src/nativeMain/kotlin/androidx/datastore/core/okio/Atomic.native.kt
index 6498e6f..a27d82f 100644
--- a/datastore/datastore-core-okio/src/nativeMain/kotlin/androidx/datastore/core/okio/Atomic.native.kt
+++ b/datastore/datastore-core-okio/src/nativeMain/kotlin/androidx/datastore/core/okio/Atomic.native.kt
@@ -16,8 +16,8 @@
 
 package androidx.datastore.core.okio
 
-import kotlinx.atomicfu.AtomicInt as AtomicFuAtomicInt
 import kotlinx.atomicfu.AtomicBoolean as AtomicFuAtomicBoolean
+import kotlinx.atomicfu.AtomicInt as AtomicFuAtomicInt
 import kotlinx.atomicfu.atomic
 
 internal actual class AtomicInt actual constructor(initialValue: Int) {
diff --git a/datastore/datastore-core/build.gradle b/datastore/datastore-core/build.gradle
index da45ae9..67e6e17 100644
--- a/datastore/datastore-core/build.gradle
+++ b/datastore/datastore-core/build.gradle
@@ -156,7 +156,7 @@
 }
 
 androidx {
-    name = "Android DataStore Core"
+    name = "DataStore Core"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2020"
     description = "Android DataStore Core - contains the underlying store used by each serialization method"
diff --git a/datastore/datastore-core/src/androidTest/java/androidx/datastore/core/SharedCounterTest.kt b/datastore/datastore-core/src/androidTest/java/androidx/datastore/core/SharedCounterTest.kt
index d7f9f21..5179249 100644
--- a/datastore/datastore-core/src/androidTest/java/androidx/datastore/core/SharedCounterTest.kt
+++ b/datastore/datastore-core/src/androidTest/java/androidx/datastore/core/SharedCounterTest.kt
@@ -26,10 +26,10 @@
 import kotlinx.coroutines.async
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.runTest
-import org.junit.Rule
-import org.junit.rules.TemporaryFolder
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
+import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/DataMigrationInitializerTest.kt b/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/DataMigrationInitializerTest.kt
index ccc6edb..c61f858 100644
--- a/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/DataMigrationInitializerTest.kt
+++ b/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/DataMigrationInitializerTest.kt
@@ -23,13 +23,12 @@
 import androidx.kruth.assertThrows
 import kotlin.test.BeforeTest
 import kotlin.test.Test
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
-
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.async
 import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
 
 @OptIn(ExperimentalCoroutinesApi::class)
diff --git a/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/SingleProcessDataStoreTest.kt b/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/SingleProcessDataStoreTest.kt
index dfa3273..6d93034 100644
--- a/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/SingleProcessDataStoreTest.kt
+++ b/datastore/datastore-core/src/commonTest/kotlin/androidx/datastore/core/SingleProcessDataStoreTest.kt
@@ -24,16 +24,24 @@
 import androidx.datastore.core.handlers.NoOpCorruptionHandler
 import androidx.kruth.assertThat
 import androidx.kruth.assertThrows
+import kotlin.coroutines.AbstractCoroutineContextElement
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.cancellation.CancellationException
+import kotlin.random.Random
+import kotlin.test.BeforeTest
+import kotlin.test.Test
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.async
 import kotlinx.coroutines.awaitCancellation
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.cancelAndJoin
 import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.flow.take
 import kotlinx.coroutines.flow.toList
@@ -41,17 +49,9 @@
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import kotlinx.coroutines.withContext
-import kotlinx.coroutines.test.runTest
-import kotlin.coroutines.AbstractCoroutineContextElement
-import kotlin.coroutines.CoroutineContext
-import kotlin.coroutines.cancellation.CancellationException
-import kotlin.random.Random
-import kotlin.test.BeforeTest
-import kotlin.test.Test
-import kotlinx.coroutines.SupervisorJob
-import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import kotlinx.coroutines.withContext
 
 @OptIn(ExperimentalCoroutinesApi::class)
 abstract class SingleProcessDataStoreTest<F : TestFile>(private val testIO: TestIO<F, *>) {
diff --git a/datastore/datastore-core/src/jvmMain/kotlin/androidx/datastore/core/DataStoreFactory.jvm.kt b/datastore/datastore-core/src/jvmMain/kotlin/androidx/datastore/core/DataStoreFactory.jvm.kt
index 285e940..5908528 100644
--- a/datastore/datastore-core/src/jvmMain/kotlin/androidx/datastore/core/DataStoreFactory.jvm.kt
+++ b/datastore/datastore-core/src/jvmMain/kotlin/androidx/datastore/core/DataStoreFactory.jvm.kt
@@ -18,10 +18,10 @@
 
 import androidx.datastore.core.handlers.NoOpCorruptionHandler
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import java.io.File
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
-import java.io.File
 
 /**
  * Public factory for creating DataStore instances.
diff --git a/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/FileStorageTest.kt b/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/FileStorageTest.kt
index 273bd30..b12adcb 100644
--- a/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/FileStorageTest.kt
+++ b/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/FileStorageTest.kt
@@ -22,15 +22,15 @@
 import java.io.File
 import java.io.IOException
 import kotlin.random.Random
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlin.test.Test
 import kotlin.test.BeforeTest
+import kotlin.test.Test
 import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.async
+import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
-import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.yield
 
 @ExperimentalCoroutinesApi
diff --git a/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/JvmTests.kt b/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/JvmTests.kt
index 033a8c9..b8a32d1 100644
--- a/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/JvmTests.kt
+++ b/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/JvmTests.kt
@@ -20,13 +20,13 @@
 import androidx.datastore.JavaIOFile
 import androidx.kruth.assertThat
 import androidx.kruth.assertThrows
+import java.io.IOException
+import java.io.InputStream
+import java.io.OutputStream
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.FlowPreview
 import kotlinx.coroutines.InternalCoroutinesApi
 import kotlinx.coroutines.ObsoleteCoroutinesApi
-import java.io.IOException
-import java.io.InputStream
-import java.io.OutputStream
 import kotlinx.coroutines.flow.first
 import org.junit.Test
 
diff --git a/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt b/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt
index c6cdd67..951f37c 100644
--- a/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt
+++ b/datastore/datastore-core/src/jvmTest/kotlin/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt
@@ -17,11 +17,11 @@
 package androidx.datastore.core.handlers
 
 import androidx.datastore.TestingSerializerConfig
-import androidx.datastore.core.FileStorage
 import androidx.datastore.core.DataStoreImpl
+import androidx.datastore.core.FileStorage
 import androidx.datastore.core.TestingSerializer
-import androidx.kruth.assertThrows
 import androidx.kruth.assertThat
+import androidx.kruth.assertThrows
 import java.io.File
 import java.io.IOException
 import java.util.concurrent.TimeUnit
diff --git a/datastore/datastore-preferences-core/build.gradle b/datastore/datastore-preferences-core/build.gradle
index a9112b0..9567f6b 100644
--- a/datastore/datastore-preferences-core/build.gradle
+++ b/datastore/datastore-preferences-core/build.gradle
@@ -119,7 +119,7 @@
 }
 
 androidx {
-    name = "Android Preferences DataStore Core"
+    name = "Preferences DataStore Core"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2020"
     description = "Android Preferences DataStore without the Android Dependencies"
diff --git a/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt b/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
index 20e6cbc..085b1a6 100644
--- a/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
+++ b/datastore/datastore-preferences-core/src/commonMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.kt
@@ -21,9 +21,9 @@
 import androidx.datastore.core.DataStore
 import androidx.datastore.core.Storage
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import kotlin.jvm.JvmOverloads
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.SupervisorJob
-import kotlin.jvm.JvmOverloads
 import okio.Path
 
 expect object PreferenceDataStoreFactory {
diff --git a/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerTest.kt b/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerTest.kt
index aa06488..b216558 100644
--- a/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerTest.kt
+++ b/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerTest.kt
@@ -19,11 +19,11 @@
 import androidx.datastore.OkioPath
 import androidx.datastore.OkioTestIO
 import androidx.datastore.core.okio.OkioSerializer
-import kotlinx.coroutines.test.runTest
-import kotlin.test.assertEquals
 import kotlin.test.BeforeTest
 import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runTest
 import okio.FileSystem
 
 @OptIn(
diff --git a/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesTest.kt b/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesTest.kt
index 7f2dc36..61d7c07 100644
--- a/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesTest.kt
+++ b/datastore/datastore-preferences-core/src/commonTest/kotlin/androidx/datastore/preferences/core/PreferencesTest.kt
@@ -17,10 +17,10 @@
 package androidx.datastore.preferences.core
 
 import kotlin.test.Test
-import kotlin.test.assertNull
-import kotlin.test.assertTrue
 import kotlin.test.assertEquals
 import kotlin.test.assertNotEquals
+import kotlin.test.assertNull
+import kotlin.test.assertTrue
 
 class PreferencesTest {
 
diff --git a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/Actual.jvm.kt b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/Actual.jvm.kt
index aaef346..1b12a57 100644
--- a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/Actual.jvm.kt
+++ b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/Actual.jvm.kt
@@ -19,7 +19,6 @@
 package androidx.datastore.preferences.core
 
 import androidx.annotation.RestrictTo
-
 import java.util.Collections
 import java.util.concurrent.atomic.AtomicBoolean
 import kotlinx.coroutines.CoroutineDispatcher
diff --git a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt
index d1bc635..d458300 100644
--- a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt
+++ b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactory.jvm.kt
@@ -23,10 +23,10 @@
 import androidx.datastore.core.Storage
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
 import androidx.datastore.core.okio.OkioStorage
+import java.io.File
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
-import java.io.File
 import okio.FileSystem
 import okio.Path
 import okio.Path.Companion.toOkioPath
diff --git a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferencesSerializer.jvm.kt b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferencesSerializer.jvm.kt
index c413194..3ba4afd 100644
--- a/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferencesSerializer.jvm.kt
+++ b/datastore/datastore-preferences-core/src/jvmMain/kotlin/androidx/datastore/preferences/core/PreferencesSerializer.jvm.kt
@@ -17,11 +17,11 @@
 package androidx.datastore.preferences.core
 
 import androidx.datastore.core.CorruptionException
-import androidx.datastore.preferences.PreferencesProto.PreferenceMap
-import androidx.datastore.preferences.PreferencesProto.Value
-import androidx.datastore.preferences.PreferencesProto.StringSet
 import androidx.datastore.core.okio.OkioSerializer
 import androidx.datastore.preferences.PreferencesMapCompat
+import androidx.datastore.preferences.PreferencesProto.PreferenceMap
+import androidx.datastore.preferences.PreferencesProto.StringSet
+import androidx.datastore.preferences.PreferencesProto.Value
 import androidx.datastore.preferences.protobuf.ByteString
 import kotlin.jvm.Throws
 import okio.BufferedSink
diff --git a/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryTest.kt b/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryTest.kt
index 89aaab4..355b3c1 100644
--- a/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryTest.kt
+++ b/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryTest.kt
@@ -18,6 +18,10 @@
 
 import androidx.datastore.core.DataMigration
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import java.io.File
+import java.lang.IllegalStateException
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.FlowPreview
 import kotlinx.coroutines.ObsoleteCoroutinesApi
 import kotlinx.coroutines.flow.first
@@ -28,10 +32,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.File
-import java.lang.IllegalStateException
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
 
 @ObsoleteCoroutinesApi
 @kotlinx.coroutines.ExperimentalCoroutinesApi
diff --git a/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerJavaTest.kt b/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerJavaTest.kt
index eed8f1f..74fb405 100644
--- a/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerJavaTest.kt
+++ b/datastore/datastore-preferences-core/src/jvmTest/kotlin/androidx/datastore/preferences/core/PreferencesSerializerJavaTest.kt
@@ -20,13 +20,13 @@
 import androidx.datastore.OkioTestIO
 import androidx.datastore.core.CorruptionException
 import androidx.datastore.core.okio.OkioSerializer
-import kotlinx.coroutines.test.runTest
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
 import kotlin.test.BeforeTest
 import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
 import kotlin.test.assertTrue
 import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runTest
 import okio.FileSystem
 
 @kotlinx.coroutines.ExperimentalCoroutinesApi
diff --git a/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt b/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt
index a0a60f2..145b556 100644
--- a/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt
+++ b/datastore/datastore-preferences-core/src/nativeTest/kotlin/androidx/datastore/preferences/core/PreferenceDataStoreFactoryNativeTest.kt
@@ -19,15 +19,15 @@
 import androidx.datastore.OkioTestIO
 import androidx.datastore.core.DataMigration
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
+import kotlin.test.BeforeTest
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
-import kotlin.test.BeforeTest
-import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
 import okio.FileSystem
 import okio.Path
 import okio.Path.Companion.toPath
diff --git a/datastore/datastore-preferences-proto/build.gradle b/datastore/datastore-preferences-proto/build.gradle
index 258630b..f599a23 100644
--- a/datastore/datastore-preferences-proto/build.gradle
+++ b/datastore/datastore-preferences-proto/build.gradle
@@ -73,7 +73,7 @@
 artifacts.add(jarjarConf.name, preferencesProtoJarJarTask.flatMap { it.archiveFile })
 
 androidx {
-    name = "Android Preferences DataStore Proto"
+    name = "Preferences DataStore Proto"
     publish = Publish.NONE
     inceptionYear = "2020"
     description = "Jarjar the generated proto and proto-lite dependency for use by " +
diff --git a/datastore/datastore-preferences-rxjava2/build.gradle b/datastore/datastore-preferences-rxjava2/build.gradle
index d58618b..f80ea3d 100644
--- a/datastore/datastore-preferences-rxjava2/build.gradle
+++ b/datastore/datastore-preferences-rxjava2/build.gradle
@@ -56,7 +56,7 @@
 }
 
 androidx {
-    name = "Android DataStore Core RxJava2 Wrappers"
+    name = "DataStore Preferences RxJava2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android DataStore Core - contains wrappers for using DataStore using RxJava2"
diff --git a/datastore/datastore-preferences-rxjava2/src/androidTest/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegateTest.kt b/datastore/datastore-preferences-rxjava2/src/androidTest/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegateTest.kt
index d307a3a..225374a 100644
--- a/datastore/datastore-preferences-rxjava2/src/androidTest/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegateTest.kt
+++ b/datastore/datastore-preferences-rxjava2/src/androidTest/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegateTest.kt
@@ -26,13 +26,13 @@
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
 import io.reactivex.Single
+import java.io.File
+import java.io.FileOutputStream
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.File
-import java.io.FileOutputStream
 
 val intKey = intPreferencesKey("int_key")
 
diff --git a/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt b/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt
index f374b78..f3540b9 100644
--- a/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt
+++ b/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt
@@ -27,12 +27,12 @@
 import androidx.datastore.rxjava2.RxDataStore
 import io.reactivex.Scheduler
 import io.reactivex.schedulers.Schedulers
+import java.io.File
+import java.util.concurrent.Callable
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.rx2.asCoroutineDispatcher
 import kotlinx.coroutines.rx2.await
-import java.io.File
-import java.util.concurrent.Callable
 
 /**
  * Builder for a Preferences RxDataStore that works on a single process.
diff --git a/datastore/datastore-preferences-rxjava3/build.gradle b/datastore/datastore-preferences-rxjava3/build.gradle
index 8461448..7a06c51 100644
--- a/datastore/datastore-preferences-rxjava3/build.gradle
+++ b/datastore/datastore-preferences-rxjava3/build.gradle
@@ -56,7 +56,7 @@
 }
 
 androidx {
-    name = "Android DataStore Core RxJava2 Wrappers"
+    name = "DataStore Preferences RxJava3"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android DataStore Core - contains wrappers for using DataStore using RxJava2"
diff --git a/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegateTest.kt b/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegateTest.kt
index d162a6f..74e85ff 100644
--- a/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegateTest.kt
+++ b/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegateTest.kt
@@ -26,13 +26,13 @@
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
 import io.reactivex.rxjava3.core.Single
+import java.io.File
+import java.io.FileOutputStream
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.File
-import java.io.FileOutputStream
 
 val intKey = intPreferencesKey("int_key")
 
diff --git a/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt b/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt
index a9cf37a..57bef8b 100644
--- a/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt
+++ b/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt
@@ -27,12 +27,12 @@
 import androidx.datastore.rxjava3.RxDataStore
 import io.reactivex.rxjava3.core.Scheduler
 import io.reactivex.rxjava3.schedulers.Schedulers
+import java.io.File
+import java.util.concurrent.Callable
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.rx3.asCoroutineDispatcher
 import kotlinx.coroutines.rx3.await
-import java.io.File
-import java.util.concurrent.Callable
 
 /**
  * Builder for a Preferences RxDataStore that works on a single process.
diff --git a/datastore/datastore-preferences/build.gradle b/datastore/datastore-preferences/build.gradle
index 37dfd741e..0bbbbe6 100644
--- a/datastore/datastore-preferences/build.gradle
+++ b/datastore/datastore-preferences/build.gradle
@@ -77,7 +77,7 @@
 
 
 androidx {
-    name = "Android Preferences DataStore"
+    name = "Preferences DataStore"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android Preferences DataStore"
diff --git a/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegateTest.kt b/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegateTest.kt
index cce1184..031ec48 100644
--- a/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegateTest.kt
+++ b/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegateTest.kt
@@ -25,6 +25,7 @@
 import androidx.datastore.preferences.core.preferencesOf
 import androidx.datastore.preferences.core.stringPreferencesKey
 import androidx.test.core.app.ApplicationProvider
+import kotlin.test.assertEquals
 import kotlinx.coroutines.FlowPreview
 import kotlinx.coroutines.ObsoleteCoroutinesApi
 import kotlinx.coroutines.flow.first
@@ -35,7 +36,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import kotlin.test.assertEquals
 
 val stringKey = stringPreferencesKey("key1")
 val booleanKey = booleanPreferencesKey("key2")
diff --git a/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreFileTest.kt b/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreFileTest.kt
index 55ac285..78989fa 100644
--- a/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreFileTest.kt
+++ b/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/PreferenceDataStoreFileTest.kt
@@ -18,9 +18,9 @@
 
 import android.content.Context
 import androidx.test.core.app.ApplicationProvider
-import org.junit.Test
 import java.io.File
 import kotlin.test.assertEquals
+import org.junit.Test
 
 public class PreferenceDataStoreFileTest {
     @Test
diff --git a/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt b/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
index 21a14d2..76f1db1 100644
--- a/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
+++ b/datastore/datastore-preferences/src/androidAndroidTest/kotlin/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
@@ -29,19 +29,19 @@
 import androidx.datastore.preferences.core.stringPreferencesKey
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.MediumTest
-import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.runBlocking
-import kotlinx.coroutines.test.runTest
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.rules.TemporaryFolder
 import java.io.File
 import kotlin.test.assertEquals
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TemporaryFolder
 
 private val sharedPrefsName = "shared_prefs_name"
 
diff --git a/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt b/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt
index 9d15f5a..7532736 100644
--- a/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt
+++ b/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt
@@ -25,11 +25,11 @@
 import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
 import androidx.datastore.preferences.core.PreferenceDataStoreFactory
 import androidx.datastore.preferences.core.Preferences
+import kotlin.properties.ReadOnlyProperty
+import kotlin.reflect.KProperty
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
-import kotlin.properties.ReadOnlyProperty
-import kotlin.reflect.KProperty
 
 /**
  * Creates a property delegate for a single process DataStore. This should only be called once
diff --git a/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/SharedPreferencesMigration.kt b/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/SharedPreferencesMigration.kt
index 635df8e..c7e8c2a 100644
--- a/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/SharedPreferencesMigration.kt
+++ b/datastore/datastore-preferences/src/androidMain/kotlin/androidx/datastore/preferences/SharedPreferencesMigration.kt
@@ -18,8 +18,8 @@
 
 import android.content.Context
 import android.content.SharedPreferences
-import androidx.datastore.migrations.SharedPreferencesView
 import androidx.datastore.migrations.SharedPreferencesMigration
+import androidx.datastore.migrations.SharedPreferencesView
 import androidx.datastore.preferences.core.Preferences
 import androidx.datastore.preferences.core.booleanPreferencesKey
 import androidx.datastore.preferences.core.floatPreferencesKey
diff --git a/datastore/datastore-proto/build.gradle b/datastore/datastore-proto/build.gradle
index a3680b0..658823c 100644
--- a/datastore/datastore-proto/build.gradle
+++ b/datastore/datastore-proto/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "Android Proto DataStore"
+    name = "Proto DataStore"
     publish = Publish.NONE
     inceptionYear = "2020"
     description = "Android Proto DataStore"
diff --git a/datastore/datastore-proto/src/test/java/androidx/datastore/protos/ProtoSerializerTest.kt b/datastore/datastore-proto/src/test/java/androidx/datastore/protos/ProtoSerializerTest.kt
index 90d38c7..f093509 100644
--- a/datastore/datastore-proto/src/test/java/androidx/datastore/protos/ProtoSerializerTest.kt
+++ b/datastore/datastore-proto/src/test/java/androidx/datastore/protos/ProtoSerializerTest.kt
@@ -17,16 +17,16 @@
 package androidx.datastore.protos
 
 import androidx.datastore.core.CorruptionException
-import org.junit.Test
-import androidx.testing.TestMessageProto.FooProto
 import androidx.testing.TestMessageProto.ExtendableProto
 import androidx.testing.TestMessageProto.ExtensionProto
+import androidx.testing.TestMessageProto.FooProto
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
 import com.google.protobuf.ExtensionRegistryLite
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.runTest
 import org.junit.Rule
+import org.junit.Test
 import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
diff --git a/datastore/datastore-rxjava2/build.gradle b/datastore/datastore-rxjava2/build.gradle
index 20edf8fb..f2354c5 100644
--- a/datastore/datastore-rxjava2/build.gradle
+++ b/datastore/datastore-rxjava2/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "Android DataStore Core RxJava2 Wrappers"
+    name = "DataStore RxJava2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android DataStore Core - contains wrappers for using DataStore using RxJava2"
diff --git a/datastore/datastore-rxjava2/src/androidTest/java/androidx/datastore/rxjava2/RxDataStoreDelegateTest.kt b/datastore/datastore-rxjava2/src/androidTest/java/androidx/datastore/rxjava2/RxDataStoreDelegateTest.kt
index f0ec624..fb05a48 100644
--- a/datastore/datastore-rxjava2/src/androidTest/java/androidx/datastore/rxjava2/RxDataStoreDelegateTest.kt
+++ b/datastore/datastore-rxjava2/src/androidTest/java/androidx/datastore/rxjava2/RxDataStoreDelegateTest.kt
@@ -22,13 +22,13 @@
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
 import io.reactivex.Single
+import java.io.File
+import java.io.FileOutputStream
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.File
-import java.io.FileOutputStream
 
 val Context.rxDataStore by rxDataStore("file1", TestingSerializer())
 
diff --git a/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStore.kt b/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStore.kt
index dfe8026..468b761 100644
--- a/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStore.kt
+++ b/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStore.kt
@@ -21,16 +21,16 @@
 import io.reactivex.Flowable
 import io.reactivex.Single
 import io.reactivex.disposables.Disposable
+import io.reactivex.functions.Function
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.async
+import kotlinx.coroutines.job
 import kotlinx.coroutines.rx2.asFlowable
 import kotlinx.coroutines.rx2.asSingle
 import kotlinx.coroutines.rx2.await
-import io.reactivex.functions.Function
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.SupervisorJob
-import kotlinx.coroutines.job
 import kotlinx.coroutines.rx2.rxCompletable
 
 /**
diff --git a/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreBuilder.kt b/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreBuilder.kt
index 1dee9d1..cf20f5e 100644
--- a/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreBuilder.kt
+++ b/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreBuilder.kt
@@ -25,12 +25,12 @@
 import androidx.datastore.dataStoreFile
 import io.reactivex.Scheduler
 import io.reactivex.schedulers.Schedulers
+import java.io.File
+import java.util.concurrent.Callable
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.rx2.asCoroutineDispatcher
 import kotlinx.coroutines.rx2.await
-import java.io.File
-import java.util.concurrent.Callable
 
 /**
  * Builder class for an RxDataStore that works on a single process.
diff --git a/datastore/datastore-rxjava3/build.gradle b/datastore/datastore-rxjava3/build.gradle
index c9bfe85..8de1572 100644
--- a/datastore/datastore-rxjava3/build.gradle
+++ b/datastore/datastore-rxjava3/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "Android DataStore Core RxJava2 Wrappers"
+    name = "DataStore RxJava3"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android DataStore Core - contains wrappers for using DataStore using RxJava2"
diff --git a/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreDelegateTest.kt b/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreDelegateTest.kt
index dadae22..aca2cd7 100644
--- a/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreDelegateTest.kt
+++ b/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreDelegateTest.kt
@@ -22,13 +22,13 @@
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
 import io.reactivex.rxjava3.core.Single
+import java.io.File
+import java.io.FileOutputStream
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.File
-import java.io.FileOutputStream
 
 val Context.rxDataStore by rxDataStore("file1", TestingSerializer())
 
diff --git a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt
index 8e05c50..68365dd 100644
--- a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt
+++ b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt
@@ -25,12 +25,12 @@
 import androidx.datastore.dataStoreFile
 import io.reactivex.rxjava3.core.Scheduler
 import io.reactivex.rxjava3.schedulers.Schedulers
+import java.io.File
+import java.util.concurrent.Callable
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.rx3.asCoroutineDispatcher
 import kotlinx.coroutines.rx3.await
-import java.io.File
-import java.util.concurrent.Callable
 
 /**
  * Builder class for an RxDataStore that works on a single process.
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/KotlinSerializationActivity.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/KotlinSerializationActivity.kt
index 1d78255..e1057f7 100644
--- a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/KotlinSerializationActivity.kt
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/KotlinSerializationActivity.kt
@@ -27,6 +27,10 @@
 import androidx.datastore.core.DataStoreFactory
 import androidx.datastore.core.Serializer
 import androidx.lifecycle.lifecycleScope
+import java.io.File
+import java.io.IOException
+import java.io.InputStream
+import java.io.OutputStream
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.distinctUntilChanged
@@ -38,11 +42,6 @@
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
 
-import java.io.File
-import java.io.IOException
-import java.io.InputStream
-import java.io.OutputStream
-
 @OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
 class KotlinSerializationActivity : AppCompatActivity() {
     private val TAG = "SerializationActivity"
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
index b8ed192..3ff3a6a 100644
--- a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
@@ -28,12 +28,12 @@
 import androidx.datastore.preferences.core.intPreferencesKey
 import androidx.datastore.preferences.preferencesDataStore
 import androidx.lifecycle.lifecycleScope
+import java.io.IOException
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
-import java.io.IOException
 
 val Context.prefsDs by preferencesDataStore("datastore_test_app")
 
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
index 1bce259..476e5be 100644
--- a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
@@ -28,15 +28,15 @@
 import androidx.datastore.core.Serializer
 import androidx.lifecycle.lifecycleScope
 import com.google.protobuf.InvalidProtocolBufferException
+import java.io.File
+import java.io.IOException
+import java.io.InputStream
+import java.io.OutputStream
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
-import java.io.File
-import java.io.IOException
-import java.io.InputStream
-import java.io.OutputStream
 
 @OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
 class ProtoDataStoreActivity : AppCompatActivity() {
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt
index 246dbae..0b68e58 100644
--- a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/SettingsFragment.kt
@@ -27,13 +27,17 @@
 import androidx.datastore.core.DataStoreFactory
 import androidx.datastore.core.Serializer
 import androidx.lifecycle.Lifecycle
-import androidx.preference.Preference
-import androidx.preference.SwitchPreference
-import androidx.preference.PreferenceFragmentCompat
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.repeatOnLifecycle
+import androidx.preference.Preference
+import androidx.preference.PreferenceFragmentCompat
+import androidx.preference.SwitchPreference
 import androidx.preference.TwoStatePreference
 import com.google.protobuf.InvalidProtocolBufferException
+import java.io.File
+import java.io.IOException
+import java.io.InputStream
+import java.io.OutputStream
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.flow.Flow
@@ -42,10 +46,6 @@
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.launch
-import java.io.File
-import java.io.IOException
-import java.io.InputStream
-import java.io.OutputStream
 
 private val TAG = "SettingsActivity"
 
diff --git a/datastore/datastore/build.gradle b/datastore/datastore/build.gradle
index d450a9b..8b4451d 100644
--- a/datastore/datastore/build.gradle
+++ b/datastore/datastore/build.gradle
@@ -106,7 +106,7 @@
 }
 
 androidx {
-    name = "Android DataStore"
+    name = "DataStore"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2020"
     description = "Android DataStore - contains the underlying store used by each serialization " +
diff --git a/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreDelegateTest.kt b/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreDelegateTest.kt
index 68b88be..11ace8e 100644
--- a/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreDelegateTest.kt
+++ b/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreDelegateTest.kt
@@ -23,6 +23,9 @@
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
+import java.io.File
+import java.io.FileOutputStream
+import java.lang.IllegalStateException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.coroutineScope
@@ -33,9 +36,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.File
-import java.io.FileOutputStream
-import java.lang.IllegalStateException
 
 val Context.globalDs by dataStore("file1", TestingSerializer())
 
diff --git a/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreFileTest.kt b/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreFileTest.kt
index 3f8806b..7eca1d1 100644
--- a/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreFileTest.kt
+++ b/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/DataStoreFileTest.kt
@@ -19,8 +19,8 @@
 import android.content.Context
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import java.io.File
+import org.junit.Test
 
 class DataStoreFileTest {
     @Test
diff --git a/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/migrations/SharedPreferencesMigrationTest.kt b/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/migrations/SharedPreferencesMigrationTest.kt
index a0a2452..51dd177 100644
--- a/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/migrations/SharedPreferencesMigrationTest.kt
+++ b/datastore/datastore/src/androidAndroidTest/kotlin/androidx/datastore/migrations/SharedPreferencesMigrationTest.kt
@@ -18,15 +18,16 @@
 
 import android.content.Context
 import android.content.SharedPreferences
+import androidx.datastore.TestingSerializer
 import androidx.datastore.core.DataMigration
 import androidx.datastore.core.DataStore
 import androidx.datastore.core.DataStoreFactory
-import androidx.datastore.TestingSerializer
 import androidx.datastore.dataStore
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.MediumTest
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
+import java.io.File
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.TestScope
@@ -36,7 +37,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
-import java.io.File
 
 private const val sharedPrefsName = "shared_prefs_name"
 
diff --git a/datastore/datastore/src/androidMain/kotlin/androidx/datastore/DataStoreDelegate.kt b/datastore/datastore/src/androidMain/kotlin/androidx/datastore/DataStoreDelegate.kt
index b53904f..aa35674 100644
--- a/datastore/datastore/src/androidMain/kotlin/androidx/datastore/DataStoreDelegate.kt
+++ b/datastore/datastore/src/androidMain/kotlin/androidx/datastore/DataStoreDelegate.kt
@@ -21,15 +21,15 @@
 import androidx.datastore.core.DataMigration
 import androidx.datastore.core.DataStore
 import androidx.datastore.core.DataStoreFactory
-import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
 import androidx.datastore.core.Serializer
+import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
 import androidx.datastore.core.okio.OkioSerializer
 import androidx.datastore.core.okio.OkioStorage
+import kotlin.properties.ReadOnlyProperty
+import kotlin.reflect.KProperty
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
-import kotlin.properties.ReadOnlyProperty
-import kotlin.reflect.KProperty
 import okio.BufferedSink
 import okio.BufferedSource
 import okio.FileSystem
diff --git a/datastore/datastore/src/androidMain/kotlin/androidx/datastore/migrations/SharedPreferencesMigration.kt b/datastore/datastore/src/androidMain/kotlin/androidx/datastore/migrations/SharedPreferencesMigration.kt
index 4fc7b7c..2bb5174 100644
--- a/datastore/datastore/src/androidMain/kotlin/androidx/datastore/migrations/SharedPreferencesMigration.kt
+++ b/datastore/datastore/src/androidMain/kotlin/androidx/datastore/migrations/SharedPreferencesMigration.kt
@@ -16,10 +16,10 @@
 
 package androidx.datastore.migrations
 
-import androidx.annotation.DoNotInline
 import android.content.Context
 import android.content.SharedPreferences
 import android.os.Build
+import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresApi
 import androidx.datastore.core.DataMigration
 import java.io.File
diff --git a/development/build_log_simplifier/message-flakes.ignore b/development/build_log_simplifier/message-flakes.ignore
index 5305b10..a1437a4 100644
--- a/development/build_log_simplifier/message-flakes.ignore
+++ b/development/build_log_simplifier/message-flakes.ignore
@@ -7,8 +7,6 @@
 ZipFile closed
 # > Task :room:integration-tests:room-testapp:runErrorProne
 java\.util\.zip\.ZipException\: ZipFile closed
-# > Task :compose:internal-lint-checks:lint
-Classpath entry points to a non\-existent location\: \$OUT_DIR\/ui\/compose\/internal\-lint\-checks\/build\/classes\/kotlin\/main
 # > Task :compose:animation:animation-core:testDebugUnitTest
 androidx\.compose\.animation\.core\.AnimationClockTest \> testSubscriptionDuringFrameCallback FAILED
 kotlin\.UninitializedPropertyAccessException at AnimationClockTest\.kt\:[0-9]+
@@ -152,4 +150,4 @@
 Using fallback strategy: Compile without Kotlin daemon
 Try \./gradlew \-\-stop if this issue persists\.
 # b/ 279739438
-w\: Detected multiple Kotlin daemon sessions at kotlin/sessions
\ No newline at end of file
+w\: Detected multiple Kotlin daemon sessions at kotlin/sessions
diff --git a/development/build_log_simplifier/messages.ignore b/development/build_log_simplifier/messages.ignore
index 10836a5..4884c02 100644
--- a/development/build_log_simplifier/messages.ignore
+++ b/development/build_log_simplifier/messages.ignore
@@ -250,6 +250,8 @@
 WARNING: link to @throws type Renderer\.GlesException does not resolve\. Is it from a package that the containing file does not import\? Is docs inherited to an un\-documented override function, but the exception class is not in scope in the inheriting class\? The general fix for these is to fully qualify the exception name,  e\.g\.`@throws java\.io\.IOException under some conditions\. This was observed in Throws\(root=CustomDocTag\(children=\[P\(children=\[Text\(body=If any GL calls fail during initialization\., children=\[\], params=\{\}\)\], params=\{\}\)\], params=\{\}, name=MARKDOWN_FILE\), name=Renderer\.GlesException, exceptionAddress=null\)\.`
 WARNING: link to @throws type ServiceStartFailureException does not resolve\. Is it from a package that the containing file does not import\? Is docs inherited to an un\-documented override function, but the exception class is not in scope in the inheriting class\? The general fix for these is to fully qualify the exception name,  e\.g\.`@throws java\.io\.IOException under some conditions\. This was observed in Throws\(root=CustomDocTag\(children=\[P\(children=\[Text\(body=if the watchface dies during startup\., children=\[\], params=\{\}\)\], params=\{\}\)\], params=\{\}, name=MARKDOWN_FILE\), name=ServiceStartFailureException, exceptionAddress=null\)\.`
 WARN: Sources for .+ is empty
+WARNING: link to @throws type UnsupportedDeviceOperationException does not resolve\. Is it from a package that the containing file does not import\? Is docs inherited to an un\-documented override function, but the exception class is not in scope in the inheriting class\? The general fix for these is to fully qualify the exception name,  e\.g\.`@throws java\.io\.IOException under some conditions\. This was observed in Throws\(root=CustomDocTag\(children=\[P\(children=\[Text\(body=if used on a real device\., children=\[\], params=\{\}\)\], params=\{\}\)\], params=\{\}, name=MARKDOWN_FILE\), name=UnsupportedDeviceOperationException, exceptionAddress=null\)\.`
+WARNING: link to @throws type DeviceControllerOperationException does not resolve\. Is it from a package that the containing file does not import\? Is docs inherited to an un\-documented override function, but the exception class is not in scope in the inheriting class\? The general fix for these is to fully qualify the exception name,  e\.g\.`@throws java\.io\.IOException under some conditions\. This was observed in Throws\(root=CustomDocTag\(children=\[P\(children=\[Text\(body=when called on a non\-foldable Emulator\., children=\[\], params=\{\}\)\], params=\{\}\)\], params=\{\}, name=MARKDOWN_FILE\), name=DeviceControllerOperationException, exceptionAddress=null\)\.`
 WARN\: Multiple sources exist for IOException\. Artifact ID metadata will not be displayed
 WARN: Missing @param tag for parameter `startActivityIntent` of function androidx\.test\.core\.app/ActivityScenario/launch/\#android\.content\.Intent\#android\.os\.Bundle/PointingToDeclaration/
 WARN: Missing @param tag for parameter `activityClass` of function androidx\.test\.core\.app/ActivityScenario/launch/\#java\.lang\.Class<A>\#android\.os\.Bundle/PointingToDeclaration/
diff --git a/development/update_studio.sh b/development/update_studio.sh
index 87535ad..60159c2 100755
--- a/development/update_studio.sh
+++ b/development/update_studio.sh
@@ -7,8 +7,8 @@
 
 # Get versions
 echo Getting Studio version and link
-AGP_VERSION=${1:-8.1.0-beta01}
-STUDIO_VERSION_STRING=${2:-"Android Studio Giraffe | 2022.3.1 Beta 1"}
+AGP_VERSION=${1:-8.1.0-beta02}
+STUDIO_VERSION_STRING=${2:-"Android Studio Giraffe | 2022.3.1 Beta 2"}
 STUDIO_IFRAME_LINK=`curl "https://developer.android.com/studio/archive.html" | grep "<iframe " | sed "s/.* src=\"\([^\"]*\)\".*/\1/g"`
 echo iframe link $STUDIO_IFRAME_LINK
 STUDIO_IFRAME_REDIRECT=`curl -s $STUDIO_IFRAME_LINK | grep href | sed 's/.*href="\([^"]*\)".*/\1/g'`
diff --git a/docs-public/build.gradle b/docs-public/build.gradle
index d082aaf..8ce18e2 100644
--- a/docs-public/build.gradle
+++ b/docs-public/build.gradle
@@ -327,7 +327,7 @@
     docs("androidx.test.espresso:espresso-accessibility:3.6.0-alpha01")
     docs("androidx.test.espresso:espresso-contrib:3.6.0-alpha01")
     docs("androidx.test.espresso:espresso-core:3.6.0-alpha01")
-    docs("androidx.test.espresso:espresso-device:1.0.0-alpha04")
+    docs("androidx.test.espresso:espresso-device:1.0.0-alpha05")
     docs("androidx.test.espresso:espresso-idling-resource:3.6.0-alpha01")
     docs("androidx.test.espresso:espresso-intents:3.6.0-alpha01")
     docs("androidx.test.espresso:espresso-remote:3.6.0-alpha01")
diff --git a/docs/api_guidelines/compat.md b/docs/api_guidelines/compat.md
index 90860c8..ca1d990 100644
--- a/docs/api_guidelines/compat.md
+++ b/docs/api_guidelines/compat.md
@@ -272,15 +272,26 @@
 cases -- may need to handle variations in platform behavior. Refer to the
 following pages for version-specific behavior changes:
 
-*   [API level 33](https://developer.android.com/about/versions/13/behavior-changes-13)
-*   [API level 31](https://developer.android.com/about/versions/12/behavior-changes-12)
-*   [API level 30](https://developer.android.com/about/versions/11/behavior-changes-11)
-*   [API level 29](https://developer.android.com/about/versions/10/behavior-changes-10)
-*   [API level 28](https://developer.android.com/about/versions/pie/android-9.0-changes-28)
-*   [API level 26](https://developer.android.com/about/versions/oreo/android-8.0-changes)
-*   [API level 24](https://developer.android.com/about/versions/nougat/android-7.0-changes)
-*   [API level 21](https://developer.android.com/about/versions/lollipop/android-5.0-changes)
-*   [API level 19](https://developer.android.com/about/versions/kitkat/android-4.4#Behaviors)
+*   Android 14,
+    [API level 34](https://developer.android.com/about/versions/14/behavior-changes-14)
+*   Android 13,
+    [API level 33](https://developer.android.com/about/versions/13/behavior-changes-13)
+*   Android 12,
+    [API level 31](https://developer.android.com/about/versions/12/behavior-changes-12)
+*   Android 11,
+    [API level 30](https://developer.android.com/about/versions/11/behavior-changes-11)
+*   Android 10,
+    [API level 29](https://developer.android.com/about/versions/10/behavior-changes-10)
+*   Android Pie (9.0),
+    [API level 28](https://developer.android.com/about/versions/pie/android-9.0-changes-28)
+*   Android Oreo (8.0),
+    [API level 26](https://developer.android.com/about/versions/oreo/android-8.0-changes)
+*   Android Nougat(7.0),
+    [API level 24](https://developer.android.com/about/versions/nougat/android-7.0-changes)
+*   Android Lollipop (5.0),
+    [API level 21](https://developer.android.com/about/versions/lollipop/android-5.0-changes)
+*   Android KitKat (4.4),
+    [API level 19](https://developer.android.com/about/versions/kitkat/android-4.4#Behaviors)
 
 #### Working around Lint issues {#compat-lint}
 
@@ -291,6 +302,22 @@
 annotation **must** be associated with an active bug, and the usage must be
 removed when the bug is resolved.
 
+#### Java 8+ APIs and core library desugaring {#compat-desugar}
+
+While the DEX compiler (D8) supports
+[API desugaring](https://developer.android.com/studio/write/java8-support-table)
+to enable usage of Java 8+ APIs on a broader range of platform API levels, there
+is currently no way for a library to express the toolchain requirements
+necessary for desugaring to work as intended.
+
+As of 2023-05-11, there is still a
+[pending feature request](https://issuetracker.google.com/203113147) to allow
+Android libraries to express these requirements.
+
+Libraries **must not** rely on `coreLibraryDesugaring` to access Java language
+APIs on earlier platform API levels. For example, `java.time.*` may only be used
+in code paths targeting API level 26 and above.
+
 ### Delegating to API-specific implementations {#delegating-to-api-specific-implementations}
 
 #### SDK-dependent reflection {#sdk-reflection}
diff --git a/documentfile/documentfile/build.gradle b/documentfile/documentfile/build.gradle
index 4993c26..f9ab3ec 100644
--- a/documentfile/documentfile/build.gradle
+++ b/documentfile/documentfile/build.gradle
@@ -17,7 +17,7 @@
 }
 
 androidx {
-    name = "Android Support Library Document File"
+    name = "Document File"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/draganddrop/draganddrop/build.gradle b/draganddrop/draganddrop/build.gradle
index 37b0365..41c3462 100644
--- a/draganddrop/draganddrop/build.gradle
+++ b/draganddrop/draganddrop/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "AndroidX Drag and Drop Library"
+    name = "Drag and Drop"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "This library makes it easy for developers to accept data dragged-and-dropped from another app, and show a consistent affordance."
diff --git a/drawerlayout/drawerlayout/build.gradle b/drawerlayout/drawerlayout/build.gradle
index 6405b31..2e717e7 100644
--- a/drawerlayout/drawerlayout/build.gradle
+++ b/drawerlayout/drawerlayout/build.gradle
@@ -22,7 +22,7 @@
 }
 
 androidx {
-    name = "Android Support Library Drawer Layout"
+    name = "Drawer Layout"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/dynamicanimation/dynamicanimation-ktx/src/androidTest/java/androidx/dynamicanimation/tests/DynamicAnimationTest.kt b/dynamicanimation/dynamicanimation-ktx/src/androidTest/java/androidx/dynamicanimation/tests/DynamicAnimationTest.kt
index 13e3a47..0486ceb 100644
--- a/dynamicanimation/dynamicanimation-ktx/src/androidTest/java/androidx/dynamicanimation/tests/DynamicAnimationTest.kt
+++ b/dynamicanimation/dynamicanimation-ktx/src/androidTest/java/androidx/dynamicanimation/tests/DynamicAnimationTest.kt
@@ -17,7 +17,6 @@
 package androidx.dynamicanimation.tests
 
 import android.view.View
-
 import androidx.dynamicanimation.animation.DynamicAnimation
 import androidx.dynamicanimation.animation.SpringForce
 import androidx.dynamicanimation.animation.flingAnimationOf
@@ -27,7 +26,6 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.platform.app.InstrumentationRegistry
-
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
diff --git a/dynamicanimation/dynamicanimation/build.gradle b/dynamicanimation/dynamicanimation/build.gradle
index b3a6d81..29f51a5 100644
--- a/dynamicanimation/dynamicanimation/build.gradle
+++ b/dynamicanimation/dynamicanimation/build.gradle
@@ -19,7 +19,7 @@
 }
 
 androidx {
-    name = "Android Support DynamicAnimation"
+    name = "DynamicAnimation"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.DYNAMICANIMATION
     inceptionYear = "2017"
diff --git a/emoji/emoji-appcompat/build.gradle b/emoji/emoji-appcompat/build.gradle
index df0af37..b0e39af 100644
--- a/emoji/emoji-appcompat/build.gradle
+++ b/emoji/emoji-appcompat/build.gradle
@@ -27,7 +27,7 @@
 }
 
 androidx {
-    name = "Android Emoji AppCompat"
+    name = "Emoji AppCompat"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.EMOJI
     inceptionYear = "2017"
diff --git a/emoji/emoji-bundled/build.gradle b/emoji/emoji-bundled/build.gradle
index d757fb1..3414c36 100644
--- a/emoji/emoji-bundled/build.gradle
+++ b/emoji/emoji-bundled/build.gradle
@@ -21,7 +21,7 @@
 }
 
 androidx {
-    name = "Android Emoji Compat"
+    name = "Emoji Bundled"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.EMOJI
     inceptionYear = "2017"
diff --git a/emoji/emoji/build.gradle b/emoji/emoji/build.gradle
index 5e135b6..cfb14e4 100644
--- a/emoji/emoji/build.gradle
+++ b/emoji/emoji/build.gradle
@@ -54,7 +54,7 @@
 }
 
 androidx {
-    name = "Android Emoji Compat"
+    name = "Emoji"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.EMOJI
     inceptionYear = "2017"
diff --git a/emoji2/emoji2-bundled/build.gradle b/emoji2/emoji2-bundled/build.gradle
index 5be609e..da5a158 100644
--- a/emoji2/emoji2-bundled/build.gradle
+++ b/emoji2/emoji2-bundled/build.gradle
@@ -46,7 +46,7 @@
 }
 
 androidx {
-    name = "Android Emoji2 Compat"
+    name = "Emoji2 Bundled"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Library bundled with assets to enable emoji compatibility in Kitkat and newer " +
diff --git a/emoji2/emoji2-emojipicker/build.gradle b/emoji2/emoji2-emojipicker/build.gradle
index 2ab0c6a..0761e00 100644
--- a/emoji2/emoji2-emojipicker/build.gradle
+++ b/emoji2/emoji2-emojipicker/build.gradle
@@ -57,7 +57,7 @@
 }
 
 androidx {
-    name = "androidx.emoji2:emoji2-emojipicker"
+    name = "Emoji2 Emoji Picker"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "This library provides the latest emoji support and emoji picker UI to input " +
diff --git a/emoji2/emoji2-emojipicker/src/androidTest/java/androidx/emoji2/emojipicker/EmojiPickerViewTest.kt b/emoji2/emoji2-emojipicker/src/androidTest/java/androidx/emoji2/emojipicker/EmojiPickerViewTest.kt
index f6bbac1..77f976d 100644
--- a/emoji2/emoji2-emojipicker/src/androidTest/java/androidx/emoji2/emojipicker/EmojiPickerViewTest.kt
+++ b/emoji2/emoji2-emojipicker/src/androidTest/java/androidx/emoji2/emojipicker/EmojiPickerViewTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.emoji2.emojipicker
 
-import androidx.emoji2.emojipicker.R as EmojiPickerViewR
 import android.app.Activity
 import android.content.Context
 import android.os.Bundle
@@ -25,6 +24,7 @@
 import android.widget.ImageView
 import androidx.core.view.children
 import androidx.core.view.isVisible
+import androidx.emoji2.emojipicker.R as EmojiPickerViewR
 import androidx.emoji2.emojipicker.test.R
 import androidx.recyclerview.widget.RecyclerView
 import androidx.test.core.app.ApplicationProvider
diff --git a/emoji2/emoji2-views-helper/build.gradle b/emoji2/emoji2-views-helper/build.gradle
index ed51ab7..62b7b69 100644
--- a/emoji2/emoji2-views-helper/build.gradle
+++ b/emoji2/emoji2-views-helper/build.gradle
@@ -27,8 +27,8 @@
 }
 
 androidx {
-    name = "Android Emoji2 Compat view helpers"
+    name = "Emoji2 Views Helper"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
-    description = "View helpers for Emoji2"
+    description = "Provide helper classes for Emoji2 views."
 }
diff --git a/emoji2/emoji2-views/build.gradle b/emoji2/emoji2-views/build.gradle
index 597d3b1..eae7eb2 100644
--- a/emoji2/emoji2-views/build.gradle
+++ b/emoji2/emoji2-views/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "Android Emoji2 Compat Views"
+    name = "Emoji2 Views"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Support for using emoji2 directly with Android Views, for use in apps without " +
diff --git a/emoji2/emoji2/build.gradle b/emoji2/emoji2/build.gradle
index f1a2cdd..3ab8724 100644
--- a/emoji2/emoji2/build.gradle
+++ b/emoji2/emoji2/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Emoji2 Compat"
+    name = "Emoji2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Core library to enable emoji compatibility in Kitkat and newer devices to avoid the empty emoji characters."
diff --git a/exifinterface/exifinterface/build.gradle b/exifinterface/exifinterface/build.gradle
index b6bcaab..12e623a 100644
--- a/exifinterface/exifinterface/build.gradle
+++ b/exifinterface/exifinterface/build.gradle
@@ -16,7 +16,7 @@
 }
 
 androidx {
-    name = "Android Support ExifInterface"
+    name = "ExifInterface"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2016"
     description = "Android Support ExifInterface"
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/DeviceConfig.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/DeviceConfig.kt
index 745753a..7345548 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/DeviceConfig.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/DeviceConfig.kt
@@ -47,13 +47,13 @@
 import com.android.resources.TouchScreen
 import com.android.resources.UiMode
 import com.google.android.collect.Maps
-import org.xmlpull.v1.XmlPullParser
-import org.xmlpull.v1.XmlPullParserException
-import org.xmlpull.v1.XmlPullParserFactory
 import java.io.File
 import java.io.FileInputStream
 import java.io.IOException
 import java.util.Properties
+import org.xmlpull.v1.XmlPullParser
+import org.xmlpull.v1.XmlPullParserException
+import org.xmlpull.v1.XmlPullParserFactory
 
 /**
  * Provides [FolderConfiguration] and [HardwareConfig] for various devices. Also provides utility
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/HtmlReportWriter.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/HtmlReportWriter.kt
index 4c1eabc..c43f4fb 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/HtmlReportWriter.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/HtmlReportWriter.kt
@@ -18,13 +18,6 @@
 import app.cash.paparazzi.SnapshotHandler.FrameHandler
 import app.cash.paparazzi.internal.PaparazziJson
 import com.google.common.base.CharMatcher
-import okio.BufferedSink
-import okio.HashingSink
-import okio.blackholeSink
-import okio.buffer
-import okio.sink
-import okio.source
-import org.jcodec.api.awt.AWTSequenceEncoder
 import java.awt.image.BufferedImage
 import java.io.File
 import java.text.SimpleDateFormat
@@ -32,6 +25,13 @@
 import java.util.Locale
 import java.util.UUID
 import javax.imageio.ImageIO
+import okio.BufferedSink
+import okio.HashingSink
+import okio.blackholeSink
+import okio.buffer
+import okio.sink
+import okio.source
+import org.jcodec.api.awt.AWTSequenceEncoder
 
 /**
  * Creates an HTML report that avoids writing files that have already been written.
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt
index 40ce39e..c6f0042 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt
@@ -70,13 +70,13 @@
 import com.android.layoutlib.bridge.BridgeRenderSession
 import com.android.layoutlib.bridge.impl.RenderAction
 import com.android.layoutlib.bridge.impl.RenderSessionImpl
-import org.junit.rules.TestRule
-import org.junit.runner.Description
-import org.junit.runners.model.Statement
 import java.awt.image.BufferedImage
 import java.util.Date
 import java.util.concurrent.TimeUnit
 import kotlin.coroutines.ContinuationInterceptor
+import org.junit.rules.TestRule
+import org.junit.runner.Description
+import org.junit.runners.model.Statement
 
 class Paparazzi @JvmOverloads constructor(
   private val environment: Environment = detectEnvironment(),
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Reflections.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Reflections.kt
index b6a4ac6..15617f0 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Reflections.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/Reflections.kt
@@ -1,9 +1,9 @@
 package app.cash.paparazzi
 
-import sun.misc.Unsafe
 import java.lang.reflect.Field
 import java.lang.reflect.Modifier
 import java.security.PrivilegedAction
+import sun.misc.Unsafe
 
 /**
  * Inspired by and ported from:
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/ImageUtils.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/ImageUtils.kt
index 8406d6d3..8e7111c 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/ImageUtils.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/ImageUtils.kt
@@ -16,9 +16,6 @@
 
 package app.cash.paparazzi.internal
 
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
-import org.junit.Assert.fail
 import java.awt.AlphaComposite
 import java.awt.Color
 import java.awt.Graphics2D
@@ -35,6 +32,9 @@
 import java.io.IOException
 import javax.imageio.ImageIO
 import kotlin.math.max
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertTrue
+import org.junit.Assert.fail
 
 /**
  * Utilities related to image processing.
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/PaparazziCallback.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/PaparazziCallback.kt
index f6e164c..6e2b62e 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/PaparazziCallback.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/PaparazziCallback.kt
@@ -30,9 +30,6 @@
 import com.android.resources.ResourceType
 import com.android.resources.ResourceType.STYLE
 import com.google.common.io.ByteStreams
-import org.kxml2.io.KXmlParser
-import org.xmlpull.v1.XmlPullParser
-import org.xmlpull.v1.XmlPullParserException
 import java.io.ByteArrayInputStream
 import java.io.ByteArrayOutputStream
 import java.io.File
@@ -40,6 +37,9 @@
 import java.io.FileNotFoundException
 import java.io.IOException
 import java.lang.reflect.Modifier
+import org.kxml2.io.KXmlParser
+import org.xmlpull.v1.XmlPullParser
+import org.xmlpull.v1.XmlPullParserException
 
 internal class PaparazziCallback(
   private val logger: PaparazziLogger,
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/LayoutPullParser.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/LayoutPullParser.kt
index dd4a7f1..8f1a94a 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/LayoutPullParser.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/LayoutPullParser.kt
@@ -24,9 +24,6 @@
 import com.android.SdkConstants.TOOLS_URI
 import com.android.ide.common.rendering.api.ILayoutPullParser
 import com.android.ide.common.rendering.api.ResourceNamespace
-import okio.buffer
-import okio.source
-import org.xmlpull.v1.XmlPullParserException
 import java.io.ByteArrayInputStream
 import java.io.File
 import java.io.FileInputStream
@@ -34,6 +31,9 @@
 import java.io.IOError
 import java.io.InputStream
 import java.nio.charset.Charset
+import okio.buffer
+import okio.source
+import org.xmlpull.v1.XmlPullParserException
 
 /**
  * A layout parser that holds an in-memory tree of a given resource for subsequent traversal
diff --git a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/ResourceParser.kt b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/ResourceParser.kt
index 574e18d..f90475b 100644
--- a/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/ResourceParser.kt
+++ b/external/paparazzi/paparazzi/src/main/java/app/cash/paparazzi/internal/parsers/ResourceParser.kt
@@ -17,8 +17,8 @@
 
 import com.android.SdkConstants.AAPT_URI
 import com.android.SdkConstants.TAG_ATTR
-import org.kxml2.io.KXmlParser
 import java.io.InputStream
+import org.kxml2.io.KXmlParser
 
 /**
  * An XML resource parser that creates a tree of [TagSnapshot]s
diff --git a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/HtmlReportWriterTest.kt b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/HtmlReportWriterTest.kt
index dc38b1c..80979c7 100644
--- a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/HtmlReportWriterTest.kt
+++ b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/HtmlReportWriterTest.kt
@@ -15,10 +15,6 @@
  */
 package app.cash.paparazzi
 
-import org.assertj.core.api.Assertions.assertThat
-import org.junit.Rule
-import org.junit.Test
-import org.junit.rules.TemporaryFolder
 import java.awt.image.BufferedImage
 import java.io.File
 import java.nio.file.Files
@@ -27,6 +23,10 @@
 import java.nio.file.attribute.FileTime
 import java.time.Instant
 import java.util.Date
+import org.assertj.core.api.Assertions.assertThat
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TemporaryFolder
 
 class HtmlReportWriterTest {
   @get:Rule
diff --git a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt
index 498d456..356a6c8 100644
--- a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt
+++ b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt
@@ -27,11 +27,11 @@
 import android.view.animation.LinearInterpolator
 import android.widget.Button
 import com.android.internal.lang.System_Delegate
+import java.util.concurrent.TimeUnit
 import org.assertj.core.api.Assertions.assertThat
 import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
-import java.util.concurrent.TimeUnit
 
 class PaparazziTest {
   @get:Rule
diff --git a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/RenderingModeTest.kt b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/RenderingModeTest.kt
index c67ab76..d774099 100644
--- a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/RenderingModeTest.kt
+++ b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/RenderingModeTest.kt
@@ -11,12 +11,12 @@
 import android.widget.TextView
 import app.cash.paparazzi.internal.ImageUtils
 import com.android.ide.common.rendering.api.SessionParams
-import org.junit.Test
-import org.junit.runner.Description
 import java.awt.image.BufferedImage
 import java.io.File
 import javax.imageio.ImageIO
 import org.junit.Ignore
+import org.junit.Test
+import org.junit.runner.Description
 
 class RenderingModeTest {
 
diff --git a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/accessibility/AccessibilityRenderExtensionTest.kt b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/accessibility/AccessibilityRenderExtensionTest.kt
index 6399c8c..b9afe6e 100644
--- a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/accessibility/AccessibilityRenderExtensionTest.kt
+++ b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/accessibility/AccessibilityRenderExtensionTest.kt
@@ -16,12 +16,12 @@
 import app.cash.paparazzi.Snapshot
 import app.cash.paparazzi.SnapshotHandler
 import app.cash.paparazzi.internal.ImageUtils
-import org.junit.Rule
-import org.junit.Test
 import java.awt.image.BufferedImage
 import java.io.File
 import javax.imageio.ImageIO
 import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
 
 class AccessibilityRenderExtensionTest {
   private val snapshotHandler = TestSnapshotVerifier()
diff --git a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/internal/PaparazziLoggerTest.kt b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/internal/PaparazziLoggerTest.kt
index e1ab916..89d7823 100644
--- a/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/internal/PaparazziLoggerTest.kt
+++ b/external/paparazzi/paparazzi/src/test/java/app/cash/paparazzi/internal/PaparazziLoggerTest.kt
@@ -1,10 +1,10 @@
 package app.cash.paparazzi.internal
 
 import app.cash.paparazzi.internal.PaparazziLogger.MultipleFailuresException
+import java.io.FileNotFoundException
 import org.assertj.core.api.Assertions.assertThat
 import org.assertj.core.api.Assertions.fail
 import org.junit.Test
-import java.io.FileNotFoundException
 
 class PaparazziLoggerTest {
   @Test
diff --git a/fragment/fragment-lint/build.gradle b/fragment/fragment-lint/build.gradle
index 9a091e2..b4f8162 100644
--- a/fragment/fragment-lint/build.gradle
+++ b/fragment/fragment-lint/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "Android Fragment Lint Checks"
+    name = "Fragment Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2019"
     description = "Android Fragment Lint Checks"
diff --git a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentTagDetector.kt b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentTagDetector.kt
index ac26747..8a5cd4c 100644
--- a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentTagDetector.kt
+++ b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/FragmentTagDetector.kt
@@ -26,8 +26,8 @@
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.XmlContext
-import org.w3c.dom.Element
 import java.util.Collections
+import org.w3c.dom.Element
 
 /**
  * Lint check for detecting use of fragment tag in layout xml files. This provides a warning that
diff --git a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/UseRequireInsteadOfGet.kt b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/UseRequireInsteadOfGet.kt
index 9529d0c..0e8b728c 100644
--- a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/UseRequireInsteadOfGet.kt
+++ b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/UseRequireInsteadOfGet.kt
@@ -29,6 +29,7 @@
 import com.android.tools.lint.detector.api.isKotlin
 import com.intellij.psi.PsiClass
 import com.intellij.psi.PsiMethod
+import java.util.Locale
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.UElement
 import org.jetbrains.uast.UExpression
@@ -42,7 +43,6 @@
 import org.jetbrains.uast.skipParenthesizedExprUp
 import org.jetbrains.uast.toUElement
 import org.jetbrains.uast.tryResolve
-import java.util.Locale
 
 /**
  * Androidx added new "require____()" versions of common "get___()" APIs, such as
diff --git a/fragment/fragment-testing-lint/build.gradle b/fragment/fragment-testing-lint/build.gradle
index 91a6a84..a9641c7 100644
--- a/fragment/fragment-testing-lint/build.gradle
+++ b/fragment/fragment-testing-lint/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "Android Fragment-Testing Lint Checks"
+    name = "Fragment-Testing Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2019"
     description = "Lint Checks for the Fragment Testing module"
diff --git a/fragment/fragment-testing-manifest-lint/build.gradle b/fragment/fragment-testing-manifest-lint/build.gradle
index 3f8af05..9b4b9f4 100644
--- a/fragment/fragment-testing-manifest-lint/build.gradle
+++ b/fragment/fragment-testing-manifest-lint/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "Android Fragment-Testing-Manifest Lint Checks"
+    name = "Fragment-Testing-Manifest Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2022"
     description = "Lint Checks for the Fragment Testing Manifest module"
diff --git a/fragment/fragment-testing/build.gradle b/fragment/fragment-testing/build.gradle
index 4ef2ed4..0230108 100644
--- a/fragment/fragment-testing/build.gradle
+++ b/fragment/fragment-testing/build.gradle
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "Fragment Test Extensions"
+    name = "Fragment Testing Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Extensions for testing 'fragment' artifact"
diff --git a/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioViewModelTest.kt b/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioViewModelTest.kt
index d88bcba..2ff83ba 100644
--- a/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioViewModelTest.kt
+++ b/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioViewModelTest.kt
@@ -25,8 +25,8 @@
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
+import org.mockito.Mockito.`when`
 
 /**
  * End-to-end integration test using a mock [ViewModel] injected in via a
diff --git a/fragment/fragment/build.gradle b/fragment/fragment/build.gradle
index 91b6c0f..e2863b8 100644
--- a/fragment/fragment/build.gradle
+++ b/fragment/fragment/build.gradle
@@ -71,7 +71,7 @@
 }
 
 androidx {
-    name = "Android Support Library fragment"
+    name = "fragment"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2011"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren\'t a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/ChildFragmentStateTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/ChildFragmentStateTest.kt
index f9ed241..cdb4b07 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/ChildFragmentStateTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/ChildFragmentStateTest.kt
@@ -23,7 +23,6 @@
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
 import leakcanary.DetectLeaksAfterTestSuccess
-
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.RuleChain
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.kt
index e312fa9..c2dea61 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentAnimationTest.kt
@@ -39,14 +39,14 @@
 import androidx.testutils.waitForExecution
 import androidx.testutils.withActivity
 import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import leakcanary.DetectLeaksAfterTestSuccess
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
 import org.junit.rules.RuleChain
+import org.junit.runner.RunWith
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt
index 9afccb3..7874c18 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentContainerViewTest.kt
@@ -39,15 +39,15 @@
 import androidx.testutils.waitForExecution
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import leakcanary.DetectLeaksAfterTestSuccess
 import org.junit.Assert.fail
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
-import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import leakcanary.DetectLeaksAfterTestSuccess
 import org.junit.rules.RuleChain
+import org.junit.runner.RunWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentReceiveResultTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentReceiveResultTest.kt
index b897a54..9567a88 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentReceiveResultTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentReceiveResultTest.kt
@@ -29,14 +29,14 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import org.junit.Assert.fail
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import leakcanary.DetectLeaksAfterTestSuccess
+import org.junit.Assert.fail
+import org.junit.Rule
+import org.junit.Test
 import org.junit.rules.RuleChain
+import org.junit.runner.RunWith
 
 /**
  * Tests for Fragment startActivityForResult and startIntentSenderForResult.
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStateManagerTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStateManagerTest.kt
index 1af6505..b8096d2 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStateManagerTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentStateManagerTest.kt
@@ -25,7 +25,6 @@
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
-
 import org.junit.runner.RunWith
 import org.mockito.Mockito.mock
 
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.kt
index e10aa608..2f174b5 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentTransitionTest.kt
@@ -38,17 +38,17 @@
 import androidx.testutils.withUse
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import org.junit.After
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import leakcanary.DetectLeaksAfterTestSuccess
+import org.junit.After
 import org.junit.Assert.fail
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
 import org.junit.rules.RuleChain
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @MediumTest
 @RunWith(Parameterized::class)
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/NestedFragmentTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/NestedFragmentTest.kt
index 5004ac0..e7a22a9 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/NestedFragmentTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/NestedFragmentTest.kt
@@ -26,13 +26,13 @@
 import androidx.test.filters.LargeTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import leakcanary.DetectLeaksAfterTestSuccess
+import org.junit.Rule
+import org.junit.Test
 import org.junit.rules.RuleChain
+import org.junit.runner.RunWith
 
 @Suppress("DEPRECATION")
 @RunWith(AndroidJUnit4::class)
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.kt
index fb7c81e..c5378713 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/PostponedTransitionTest.kt
@@ -33,13 +33,13 @@
 import androidx.testutils.waitForExecution
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import leakcanary.DetectLeaksAfterTestSuccess
+import org.junit.Rule
+import org.junit.Test
 import org.junit.rules.RuleChain
+import org.junit.runner.RunWith
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/test/NewIntentActivity.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/test/NewIntentActivity.kt
index cbd332d..bdccc7a 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/test/NewIntentActivity.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/test/NewIntentActivity.kt
@@ -18,10 +18,8 @@
 
 import android.content.Intent
 import android.os.Bundle
-
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
-
 import java.util.concurrent.CountDownLatch
 
 class NewIntentActivity : FragmentActivity() {
diff --git a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentContainerView.kt b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentContainerView.kt
index 2f826a4..c659047 100644
--- a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentContainerView.kt
+++ b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentContainerView.kt
@@ -15,8 +15,6 @@
  */
 package androidx.fragment.app
 
-import android.widget.FrameLayout
-import androidx.fragment.R
 import android.animation.LayoutTransition
 import android.content.Context
 import android.graphics.Canvas
@@ -25,10 +23,12 @@
 import android.view.View
 import android.view.ViewGroup
 import android.view.WindowInsets
+import android.widget.FrameLayout
 import androidx.annotation.RequiresApi
 import androidx.core.content.withStyledAttributes
 import androidx.core.view.ViewCompat
 import androidx.core.view.WindowInsetsCompat
+import androidx.fragment.R
 
 /**
  * FragmentContainerView is a customized Layout designed specifically for Fragments. It extends
diff --git a/glance/glance-appwidget-preview/build.gradle b/glance/glance-appwidget-preview/build.gradle
index 07567f5..392729b 100644
--- a/glance/glance-appwidget-preview/build.gradle
+++ b/glance/glance-appwidget-preview/build.gradle
@@ -14,19 +14,15 @@
  * limitations under the License.
  */
 
-import androidx.build.AndroidXComposePlugin
 import androidx.build.LibraryType
-import androidx.build.Publish
 
 plugins {
     id("AndroidXComposePlugin")
     id("AndroidXPlugin")
+    id("org.jetbrains.kotlin.android")
     id("com.android.library")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
 
     api(libs.kotlinStdlib)
@@ -52,7 +48,7 @@
 }
 
 androidx {
-    name = "Android Glance AppWidget Preview"
+    name = "Glance AppWidget Preview"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.GLANCE_PREVIEW
     inceptionYear = "2022"
diff --git a/glance/glance-appwidget-preview/src/androidAndroidTest/AndroidManifest.xml b/glance/glance-appwidget-preview/src/androidTest/AndroidManifest.xml
similarity index 100%
rename from glance/glance-appwidget-preview/src/androidAndroidTest/AndroidManifest.xml
rename to glance/glance-appwidget-preview/src/androidTest/AndroidManifest.xml
diff --git a/glance/glance-appwidget-preview/src/androidAndroidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetPreviews.kt b/glance/glance-appwidget-preview/src/androidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetPreviews.kt
similarity index 99%
rename from glance/glance-appwidget-preview/src/androidAndroidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetPreviews.kt
rename to glance/glance-appwidget-preview/src/androidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetPreviews.kt
index 5d35a4f..de68697 100644
--- a/glance/glance-appwidget-preview/src/androidAndroidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetPreviews.kt
+++ b/glance/glance-appwidget-preview/src/androidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetPreviews.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.unit.dp
-import androidx.glance.action.Action
 import androidx.glance.Button
 import androidx.glance.GlanceModifier
+import androidx.glance.action.Action
 import androidx.glance.appwidget.appWidgetBackground
 import androidx.glance.layout.Alignment
 import androidx.glance.layout.Column
diff --git a/glance/glance-appwidget-preview/src/androidAndroidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapterTest.kt b/glance/glance-appwidget-preview/src/androidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapterTest.kt
similarity index 99%
rename from glance/glance-appwidget-preview/src/androidAndroidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapterTest.kt
rename to glance/glance-appwidget-preview/src/androidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapterTest.kt
index 92d17b07..20f1961 100644
--- a/glance/glance-appwidget-preview/src/androidAndroidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapterTest.kt
+++ b/glance/glance-appwidget-preview/src/androidTest/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapterTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.glance.appwidget.preview
 
-import androidx.glance.appwidget.preview.test.R
 import android.app.Activity
 import android.os.Bundle
 import android.view.View
@@ -26,6 +25,7 @@
 import android.widget.LinearLayout
 import android.widget.RelativeLayout
 import android.widget.TextView
+import androidx.glance.appwidget.preview.test.R
 import androidx.test.filters.MediumTest
 import org.junit.Assert.assertNotNull
 import org.junit.Before
diff --git a/glance/glance-appwidget-preview/src/androidAndroidTest/res/layout/glance_appwidget_adapter_test.xml b/glance/glance-appwidget-preview/src/androidTest/res/layout/glance_appwidget_adapter_test.xml
similarity index 100%
rename from glance/glance-appwidget-preview/src/androidAndroidTest/res/layout/glance_appwidget_adapter_test.xml
rename to glance/glance-appwidget-preview/src/androidTest/res/layout/glance_appwidget_adapter_test.xml
diff --git a/glance/glance-appwidget-preview/src/androidAndroidTest/res/values/styles.xml b/glance/glance-appwidget-preview/src/androidTest/res/values/styles.xml
similarity index 100%
rename from glance/glance-appwidget-preview/src/androidAndroidTest/res/values/styles.xml
rename to glance/glance-appwidget-preview/src/androidTest/res/values/styles.xml
diff --git a/glance/glance-appwidget-preview/src/androidMain/kotlin/androidx/glance/appwidget/preview/ComposableInvoker.kt b/glance/glance-appwidget-preview/src/main/java/androidx/glance/appwidget/preview/ComposableInvoker.kt
similarity index 100%
rename from glance/glance-appwidget-preview/src/androidMain/kotlin/androidx/glance/appwidget/preview/ComposableInvoker.kt
rename to glance/glance-appwidget-preview/src/main/java/androidx/glance/appwidget/preview/ComposableInvoker.kt
diff --git a/glance/glance-appwidget-preview/src/androidMain/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapter.kt b/glance/glance-appwidget-preview/src/main/java/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapter.kt
similarity index 99%
rename from glance/glance-appwidget-preview/src/androidMain/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapter.kt
rename to glance/glance-appwidget-preview/src/main/java/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapter.kt
index fab1843..53c5222 100644
--- a/glance/glance-appwidget-preview/src/androidMain/kotlin/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapter.kt
+++ b/glance/glance-appwidget-preview/src/main/java/androidx/glance/appwidget/preview/GlanceAppWidgetViewAdapter.kt
@@ -19,14 +19,12 @@
 import android.appwidget.AppWidgetHostView
 import android.content.Context
 import android.util.AttributeSet
-
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.currentComposer
 import androidx.compose.ui.unit.DpSize
 import androidx.glance.appwidget.ExperimentalGlanceRemoteViewsApi
 import androidx.glance.appwidget.GlanceRemoteViews
 import androidx.glance.appwidget.preview.ComposableInvoker.invokeComposable
-
 import kotlinx.coroutines.runBlocking
 
 private const val TOOLS_NS_URI = "http://schemas.android.com/tools"
diff --git a/glance/glance-appwidget/build.gradle b/glance/glance-appwidget/build.gradle
index 158c764..4b59ee3 100644
--- a/glance/glance-appwidget/build.gradle
+++ b/glance/glance-appwidget/build.gradle
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-import androidx.build.AndroidXComposePlugin
 import androidx.build.BundleInsideHelper
 import androidx.build.LibraryType
 import androidx.glance.appwidget.layoutgenerator.gradle.LayoutGeneratorTask
 
 plugins {
     id("AndroidXPlugin")
+    id("org.jetbrains.kotlin.android")
     id("com.android.library")
     id("AndroidXComposePlugin")
     id("com.google.protobuf")
@@ -32,9 +32,6 @@
         /* to =   */ "androidx.glance.appwidget.protobuf"
 )
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */ false)
-
 dependencies {
     bundleInside(project(path: ":glance:glance-appwidget-proto", configuration: "export"))
 
@@ -121,6 +118,6 @@
 LayoutGeneratorTask.registerLayoutGenerator(
         project,
         android,
-        /* containerLayoutDirectory= */ file("src/androidMain/layoutTemplates"),
-        /* childLayoutDirectory= */ file("src/androidMain/res/layout")
+        /* containerLayoutDirectory= */ file("src/main/layoutTemplates"),
+        /* childLayoutDirectory= */ file("src/main/res/layout")
 )
diff --git a/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/GenerateRegistry.kt b/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/GenerateRegistry.kt
index ccbb397..9886504 100644
--- a/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/GenerateRegistry.kt
+++ b/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/GenerateRegistry.kt
@@ -23,8 +23,8 @@
 import com.squareup.kotlinpoet.FunSpec
 import com.squareup.kotlinpoet.INT
 import com.squareup.kotlinpoet.KModifier
-import com.squareup.kotlinpoet.KModifier.PRIVATE
 import com.squareup.kotlinpoet.KModifier.INTERNAL
+import com.squareup.kotlinpoet.KModifier.PRIVATE
 import com.squareup.kotlinpoet.MemberName
 import com.squareup.kotlinpoet.MemberName.Companion.member
 import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
diff --git a/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/LayoutGenerator.kt b/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/LayoutGenerator.kt
index 480095c4..aae62fc 100644
--- a/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/LayoutGenerator.kt
+++ b/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/LayoutGenerator.kt
@@ -17,14 +17,14 @@
 package androidx.glance.appwidget.layoutgenerator
 
 import com.squareup.kotlinpoet.MemberName
-import org.w3c.dom.Document
-import org.w3c.dom.Node
 import java.io.File
 import javax.xml.parsers.DocumentBuilderFactory
 import javax.xml.transform.OutputKeys
 import javax.xml.transform.TransformerFactory
 import javax.xml.transform.dom.DOMSource
 import javax.xml.transform.stream.StreamResult
+import org.w3c.dom.Document
+import org.w3c.dom.Node
 
 /**
  * Generate the layouts from the templates provided to the task.
diff --git a/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/gradle/LayoutGeneratorTask.kt b/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/gradle/LayoutGeneratorTask.kt
index fbe5c31..75f6129 100644
--- a/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/gradle/LayoutGeneratorTask.kt
+++ b/glance/glance-appwidget/glance-layout-generator/src/main/kotlin/androidx/glance/appwidget/layoutgenerator/gradle/LayoutGeneratorTask.kt
@@ -21,6 +21,7 @@
 import androidx.glance.appwidget.layoutgenerator.cleanResources
 import androidx.glance.appwidget.layoutgenerator.generateRegistry
 import com.android.build.gradle.LibraryExtension
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
 import org.gradle.api.file.DirectoryProperty
@@ -30,7 +31,6 @@
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
-import java.io.File
 
 /**
  * Task generating the layouts from a set of Layout templates.
diff --git a/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/CompoundButtonAppWidget.kt b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/CompoundButtonAppWidget.kt
index 597ba89..6c4eaec 100644
--- a/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/CompoundButtonAppWidget.kt
+++ b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/CompoundButtonAppWidget.kt
@@ -37,8 +37,8 @@
 import androidx.glance.appwidget.SwitchDefaults
 import androidx.glance.appwidget.appWidgetBackground
 import androidx.glance.appwidget.cornerRadius
-import androidx.glance.appwidget.selectableGroup
 import androidx.glance.appwidget.provideContent
+import androidx.glance.appwidget.selectableGroup
 import androidx.glance.background
 import androidx.glance.color.ColorProvider
 import androidx.glance.layout.Alignment
diff --git a/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/ScrollableAppWidget.kt b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/ScrollableAppWidget.kt
index 447d079..dcb80bb 100644
--- a/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/ScrollableAppWidget.kt
+++ b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/ScrollableAppWidget.kt
@@ -16,13 +16,13 @@
 
 package androidx.glance.appwidget.demos
 
-import androidx.compose.material.Text as ComposeText
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
 import android.util.Log
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
+import androidx.compose.material.Text as ComposeText
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
diff --git a/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/VerticalGridAppWidget.kt b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/VerticalGridAppWidget.kt
index 23d3804..ef88370 100644
--- a/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/VerticalGridAppWidget.kt
+++ b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/VerticalGridAppWidget.kt
@@ -17,8 +17,8 @@
 package androidx.glance.appwidget.demos
 
 import android.content.Context
-import android.os.Build
 import android.content.Intent
+import android.os.Build
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.unit.dp
 import androidx.glance.Button
diff --git a/glance/glance-appwidget/lint-baseline.xml b/glance/glance-appwidget/lint-baseline.xml
index e61bfc7..805d083 100644
--- a/glance/glance-appwidget/lint-baseline.xml
+++ b/glance/glance-appwidget/lint-baseline.xml
@@ -7,7 +7,7 @@
         errorLine1="        Thread.sleep(5000)"
         errorLine2="               ~~~~~">
         <location
-            file="src/androidAndroidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt"/>
+            file="src/androidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt"/>
     </issue>
 
     <issue
@@ -16,7 +16,7 @@
         errorLine1="                        Thread.sleep(500)"
         errorLine2="                               ~~~~~">
         <location
-            file="src/androidAndroidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt"/>
+            file="src/androidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt"/>
     </issue>
 
     <issue
@@ -25,7 +25,7 @@
         errorLine1="            Thread.sleep(sleepMs)"
         errorLine2="                   ~~~~~">
         <location
-            file="src/androidAndroidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt"/>
+            file="src/androidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt"/>
     </issue>
 
     <issue
@@ -34,7 +34,7 @@
         errorLine1="            Thread.sleep(interval)"
         errorLine2="                   ~~~~~">
         <location
-            file="src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt"/>
+            file="src/androidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt"/>
     </issue>
 
 </issues>
diff --git a/glance/glance-appwidget/samples/src/main/java/androidx/glance/appwidget/samples/GlanceAppWidgetSamples.kt b/glance/glance-appwidget/samples/src/main/java/androidx/glance/appwidget/samples/GlanceAppWidgetSamples.kt
index 43fec19..c290ed7 100644
--- a/glance/glance-appwidget/samples/src/main/java/androidx/glance/appwidget/samples/GlanceAppWidgetSamples.kt
+++ b/glance/glance-appwidget/samples/src/main/java/androidx/glance/appwidget/samples/GlanceAppWidgetSamples.kt
@@ -24,13 +24,17 @@
 import androidx.glance.text.Text
 
 @Sampled
-suspend fun GlanceAppWidget.provideGlanceSample(
-    @Suppress("UNUSED_PARAMETER") context: Context,
-    @Suppress("UNUSED_PARAMETER") id: GlanceId,
-) {
-    // Load data needed to render the AppWidget.
-    provideContent {
-        // create your AppWidget here
-        Text("Hello World")
+fun provideGlanceSample() {
+    class MyWidget : GlanceAppWidget() {
+        override suspend fun provideGlance(context: Context, id: GlanceId) {
+            // Load data needed to render the AppWidget here. Prefer doing heavy work before
+            // provideContent, as the provideGlance function will timeout shortly after
+            // provideContent is called.
+
+            provideContent {
+                // Declare your @Composable layout here.
+                Text("Hello World")
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/glance/glance-appwidget/src/androidAndroidTest/AndroidManifest.xml b/glance/glance-appwidget/src/androidTest/AndroidManifest.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/AndroidManifest.xml
rename to glance/glance-appwidget/src/androidTest/AndroidManifest.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/AndroidTestUtils.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/AndroidTestUtils.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/AndroidTestUtils.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/AndroidTestUtils.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/AppWidgetHostRule.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/AppWidgetHostTestActivity.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/AppWidgetHostTestActivity.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/AppWidgetHostTestActivity.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/AppWidgetHostTestActivity.kt
index e8dc6c6..f42506b 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/AppWidgetHostTestActivity.kt
+++ b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/AppWidgetHostTestActivity.kt
@@ -35,13 +35,13 @@
 import android.widget.FrameLayout
 import android.widget.RemoteViews
 import androidx.annotation.RequiresApi
-import androidx.glance.appwidget.test.R
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
-import org.junit.Assert.fail
+import androidx.glance.appwidget.test.R
 import java.util.Locale
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Assert.fail
 
 private const val TAG = "AppWidgetHostTestActivity"
 
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/CheckBoxTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/CheckBoxTest.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/CheckBoxTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/CheckBoxTest.kt
index 29ea48be..8b42c7c 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/CheckBoxTest.kt
+++ b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/CheckBoxTest.kt
@@ -31,10 +31,10 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
-import org.junit.Rule
-import org.junit.Test
 import kotlin.test.assertIs
 import kotlin.test.assertNotNull
+import org.junit.Rule
+import org.junit.Test
 
 @SdkSuppress(minSdkVersion = 29)
 @MediumTest
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt
index 40ad5f8..74454f9 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt
+++ b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiverTest.kt
@@ -26,9 +26,6 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.isActive
-import org.junit.Test
 import java.io.FileInputStream
 import java.nio.charset.StandardCharsets
 import java.time.Duration
@@ -37,6 +34,9 @@
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.atomic.AtomicReference
 import kotlin.math.min
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.isActive
+import org.junit.Test
 
 @SdkSuppress(minSdkVersion = 26)
 class CoroutineBroadcastReceiverTest {
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetManagerTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetManagerTest.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetManagerTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetManagerTest.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverScreenshotTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverScreenshotTest.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverScreenshotTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverScreenshotTest.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiverTest.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceRemoteViewsTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceRemoteViewsTest.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/GlanceRemoteViewsTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/GlanceRemoteViewsTest.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/LazyColumnTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/LazyColumnTest.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/LazyColumnTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/LazyColumnTest.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/RemoteCollectionItemsTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/RemoteCollectionItemsTest.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/RemoteCollectionItemsTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/RemoteCollectionItemsTest.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/ResourceResolutionTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/ResourceResolutionTest.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/ResourceResolutionTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/ResourceResolutionTest.kt
index c733193..35ef162 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/ResourceResolutionTest.kt
+++ b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/ResourceResolutionTest.kt
@@ -28,9 +28,9 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertNotNull
 import org.junit.Rule
 import org.junit.Test
-import kotlin.test.assertNotNull
 
 @SdkSuppress(minSdkVersion = 29)
 @MediumTest
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/ScreenshotsTests.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/ScreenshotsTests.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/ScreenshotsTests.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/ScreenshotsTests.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
similarity index 96%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
index 0caab64..a2f2e22 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
+++ b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
@@ -36,6 +36,7 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth
+import java.util.Arrays
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
@@ -65,7 +66,9 @@
                 .penaltyListener(executor) {
                     Log.e("StrictModeTest", "Logging violation:")
                     Log.e("StrictModeTest", "$it")
-                    Log.e("StrictModeTest", "Stack trace: ${it.stackTrace}", it.cause)
+                    Log.e("StrictModeTest", "Stack trace: ${Arrays.toString(it.stackTrace)}",
+                        it.cause)
+                    Log.e("StrictModeTest", "${it.cause}", it.cause)
                     fail("Received violation: $it")
                 }.build()
         )
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/TestGlanceAppWidgetReceiver.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/TestGlanceAppWidgetReceiver.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/TestGlanceAppWidgetReceiver.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/TestGlanceAppWidgetReceiver.kt
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/WithNightMode.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/WithNightMode.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/WithNightMode.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/WithNightMode.kt
index 45492af..cf36c45 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/WithNightMode.kt
+++ b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/WithNightMode.kt
@@ -18,11 +18,11 @@
 
 import android.content.res.Configuration
 import android.os.Build
+import java.lang.reflect.AnnotatedElement
+import java.lang.reflect.Method
 import org.junit.rules.TestRule
 import org.junit.runner.Description
 import org.junit.runners.model.Statement
-import java.lang.reflect.AnnotatedElement
-import java.lang.reflect.Method
 
 /**
  * Annotation for specifying a per-test or per-method override of the device night mode
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/WithRtl.kt b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/WithRtl.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/WithRtl.kt
rename to glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/WithRtl.kt
index b15b830..b7f7961 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/WithRtl.kt
+++ b/glance/glance-appwidget/src/androidTest/kotlin/androidx/glance/appwidget/WithRtl.kt
@@ -16,12 +16,12 @@
 
 package androidx.glance.appwidget
 
-import org.junit.rules.TestRule
-import org.junit.runner.Description
-import org.junit.runners.model.Statement
 import java.lang.reflect.AnnotatedElement
 import java.lang.reflect.Method
 import java.util.Locale
+import org.junit.rules.TestRule
+import org.junit.runner.Description
+import org.junit.runners.model.Statement
 
 /**
  * Annotation for specifying a per-test or per-method override of the default locale. Multiple
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/drawable/compose.png b/glance/glance-appwidget/src/androidTest/res/drawable/compose.png
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/drawable/compose.png
rename to glance/glance-appwidget/src/androidTest/res/drawable/compose.png
Binary files differ
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/drawable/filled_oval.xml b/glance/glance-appwidget/src/androidTest/res/drawable/filled_oval.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/drawable/filled_oval.xml
rename to glance/glance-appwidget/src/androidTest/res/drawable/filled_oval.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/drawable/oval.xml b/glance/glance-appwidget/src/androidTest/res/drawable/oval.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/drawable/oval.xml
rename to glance/glance-appwidget/src/androidTest/res/drawable/oval.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/layout/app_widget_host_activity.xml b/glance/glance-appwidget/src/androidTest/res/layout/app_widget_host_activity.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/layout/app_widget_host_activity.xml
rename to glance/glance-appwidget/src/androidTest/res/layout/app_widget_host_activity.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/layout/empty_layout.xml b/glance/glance-appwidget/src/androidTest/res/layout/empty_layout.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/layout/empty_layout.xml
rename to glance/glance-appwidget/src/androidTest/res/layout/empty_layout.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/layout/list_view_row.xml b/glance/glance-appwidget/src/androidTest/res/layout/list_view_row.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/layout/list_view_row.xml
rename to glance/glance-appwidget/src/androidTest/res/layout/list_view_row.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/layout/list_view_row_2.xml b/glance/glance-appwidget/src/androidTest/res/layout/list_view_row_2.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/layout/list_view_row_2.xml
rename to glance/glance-appwidget/src/androidTest/res/layout/list_view_row_2.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/layout/remote_views_list.xml b/glance/glance-appwidget/src/androidTest/res/layout/remote_views_list.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/layout/remote_views_list.xml
rename to glance/glance-appwidget/src/androidTest/res/layout/remote_views_list.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/values-night/colors.xml b/glance/glance-appwidget/src/androidTest/res/values-night/colors.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/values-night/colors.xml
rename to glance/glance-appwidget/src/androidTest/res/values-night/colors.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/values-v29/themes.xml b/glance/glance-appwidget/src/androidTest/res/values-v29/themes.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/values-v29/themes.xml
rename to glance/glance-appwidget/src/androidTest/res/values-v29/themes.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/values/attrs.xml b/glance/glance-appwidget/src/androidTest/res/values/attrs.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/values/attrs.xml
rename to glance/glance-appwidget/src/androidTest/res/values/attrs.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/values/colors.xml b/glance/glance-appwidget/src/androidTest/res/values/colors.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/values/colors.xml
rename to glance/glance-appwidget/src/androidTest/res/values/colors.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/values/dimens.xml b/glance/glance-appwidget/src/androidTest/res/values/dimens.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/values/dimens.xml
rename to glance/glance-appwidget/src/androidTest/res/values/dimens.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/values/themes.xml b/glance/glance-appwidget/src/androidTest/res/values/themes.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/values/themes.xml
rename to glance/glance-appwidget/src/androidTest/res/values/themes.xml
diff --git a/glance/glance-appwidget/src/androidAndroidTest/res/xml/app_widget_info.xml b/glance/glance-appwidget/src/androidTest/res/xml/app_widget_info.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidAndroidTest/res/xml/app_widget_info.xml
rename to glance/glance-appwidget/src/androidTest/res/xml/app_widget_info.xml
diff --git a/glance/glance-appwidget/src/androidMain/AndroidManifest.xml b/glance/glance-appwidget/src/main/AndroidManifest.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/AndroidManifest.xml
rename to glance/glance-appwidget/src/main/AndroidManifest.xml
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AlignmentModifier.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AlignmentModifier.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AlignmentModifier.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AlignmentModifier.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AndroidRemoteViews.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AndroidRemoteViews.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AndroidRemoteViews.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AndroidRemoteViews.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetBackground.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetBackground.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetBackground.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetBackground.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetComposer.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetComposer.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetComposer.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetComposer.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetModifiers.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetModifiers.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetModifiers.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetModifiers.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetSession.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetSession.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetSession.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetSession.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetUtils.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetUtils.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/AppWidgetUtils.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/AppWidgetUtils.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/ApplyModifiers.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/ApplyModifiers.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/ApplyModifiers.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/ApplyModifiers.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/Background.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/Background.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/Background.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/Background.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CheckBox.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CheckBox.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CheckBox.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CheckBox.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CircularProgressIndicator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CircularProgressIndicator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CircularProgressIndicator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CircularProgressIndicator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CompositionLocals.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CompositionLocals.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CompositionLocals.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CompositionLocals.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CornerRadius.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CornerRadius.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CornerRadius.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CornerRadius.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiver.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CoroutineBroadcastReceiver.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiver.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CoroutineBroadcastReceiver.kt
index 7ab9e6a..b963763 100644
--- a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/CoroutineBroadcastReceiver.kt
+++ b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CoroutineBroadcastReceiver.kt
@@ -18,13 +18,13 @@
 
 import android.content.BroadcastReceiver
 import android.util.Log
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.launch
-import kotlin.coroutines.CoroutineContext
 
 /**
  * Execute the block asynchronously in a scope with the lifetime of the broadcast.
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/ExperimentalGlanceRemoteViewsApi.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/ExperimentalGlanceRemoteViewsApi.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/ExperimentalGlanceRemoteViewsApi.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/ExperimentalGlanceRemoteViewsApi.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceAppWidget.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceAppWidget.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceAppWidget.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceAppWidget.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceAppWidgetManager.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceAppWidgetManager.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceAppWidgetManager.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceAppWidgetManager.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiver.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceAppWidgetReceiver.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiver.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceAppWidgetReceiver.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceRemoteViews.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceRemoteViews.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceRemoteViews.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceRemoteViews.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceRemoteViewsService.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceRemoteViewsService.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/GlanceRemoteViewsService.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/GlanceRemoteViewsService.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/IgnoreResult.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/IgnoreResult.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/IgnoreResult.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/IgnoreResult.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/ImageProviders.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/ImageProviders.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/ImageProviders.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/ImageProviders.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/LayoutSelection.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/LayoutSelection.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/LayoutSelection.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/LayoutSelection.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/LinearProgressIndicator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/LinearProgressIndicator.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/LinearProgressIndicator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/LinearProgressIndicator.kt
index 409413f..e314c1a 100644
--- a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/LinearProgressIndicator.kt
+++ b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/LinearProgressIndicator.kt
@@ -17,10 +17,10 @@
 package androidx.glance.appwidget
 
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.graphics.Color
 import androidx.glance.Emittable
 import androidx.glance.GlanceModifier
 import androidx.glance.GlanceNode
-import androidx.compose.ui.graphics.Color
 import androidx.glance.unit.ColorProvider
 
 /**
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/MyPackageReplacedReceiver.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/MyPackageReplacedReceiver.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/MyPackageReplacedReceiver.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/MyPackageReplacedReceiver.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/NormalizeCompositionTree.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/NormalizeCompositionTree.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/NormalizeCompositionTree.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/NormalizeCompositionTree.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RadioButton.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RadioButton.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RadioButton.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RadioButton.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RemoteCollectionItems.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RemoteCollectionItems.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RemoteCollectionItems.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RemoteCollectionItems.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RemoteViewsRoot.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RemoteViewsRoot.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RemoteViewsRoot.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RemoteViewsRoot.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RemoteViewsTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RemoteViewsTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/RemoteViewsTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/RemoteViewsTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/SizeBox.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/SizeBox.kt
similarity index 98%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/SizeBox.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/SizeBox.kt
index f4dd6cd..4c41537 100644
--- a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/SizeBox.kt
+++ b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/SizeBox.kt
@@ -110,7 +110,7 @@
                 .ifEmpty { listOf(smallestSize, smallestSize) }
         }
     }
-    sizes.map { size ->
+    sizes.distinct().map { size ->
         SizeBox(size, sizeMode, content)
     }
 }
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/SizeMode.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/SizeMode.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/SizeMode.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/SizeMode.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/Switch.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/Switch.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/Switch.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/Switch.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/TintAndAlphaColorFilterParams.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/TintAndAlphaColorFilterParams.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/TintAndAlphaColorFilterParams.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/TintAndAlphaColorFilterParams.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/Utils.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/Utils.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/Utils.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/Utils.kt
index b106440..cea6860 100644
--- a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/Utils.kt
+++ b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/Utils.kt
@@ -23,10 +23,10 @@
 import android.widget.RemoteViews
 import androidx.annotation.IdRes
 import androidx.annotation.LayoutRes
-import androidx.core.widget.RemoteViewsCompat.setViewStubInflatedId
-import androidx.core.widget.RemoteViewsCompat.setViewStubLayoutResource
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
+import androidx.core.widget.RemoteViewsCompat.setViewStubInflatedId
+import androidx.core.widget.RemoteViewsCompat.setViewStubLayoutResource
 
 internal fun Dp.toPixels(context: Context) = toPixels(context.resources.displayMetrics)
 
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/WidgetLayout.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/WidgetLayout.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/WidgetLayout.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/WidgetLayout.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ActionCallbackBroadcastReceiver.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ActionCallbackBroadcastReceiver.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ActionCallbackBroadcastReceiver.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ActionCallbackBroadcastReceiver.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ActionTrampoline.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ActionTrampoline.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ActionTrampoline.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ActionTrampoline.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ActionTrampolineActivity.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ActionTrampolineActivity.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ActionTrampolineActivity.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ActionTrampolineActivity.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ApplyAction.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ApplyAction.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/ApplyAction.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/ApplyAction.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/CompoundButtonAction.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/CompoundButtonAction.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/CompoundButtonAction.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/CompoundButtonAction.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/InvisibleActionTrampolineActivity.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/InvisibleActionTrampolineActivity.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/InvisibleActionTrampolineActivity.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/InvisibleActionTrampolineActivity.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/LambdaActionBroadcasts.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/LambdaActionBroadcasts.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/LambdaActionBroadcasts.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/LambdaActionBroadcasts.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/RunCallbackAction.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/RunCallbackAction.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/RunCallbackAction.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/RunCallbackAction.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/SendBroadcastAction.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/SendBroadcastAction.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/SendBroadcastAction.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/SendBroadcastAction.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/StartActivityIntentAction.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/StartActivityIntentAction.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/StartActivityIntentAction.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/StartActivityIntentAction.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/StartServiceAction.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/StartServiceAction.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/StartServiceAction.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/StartServiceAction.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/Toggleable.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/Toggleable.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/action/Toggleable.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/action/Toggleable.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/lazy/LazyList.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/lazy/LazyList.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/lazy/LazyList.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/lazy/LazyList.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/lazy/LazyVerticalGrid.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/lazy/LazyVerticalGrid.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/lazy/LazyVerticalGrid.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/lazy/LazyVerticalGrid.kt
index 0efa461..77a2e9d 100644
--- a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/lazy/LazyVerticalGrid.kt
+++ b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/lazy/LazyVerticalGrid.kt
@@ -15,17 +15,17 @@
  */
 
 package androidx.glance.appwidget.lazy
-import androidx.compose.runtime.Composable
-import androidx.glance.GlanceModifier
-import androidx.glance.GlanceNode
-import androidx.glance.layout.Alignment
-import androidx.glance.EmittableWithChildren
-import androidx.glance.layout.fillMaxWidth
-import androidx.glance.layout.wrapContentHeight
 import androidx.annotation.RequiresApi
+import androidx.compose.runtime.Composable
 import androidx.compose.runtime.key
 import androidx.compose.ui.unit.Dp
 import androidx.glance.Emittable
+import androidx.glance.EmittableWithChildren
+import androidx.glance.GlanceModifier
+import androidx.glance.GlanceNode
+import androidx.glance.layout.Alignment
+import androidx.glance.layout.fillMaxWidth
+import androidx.glance.layout.wrapContentHeight
 
 /**
  * The DSL implementation of a lazy grid layout. It composes only visible rows of the grid.
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/state/GlanceAppWidgetState.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/state/GlanceAppWidgetState.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/state/GlanceAppWidgetState.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/state/GlanceAppWidgetState.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CheckBoxTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CheckBoxTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CheckBoxTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CheckBoxTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CircularProgressIndicatorTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CircularProgressIndicatorTranslator.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CircularProgressIndicatorTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CircularProgressIndicatorTranslator.kt
index 33a20ed..aa002f4 100644
--- a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CircularProgressIndicatorTranslator.kt
+++ b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CircularProgressIndicatorTranslator.kt
@@ -16,23 +16,22 @@
 
 package androidx.glance.appwidget.translators
 
+import android.content.res.ColorStateList
 import android.os.Build
+import android.util.Log
 import android.widget.RemoteViews
+import androidx.compose.ui.graphics.toArgb
+import androidx.core.widget.RemoteViewsCompat.setProgressBarIndeterminateTintList
+import androidx.glance.appwidget.EmittableCircularProgressIndicator
+import androidx.glance.appwidget.GlanceAppWidgetTag
 import androidx.glance.appwidget.LayoutType
 import androidx.glance.appwidget.TranslationContext
 import androidx.glance.appwidget.applyModifiers
 import androidx.glance.appwidget.insertView
-import androidx.core.widget.RemoteViewsCompat.setProgressBarIndeterminateTintList
-import androidx.compose.ui.graphics.toArgb
-import android.content.res.ColorStateList
-import android.util.Log
+import androidx.glance.color.DayNightColorProvider
 import androidx.glance.unit.FixedColorProvider
 import androidx.glance.unit.ResourceColorProvider
 
-import androidx.glance.appwidget.EmittableCircularProgressIndicator
-import androidx.glance.appwidget.GlanceAppWidgetTag
-import androidx.glance.color.DayNightColorProvider
-
 internal fun RemoteViews.translateEmittableCircularProgressIndicator(
     translationContext: TranslationContext,
     element: EmittableCircularProgressIndicator
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CompoundButtonApi31Impl.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CompoundButtonApi31Impl.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CompoundButtonApi31Impl.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CompoundButtonApi31Impl.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CompoundButtonTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CompoundButtonTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/CompoundButtonTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/CompoundButtonTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/ImageTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/ImageTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/ImageTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/ImageTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/LazyListTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/LazyListTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/LazyListTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/LazyListTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/LazyVerticalGridTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/LazyVerticalGridTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/LazyVerticalGridTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/LazyVerticalGridTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/LinearProgressIndicatorTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/LinearProgressIndicatorTranslator.kt
similarity index 99%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/LinearProgressIndicatorTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/LinearProgressIndicatorTranslator.kt
index 5b9aca4..b3d72ae 100644
--- a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/LinearProgressIndicatorTranslator.kt
+++ b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/LinearProgressIndicatorTranslator.kt
@@ -16,24 +16,23 @@
 
 package androidx.glance.appwidget.translators
 
+import android.content.res.ColorStateList
 import android.os.Build
+import android.util.Log
 import android.widget.RemoteViews
+import androidx.compose.ui.graphics.toArgb
+import androidx.core.widget.RemoteViewsCompat.setProgressBarProgressBackgroundTintList
+import androidx.core.widget.RemoteViewsCompat.setProgressBarProgressTintList
+import androidx.glance.appwidget.EmittableLinearProgressIndicator
+import androidx.glance.appwidget.GlanceAppWidgetTag
 import androidx.glance.appwidget.LayoutType
 import androidx.glance.appwidget.TranslationContext
 import androidx.glance.appwidget.applyModifiers
 import androidx.glance.appwidget.insertView
-import androidx.core.widget.RemoteViewsCompat.setProgressBarProgressTintList
-import androidx.core.widget.RemoteViewsCompat.setProgressBarProgressBackgroundTintList
-import androidx.compose.ui.graphics.toArgb
-import android.content.res.ColorStateList
-import android.util.Log
+import androidx.glance.color.DayNightColorProvider
 import androidx.glance.unit.FixedColorProvider
 import androidx.glance.unit.ResourceColorProvider
 
-import androidx.glance.appwidget.EmittableLinearProgressIndicator
-import androidx.glance.appwidget.GlanceAppWidgetTag
-import androidx.glance.color.DayNightColorProvider
-
 internal fun RemoteViews.translateEmittableLinearProgressIndicator(
     translationContext: TranslationContext,
     element: EmittableLinearProgressIndicator
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/RadioButtonTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/RadioButtonTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/RadioButtonTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/RadioButtonTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/SwitchTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/SwitchTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/SwitchTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/SwitchTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/TextTranslator.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/TextTranslator.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/translators/TextTranslator.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/translators/TextTranslator.kt
diff --git a/glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/unit/ColorProvider.kt b/glance/glance-appwidget/src/main/java/androidx/glance/appwidget/unit/ColorProvider.kt
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/kotlin/androidx/glance/appwidget/unit/ColorProvider.kt
rename to glance/glance-appwidget/src/main/java/androidx/glance/appwidget/unit/ColorProvider.kt
diff --git a/glance/glance-appwidget/src/androidMain/layoutTemplates/box.xml b/glance/glance-appwidget/src/main/layoutTemplates/box.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/layoutTemplates/box.xml
rename to glance/glance-appwidget/src/main/layoutTemplates/box.xml
diff --git a/glance/glance-appwidget/src/androidMain/layoutTemplates/column.xml b/glance/glance-appwidget/src/main/layoutTemplates/column.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/layoutTemplates/column.xml
rename to glance/glance-appwidget/src/main/layoutTemplates/column.xml
diff --git a/glance/glance-appwidget/src/androidMain/layoutTemplates/radio_column.xml b/glance/glance-appwidget/src/main/layoutTemplates/radio_column.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/layoutTemplates/radio_column.xml
rename to glance/glance-appwidget/src/main/layoutTemplates/radio_column.xml
diff --git a/glance/glance-appwidget/src/androidMain/layoutTemplates/radio_row.xml b/glance/glance-appwidget/src/main/layoutTemplates/radio_row.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/layoutTemplates/radio_row.xml
rename to glance/glance-appwidget/src/main/layoutTemplates/radio_row.xml
diff --git a/glance/glance-appwidget/src/androidMain/layoutTemplates/row.xml b/glance/glance-appwidget/src/main/layoutTemplates/row.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/layoutTemplates/row.xml
rename to glance/glance-appwidget/src/main/layoutTemplates/row.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_checked_box_inner_merged_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_checked_box_inner_merged_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_checked_box_inner_merged_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_checked_box_inner_merged_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_checked_box_outer_merged_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_checked_box_outer_merged_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_checked_box_outer_merged_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_checked_box_outer_merged_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_checked_icon_null_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_checked_icon_null_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_checked_icon_null_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_checked_icon_null_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_unchecked_box_inner_merged_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_unchecked_box_inner_merged_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_unchecked_box_inner_merged_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_unchecked_box_inner_merged_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_unchecked_check_path_merged_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_unchecked_check_path_merged_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_unchecked_check_path_merged_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_unchecked_check_path_merged_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_unchecked_icon_null_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_unchecked_icon_null_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_checkbox_to_unchecked_icon_null_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_checkbox_to_unchecked_icon_null_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_off_mtrl_dot_group_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_off_mtrl_dot_group_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_off_mtrl_dot_group_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_off_mtrl_dot_group_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_path_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_path_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_path_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_off_mtrl_ring_outer_path_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_on_mtrl_dot_group_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_on_mtrl_dot_group_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_on_mtrl_dot_group_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_on_mtrl_dot_group_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_path_animation.xml b/glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_path_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_path_animation.xml
rename to glance/glance-appwidget/src/main/res/anim/glance_btn_radio_to_on_mtrl_ring_outer_path_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color-night/glance_default_switch_thumb.xml b/glance/glance-appwidget/src/main/res/color-night/glance_default_switch_thumb.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color-night/glance_default_switch_thumb.xml
rename to glance/glance-appwidget/src/main/res/color-night/glance_default_switch_thumb.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_default_check_box.xml b/glance/glance-appwidget/src/main/res/color/glance_default_check_box.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_default_check_box.xml
rename to glance/glance-appwidget/src/main/res/color/glance_default_check_box.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_default_radio_button.xml b/glance/glance-appwidget/src/main/res/color/glance_default_radio_button.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_default_radio_button.xml
rename to glance/glance-appwidget/src/main/res/color/glance_default_radio_button.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_default_switch_thumb.xml b/glance/glance-appwidget/src/main/res/color/glance_default_switch_thumb.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_default_switch_thumb.xml
rename to glance/glance-appwidget/src/main/res/color/glance_default_switch_thumb.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_default_switch_track.xml b/glance/glance-appwidget/src/main/res/color/glance_default_switch_track.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_default_switch_track.xml
rename to glance/glance-appwidget/src/main/res/color/glance_default_switch_track.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_switch_off_ambient_shadow.xml b/glance/glance-appwidget/src/main/res/color/glance_switch_off_ambient_shadow.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_switch_off_ambient_shadow.xml
rename to glance/glance-appwidget/src/main/res/color/glance_switch_off_ambient_shadow.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_switch_off_key_shadow.xml b/glance/glance-appwidget/src/main/res/color/glance_switch_off_key_shadow.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_switch_off_key_shadow.xml
rename to glance/glance-appwidget/src/main/res/color/glance_switch_off_key_shadow.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_switch_on_ambient_shadow.xml b/glance/glance-appwidget/src/main/res/color/glance_switch_on_ambient_shadow.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_switch_on_ambient_shadow.xml
rename to glance/glance-appwidget/src/main/res/color/glance_switch_on_ambient_shadow.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_switch_on_key_shadow.xml b/glance/glance-appwidget/src/main/res/color/glance_switch_on_key_shadow.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_switch_on_key_shadow.xml
rename to glance/glance-appwidget/src/main/res/color/glance_switch_on_key_shadow.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/color/glance_white_disabled_material_anim.xml b/glance/glance-appwidget/src/main/res/color/glance_white_disabled_material_anim.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/color/glance_white_disabled_material_anim.xml
rename to glance/glance-appwidget/src/main/res/color/glance_white_disabled_material_anim.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable-v24/glance_switch_thumb_off.xml b/glance/glance-appwidget/src/main/res/drawable-v24/glance_switch_thumb_off.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable-v24/glance_switch_thumb_off.xml
rename to glance/glance-appwidget/src/main/res/drawable-v24/glance_switch_thumb_off.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable-v24/glance_switch_thumb_on.xml b/glance/glance-appwidget/src/main/res/drawable-v24/glance_switch_thumb_on.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable-v24/glance_switch_thumb_on.xml
rename to glance/glance-appwidget/src/main/res/drawable-v24/glance_switch_thumb_on.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable-v31/glance_error_layout_background.xml b/glance/glance-appwidget/src/main/res/drawable-v31/glance_error_layout_background.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable-v31/glance_error_layout_background.xml
rename to glance/glance-appwidget/src/main/res/drawable-v31/glance_error_layout_background.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable-v31/glance_loading_layout_background.xml b/glance/glance-appwidget/src/main/res/drawable-v31/glance_loading_layout_background.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable-v31/glance_loading_layout_background.xml
rename to glance/glance-appwidget/src/main/res/drawable-v31/glance_loading_layout_background.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_abc_btn_check_material_anim_enabled.xml b/glance/glance-appwidget/src/main/res/drawable/glance_abc_btn_check_material_anim_enabled.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_abc_btn_check_material_anim_enabled.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_abc_btn_check_material_anim_enabled.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_checked_mtrl.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_checked_mtrl.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_checked_mtrl.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_checked_mtrl.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_checked_to_unchecked_mtrl_animation.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_checked_to_unchecked_mtrl_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_checked_to_unchecked_mtrl_animation.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_checked_to_unchecked_mtrl_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_unchecked_mtrl.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_unchecked_mtrl.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_unchecked_mtrl.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_unchecked_mtrl.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_unchecked_to_checked_mtrl_animation.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_unchecked_to_checked_mtrl_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_checkbox_unchecked_to_checked_mtrl_animation.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_checkbox_unchecked_to_checked_mtrl_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_material_anim.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_material_anim.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_material_anim.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_material_anim.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_off_mtrl.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_off_mtrl.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_off_mtrl.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_off_mtrl.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_off_to_on_mtrl_animation.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_off_to_on_mtrl_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_off_to_on_mtrl_animation.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_off_to_on_mtrl_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_on_mtrl.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_on_mtrl.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_on_mtrl.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_on_mtrl.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_on_to_off_mtrl_animation.xml b/glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_on_to_off_mtrl_animation.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_btn_radio_on_to_off_mtrl_animation.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_btn_radio_on_to_off_mtrl_animation.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_button_outline.xml b/glance/glance-appwidget/src/main/res/drawable/glance_button_outline.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_button_outline.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_button_outline.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_button_ripple.xml b/glance/glance-appwidget/src/main/res/drawable/glance_button_ripple.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_button_ripple.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_button_ripple.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_error_layout_background.xml b/glance/glance-appwidget/src/main/res/drawable/glance_error_layout_background.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_error_layout_background.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_error_layout_background.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_loading_layout_background.xml b/glance/glance-appwidget/src/main/res/drawable/glance_loading_layout_background.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_loading_layout_background.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_loading_layout_background.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_ripple.xml b/glance/glance-appwidget/src/main/res/drawable/glance_ripple.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_ripple.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_ripple.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_animated.xml b/glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_animated.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_animated.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_animated.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_off.xml b/glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_off.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_off.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_off.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_off_to_on.xml b/glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_off_to_on.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_off_to_on.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_off_to_on.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_on.xml b/glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_on.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_on.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_on.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_on_to_off.xml b/glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_on_to_off.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_thumb_on_to_off.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_switch_thumb_on_to_off.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_track.xml b/glance/glance-appwidget/src/main/res/drawable/glance_switch_track.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/drawable/glance_switch_track.xml
rename to glance/glance-appwidget/src/main/res/drawable/glance_switch_track.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_0.xml b/glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_0.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_0.xml
rename to glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_0.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_1.xml b/glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_1.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_1.xml
rename to glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_checked_mtrl_animation_interpolator_1.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_0.xml b/glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_0.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_0.xml
rename to glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_0.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_1.xml b/glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_1.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_1.xml
rename to glance/glance-appwidget/src/main/res/interpolator/glance_btn_checkbox_unchecked_mtrl_animation_interpolator_1.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_radio_to_off_mtrl_animation_interpolator_0.xml b/glance/glance-appwidget/src/main/res/interpolator/glance_btn_radio_to_off_mtrl_animation_interpolator_0.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_radio_to_off_mtrl_animation_interpolator_0.xml
rename to glance/glance-appwidget/src/main/res/interpolator/glance_btn_radio_to_off_mtrl_animation_interpolator_0.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_radio_to_on_mtrl_animation_interpolator_0.xml b/glance/glance-appwidget/src/main/res/interpolator/glance_btn_radio_to_on_mtrl_animation_interpolator_0.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/interpolator/glance_btn_radio_to_on_mtrl_animation_interpolator_0.xml
rename to glance/glance-appwidget/src/main/res/interpolator/glance_btn_radio_to_on_mtrl_animation_interpolator_0.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_button.xml b/glance/glance-appwidget/src/main/res/layout/glance_button.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_button.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_button.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_check_box.xml b/glance/glance-appwidget/src/main/res/layout/glance_check_box.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_check_box.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_check_box.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_backport.xml b/glance/glance-appwidget/src/main/res/layout/glance_check_box_backport.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_backport.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_check_box_backport.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_image.xml b/glance/glance-appwidget/src/main/res/layout/glance_check_box_image.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_image.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_check_box_image.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_text.xml b/glance/glance-appwidget/src/main/res/layout/glance_check_box_text.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_text.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_check_box_text.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_view.xml b/glance/glance-appwidget/src/main/res/layout/glance_check_box_view.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_check_box_view.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_check_box_view.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_circular_progress_indicator.xml b/glance/glance-appwidget/src/main/res/layout/glance_circular_progress_indicator.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_circular_progress_indicator.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_circular_progress_indicator.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_default_loading_layout.xml b/glance/glance-appwidget/src/main/res/layout/glance_default_loading_layout.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_default_loading_layout.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_default_loading_layout.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_deleted_view.xml b/glance/glance-appwidget/src/main/res/layout/glance_deleted_view.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_deleted_view.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_deleted_view.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_error_layout.xml b/glance/glance-appwidget/src/main/res/layout/glance_error_layout.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_error_layout.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_error_layout.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_frame.xml b/glance/glance-appwidget/src/main/res/layout/glance_frame.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_frame.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_frame.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_image_crop.xml b/glance/glance-appwidget/src/main/res/layout/glance_image_crop.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_image_crop.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_image_crop.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_image_fill_bounds.xml b/glance/glance-appwidget/src/main/res/layout/glance_image_fill_bounds.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_image_fill_bounds.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_image_fill_bounds.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_image_fit.xml b/glance/glance-appwidget/src/main/res/layout/glance_image_fit.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_image_fit.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_image_fit.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_linear_progress_indicator.xml b/glance/glance-appwidget/src/main/res/layout/glance_linear_progress_indicator.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_linear_progress_indicator.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_linear_progress_indicator.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_list.xml b/glance/glance-appwidget/src/main/res/layout/glance_list.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_list.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_list.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_radio_button.xml b/glance/glance-appwidget/src/main/res/layout/glance_radio_button.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_radio_button.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_radio_button.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_radio_button_backport.xml b/glance/glance-appwidget/src/main/res/layout/glance_radio_button_backport.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_radio_button_backport.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_radio_button_backport.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_radio_icon.xml b/glance/glance-appwidget/src/main/res/layout/glance_radio_icon.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_radio_icon.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_radio_icon.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_radio_text.xml b/glance/glance-appwidget/src/main/res/layout/glance_radio_text.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_radio_text.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_radio_text.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_switch_text.xml b/glance/glance-appwidget/src/main/res/layout/glance_switch_text.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_switch_text.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_switch_text.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_switch_thumb.xml b/glance/glance-appwidget/src/main/res/layout/glance_switch_thumb.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_switch_thumb.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_switch_thumb.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_switch_track.xml b/glance/glance-appwidget/src/main/res/layout/glance_switch_track.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_switch_track.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_switch_track.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_swtch.xml b/glance/glance-appwidget/src/main/res/layout/glance_swtch.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_swtch.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_swtch.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_swtch_backport.xml b/glance/glance-appwidget/src/main/res/layout/glance_swtch_backport.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_swtch_backport.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_swtch_backport.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_text.xml b/glance/glance-appwidget/src/main/res/layout/glance_text.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_text.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_text.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_auto_fit.xml b/glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_auto_fit.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_auto_fit.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_auto_fit.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_five_columns.xml b/glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_five_columns.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_five_columns.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_five_columns.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_four_columns.xml b/glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_four_columns.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_four_columns.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_four_columns.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_one_column.xml b/glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_one_column.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_one_column.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_one_column.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_three_columns.xml b/glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_three_columns.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_three_columns.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_three_columns.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_two_columns.xml b/glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_two_columns.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/layout/glance_vertical_grid_two_columns.xml
rename to glance/glance-appwidget/src/main/res/layout/glance_vertical_grid_two_columns.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-af/strings.xml b/glance/glance-appwidget/src/main/res/values-af/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-af/strings.xml
rename to glance/glance-appwidget/src/main/res/values-af/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-am/strings.xml b/glance/glance-appwidget/src/main/res/values-am/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-am/strings.xml
rename to glance/glance-appwidget/src/main/res/values-am/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ar/strings.xml b/glance/glance-appwidget/src/main/res/values-ar/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ar/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ar/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-as/strings.xml b/glance/glance-appwidget/src/main/res/values-as/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-as/strings.xml
rename to glance/glance-appwidget/src/main/res/values-as/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-az/strings.xml b/glance/glance-appwidget/src/main/res/values-az/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-az/strings.xml
rename to glance/glance-appwidget/src/main/res/values-az/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-b+sr+Latn/strings.xml b/glance/glance-appwidget/src/main/res/values-b+sr+Latn/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-b+sr+Latn/strings.xml
rename to glance/glance-appwidget/src/main/res/values-b+sr+Latn/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-be/strings.xml b/glance/glance-appwidget/src/main/res/values-be/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-be/strings.xml
rename to glance/glance-appwidget/src/main/res/values-be/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-bg/strings.xml b/glance/glance-appwidget/src/main/res/values-bg/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-bg/strings.xml
rename to glance/glance-appwidget/src/main/res/values-bg/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-bn/strings.xml b/glance/glance-appwidget/src/main/res/values-bn/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-bn/strings.xml
rename to glance/glance-appwidget/src/main/res/values-bn/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-bs/strings.xml b/glance/glance-appwidget/src/main/res/values-bs/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-bs/strings.xml
rename to glance/glance-appwidget/src/main/res/values-bs/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ca/strings.xml b/glance/glance-appwidget/src/main/res/values-ca/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ca/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ca/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-cs/strings.xml b/glance/glance-appwidget/src/main/res/values-cs/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-cs/strings.xml
rename to glance/glance-appwidget/src/main/res/values-cs/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-da/strings.xml b/glance/glance-appwidget/src/main/res/values-da/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-da/strings.xml
rename to glance/glance-appwidget/src/main/res/values-da/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-de/strings.xml b/glance/glance-appwidget/src/main/res/values-de/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-de/strings.xml
rename to glance/glance-appwidget/src/main/res/values-de/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-el/strings.xml b/glance/glance-appwidget/src/main/res/values-el/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-el/strings.xml
rename to glance/glance-appwidget/src/main/res/values-el/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-en-rAU/strings.xml b/glance/glance-appwidget/src/main/res/values-en-rAU/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-en-rAU/strings.xml
rename to glance/glance-appwidget/src/main/res/values-en-rAU/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-en-rCA/strings.xml b/glance/glance-appwidget/src/main/res/values-en-rCA/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-en-rCA/strings.xml
rename to glance/glance-appwidget/src/main/res/values-en-rCA/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-en-rGB/strings.xml b/glance/glance-appwidget/src/main/res/values-en-rGB/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-en-rGB/strings.xml
rename to glance/glance-appwidget/src/main/res/values-en-rGB/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-en-rIN/strings.xml b/glance/glance-appwidget/src/main/res/values-en-rIN/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-en-rIN/strings.xml
rename to glance/glance-appwidget/src/main/res/values-en-rIN/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-en-rXC/strings.xml b/glance/glance-appwidget/src/main/res/values-en-rXC/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-en-rXC/strings.xml
rename to glance/glance-appwidget/src/main/res/values-en-rXC/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-es-rUS/strings.xml b/glance/glance-appwidget/src/main/res/values-es-rUS/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-es-rUS/strings.xml
rename to glance/glance-appwidget/src/main/res/values-es-rUS/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-es/strings.xml b/glance/glance-appwidget/src/main/res/values-es/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-es/strings.xml
rename to glance/glance-appwidget/src/main/res/values-es/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-et/strings.xml b/glance/glance-appwidget/src/main/res/values-et/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-et/strings.xml
rename to glance/glance-appwidget/src/main/res/values-et/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-eu/strings.xml b/glance/glance-appwidget/src/main/res/values-eu/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-eu/strings.xml
rename to glance/glance-appwidget/src/main/res/values-eu/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-fa/strings.xml b/glance/glance-appwidget/src/main/res/values-fa/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-fa/strings.xml
rename to glance/glance-appwidget/src/main/res/values-fa/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-fi/strings.xml b/glance/glance-appwidget/src/main/res/values-fi/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-fi/strings.xml
rename to glance/glance-appwidget/src/main/res/values-fi/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-fr-rCA/strings.xml b/glance/glance-appwidget/src/main/res/values-fr-rCA/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-fr-rCA/strings.xml
rename to glance/glance-appwidget/src/main/res/values-fr-rCA/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-fr/strings.xml b/glance/glance-appwidget/src/main/res/values-fr/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-fr/strings.xml
rename to glance/glance-appwidget/src/main/res/values-fr/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-gl/strings.xml b/glance/glance-appwidget/src/main/res/values-gl/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-gl/strings.xml
rename to glance/glance-appwidget/src/main/res/values-gl/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-gu/strings.xml b/glance/glance-appwidget/src/main/res/values-gu/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-gu/strings.xml
rename to glance/glance-appwidget/src/main/res/values-gu/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-hi/strings.xml b/glance/glance-appwidget/src/main/res/values-hi/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-hi/strings.xml
rename to glance/glance-appwidget/src/main/res/values-hi/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-hr/strings.xml b/glance/glance-appwidget/src/main/res/values-hr/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-hr/strings.xml
rename to glance/glance-appwidget/src/main/res/values-hr/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-hu/strings.xml b/glance/glance-appwidget/src/main/res/values-hu/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-hu/strings.xml
rename to glance/glance-appwidget/src/main/res/values-hu/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-hy/strings.xml b/glance/glance-appwidget/src/main/res/values-hy/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-hy/strings.xml
rename to glance/glance-appwidget/src/main/res/values-hy/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-in/strings.xml b/glance/glance-appwidget/src/main/res/values-in/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-in/strings.xml
rename to glance/glance-appwidget/src/main/res/values-in/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-is/strings.xml b/glance/glance-appwidget/src/main/res/values-is/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-is/strings.xml
rename to glance/glance-appwidget/src/main/res/values-is/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-it/strings.xml b/glance/glance-appwidget/src/main/res/values-it/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-it/strings.xml
rename to glance/glance-appwidget/src/main/res/values-it/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-iw/strings.xml b/glance/glance-appwidget/src/main/res/values-iw/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-iw/strings.xml
rename to glance/glance-appwidget/src/main/res/values-iw/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ja/strings.xml b/glance/glance-appwidget/src/main/res/values-ja/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ja/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ja/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ka/strings.xml b/glance/glance-appwidget/src/main/res/values-ka/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ka/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ka/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-kk/strings.xml b/glance/glance-appwidget/src/main/res/values-kk/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-kk/strings.xml
rename to glance/glance-appwidget/src/main/res/values-kk/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-km/strings.xml b/glance/glance-appwidget/src/main/res/values-km/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-km/strings.xml
rename to glance/glance-appwidget/src/main/res/values-km/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-kn/strings.xml b/glance/glance-appwidget/src/main/res/values-kn/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-kn/strings.xml
rename to glance/glance-appwidget/src/main/res/values-kn/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ko/strings.xml b/glance/glance-appwidget/src/main/res/values-ko/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ko/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ko/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ky/strings.xml b/glance/glance-appwidget/src/main/res/values-ky/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ky/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ky/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-lo/strings.xml b/glance/glance-appwidget/src/main/res/values-lo/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-lo/strings.xml
rename to glance/glance-appwidget/src/main/res/values-lo/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-lt/strings.xml b/glance/glance-appwidget/src/main/res/values-lt/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-lt/strings.xml
rename to glance/glance-appwidget/src/main/res/values-lt/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-lv/strings.xml b/glance/glance-appwidget/src/main/res/values-lv/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-lv/strings.xml
rename to glance/glance-appwidget/src/main/res/values-lv/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-mk/strings.xml b/glance/glance-appwidget/src/main/res/values-mk/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-mk/strings.xml
rename to glance/glance-appwidget/src/main/res/values-mk/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ml/strings.xml b/glance/glance-appwidget/src/main/res/values-ml/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ml/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ml/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-mn/strings.xml b/glance/glance-appwidget/src/main/res/values-mn/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-mn/strings.xml
rename to glance/glance-appwidget/src/main/res/values-mn/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-mr/strings.xml b/glance/glance-appwidget/src/main/res/values-mr/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-mr/strings.xml
rename to glance/glance-appwidget/src/main/res/values-mr/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ms/strings.xml b/glance/glance-appwidget/src/main/res/values-ms/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ms/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ms/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-my/strings.xml b/glance/glance-appwidget/src/main/res/values-my/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-my/strings.xml
rename to glance/glance-appwidget/src/main/res/values-my/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-nb/strings.xml b/glance/glance-appwidget/src/main/res/values-nb/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-nb/strings.xml
rename to glance/glance-appwidget/src/main/res/values-nb/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ne/strings.xml b/glance/glance-appwidget/src/main/res/values-ne/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ne/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ne/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-nl/strings.xml b/glance/glance-appwidget/src/main/res/values-nl/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-nl/strings.xml
rename to glance/glance-appwidget/src/main/res/values-nl/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-or/strings.xml b/glance/glance-appwidget/src/main/res/values-or/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-or/strings.xml
rename to glance/glance-appwidget/src/main/res/values-or/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-pa/strings.xml b/glance/glance-appwidget/src/main/res/values-pa/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-pa/strings.xml
rename to glance/glance-appwidget/src/main/res/values-pa/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-pl/strings.xml b/glance/glance-appwidget/src/main/res/values-pl/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-pl/strings.xml
rename to glance/glance-appwidget/src/main/res/values-pl/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-pt-rBR/strings.xml b/glance/glance-appwidget/src/main/res/values-pt-rBR/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-pt-rBR/strings.xml
rename to glance/glance-appwidget/src/main/res/values-pt-rBR/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-pt-rPT/strings.xml b/glance/glance-appwidget/src/main/res/values-pt-rPT/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-pt-rPT/strings.xml
rename to glance/glance-appwidget/src/main/res/values-pt-rPT/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-pt/strings.xml b/glance/glance-appwidget/src/main/res/values-pt/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-pt/strings.xml
rename to glance/glance-appwidget/src/main/res/values-pt/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ro/strings.xml b/glance/glance-appwidget/src/main/res/values-ro/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ro/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ro/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ru/strings.xml b/glance/glance-appwidget/src/main/res/values-ru/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ru/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ru/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-si/strings.xml b/glance/glance-appwidget/src/main/res/values-si/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-si/strings.xml
rename to glance/glance-appwidget/src/main/res/values-si/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-sk/strings.xml b/glance/glance-appwidget/src/main/res/values-sk/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-sk/strings.xml
rename to glance/glance-appwidget/src/main/res/values-sk/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-sl/strings.xml b/glance/glance-appwidget/src/main/res/values-sl/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-sl/strings.xml
rename to glance/glance-appwidget/src/main/res/values-sl/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-sq/strings.xml b/glance/glance-appwidget/src/main/res/values-sq/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-sq/strings.xml
rename to glance/glance-appwidget/src/main/res/values-sq/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-sr/strings.xml b/glance/glance-appwidget/src/main/res/values-sr/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-sr/strings.xml
rename to glance/glance-appwidget/src/main/res/values-sr/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-sv/strings.xml b/glance/glance-appwidget/src/main/res/values-sv/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-sv/strings.xml
rename to glance/glance-appwidget/src/main/res/values-sv/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-sw/strings.xml b/glance/glance-appwidget/src/main/res/values-sw/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-sw/strings.xml
rename to glance/glance-appwidget/src/main/res/values-sw/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ta/strings.xml b/glance/glance-appwidget/src/main/res/values-ta/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ta/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ta/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-te/strings.xml b/glance/glance-appwidget/src/main/res/values-te/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-te/strings.xml
rename to glance/glance-appwidget/src/main/res/values-te/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-th/strings.xml b/glance/glance-appwidget/src/main/res/values-th/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-th/strings.xml
rename to glance/glance-appwidget/src/main/res/values-th/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-tl/strings.xml b/glance/glance-appwidget/src/main/res/values-tl/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-tl/strings.xml
rename to glance/glance-appwidget/src/main/res/values-tl/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-tr/strings.xml b/glance/glance-appwidget/src/main/res/values-tr/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-tr/strings.xml
rename to glance/glance-appwidget/src/main/res/values-tr/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-uk/strings.xml b/glance/glance-appwidget/src/main/res/values-uk/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-uk/strings.xml
rename to glance/glance-appwidget/src/main/res/values-uk/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-ur/strings.xml b/glance/glance-appwidget/src/main/res/values-ur/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-ur/strings.xml
rename to glance/glance-appwidget/src/main/res/values-ur/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-uz/strings.xml b/glance/glance-appwidget/src/main/res/values-uz/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-uz/strings.xml
rename to glance/glance-appwidget/src/main/res/values-uz/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-v23/bools.xml b/glance/glance-appwidget/src/main/res/values-v23/bools.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-v23/bools.xml
rename to glance/glance-appwidget/src/main/res/values-v23/bools.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-v29/textAppearance_styles.xml b/glance/glance-appwidget/src/main/res/values-v29/textAppearance_styles.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-v29/textAppearance_styles.xml
rename to glance/glance-appwidget/src/main/res/values-v29/textAppearance_styles.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-v31/styles.xml b/glance/glance-appwidget/src/main/res/values-v31/styles.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-v31/styles.xml
rename to glance/glance-appwidget/src/main/res/values-v31/styles.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-vi/strings.xml b/glance/glance-appwidget/src/main/res/values-vi/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-vi/strings.xml
rename to glance/glance-appwidget/src/main/res/values-vi/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-zh-rCN/strings.xml b/glance/glance-appwidget/src/main/res/values-zh-rCN/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-zh-rCN/strings.xml
rename to glance/glance-appwidget/src/main/res/values-zh-rCN/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-zh-rHK/strings.xml b/glance/glance-appwidget/src/main/res/values-zh-rHK/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-zh-rHK/strings.xml
rename to glance/glance-appwidget/src/main/res/values-zh-rHK/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-zh-rTW/strings.xml b/glance/glance-appwidget/src/main/res/values-zh-rTW/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-zh-rTW/strings.xml
rename to glance/glance-appwidget/src/main/res/values-zh-rTW/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values-zu/strings.xml b/glance/glance-appwidget/src/main/res/values-zu/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values-zu/strings.xml
rename to glance/glance-appwidget/src/main/res/values-zu/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/attrs.xml b/glance/glance-appwidget/src/main/res/values/attrs.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/attrs.xml
rename to glance/glance-appwidget/src/main/res/values/attrs.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/bools.xml b/glance/glance-appwidget/src/main/res/values/bools.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/bools.xml
rename to glance/glance-appwidget/src/main/res/values/bools.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/colors.xml b/glance/glance-appwidget/src/main/res/values/colors.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/colors.xml
rename to glance/glance-appwidget/src/main/res/values/colors.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/ids.xml b/glance/glance-appwidget/src/main/res/values/ids.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/ids.xml
rename to glance/glance-appwidget/src/main/res/values/ids.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/public.xml b/glance/glance-appwidget/src/main/res/values/public.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/public.xml
rename to glance/glance-appwidget/src/main/res/values/public.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/strings.xml b/glance/glance-appwidget/src/main/res/values/strings.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/strings.xml
rename to glance/glance-appwidget/src/main/res/values/strings.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/styles.xml b/glance/glance-appwidget/src/main/res/values/styles.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/styles.xml
rename to glance/glance-appwidget/src/main/res/values/styles.xml
diff --git a/glance/glance-appwidget/src/androidMain/res/values/textAppearance_styles.xml b/glance/glance-appwidget/src/main/res/values/textAppearance_styles.xml
similarity index 100%
rename from glance/glance-appwidget/src/androidMain/res/values/textAppearance_styles.xml
rename to glance/glance-appwidget/src/main/res/values/textAppearance_styles.xml
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ActionCallbackBroadcastReceiverTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ActionCallbackBroadcastReceiverTest.kt
index 8cb1cda..310431e 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ActionCallbackBroadcastReceiverTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ActionCallbackBroadcastReceiverTest.kt
@@ -26,10 +26,10 @@
 import androidx.glance.appwidget.action.createUniqueUri
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import java.io.Serializable
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import java.io.Serializable
 
 @RunWith(RobolectricTestRunner::class)
 class ActionCallbackBroadcastReceiverTest {
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ApplyDimensionModifierTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ApplyDimensionModifierTest.kt
index 46c84a9..378cecf 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ApplyDimensionModifierTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ApplyDimensionModifierTest.kt
@@ -43,6 +43,8 @@
 import androidx.glance.text.Text
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
+import kotlin.test.assertNotNull
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
@@ -50,8 +52,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertIs
-import kotlin.test.assertNotNull
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/SizeBoxTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/SizeBoxTest.kt
index ba438eb..d72e0f2 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/SizeBoxTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/SizeBoxTest.kt
@@ -35,236 +35,241 @@
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
 class SizeBoxTest {
-    private val minSize = DpSize(50.dp, 100.dp)
+    private val minAppWidgetSize = DpSize(50.dp, 100.dp)
 
     @Test
-    fun sizeModeSingle() = runTest {
+    fun sizeModeSingle_usesMinAppWidgetSize() = runTest {
         val root = runTestingComposition {
-            ForEachSize(SizeMode.Single, minSize) {
+            ForEachSize(SizeMode.Single, minAppWidgetSize) {
                 val size = LocalSize.current
-                Text("${size.width} x ${size.height}")
+                Text(size.toSizeString())
             }
         }
+
         val sizeBox = assertIs<EmittableSizeBox>(root.children.single())
-        assertThat(sizeBox.size).isEqualTo(minSize)
+        assertThat(sizeBox.size).isEqualTo(minAppWidgetSize)
         assertThat(sizeBox.sizeMode).isEqualTo(SizeMode.Single)
         val text = assertIs<EmittableText>(sizeBox.children.single())
-        assertThat(text.text).isEqualTo("50.0.dp x 100.0.dp")
+        assertThat(text.text).isEqualTo(minAppWidgetSize.toSizeString())
     }
 
-    @Config(sdk = [30])
+    @Config(maxSdk = 30)
     @Test
-    fun sizeModeExactPreS() = runTest {
-        val options = optionsBundleOf(
-            listOf(
-                DpSize(100.dp, 50.dp),
-                DpSize(50.dp, 100.dp),
-                DpSize(75.dp, 75.dp),
-            )
+    fun sizeModeExact_onlyMinMaxSizes_usesOrientationSizesDerivedFromMinMax() = runTest {
+        val displaySizes = listOf(
+            DpSize(100.dp, 50.dp),
+            DpSize(50.dp, 100.dp),
+            DpSize(75.dp, 75.dp),
         )
+        // Following utility function populates only
+        // AppWidgetManager.OPTION_APPWIDGET_{MIN,MAX}_{HEIGHT,WIDTH} to mimic Pre-S behavior, so
+        // actual possible sizes aren't available.
+        val options = optionsBundleOf(displaySizes)
+
         val root = runTestingComposition {
             CompositionLocalProvider(LocalAppWidgetOptions provides options) {
-                ForEachSize(SizeMode.Exact, minSize) {
+                ForEachSize(SizeMode.Exact, minAppWidgetSize) {
                     val size = LocalSize.current
-                    Text("${size.width} x ${size.height}")
+                    Text(size.toSizeString())
                 }
             }
         }
+
         // On Pre-S, since AppWidgetManager.OPTION_APPWIDGET_SIZES isn't available, we use
         // AppWidgetManager.OPTION_APPWIDGET_{MIN,MAX}_{HEIGHT,WIDTH} to find the landscape and
         // portrait sizes.
         assertThat(root.children).hasSize(2)
+        val maxWidthMinHeightSize = DpSize(100.dp, 50.dp) // Landscape
         val sizeBox1 = assertIs<EmittableSizeBox>(root.children[0])
-        assertThat(sizeBox1.size).isEqualTo(DpSize(100.dp, 50.dp))
+        assertThat(sizeBox1.size).isEqualTo(maxWidthMinHeightSize)
         assertThat(sizeBox1.sizeMode).isEqualTo(SizeMode.Exact)
         val text1 = assertIs<EmittableText>(sizeBox1.children.single())
-        assertThat(text1.text).isEqualTo("100.0.dp x 50.0.dp")
+        assertThat(text1.text).isEqualTo(maxWidthMinHeightSize.toSizeString())
 
+        val minWidthMaxHeightSize = DpSize(50.dp, 100.dp) // Portrait
         val sizeBox2 = assertIs<EmittableSizeBox>(root.children[1])
-        assertThat(sizeBox2.size).isEqualTo(DpSize(50.dp, 100.dp))
+        assertThat(sizeBox2.size).isEqualTo(minWidthMaxHeightSize)
         assertThat(sizeBox2.sizeMode).isEqualTo(SizeMode.Exact)
         val text2 = assertIs<EmittableText>(sizeBox2.children.single())
-        assertThat(text2.text).isEqualTo("50.0.dp x 100.0.dp")
+        assertThat(text2.text).isEqualTo(minWidthMaxHeightSize.toSizeString())
     }
 
-    @Config(sdk = [31])
+    @Config(minSdk = 31)
     @Test
-    fun sizeModeExactS() = runTest {
-        val options = optionsBundleOf(
-            listOf(
-                DpSize(100.dp, 50.dp),
+    fun sizeModeExact_possibleSizesAvailable_usesEachDistinctPossibleSize() {
+        runTest {
+            val displaySizes = listOf(
+                DpSize(100.dp, 50.dp), // duplicate for testing
                 DpSize(50.dp, 100.dp),
                 DpSize(75.dp, 75.dp),
+                DpSize(100.dp, 50.dp),
             )
-        )
-        val root = runTestingComposition {
-            CompositionLocalProvider(LocalAppWidgetOptions provides options) {
-                ForEachSize(SizeMode.Exact, minSize) {
-                    val size = LocalSize.current
-                    Text("${size.width} x ${size.height}")
+            val distinctDisplaySizes = displaySizes.distinct() // distinct maintains order.
+            // In S+, following utility function populates
+            // AppWidgetManager.OPTION_APPWIDGET_OPTIONS with given sizes.
+            val options = optionsBundleOf(displaySizes)
+
+            val root = runTestingComposition {
+                CompositionLocalProvider(LocalAppWidgetOptions provides options) {
+                    ForEachSize(SizeMode.Exact, minAppWidgetSize) {
+                        val size = LocalSize.current
+                        Text(size.toSizeString())
+                    }
                 }
             }
+
+            // On S+, AppWidgetManager.OPTION_APPWIDGET_SIZES is available so we create a SizeBox
+            // for each size.
+            assertThat(root.children).hasSize(distinctDisplaySizes.size)
+            distinctDisplaySizes.forEachIndexed { index, dpSize ->
+                val sizeBox = assertIs<EmittableSizeBox>(root.children[index])
+                assertThat(sizeBox.size).isEqualTo(dpSize)
+                assertThat(sizeBox.sizeMode).isEqualTo(SizeMode.Exact)
+                val text = assertIs<EmittableText>(sizeBox.children.single())
+                assertThat(text.text).isEqualTo(dpSize.toSizeString())
+            }
         }
-        // On S+, AppWidgetManager.OPTION_APPWIDGET_SIZES is available so we create a SizeBox for
-        // each size.
-        assertThat(root.children).hasSize(3)
-        val sizeBox1 = assertIs<EmittableSizeBox>(root.children[0])
-        assertThat(sizeBox1.size).isEqualTo(DpSize(100.dp, 50.dp))
-        assertThat(sizeBox1.sizeMode).isEqualTo(SizeMode.Exact)
-        val text1 = assertIs<EmittableText>(sizeBox1.children.single())
-        assertThat(text1.text).isEqualTo("100.0.dp x 50.0.dp")
-
-        val sizeBox2 = assertIs<EmittableSizeBox>(root.children[1])
-        assertThat(sizeBox2.size).isEqualTo(DpSize(50.dp, 100.dp))
-        assertThat(sizeBox2.sizeMode).isEqualTo(SizeMode.Exact)
-        val text2 = assertIs<EmittableText>(sizeBox2.children.single())
-        assertThat(text2.text).isEqualTo("50.0.dp x 100.0.dp")
-
-        val sizeBox3 = assertIs<EmittableSizeBox>(root.children[2])
-        assertThat(sizeBox3.size).isEqualTo(DpSize(75.dp, 75.dp))
-        assertThat(sizeBox3.sizeMode).isEqualTo(SizeMode.Exact)
-        val text3 = assertIs<EmittableText>(sizeBox3.children.single())
-        assertThat(text3.text).isEqualTo("75.0.dp x 75.0.dp")
     }
 
     @Test
-    fun sizeModeExactEmptySizes() = runTest {
+    fun sizeModeExact_emptySizes_usesMinAppWidgetSize() = runTest {
         val options = Bundle()
+
         val root = runTestingComposition {
             CompositionLocalProvider(LocalAppWidgetOptions provides options) {
-                ForEachSize(SizeMode.Exact, minSize) {
+                ForEachSize(SizeMode.Exact, minAppWidgetSize) {
                     val size = LocalSize.current
-                    Text("${size.width} x ${size.height}")
+                    Text(size.toSizeString())
                 }
             }
         }
+
         // When no sizes are available, a single SizeBox for minSize should be created
         assertThat(root.children).hasSize(1)
-        val sizeBox1 = assertIs<EmittableSizeBox>(root.children[0])
-        assertThat(sizeBox1.size).isEqualTo(minSize)
-        assertThat(sizeBox1.sizeMode).isEqualTo(SizeMode.Exact)
-        val text1 = assertIs<EmittableText>(sizeBox1.children.single())
-        assertThat(text1.text).isEqualTo("50.0.dp x 100.0.dp")
+        val sizeBox = assertIs<EmittableSizeBox>(root.children[0])
+        assertThat(sizeBox.size).isEqualTo(minAppWidgetSize)
+        assertThat(sizeBox.sizeMode).isEqualTo(SizeMode.Exact)
+        val text = assertIs<EmittableText>(sizeBox.children.single())
+        assertThat(text.text).isEqualTo(minAppWidgetSize.toSizeString())
     }
 
-    @Config(sdk = [30])
+    @Config(maxSdk = 30)
     @Test
-    fun sizeModeResponsivePreS() = runTest {
-        val options = optionsBundleOf(
-            listOf(
+    fun sizeModeResponsive_onlyMinMaxSizes_usesBestFitsFromInputResponsiveSizes() {
+        runTest {
+            val displaySizes = listOf(
                 DpSize(100.dp, 50.dp),
                 DpSize(50.dp, 100.dp),
                 DpSize(75.dp, 75.dp),
             )
-        )
-        val sizeMode = SizeMode.Responsive(
-            setOf(
+            val responsiveSizes = setOf(
                 DpSize(99.dp, 49.dp),
                 DpSize(49.dp, 99.dp),
                 DpSize(75.dp, 75.dp),
             )
-        )
-        val root = runTestingComposition {
-            CompositionLocalProvider(LocalAppWidgetOptions provides options) {
-                ForEachSize(sizeMode, minSize) {
-                    val size = LocalSize.current
-                    Text("${size.width} x ${size.height}")
+            // Following utility function populates only
+            // AppWidgetManager.OPTION_APPWIDGET_{MIN,MAX}_{HEIGHT,WIDTH} to mimic Pre-S behavior,
+            // so actual possible sizes aren't available.
+            val options = optionsBundleOf(displaySizes)
+            val sizeMode = SizeMode.Responsive(responsiveSizes)
+
+            val root = runTestingComposition {
+                CompositionLocalProvider(LocalAppWidgetOptions provides options) {
+                    ForEachSize(sizeMode, minAppWidgetSize) {
+                        val size = LocalSize.current
+                        Text(size.toSizeString())
+                    }
                 }
             }
-        }
-        // On Pre-S, we extract orientation sizes from
-        // AppWidgetManager.OPTION_APPWIDGET_{MIN,MAX}_{HEIGHT,WIDTH} to find the landscape and
-        // portrait sizes, then find which responsive size fits best for each.
-        assertThat(root.children).hasSize(2)
-        val sizeBox1 = assertIs<EmittableSizeBox>(root.children[0])
-        assertThat(sizeBox1.size).isEqualTo(DpSize(99.dp, 49.dp))
-        assertThat(sizeBox1.sizeMode).isEqualTo(sizeMode)
-        val text1 = assertIs<EmittableText>(sizeBox1.children.single())
-        assertThat(text1.text).isEqualTo("99.0.dp x 49.0.dp")
 
-        val sizeBox2 = assertIs<EmittableSizeBox>(root.children[1])
-        assertThat(sizeBox2.size).isEqualTo(DpSize(49.dp, 99.dp))
-        assertThat(sizeBox2.sizeMode).isEqualTo(sizeMode)
-        val text2 = assertIs<EmittableText>(sizeBox2.children.single())
-        assertThat(text2.text).isEqualTo("49.0.dp x 99.0.dp")
+            // On Pre-S, we extract orientation sizes from
+            // AppWidgetManager.OPTION_APPWIDGET_{MIN,MAX}_{HEIGHT,WIDTH} to find the landscape and
+            // portrait sizes, then find which responsive size fits best for each.
+            assertThat(root.children).hasSize(2)
+            val bestLandscapeFit = DpSize(99.dp, 49.dp)
+            val sizeBox1 = assertIs<EmittableSizeBox>(root.children[0])
+            assertThat(sizeBox1.size).isEqualTo(bestLandscapeFit)
+            assertThat(sizeBox1.sizeMode).isEqualTo(sizeMode)
+            val text1 = assertIs<EmittableText>(sizeBox1.children.single())
+            assertThat(text1.text).isEqualTo(bestLandscapeFit.toSizeString())
+
+            val bestPortraitFit = DpSize(49.dp, 99.dp)
+            val sizeBox2 = assertIs<EmittableSizeBox>(root.children[1])
+            assertThat(sizeBox2.size).isEqualTo(bestPortraitFit)
+            assertThat(sizeBox2.sizeMode).isEqualTo(sizeMode)
+            val text2 = assertIs<EmittableText>(sizeBox2.children.single())
+            assertThat(text2.text).isEqualTo(bestPortraitFit.toSizeString())
+        }
     }
 
-    @Config(sdk = [30])
+    @Config(maxSdk = 30)
     @Test
-    fun sizeModeResponsiveUseSmallestSize() = runTest {
-        val options = optionsBundleOf(
-            listOf(
-                DpSize(100.dp, 50.dp),
-                DpSize(50.dp, 100.dp),
-            )
+    fun responsive_onlyMinMaxSizesAndNoFit_usesMinFromInputResponsiveSizes() = runTest {
+        val displaySizes = listOf(
+            DpSize(100.dp, 50.dp),
+            DpSize(50.dp, 100.dp),
         )
-        val sizeMode = SizeMode.Responsive(
-            setOf(
-                DpSize(200.dp, 200.dp),
-                DpSize(300.dp, 300.dp),
-                DpSize(75.dp, 75.dp),
-            )
+        val responsiveSizes = setOf(
+            DpSize(200.dp, 200.dp),
+            DpSize(300.dp, 300.dp),
+            DpSize(75.dp, 75.dp),
         )
+        // Following utility function populates only
+        // AppWidgetManager.OPTION_APPWIDGET_{MIN,MAX}_{HEIGHT,WIDTH} to mimic Pre-S behavior,
+        // so actual possible sizes aren't available.
+        val options = optionsBundleOf(displaySizes)
+        val sizeMode = SizeMode.Responsive(responsiveSizes)
+        val minResponsiveSize = DpSize(75.dp, 75.dp)
+
         val root = runTestingComposition {
             CompositionLocalProvider(LocalAppWidgetOptions provides options) {
-                ForEachSize(sizeMode, minSize) {
+                ForEachSize(sizeMode, minResponsiveSize) {
                     val size = LocalSize.current
-                    Text("${size.width} x ${size.height}")
+                    Text(size.toSizeString())
                 }
             }
         }
+
         // On Pre-S, we extract orientation sizes from
         // AppWidgetManager.OPTION_APPWIDGET_{MIN,MAX}_{HEIGHT,WIDTH} to find the landscape and
         // portrait sizes, then find which responsive size fits best for each. If none fits, then we
-        // use the smallest size for both landscape and portrait.
-        assertThat(root.children).hasSize(2)
-        val sizeBox1 = assertIs<EmittableSizeBox>(root.children[0])
-        assertThat(sizeBox1.size).isEqualTo(DpSize(75.dp, 75.dp))
-        assertThat(sizeBox1.sizeMode).isEqualTo(sizeMode)
-        val text1 = assertIs<EmittableText>(sizeBox1.children.single())
-        assertThat(text1.text).isEqualTo("75.0.dp x 75.0.dp")
-
-        val sizeBox2 = assertIs<EmittableSizeBox>(root.children[1])
-        assertThat(sizeBox2.size).isEqualTo(DpSize(75.dp, 75.dp))
-        assertThat(sizeBox2.sizeMode).isEqualTo(sizeMode)
-        val text2 = assertIs<EmittableText>(sizeBox2.children.single())
-        assertThat(text2.text).isEqualTo("75.0.dp x 75.0.dp")
+        // use the smallest size for both landscape and portrait - and since same size is used for
+        // both, we effectively compose for single size.
+        assertThat(root.children).hasSize(1)
+        val sizeBox = assertIs<EmittableSizeBox>(root.children[0])
+        assertThat(sizeBox.size).isEqualTo(minResponsiveSize)
+        assertThat(sizeBox.sizeMode).isEqualTo(sizeMode)
+        val text = assertIs<EmittableText>(sizeBox.children.single())
+        assertThat(text.text).isEqualTo(minResponsiveSize.toSizeString())
     }
 
-    @Config(sdk = [31])
+    @Config(minSdk = 31)
     @Test
-    fun sizeModeResponsiveS() = runTest {
-        val sizeMode = SizeMode.Responsive(
-            setOf(
+    fun sizeModeResponsive_usesEachResponsiveInputSize() {
+        runTest {
+            val responsiveSizes = setOf(
                 DpSize(100.dp, 50.dp),
                 DpSize(50.dp, 100.dp),
                 DpSize(75.dp, 75.dp),
             )
-        )
-        val root = runTestingComposition {
-            ForEachSize(sizeMode, minSize) {
-                val size = LocalSize.current
-                Text("${size.width} x ${size.height}")
+            val sizeMode = SizeMode.Responsive(responsiveSizes)
+
+            val root = runTestingComposition {
+                ForEachSize(sizeMode, minAppWidgetSize) {
+                    val size = LocalSize.current
+                    Text(size.toSizeString())
+                }
+            }
+
+            // On S, we create a SizeBox for each given size.
+            assertThat(root.children).hasSize(responsiveSizes.size)
+            responsiveSizes.forEachIndexed { index, dpSize ->
+                val sizeBox = assertIs<EmittableSizeBox>(root.children[index])
+                assertThat(sizeBox.size).isEqualTo(dpSize)
+                assertThat(sizeBox.sizeMode).isEqualTo(sizeMode)
+                val text = assertIs<EmittableText>(sizeBox.children.single())
+                assertThat(text.text).isEqualTo(dpSize.toSizeString())
             }
         }
-        // On S, we create a SizeBox for each given size.
-        assertThat(root.children).hasSize(3)
-        val sizeBox1 = assertIs<EmittableSizeBox>(root.children[0])
-        assertThat(sizeBox1.size).isEqualTo(DpSize(100.dp, 50.dp))
-        assertThat(sizeBox1.sizeMode).isEqualTo(sizeMode)
-        val text1 = assertIs<EmittableText>(sizeBox1.children.single())
-        assertThat(text1.text).isEqualTo("100.0.dp x 50.0.dp")
-
-        val sizeBox2 = assertIs<EmittableSizeBox>(root.children[1])
-        assertThat(sizeBox2.size).isEqualTo(DpSize(50.dp, 100.dp))
-        assertThat(sizeBox2.sizeMode).isEqualTo(sizeMode)
-        val text2 = assertIs<EmittableText>(sizeBox2.children.single())
-        assertThat(text2.text).isEqualTo("50.0.dp x 100.0.dp")
-
-        val sizeBox3 = assertIs<EmittableSizeBox>(root.children[2])
-        assertThat(sizeBox3.size).isEqualTo(DpSize(75.dp, 75.dp))
-        assertThat(sizeBox3.sizeMode).isEqualTo(sizeMode)
-        val text3 = assertIs<EmittableText>(sizeBox3.children.single())
-        assertThat(text3.text).isEqualTo("75.0.dp x 75.0.dp")
     }
 }
\ No newline at end of file
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/TestUtils.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/TestUtils.kt
index 04e1faf..2be2889 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/TestUtils.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/TestUtils.kt
@@ -42,13 +42,13 @@
 import androidx.glance.session.GlobalSnapshotManager
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.currentCoroutineContext
-import kotlinx.coroutines.launch
 import java.util.Locale
 import java.util.concurrent.atomic.AtomicBoolean
 import kotlin.test.assertIs
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.currentCoroutineContext
 import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.launch
 
 internal suspend fun runTestingComposition(
     content: @Composable @GlanceComposable () -> Unit,
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ViewSubject.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ViewSubject.kt
index d8a66f2..caf58cc 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ViewSubject.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/ViewSubject.kt
@@ -34,11 +34,11 @@
 import androidx.glance.layout.Alignment
 import com.google.common.truth.FailureMetadata
 import com.google.common.truth.Subject
-import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertAbout
-import org.robolectric.Shadows.shadowOf
+import com.google.common.truth.Truth.assertThat
 import kotlin.test.assertIs
 import kotlin.test.assertNotNull
+import org.robolectric.Shadows.shadowOf
 
 internal open class ViewSubject(
     metaData: FailureMetadata,
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/LaunchActivityIntentActionTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/LaunchActivityIntentActionTest.kt
index acded2e..b07dfcf 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/LaunchActivityIntentActionTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/LaunchActivityIntentActionTest.kt
@@ -25,11 +25,11 @@
 import androidx.glance.findModifier
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/RunCallbackActionTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/RunCallbackActionTest.kt
index 47f979d..cbc0ff6 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/RunCallbackActionTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/RunCallbackActionTest.kt
@@ -23,13 +23,13 @@
 import androidx.glance.action.ActionParameters
 import androidx.glance.action.clickable
 import androidx.glance.findModifier
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/SendBroadcastActionTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/SendBroadcastActionTest.kt
index 061d7ef..303a6d6 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/SendBroadcastActionTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/SendBroadcastActionTest.kt
@@ -26,11 +26,11 @@
 import androidx.glance.findModifier
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/StartServiceActionTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/StartServiceActionTest.kt
index 431e9f0..a19b0e9 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/StartServiceActionTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/action/StartServiceActionTest.kt
@@ -27,11 +27,11 @@
 import androidx.glance.findModifier
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyColumnTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyColumnTest.kt
index 7da7812..22c6a6c 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyColumnTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyColumnTest.kt
@@ -28,12 +28,12 @@
 import androidx.glance.text.EmittableText
 import androidx.glance.text.Text
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class LazyColumnTest {
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyVerticalGridTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyVerticalGridTest.kt
index 207f899..0e686ff 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyVerticalGridTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/layout/LazyVerticalGridTest.kt
@@ -17,10 +17,11 @@
 package androidx.glance.appwidget.layout
 
 import android.annotation.TargetApi
+import androidx.compose.ui.unit.dp
 import androidx.glance.appwidget.lazy.EmittableLazyVerticalGrid
 import androidx.glance.appwidget.lazy.EmittableLazyVerticalGridListItem
-import androidx.glance.appwidget.lazy.LazyVerticalGrid
 import androidx.glance.appwidget.lazy.GridCells
+import androidx.glance.appwidget.lazy.LazyVerticalGrid
 import androidx.glance.appwidget.lazy.ReservedItemIdRangeEnd
 import androidx.glance.appwidget.lazy.items
 import androidx.glance.appwidget.lazy.itemsIndexed
@@ -29,14 +30,13 @@
 import androidx.glance.layout.Row
 import androidx.glance.text.EmittableText
 import androidx.glance.text.Text
-import androidx.compose.ui.unit.dp
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class LazyVerticalGridTest {
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/RadioButtonBackportTranslatorTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/RadioButtonBackportTranslatorTest.kt
index cddb9bd..cc9f17e 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/RadioButtonBackportTranslatorTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/RadioButtonBackportTranslatorTest.kt
@@ -39,6 +39,7 @@
 import androidx.glance.unit.ColorProvider
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
@@ -48,7 +49,6 @@
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.Shadows.shadowOf
 import org.robolectric.annotation.Config
-import kotlin.test.assertIs
 
 @Config(minSdk = 23, maxSdk = 30)
 @OptIn(ExperimentalCoroutinesApi::class)
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/SwitchBackportTranslatorTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/SwitchBackportTranslatorTest.kt
index ec11aab..fbb441e 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/SwitchBackportTranslatorTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/translators/SwitchBackportTranslatorTest.kt
@@ -24,13 +24,13 @@
 import androidx.glance.GlanceModifier
 import androidx.glance.appwidget.ImageViewSubject.Companion.assertThat
 import androidx.glance.appwidget.Switch
+import androidx.glance.appwidget.SwitchDefaults
 import androidx.glance.appwidget.action.ActionCallback
 import androidx.glance.appwidget.action.actionRunCallback
 import androidx.glance.appwidget.applyRemoteViews
 import androidx.glance.appwidget.configurationContext
 import androidx.glance.appwidget.findView
 import androidx.glance.appwidget.runAndTranslate
-import androidx.glance.appwidget.SwitchDefaults
 import androidx.glance.color.ColorProvider
 import androidx.glance.semantics.contentDescription
 import androidx.glance.semantics.semantics
diff --git a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/unit/ColorProviderTest.kt b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/unit/ColorProviderTest.kt
index 55f242d..dfe943a 100644
--- a/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/unit/ColorProviderTest.kt
+++ b/glance/glance-appwidget/src/test/kotlin/androidx/glance/appwidget/unit/ColorProviderTest.kt
@@ -18,19 +18,19 @@
 
 import android.content.Context
 import androidx.compose.ui.graphics.Color
+import androidx.glance.appwidget.ColorSubject.Companion.assertThat
 import androidx.glance.appwidget.test.R
 import androidx.glance.appwidget.unit.CheckedUncheckedColorProvider.Companion.createCheckableColorProvider
+import androidx.glance.color.ColorProvider
 import androidx.glance.unit.ColorProvider
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
-import androidx.glance.appwidget.ColorSubject.Companion.assertThat
-import androidx.glance.color.ColorProvider
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.robolectric.annotation.Config
-import org.robolectric.RobolectricTestRunner
 import kotlin.test.assertFailsWith
 import kotlin.test.assertIs
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
 
 @RunWith(RobolectricTestRunner::class)
 class ColorProviderTest {
diff --git a/glance/glance-material/build.gradle b/glance/glance-material/build.gradle
index 5a02590..9c75b74 100644
--- a/glance/glance-material/build.gradle
+++ b/glance/glance-material/build.gradle
@@ -1,15 +1,12 @@
-import androidx.build.AndroidXComposePlugin
 import androidx.build.LibraryType
 
 plugins {
     id("AndroidXComposePlugin")
     id("AndroidXPlugin")
+    id("org.jetbrains.kotlin.android")
     id("com.android.library")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
     implementation(libs.kotlinStdlib)
     api("androidx.annotation:annotation:1.4.0")
@@ -26,7 +23,7 @@
 }
 
 androidx {
-    name = "Android Glance Material"
+    name = "Glance Material"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Glance Material 2 integration library." +
diff --git a/glance/glance-material/src/androidMain/kotlin/androidx/glance/material/MaterialThemes.kt b/glance/glance-material/src/main/java/androidx/glance/material/MaterialThemes.kt
similarity index 100%
rename from glance/glance-material/src/androidMain/kotlin/androidx/glance/material/MaterialThemes.kt
rename to glance/glance-material/src/main/java/androidx/glance/material/MaterialThemes.kt
diff --git a/glance/glance-material3/build.gradle b/glance/glance-material3/build.gradle
index 4177903..fbd965c 100644
--- a/glance/glance-material3/build.gradle
+++ b/glance/glance-material3/build.gradle
@@ -1,15 +1,12 @@
-import androidx.build.AndroidXComposePlugin
 import androidx.build.LibraryType
 
 plugins {
     id("AndroidXComposePlugin")
     id("AndroidXPlugin")
+    id("org.jetbrains.kotlin.android")
     id("com.android.library")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
     implementation(libs.kotlinStdlib)
     api("androidx.annotation:annotation:1.4.0")
@@ -26,7 +23,7 @@
 }
 
 androidx {
-    name = "Android Glance Material"
+    name = "Glance Material"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Glance Material integration library." +
diff --git a/glance/glance-material3/src/androidMain/kotlin/androidx/glance/material3/Material3Themes.kt b/glance/glance-material3/src/main/java/androidx/glance/material3/Material3Themes.kt
similarity index 100%
rename from glance/glance-material3/src/androidMain/kotlin/androidx/glance/material3/Material3Themes.kt
rename to glance/glance-material3/src/main/java/androidx/glance/material3/Material3Themes.kt
diff --git a/glance/glance-preview/build.gradle b/glance/glance-preview/build.gradle
index 844dcee..f6be751 100644
--- a/glance/glance-preview/build.gradle
+++ b/glance/glance-preview/build.gradle
@@ -1,15 +1,12 @@
-import androidx.build.AndroidXComposePlugin
 import androidx.build.LibraryType
 
 plugins {
     id("AndroidXComposePlugin")
     id("AndroidXPlugin")
+    id("org.jetbrains.kotlin.android")
     id("com.android.library")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
     implementation(libs.kotlinStdlib)
     api("androidx.annotation:annotation:1.4.0")
@@ -24,7 +21,7 @@
 }
 
 androidx {
-    name = "Android Glance Preview"
+    name = "Glance Preview"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.GLANCE_PREVIEW
     inceptionYear = "2022"
diff --git a/glance/glance-preview/src/androidMain/kotlin/androidx/glance/preview/ExperimentalGlancePreviewApi.kt b/glance/glance-preview/src/main/java/androidx/glance/preview/ExperimentalGlancePreviewApi.kt
similarity index 100%
rename from glance/glance-preview/src/androidMain/kotlin/androidx/glance/preview/ExperimentalGlancePreviewApi.kt
rename to glance/glance-preview/src/main/java/androidx/glance/preview/ExperimentalGlancePreviewApi.kt
diff --git a/glance/glance-preview/src/androidMain/kotlin/androidx/glance/preview/GlancePreview.kt b/glance/glance-preview/src/main/java/androidx/glance/preview/GlancePreview.kt
similarity index 100%
rename from glance/glance-preview/src/androidMain/kotlin/androidx/glance/preview/GlancePreview.kt
rename to glance/glance-preview/src/main/java/androidx/glance/preview/GlancePreview.kt
diff --git a/glance/glance-preview/src/androidMain/kotlin/androidx/glance/preview/Surface.kt b/glance/glance-preview/src/main/java/androidx/glance/preview/Surface.kt
similarity index 100%
rename from glance/glance-preview/src/androidMain/kotlin/androidx/glance/preview/Surface.kt
rename to glance/glance-preview/src/main/java/androidx/glance/preview/Surface.kt
diff --git a/glance/glance-template/build.gradle b/glance/glance-template/build.gradle
index a74f078..6ea5c4c 100644
--- a/glance/glance-template/build.gradle
+++ b/glance/glance-template/build.gradle
@@ -21,12 +21,10 @@
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
+    id("org.jetbrains.kotlin.android")
     id("AndroidXComposePlugin")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
     api(project(":glance:glance"))
     api(project(":glance:glance-appwidget"))
@@ -73,7 +71,7 @@
 }
 
 androidx {
-    name = "Glance Templates Library"
+    name = "Glance Templates"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.GLANCE_TEMPLATE
     inceptionYear = "2021"
diff --git a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/DemoOverrideWidget.kt b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/DemoOverrideWidget.kt
index 5ee0b7f..5c33d7e 100644
--- a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/DemoOverrideWidget.kt
+++ b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/DemoOverrideWidget.kt
@@ -24,15 +24,15 @@
 import androidx.glance.ImageProvider
 import androidx.glance.appwidget.GlanceAppWidget
 import androidx.glance.appwidget.GlanceAppWidgetReceiver
-import androidx.glance.template.GlanceTemplateAppWidget
-import androidx.glance.template.SingleEntityTemplate
 import androidx.glance.background
 import androidx.glance.layout.Alignment
 import androidx.glance.layout.Column
 import androidx.glance.layout.fillMaxSize
+import androidx.glance.template.GlanceTemplateAppWidget
 import androidx.glance.template.HeaderBlock
 import androidx.glance.template.ImageBlock
 import androidx.glance.template.LocalTemplateMode
+import androidx.glance.template.SingleEntityTemplate
 import androidx.glance.template.SingleEntityTemplateData
 import androidx.glance.template.TemplateImageWithDescription
 import androidx.glance.template.TemplateMode
diff --git a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/GalleryDemoWidget.kt b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/GalleryDemoWidget.kt
index 04ec6f2..18c7278 100644
--- a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/GalleryDemoWidget.kt
+++ b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/GalleryDemoWidget.kt
@@ -22,11 +22,11 @@
 import androidx.glance.appwidget.GlanceAppWidget
 import androidx.glance.appwidget.GlanceAppWidgetReceiver
 import androidx.glance.appwidget.action.actionRunCallback
-import androidx.glance.template.GalleryTemplate
-import androidx.glance.template.GlanceTemplateAppWidget
 import androidx.glance.template.ActionBlock
 import androidx.glance.template.AspectRatio
+import androidx.glance.template.GalleryTemplate
 import androidx.glance.template.GalleryTemplateData
+import androidx.glance.template.GlanceTemplateAppWidget
 import androidx.glance.template.HeaderBlock
 import androidx.glance.template.ImageBlock
 import androidx.glance.template.ImageSize
diff --git a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/ListDemoWidget.kt b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/ListDemoWidget.kt
index 354d8b2..0f87618 100644
--- a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/ListDemoWidget.kt
+++ b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/ListDemoWidget.kt
@@ -34,14 +34,14 @@
 import androidx.glance.appwidget.action.ActionCallback
 import androidx.glance.appwidget.action.actionRunCallback
 import androidx.glance.appwidget.state.updateAppWidgetState
-import androidx.glance.template.GlanceTemplateAppWidget
-import androidx.glance.template.ListTemplate
 import androidx.glance.currentState
 import androidx.glance.template.ActionBlock
+import androidx.glance.template.GlanceTemplateAppWidget
 import androidx.glance.template.HeaderBlock
 import androidx.glance.template.ImageBlock
 import androidx.glance.template.ImageSize
 import androidx.glance.template.ListStyle
+import androidx.glance.template.ListTemplate
 import androidx.glance.template.ListTemplateData
 import androidx.glance.template.ListTemplateItem
 import androidx.glance.template.TemplateImageButton
diff --git a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/SingleEntityDemoWidget.kt b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/SingleEntityDemoWidget.kt
index 36e6d78..0e297bf 100644
--- a/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/SingleEntityDemoWidget.kt
+++ b/glance/glance-template/integration-tests/template-demos/src/main/java/androidx/glance/appwidget/template/demos/SingleEntityDemoWidget.kt
@@ -29,12 +29,12 @@
 import androidx.glance.appwidget.action.ActionCallback
 import androidx.glance.appwidget.action.actionRunCallback
 import androidx.glance.appwidget.state.updateAppWidgetState
-import androidx.glance.template.GlanceTemplateAppWidget
-import androidx.glance.template.SingleEntityTemplate
 import androidx.glance.currentState
 import androidx.glance.template.ActionBlock
+import androidx.glance.template.GlanceTemplateAppWidget
 import androidx.glance.template.HeaderBlock
 import androidx.glance.template.ImageBlock
+import androidx.glance.template.SingleEntityTemplate
 import androidx.glance.template.SingleEntityTemplateData
 import androidx.glance.template.TemplateImageWithDescription
 import androidx.glance.template.TemplateText
diff --git a/glance/glance-template/src/main/java/androidx/glance/template/GalleryTemplateLayouts.kt b/glance/glance-template/src/main/java/androidx/glance/template/GalleryTemplateLayouts.kt
index 8d66ce0..8c81d38 100644
--- a/glance/glance-template/src/main/java/androidx/glance/template/GalleryTemplateLayouts.kt
+++ b/glance/glance-template/src/main/java/androidx/glance/template/GalleryTemplateLayouts.kt
@@ -27,7 +27,6 @@
 import androidx.glance.appwidget.lazy.GridCells
 import androidx.glance.appwidget.lazy.LazyVerticalGrid
 import androidx.glance.appwidget.lazy.itemsIndexed
-import androidx.glance.template.GlanceTemplateAppWidget.Companion.sizeMin
 import androidx.glance.background
 import androidx.glance.layout.Alignment
 import androidx.glance.layout.Column
@@ -40,6 +39,7 @@
 import androidx.glance.layout.height
 import androidx.glance.layout.padding
 import androidx.glance.layout.width
+import androidx.glance.template.GlanceTemplateAppWidget.Companion.sizeMin
 import kotlin.math.ceil
 import kotlin.math.pow
 import kotlin.math.roundToInt
diff --git a/glance/glance-template/src/main/java/androidx/glance/template/SingleEntityTemplateLayouts.kt b/glance/glance-template/src/main/java/androidx/glance/template/SingleEntityTemplateLayouts.kt
index f954264..0e17cca 100644
--- a/glance/glance-template/src/main/java/androidx/glance/template/SingleEntityTemplateLayouts.kt
+++ b/glance/glance-template/src/main/java/androidx/glance/template/SingleEntityTemplateLayouts.kt
@@ -22,8 +22,6 @@
 import androidx.glance.GlanceTheme
 import androidx.glance.LocalSize
 import androidx.glance.appwidget.cornerRadius
-import androidx.glance.template.GlanceTemplateAppWidget.Companion.sizeMin
-import androidx.glance.template.GlanceTemplateAppWidget.Companion.sizeS
 import androidx.glance.background
 import androidx.glance.layout.Column
 import androidx.glance.layout.ContentScale
@@ -35,6 +33,8 @@
 import androidx.glance.layout.height
 import androidx.glance.layout.padding
 import androidx.glance.layout.width
+import androidx.glance.template.GlanceTemplateAppWidget.Companion.sizeMin
+import androidx.glance.template.GlanceTemplateAppWidget.Companion.sizeS
 
 // TODO: Define template layouts for other surfaces
 /**
diff --git a/glance/glance-wear-tiles-preview/build.gradle b/glance/glance-wear-tiles-preview/build.gradle
index a5836b4..d05e676 100644
--- a/glance/glance-wear-tiles-preview/build.gradle
+++ b/glance/glance-wear-tiles-preview/build.gradle
@@ -14,18 +14,15 @@
  * limitations under the License.
  */
 
-import androidx.build.AndroidXComposePlugin
 import androidx.build.LibraryType
 
 plugins {
     id("AndroidXComposePlugin")
     id("AndroidXPlugin")
+    id("org.jetbrains.kotlin.android")
     id("com.android.library")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
     api("androidx.wear.tiles:tiles-renderer:1.0.0")
 
@@ -51,7 +48,7 @@
 }
 
 androidx {
-    name = "Android Glance Wear Tiles Preview"
+    name = "Glance Wear Tiles Preview"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.GLANCE_WEAR_TILES
     inceptionYear = "2022"
diff --git a/glance/glance-wear-tiles-preview/src/androidAndroidTest/AndroidManifest.xml b/glance/glance-wear-tiles-preview/src/androidTest/AndroidManifest.xml
similarity index 100%
rename from glance/glance-wear-tiles-preview/src/androidAndroidTest/AndroidManifest.xml
rename to glance/glance-wear-tiles-preview/src/androidTest/AndroidManifest.xml
diff --git a/glance/glance-wear-tiles-preview/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/preview/FirstGlancePreview.kt b/glance/glance-wear-tiles-preview/src/androidTest/kotlin/androidx/glance/wear/tiles/preview/FirstGlancePreview.kt
similarity index 99%
rename from glance/glance-wear-tiles-preview/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/preview/FirstGlancePreview.kt
rename to glance/glance-wear-tiles-preview/src/androidTest/kotlin/androidx/glance/wear/tiles/preview/FirstGlancePreview.kt
index 94ad581..a585320 100644
--- a/glance/glance-wear-tiles-preview/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/preview/FirstGlancePreview.kt
+++ b/glance/glance-wear-tiles-preview/src/androidTest/kotlin/androidx/glance/wear/tiles/preview/FirstGlancePreview.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.unit.dp
-import androidx.glance.action.Action
 import androidx.glance.Button
 import androidx.glance.GlanceModifier
+import androidx.glance.action.Action
 import androidx.glance.layout.Alignment
 import androidx.glance.layout.Column
 import androidx.glance.layout.Row
diff --git a/glance/glance-wear-tiles-preview/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapterTest.kt b/glance/glance-wear-tiles-preview/src/androidTest/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapterTest.kt
similarity index 99%
rename from glance/glance-wear-tiles-preview/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapterTest.kt
rename to glance/glance-wear-tiles-preview/src/androidTest/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapterTest.kt
index 3f4b8fd..debe385 100644
--- a/glance/glance-wear-tiles-preview/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapterTest.kt
+++ b/glance/glance-wear-tiles-preview/src/androidTest/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapterTest.kt
@@ -16,13 +16,13 @@
 
 package androidx.glance.wear.tiles.preview
 
-import androidx.glance.wear.tiles.preview.test.R
 import android.app.Activity
 import android.os.Bundle
 import android.view.ViewGroup
 import android.widget.FrameLayout
 import android.widget.LinearLayout
 import android.widget.TextView
+import androidx.glance.wear.tiles.preview.test.R
 import androidx.test.filters.MediumTest
 import org.junit.Assert
 import org.junit.Before
diff --git a/glance/glance-wear-tiles-preview/src/androidAndroidTest/res/layout/glance_tile_service_adapter_test.xml b/glance/glance-wear-tiles-preview/src/androidTest/res/layout/glance_tile_service_adapter_test.xml
similarity index 100%
rename from glance/glance-wear-tiles-preview/src/androidAndroidTest/res/layout/glance_tile_service_adapter_test.xml
rename to glance/glance-wear-tiles-preview/src/androidTest/res/layout/glance_tile_service_adapter_test.xml
diff --git a/glance/glance-wear-tiles-preview/src/androidAndroidTest/res/values/styles.xml b/glance/glance-wear-tiles-preview/src/androidTest/res/values/styles.xml
similarity index 100%
rename from glance/glance-wear-tiles-preview/src/androidAndroidTest/res/values/styles.xml
rename to glance/glance-wear-tiles-preview/src/androidTest/res/values/styles.xml
diff --git a/glance/glance-wear-tiles-preview/src/androidMain/kotlin/androidx/glance/wear/tiles/preview/ComposableInvoker.kt b/glance/glance-wear-tiles-preview/src/main/java/androidx/glance/wear/tiles/preview/ComposableInvoker.kt
similarity index 100%
rename from glance/glance-wear-tiles-preview/src/androidMain/kotlin/androidx/glance/wear/tiles/preview/ComposableInvoker.kt
rename to glance/glance-wear-tiles-preview/src/main/java/androidx/glance/wear/tiles/preview/ComposableInvoker.kt
diff --git a/glance/glance-wear-tiles-preview/src/androidMain/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapter.kt b/glance/glance-wear-tiles-preview/src/main/java/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapter.kt
similarity index 99%
rename from glance/glance-wear-tiles-preview/src/androidMain/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapter.kt
rename to glance/glance-wear-tiles-preview/src/main/java/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapter.kt
index 929bfba..944d3ed 100644
--- a/glance/glance-wear-tiles-preview/src/androidMain/kotlin/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapter.kt
+++ b/glance/glance-wear-tiles-preview/src/main/java/androidx/glance/wear/tiles/preview/GlanceTileServiceViewAdapter.kt
@@ -27,8 +27,8 @@
 import androidx.glance.wear.tiles.compose
 import androidx.glance.wear.tiles.preview.ComposableInvoker.invokeComposable
 import androidx.wear.tiles.TileBuilders
-import kotlinx.coroutines.runBlocking
 import androidx.wear.tiles.renderer.TileRenderer
+import kotlinx.coroutines.runBlocking
 
 private const val TOOLS_NS_URI = "http://schemas.android.com/tools"
 
diff --git a/glance/glance-wear-tiles/build.gradle b/glance/glance-wear-tiles/build.gradle
index 155bfab..e158ee6 100644
--- a/glance/glance-wear-tiles/build.gradle
+++ b/glance/glance-wear-tiles/build.gradle
@@ -15,18 +15,14 @@
  */
 
 import androidx.build.LibraryType
-import androidx.build.Publish
-import androidx.build.AndroidXComposePlugin
 
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
+    id("org.jetbrains.kotlin.android")
     id("AndroidXComposePlugin")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
 
     api(project(":glance:glance"))
diff --git a/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/CountTileService.kt b/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/CountTileService.kt
index b83d447..4b6af16 100644
--- a/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/CountTileService.kt
+++ b/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/CountTileService.kt
@@ -26,25 +26,25 @@
 import androidx.glance.Button
 import androidx.glance.GlanceId
 import androidx.glance.GlanceModifier
-import androidx.glance.wear.tiles.action.ActionCallback
-import androidx.glance.wear.tiles.action.actionRunCallback
 import androidx.glance.background
 import androidx.glance.currentState
 import androidx.glance.layout.Alignment
 import androidx.glance.layout.Column
 import androidx.glance.layout.Row
 import androidx.glance.layout.Spacer
-import androidx.glance.layout.padding
 import androidx.glance.layout.height
+import androidx.glance.layout.padding
 import androidx.glance.layout.width
 import androidx.glance.semantics.contentDescription
 import androidx.glance.semantics.semantics
 import androidx.glance.state.PreferencesGlanceStateDefinition
-import androidx.glance.wear.tiles.GlanceTileService
 import androidx.glance.text.FontWeight
 import androidx.glance.text.Text
 import androidx.glance.text.TextStyle
 import androidx.glance.unit.ColorProvider
+import androidx.glance.wear.tiles.GlanceTileService
+import androidx.glance.wear.tiles.action.ActionCallback
+import androidx.glance.wear.tiles.action.actionRunCallback
 import androidx.glance.wear.tiles.state.updateWearTileState
 
 private val prefsCountKey = intPreferencesKey("count")
diff --git a/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/TilePreviewActivity.kt b/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/TilePreviewActivity.kt
index 09c3ef0..92bff5a 100644
--- a/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/TilePreviewActivity.kt
+++ b/glance/glance-wear-tiles/integration-tests/demos/src/main/java/androidx/glance/wear/tiles/demos/TilePreviewActivity.kt
@@ -25,9 +25,9 @@
 import android.widget.FrameLayout
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
-import androidx.wear.tiles.manager.TileUiClient
-import androidx.viewpager2.widget.ViewPager2
 import androidx.viewpager2.adapter.FragmentStateAdapter
+import androidx.viewpager2.widget.ViewPager2
+import androidx.wear.tiles.manager.TileUiClient
 
 private const val NUM_PAGES = 4
 private val TILE_PROVIDERS_NAME = arrayOf(
diff --git a/glance/glance-wear-tiles/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/ScreenshotTests.kt b/glance/glance-wear-tiles/src/androidTest/kotlin/androidx/glance/wear/tiles/ScreenshotTests.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidAndroidTest/kotlin/androidx/glance/wear/tiles/ScreenshotTests.kt
rename to glance/glance-wear-tiles/src/androidTest/kotlin/androidx/glance/wear/tiles/ScreenshotTests.kt
diff --git a/glance/glance-wear-tiles/src/androidAndroidTest/res/drawable/oval.xml b/glance/glance-wear-tiles/src/androidTest/res/drawable/oval.xml
similarity index 100%
rename from glance/glance-wear-tiles/src/androidAndroidTest/res/drawable/oval.xml
rename to glance/glance-wear-tiles/src/androidTest/res/drawable/oval.xml
diff --git a/glance/glance-wear-tiles/src/androidAndroidTest/res/values/dimens.xml b/glance/glance-wear-tiles/src/androidTest/res/values/dimens.xml
similarity index 100%
rename from glance/glance-wear-tiles/src/androidAndroidTest/res/values/dimens.xml
rename to glance/glance-wear-tiles/src/androidTest/res/values/dimens.xml
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/AndroidLayoutElement.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/AndroidLayoutElement.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/AndroidLayoutElement.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/AndroidLayoutElement.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/Border.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/Border.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/Border.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/Border.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/CompositionLocals.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/CompositionLocals.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/CompositionLocals.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/CompositionLocals.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/ErrorUiLayout.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/ErrorUiLayout.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/ErrorUiLayout.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/ErrorUiLayout.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/ExperimentalGlanceWearTilesApi.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/ExperimentalGlanceWearTilesApi.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/ExperimentalGlanceWearTilesApi.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/ExperimentalGlanceWearTilesApi.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/GlanceTileService.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/GlanceTileService.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/GlanceTileService.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/GlanceTileService.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/GlanceWearTiles.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/GlanceWearTiles.kt
similarity index 99%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/GlanceWearTiles.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/GlanceWearTiles.kt
index d6dd76e..ac1bded 100644
--- a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/GlanceWearTiles.kt
+++ b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/GlanceWearTiles.kt
@@ -16,11 +16,13 @@
 
 package androidx.glance.wear.tiles
 
-import androidx.glance.LocalState
 import android.content.Context
 import android.util.Log
 import androidx.compose.runtime.BroadcastFrameClock
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.Composition
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.Recomposer
 import androidx.compose.ui.unit.DpSize
 import androidx.glance.Applier
 import androidx.glance.GlanceId
@@ -28,17 +30,15 @@
 import androidx.glance.LocalContext
 import androidx.glance.LocalGlanceId
 import androidx.glance.LocalSize
+import androidx.glance.LocalState
 import androidx.glance.layout.Alignment
 import androidx.glance.layout.EmittableBox
 import androidx.glance.layout.fillMaxSize
+import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.currentCoroutineContext
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
-import androidx.compose.runtime.Composition
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.Recomposer
-import kotlinx.coroutines.CancellationException
 
 /**
  * Object containing the result from composition of [GlanceWearTiles].
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/NormalizeCompositionTree.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/NormalizeCompositionTree.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/NormalizeCompositionTree.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/NormalizeCompositionTree.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/TimelineMode.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/TimelineMode.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/TimelineMode.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/TimelineMode.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/WearCompositionTranslator.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/WearCompositionTranslator.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/WearCompositionTranslator.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/WearCompositionTranslator.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/action/RunCallbackAction.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/action/RunCallbackAction.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/action/RunCallbackAction.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/action/RunCallbackAction.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/CurvedProperties.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/CurvedProperties.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/CurvedProperties.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/CurvedProperties.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/CurvedRow.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/CurvedRow.kt
similarity index 99%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/CurvedRow.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/CurvedRow.kt
index c84930b..58489b1 100644
--- a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/CurvedRow.kt
+++ b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/CurvedRow.kt
@@ -16,12 +16,12 @@
 
 package androidx.glance.wear.tiles.curved
 
-import androidx.glance.GlanceNode
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.graphics.Color
 import androidx.glance.Emittable
 import androidx.glance.EmittableWithChildren
 import androidx.glance.GlanceModifier
+import androidx.glance.GlanceNode
 import androidx.glance.unit.ColorProvider
 
 /**
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/state/GlanceWearTilesState.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/state/GlanceWearTilesState.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/state/GlanceWearTilesState.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/state/GlanceWearTilesState.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/template/SingleEntityTemplateLayouts.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/template/SingleEntityTemplateLayouts.kt
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/kotlin/androidx/glance/wear/tiles/template/SingleEntityTemplateLayouts.kt
rename to glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/template/SingleEntityTemplateLayouts.kt
diff --git a/glance/glance-wear-tiles/src/androidMain/res/drawable/glance_single_entity_bg.xml b/glance/glance-wear-tiles/src/main/res/drawable/glance_single_entity_bg.xml
similarity index 100%
rename from glance/glance-wear-tiles/src/androidMain/res/drawable/glance_single_entity_bg.xml
rename to glance/glance-wear-tiles/src/main/res/drawable/glance_single_entity_bg.xml
diff --git a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BackgroundTest.kt b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BackgroundTest.kt
index 4c7486f..8018dd2 100644
--- a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BackgroundTest.kt
+++ b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BackgroundTest.kt
@@ -16,18 +16,18 @@
 
 package androidx.glance.wear.tiles
 
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.toArgb
 import androidx.glance.BackgroundModifier
 import androidx.glance.GlanceModifier
 import androidx.glance.background
 import androidx.glance.findModifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.toArgb
 import androidx.glance.unit.FixedColorProvider
 import androidx.glance.unit.ResourceColorProvider
 import androidx.glance.wear.tiles.test.R
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import kotlin.test.assertIs
+import org.junit.Test
 
 class BackgroundTest {
     @Test
diff --git a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BorderTest.kt b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BorderTest.kt
index b38fd4e..6f88fd0 100644
--- a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BorderTest.kt
+++ b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/BorderTest.kt
@@ -24,9 +24,9 @@
 import androidx.glance.findModifier
 import androidx.glance.unit.ColorProvider
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
 import org.mockito.kotlin.doReturn
 import org.mockito.kotlin.mock
-import org.junit.Test
 
 class BorderTest {
 
diff --git a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/GlanceTileServiceTest.kt b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/GlanceTileServiceTest.kt
index ce386f6..340ea7b 100644
--- a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/GlanceTileServiceTest.kt
+++ b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/GlanceTileServiceTest.kt
@@ -24,39 +24,39 @@
 import androidx.core.graphics.drawable.toBitmap
 import androidx.datastore.preferences.core.Preferences
 import androidx.datastore.preferences.core.stringPreferencesKey
-import androidx.glance.currentState
 import androidx.glance.GlanceModifier
 import androidx.glance.Image
 import androidx.glance.ImageProvider
+import androidx.glance.currentState
 import androidx.glance.layout.ContentScale
 import androidx.glance.layout.size
 import androidx.glance.state.PreferencesGlanceStateDefinition
 import androidx.glance.text.Text
 import androidx.glance.wear.tiles.test.R
+import androidx.test.core.app.ApplicationProvider.getApplicationContext
 import androidx.wear.tiles.RequestBuilders
 import androidx.wear.tiles.testing.TestTileClient
-import androidx.test.core.app.ApplicationProvider.getApplicationContext
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.io.ByteArrayOutputStream
+import java.time.Instant
+import java.util.Arrays
+import kotlin.test.assertIs
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.guava.await
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
+import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.robolectric.android.util.concurrent.InlineExecutorService
 import org.robolectric.RobolectricTestRunner
 import org.robolectric.Shadows.shadowOf
-import java.io.ByteArrayOutputStream
-import java.time.Instant
-import java.util.Arrays
-import kotlin.test.assertIs
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import org.junit.Ignore
+import org.robolectric.android.util.concurrent.InlineExecutorService
 
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalStdlibApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/TimelineModeTest.kt b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/TimelineModeTest.kt
index ba8bf2b..d159631 100644
--- a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/TimelineModeTest.kt
+++ b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/TimelineModeTest.kt
@@ -17,8 +17,8 @@
 package androidx.glance.wear.tiles
 
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import java.time.Instant
+import org.junit.Test
 
 class TimelineModeTest {
 
diff --git a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/WearCompositionTranslatorTest.kt b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/WearCompositionTranslatorTest.kt
index b167405..306f8c1 100644
--- a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/WearCompositionTranslatorTest.kt
+++ b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/WearCompositionTranslatorTest.kt
@@ -70,6 +70,10 @@
 import androidx.glance.wear.tiles.test.R
 import androidx.test.core.app.ApplicationProvider.getApplicationContext
 import com.google.common.truth.Truth.assertThat
+import java.io.ByteArrayOutputStream
+import java.util.Arrays
+import kotlin.test.assertIs
+import kotlin.test.assertNotNull
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
@@ -77,10 +81,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import java.io.ByteArrayOutputStream
-import java.util.Arrays
-import kotlin.test.assertIs
-import kotlin.test.assertNotNull
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/action/RunCallbackActionTest.kt b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/action/RunCallbackActionTest.kt
index b4598ab..f0a9c37 100644
--- a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/action/RunCallbackActionTest.kt
+++ b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/action/RunCallbackActionTest.kt
@@ -26,13 +26,13 @@
 import androidx.glance.wear.tiles.curved.GlanceCurvedModifier
 import androidx.glance.wear.tiles.curved.clickable
 import androidx.glance.wear.tiles.curved.findModifier
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/curved/CurvedRowTest.kt b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/curved/CurvedRowTest.kt
index 3dfc764..1c6a622 100644
--- a/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/curved/CurvedRowTest.kt
+++ b/glance/glance-wear-tiles/src/test/kotlin/androidx/glance/wear/tiles/curved/CurvedRowTest.kt
@@ -30,12 +30,12 @@
 import androidx.glance.unit.ColorProvider
 import androidx.glance.wear.tiles.runTestingComposition
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class CurvedRowTest {
diff --git a/glance/glance/build.gradle b/glance/glance/build.gradle
index 68ec157..0a8e136 100644
--- a/glance/glance/build.gradle
+++ b/glance/glance/build.gradle
@@ -15,18 +15,14 @@
  */
 
 import androidx.build.LibraryType
-import androidx.build.Publish
-import androidx.build.AndroidXComposePlugin
 
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
+    id("org.jetbrains.kotlin.android")
     id("AndroidXComposePlugin")
 }
 
-// Disable multi-platform; this will only be used on Android.
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project, /* isMultiplatformEnabled= */false)
-
 dependencies {
 
     api("androidx.annotation:annotation:1.2.0")
@@ -88,7 +84,7 @@
 }
 
 androidx {
-    name = "Glance Core Library"
+    name = "Glance"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Glance allows developers to build layouts for remote surfaces using a Jetpack " +
diff --git a/glance/glance/src/androidAndroidTest/AndroidManifest.xml b/glance/glance/src/androidTest/AndroidManifest.xml
similarity index 100%
rename from glance/glance/src/androidAndroidTest/AndroidManifest.xml
rename to glance/glance/src/androidTest/AndroidManifest.xml
diff --git a/glance/glance/src/androidAndroidTest/kotlin/androidx/glance/session/GlanceSessionManagerTest.kt b/glance/glance/src/androidTest/kotlin/androidx/glance/session/GlanceSessionManagerTest.kt
similarity index 100%
rename from glance/glance/src/androidAndroidTest/kotlin/androidx/glance/session/GlanceSessionManagerTest.kt
rename to glance/glance/src/androidTest/kotlin/androidx/glance/session/GlanceSessionManagerTest.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/Applier.kt b/glance/glance/src/main/java/androidx/glance/Applier.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/Applier.kt
rename to glance/glance/src/main/java/androidx/glance/Applier.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/Background.kt b/glance/glance/src/main/java/androidx/glance/Background.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/Background.kt
rename to glance/glance/src/main/java/androidx/glance/Background.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/Button.kt b/glance/glance/src/main/java/androidx/glance/Button.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/Button.kt
rename to glance/glance/src/main/java/androidx/glance/Button.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/CompositionLocals.kt b/glance/glance/src/main/java/androidx/glance/CompositionLocals.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/CompositionLocals.kt
rename to glance/glance/src/main/java/androidx/glance/CompositionLocals.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/Emittables.kt b/glance/glance/src/main/java/androidx/glance/Emittables.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/Emittables.kt
rename to glance/glance/src/main/java/androidx/glance/Emittables.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/GlanceComposable.kt b/glance/glance/src/main/java/androidx/glance/GlanceComposable.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/GlanceComposable.kt
rename to glance/glance/src/main/java/androidx/glance/GlanceComposable.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/GlanceId.kt b/glance/glance/src/main/java/androidx/glance/GlanceId.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/GlanceId.kt
rename to glance/glance/src/main/java/androidx/glance/GlanceId.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/GlanceModifier.kt b/glance/glance/src/main/java/androidx/glance/GlanceModifier.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/GlanceModifier.kt
rename to glance/glance/src/main/java/androidx/glance/GlanceModifier.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/GlanceNode.kt b/glance/glance/src/main/java/androidx/glance/GlanceNode.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/GlanceNode.kt
rename to glance/glance/src/main/java/androidx/glance/GlanceNode.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/GlanceTheme.kt b/glance/glance/src/main/java/androidx/glance/GlanceTheme.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/GlanceTheme.kt
rename to glance/glance/src/main/java/androidx/glance/GlanceTheme.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/Image.kt b/glance/glance/src/main/java/androidx/glance/Image.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/Image.kt
rename to glance/glance/src/main/java/androidx/glance/Image.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/Utils.kt b/glance/glance/src/main/java/androidx/glance/Utils.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/Utils.kt
rename to glance/glance/src/main/java/androidx/glance/Utils.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/Visibility.kt b/glance/glance/src/main/java/androidx/glance/Visibility.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/Visibility.kt
rename to glance/glance/src/main/java/androidx/glance/Visibility.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/action/Action.kt b/glance/glance/src/main/java/androidx/glance/action/Action.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/action/Action.kt
rename to glance/glance/src/main/java/androidx/glance/action/Action.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/action/ActionParameters.kt b/glance/glance/src/main/java/androidx/glance/action/ActionParameters.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/action/ActionParameters.kt
rename to glance/glance/src/main/java/androidx/glance/action/ActionParameters.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/action/LambdaAction.kt b/glance/glance/src/main/java/androidx/glance/action/LambdaAction.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/action/LambdaAction.kt
rename to glance/glance/src/main/java/androidx/glance/action/LambdaAction.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/action/StartActivityAction.kt b/glance/glance/src/main/java/androidx/glance/action/StartActivityAction.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/action/StartActivityAction.kt
rename to glance/glance/src/main/java/androidx/glance/action/StartActivityAction.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/color/ColorProviders.kt b/glance/glance/src/main/java/androidx/glance/color/ColorProviders.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/color/ColorProviders.kt
rename to glance/glance/src/main/java/androidx/glance/color/ColorProviders.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/color/DayNightColorProviders.kt b/glance/glance/src/main/java/androidx/glance/color/DayNightColorProviders.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/color/DayNightColorProviders.kt
rename to glance/glance/src/main/java/androidx/glance/color/DayNightColorProviders.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/Alignment.kt b/glance/glance/src/main/java/androidx/glance/layout/Alignment.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/Alignment.kt
rename to glance/glance/src/main/java/androidx/glance/layout/Alignment.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/Box.kt b/glance/glance/src/main/java/androidx/glance/layout/Box.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/Box.kt
rename to glance/glance/src/main/java/androidx/glance/layout/Box.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/Column.kt b/glance/glance/src/main/java/androidx/glance/layout/Column.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/Column.kt
rename to glance/glance/src/main/java/androidx/glance/layout/Column.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/ContentScale.kt b/glance/glance/src/main/java/androidx/glance/layout/ContentScale.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/ContentScale.kt
rename to glance/glance/src/main/java/androidx/glance/layout/ContentScale.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/Padding.kt b/glance/glance/src/main/java/androidx/glance/layout/Padding.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/Padding.kt
rename to glance/glance/src/main/java/androidx/glance/layout/Padding.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/Row.kt b/glance/glance/src/main/java/androidx/glance/layout/Row.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/Row.kt
rename to glance/glance/src/main/java/androidx/glance/layout/Row.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/SizeModifiers.kt b/glance/glance/src/main/java/androidx/glance/layout/SizeModifiers.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/SizeModifiers.kt
rename to glance/glance/src/main/java/androidx/glance/layout/SizeModifiers.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/layout/Spacer.kt b/glance/glance/src/main/java/androidx/glance/layout/Spacer.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/layout/Spacer.kt
rename to glance/glance/src/main/java/androidx/glance/layout/Spacer.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/semantics/SemanticsModifier.kt b/glance/glance/src/main/java/androidx/glance/semantics/SemanticsModifier.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/semantics/SemanticsModifier.kt
rename to glance/glance/src/main/java/androidx/glance/semantics/SemanticsModifier.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/semantics/SemanticsProperties.kt b/glance/glance/src/main/java/androidx/glance/semantics/SemanticsProperties.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/semantics/SemanticsProperties.kt
rename to glance/glance/src/main/java/androidx/glance/semantics/SemanticsProperties.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/session/GlobalSnapshotManager.kt b/glance/glance/src/main/java/androidx/glance/session/GlobalSnapshotManager.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/session/GlobalSnapshotManager.kt
rename to glance/glance/src/main/java/androidx/glance/session/GlobalSnapshotManager.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/session/IdleEventBroadcastReceiver.kt b/glance/glance/src/main/java/androidx/glance/session/IdleEventBroadcastReceiver.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/session/IdleEventBroadcastReceiver.kt
rename to glance/glance/src/main/java/androidx/glance/session/IdleEventBroadcastReceiver.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/session/InteractiveFrameClock.kt b/glance/glance/src/main/java/androidx/glance/session/InteractiveFrameClock.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/session/InteractiveFrameClock.kt
rename to glance/glance/src/main/java/androidx/glance/session/InteractiveFrameClock.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/session/Session.kt b/glance/glance/src/main/java/androidx/glance/session/Session.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/session/Session.kt
rename to glance/glance/src/main/java/androidx/glance/session/Session.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/session/SessionManager.kt b/glance/glance/src/main/java/androidx/glance/session/SessionManager.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/session/SessionManager.kt
rename to glance/glance/src/main/java/androidx/glance/session/SessionManager.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/session/SessionWorker.kt b/glance/glance/src/main/java/androidx/glance/session/SessionWorker.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/session/SessionWorker.kt
rename to glance/glance/src/main/java/androidx/glance/session/SessionWorker.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/session/TimerScope.kt b/glance/glance/src/main/java/androidx/glance/session/TimerScope.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/session/TimerScope.kt
rename to glance/glance/src/main/java/androidx/glance/session/TimerScope.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/state/GlanceStateDefinition.kt b/glance/glance/src/main/java/androidx/glance/state/GlanceStateDefinition.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/state/GlanceStateDefinition.kt
rename to glance/glance/src/main/java/androidx/glance/state/GlanceStateDefinition.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/text/FontFamily.kt b/glance/glance/src/main/java/androidx/glance/text/FontFamily.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/text/FontFamily.kt
rename to glance/glance/src/main/java/androidx/glance/text/FontFamily.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/text/FontStyle.kt b/glance/glance/src/main/java/androidx/glance/text/FontStyle.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/text/FontStyle.kt
rename to glance/glance/src/main/java/androidx/glance/text/FontStyle.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/text/FontWeight.kt b/glance/glance/src/main/java/androidx/glance/text/FontWeight.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/text/FontWeight.kt
rename to glance/glance/src/main/java/androidx/glance/text/FontWeight.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/text/Text.kt b/glance/glance/src/main/java/androidx/glance/text/Text.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/text/Text.kt
rename to glance/glance/src/main/java/androidx/glance/text/Text.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/text/TextAlign.kt b/glance/glance/src/main/java/androidx/glance/text/TextAlign.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/text/TextAlign.kt
rename to glance/glance/src/main/java/androidx/glance/text/TextAlign.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/text/TextDecoration.kt b/glance/glance/src/main/java/androidx/glance/text/TextDecoration.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/text/TextDecoration.kt
rename to glance/glance/src/main/java/androidx/glance/text/TextDecoration.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/text/TextStyle.kt b/glance/glance/src/main/java/androidx/glance/text/TextStyle.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/text/TextStyle.kt
rename to glance/glance/src/main/java/androidx/glance/text/TextStyle.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/unit/ColorProvider.kt b/glance/glance/src/main/java/androidx/glance/unit/ColorProvider.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/unit/ColorProvider.kt
rename to glance/glance/src/main/java/androidx/glance/unit/ColorProvider.kt
diff --git a/glance/glance/src/androidMain/kotlin/androidx/glance/unit/Dimension.kt b/glance/glance/src/main/java/androidx/glance/unit/Dimension.kt
similarity index 100%
rename from glance/glance/src/androidMain/kotlin/androidx/glance/unit/Dimension.kt
rename to glance/glance/src/main/java/androidx/glance/unit/Dimension.kt
diff --git a/glance/glance/src/androidMain/res/values-night-v31/colors.xml b/glance/glance/src/main/res/values-night-v31/colors.xml
similarity index 100%
rename from glance/glance/src/androidMain/res/values-night-v31/colors.xml
rename to glance/glance/src/main/res/values-night-v31/colors.xml
diff --git a/glance/glance/src/androidMain/res/values-night/colors.xml b/glance/glance/src/main/res/values-night/colors.xml
similarity index 100%
rename from glance/glance/src/androidMain/res/values-night/colors.xml
rename to glance/glance/src/main/res/values-night/colors.xml
diff --git a/glance/glance/src/androidMain/res/values-v31/colors.xml b/glance/glance/src/main/res/values-v31/colors.xml
similarity index 100%
rename from glance/glance/src/androidMain/res/values-v31/colors.xml
rename to glance/glance/src/main/res/values-v31/colors.xml
diff --git a/glance/glance/src/androidMain/res/values/colors.xml b/glance/glance/src/main/res/values/colors.xml
similarity index 100%
rename from glance/glance/src/androidMain/res/values/colors.xml
rename to glance/glance/src/main/res/values/colors.xml
diff --git a/glance/glance/src/test/kotlin/androidx/glance/ApplierTest.kt b/glance/glance/src/test/kotlin/androidx/glance/ApplierTest.kt
index 3536a0d..2fb71b2 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/ApplierTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/ApplierTest.kt
@@ -17,9 +17,9 @@
 package androidx.glance
 
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import org.junit.Test
-import kotlin.test.assertFailsWith
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class ApplierTest {
diff --git a/glance/glance/src/test/kotlin/androidx/glance/ImageTest.kt b/glance/glance/src/test/kotlin/androidx/glance/ImageTest.kt
index 95473a6..07f00f1 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/ImageTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/ImageTest.kt
@@ -26,13 +26,13 @@
 import androidx.glance.semantics.SemanticsProperties
 import androidx.glance.unit.ColorProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
+import kotlin.test.assertNotNull
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
-import kotlin.test.assertNotNull
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class ImageTest {
diff --git a/glance/glance/src/test/kotlin/androidx/glance/action/ActionParametersTest.kt b/glance/glance/src/test/kotlin/androidx/glance/action/ActionParametersTest.kt
index 450a8b4..fcf114d 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/action/ActionParametersTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/action/ActionParametersTest.kt
@@ -17,10 +17,10 @@
 package androidx.glance.action
 
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import kotlin.test.assertFailsWith
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
+import org.junit.Test
 
 class ActionParametersTest {
     @Test
diff --git a/glance/glance/src/test/kotlin/androidx/glance/action/ActionTest.kt b/glance/glance/src/test/kotlin/androidx/glance/action/ActionTest.kt
index 6100675..763fe17 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/action/ActionTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/action/ActionTest.kt
@@ -22,6 +22,8 @@
 import androidx.glance.findModifier
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
+import kotlin.test.assertNotNull
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
@@ -29,8 +31,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertIs
-import kotlin.test.assertNotNull
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance/src/test/kotlin/androidx/glance/layout/BoxTest.kt b/glance/glance/src/test/kotlin/androidx/glance/layout/BoxTest.kt
index 85c4897..aefe11d 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/layout/BoxTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/layout/BoxTest.kt
@@ -20,12 +20,12 @@
 import androidx.glance.GlanceModifier
 import androidx.glance.findModifier
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class BoxTest {
diff --git a/glance/glance/src/test/kotlin/androidx/glance/layout/ColumnTest.kt b/glance/glance/src/test/kotlin/androidx/glance/layout/ColumnTest.kt
index 72455c3..7f72a59 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/layout/ColumnTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/layout/ColumnTest.kt
@@ -21,12 +21,12 @@
 import androidx.glance.findModifier
 import androidx.glance.unit.Dimension
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class ColumnTest {
diff --git a/glance/glance/src/test/kotlin/androidx/glance/layout/PaddingTest.kt b/glance/glance/src/test/kotlin/androidx/glance/layout/PaddingTest.kt
index 8b6a366..f8f75be 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/layout/PaddingTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/layout/PaddingTest.kt
@@ -21,9 +21,9 @@
 import androidx.glance.GlanceModifier
 import androidx.glance.findModifier
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
 import org.mockito.kotlin.doReturn
 import org.mockito.kotlin.mock
-import org.junit.Test
 
 class PaddingTest {
 
diff --git a/glance/glance/src/test/kotlin/androidx/glance/layout/RowTest.kt b/glance/glance/src/test/kotlin/androidx/glance/layout/RowTest.kt
index 0078c36..7ee121e 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/layout/RowTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/layout/RowTest.kt
@@ -21,12 +21,12 @@
 import androidx.glance.findModifier
 import androidx.glance.unit.Dimension
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class RowTest {
diff --git a/glance/glance/src/test/kotlin/androidx/glance/layout/SizeModifiersTest.kt b/glance/glance/src/test/kotlin/androidx/glance/layout/SizeModifiersTest.kt
index 7dedee8..706ce82 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/layout/SizeModifiersTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/layout/SizeModifiersTest.kt
@@ -21,8 +21,8 @@
 import androidx.glance.findModifier
 import androidx.glance.unit.Dimension
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import kotlin.test.assertIs
+import org.junit.Test
 
 class SizeModifiersTest {
     @Test
diff --git a/glance/glance/src/test/kotlin/androidx/glance/layout/SpacerTest.kt b/glance/glance/src/test/kotlin/androidx/glance/layout/SpacerTest.kt
index c301c0e..9ebc68a 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/layout/SpacerTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/layout/SpacerTest.kt
@@ -21,12 +21,12 @@
 import androidx.glance.findModifier
 import androidx.glance.unit.Dimension
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class SpacerTest {
diff --git a/glance/glance/src/test/kotlin/androidx/glance/state/StateDefinitionTest.kt b/glance/glance/src/test/kotlin/androidx/glance/state/StateDefinitionTest.kt
index 91a054a..7082643 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/state/StateDefinitionTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/state/StateDefinitionTest.kt
@@ -21,12 +21,12 @@
 import androidx.datastore.preferences.core.stringPreferencesKey
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertNotNull
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.test.assertNotNull
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(RobolectricTestRunner::class)
diff --git a/glance/glance/src/test/kotlin/androidx/glance/text/TextTest.kt b/glance/glance/src/test/kotlin/androidx/glance/text/TextTest.kt
index 2c08b78..9b7516d 100644
--- a/glance/glance/src/test/kotlin/androidx/glance/text/TextTest.kt
+++ b/glance/glance/src/test/kotlin/androidx/glance/text/TextTest.kt
@@ -24,12 +24,12 @@
 import androidx.glance.layout.runTestingComposition
 import androidx.glance.unit.Dimension
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertIs
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
 import org.junit.Test
-import kotlin.test.assertIs
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class TextTest {
diff --git a/gradle.properties b/gradle.properties
index 47646f4..ae6d975 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -33,6 +33,11 @@
 # Do restrict compileSdkPreview usage
 androidx.allowCustomCompileSdk=false
 
+# Comma-delimited lists of project path prefixes which have been opted-out of or opted-in to the
+# Suppress Compatibility migration. Opt-out is matched first.
+androidx.suppress.compatibility.optout=core/core/,core/core-telecom/
+androidx.suppress.compatibility.optin=core
+
 # Don't warn about needing to update AGP
 android.suppressUnsupportedCompileSdk=UpsideDownCake,VanillaIceCream,33
 
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 2aacccb..5eab30c 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -2,13 +2,13 @@
 # -----------------------------------------------------------------------------
 # All of the following should be updated in sync.
 # -----------------------------------------------------------------------------
-androidGradlePlugin = "8.1.0-beta01"
+androidGradlePlugin = "8.1.0-beta02"
 # NOTE: When updating the lint version we also need to update the `api` version
 # supported by `IssueRegistry`'s.' For e.g. r.android.com/1331903
-androidLint = "31.1.0-beta01"
+androidLint = "31.1.0-beta02"
 # Once you have a chosen version of AGP to upgrade to, go to
 # https://developer.android.com/studio/archive and find the matching version of Studio.
-androidStudio = "2022.3.1.12"
+androidStudio = "2022.3.1.13"
 # -----------------------------------------------------------------------------
 
 androidGradlePluginMin = "7.0.4"
@@ -30,7 +30,7 @@
 dexmaker = "2.28.3"
 dokka = "1.8.10-dev-203"
 espresso = "3.6.0-alpha01"
-espressoDevice = "1.0.0-alpha04"
+espressoDevice = "1.0.0-alpha05"
 grpc = "1.52.0"
 guavaJre = "31.1-jre"
 hilt = "2.44"
diff --git a/gradle/verification-keyring.keys b/gradle/verification-keyring.keys
index 5945d66..a595aaf 100644
--- a/gradle/verification-keyring.keys
+++ b/gradle/verification-keyring.keys
@@ -1,448 +1,557 @@
-
-
-pub    012579464D01C06A
-sub    CB6D56B72FDDF8AA
+pub    1861C322C56014B2
+sub    9A347756830C4541
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFgnlA8BCACVtx3oLXcanfvwtMRwal6pLQ8IVMG9+fr4xGdbSHXCRNbosDa5
-agU7WeQMPhusSxJGaA3w7NOdjAwD/LeHADhDPeI6llJg1Fb3EyqH0NZaODKU/Or/
-dID/i1onAX1dE914J4lf3XvIAxGiAjmr3UvWO9RiFxRUkecMAMlCBp2FuHuvxkcn
-Mk8q9dP9Ef360wu8X5rj0kgP6vPhgl9/RhuPsUxlazb2Kn9Zxi/RmDKDiH/vDuwy
-WdRGFOR1OPV7l3Ws01nrs4vKd2v5rsUmsjvQ8ldxdrA1xzX4IszHRDgSC9PI8ItZ
-1VlbaKjE0L03acPfFTg/wRFSF5zsrGNbTmq1ABEBAAG5AQ0EWCeUDwEIAMGWqQT5
-ccT/Q1OypoOQGEZn+oRkgEdnzt8mjo7aOXd6pkNTkt3+LCkmb8Pp3/a3iYEfvSvB
-Zbb2JbY9xnmM8jBucWnow1iwEPxGhUuu3jlIpRsCwLk+utLkMALRkooXqanDoVRW
-xuVeFYN0as8nndgWiJT30innN4vfaR3x3E6/nS57zp5IggxZYsXTRHb25kaof9lg
-lHyXeypW7quKOP4SeES70PVVUnYZBlLpnX8a2msRtJiouWxCv/kHnYsjW62vc7nq
-vWAsSsfBT61TVx7yI9CckVFBnkpG1I8C9WpfcR+j9yauptgUMfrfDTFg3Aip7czM
-SoL4Jpu7jBcXy9UAEQEAAYkBHwQYAQoACQUCWCeUDwIbDAAKCRABJXlGTQHAapGT
-B/oCoCsuJ7617gpcuEAXxWTBfcXKo4z8ObBek2RUh0AY9aXjRYSzwwbtVFRC01Es
-r7R9b5ScY7W1TDQBKL0OSRZ3jwy7/hA7k8P7xAp3mC4+FdHaHMH8nGz2IbUjGWl3
-Yp01NRn4jc8gcnHnqcUff7PXsRMUtJ3dnbsIYOrBAbWKld07RVEQUyafgUfdF9cx
-e6P/slSZxATJrlIPveB5bgcVDMMw1UQNqJL9LWP2IM7xcljOBHY7jqwqnQ4pRER9
-2VzhLdtsdwF0H1SuERpDxBAuibchMoCfQ3HER+K2mTUoJ04xog7MQs2aaMwSbem1
-LMvNBZ/mfF7QMYfMV2n7rbIk
-=PoPV
+mQGiBEGVK0ERBADwhGhmOMvSgvGaqHW3ial0NS80ZXyE1EeNL6ke/WrXHB4dT6if
+inoAuUgRz3v9Na4rjSQ8YVFjn3NaZq1i8RM2KJOUU8ZkJ2AsrH6fqStjofLTd5ng
+iQaq2wLM5rTQfdjLsGQb1iDNDyCXU56+/l4mFZ2JiEGCq3Re9EFHelRBKQCg/7k0
+BIfyoFVTHw39PKaDBmCYF2sD/3CMD0J/WldhBM7gLOndH9/YEQaEMy+PJNXcfTWN
+WLygGPSOQdNBulyLkvcFIZjUTxFVakh7FbjMq3dsAP1oqthwmK7L8A1zsvRgp/TI
+4YMHkZSkgcs0PBBby+h/lpgRrWmtwjTPzql/K5xX4VSRS+umHye/7R+4ZEH7mABa
+m/ZABADkPGG2ECvfjNosPQDHZVFuF9oVaske0OjzxI+rU6sR1fJKtbOPl9d+bgz+
+df7rZ3mwppkPX2r/muUbd0CM1Se10sK7ZAoPYmWqHX+vB/oj3Jq+iqb6M5mDZzEz
+6h4hdnaGERyxbktZvhRV7Psco9CGi8o7RFUQTR79Y5ElnBavqLkCDQRBlStBEAgA
+9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt
+90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcw
+Yc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZr
+M2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEs
+tSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8
+vYlLIhkmuquiXsNV6TILOwACAggAw6kL0PhPZ/EPI0mPfmIYeaKUgTB8q47nDKY4
+6wDs1l/msVJHAVwGEBHuxmbC7r/qfAgfSW+/Lj4XbSLCqaZIWSu6lfY43IOIYXD4
+pe5cCnWkQij+h3LxRR6uDmBr5cwheHEuB2sMFU5lJiiQR1+eXYkPNK4FgVQpHLWe
+boODAlTf0j8gRR+aTs5eWXqfSA+UEsXpn6453bfZKELXkRmEznb4xyGWJaLW2Mlm
+aRlauYvc61M7FK8z15SSZbq6oictpnEcfkgnBxcNza3jZQV7WOWZ3BlD1nKQ661s
+bmS81/nLnxbov9ASs25K2olXBsHkERhjMnERedvv7avlmBwi1ohMBBgRAgAMBQJB
+lStBBRsMAAAAAAoJEBhhwyLFYBSyGTQAn2u/CvPzKwRv1FUkPYR751j9PGwDAJ4k
+Pt2uco8an9pO9/oqU6vlZUr38w==
+=alQS
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    02216ED811210DAA
-sub    8C40458A5F28CF7B
+pub    571A5291E827E1C7
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGNBGADx6IBDADoHin1LGQ8dhnlhfNCBZ3IyXS2NpR1VjmYtHSlh1hGsPcmHuwo
-1mLA6JzXF7NuK3Y52pbTr6vz9bAap8Ysjq/3UJeiDbf7FvmO5xAEVUhrpc7AEY7G
-Wygi+HqK5OaNhxUr7OmHY4N2/NxXiYGD2PNU3mXkOszpQJk3yVKgjmGnv0zbTpn2
-wwsXygc87nG/h2R4YQ80m9UknkPR63vRwPnsTwovG9CAb8RyHq+6P81vKE/U5GUJ
-TzV1BDY95niypsCYja2QR4Gi5TKlpsUjT4sT32l6/CqOhcpwO05pTv0fvoHDbDx6
-/gHivgyVUyPbQzUwYfMYoINePOaX37okHQE8n5QPPx6HmXfIhumKbXi6ppVPjPG6
-cB2Lq/F6UKHlttiwWgSIiLDC+UbFCVvc41Lrydbt/2eXoBGxWbU6DUSGnefKymP3
-c3IsgdzeP11tlfaxLVz60lomXMeyyXD41QzeuyzUNvoSgiqSE6BO9EqeCyk1/n+O
-Are5EFnyLBjChgkAEQEAAbkBjQRgA8eiAQwAuC4Z9laL4sRX8FTseTzd5/8AqBKk
-gtrZjW5onrse1hWpkjeB42qfhVrfUorkpGY9N0xo7jZT7PhXuOEB1WRcJPHA11Q4
-166WkHRDv7IwPGAQr6LsJAAlZYkV2d3BXoWoS4ATCH1jyXaxKT/jNGBazs+Nqprh
-ypL6X2xOIqKozehjTMfD1cFzFzoaZvD+G9qdk0w7qikUIla0Y3ADswtMLH32mszw
-9g0ddFSimmWQ8scVcaalt9k9ATX7zMJKmYaYi6fWsH/Le13DhJgQMjjh1BeUguIP
-r6pRoBZ/5xJxJ7OKIRk4pk6h7BImGMKTCONICf41i4kGsZMoRb2XvLDgSNs9gYKp
-N9+J7TYTeqofBxxQLH6cVplBPoNCkJun6scYJLWAepr4u0K5RTnU7y9iigiTTFeV
-xbSjuxIEzLk9gVKD1hsbtkLVmkxMljqJG5El3I7qu7eM2c1ufo22BFjHom1CmtWd
-oai56nxG5zv1WDsMRJukaXbDwbpSkb45rj09ABEBAAGJAbwEGAEIACYWIQSFaclc
-rcUIsJ/pDzACIW7YESENqgUCYAPHogIbDAUJA8JnAAAKCRACIW7YESENqpGYC/0Q
-NoVAXMkCa0Iei/kGdzZNLKpiG0nZIJGuml9T7eMyp0QQXzenOahCGhna4QQvSBER
-UZb9HzP/0xY93C8FEXv7Ns972XdeOvYjpOLG6euRwWLD//c5Ah7siSgUJ7CFPBHj
-r9mnZXzYjhvXT0eJlb96j0rBuSblG/NXu1oEJPySqP7vkK2ZZsHNoGfSoGlGtush
-YtUP568KMzz4LsnOfSLnkOc9Hh0qydipY+ocfQQhh7tLUzFsMbG80yWw4/2JVicT
-nTosdl4J9WyI3Xuqa423XEAC25dS0aQNeDa4lpfmOOyj5ViJISdutlVC3zmtkpXE
-xUXqb+AcsNDOuulUhVjw7KpKX7xUXJM+LSg57lfyGHiLejDHvPAXBSfzFxT9ZDxO
-92MhvR7JqP1Z0SvZ/yZ1RAidKaNJs3o1Dk/WbuxnRYjyf4URhfUVeH8tykNDIMJr
-gY4uKjJu0S9RuzG1PVw85w5f6UDZlJ01gGvtT81JFrizhvS9t0HoPbDcDhG5iVE=
-=Lmqo
+mQGiBE9iFawRBACJb4OMk3zqMDNvSJKYZ8fGYrPq7yCcf/ykKDkGb2dtPnAZGkSp
+3mmNlTsU6s9ARn7BtkhIuM5TdbLs+z+okX62h3F0WW3h+CpfIXyKSgl7uWbhZ5G8
+RSCCRr7A8m6y83npkTVDW6m2oFN2cjFwPLm/vxg1gu5pO+NCwz5iBRHdewCg1idO
+Gl6gBAZVNteCRMVnGnX4EhMD/RaYBO2j511h7gR+p+6BBeJTEIA1+tsi+GhTBkS9
+mUMGuD9Z8PyvwL7quGQyXJ/kTe3eB6iyDFn0oemB1w736FQe3vcIX6eePOEiDZs5
+1Uepv7bXI4wn1i3Z3kzynXNKcjCd5ZxAmML5VlQ0zWeE0W18reCjt1P5q5xxBFjw
+0L8WA/9aPi4d5VPakzuDvxfKK29BogScTLn2C3fpEnqWsTfpoWSkNXkRsoB4jUU4
+oIqRFMTxwsjUmjVUPOG+YqoeAaVpj+RBpp+V+CqgfNWpnH4caxzODE9f+6RYRCGm
+LSq/6OmgZg6t38M5XWVpvk7Ixygs6Vrd99VZyIQPJwSBM/pvAw==
+=dENk
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    358A4ABAE72947C2
+uid    Jens Nyman <jnyman@google.com>
 
-pub    0315BFB7970A144F
-sub    7CD1B9BD808646B7
+sub    B8EB751F2C19011D
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-/x9PJbkJSwWj3BCUK98Giw5/tdG3Ib1y
-=OVOn
+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
+FFbW42hpI8TDRfB4oHWyTsM6zYXNXw==
+=zYIg
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    F1F111AF65925306
+uid    Luke Hutchison <luke.hutch@gmail.com>
 
-pub    0315BFB7970A144F
-uid    EE4J Automated Build <tomas.kraus@oracle.com>
-
-sub    7CD1B9BD808646B7
+sub    EF375EEBBDEFD775
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-ov8fTyW5CUsFo9wQlCvfBosOf7XRtyG9cg==
-=qap1
+mQENBFS2J+0BCADZI8RYk32YeO9gnEkY9RN+4dKb+H1AR4v+IGxmy0UYy+O8bo4m
+YzkQHTlPpEPGe10/quKk1embDifEfNa9mwcSJl+XUPFlTrSA97SR31mdyK/Ua146
+GKMW0F6v8aCgLUlm9BCJo/OmOat2jsc94SuKnPiRRywhmapte/8o9t7/0GghqLyj
+X+Ifz4WSKyKZ8oe9mRFg1ZIA+z52a8QnfyI8WS8bpGHM/dXkBXZpzIDlrfKvoZYb
+I2DcbOotJK/ZzStAZ81e4E/q2BEw96NUKJC5X+G8qahEFNJDcJz33UAxLiTFqWmw
+iKLqy8oL8p9qPYlx0IAXoW/GxV7E0rBoA95pABEBAAG0JUx1a2UgSHV0Y2hpc29u
+IDxsdWtlLmh1dGNoQGdtYWlsLmNvbT6JATgEEwECACIFAlS2J+0CGwMGCwkIBwMC
+BhUIAgkKCwQWAgMBAh4BAheAAAoJEPHxEa9lklMGaJIH/jjzVBHF28G+gYmktFGh
+zhclmHsEvfqNEgaWkjyUOVTlccA5Ej+8GWrumWqX9PJbHoZVJWeVikkjFsTltspx
+bQkIv+hygvqIyMBJLks32pLUCXlWrxOnTFTljWzPhy3TMeBzE5Zgt8YhHwyuLGRu
+roOnYz/1VDY5SHB8ST37VAr4lZdwslAwW8RLXAXfQfbKnMCwjNBZf4FmllZk6GWM
+3YyaTuWtQN0qEJ7y1BZJYZwKC7EFGk4viTuoU3gFC5uI6idcmFFBWxgYmnkbQilc
+akbBGU7qhsTyyAWxPlKZg7ldQoLFrZgoO9CAdmLLzbCyPM0w3MpPa4Szw1nyJb5r
+Qjm5AQ0EVLYn7QEIAMde+nVUcozJy9dzLCUpn91SCoWld/wTaSckxTnVMcr4uNLl
+JI/2PFjMb9ya91grr1yuwqSG3jE8P0Qdk9Bi6t6NkMIGUSJuzyIipsDDWaiCfjWx
+s7seFd9c+rgcH6r9CaUbNRfUrPqEZSeL+RDwIIz1gQkXmosF94DjZHP9abZYObH1
+/Or64CSRD8Ocf6kTRndwJOZkRdDtUX5NPFSiU17E/DoEkyryuXMR+Ci0b/hjQ4Jn
+riGeyy6c0StWQUW18SEYPV0j3VyRRUcOLhJajEu8KU4Xaaxgb/2X7o/BosjjQ8BP
+PUdTz2wRluU/1tKUQ8D+O8QH7dCR3lJt76kKWbsAEQEAAYkBHwQYAQIACQUCVLYn
+7QIbDAAKCRDx8RGvZZJTBvJ/B/9vrvZR1pFqDfux/ezze7ovgYF3jkxfQj3Hqgx1
+GvLYdvNacZiJG1bfGRuoEvLPv8lPIfEBTSqJGxzRiEl33eUUXlatI20Dh4oeRYUE
+70hCfqRn7cqITJ7nXwctMZGtwSLduNa4+cjKdSaWq6kffpQVSLrjvJYyxk8td+Nv
+CLYiTDnyybAmSGge44RppDjwGsQ+9X8wyd5b9hwcBQOY4UTm/6RPDJF66KPlPaU2
+qy8NeQB5AcO6goAdGI9WwOJuxg9IzULwpCvRYB0chLKkGOBh0vuyQbHoRmI6gs2K
+/I3i0q8Df30ObL7oBALsr2QfkkKatq4qx+xU7QMdeMs8STRj
+=CCVw
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    BEDE11EAF1164480
+uid    Joe Schmetzer <joe@exubero.com>
 
-pub    0374CF2E8DD1BDFD
-uid    Sonatype, Inc. (Sonatype release key) <dev@sonatype.com>
-
-sub    F2E4DE8FA750E060
+sub    4BE257B370130000
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-pA==
-=OkOT
+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
+33wjXAW0h+qq7/7Yq3w3/7ncv9sWIzU=
+=NtIH
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    7FE9900F412D622E
+uid    Wouter van Oortmerssen <aardappel@gmail.com>
 
-pub    056ACA74D46000BF
-uid    Norman Maurer <norman@apache.org>
-
-sub    DECB4AA7ECD68C0E
+sub    AE6B5325E74ED034
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGiBEoo3BYRBACXE2oGRA58Ml6s+kvfk6n/AJ+5OFeRT/Xelco/cpdxOVF5LkRk
-yd+vR2+F9ldBlH7CSTCmrdZIN3M3zrcWndrk/OQkCxNWVnE/a1li7L3G9nYr011k
-MwMM8MLkdf1Wr+FBunf1qpxPYuydfjWGFL749hYr4uQ8RbFDRQcmWLYCRwCgl+ur
-E28AmiICPcje59DNKHZZxd8D/Rk1LcZojARyMPjEsPOVSOh6kOaJQ/FOKN0j97k7
-ZqA+4C+OnIONSy22uMia9xO5g8oMLyHaRiA4S7JSIypYfX7JMCmwQCSLM/oQ5zct
-tsY7tGzCRBA7UVmW8uCDDZGmmzYIGQ7h1vcabgOFQ8wsteMHW3F0tU1K6oQut71x
-5KowA/9LeDjhl3tKizJn5hKf+NR8kTMcFFVMk8tf9/ZdqCG2gVTuB0EFimH47j1+
-YFWftvKg2IwF0qRnYuhpXn3kAtkzSwDr2T4r5CpDjttq+oBwhJ+N6lcPRoU26ijr
-nQ61Ek0jFFE5vfU7UODSLYXYbjf8McM6BtksY1SWfFBU5cVzgrQhTm9ybWFuIE1h
-dXJlciA8bm9ybWFuQGFwYWNoZS5vcmc+iGAEExECACAFAkoo3BYCGwMGCwkIBwMC
-BBUCCAMEFgIDAQIeAQIXgAAKCRAFasp01GAAvwh2AJ9HdFLGMuAGkk/wSv6dr6gM
-Xw32iACaA/Ez8jdn6/8kp/RpqMtUnl9c/Pq5AQ0ESijcFhAEAJIGBbVgN1O73XVP
-oGlZdqPd9n5QOjIy9cF6h5GBXEUDy3T+iVh1ak6Oqn1g3Wd0v2XgQ40gKWe/8O3M
-FhWkJbLENKhGyc9dLIpXDt9WIKfV3PNbblI/FmEYFqeJDNZUfaf/F3L3Lw0Z2YE1
-f0Kr3J64xuxJACUjAzXkssEqVUQ7AAMGA/9Tfa8rJD06apF3u22qd7DNao6UlUeo
-RIdluCpHfZQ10nEDTnFz5wNzHBlZDDoaketUZ5IY72hRKMcLMWRI5MaktQb9XvFp
-zhiGplsFGnzCBI99AqTsxy3m45AdVxbcVy2Lfeh9gzS+ZnL6m49Xf7mQuqQJatIX
-mWyplftyWc3XDYhJBBgRAgAJBQJKKNwWAhsMAAoJEAVqynTUYAC/qnQAoI/8QMuu
-PGrvivKDTCk2tA60w51gAJ9brzNybLCs1HYoPtjY97nOEy0tmw==
-=2BgH
+mQENBFnyVlkBCACe8zGkIlDV0dUKmk9PWe2Hw8qM9DdPbtpUOpmUOidGY5svQDL3
+eqvHk85TbxqFEe3Qbjjt+R+iApFuXy5kmueXTvwCm7nAU+k/pZtPuzHyhDs3iFFH
+8LCI/dOpd04LXLpuoeLCjBqPlOM+Pxiiu9h9tEnJaJzuXcw9SY3I/puj7qIEwxsJ
+W23gdPtYij9If1ht9gtTsDq9s7VbCM5vL0ofM8JVPilnE4oWuw9hjgIfT/QotbuS
+wPo+1ExZUfaKYPvMxi2kY3LZU3hlp6P5AxU+eI31yaYjtL+0lu66jTD6s8lwmF87
+QqjjxiHwic05//tp2Pk3PIZCoQurfEL6ZHhhABEBAAG0LFdvdXRlciB2YW4gT29y
+dG1lcnNzZW4gPGFhcmRhcHBlbEBnbWFpbC5jb20+iQE4BBMBAgAiBQJZ8lZZAhsD
+BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB/6ZAPQS1iLtSPB/4l5s/avevY
+mNnuEp/97qiG8kWOvFfz3C5QP5lVmsj5hiK6Hllc1zjZxaS+TCdrsvH/zKZvgmv5
+9oy5nNHIu/sZB36JnLbE01ieM8hzoW5H7lADJ0JDI6wRbhJc9oXGA/1ZAudT+Jt8
+K2Ijzc2XOzHqE4j5vF0Sc9NWEM+OnAwkrbnIgK98ZiWTF807+/uobtanAUEWbFjb
+0wSNgSX8IvEj3rr/ZaIbf0Ymp/YObY94jVdBqFE1B1GR2TRp1YiAy+2BqoFE599v
+pmnWjZiT3fKL7V6XT98tyk9+XCFlQT7R5v+T4e+1Ad8j0RxsXUFKUScBPySrqEFl
+gMdy83QUeyhQuQENBFnyVlkBCACk/9GoJK23GwRKF8kx4h2oOkb63mP7DSPmsgBG
+CxvhH04oE9Rg+SPWKTjx7E0XFytyCuBYn9BoyGVPp45X5k4Vvj6sNJsSuyW7ExJf
+1AA7Xqa0mo1tjsUPSeAWyhruZCTaHGmnY6ClA3Bsy4E1C8sC0UapW9dNAf66SDp0
+jWeEkU366fa0RZexz92nIDCTQv4YZkYROX63P6Se7hNtontmKA6JajD+46OLGgNV
+gdSKZpO0PMyD8VMg5RUN8PXHqZ68gJ1ihjUJ499sXFuAaXKcxkbb+ajD6fYPQ2jy
+4S1tQpUGmBKAdvthMenEShmwk6lsTN86yH5q9tTNwMWjTbqFABEBAAGJAR8EGAEC
+AAkFAlnyVlkCGwwACgkQf+mQD0EtYi7nngf/aPDwJQG7NICIuMue/QlWCUG4zW2F
+ZL1iCKMYhfVnz29lM/5AG4Y0SlcRkgEigizBQUkeLVHaj3obLlxr1I5yrjaOwD/f
+ruk3roC1pi+1i0sv0/eZJvyVN3Ta3pjzYDT/Qw09Ao5py7HksJsvAM8tIbw5hnmx
+q091M8/zdgIi/H38QFBWKNYaPkC6WMxWv0M47Kttcfv1DBF/NmsMzts45BDoE98C
+VB/5M2eLVVrbHlj4QqpLDTeSYwcTb7JVSKrNbyp2Ws27l1oNhMexztBivHz1OLxG
+JY8odrCtuxK3JMllDdln/HHdwrp6h7SDRdxR6llX74zIdctZVsii8eJHvA==
+=o0Pq
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    BF1518E0160788A2
+uid    Karl Heinz Marbaise (ASF Key) <khmarbaise@apache.org>
 
-pub    0729A0AFF8999A87
-sub    6005789E24E5AD1E
-sub    6A0975F8B1127B83
-sub    3FF44D37464BBB7E
+sub    C163B490C5CDC967
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-khD1P8/4BedOSN7DqsnvIUfFaQ==
-=33eI
+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
+=v6l+
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    C7CA19B7B620D787
+uid    Stephen Connolly <stephenc@apache.org>
 
-pub    07D3516820BCF6B1
-uid    Ben Manes <ben.manes@gmail.com>
-
-sub    11F4CE313A637CC1
+sub    7679164AA2590985
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBF3HgdMBCAC3ET5ipFXdZ9GGMbtsCQ3HGT40saajsNDOdov2nMJxzKkVe3wk
-sN3bpgbsqBU9ykVkIhX8zV5+v8DOBzkV0pJ2eLjFa9jBPvNjV+KoK2BAI5pzNzYg
-sHPwo1aRXdI0MvCy+7iaIiiGF4/O16AhU4LmALHnaRQZCyuN6VOQ8rlqNvcczwUf
-J2DQeLHqR/tsch7S01hGpPAptBeu19PyAlQsntYN0yLCLKoe9dFXWCDkvd1So5LF
-6So+ryPqupumBbh4WxCmTp9qwDJYJItjAE0zyPe890FurOtxrFTwtRtX6d6qGKkY
-/B4T3r0tTE1EiOUpmSnxmGNItMh7/l5UtnHjABEBAAG0H0JlbiBNYW5lcyA8YmVu
-Lm1hbmVzQGdtYWlsLmNvbT6JAU4EEwEIADgWIQRjXuYnNF88HdQisuIH01FoILz2
-sQUCXceB0wIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRAH01FoILz2sdoo
-B/0YUh73jUMl14MjWvp9zrFHN8h+LqB4NMQcP93RdPTtDKi0a+0h8gQtm0D+K49Q
-BQbFztOObfZS3kdJ3VOqmodScWrGtMU3HsYT2ioQalqbYvl9FIPDrlOjHaZgwgyJ
-We0DVKHRApbtIh+NxTpQUJtanxgF60ZtOoToZe8XMGc9LaCZcrFxK/AlMdDMgUCx
-qzBbXhAcvut2bJVL5B4kLNMABrbUuFMjTNI4JxvgTXKL/jNk6XPtCjdmgIh7mT/G
-Mpu9t3i1zegAPdM5N/MAgiGHqm+blANLniSAbZja8Ny7211fwOYoJ546VPwDjL7B
-rBlymB3COoYZhql2DcBBg39cuQENBF3HgdMBCACu3VQKKmagcPbcMZOqbDXE5iK3
-0G742rCpf/j3ywnwTZJQ/58HtAi8+/fXxUhTHswoON2TwiiHrHAkObe+K9A+jv0E
-xjKVMmQ/sOCYWZDEGMth4yJnzDbT1Tlm/l2i5Lv0ZaD7fTEhtprQNuU06dveTeJs
-zDyqtK9T80mvI4+GH59wM80l1y6uj8KA4pY0PdSFgbyS9iAFADGsUsc6t1KiZ5W1
-9odMjDPlQtJ20pm5CvJlDZbYNRJ54CSldZikRvmNRg5mWdRLNfbRMFDLFfcdYLdO
-WJXnAt9cKFJC9P//ItZFrlhu3akTH//HF2kxQNW61Sd92/xtFUD/2tN1GlXfABEB
-AAGJATYEGAEIACAWIQRjXuYnNF88HdQisuIH01FoILz2sQUCXceB0wIbDAAKCRAH
-01FoILz2saySCACibIpnls5wJkfX1B/7tDjWk2hEGZYcASr0xp/DDwSgJ5edByuQ
-NQF7RHuCk0ke6IQGfytMLJlXeEIu79DvgPakxBP5iG+c095FbhRu+9nCEkRqQvop
-4fA7ZdhuerOyuObWz8+o3Z2RywWPXlK+F/9iJiO/qtvmdORuikJtN9VxgvAUvANZ
-RtlzjL296p0TJzGqXhyer46CHl/Yj7TtX6EpnZDgiaQbOWRFOZ5x81xI79bQD7Ew
-DzfrwQHbjQDkqhkwOoV6Wq239ZaHh6p7GXHnQkDMQ0H/7Y2tw6PH5VM8fDJkJKF2
-PIukJrUXa06KqrdZ9YxqvSmu5UY6tMSRwGWp
-=/wFN
+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
+=H7JA
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    083891AD4774845A
-uid    Eclipse Project for JAXB <jaxb-dev@eclipse.org>
-
-sub    8118B3BCDB1A5000
+pub    6449005F96BC97A3
+sub    D3DBC823BE4819ED
+sub    0162FE0CF6E18BD4
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-XCfM
-=930f
+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
+FPjHFhRiWd3YGlydu4Dtzwfkmu43CTGp
+=Pq8A
 -----END PGP PUBLIC KEY BLOCK-----
 
-
 pub    09A79E1E15A04694
 uid    Torsten Curdt (Code Signing Key) <tcurdt@vafer.org>
 
@@ -501,6 +610,245 @@
 =++aH
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    59A252FB1199D873
+uid    Tagir Valeev <lany@ngs.ru>
+
+sub    92BD2D0B5B21ABA2
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFUBG7QBCADRWXf0Fw05qRhM4cRnGKlOW1ecue1DCxHAtFwoqmAXyTCO+tI0
+MEW5SyXUkX6FsWLl6A2y+KgOs669ogzfQ0rnZMEt4HisRp8wpgk3GWR1/9aKYz/c
+ymy2N3BP9cz2fJ9+3PpBccUPL+ydFKpcnEnIwiQK+p9JjEWzJBlrdUc/UEJ0R+n/
+5r/+0+BHiTEMvjAF6/SwyntpTWpu7iEzLv/pfdCuhFKa4yn+9Ciwe3wGtSiue+dh
+tqKcd4YxED3oAswObBca3CC2HWWsUEH6EmfT1jUdfy1cq4X5x7AZ26oFYfG+odqW
+W5dcB+13VkJtJRzQTO/2HKtITJYC65a1jKt3ABEBAAG0GlRhZ2lyIFZhbGVldiA8
+bGFueUBuZ3MucnU+iQE5BBMBAgAjBQJVARu0AhsDBwsJCAcDAgEGFQgCCQoLBBYC
+AwECHgECF4AACgkQWaJS+xGZ2HNZJQf9ExetK9g1IbC/4L5qGhVzfyNik7m9DJ/m
+/fHibCK6pnAP7wHl3QStpcGfWwTDTnY079tdZKnZFk8OOtendA0WWdS/9OO1DZ8u
+kzI3PusfDOsIl/9U35dTgfQmFs5Nxi3/xYBphsNrzafEW+reUImADxleCxHhBGM3
+U8zAgnBGVQO+oBGQ/XLQ2xpGEW3lxytDgx90eCryFKhlqvE0Gv59ofHTcNjEkDcg
+9ki+dx5B25jpcMD7VzCgSaETs031gDlp7jdiEgJa6ot7o+chhcUlD/1UMZnHgT8h
+806xh4+ddiHD6WIXAwiFxsOhJO7o3Ovv4g9eg3VOW6kp6zjhfxrddrkBDQRVARu0
+AQgA2wgu5T1wf8QgQv46nAhpyv/Lf/osb6iTxIoMciUXpxKm6xKxYzov5EZxmC8I
+NHRLQQSJ3jjLLzAUy+hhKWxccs3hKof+ukshzgIPwN0ItatoppFmuG2rM1ZKxjES
+CqjufXE7r5yxTXtUkCuemQY8egDuihmVoatzTL+uWRNcf74sqqHyeI70NqnjqksW
+t2C+7IpurUHp9oB/YkxHK+rLb5+7B9UZNzsMRRQW3AaDsWeIMXTOX7esUbW532Qf
+xRbP4bALAVPqqFWCWA6a0mDDUJJg14OxC8MHhhMk2cyd4xJ0zoKQRxGEunb6XP3T
+7BHQr9r1AETU0+5sBpEHa5BHhQARAQABiQEfBBgBAgAJBQJVARu0AhsMAAoJEFmi
+UvsRmdhza4kIAMccH8GZzjxh7XGXpPqds0SIwJ2akhtr4k0WcRZy56rjGTTGhddR
+KkGeMtpY9CtVkodd0zGaZHcGOG0W+wuB5qPKktSRUOUoyR0ZC2xZcvRpuvhw2gwO
+JdRHGVteDFnz6Eiz+spJYq26usIPZXgxcuxBXjECuHV7OQkUQMDe1EbOOODODkzC
+auYvsfk9x3q9XUp7rQGa8Vi++NHBPhTDU4PReW6485pqJOJuE8QJznMvEHP355FK
+xFvFxw0TM9glLxeX36EjDtjs53Xzhw6h7HF2gj8rnaQfsDnJ8SPaRcJmbm1jKXIq
++AalzNZ1m6hXe7XGD63v9CWCFMygkADQfkY=
+=P9c9
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    9987B20C8F6A3064
+uid    mkruskal <mkruskal@google.com>
+
+sub    80CFA7C482552DC3
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+vyMjyB4YL48bYbjwFEar/jLCQJj/Dg==
+=Mtq5
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    CB43338E060CF9FA
+sub    C59D5D06CF8D0E01
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+DEWnnCsLSDubW3nXYsAeK/6d
+=/Ri5
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    586654072EAD6677
+uid    Joel Orlina (Sonatype, Inc.) <jorlina@sonatype.com>
+
+sub    2E74CACB6918A897
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBE1VSkkRBACkCgvt26sMi+0X+EOJDMqdK0Sziy06k47LJf1jOg4tTZ2T9QtP
+OZ8fD+va/O5+q8Kna993jzcO5n0Nv+R/K3+MvUqSmdITshCIjBt3cC0n6FWndGyl
+jY7rOmzdNnvSkMGE3V2fQ18stkJRleqk3EuWwv+EwpxcYeVfCO+UCJGz5wCgtqnZ
+JYdRHcDkDYaIZ4eizpbV4d0D/3cgBdpcbSrwIGtft+lDxacaJrWpT5Jh5P0gLlYu
++6PFz8ZIC4+/aOSi4S4mgZxk8dBL8ZBqLqcW9rc//CYKNtPq33sdf9vxcusMIXvS
+PBODjDpoOsTJwy51fgCEL14qnp0v14y9p7ejjN5+GipiNY/JHo9S9kTdVhMYqt6x
+6a6MA/40vMejIbZ4q3Ia63jbHPi348fLDq3Gp8Wos7Sh2HnLC+pRdC46qX/5wL4t
+Vzj78yW9FdH5yeeE6nQLOBWh7PnSfMt2wYHoarEnkkkycP7WLpRME7qsBYqkNUNa
+2EQZSy8DnGiayYDij1YPNUHI9kpK6H/e3puhmgNkzrZj26T85LQzSm9lbCBPcmxp
+bmEgKFNvbmF0eXBlLCBJbmMuKSA8am9ybGluYUBzb25hdHlwZS5jb20+iGAEExEC
+ACAFAk1VSkkCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBYZlQHLq1md1Cy
+AJ9Vwm/4tCSR2iaLU6fCV4lnJgDnrgCeIDEdpte6HmX4eIWPHHxULLLP4Zq5Ag0E
+TVVKWRAIAOsb3rg3GoeIBQtJdgRUfULCVNEguSJMESQv9xnKgEGeQX9ItVfdMLrv
+Lbf4ySyIJ1ShBR8k80Xk8M6C2XA+c14AVUrtPUHmseO53TY0n2VjZD5ms7TOY/cq
++DheTBLzlxNsK85q0jZXOK2+Sliv9aRBIl/83c1iS5kBM76fzLWZqsiuqQsLUvEv
+oCmUI2WSzhJ3s4s3nCHHtq+sQkcaLap3FMH1IPozFFJWSlJSsIeE62AxR4XrfGs1
+y6YxA9AEhu/6QWA20T55loV9TT4geDLywxE68eu2rM867Bl2cfU6+tW4RW0Ssg2O
+Ymv/+dNe1YErRgKm5JAjWRxp0Jzc47sAAwUIAOgOfDKe+6VLQrVYXwUZ84ipBGgp
+/JwqajPzxa8YodPH0Cd8bfw236Qcd9R5MuyjNbi4M2RJ3pLlNGasICt2qloPNJqC
+miTcVGXXeaK3haG7Du6bXo7eaJl+pMXRoz3JTrdTPLHOhPgN7EeWtkAv/QbbONps
+nNcyiuvund1KX1JaoGj712xk7IrDO47eA7Vc+ply08owIlnjtO3XG0o4GbkZx7Eg
+iaG805jbRUz9Q4FHnIE3Ditmo4BrLsy6pG2kJyv0YkSM6pBSFpc/K85WDV4fEwPd
+AS3hl0rlThFuxgSHPH1Z7OqNdDnbAKp8xEKnAmb/3hx147fU+VoFd3qcudeISQQY
+EQIACQUCTVVKWQIbDAAKCRBYZlQHLq1md0BDAKCz+pK77m8VG8F4ZWyDthIjE4d/
+zACgsgdtDggyRGK8+BKm7HDnceh97sA=
+=7XCx
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    0F9FE62F88E938D8
+sub    BF6D15D3F1BF7BCF
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBGGNmd8BDADSpbdIfqzkUNAeYlP0nUw/HFU/v+/aydtjUioAi/KxYt2FOMi6
+gk1LOJzHBubv8bF79mlN6sXrnq2lV/MuqvN9DrTAQ4u4Dh0pgbLK6jbxDWPGrYIo
+ov24dU+1SXCInq/7X71M3RT3/1L1kTL5WNCqKkhxLNi0bwjyAHR+xOdhPqkeTrZK
+xZB4KvIzI3cIYoSw2tFn/iAlzzaUyQY+JkqBbcObbzyMt8ai7TdXKHM5mAiuMt8k
+MkfE/kZqTWHimPYrl1+c3kXqn5iTFfJIRklXqnXixz9qFYhvUqWS87fFRUJdPCz9
+Iw4/UrnJi4qzEN8vrEJpnDgfS5Ey+io9xcqd9P66dFbVHvMl4uTo4hLZVz8dkWSt
+CkCtAfntHAp4Zf+1vIZzbAgseO52D1mP7wO0QccgqdX0w5Jboc2kkM67VsWskRXL
+FO+c25gXdtZk26d0P3f1j3XuDm3pPWbgAk17HMyMpqla3xBQiLA7J2l41YwblV21
+uzJnqAoChPJhP6cAEQEAAbkBjQRhjZnfAQwA1bQfDtbglXMOgziqSdWAQ5jsNWuI
+cTAKcJ6Bg1d3a/B6sm2IvCJzae007hnGf66RgkiDBKpqsMjb5yXyGVL9lq+KHgPw
+3H8TMRiVKxXqr+Q2s9Y00PR5PgqccZLZuUrbBJwK73u3+vfhG4ugubQPnRd8sPwT
+X/OPXuuq25FuZb5T40Yh+ZjNstnBOEpWZ6bq8h2kMWm67zrYwKdBOoHRU6Nnu2fO
+8CuL42lQmkvpTIu4ttjbLyYZMYjHnO+OpK014H9B3DsRvgAQT7Qn5pgyxwF+AuiC
+qdRP+vFzO78gvDRpUEQp03ZsBK3LJVXqQY8Nk9zCPDz0T0/1zL5ZHFXdzpxVPxMI
+9cpugE0Qr45qh5hktz+cjE6/DYbGu8W/bqDRzXjxz9FUA5A/sv/hs+PZ0QVRFARR
+cooe/arzitxxEc1X59IBCQieH9xVzC6gEeI6jPgiWo+gEBItQt/1Uf4CXOgStTbp
+zM/GCJdB4VSQXehMNKI0zBCsEtBWgDPgAlwVABEBAAGJAbwEGAEKACYWIQSVEVGX
+xSJ8CIcpnQAPn+YviOk42AUCYY2Z3wIbDAUJA8JnAAAKCRAPn+YviOk42NADDACt
+BHrDFjhuffic4gBoMkgSHmG2xfWrSo/jo568hJdUvwUKlLix9o3iqmPGy0jLkaGZ
+4w/t3eFrTGdNPuJd6zQ1fDNm7alCnyUYzoxct4yOu7mmI107HPuxANGvmV9hfyH+
+UYJtNwM6XljTIhnKdYa6H5j9jlwMR7pw8Y9QACVozBMsaPQygjQhli4FhXA203g3
+lxidoGZUi/xrV4vO3Wlo+7VC8n9WJZrYq4jhlD6Ntdhbvf8bEb4L0cn0ybgREehE
+7THETI9Os8WQVGbU9sS1b4YdOXZEOS4WS8NQKRzLemo2YiUNIdI6QaRWCvJyZCfE
+eWWoEJoPMKZldSIhU5UMtTaM7f2n18sCn9rXBscSzeO6MlcyaUQnMI9Kai4C6+t+
+TrIhZrSJQQMrR9lF+zP/YJKvW2wJBw8jhJr04dgXt4G7VrmhS4/HbtmLjQsl6bb7
+y8VfvPmrEviA+o1KeRSeIsx+lPdI+IogX6iLvlBMPtILw/k1aqanI+aTZYFOORw=
+=NL3+
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    C727D053C4481CF5
+uid    TFLite Support <tflite-support-github-robot@google.com>
+
+sub    29E792953D515FC5
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=zvsL
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    0CC0B712FEE75827
 uid    AssertJ <assertj@assertj.github.io>
@@ -538,1045 +886,271 @@
 =+MWL
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    43203BE58F49479D
+uid    Viktor Klang <viktor.klang@gmail.com>
 
-pub    0D3B328562A119A7
-sub    C45D01093DCFC371
+sub    1364C5E2DF3E99C5
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-UGyrigQZu0gUujkogzGo8f7UOwHRBoA=
-=7aNS
+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
+4g==
+=dPSa
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    873A8E86B4372146
+uid    Olivier Lamy <olamy@apache.org>
 
-pub    0DA8A5EC02D11EAD
-sub    71499A87DC1FF84B
+sub    1AFEC329B615D06C
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGiBE3LMfMRBAD90h69D8yyPWaSoAyh2mOOOZ/XH0isuBpDZCWptemlMHgImqdQ
-2sXLXYT1bJKmSaMw+yKjp8J/NYk69EbmSK1C2nypLQtWhUmXXd3XVYw6hrG/dGvi
-gjkS5eq8L04f5CSuXO7r1eLTOch9iDl/ESaI5Nhq9A3mRQIhQalum+FjzwCgx0PK
-hoC4MVPVGXzOQPc5sG4jzAUD/0OX9c/yKQqjHUs38HTCgrjseM40iPhp8NfbWenP
-IwUMSWXE3lz0MMeKrGcEOcZOGWsjyepkLHXwj8DDOeGxhfh9bhFRJssdfzOCKBpf
-6S70A3fanzqOAvddxCqF/zOwDaieDmWvVntVpmZO9d+pgR/sZN0JgSIm7qGDdNqG
-Aq6eBACyywfwuVoY6lfNz70ZZqYjYuUkbKnKqpG0XmI+m5LYrUW7QuKJqaNdg+ZL
-vVgX/TdkWVSIoSRS5+eYm3fRD++cg3ZgoR6ZY4WEa7SRSp2zoidtQijWOzp8WeHs
-30rIaXBrb5wHR4GQ4FYsBGRuWkmIaferusllUmHCHFJI4ldvgbkCDQRNyzHzEAgA
-1rD70DvCcy91ShQKP2snZ4cLJnFwKArulDUcxoBZ0AG0qMbaE8jiiJTHIwgVrqsK
-aS1JENv6tVdUS8xHswu30zvd0obaj+4IGXlMVdc6052Y4SLAGNbGVw99Ah1OkQ7o
-v92gmYAYfqppOtRt1tylz7Jf+F6er0umdVBZm8fJ+QjzTw36AwERj2bjVbc6ogM7
-OsTyru5oZGOJ+oJU+M9/mh/Gq3AyrcfU8c6bL2pacXwylME4lxy4fBB7BsMogPXX
-iplZ2XRH7RmlZiAfLHv3StxVB1RrLXVcjdnqIO2guVYrK6mxH9WMG4LnOGvcnYTf
-GtWexEmNA5l8IOSgsK+InwADBQgA037clDFi3XWaZBVXst7IfkU6bKq9vhmphS4f
-uBx4wp7MBA62k0kGDmZWcbinZWnybypili9ihYSHlp3EYzCNTbUMWlbhc/ffYHuv
-rZsIT2DxMPb2iCnjPu5HMGegTM8iTTotW4xYmJUsEDIvgQUz0/UNsPHTX5XU09So
-cL3YOP5MxcEbgO0Fpjny3X76rc+ETAd9TmDJi7HOm24grKdOQXHQJr65j7nTc9M3
-zWnTxOP3fL9jcVnGTnLGRVoR7kedDpa5FsoFqtY8YMaFvNPVvI4+m+jozjNwTg2d
-GG6nU2dEC0qgDEeKMSJwF1wgO3Fe6mXHvxratgNrqfdY/rtEGYhJBBgRAgAJBQJN
-yzHzAhsMAAoJEA2opewC0R6tNKgAnigkHDCNu7Owm8x01E9+aL73JmDXAKCj7ROh
-7Wu1iZQbjeJfypM6CQ+fdw==
-=GCHG
+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
+875QwNruE4Qkt/W0Rhy/QRIZ
+=eBqU
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    0E91C2DE43B72BB1
-sub    83552A552A0D431C
+pub    BFFC9B54721244AD
+sub    788E173C196BC673
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFBIm/wBCACgqvegptBhfKbyBXZiW+7XchIJCOpwq0/9QgSehKMwELbUKqNM
-sIVrywANqYn32S9hNRvBiKGm/KY7VwN9p1Cr6Ey3XuGSbRo/xN6tqfV/rV5YClL5
-6sMc67BlnEaCZRNuB9ATeUE/4wCO7fWg79jJuNl8tKQ8EYIrVGizzjmZHt76OwAi
-hQtD6A19+qjQ02SyPUJS6a2lKx+gwaHNxv4L2FqImCFGOOEToyRb12GD18Mgbf5o
-OtQVVtr3qbT07odFQt8Iyy1DiNUJbOfC+YO2wO7eMTr5xaFr1HejsTvKZiTDC0Nr
-EjtctqGxrjxPmoUPNwtxwEDTEh1lyKMhnqgJABEBAAG5AQ0EUEib/AEIAMDUgjnP
-KBeHIN0KNmXTS/uXXC4LTGltnQJ57OG2kmPz/JjAjYLoLvINY+xtghehMhRY3DmQ
-Dy/ufZsgO9oH8PztcC8QL5/dV6VTYf4U3FndbiSKgikaBX7yu5Qcrtkv8XgkJ+aw
-IEUgTGDXn2VT1hH6yEG1tA97iT/d7ZUxLEBsVgbxz9VtPellTNK5x/8NGY4NW+fM
-6+yGFpjr5juZVYRLa8u565vGBQO5FU7bg/69DftmL7vO4KRLs154VpsfAsTeo1rm
-U/8kIjgCVeKFClJG+Sg+m9rsJNYgiKy9dGfD/qDmVlEeWBuhtlAfqM7pHTv1Mu8m
-v5/DheBwvlwheg8AEQEAAYkBHwQYAQIACQUCUEib/AIbDAAKCRAOkcLeQ7crsaE0
-B/4/+ZcjdUfLPlKk/8BH0tMafEWOGvqY8bG4YpxGoJZHT/Lb/cnWDLvZzs98FVaQ
-3DKHZwQhhtnQIhnupvxSHX5wLeBZMtAANGQLauGp+A3S1WBVRHs0mzOdlVDbzJu7
-RW72mnkRMSoVd018fh4eQ0+VpZh0Pf9KfKJDwpEuESP1+6JcLLBvQXlEJYHOk7Up
-5eRkhljdIwz3TlSuJ9sCscTgM0PI7/L1eFP/iCgZIBHhpllVV6v5IGXx3P5Q7YQU
-y32zCrht4t9fdtdLct1j6eNaAQdPAU91auSbYhuVCpjgKNpwOv1ULoSWLUUPMNW5
-Qc4ZDKq+ywOElvONMnX4oaQ1
-=f1ra
+mQGNBFRRGVMBDADAQcmG+x0mHZwJ3uKgODjUZXkGRkuz7aP/qRmuQVn93tl8DmA1
+lgvXndvChUjzYt4DJnQhRsapAXEmP5/YYIkWOzuk9EpXGtqUieocylvNXP9eDF9y
+4mRbGbCUmz5W6Y/3w7wIsrz4kbCC5xij7cavCxxSGGg1IsyDHYkOMpcQyZH41vXJ
+IPMyDvkJUON2/YA+xPph4XkmNA+hJZ1fEa+06Cd5P4j8GeTnpibkkgzqzjuiUlo1
+PcXMXUzkGnf5IwMQOdDYbmDC0K+QUKEPheWY6NsmTdZTuyEdD7BunWA++mUlrqZW
+n81HMNijG9fQbipvuGiOn7OfmVF1eqfH+NtP9csBCjn84ZMUHHArzsWgb9LWpoki
++vQyc2K+egdykeDJG3hFZ0Ztbz1YPQAUy8BN3r/OmKuSwJ33cleugxyDe123kyUX
+KhBdGEY9pTZ8dbBKn6PfA51XvuWQSVPJRjG3bPFphLPDYNJr/MUuYqo3TSTSp1O9
+EGUz6yVG/S01tJ0AEQEAAbkBjQRUURlTAQwA5QjPD3Y6kiGacT7lXdhYYN1m0iHV
+ddk6NpERbQn7NAncLI8yx2kWCtF2bBYujv/plSfMKZmKSR2VUx3NXwmG4QD0Wr0G
+AjhS81jrmAjEEs6Kf0fvihJn5Z5fJAyDB0BMYARhCPtQBmZ5g/mLQWqPEj00kaXc
+vZyPaMwOvkFpNowItAdj+oxt9v2DS0zYSNQoRtF8WkX8GeU5j5yL8l3+dgu9CKlS
+CM+DqnbpMDiXDdDpc56Ca5jSuI85+c0TYo6ZIvn/34nmWMD5dIMQ2504Qr+Cuc9g
+u3zIJL9Op5TPpDKLMhiF+Pdes51unoFMnuLKMmbPWtIAIXkphd1QkVTnhr/yiqh6
+gGyGD3520FLTqR+Aq44CUUINWN2nBTbgrAaE42B0PRGVjtmTqoYJBziig0Fbqt+m
+BPwvT5+qRlX9fttcV4Nkhgan7JNH2B7xL07mWXAOifoGmkAeCH5y5TKvxJOCGTw0
+17NN05RCsQTHsL+0OhjU32hvhRGrbQTNq17nABEBAAGJAaUEGAECAA8CGwwFAlRR
+G/8FCQHhNh4ACgkQv/ybVHISRK1gaAv+Lg3GF1LFbHQlT0DiF8cAJ7f0VTiEgpKR
+SHh1SJ9mwPJYM+60HNHr2/i6+8aMML6VVy8goOvYzSW9BPgTY7wPF5HJ6k09kzDP
++R/tG74XjrZNFwZfRQ9rAeAlMVYXpPcUfo2FpM8tvR8HKAvJJNZfPGEtVkIJnJSz
+pZcqLX7ScOdKyWu+byo7+UoINF0vWvHorWHps0iMNDtrCL1QiNWxGMYH0+vK+a0C
+zGM/C2JllP8hzLc8anJjjtcF2xIZGL/roQnal6g2+OlKmtXSgdDwGOzEFPIjMHU2
+CvsjRPX2RbdzKOjIo/4ybjKtbvrbiXPfUORyb/aQ8PHHAZXaQ6yU1LRTCI+qA+gu
+sFCtKpk7RvXQdo6sIcrpqvLfAAWL7SB6zV0rtIFqPHh09NlLJ3LIl+2UK43Sa7gT
+j88XfFZYef0bm+IZjSGmEaZVEiXHB79AXyD3DZDhHX8fmcJIvvaZt+6V34ZOaKIG
+RATW8oAGjGserAKr1rvL3gGRF8LiRmBx
+=oggK
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    0F9FE62F88E938D8
-sub    BF6D15D3F1BF7BCF
+pub    F800DD0933ECF7F7
+sub    592C39141EB02A78
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGNBGGNmd8BDADSpbdIfqzkUNAeYlP0nUw/HFU/v+/aydtjUioAi/KxYt2FOMi6
-gk1LOJzHBubv8bF79mlN6sXrnq2lV/MuqvN9DrTAQ4u4Dh0pgbLK6jbxDWPGrYIo
-ov24dU+1SXCInq/7X71M3RT3/1L1kTL5WNCqKkhxLNi0bwjyAHR+xOdhPqkeTrZK
-xZB4KvIzI3cIYoSw2tFn/iAlzzaUyQY+JkqBbcObbzyMt8ai7TdXKHM5mAiuMt8k
-MkfE/kZqTWHimPYrl1+c3kXqn5iTFfJIRklXqnXixz9qFYhvUqWS87fFRUJdPCz9
-Iw4/UrnJi4qzEN8vrEJpnDgfS5Ey+io9xcqd9P66dFbVHvMl4uTo4hLZVz8dkWSt
-CkCtAfntHAp4Zf+1vIZzbAgseO52D1mP7wO0QccgqdX0w5Jboc2kkM67VsWskRXL
-FO+c25gXdtZk26d0P3f1j3XuDm3pPWbgAk17HMyMpqla3xBQiLA7J2l41YwblV21
-uzJnqAoChPJhP6cAEQEAAbkBjQRhjZnfAQwA1bQfDtbglXMOgziqSdWAQ5jsNWuI
-cTAKcJ6Bg1d3a/B6sm2IvCJzae007hnGf66RgkiDBKpqsMjb5yXyGVL9lq+KHgPw
-3H8TMRiVKxXqr+Q2s9Y00PR5PgqccZLZuUrbBJwK73u3+vfhG4ugubQPnRd8sPwT
-X/OPXuuq25FuZb5T40Yh+ZjNstnBOEpWZ6bq8h2kMWm67zrYwKdBOoHRU6Nnu2fO
-8CuL42lQmkvpTIu4ttjbLyYZMYjHnO+OpK014H9B3DsRvgAQT7Qn5pgyxwF+AuiC
-qdRP+vFzO78gvDRpUEQp03ZsBK3LJVXqQY8Nk9zCPDz0T0/1zL5ZHFXdzpxVPxMI
-9cpugE0Qr45qh5hktz+cjE6/DYbGu8W/bqDRzXjxz9FUA5A/sv/hs+PZ0QVRFARR
-cooe/arzitxxEc1X59IBCQieH9xVzC6gEeI6jPgiWo+gEBItQt/1Uf4CXOgStTbp
-zM/GCJdB4VSQXehMNKI0zBCsEtBWgDPgAlwVABEBAAGJAbwEGAEKACYWIQSVEVGX
-xSJ8CIcpnQAPn+YviOk42AUCYY2Z3wIbDAUJA8JnAAAKCRAPn+YviOk42NADDACt
-BHrDFjhuffic4gBoMkgSHmG2xfWrSo/jo568hJdUvwUKlLix9o3iqmPGy0jLkaGZ
-4w/t3eFrTGdNPuJd6zQ1fDNm7alCnyUYzoxct4yOu7mmI107HPuxANGvmV9hfyH+
-UYJtNwM6XljTIhnKdYa6H5j9jlwMR7pw8Y9QACVozBMsaPQygjQhli4FhXA203g3
-lxidoGZUi/xrV4vO3Wlo+7VC8n9WJZrYq4jhlD6Ntdhbvf8bEb4L0cn0ybgREehE
-7THETI9Os8WQVGbU9sS1b4YdOXZEOS4WS8NQKRzLemo2YiUNIdI6QaRWCvJyZCfE
-eWWoEJoPMKZldSIhU5UMtTaM7f2n18sCn9rXBscSzeO6MlcyaUQnMI9Kai4C6+t+
-TrIhZrSJQQMrR9lF+zP/YJKvW2wJBw8jhJr04dgXt4G7VrmhS4/HbtmLjQsl6bb7
-y8VfvPmrEviA+o1KeRSeIsx+lPdI+IogX6iLvlBMPtILw/k1aqanI+aTZYFOORw=
-=NL3+
+mQMuBEvQhhQRCADQ2MH2FpQD7pbCTDJ4uvPSeaOz0IUhkX9bK4sKvIISx8MbHhR4
+k4sXi+vVkLngWCMUV4nB4WcCibk2S184SzL0TstTDrudxe4eJFVbmZw0GrgASugQ
+aD+8daVhMgQZEjvEB7kjaYzMyljzVRE/o30AaizHPMVytZQpIL7GTsaBcGtxLkyq
+JG+SF+fN3WAKiMyKCUTaji1owY5SyZIbPBBHqcIQVdtCFRPXhLDNnGHUz/ubI4Fn
+U5sN9gEe7raXQfvZzwS6fW2SaxhxMXDNVDEipY7okuRKQ0wPWqcanh9dri8qoTfI
+7MOqfWWKL3NF1hnjuutyGTTKCllyTWEW4MfjAQCJBTUh43abqyHej9Dzcc2lSgLn
+xeN5iM48tYZRv+aYxQf/b9rWigbReKL7iYmCTqd+hLfh0YDmaJbZ8ZZM4p/YZ5tL
+NdkNJR5TiWwH9ub0BvXYOtYUwclOaaD85CKNN8IU+A/YcrWP2O8fBQw5lqARuGx+
+TjG7c+WRVn+fLrTzrzbUYh+/Jg5UYCbDYh6H2kLKnPVQPzSjDScJNtevFnX+IRjT
+7woB/WHlrfvowZGO1kclypZZS6nDiPYhEk1isEU+nD7OvvM1fQN1rdl0QhkLUh2w
+qKiM3xvY42LGicnJcxyMSODkYlG6J6OE2sFDBJ1axa90+S8Jze1fBlbQVb7OF6ma
+31mhOedb6xiqJ17/5Kx9gPEUpVMpkrDUVToIv18c6wf+J2TJ1sdMPqUsiuKHDQq1
+elTxtfq5ELQoNlnuK+mRrsSMfa1I6jE7QbZkCcoTNnD5ikOVmkHJFQlEZsmaKCrD
+oUpEyELdzFy1ghfGDPbvv1a5AoGVsR+sj39XNckBgZS+25vZupBxWvTd8Fj/KY5l
+a1aQlPUyMgqmo7rdE3WEzv7v11xBy6wQMAoGu6lp9tnaAE7sPEy/UHuYSexCO3Ar
+83sZ9o9ZQa+z33QU5Z0guNz+efCkFfG4nqjHjZ8ZY5VvWlw0W2gxNqzNCeQR7m14
+C4J2TNNn/F2nGAKEpKEgp8IjpEXYZ6kF9xoSkJ07bjujvf5vtvAm10h+ZEumKSiS
+mbkCDQRL0IYUEAgA7Ci1jY5JdrLs7pKjhbqP1lkZKDRn+0fDgix9y2JP2O0lJ6Am
+SAVUE6Mi+izqV97q3vMmOkIuDFLoBP79/YOaDlMWAj9QelNWwz30yT6LB5Wgw0c/
+Tpi5lQD5K75L84u2vAFjoOwvnLx3cKjC7TG2h7zxt9EHEtLFAFP2JBtsMvcmpFPP
+Ucpv0+/RFLhRV6JPxEUKiVbz52pgBLSa83vtZI4d6CDu/W3QXvCw7uYoTWx7e0+K
+rrZj3LE7KUzEa/Vazsn6Nwhi7VL0irNOZJGALdhrxLA8iGnPYDys78vPBWB3k4VQ
+G7rgvdVXiAldMNtoy7sNuhtI8Cicgl0JG/6flwADBQf+O8kWSrda5ezDK7vWAhBh
+r3tEMIE08eL/HPErE3DOzud8oyV8B7Z89ZOjSqzn/6EQdnEGnVRr/isOJcmgAXQQ
+RpJfFQ4dnpEeestJ5y5hzrtbMvfZ/Wms3WFgjgfYl5+TAbSF3Gz9VNn5AmaeA18i
+d8qzNVQ/e8J9zXfLV62qRLzbAS74K6rzGpYaZEWFAid1KLTu0S+I/ZuvQfZ83jyq
+oenwS0iYawM824w5oCDN/+8cDzLcHipN+B6g6S+X9m8s5E3RZGVKqUjd+fTRg0LY
+JkkasJwQa+20AadpCE0RZtR82jrbyLfNY2FFJT3TKYnaVhYcjpPBqffevhwSRIEs
+KYhnBBgRCAAPBQJL0IYUAhsMBQkDwmcAAAoJEPgA3Qkz7Pf3m+4A/RghXcZwWrZB
+/vvvAfhkYQeQJjPmYluGNebJ4wPi5ZI8AQCBjv2b6yDTWPenmPNeSB88HWjSL8/A
+mimEzF5VTg7GrQ==
+=Q4rB
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    4896F7312A5ACE4D
+uid    Chengyuan Zhang <chengyuanzhang@google.com>
 
-pub    10066A9707090CF9
-sub    2B9F5DBAEAB53FE8
+sub    3EA98BD451E4B457
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFGKp5ABCADTyMhDq+7Kcv2wXOpOmZgp++JNO1erNUjVqFX7n9bT77DciEML
-LNxWVF1tkNqgkn0ughZTXK5EGdjUfZaJaDDfG4BIsox/ng4nDvIp4CtXqHbWqrlc
-SPsMl82uABh7ZJgsZM4Z7c8KirxYL42MiWu6hhRqfJZigWUd+ceKEDuFcNHcEA6h
-98LWFCZ7KHjKhZpUbMBurd5f+N2mn06YnVZrHVzX+q6REWGToF3p+mrBwstrGaiU
-j78gMgZnI2tiJ99HqmocjLXbwXxdvFmLkniBHAQ91D9fHfYL3odTEkjZ/Wi7DSZt
-PAbEhbBIKpFKnbazyMB8ACeF+m7jQ/Nq1+g7ABEBAAG5AQ0EUYqnkAEIAOMb65Q/
-m/7+A8XBVNXgoyGDksgTDSIfvePi4saGdSJOcQWc2HbEHFhqcOqr50h0aOEBN+7W
-B7X8ZMqqeCub1BlXLAs9gWhw5QK4mAKCtaARpmWj4sr22JscpMi4uutgcsfakRae
-Tmd1J7efjcDNL0/EsQKQSGht1AakJN8zfyb6IBuuAqj3xegwFCu3MRanRyY8DP4C
-YXfIyLBPLWfDVBViK0HOjEMEO7tdvsZ8h6ptLNqAYQQYcHFi75lKa626RVeEbxK3
-dptWfA7vQ59PlnsMhUZkiDDPzhnIatpfdBgA8EpBJ2Lrq7hE0nZI4/0rn/wxIPT9
-Ibl9JWeSfoT7Vc8AEQEAAYkBJQQYAQIADwUCUYqnkAIbDAUJBaOagAAKCRAQBmqX
-BwkM+aaFB/9TyOSAJtb7qonJ8Q5Un4JLIhfTIaBj3cMHzP0ZbotpskDqnvRhUe9f
-OM0KG+OibqaW8hKT3ZQVVIJeSVUCDYyrWX93KPV/tiL5F+5WWN+/L6Uvp6598oiA
-ZvYBNNA5Gzn8kh4b5d68Qyr9W/2TAWm+jVYywlguNHsysLLTvPVG5OGK48/dYSeO
-2PyCy7hpxV0z+xDinDDiVjwXc+vHoTg8ZDILQG83ZsICO7dO5FACCpFuKu2mjDvo
-bcV4ajxKHNvnnNwFUxuGNogQOiMaeH62T/WBCdeyE8X0A+UsH6WVXmXkCSDxRD96
-UdK1vJJR/sRkoSFvf8E1KmFZR351/wZQiQElBBgBAgAPAhsMBQJX8oreBQkZM+ZJ
-AAoJEBAGapcHCQz5ax8IAIMnwmPs5nvuo6A8mSEmKXzW2M9K4CimmR2HhLtFoo6n
-HRcrL05I/XUq4YxqQLMmZeQ+N3lk5RVfZwJDIY3NzR/R0dGiRP4z6F1sz7qRPYxL
-faFA8anPzrfW8tNtD9QeXhG9k2H4WVYdPwQe7zKmyf42XrJSX8bpgxAoRdGR6atr
-VZFf4Dwgua+SdIrSpeiqXCqPVSh6xoQ6svNXwnee94zY8/R8I+6gqI7E0XaZY8ub
-q4Ep950wDEkOIBB3HsTgUauXd9vdkFMnO20JWZRujDcE6U4GJsG6OsgllB2e0m9V
-OL8rBTxpelg6gJCVVXLOLUbuZ9UUebjIiAABCA6V/9A=
-=HrWq
+mQENBF36fYEBCADU+1b8TH2AhJuJXebg5D3UbR9rk8/9kEfiF7ifbb3nCB9tnF5M
+7NnNocEdAq3XezNuSj9LtEpWUu6P4JdpXcfZiQO6wrobzSJRUWDc7X8D8NyhGpd8
+/7EMbAHH8MfMrwb1+00wdCeDXRpDtH8e+9I/mvdkkBgCrJwG2IG5FMSdQkMa44cs
+asquM705q5349n38F6zOFbS2CHtRw+dsGym1xHWX96E/kuAMIh0rlAK1vIh5hlmD
+2d1VQyx1IDQuAMR7YvByzpXvhwGm8neMaPgKvi3EHoySE8goFfo3UUotZBBv8h59
+h56lu4YfV0EOT3rUESOes2bZiRdLrnFPw9ebABEBAAG0K0NoZW5neXVhbiBaaGFu
+ZyA8Y2hlbmd5dWFuemhhbmdAZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQTIiLmVWBXq
+g7SFMXhIlvcxKlrOTQUCXfp9gQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK
+CRBIlvcxKlrOTZYeB/9Gb0MmFCMawEHvB5RbLvkQggZ3a5Ac7WCA4qy4p6B2r/2N
+7S4soaAB0iU3iutF1KzR4EaZod7C/DOJgjY7ZJ/ufoU+3KyzdoEr7b9QZktD8hUm
+vPS/hygpU6eY5gfyelFPtJU4+gTNAvls0/9oTq158OVgh6Kd3lmGpktLe/OFcXKE
+nRZC2+Vv7AJx/PboNko7uYpMml1cHDfi6cqRQv2L7DKvCGXnDseLi2tqfzWW6lYI
+XFJHmzWVk28SjUUFygfPN49kEkzSkQ94I0veC9Jxb8YqPkGD9r1gU2x6O8+4NsVC
+Iv2GnefwoRjDMgVvh4GzRhfGKuWM1+7OvjoC9QpnuQENBF36fYEBCADB55Q7spxH
+PFABiTlWY7iWlZ6KIJYdRm+yZGrWALYq05bL+UGfO1quXeSPoZapkNOp92RP3FSn
+xJ3S2GFXlv8AqjEuB3rUcWq+0g0f/cPq/MOYBPT9RgzYU+2BSmtnOoO9jEmsDBPA
+A8g11TIb/YglHmekEw7O3t76iebol3QYExHZ06IihKbH7kMQlgOGeWIPR1niJbvb
+E+VfFRhNzl2xjIMEcg8cu3nCK7xz4SwPXJTZJQjjJrUoenl6WFtSLVzzL9KQO0vH
+yzRv9cEUUU8npWz0NvNMA6weXYVGS9ZbjaAMgZ04PAMpEuiiYmsENFpP4F3S/yc6
+8o0dFeE3ZqUPABEBAAGJATYEGAEIACAWIQTIiLmVWBXqg7SFMXhIlvcxKlrOTQUC
+Xfp9gQIbDAAKCRBIlvcxKlrOTVN0CADGnC+XyF5FORZClBFtjzDI5WyRhqK0eBv5
+YDfCiBnH+vCrpRzks6ylsoHeuRkLBMyyN/GDyi3vLa/4zb65ekZzsDWROR5zzpiB
+hI5sKBekS3XLEd81cYb8mDVFqn4cgrATUeGz0UpHY0wm5bVel3FGpwY9NpZKHfhQ
+9UATNm4OJcJywPNNCPMjFUyj/XrXwqJDDsPafVewJ2qOziflSXt75TEos6xmi0YB
+zeYL7RbX07QsknYF+31TjsqbAgZsxgRKeexe7DsSL97BvSaUyB8X7Ghxw2UwE+9O
+w5dkCGlkxSnKE7WTKi1is1iziB4eYHLMW1BKVazIeudpCfyKmmhz
+=Zhff
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    102E05D8DA6C286D
-sub    7680B2343D1CF013
+pub    29579F18FA8FD93B
+sub    9DF7F2349731D55B
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFOZyw0BCADj6eDnIjaug0RJQCi/HLw5jJ2kORPaegxFuE5IhpN9pZCPASax
-aTROfUSnys7cbxZxh3Sri3spQ0j+ejod0MhVX9ajTg508YAJUaCBbM7CGZJZtVFL
-atf99umsxzDrXIk24z04W5KBiLS3M7QKPyMujjiVy9naFxyW8GXJxYcGKUEltWwP
-zgO97xwHs+T5nXcO6jOrJ7NxI9fbnWb6QY6btSkrlpLnwH5yxGpajcR6R8+kj+0W
-dqWWrs9vo0DQGohkoqjTzeVt8UWHqUBva6hULkz6H9CRLfVxuK3lLFtnRBjnjRbu
-bNyOdVdtaXArmMKwsonsaZ0E973yqcmbhKQ3ABEBAAG5AQ0EU5nLDQEIAK6UjEUy
-lBC987DwdhJ8sQKGcOq8JM7sfLgpBfuRL+kWM+jpXi+DmfThnO2tI5UaaF/jMd8w
-Kd4JeAGE0Ynj5V1n5qUsTUXwEonDLLBOBYEj2NYJ40kmVrPdp00auDf11Y8NC4vS
-m+4QV+FDcWvV62ogOC5rYKOaKMPf20F9rCxUBwvrXNHPQJZeX3FqU/HBhvaqtHjA
-flZoQF01baDMQTZf5JgATzXJRsKKum7z0DWiYNoOJ8wpbuXM6CG50N+4OrlSZfxx
-kN8I9sSyREzHj5zVWoKqeyii9HUeqBLWh++TiYrRyP9NHM1SXhrtp3wZ36CBXqp6
-ME2K1DQTMlqZTwEAEQEAAYkBJQQYAQIADwUCU5nLDQIbDAUJAeEzgAAKCRAQLgXY
-2mwobdDhCACjfIYnUCHd6KzmgOoYXsW8NeVE3QFpMxMVq9rNEJxAiOg3b+Bdz48L
-2lQy6yJJ7owKAH2M6FvVXpfrdkiMQICEzKr1IT48H1Sa0jj0cSR0jRYszmd8k3G0
-hBqmGnfPBfolrOVDaRGf2CXCZFHVZA/Qvof76FaZ1cFAKYmUraXJBocxupXz6QMq
-P4qsPgkscwEVv4b9u+Q+YLpqHBiWmsHk9mp1Jtqz1SBTqI4zVj7w6qmc0aZh9I2T
-ROvKAtF7WjBg9LEFstqZeP42rKenm9vOGs0aQbe4kkgFMIwkLI1TeXrYeQWSdjlN
-nCYHwzPH+lq2dsCro1T8dMZTRFWKeaPn
-=w1VQ
+mQENBFYFiMABCADYpblWssqGxbjTwsyroPh48BwdSKl59zbFKoEHDw87NeWq7fik
+h95RkbdeWsQSvduXWgQZsUDq9cLOkuS/ChAMkAAd3MPp1NMdFmAqS7BX5wU5s5I7
+XD+/p51SWLMvgrLxoenmoE04EuQqQiXd4DbU+HGPseiNx+mN0cxPssaZMBBsmi2r
+RjwcQrFTaC1iffzh8FKLQvoTDzci//b5bWcxCLbsY9dYcUaDCbBAkL8HzyZUKNE9
+XwXh/Rq8wDakI/VEg/905a9c4xq6Rss6Yn5E4V2SAo2+B3hYmvHFsefaM9kkqvXk
+MQ6zjx83LAtzavOzmthjhhPIgCAfoQ5Q5oDzABEBAAG5AQ0EVgWIwAEIAJ29KWGH
+aEt7gXV8EweJkrYd02nwjc1LyjUT2TRwEzZ9N9qUiVqfpkgnZn4mpHCToxFoqkHa
+iv/QDfj7cp8jbZJa2wjaUkDbH2pZqLBGJ0sUUBZ1KNPM2uhhWRzAnmF/bIo3+Yfl
+hGINLNqoevkYoo9cdelP3hepef4+PUuPmKmeo856uknmaWQ89LPwLlV7oj6wiqMY
+p22sHqTGAgXeR/fSLMK7d0vSPm+57LZed5ECoRMeqYFUwSMV64RjTMkKPsvFBGvR
+hppJ+uWQiMjFFuFq2DFeNBVtueHSdgCHx1TP9i+x+7JmYsmFFmRwnEdbxO3THFXa
+gFQGr4ima+oOjLcAEQEAAYkBHwQYAQIACQUCVgWIwAIbDAAKCRApV58Y+o/ZO+ZZ
+CACL1DlaVyRNjNxzC+30X6xGykPwCdwMRF3CRjoeIicss2pBJRaIdTYFpg3bCZKJ
+J5KDC6s+03zmd3ddnKEq1fEfRcoLZ9PNBYF3IESHnNPlR68RL2cjMgq6segbhOxa
+v13ZcOIOnyrWzgbVw0ZgN8P3vCllFtifwvuF50vTshIRY11G8Gluu+GZ7tfSkPww
+Eo+pRd8scdol62aUUo6a71rDOMg2XPULz0l2hxKWfeUsksT5EY03seZd3CYqOacL
+R+jaHyOc5Nh6R1MzcRz65YTwzVbKplXtZjOghMh+rS4eDIjEKlo456M4spKFBbTf
+Ub+QS9kCkBU8csUzwF0nk/oP
+=SZ35
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    10AE8966A146E8BE
-uid    Thai Duong <thaidn@google.com>
-
+pub    2C7B12F2A511E325
+sub    10DA72CD7FBFA159
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGNBFrY3D4BDADSiDX16IC+236IeUiqi7Nbt2wlsBS0zqqaXi43QwXwcf7aYn4+
-qrn+4JvsyMrDgkRgOElz134B1i5OSzP/32w2JCnj90XUjO5N1KD0QqoSops7NLhZ
-/jW+5cFLDDeYPTYNLxJVsDRSqhIztRC0/m3eP0590MbnPxd+ahlj8uz4NRv/bwj1
-vqfIRDyoQOtV0+QX4M8ytX8cyLW9YynWLWMeHUFY344UztDunZrfomPC16roKXrq
-niP71cILlVFvhGhLfE4iF+Q/QZZnn6hvuQGagHR261N4LKw5II737g/5f1DsKZpu
-Mjam5juYCWobRie4fN4k0xwi2+I0KTpYMjBRTNNcOtyAb1AvY08E0HVwAYz8Cm+T
-VQQKriNpa40RI3KtDXCboCkz+LLL1w6vBXnvCes6F8CjSn3IlInpv2AE4nhcPC03
-zI56gPFHhUN+h4vm+b5H0aw8DyyedBDv/GX5sPxYYml3H12L/idpgAwp022rL8dP
-lxtvZrtO9PlOqHMAEQEAAbQeVGhhaSBEdW9uZyA8dGhhaWRuQGdvb2dsZS5jb20+
-iQHUBBMBCgA+FiEEyHQQgv8bDulryr7sEK6JZqFG6L4FAlrY3D4CGwMFCQlmAYAF
-CwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQEK6JZqFG6L5LEAv8CDTDJbAl/Rh3
-ALICi3dsXasWNQjMnG2kqDXQg/ysTPCoUphnYBTvwkEGxg+m6Bjb3ULeCJo+DIfw
-JxgLl5BNZOROeBmlX5uYZ37XYPntl/WwyGBnCF1IW6cHmdtTMwfYd6RkAFYVyFyZ
-FObeCrzdVj2knwqsZQb2Ty6BNodKV+xLCYBggT6VjNpjp1wOedn5ByQEReG9HDim
-qmVWz4pqAe5ipo9mTEwkQzZny6Mw5QHp+SRk+Yyo/NT8Q0BkGPwFpYn9YYUvda1k
-mYN41DwJBzG3m/kfwn3tmIbxCOnrmTt9x6cGuejPPsOI1VjhaJn8HMK7WOOA8DRh
-Zyi/IkZ04pdNlz6PeC7CbzvgGMgrY5Z9mIHP67GlXomOtoE2ZsUyNUBEA2QCBroC
-ktzkT6Y6IIYUe+EdQ8LdMJ+uisbPl72jmkPmnj0ssZfKkTZRTMF5mpR8a/AlRQwL
-VG5qGWHCQvsYUT/C4fNqaZKjwn53SUp6QDhrpMrv1UWhdLSWS+FI
-=YPkN
+mQENBE+ZO+EBCAC3fZOOuYKthr0GcUge0PH2bh18sbM9XUmPKQz/W15l1NA/2ARS
+2gUXM0R+SunMlun9KsqjnojJ2ObVPvbm1Hg/66JSRgR3JWfIpSlJxLicpfu8rCfN
+bOjh4v9ZipD+px8w3o/RNrnZH/KRsoJg9yER6pf+pUZqTJfdg5lXezc1WF+/1qVo
+ypldMGfrkfLsPrUZTT689ubbig978e7eYmJEqldtaIwaAzHQnB70wIJyg/rEwFUM
+ldsvs6t6czSuJ4zPMvmh8TMpTg9e6+DMktPl1CWRONl8RPpgYMIC96gb4OnfDDjk
+Ex6clSCwgbDwdeAyOjjR6pVq+pCNTo1Pcj5jABEBAAG5AQ0ET5k74QEIALaxogmJ
+1t7arw82krV7ILlcOu6aLuuXTuy03K1/jU73oyWfUqwvPSbH4igcLb8kt1/6ogfk
+u0T9tTx+0mDsvqK8A8NZ2nDTXok3T58UAg0FTXlqUqZmy5QPtG+it2j3/xGgip3V
+5p0Ml1TqEl2SfW6gHtLptDUWzuzPi9SgK1ZFlueprPg7xwHmWhp0gwx0KSSOYWlK
+oEllj/1aDxFNcdKogWcGN5aJEsETCEguBP7olL75u6732wc3zola4zTy5bFT4kEY
+Dk30Du3VGQJrdsqlibdQpZYm8uH4AVXDmFMdEAjIs/DGRrUgde/oUqwtgm9U+p9M
+qcbmMoeLFdi7ajEAEQEAAYkBHwQYAQIACQUCT5k74QIbDAAKCRAsexLypRHjJV9F
+CACkvuGQCqxhvY21n800w27vc85F4Fdd7LjA/l3Bs9dA5HZbk1AV4/MFpadvPX1z
+ZuBOPYqbDSvnXGfoDgE41L29S5Yeg+mx89UDO6JcQQnlNn3k5mGCgR/BmGPSWc3w
+FzTEIXDYoj4/p7Wanj8vxBQOLmRzO1nu75dnOwgXAwKtTTXhHM6NCrxuwFrekKGj
+FZm7wNeBCmnTc65hMvWqZGoNQSr8M1yJ2AryBzGvWaonDklHCOUAmLuU7n7yBOxK
+tyoYdhMdRYjmhAPueyzK7ejbEil6wfCTWGyOaahNa8SV2Z2Lcd2aTwABHy4z3YtQ
+DpFob4bKD5ohhQunm2EOXlWy
+=Y1SU
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    11509ED50EC155E6
-uid    Konrad 'ktoso' Malawski <konrad@malaw.ski>
-uid    Konrad 'ktoso' Malawski <ktoso@lightbend.com>
-uid    Konrad 'ktoso' Malawski <konrad.malawski@project13.pl>
-uid    Konrad 'ktoso' Malawski <ktoso@project13.pl>
-
-sub    DEDF3A7EB400D53A
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-1+61dcLTcdUOi2uBhwZG67Mpp3cSRw==
-=lHW6
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    1188B69F6D6259CA
-uid    Chris Banes <chris@banes.me>
-
-sub    0888B86856F9D71A
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBF2hcBkBCAC2H5WcFoeByKBUAjRDjmP+5P6FRsZjLe6c1wy7G1ha6/EQUVK4
-gZUZYE9W7l/4QKHvAu4PvFWdD+5FXGZuB/2kw348CtabAlJTehm1QlPt5//ODkxB
-fWPPz3uHBo5PQJZuLpStQn+aEkTTHK6Sk5033e6fa7mV5X/c8pTmTzkunG58NFbj
-5VSVbks4pbafKoMY7rSN0/I2hEApCjB9tx/7DJuQ9gbaGhmabnhBTnwHXEV1/hIF
-369lfiqeoeqDMOKj99C6KFD/NPRrRLfoPRpqL3LPsPp7P+TzyZN2q89Xqn2ysyI9
-jDtrlssEXLskU5kA8fVa179V/QR6QtrJ29m/ABEBAAG0HENocmlzIEJhbmVzIDxj
-aHJpc0BiYW5lcy5tZT6JAVQEEwEIAD4WIQRkubCfFkqgv4h0LrYRiLafbWJZygUC
-XaFwGQIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRARiLafbWJZ
-ygNIB/wPXRnQJ5Pj+G/S0sbcDjTFegfN5TzXRRu0wXyogHPCt5ItE+8DURp7coq1
-eaocMZQ1186QLow/gInpji5l2pyv8BjC+H0GrXrT00S4wWcmd4ink+cNIwCtO8Dk
-Bi25t9RxA12zKqXn62W8sATRl4DlL17ASw8k1bYDGWWJAM8GJG2yucaFN7RohO7q
-5QmcjsXmuzfZtcKrlVBVNkYoGQKfjgr5fPjG1p5aOKELYt33u16stDGOuvXyJL2h
-4FhqMJL9UvFj7uOdMQLK10QPb3tFXELchvBWCkD/GVHtH1hwFumLkLbIKaj43Sq8
-Kap/NfRkl5GXw5e8UQDQevfTXdJduQENBF2hcBkBCAC2kr/FJuCwW8jzPDyH3EsJ
-ebKgUGpdZ8O+OtbvIBgIt7opJ+tkOyBjt0kUbiXEeoZGOQ8qtaj8BD5nAYytDZcd
-TU7ZOE8A02bMXsTVeNKkPgbmYQm9DZokAUQWO6NxohWvJqnDXkzZyMb6jGCJyGHL
-x6bN6++0DWPD2c53wzaSZLg/776BZw453HWkHfiomtoKgBR0DMOg51daAsj8d/Aq
-itdK8Nwz7cmKP7FaOu5lSyWb6F8dueQ2yjQEykq4YrgiLCva/pSL2Pc16CNnCRbD
-QNUEog5Ldco1tbrPPfizLeXVQmp6tG34aa1OCd2WKs1EtbFQHpFWNo0cP7LInV/r
-ABEBAAGJATwEGAEIACYWIQRkubCfFkqgv4h0LrYRiLafbWJZygUCXaFwGQIbDAUJ
-A8JnAAAKCRARiLafbWJZyoPeB/9hrGRr1ivPnQOMtAJgrT+Aev1gFKJxgTJlB9QM
-fBmjyiELgnjwW0COb9nRgalDk404f6nKcH0x0jElhUU79h2Qz/NoGP7QByaymdeP
-j69SQeDb3TyI+tHShX8r3gt7fEyeJFYyr7w8xmO6B7GdTpltTcrbG3uk2o+e1GPL
-+u86S0QhG2RyBKOIWLXoRCJQlouzNqiZl7Viv8FN28NAvCi+Crp/evPtNNOYjnUP
-yIoOKCOCv1Fth5H0DNQMLsCZbHPLl1Lx+AN5JFR0xp774uGkzLQ1jyqXTbv3rn1s
-LjK0uhsXbr+8I7TfsExnrL9DmAn8R0nE4uPV2wW1NzwavqcU
-=yIZi
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    125A9EC9FAA91AE1
-sub    F2EA967B5B8FD0FC
-sub    F860F86A8AA8521B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFolWewBCACurWoOCed1W8Ut0tmqkSTpaz1AvPrYvZxmNqSVbxGjd8S/Bpxm
-uypKQ/KIF88a8QbePYa6e/I9g8HiuA2Bg91T9khc1mztXvutkiFNaldecg2rFHZK
-tHMtLq0PEH2WMaATcQBgpf3ueihE+R4E3L2t8s7lBhCeGw+FcFs5zuzf92Out3XK
-SbWvnkQyvNfbdVx3jleEfrmjT0zHWQyPNn0//0gO4rgtHoQUnkGcUQJmYTUW59Jv
-RjWDKTpDNTVzTitP0g2+Ru2H+suRFGTMIQMlgUUv5bRYpejpzvTlubGsrRAiK34D
-b5koeGwW/tB8crJS4SqwGLMYRQjXRu2qO9KjABEBAAG5Ag0EWmil5AEQAN9XlvNC
-mUso25a5GN/hvKTlWQFHcOcpKUoJG4DYgtgMAX+3gNJfA5pvntsBgsBjt/8nS9gr
-rOLqaYknJTQ+tzsTjiLC2e36+aK2Jr5RsRSIWTgM94P+QuMNX8DiuuMq5JFFhCM1
-IJE17az4Iuay9ZMA9nCVolRSSepBWn2kCiacQg6YFQnxhvHyjpNuAvALoVyZ8AJm
-uuwOGMnB4qio2SROrHkV6ZLXPQak48yLFpswbhxQKzAsiG/sfoe/nO8yAUJQSAEd
-2yXDylaPHBXsnjI8HvQpGmPieCQMjlJenwMK9Ewqtxnuprklh6+/324MjBCanBo4
-OSiqC48GKWqtL2uYOqqdbuLc4SN7pLWBuSBDU0/4vwUS6mjyIwcuOK1f0SUBpUqP
-5U2iqFURn7x6E5cdDtfCagP3bFrAktkUcbyET+EgdFnYMmpoCqXGFPvPGmwLHFy9
-ELF7+bdqqNgEJviWE66V2feePveujqUFWqHCZ+X6DvwoQyZK9Z8ojoAWFi7AujJD
-BtaB99QeKYOBqJb1DymM1etMUEBRnP7Xxj0rIQmse579vwXrbRFlMV95cQne/LFH
-2jZJ3ORO9qpGetazXJv95e7RzRxLR/8qeXUU6oiyyrSaXABVTrVpyKISGlfhwlN+
-tq+oP9WVYMU4E6s1bE3n44PwwP7nH0KFc2NPABEBAAGJA2wEGAEIACAWIQRU9uWU
-kj69BPK4hgYSWp7J+qka4QUCWmil5AIbAgJACRASWp7J+qka4cF0IAQZAQgAHRYh
-BEeWssB9d/temlaYYfLqlntbj9D8BQJaaKXkAAoJEPLqlntbj9D8jwMP/jui0ujh
-1NEUJVvFNXvbeITVE22aPb/6f1ccEUK/tH2J7QPFbu885pKpw1HagYswlHpsTEsL
-yjia2Xc55N3rpA4C5in485/nCoxt2aWnkkNKmQcsU/+Nuj2WjaPsqtn/mCyhrUUg
-SK0+PG6nLK5ekUWbZaaHxITUpnOcmihRbvqBiC4vb8nN97BkJ4aXcNymDKlWjVKv
-V42Qk2nRwl+hvczhT3+FPRZDa3ToxQ6N2kyl6uudK5hYg+JcIgVKBpWIMp7vu1LN
-Mscuv+KbjbyTqNMbkTiT0L1tHuQ9ST8ouPx+pCxUfjlqc/9yS5CC/AvtG0XkO8ZH
-7fmQiGVVS6VKVZmm5AP0HVpatVVcKq3fIpa5f82dP6YM586ib7iXBfvsH3mEB6Sg
-m92d1c3uLrki+CIEZGdgEjOAhovGZUzdxt12Yh5T0Sk/mJ/V6fIRkORSU8Uek60H
-Eu15C6KbbwjaMBjurHpo/3aCnitxByNZubDRLFi+LG0rG8zbPBQgQKFhYb+8MExP
-hwuzd45VQdK323leHobPgkOY4hlYPr/RQEy8Jl2kfm3Q/mvvIK2aLwlrGwmTR7bx
-d8xQZvvbr9Fs5noMiU7dTD5isQMC63RkSvhAXe2mzYoT2umooO5HYJrgDm4lQuH8
-SkWIYoUxVHpG+I8lxD6R9Vod0Ijhyg/2EXvjxckIAKkJUXxygEmcHAXCzJ6YmpE8
-8nUctDM6puofYoZqCypEO/JUfatJITNj7Cf2vPWB33d0g3k4+dZKlY2rXNIene64
-a57XbEqx8G6/fAPsHKDjFmGU6CLPSPRwkERXhaGdtkFCXtT/WHctjpJCU3XDGW7Z
-1OqTdsFrxiR6JeRlawjQrXdERmdxIhK/I1uaAYZOfRfQt2OTFvC01IEWZhHH8+SO
-28zFI5wa5voDs/+Wv+hG/YgAmxquwXhlcuSEBW3hvLVIyXTDPXggSmRoeLFLy+xU
-YnryJHIYtus+IQDFY7YZUH+MsSiwrlcc/O8t/c6mxM6HbsDCIExc3IZlZQZlXVq5
-AQ0EWiVZ7AEIANeF3UT0VXZcDg0wshnO8r+nuqikhn3VeBR4T0PoctLnGgucjr9x
-h6E9FXIDmxAiYvhAeskt5bbN8a6gDQ2WKvGOwmpO24/crDBlrX5FOvy10j1lb7n1
-uCQFHtRbeDX/WUWYLlb9or33/QXP/h+5RVlHun3lzw53yBaPGBQUdxl6veJNuJMM
-mvTXGpVl5Dg19ijLoktedxfboChSWZ1k0sziTMOO/J07SzcLd+IdAhN1L/O2awoo
-UPz2Oo1RMvEQ14v08aW2USKpkOprrTMRJJ6MF5leBMDWQ48m6DzTnccLUQBpQSbU
-Kh3C1pw6MINm3vCD7+x5FO+B+9x1bhcHhbUAEQEAAYkBPAQYAQgAJhYhBFT25ZSS
-Pr0E8riGBhJansn6qRrhBQJaJVnsAhsMBQkDwmcAAAoJEBJansn6qRrhqRAH/iOP
-CnttWmCTNvZhiZMAPPZvJWNNU5q2dxip2x/Lz6/qUUAMEbVDNEP6ITU99OZHWJ3g
-xs640+NzjCASM4BzX7T2vGAyVtm4M7oYeeTdhDoaITANKkRzBJ2z9B/gZkXexlCk
-7zlLS7TrqLhGkyNaOAIz73ygtPp12TTOFzQF8CG1zGEH3veWbdehBqB5Qg3QJNNG
-njI+gJdRefMhHsRG4rQg0qs3jilQ6RMeXWZ6Ncz/xuTMYviyxhicO01w3PAA/3XI
-x0gGYEb/uYbga6qTBkphYK9nS5N+tkXp7fA397mVrPj1icjAXIIANqRFX0NLqinx
-4D0hnpwfN9FlrGaJAjU=
-=a9iN
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    14A84C976D265B25
-uid    Rafi Kamal <rafikamal93@gmail.com>
-
-sub    0190A8A50D88C2C9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-sPa3uBnylgYyUnzuNZB3kLz3zAM04/jc8Vk=
-=/GAm
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    15C71C0A4E0B8EDD
-sub    891E4C2D471515FE
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-tiwy+wOBjaK9g3Kk8jsN3I8t
-=8Tiq
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    164BD2247B936711
-sub    EFE8086F9E93774E
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFPU8TIBCADGNvExYTJpVuNGCF9NuWw+IkitjAD7WzF7QkvFCSw9VftzgTUZ
-3PYrThRiaDdmHQAke4Sp+nYyAJ7iUcQqg/5/ONiMdzXEv5Kwy5WJN8+o2aXSunIT
-PALIw29DemZdVerw8Xc9jcdNYGxbPgtfSjr/DBCBs5Guq+RuuwsBvyTGLiHpc6hb
-91D/wX6Y0NQB4UlY9f3k6AgqiR5OGq602hXYvL10pH6eT3gSmCvxp1WvNJDBmaRi
-ZdgW76Y+bGQkmygWdAb3Q2DUEQHVH30YTBx5VFoiCfx1Jud4mD90Tv1hhPn0fS50
-oLGqI6f+VB14iJ4XLaSfyk/UMl343iF9PAg9ABEBAAG5AQ0EU9TxMgEIANAOURt9
-TLIRxc4lZLnve9LNSjTe3g88MOSoCI/EsyOR4ttMmc7NqNgCwYXyuNlak+jSGupL
-biUCaFq+ioYWPpDGmZZLfiNFPi5Zm8uJdo5RupRTzWWCGryzhb1PHlr1Pd+H4C7r
-SuB4pgTaPB06p/o7H6DU3/HKb3AEkJ40FThJX+cU2EOkVs999WQ6Xyabj8j1ivfx
-jB0K7q4SuEGEpWvbGHWCGTNuzpjcXYvYWjy0pGgJnmBfaZ4NAqD6mpyNx3yDfVvV
-Lu5D3M1t2a9Q4F6uKbaO65SuvTNNRnsCjFbk0tjCas1s2j/QQjI9IyPonKUkVdOv
-egP9XmQke1Wm/TcAEQEAAYkCPgQYAQIACQUCU9TxMgIbLgEpCRAWS9Ike5NnEcBd
-IAQZAQIABgUCU9TxMgAKCRDv6AhvnpN3Tnp6B/9b03x083+GdaHSBO5QvfJNMxe4
-7bzx53bFMrCqd8zDra7hG/AhNHLsPWdK2MyAc1U8zZt9OUqOxtcb9x1Tneq1XDLa
-bGaaNnQMhRGwU8jqmwyn1qxseE/XutZu7MjQgo2nRpUwBK+1y5CcC4I4RxsEzff1
-RFs9tOyXy+rtV3X2hhksT4GUag8O3PpCmsdX1NdMFfcL+W7Orf35z6iaaWUketOw
-YhzVALfAqZ+5BAt0ZvJktrn6oOS1/qri5YJeCuy/hGHnKuTsf1BuJUQjRmuntUzP
-y8qDPBqTAtDjitO/RnHjY0fq9SceX8Q/EItOKyqPFOC2XfCooP/zTxowcdsraXEH
-/idJYp8nHncdzsoRonzNY+0n61qXkE/0yWRtPKlcO5q+3i82ILT38+2M7MQgHBqP
-iL8UmsVRfHNwTHtJYsMHEgy90heV1mLft19OHvWEzgyopg+G6oWbaPw7CR0djHfJ
-vEPGWvldW0vHJaIA9X+lm6N2nc8tsPm62i/ig8o5tjULAUrizQanCv87VxqsSt24
-Vh9sE+eNXY3ffMv4wedl/nlaHghBD2YttcFulAwoB6nwtV8YbKu9AWx+UQsCDMdo
-slVaChMsTYWjoAKUn6vZpKNDQJaQLk/R205uhj1YKBM0wBwYQ9+0fj7FH0hD3qfq
-ZsgZV9p6yscaETbJeSljYkM=
-=FjWo
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    164BD2247B936711
-uid    Marc Philipp (JUnit Development, 2014) <mail@marcphilipp.de>
-
-sub    EFE8086F9E93774E
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-Qw==
-=iceo
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    1669C4BB543E0445
-uid    Emily Johnston <epmjohnston@google.com>
-
-sub    5F6BA89D4B0869B9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=wp39
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    1861C322C56014B2
-sub    9A347756830C4541
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEGVK0ERBADwhGhmOMvSgvGaqHW3ial0NS80ZXyE1EeNL6ke/WrXHB4dT6if
-inoAuUgRz3v9Na4rjSQ8YVFjn3NaZq1i8RM2KJOUU8ZkJ2AsrH6fqStjofLTd5ng
-iQaq2wLM5rTQfdjLsGQb1iDNDyCXU56+/l4mFZ2JiEGCq3Re9EFHelRBKQCg/7k0
-BIfyoFVTHw39PKaDBmCYF2sD/3CMD0J/WldhBM7gLOndH9/YEQaEMy+PJNXcfTWN
-WLygGPSOQdNBulyLkvcFIZjUTxFVakh7FbjMq3dsAP1oqthwmK7L8A1zsvRgp/TI
-4YMHkZSkgcs0PBBby+h/lpgRrWmtwjTPzql/K5xX4VSRS+umHye/7R+4ZEH7mABa
-m/ZABADkPGG2ECvfjNosPQDHZVFuF9oVaske0OjzxI+rU6sR1fJKtbOPl9d+bgz+
-df7rZ3mwppkPX2r/muUbd0CM1Se10sK7ZAoPYmWqHX+vB/oj3Jq+iqb6M5mDZzEz
-6h4hdnaGERyxbktZvhRV7Psco9CGi8o7RFUQTR79Y5ElnBavqLkCDQRBlStBEAgA
-9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt
-90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcw
-Yc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZr
-M2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEs
-tSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8
-vYlLIhkmuquiXsNV6TILOwACAggAw6kL0PhPZ/EPI0mPfmIYeaKUgTB8q47nDKY4
-6wDs1l/msVJHAVwGEBHuxmbC7r/qfAgfSW+/Lj4XbSLCqaZIWSu6lfY43IOIYXD4
-pe5cCnWkQij+h3LxRR6uDmBr5cwheHEuB2sMFU5lJiiQR1+eXYkPNK4FgVQpHLWe
-boODAlTf0j8gRR+aTs5eWXqfSA+UEsXpn6453bfZKELXkRmEznb4xyGWJaLW2Mlm
-aRlauYvc61M7FK8z15SSZbq6oictpnEcfkgnBxcNza3jZQV7WOWZ3BlD1nKQ661s
-bmS81/nLnxbov9ASs25K2olXBsHkERhjMnERedvv7avlmBwi1ohMBBgRAgAMBQJB
-lStBBRsMAAAAAAoJEBhhwyLFYBSyGTQAn2u/CvPzKwRv1FUkPYR751j9PGwDAJ4k
-Pt2uco8an9pO9/oqU6vlZUr38w==
-=alQS
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    1861C322C56014B2
-uid    Niall Pemberton (Code signing) <niallp@apache.org>
-
-sub    9A347756830C4541
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-BQJH/jg+AAoJEIuWKUP8JD88iCUAnjCzMS/aS+kcSh3MEQzAwIAQIchlAJ4nfbxt
-HE7c339gdVk3NrBOP2uxMYjGBBARAgCGBQJH/kXbMRxEci4gVGhvbWFzIFZhbmRh
-aGwgPHRob21hcy52YW5kYWhsQGNvbnRlYy1kdC5kZT4kHFRob21hcyBWYW5kYWhs
-IDx0aG9tYXNAdmFuZGFobC5vcmc+KBxUaG9tYXMgVmFuZGFobCAoQXBhY2hlKSA8
-dHZAYXBhY2hlLm9yZz4ACgkQLrlGgoiBdAJrdACfeBqnmjgKGEQWGXN/CkRc6Kn6
-2EYAoP5F+Q67aZLIyCINEIfmWNr6MXVuiJwEEAECAAYFAkf+TdYACgkQMaY9luwU
-C4GqcAP/Zd/qYdGzHzRTrb/yLjmtbHAlZU3PxrSCA9W0HO3jXRQCWloBY/Of1WOg
-YeqQRpQtK8e0aeUUZ966ir7Iqpt8kMuo/vvqnN4LZmTSBZIp3cpp9zDVWU4nCOgZ
-v6/mxhp7EsjtTpCdsfy9/GsqKjZhaikyJWyEJWV5o5zdmj6/WsqIRgQQEQIABgUC
-R/5PbwAKCRD9b4jGIdCnG12AAJ4/2920ifdU6veCaAu6COBiJFbpEACcCGIyiCMz
-/+1GlVZsBoDy9Sv+jeiIRgQQEQIABgUCR/9SzQAKCRA8mkIEDAiFtEMuAJ9UolA/
-MvkvDQeiBce9MLeoRw5wUwCcDfdPjZpG6rOhBwjU4j01gOuNd9uIRgQTEQIABgUC
-R/+mnwAKCRBMBCgYMRo95UB3AKCYEbZIjTTLiUlSixmWpAIQita/oACcCrZBvELK
-GXntPR3jo21pbLN7aC6IRgQQEQIABgUCSAIH0gAKCRD1wmAWTO7XX6zlAJ9IihAT
-+kUrFtH4iXFsVk6D8lzepACgk7XDbEYSBVfOAZC5OvdZH61nCzCIygQQEQIAigUC
-SAN5GR8cSmltIEphZ2llbHNraSA8amltQGFwYWNoZS5vcmc+IBxKaW0gSmFnaWVs
-c2tpIDxqaW1AamFndU5FVC5jb20+HxxKaW0gSmFnaWVsc2tpIDxqaW1AamltamFn
-LmNvbT4iHEppbSBKYWdpZWxza2kgPGppbWpAY292YWxlbnQubmV0PgAKCRCLOmAf
-CMl15dUXAKCdley4hYAIF6VQ9DDdqGZiX44nJgCeOZvjSdl4X9PwnKdu5M5jHOwt
-vRWIRgQQEQIABgUCSAU/GQAKCRCOo7BoTHZX8UH4AJ0d5DL3klUXnkCazZtoAt0I
-vpG3+gCfZs69ZMO8/4UlwLIb9g06vERVFzGIRgQTEQIABgUCSAn0oAAKCRDegOZW
-GfkpGGuaAKCindvuPaVfmK6xdGBq8j4LntE67QCgppmNBKTRudAPbgx8qiDGSQ4G
-ssGIcgQQEQIAMgUCSAtk1yscQmVybmQgRm9uZGVybWFubiAoQVNGKSA8YmVybmRm
-QGFwYWNoZS5vcmc+AAoJELOX3RpTbavtpH0AnjgPhfFt/4gamXsuHUcH5US4A5wD
-AJ4j1beuY1AbJDXGIkiGBmBPZgEyQohGBBARAgAGBQJIIhYXAAoJEA9FCiZiEL/A
-6iAAn3Xv0IpctMSCY3t1X/WGpLoGiG9UAJ9IkTmBWrghmMKKvOUzyGfuZW2brYkC
-HAQQAQIABgUCSEQGrQAKCRAZPxgKtV2Zd+F/D/9qMw9DHeD1aK7CAa3rCsazad4j
-j7F2jXAzcjA0ZNyU/X1oQUQMFh9Q4eUh7aYr3JOVwBQysxtQBzFqAvzKJQnsZzaY
-sgg73W7zIV5nZQt2dx1Ae8MseuHLCUKGbhH7BoDO+b7XL111ZGbKWChRPxzdtDth
-Km52KFT919iWH8DveugsC3qcwetBtrI4tUU0C0RFD5O36Wq38oIVPsEbLY3IQRD9
-64z7XVLCuyeOJY5mnI9OpjH0IufkQNTacfpH/bnHQeTPT69MuwX0XynDwGWSBkCi
-RbvqM60hJk++DCfrEQSHD4V3IsuqpB9z3XWjqGof8hyIQaES8dT5YKmoLGOat3jD
-dJHR7mazyFaS7JiSUM6zdKu1BiPtMV5+AFbj7/+t8oDoAV0srxr9FhineHstrpkz
-d9sxedJaZxhAdNvaVnPXuGGQ4ZxrCmm21ct4AHqzErVxstwIFRW3ECFD1Hq3LjtT
-t8+S5OGd4kZBIFp9qzPXcT+USsf11Av50E9TnvddQ2qnGf6Z5SydusBsO2qztQMR
-fDHvQ5GXwyYRsnm1rnB+fVUwE9JM8APC0iYzNYjRJSC/iqEkxTJ7/EIDJGBJ90mB
-+Ccr04+ts3oZLzbRIS+G8EHZdzS40f5ms3tk6DsLquG+bkh8b5dtmdgOcDobtaxF
-9o5MdV+6Vdvv1hGeIYhGBBARAgAGBQJIWT8jAAoJENUzTnWxMT3ilc4An2xwxFs7
-rhJCY6O1SYdtFLsAVzPGAKDAPrrBvq3yu/SyTjE+FIvDGVW7FLkCDQRBlStBEAgA
-9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt
-90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcw
-Yc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZr
-M2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEs
-tSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8
-vYlLIhkmuquiXsNV6TILOwACAggAw6kL0PhPZ/EPI0mPfmIYeaKUgTB8q47nDKY4
-6wDs1l/msVJHAVwGEBHuxmbC7r/qfAgfSW+/Lj4XbSLCqaZIWSu6lfY43IOIYXD4
-pe5cCnWkQij+h3LxRR6uDmBr5cwheHEuB2sMFU5lJiiQR1+eXYkPNK4FgVQpHLWe
-boODAlTf0j8gRR+aTs5eWXqfSA+UEsXpn6453bfZKELXkRmEznb4xyGWJaLW2Mlm
-aRlauYvc61M7FK8z15SSZbq6oictpnEcfkgnBxcNza3jZQV7WOWZ3BlD1nKQ661s
-bmS81/nLnxbov9ASs25K2olXBsHkERhjMnERedvv7avlmBwi1ohMBBgRAgAMBQJB
-lStBBRsMAAAAAAoJEBhhwyLFYBSyGTQAn2u/CvPzKwRv1FUkPYR751j9PGwDAJ4k
-Pt2uco8an9pO9/oqU6vlZUr38w==
-=bKSo
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    1939A2520BAB1D90
-uid    Daniel Dekany <ddekany@apache.org>
-uid    Daniel Dekany <ddekany@freemail.hu>
-
-sub    D068F0D7B6A63980
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-1ejrktxPt0rVTJs=
-=Rkt1
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    1B2718089CE964B8
-sub    A182F48D9C2C0825
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQMuBE4CPoURCACWBMGV/j1pioJPWkD9K9NdeRvld8sBorFBZo99DF3mcJvrXo/t
-We7gmvcx2n/8P5lL27sYPuj6WSRgtVBlSMXllJm3NL3Hu/7XRILfJEKVeLLTdxc/
-Qf0f4IDqfvdcPHYGsJwEDeODbiKJ45nE4dWsbbxDEmatXUKd5fJrNlEsI09oDNcr
-7KeJn7rTVAj/Yj7UuvM7JtYKkjZegrJe24dUWg1dh57y+xEQybOpfwyfcCDuhwyj
-e1V6Ho71BWa+iyLmIIbBFBVfWTNqyTo17Ac+2Itnpy5sU/tW3691YBhSXNiepjrj
-r+jQHduI3cLQIn4O42UognuV+HnFUwq4JsHvAQDjpwYJ9IFR7DqkphXK8FEw2xeo
-03We7F51vp4Rm6FKeQf8Cn0QdELeTxX4SkFgwxV4oEAhqJJCHhrISaZY1+AAVvSM
-CcXiCFZDYdkE8rOSWNYwRmp/wGurLpdQX02V/5ogUIcHXUxsqqi20ZE/gA/JcW9S
-OaD5Vc8iX/1spaRKOMO8Oy7ezNfD8WobQoc1Lb9XQCo6ddaihh2TG6Khpy5iqbF5
-/rTh8E6+2Yn/Y2A2V4eCuGFSnQrtIHCeFt6mv8tGAw3hRX0zC0wiA5nXonl5uj2j
-QDcXo4friVHVpLxJFivK+iurquGkYCIi72rNAg3k1oKJEZsKB0HXAqU6/3hTvXU0
-GnCHwlsf0iDsEv1Z4LLRbtYddSAnFRgvowhjX6Hiugf8CeM3wfy6AJbLOhI9DLb8
-MGEOpf4eetPiFTMI6rTw2O5MKATUA7WJF+fAYjM6SENCkXSmAwbdHe1NxRnbZ1qn
-dcjDBIR/SgaXm1HLpmJSyXmjyIbNoP5aRaYaSy3g3DvWwLSmsRyA3LqvWQI0m08S
-2CwdzSx+Z8XuOZ/THJs1O/ztd7R1MGZSbdyyEHLVX0dd80B3mcuAMO48dKNO2UBB
-QEsmzpPQ06ANmx6RnBG+H2Y/99/dxyB4C3Rv7x4HrrGqoJRQOUFpUbhFmEKeFiyK
-XxqDuUeB9KX4YCx53Q1EEoKegRAYFtt+k3chahLkQcIAG6lkOZRVA45w69ApdEoG
-E7kCDQROAj6FEAgAmlAzlKUZ/qynp4S/2fBVBhKhE1ujCxpew0WUotc0O6TCyJBD
-jQ0ofQCrQEuOQKNri+2GKHKPTmIdLwfBvREbkuUI0v3S/81vLG5E3TZqIVPJgrPY
-Y472S3Q5XyCVvwYeVjZjCoPnAuCcO2G94HrE09cmG3ABaoTFE2Jq9qPCPlABegKd
-pU2TfClkWSGdS9YMbH7pD0Vdgdy2TYHLnTR1XKKkEd3rYbwnAjJ5Pa7v+du8aHMu
-wWzyEAlUhtIvipuaebhuNiiuh5N7GpE/ij1FaKAc5kvrw/FszJtXH8dQerkmceDH
-FSYeYTh9pAhlFSFyroy/6ay1nKdGU/nXrmo1IwADBgf/fxnmg8WI2gq3AVjcQim8
-9tQj2vMYImWEZnd/GlCDZkz6+LHqFoKCGiScvW3Xvq/9j2Mq1NboTVoSKTcLOLuo
-QIPeRvOP5lcizoUF7SEUGgC9y7LHqfS+BWhnT8RloMw3cCsw6GN+LcWFw1tQzCjE
-U5lXzlNL0tlc3JBQnV0rKGPqAqc/MLQdPWxilaozw75UzugKLjkG+GsM4H/mxD50
-znIM5REadBKbRKg5XNA+UCyegNaCe+SOUS5h62XeQjUvNoMhUFmS2NC35LYAQejv
-qSp0LMBlnckqI9M1QpeWAkItO/qF428nZWhYrdhrRANq1i7n1A/x1zc9bZ1LAnDb
-IohhBBgRCAAJBQJOAj6FAhsMAAoJEBsnGAic6WS4WokA/3Bpp9mjsa7y22+novbt
-KoNBUJq7bny+H1OJrpFNp5cBAQDiBgh3Ny4lEC/XQ02gB6AglD7SkMPba/w2FnK7
-SF9TDIhhBBgRCAAJBQJOAj6FAhsMAAoJEBsnGAic6WS4WokA/3sHzwITDg1WZbYi
-CvNdgdQKGVc5fgJH9WtNfIA9cyHjAQDYBUTGbkCLXLRrbbFNZmCYGMkpJaJp1fsz
-yEpqZGNE2g==
-=OLRp
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    1DA784CCB5C46DD5
-uid    Rafael Winterhalter <rafael.wth@gmail.com>
-
-sub    7999BEFBA1039E8B
-sub    A7E989B0634097AC
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=gRaX
------END PGP PUBLIC KEY BLOCK-----
-
-
 pub    1F7A8F87B9D8F501
 sub    7D1BE4480B61E2A7
 sub    C2148900BCD3C2AF
@@ -1658,285 +1232,113 @@
 =Le9W
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    96FB9DB219F3338D
+uid    Trustin Heuiseung Lee <trustin.lee@databricks.com>
+uid    Trustin Heuiseung Lee <trustin@linecorp.com>
+uid    Trustin Heuiseung Lee <t@motd.kr>
+uid    Trustin Heuiseung Lee <tlee@redhat.com>
+uid    Trustin Heuiseung Lee <trustin@gleamynode.net>
+uid    Trustin Heuiseung Lee <trustin@gmail.com>
 
-pub    1F8CF885D537A431
-uid    Niek Haarman <haarman.niek@gmail.com>
-
-sub    B7D9C5C3EEC4A9A9
+sub    684EB33FB007E676
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFkyw7oBCACtGFos6g11ycruiWMuXwrE4+XbU85+1jR99AN5PcKjgXo/J3T9
-XaZLjJ+oTWCVgEHu5PTxAftbkq9+lmDAUEWZ1Q8dKrnVgBLsFNn+G2pcvVschorz
-CYFu/WT+eORA2UkdPZ7LH00iMx8DFpGtL2dBZY+tS3OpLi1LdNw4Dh/dJO7x7gas
-GWVUnL7+Cv53rmvwj8bQEuvrQjaeXMGxJKUSm0qpJ7BvkSEmQZ7qnRS7vZ05Iz4m
-uJsTNnuxtf0+fmWNrIqpv/J4RvaZVdA5OW/zA1kKYaGlZoLtWhKOht9gPAKlBk4k
-/fBfHoKqm+vnaOnxSzuYpQkYWqeEu6qzfZOHABEBAAG0JU5pZWsgSGFhcm1hbiA8
-aGFhcm1hbi5uaWVrQGdtYWlsLmNvbT6JATcEEwEIACEFAlkyw7oCGwMFCwkIBwIG
-FQgJCgsCBBYCAwECHgECF4AACgkQH4z4hdU3pDF9hggAoh6EV67Ep7HGBScS+Ow9
-X/gxOWzFS9aMVJw+MzSRRBm5YDSsJ3QfSEZHSDc7gkD6cHUjpUCaB2bAnrfv2wKO
-4EawnXkj9vhnZ/M5lVl2TOi/95Yep3aa+qCgl3jNefzANgrRgXhW3m5ao3YazHVy
-eBezQGKbuBfLTuLd5sknl369zY7IOuP59KaB2BYZfPYqpRrquFzZhdQoReSyhu0Q
-DFewliiCF5QA2AkW7yqrQOh7mEpCPvjX2GfqCsvIF0HoIL6zQuBcif7ELoSnFWYX
-RRpD7b3zshMX4Yt6yOMkcoN/JOGe0F9L0eoK/Cl1oPW1j7tdnnEn0+56CxbNExQx
-mLkBDQRZMsO6AQgAwWzQyChoPMNa3OER/72w/G6EtbS15PxNNktkPYFz2ibrDhkf
-z3av4G/mxYpYgvPhGHlgHbnGGfmhetEXVebc2iaWYih5AXxzCBQfDQNB5gsVg4x7
-SAp5rVmTnmgjtPV0domsbwK/vNepUK4dw5jMwxIbVO8Hsy66B4yvEMj3lFKkOg3a
-8uY19DaAlxehYAWyiWfcbduD9GeDGaiIXnbTgaf0x8s8bC1zWUlShRISrPnMOvPx
-D+PCJ/Qna2ixES7IpkzHKJCX1NMwKk20rH4saiwIpQwL3A2ktF6VRMmv1xHwZUl6
-3xZYGN7u9cJ2pd64xSGkTZxVw3P5KVoMOPTY2wARAQABiQEfBBgBCAAJBQJZMsO6
-AhsMAAoJEB+M+IXVN6QxkUgH+wTO3xI0072PDGNFgkDcItRy7G6tKphQNAy2ylDH
-y1QZ2uHWqNBHy9LuR0lzWVqWgeDudQQL2MAENnxJIV3mKeiHGspOaj2RgQcuIF6g
-MvFUODfme/vahJMoe7JhmX7xCMVWDEMpOg8gIyr3qix0s4DnkXKXgE+v1qmVoYb5
-qoPguSQnOyrHYxWN6qc3I6mwBi4sJ3PsCrkKDUXgJBiRjgbSkemkDi7naK0sRRYE
-tujjOSICJy1rc7jjeEPRcsk1unydI8aLPO2fIooiLrWJJPr0feeZVrGHS2Hpr2Tj
-kB+5IR1A1FK4o7oFcZTLcXVlQFgkac8BPyRuUGhF1YX1JA0=
-=rXm+
+mQSuBEwVyy4RDAC9hprQuF4fCPCYdtMlb0Mfb+6G2TqerT1MebLm8/KHCRnPbFLg
+PwGgcyynLX5R2nXUb6oBZQByDN/Dal0UMuC19KeZX83LTcFE9vr516BMXLXXKmM9
+Hz5kygsu1iwP4oqow8U+ih16rxdYDmM3KUGhPqXYExpYH777NxaxxCyPJn7Mz/Lg
+QdPkO0awyl86sex6THr0fYJqR11XW2BkbK6Pfs5ubfxrMZxy1JujUw0UmzzEkQqU
+1+lncxecrevglH1R2WdIHx2sjkHQtwqT2rcsk9gJ8ISL4gKJ7LEYfLooKRwro54x
+WVi8Eu/XZ7OHfQfgF4+JDofIrd7zN0/Dia0qKpkZWJTrYhxj6ouvYqMPr7+XEBub
+eHFU6S7Zzo62zkm4dv6bAhvT/M1WWKih+dOvYJ6+qhBt9RsHJdUePAVYLOjTcvl1
+Dn7YKRczBpeiGQTGaquSkWh3HPCw9Eom5wPs/J1L5eeLdKoqyGUQvdGMJxuFLpSM
+BVN7Q1Voom8XBt8BALG8oGuCkFZUN6ukJQn1SWXGeBr4IUbFU9gnfZUVeLMpDACS
+erCIYBhSRHK2XaHWxPppw0yMm9e/eO6WWpVBZLd/cbxtxwJUandSfOhKn5bGRsGs
+phhWXjmT4w5DF3cngfe9aMSAV6xTwfnzJ5nSBwejU/UYCiKTnGVqVkMV1N546ZoO
+XCEJLRK8GeHzBXf4bvPW+4DVhfx/LBz3h8VJ0vy/cjkEqVWPCvb05WqZ7bhnk/kc
+N5F9NzHzCnze3fMfOtUnLgPCaAwWN3S9fJpKumhwAXdkp7qZv6CuvKsXsETmAPYe
+j9GYWiUpbL4bm4C+QEC18F9VkDs5BA3PhukNWutFcYJuRoJ6gYyUaA1PSqvcTaE4
+RM7Jjn3/fbMC+PQTNOYdixN5u+ASAsgjEDDaQJYj0Nzm8hy4uDbFH8TIqU/RLs6w
+pK8oLonItiu2UQWPnExvIN+iYGCfeMWDT8Lcx9cDxpshVZTEyjImPMlQBD3dE9Ov
+Fhh1nVjAZhyVvPbfshtBC+FphC4///lHumxAVJqu5oWdVj0cTlEqEAlOMNHBzJwM
+AIwXYkRklTogkJUCSZb8g1FB+fn6DJCu7CB4Fjd596IJn46fkCZKyxQ+L16KNl6Q
+g+oEhzsGWrpiHcBDZk7Oo5II4Ajjs2IiNhEkbUKbKn1aF3fdnpByOR07Qs0fKYCD
+xuUIgoW9aLtkJiXnQv9ddgpOvNpiqyBVs9dw4c9wWJon6q87dSRv3ZnvR+x64A0I
+82gtiE/gWnv9T7n1ri/P8J0/wMN9G4mL0bs7wTSSyd/rM2dDruYysYQ+CtMD8oIl
+VhV53qEB+5/IGb24OVileRPCVW7jGSdfWLbrV93C7GOh7gLsm+M7sZYqDTLgGkq/
+JNZSiVocTCxnZbi788kT+S6LsDdjYzGwqTqrdH/kOFToxMaen2mG37vB6BjA80t5
+lg79qALXIOKWPDI3UJ9LMavq8MXILghSbgJD78QwmPEROZh+ywN11cDw6yc1HSFw
+NrSZZuKPnj01amo5/Z2N9VMw/DWCYVA0HkPGnnxLsyboIA4tE2JR/QdNuy0CGrmn
+8LQyVHJ1c3RpbiBIZXVpc2V1bmcgTGVlIDx0cnVzdGluLmxlZUBkYXRhYnJpY2tz
+LmNvbT6IkAQTEQgAOBYhBIhY1FvpsnaAIxgVW5b7nbIZ8zONBQJgXoAqAhsDBQsJ
+CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEJb7nbIZ8zON6NwA/1oYHd9ChpQGGO/D
+lKwqijmomSpy5eEz/U8iJeq1eF8JAP9nOLHArkcDUvLqXxwPyY3SD2GE19khrbRD
+w25IWil3qLQsVHJ1c3RpbiBIZXVpc2V1bmcgTGVlIDx0cnVzdGluQGxpbmVjb3Jw
+LmNvbT6IkAQTEQgAOBYhBIhY1FvpsnaAIxgVW5b7nbIZ8zONBQJan8rAAhsDBQsJ
+CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEJb7nbIZ8zONyTkA/3PTaqRvtsm6iKSU
+FD2qe6805NtersLkzPJkChAHCp7SAP0VOOoX8tDOc7f4kkBDTnSwIYdLexqaWuwg
+7HUowhiSLrQhVHJ1c3RpbiBIZXVpc2V1bmcgTGVlIDx0QG1vdGQua3I+iJAEExEI
+ADgWIQSIWNRb6bJ2gCMYFVuW+52yGfMzjQUCWp/KjwIbAwULCQgHAgYVCgkICwIE
+FgIDAQIeAQIXgAAKCRCW+52yGfMzjUO7AP9nd0SjT5u7bVzZ7WIDNhKc3ux2nOv/
+ixSKtENArECA0wD8C9b7o0lW0bODrhoPWyi2GLhcy3M5LD5sDTZ9LmTugc60J1Ry
+dXN0aW4gSGV1aXNldW5nIExlZSA8dGxlZUByZWRoYXQuY29tPoh6BBMRCAAiBQJM
+FcvwAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCW+52yGfMzjURTAP41
+zJKS3mNA0J2q0n/pAkqMd7EZ4SDGp/BG0lyKZvZyEAD/RZmkvpGWHemaNTRpuhed
+rHv7M0LnjMftrIVSpoyDynq0LlRydXN0aW4gSGV1aXNldW5nIExlZSA8dHJ1c3Rp
+bkBnbGVhbXlub2RlLm5ldD6IegQTEQgAIgUCTBXLywIbAwYLCQgHAwIGFQgCCQoL
+BBYCAwECHgECF4AACgkQlvudshnzM42ERwD6A6ge7K7+/QokKj/wFdTzgxOfocpV
+ttSqLxEsmhG04WoA/Rga2VZAQ6gHxgcCIx4Ot5XJJ1S/U6duv+jlYf1OT9HjtClU
+cnVzdGluIEhldWlzZXVuZyBMZWUgPHRydXN0aW5AZ21haWwuY29tPoh6BBMRCAAi
+BQJMFcsuAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCW+52yGfMzjU1P
+AQCAhboUjDQx18iRbYdtpgeMZa2GP0Go25Ms/TsyKOx/dwD/YmAwU8c6cO1qf1vM
+UgqdOMpCjxTo+qUcbU8nIwrisJ65Aw0ETBXLLhAMAP43xB9VDluJa3m0EBTwOswy
+MgHbCJL6iK/MwvBGrTbwdu93jdhNBfjSUsEExMV3YsyIK/0oBDf1s33o6y51OZFP
+UC/NrUmx+QycHcSL8D75+D4M7324T6q3dqNpg0+jFTDixHi3FmNpj8NY+7iIS+Wr
+Q1qkBCfBbKkGrUe6lxgXksenvRoDQFrBndxlZ4JLKNdmY8UL8hhFDVO2ekD50iKL
+cXGTgRaFN3NlU2BLunC+ja0iGCnTVclvAznhmtw4QL7S9aqQIo00LhZlxfZyEQi4
+ljpSrB6aX1eu6VFCrsdldA3vJ31sCPhykrJhoEph6A92a0ewW94+Eun+m7YSVoU5
+noZj5IQlQ1YZ9acQN+7blEAqUBoresm6XJMo/ago2VooTt3bUQlKyoNJhZKfQBwX
+rQr60oskczUkVTMxy2KBTKqMV4BGWEdrkPrrs1wFXUXq8adNUHJ30X3y00Iy58VU
+aRZqLx/J9n+40LsERil+9YoajUMaxa9Xnl1eATq0kwADBQwAkJG2ODt7UZPzcPms
+4eE3az26d+jSPDqNnxgZPYxeW2pidwpva7homwLdIbMT6D52WU/DC+N9LNtuo/2h
+35hnHJ7fasEhXax+ArUzWBkdi61PxP31vM78fV5h7xxFJ2JPv4t6Wmqt2i+d9GCQ
+911lHGwtwV/iAVk4FY3i4f+bs0dkJs+yNhUWsVRzSd87cfvxij2jB7qtIB5aPWdc
+qRsZtSd5T51NtGmGtIrhVr988svcecOrdATU9qBBDTPDW5AacFIWu537nultWrot
+x6S7Wwm7mU8KnOP14b7BVB4rMiQJclSYjduBe+aWHNSxOJeZmAq0JBLdgIt+nerQ
+FeMr57q0q0qqooPIVvrVlxFxzXHZGISIt/JsrOUPJFkI95T7+2huRzNUHFmfHE3A
+eHrcLTsKRMe5nx4OYw/FDgk+qgFfUtUpu6RqH28WTlGtPW/6cZIkCyzc2wtAlpkp
+iiUdIA933CtSpEQ/KiDOj+gKsdtaZb9tiBkhke+OSd7JtoThiGEEGBEIAAkFAkwV
+yy4CGwwACgkQlvudshnzM41tWAD/Qq8DwaDw114pXn00eXN7Qck0v5F2xGpW5ktW
+CO7Aci0A/1mTmMrlJszx6YZuTkJHvAVGLVGR2/uo53VEYjcEN7vR
+=PCTs
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    205C8673DC742C7C
-sub    AD9CEBA0521B1945
+pub    86FDC7E2A11262CB
+sub    59BA7BFEAD3D7F94
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-k2jL7nGs2D66/qmjgmO2J1/D
-=ugSE
+mQENBE2kzuwBCACYV+G9yxNkSjAKSji0B5ipMGM74JAL1Ogtcu+993pLHHYsdXri
+WWXi37x9PLjeHxw63mN26SFyrbMJ4A8erLB03PDjw0DEzAwiu9P2vSvL/RFxGBbk
+cM0BTNXNR1rk8DpIzvXtejp8IHtD1qcDLTlJ8D0W3USebShDPo6NmMxTNuH0u99B
+WHCMAdSa34wsg0ZpffwQmRxeA+ebrf2ydKupGkeZsKjkLlaXNkTVp1ghn5ts/lvg
+KeHv1SJivWKCRmFlbPhBK4+mxSUSOPdoBNAfxA51QzZoPizSk0VbRz3YufYRVLFy
+9vqPSorDmYJhCvn3f6+A38FS/j8VE+8obQ2rABEBAAG5AQ0ETaTO7AEIALN4amR3
+pf/FN8oMFa9eAc44ognamG31ea1lkqIiPssiJLC9J2z9mShkrECbsBj4o+HxeN/3
+rwW2hQFAm8cAbitujASpPs46slp7Ylx6cfmrNqh3tOkg9BW/5izPwjXAuULovMpG
+PVf30eeDpf6huwRqyc9uYQSS6Jn9KCLi9ULxIeQOZi3UPHyMOCbnehR5aQQk70tI
+jbNytmFKC+DXFrhDiBjlRQruATgtuYYKMWUBO65b/SyvLG7zPGmHXmCSfg2qCTQI
+8xKN6wxgQY6x0PN9BeXa1du3497qYGhaHrsxnW/nM6rcQO2hKoOlY/GmicB5oK40
+MMVfji8aN/EYTS0AEQEAAYkBHwQYAQIACQUCTaTO7AIbDAAKCRCG/cfioRJiy8Qw
+B/9UbKogRzDhPYPeBlnchOR6gF69B3EFP/bvE2+hY5nIZLMZiVFtFCuWj65myN8x
+z0w29pKbHLLiAtVtx29Cvc8X/8bGmEn3xbymT2X4znuN/IeecK6afsw7ij1535a6
+KA3mh640noEird9/ajUOysS8MKFg4kQ54W5bG/67sjYAEkl6ns1sHIzaf08Ty+UZ
+TfNQGBZQGyTqNP6SUqcTIcTvpbN6A8vPeO0SVO7IHuNGGPJAm7XKIkQxuzbMfxok
+Y5uLl/wm6bi0gtm4QB2gjQzdzdVGrXZzP+8vL71Vdr+z//wiwafzySPLJio7LxYk
+SOg5cWH752laIzudmSBBw2Lk
+=HHpt
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    205C8673DC742C7C
-uid    Brian E Fox (CODE SIGNING KEY) <brianf@apache.org>
-
-sub    AD9CEBA0521B1945
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-hfxMZo//jMG5FUu/pIWz5aHxQUjBv7phbwxwKvQAB7q4eYIPG6ZabYTQJDIweq3S
-q0XJaY1DxbHet+O4PKHUu+p0fjLabGTwENN8fnzI1adO6mKDrn3LcdZmPj9m1KkK
-2hslY7P8q5jz1AjAsVlSMWQoLwqfwj4ZqPnvUDeR1YivXnFf5jYkmX5rrzOHuSpk
-i5K7fKT30hwLE8Ew1Fn7LftldGWIi7U/T+IUlCDUgF6CxBKMjXCDtAic2dYo62aY
-WimcJC2KNWsj41+Iq+auUBdbIB4uHkROm0/V08OhQNSrHx7piQQcBBABCAAGBQJK
-/hroAAoJEIqviNbYTkGuiecf/0ZxYsoCsaUtkmLHhIeaB+VSgsGQRzQJExLyUi58
-i8c91+FXYykabOCzsQlIN3hhqDI0s7rQUJQTGoFWgwdVWRWpAhklidEFGx4wS9wN
-9twIiY+xgdwQkQ4/hf//////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////+JAn4EEAECAGgFAksM
-3mcgHFNhbmRlciBUZW1tZSA8c2FuZGVyQHRlbW1lLm5ldD4iHFNhbmRlciBUZW1t
-ZSA8c2N0ZW1tZUBhcGFjaGUub3JnPh0cU2FuZGVyIFRlbW1lIDxzYW5kZXJAbWUu
-Y29tPgAKCRCbuGOw9Ru4ikI8D/9vWt/TfpmUErEq+Md9F0MZqJ2H+y/nJJMviUDH
-Hx+po2etYJauhw5Ota6brkLjef1cNRWQ4tDxctQRPc8SsU05/Epzrdov5SWVutcw
-vmAjWSUs2wKp7/+lPuFUvEd7g4xt8gXY+mmvo8qi8tTNE+nfzaU7I0MHIMbN25P2
-b6//+Po1ifLVFE+S9fq6NbXI0QvuVBKCCmzVvA4VTVNaCd2CQCrZA+6c5VuFJBZK
-VoCW2FThDvXyQYlQAZmE3zYAZDjNFU+jAYF6aqY0dtU6wh+U1c1qbpLhrdn073pT
-HsfNsQW1vyzYLLr7QxkU9pVpFJ5Ajq41NwyU6xxSZhnJN+7TOYcJ17EnDKmdO7Mb
-52nn0zvxG2bactz+ycWwZrIxfQo9RAxyor9shORfPmEoVbsLOdfuoJxvb3OL8mI7
-wcTTfsSoPeqac2p7NS5ZWaDenliNrVR5ZWJFQeeoll/paBampGjK5En/QpIEoct4
-p3KnVTusFSsZdRnNkOFCKPUusbiQPl7dga17oiIqhpsLewq7BnQ9oW8h5jO0TuJ7
-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
-y+5xrNg+uv6po4Jjtidfww==
-=uA5H
------END PGP PUBLIC KEY BLOCK-----
-
-
 pub    218FA0F6A941A037
 sub    9FF24F51B06DCC19
 -----BEGIN PGP PUBLIC KEY BLOCK-----
@@ -1963,3811 +1365,6 @@
 =XE73
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    21939FF0CA2A6567
-uid    Alex Herbert (CODE SIGNING KEY) <aherbert@apache.org>
-
-sub    A98BD25BE464EA45
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-II4Pqx0ip7s95q54JSpekQZ65g==
-=QoHd
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    21A24B3F8B0F594A
-uid    Karl Heinz Marbaise (Apache Software Foundation) <khmarbaise@apache.org>
-
-sub    D658968EFD5E9F85
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=klCb
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    22E44AC0622B91C3
-uid    Cedric Beust <cedric@beust.com>
-
-sub    BFE9E301CD277BAF
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFpqN94BCACaAb8Afmng1QPu5k5uzLoA1FJnF6Wf31ZU1FzDxHFHLNUYSWN2
-Bg6k95QH5ruZ+Z/QOJSoIB+b3htDklyxd8m+G2KsMIqnQs0BaTN18hb3PFyMIknM
-YWkkTPF3nVV9APk73AebTAcd2V1GB7xOP+L3T7tyUcB9/7bDeM3od6qPksdVGNMA
-0S32U8SNhe4jw8uXKdFL6PSxgyg9yeu0V7DyR92V9jF+ZicZWxaLeKpf/Vn3MBX8
-JdePR9SCJc8CNj0n/tsvg/aSmGZ3OMZTUYYvrtfgpXUw0WVkyma+T0ANcdDN91uZ
-P8lV3o+Ic8f15xwsTePDhMhmtOapIz/85ukFABEBAAG0H0NlZHJpYyBCZXVzdCA8
-Y2VkcmljQGJldXN0LmNvbT6JAU4EEwEIADgWIQTHC4RPAC8h9tK5yHUi5ErAYiuR
-wwUCWmo33gIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRAi5ErAYiuRw5Md
-B/9ajI8dvk0oUaenxcPCchWQ6pwA2B5w9yQVWQBoJbxMI+pvEqpS6ur7PI+bJ0or
-rCyNLiNj/okFuU6yeh9g8eeKIR3984HtBAkGo59TtH9kTg3HDZF2ys5j+tdtcb3r
-KrGafc41llryb4XTGiLjcCS4n6q1EmZIJjCwvt1sIO1fo3cBim/1kjhjMgXSpiYz
-yB+ve1NaG+f//nfallAnryxFHVfk2/N373cNZTD9bV2FRZs9SSO2mO9BoyG8deSF
-x89lwLxK7MeoSH6pAioMMRGoZhNz2Thb9voUjrqS3P3+auwPt//JbhmCR3Zg+upu
-n6Aw5q67aj4V959Qra3ZpD/TuQENBFpqN94BCADAfXydE1VYais6o/4JpVQwk9JL
-3r2hkgwfN68B2rRvw9ofXZoqaBCFgbw+Nvz15GLmONoiDvP4rb1TsaT2Ti/hTUb3
-ov2W1RJ6OFRmiSkOuOjZHlVslYF2fPlZEXWdJ9PWvoKM/3taaICXy/AVSm1NBera
-1l2MsJ1ePr6dpMMDBjUU15rzWm3WOqwBNE34whhOjvU9vDl8u4h1xV96E5B47ZbV
-B1pR6y3vSYQgwj6BYkp3Uz2Mg3GQ/nBFoNuwV/F7LiUb5W68wOe8Q98NuREh1ico
-/OM+iudjP2LO0vz2sGe6X5UZGwCfbJnlq/fqoPhiyW6HPb1+JHU08kKeY5BJABEB
-AAGJATYEGAEIACAWIQTHC4RPAC8h9tK5yHUi5ErAYiuRwwUCWmo33gIbDAAKCRAi
-5ErAYiuRw+XKB/0ToXO2daY6/ZlkfK69O8jRBzbhn90/2dePM/qLy5Fe3UaG2sge
-uFYbTMGbRPvCpn9E5bceczdhkJKqEj5dPHVhUU6+jeyH/DdDgrcP12SQR2vHg9hR
-e0pzVouiMDX4QnUbW09CwpmhymlIp3pXb5jNa4iNxjYIBmuHDEmMP+uW5Ue+e2lg
-IAFWRFovZ9C1DCg0YYyGktc47cakq3ENKNU2LFvRcbgoyfjM0EprSUColUUNN3yy
-UNc+I+bvGL5swhKqdnRHagbg7kelsn/05oDFGPQHi0/VOlWU7wBh+vUw6lb3Zi7C
-obUInUhW3rPu5LubTOtT+oIH7+RSUIEJO1hE
-=j2aw
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    2383163BC40844FD
-uid    Roland Kuhn <roland@rkuhn.info>
-uid    Roland Kuhn <rk@rkuhn.info>
-uid    Roland Kuhn <rkuhn@ph.tum.de>
-uid    Roland Kuhn <roland.kuhn@gmx.net>
-uid    Roland Kuhn <rkuhn@e18.physik.tu-muenchen.de>
-uid    Roland Kuhn <roland.kuhn@physik.tu-muenchen.de>
-
-sub    EDB3D937B0C94C3E
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-1I65Ri4=
-=5Xso
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    280D66A55F5316C5
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFOOGVgBCACiDwUZOc6943aBGUrxikkfUnsyZfHtF9jihYmA1pSgfsye+JxR
-oG9QWW9+3qx4L/d4ZEqBftTWpsjyrY7NyMaeXtJEjE0vhiWNehgXB1z4XTJ66zCX
-nhlMvixGLQtfZANqCxOmtUGoSXw+oRFY/SExAioSS19HlSxApSaUzc0prdujqp9k
-vOKKIBWTBIUELdDTA4+enfzkAnIINUX9LcMTmO+Fh0AvfjDbq4fr8rBglyVUSCqt
-TOT4oGZlbpsq9TOKrTXh5go0rm5KJcbgKvX78ZErK6pcpTgNA+XFXCz1rQ9nkIQt
-HxWaEMJtpSkIvHIBz9qoAroGtNFzz2oF4ElRABEBAAE=
-=1QGy
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    29579F18FA8FD93B
-sub    9DF7F2349731D55B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFYFiMABCADYpblWssqGxbjTwsyroPh48BwdSKl59zbFKoEHDw87NeWq7fik
-h95RkbdeWsQSvduXWgQZsUDq9cLOkuS/ChAMkAAd3MPp1NMdFmAqS7BX5wU5s5I7
-XD+/p51SWLMvgrLxoenmoE04EuQqQiXd4DbU+HGPseiNx+mN0cxPssaZMBBsmi2r
-RjwcQrFTaC1iffzh8FKLQvoTDzci//b5bWcxCLbsY9dYcUaDCbBAkL8HzyZUKNE9
-XwXh/Rq8wDakI/VEg/905a9c4xq6Rss6Yn5E4V2SAo2+B3hYmvHFsefaM9kkqvXk
-MQ6zjx83LAtzavOzmthjhhPIgCAfoQ5Q5oDzABEBAAG5AQ0EVgWIwAEIAJ29KWGH
-aEt7gXV8EweJkrYd02nwjc1LyjUT2TRwEzZ9N9qUiVqfpkgnZn4mpHCToxFoqkHa
-iv/QDfj7cp8jbZJa2wjaUkDbH2pZqLBGJ0sUUBZ1KNPM2uhhWRzAnmF/bIo3+Yfl
-hGINLNqoevkYoo9cdelP3hepef4+PUuPmKmeo856uknmaWQ89LPwLlV7oj6wiqMY
-p22sHqTGAgXeR/fSLMK7d0vSPm+57LZed5ECoRMeqYFUwSMV64RjTMkKPsvFBGvR
-hppJ+uWQiMjFFuFq2DFeNBVtueHSdgCHx1TP9i+x+7JmYsmFFmRwnEdbxO3THFXa
-gFQGr4ima+oOjLcAEQEAAYkBHwQYAQIACQUCVgWIwAIbDAAKCRApV58Y+o/ZO+ZZ
-CACL1DlaVyRNjNxzC+30X6xGykPwCdwMRF3CRjoeIicss2pBJRaIdTYFpg3bCZKJ
-J5KDC6s+03zmd3ddnKEq1fEfRcoLZ9PNBYF3IESHnNPlR68RL2cjMgq6segbhOxa
-v13ZcOIOnyrWzgbVw0ZgN8P3vCllFtifwvuF50vTshIRY11G8Gluu+GZ7tfSkPww
-Eo+pRd8scdol62aUUo6a71rDOMg2XPULz0l2hxKWfeUsksT5EY03seZd3CYqOacL
-R+jaHyOc5Nh6R1MzcRz65YTwzVbKplXtZjOghMh+rS4eDIjEKlo456M4spKFBbTf
-Ub+QS9kCkBU8csUzwF0nk/oP
-=SZ35
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    296CD27F60EED12C
-uid    Charles Lee <ckl@google.com>
-
-sub    D95ECEC170500D9F
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-pbySzrh5PAD5/2W6CzkFMpH6a6E=
-=sgH/
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    2A742740E08E7F8D
-uid    Terence Parr <parrt@antlr.org>
-
-sub    74C249541619FF0B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-jJNKSYyrKuT+DCAd1uFvcTw=
-=SigC
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    2BE5D98F751F4136
-sub    C7FDDD147FA73F44
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBEwMV84BCAD0u42clJ3hghKlMGwFA8PPlPgSEZjyvs2dRCF+dKWBaPUnR88K
-kGfWB66jX6PBtHzeiVRa078lL002S1lSth2A+s1UfYGS5wVbE938wO6PCMwgoXJ6
-0MCLsTLP54MDlly4tq5qV0Zme1wH+9n/AC0fbKkLsEWbqXhNJLJ7F8TUh6hPziko
-mLAZCb297KeEDJ3tFN2zkzjx7V79/nkA1sKHQC9INdj5jXxkglTwZhcJgPbxYzCz
-nbGeczPxwzNrN/elx0DDnKEpEms/nURfXETsnd7t2xuUuAYhpGIadZOM+LojhP/A
-Wp0KDHsiSc5tQ0oJE//ydBksCEKid0Tu2bXPABEBAAG5AQ0ETAxXzgEIANGJ24GM
-VmW0QcuT6ykJXtjrgXW4HjOEyylQ6LQJZcCt42tNA95ZhAAiNgB0CBBUuOne7y7H
-5IW0wxnrO8qOStqvjbkUWVheqA3G0AlokZVWQRk1LjmBlABJVeHNBle0248pwrXe
-0lY3NVVywxPE1ol9DOasldSv+nKyMcRFgkZ7rPFnVaLRLoozuAIDwXXaRPczN3pg
-iegwo9BLqYV5+0Ncs24+G0hO6iTToX4166GvjWa0e0YHuJ/zztXPy9CAJ6FMJy4Q
-2ZpyfmIPua653srMDty1igFdR3TVNd7xIvyhw+laJY9GxWM0G86JOCpZhrTWDDZi
-BhgL+sF1iNPcC8kAEQEAAYkBHwQYAQIACQUCTAxXzgIbDAAKCRAr5dmPdR9BNoGn
-CADj7y3qDzkFxiHbfX6RlWJfaJ7wvz2r5D7WOiiyWL2y++zMVPVEhpPSw26b8Car
-4CjRxoG9TqR8GTO8yLlgQ1mPWovaxcmfNzJ1GBQGKD564fKCJLwVMaMgMz8jEANd
-FQNA5Ka25MdixHIYafKgY4TDATQYAHSs4MXW3Y1B+54LCJcL218vdWPxQ7k8AYLQ
-Suei1+1yA4p+tpjxhr+HUuFv8tA2HUk8RcoyRfUH9fqAEuR/u+xWm4kmE4qMIgio
-665T8WuTGYLkUDJEh7F8+L+r+f0nmCxfPhIWenVOrjpyzyjPlNfaweqk2dvHG4wZ
-ulntJIX+jkiE3IPFPSOU3gs7
-=s65m
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    2C7B12F2A511E325
-sub    10DA72CD7FBFA159
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBE+ZO+EBCAC3fZOOuYKthr0GcUge0PH2bh18sbM9XUmPKQz/W15l1NA/2ARS
-2gUXM0R+SunMlun9KsqjnojJ2ObVPvbm1Hg/66JSRgR3JWfIpSlJxLicpfu8rCfN
-bOjh4v9ZipD+px8w3o/RNrnZH/KRsoJg9yER6pf+pUZqTJfdg5lXezc1WF+/1qVo
-ypldMGfrkfLsPrUZTT689ubbig978e7eYmJEqldtaIwaAzHQnB70wIJyg/rEwFUM
-ldsvs6t6czSuJ4zPMvmh8TMpTg9e6+DMktPl1CWRONl8RPpgYMIC96gb4OnfDDjk
-Ex6clSCwgbDwdeAyOjjR6pVq+pCNTo1Pcj5jABEBAAG5AQ0ET5k74QEIALaxogmJ
-1t7arw82krV7ILlcOu6aLuuXTuy03K1/jU73oyWfUqwvPSbH4igcLb8kt1/6ogfk
-u0T9tTx+0mDsvqK8A8NZ2nDTXok3T58UAg0FTXlqUqZmy5QPtG+it2j3/xGgip3V
-5p0Ml1TqEl2SfW6gHtLptDUWzuzPi9SgK1ZFlueprPg7xwHmWhp0gwx0KSSOYWlK
-oEllj/1aDxFNcdKogWcGN5aJEsETCEguBP7olL75u6732wc3zola4zTy5bFT4kEY
-Dk30Du3VGQJrdsqlibdQpZYm8uH4AVXDmFMdEAjIs/DGRrUgde/oUqwtgm9U+p9M
-qcbmMoeLFdi7ajEAEQEAAYkBHwQYAQIACQUCT5k74QIbDAAKCRAsexLypRHjJV9F
-CACkvuGQCqxhvY21n800w27vc85F4Fdd7LjA/l3Bs9dA5HZbk1AV4/MFpadvPX1z
-ZuBOPYqbDSvnXGfoDgE41L29S5Yeg+mx89UDO6JcQQnlNn3k5mGCgR/BmGPSWc3w
-FzTEIXDYoj4/p7Wanj8vxBQOLmRzO1nu75dnOwgXAwKtTTXhHM6NCrxuwFrekKGj
-FZm7wNeBCmnTc65hMvWqZGoNQSr8M1yJ2AryBzGvWaonDklHCOUAmLuU7n7yBOxK
-tyoYdhMdRYjmhAPueyzK7ejbEil6wfCTWGyOaahNa8SV2Z2Lcd2aTwABHy4z3YtQ
-DpFob4bKD5ohhQunm2EOXlWy
-=Y1SU
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    2E2010F8A7FF4A41
-sub    E4D15F24364C7906
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEnOgPURBADYutfvXAtNgf67BQ2gWTI6+nKfILIwMPzCbQPMd7pykzF5nPMu
-Nswt3E7efo5IP1Zsv6DRrLafAW0OJSmL/oo8/ta0AfqcxCCbJ6CUyViifRZ5T4nU
-WfuWTZiaKRQ57jtt0WnNpFNFf00gDbYJWs5b4RU5Vac/0B0WDQ0wvOJfBwCgylAw
-LrDQmwyOZcws9VbpvZvz9pMEAMRkV6DN8kvmfktpbUnHNuZJOps5botqKyffQVj/
-b2zh9mQ9yFpaSWESdFgpJNeBGtQJEDOz2G/q9ydTrYyCD8ILMKmsUlj/DAjaE7mU
-/NmSpHBUO97NJN/fdMgkkbkSlk4j64lGaVovQph9ehw3DsuSTF8IPvr/DXV9nuIc
-duxTBACUE6vsxZlzB9dXe5HjKCoPGr90kUm8uCG/CVu6fBVpZZa9B6+OM6NhEkLG
-FA/EKgKc/tvNIlPsRwX1R2RoV9/tR9N772ZjhLcEBKV2UO9mb5iAWWZaMJtQ06SI
-Ws9fyd+Zx3GGY1+iwWPUxZ2lSGLlfg3Sunl7Cni86tb0fTHTrrkCDQRJzoD1EAgA
-lYw+EWr/t9pNqJhzVpAZ9u3LMKJfrGopbO+jOW0T58mIdVF4oMF5WZ4lHPTgHrRL
-KxXNcGlzaxjxBKtkUbnjRTSGk7ExzGIcWoqq65RI8JgONif1VpBaS4Y8WwX/akQB
-nCAL+eV7UwHttVUKEmt4xUW5CNa4BgCFKtVdiomvdxnBHBCgfWNHXpNnQLWhuOGJ
-ZVyqq1ZAh0/vIxUBDSJZPxmEh5235+2CDK8Zu4FCcsi409zrLTtga+ggsN4tp22x
-vRgNs6nwARsk4paFII3OMkdMVJlGqU0oQ+H5I5PADBFSUYwpcIYne/+k19+QMR1x
-Ik+7EavzdOribLC/nwaLFwADBQf+INE8jnD6qg3g1gRN3S9MNh+PAPEsrM/7Gw0N
-CAhaf3METVwSzZfwVNiXM8DVEGjaBAPTBpuJdveHpTG43E4eibjXWTe7j5A5QSUx
-O7p3W4AXNTKldFnlKkVs+6ZKCkKeasY2/7do6Cf2Ed6lL1CDXEYcZRZ6BbkXruI/
-HqT/IP2mTw1i53S5Gxj3gaG/jOroXN5cBZnRoaPJQpuri9hdUJVqPNIDhe8dz3Zx
-kHEgVPMoanp8xti86ErSjgvsxGs6xjjuxC9CNjMjyod7d6E1NSt7gvVdksX3vok3
-QvIqQKDO6l777R9LQcxEStPz91mrBRTAyO6b7AtCk4/5S2hTdYhJBBgRAgAJBQJJ
-zoD1AhsMAAoJEC4gEPin/0pBVNMAoLT0LzbZNVmium/JNdBhDhufgi7JAJ9s7DMy
-snT2e4S6/VitgWdoI9iCfA==
-=sgte
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    2F566D4221D3EC52
-uid    Ryan Harter <ryanjharter@gmail.com>
-
-sub    C4725C965E0455E9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFPSiQsBCADcgBiaKkIG5jVFbQ0NyG//y18S84/OT1X1I82OwtTryxNqxT9A
-q6HuTJqRPi5Qd0BwmQB6dG0mug9AEp58L8W5udiDysHeUvBKY6zTOprSSFvFg/Y8
-S7i9D3pM6k7L7lGahUQqVAAU4RSky90nJfcT3qTNpmsO24EelMf61XvdFHdyPAjS
-aAO9W+QWquxNqXd0FVQqpHKRB43oR64oeAAE/N/H4lvemuxK6aWEq0/KJo0KYHkt
-H60Jo+djdNhHD/EQwCp9m8pKd3FuAAI9/ypvE/a8LeH/8AcLqnrPq63vxVe678nZ
-yePb1Xl7zQUsMw/ZD4urlkcTrOLl9yfIg7wBABEBAAG0I1J5YW4gSGFydGVyIDxy
-eWFuamhhcnRlckBnbWFpbC5jb20+iQE4BBMBAgAiBQJT0okLAhsDBgsJCAcDAgYV
-CAIJCgsEFgIDAQIeAQIXgAAKCRAvVm1CIdPsUvShB/48Ai4yB2nlxy05CwbuX1ka
-E39VL2sb2Bd6ZVtmkWerIaA16MFj+/o12JlJ9R1S7BsrvZor/oa9ejCyJLUOHW5s
-vRD5BkAJC8IRpk88szJNeVwh9gRgd/lWv8IEKMaMFIx1I96NDKo2bjw+rdF6Qo1Y
-C9yC1qsj8vg9+szMvfAoDCN4KDa9rk5/k7a6q390QpaXm7KY0TbqTkUr8Y+NMY+R
-yEap/qk8EzaauKQyHvxOBj9m8bkv2QlxID9Cyjd1ZyJ9hWuyQy8UWLPy6pVXKPaC
-CVlf+Uoj/qbzoVrElZDqGok5GQfKjNFzOkHuKEgXdYEuX7JWJgDO2i4pAr5isfST
-uQENBFPSiQsBCADt3ycVnpTw4NeU+q1rt6+aBrOQfcdRrTAxAwhilKEo+jD1kufJ
-LfcDooqEYZ6l4B9Sw91/zECNmIyqRiMlMTDtZOniuv/fFgxKSzHIstVDjO6tlY1R
-DqjzQUSb5uHMTfToTDrLki9KJfHIHfHSgOvfa1l3FmX4vt9ro8X8f+wfZg8jHY2p
-aWW5RfhVprR2/A91nzgs5a3wdPQi9Bl6YRZKSJKNvgktsm18LMhwLqvuBpQ1ongT
-QdUVY9VLIkDc7Tn/V5x+2mWCAf7HrJg9UnZK0JoKjop4ZwR7MQ0DoBh2K1Hd6RFH
-rmKjpCmKA3TZVAe5C1Ntloby7un2FOL7zZfvABEBAAGJAR8EGAECAAkFAlPSiQsC
-GwwACgkQL1ZtQiHT7FL7Xwf+PM0DHB+7ENW+1HbkEXZRVF3hNHSWFWj1AySvSrUe
-Xm4z5I2Edq0zDdTQPmi/aEhYgXVzsOWXi+MinkNHXerzt6YHIfbeJJ6dX5IL7Xwq
-rsDRxpg/J7MoWL826FUXZ6CePBfGoEA1IjhkeSkyKvLm4aLv9vfC4MVuLHRbsx3n
-np4ZkMVvLBSnBSeBTLaINvhlp15NLyHweE1KhtAqVuiisWm86n9kqIXjfoj+DFuB
-kK9cE/YCU0sNFELYgmLVVoTjxxtY9mPsROt+KJxIDS9BQ8mjeifXbYwkHERnOTKx
-NzgwWngWLQBG5cIsQ4b80Hzl5AF5ApOcC5iu6Z5e2OWW+Q==
-=qdIG
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    30E6F80434A72A7F
-sub    C30F4CB428DDFC28
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEaNL+QRBACYhfwZdDNXVeU9G5/XsxrUgQGKkhfOaB1CyPHAd02Jyc5oHR0a
-nu7dHb6QBlY8b47pX8ii+uTCOX2yyFlJt2cuKYqN1TwHrMspDTC9K1x8WJMmKdM5
-KUtWchFQ/zmFgIcXM8Vm1851k0aOOP3Pkexv51u4kZ6tbAK2iqYAawB93wCgkv/X
-YpZR9qL0FWip23gsjjxf01ED/3cHs+5L6hm0vP4x8xbsei31/4yHPIRytLhkS3CP
-tPZGANloRi05FlPxNXMQdeI4tUk//V3Yew5LkJC7Ue0zkAKAxjyWYBBsbl20grmq
-89ZKcj0/pZBw9Gzm4indpORfPRT7BBc+F8+2TUD9jpha+W6paCLp9pFJR++OyiZ+
-hNwfBACIyapWUmoEmV4XG869hsnico6vF4WzuhHe/PfityhlHX2M/DDX0KrMqNeM
-muxYNsKoSw3EU8BS+g6bHYvxDFePPhpFIMwbtEEOul533V1sGbPYhBIiSBpnb7FX
-AnbVIYk06T5mKfaK8n9XB4BIrt/pz9gxDjb9KBuIHE0H8OkfzbkCDQRGjS/kEAgA
-madPbo/cLInRyG4EezfSMDw3wNw3Je3+Ozy12FgQE7aaUQ6a4YRLkWeldmTtOBlV
-XqRUV1MrGQ0+C1bWEAXPsrdzzInM8NiXz4d5kCVNa8WzfnA5Fe46hxUqUawSEt6P
-9QpT02mzYQZhazDMJqgGWFHoMHKQVtAqTlKH8W0D0YPRdV6Qn/VYZ2ZRW2mk0tU4
-/xBMLprmcQCrDYXYPC/apl3tXuzXqs/FA60lKZzzE+KqW53G7qSbSSN59IRCpk0N
-X5hFMZJ+/oBItH37Z5V/pVhRGytEfA9yv3IELpJ1CLtFZVS7lJTY7hsr74qRhbCC
-JAkjR1Ywz1/Ya29NUjF18wADBgf/SXXHiYR4XasV+LOngRzA/yw8yG+1gBhF/5LF
-NidGG1NnkUVk9t0APwgd5pubPagIrVqJVbr3UfFjU8lZQOLUigadk+JJ3NnhRQkQ
-NZtkvN9a53vZeORGWNDoxqnIm4RDLJjjf4pfI8tORRwNyqxWxNB4bAc+k9ysXEO+
-4qbQQmCFKzXjCaxWCsl6dXuRvQ4SKzoi63pN05o9/YG+wh/c8QCM7rZVDqIVDoqz
-hHrsWszUyHvr8Vg2uYOaIbxnWXhaNPb9R4h+DV2dITCeIrOj+Ey3MRl+vXNDqx4B
-nEq2SxFS6PXWTjqp7xE0ITKv5rppyrR231RLmY5lQxSbm0PEE4hJBBgRAgAJBQJG
-jS/kAhsMAAoJEDDm+AQ0pyp/2Z0AnRYlvIQAMoO33jBp6ZEd8GQ8iARZAJ4323AS
-sjiqTZMbrvYrk4fWvFzxXg==
-=z07+
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    34918B7D3969D2F5
-uid    Brad Corso <bcorso@google.com>
-
-sub    5CE9BCD2ED28F793
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-QuOcn0ypycYY9I1Xl3Z/9D1jxT0Q
-=pU+S
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    353A436E043E3145
-uid    Garvin LeClaire <garvin.leclaire@gmail.com>
-
-sub    7494750BDF4F8FAE
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBE1/v9YBCADaUiBecDzwU5g9Gmn3T9pAa17OlUl2iH0zn8tNTUg++bW/A9m3
-lWykQBlvPOi32lqZ5q7yewSNBGHl/pHRRVsIE6hhkVigNQbMztRFPshKCU/0RvKu
-29cew2T37crxYFGShYFwiJgOdQmXqhgIai0S2sW0Iavf5/PJJjXbrM1YIqUqkf73
-unns/lIDEiIDXCnGRNJKzGWTPsbt5R3hVo9mFraPUxapw3b9C/2GGDT/mwR51IOf
-rHkQby7Uh6XzDC8jWIH/BrFT6gFRZgKn9BRi3meB5vPip0rvcxPQnmvi2R4iUIyg
-DvCsUpXr6RpAEK6/p4k17JeglxCDlAbTDLUHABEBAAG0K0dhcnZpbiBMZUNsYWly
-ZSA8Z2FydmluLmxlY2xhaXJlQGdtYWlsLmNvbT6JATgEEwECACIFAk1/v9YCGwMG
-CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDU6Q24EPjFFHoQIAJXH6gRuS250
-q/EBG6vHSSqVWsck3vDwo22zGwAXOmuZ1YH7kCdzyfs9i3LnmtTyMUymvCBE0y94
-Bn2fFbin6CQsPS5U40NiquBo1wxyR8qO9pFpANlq4old1qW8t9mZBkwBjBpN6Pmf
-L5vbrgCECN46wVGqarPxseBgVjK7BB9E3qv9ymUrUJ8DSvL3b6vUwNEIqXDcZHKn
-xn4EX611YigPYiQazByw8UNq0a8kR262JN2ND64IxjBtFikdjuP5nck9Iz/yQ++V
-YpS2QfsaToCJfl8DhsVcht6N6pgo5FfDPOOhZyuDPCC+8j83JaeRS5sw6NcK03rk
-tNsnz4hef+u5AQ0ETX+/1gEIAJsFRfWMDIoJMsLPltDrrPsg1lpl2RFQuPqjZfPM
-0AAiAJTB/UhRfoMoijggV/m5r0y9d6LH4XhCynm+2VC/6TTxkvMKHAQroZFKzBKj
-vpCKXYaLgiMNi0XfsQ8p7/0nEUA1XXZDOrol9JJQ+3XxaQv3+64u+ZiZY7JrcH9M
-tytyVcsqOnQe8ST02pnpjwOIqh0TZt+HB17PWraDWRETspAMfbmoZSB9vEBiHsSo
-ELZYywFxcsxB+nbMunYONTjp/14MRKKlxeTLlH7CfJwaGV/2rvN+dKOymbg2uA4y
-/wrZrOJVE3G7IP5ehQ/Pitcb1TP6Q5LISdAo7zGFslS9iD8AEQEAAYkBHwQYAQIA
-CQUCTX+/1gIbDAAKCRA1OkNuBD4xRZ+QB/45ejZ9k7v3Yh4MtyY0th94E2h8UK3g
-T1axDIEyeWqQZaVxqvA8gG2kXhFP97c/WINUScMcdOCqTpUWRnQaZgcvD39/AFc5
-Bb3kN8Mo69YoOGkRRkvsY28NhRQBjn96QKUBmc4vGNBLV/XCsbhSD8T5KJdFszVc
-THg5q237mYucSzDfU9/0EUeSuFwwtng93Y4Rt5nDTm1MLcnBi5CTGw6Q1FL9orGN
-Hi6OXcwXDGKK1iiWjUjrmXwpgp5Zv+A4WcmG2dZHADjBlsgeHhfWCfxdJeMNZ5BO
-LL6SHLRuKiw6HUKNYs6BZNNdPQXapzKhCpSuFHW+84/4S2jX89AAfhTk
-=S97J
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    358A4ABAE72947C2
-uid    Jens Nyman <jnyman@google.com>
-
-sub    B8EB751F2C19011D
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-FFbW42hpI8TDRfB4oHWyTsM6zYXNXw==
-=zYIg
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    36D4E9618F3ADAB5
-sub    C4935FA8AC763C70
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGNBGGiftwBDAC94Yhhh/5yO8jYFkg01MPnooXKZEPwxAbAg9wn5iM0tHxhEpkU
-zJVYZ+JYq013+Ldp8Of7A/d6hKTtZ0xwSeY7S/WFykIk6tc0P5j0sfFS3pGPDk+W
-D3DwUa+8m0PriF7iA57vCOE51znO/IUIA3PG2YAK6jv2/i8MDXOOq3qB7VrbvKGB
-kIPubp5PbjvP+LFhLuUReU9m2y/3q9lNFXdd9kE2iScqGmu3FDhRJxBK/WQ2kqiv
-sJZjAYeHEVNcc88Ah6vXI73uYrvWVGCErzswYy9UrxCAQ/x2OxUdLw7NTHwjZSYC
-JvH5JPPTlDxMgfwTIsmaECtw4QgiVmvDp+RVa9zyrdI++RNr0InsXv9gWMv3p3yf
-TF20ZL8znFYVUi6XkeQhZjT4fHwDqDVnxhSAFe3E0cwHFJBQe2EFLljwNy6VYnio
-wBr7HrAxczRRqlUy4a3bH5KwiNwwvxgqfdMj9KTVpP9t98/TA36bIohwGFRWB7W4
-i395S90NsTbCh/cAEQEAAbkBjQRhon7cAQwAtPmKcM1/z8sMJnt4sHe3ndXsOdSq
-TJbRkAcdyDO1F4qgj5z9wkrlVVKGuVtmJS3qmR901Q+oH+JqM6UeGqhNig4IQvME
-iQjjelvKXMX9PPVzlP+ga5Y1/2mnUmgmYXK406CU7aaQ3hs7++XDonnQUt5nWF9d
-XT+xK/SDLYMk5i1TNqPVFZBPm44HpIjKGNJXD7Vv/5z62+hKswpLXgYt8Rz95ByG
-ncjQ1Lo2M1T1Y/EuwlRoc9RTdyABavSQWVLKIz6kKM4LejajjRvLnybMUug0CJl5
-mni4cHXx9t0pMlG5DE2O3mZLwTgWcJ8cu2CtPxA9iLfVvFAThxk3ZitkEhChBtG9
-/V8D4DiTIht6bd49xkHP5pxtB/fuo9lNb0axSBaOAeant3KA6F6vki+chnGhOFqV
-1KJHcxYG7VsG1hYhy5IbZsg4GdcXfTwwF1/mq8kvHfyTkBy6HMDGwpr0ATNnrxO7
-tJTiVqDuxfviGQUjqJIQDns6fM9BI4OfpXyjABEBAAGJAbYEGAEIACAWIQRH62g2
-JF0tQOid+0E21OlhjzratQUCYaJ+3AIbDAAKCRA21OlhjzratRBcDACCfhsaCFvM
-JTls5lT/dcTqSCYJYZyDj95DlTiaRNkXnAGrTyE45PnmJLv6FFZzSZdu/eLE8ls2
-MY/KWqnZYYV2Mct/pwDDLSjdAN/NSRe9HeAh2OS1kNeN2SIcoL55gEodKBNSMisY
-9N3ylLMxHZPa5LNBo+j9wftEaVi2fTX8LDJFQvUOZ3f7cz3f6u42FeHUqaLm2alH
-QSkfTB3yIu8Hmo2EXHh4UfwTmS55OBGLQ91d8neu7PcimqCeadeHW+qY5g5hr5NN
-LxMA+n+vwPGcQNxg0lH2XBdlFBbAELEGxMcKbW51QL2h+EdwGzT/nK3Iia/qm3N5
-0Z12j/hhzohlf7TQjhzB43Wbxef94JbKacvng8t/hG3+n8UASQzizCSn/oMkXQom
-XdQe5JFgJCroU2CfrdFmZfbkkq9mAi80BLUEAGNTUQrg/W39VX1/klGiXiWtpU8g
-q/tSGRQHXTwG53qejlUtKI315ZizOhJiniSDx4fZaK2zB9RlZkrnd1Y=
-=KPJF
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    379CE192D401AB61
-sub    0CFE993CDBE1D0A2
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-N9IFsU1/E/XhP4QkRJrZI1F/
-=N8tg
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3A1959EEF8726006
-uid    Eclipse Project for JAF <jaf-dev@eclipse.org>
-
-sub    D908A43FB7EC07AC
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-9Q==
-=PprS
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3AD93C3C677A106E
-uid    Carl Mastrangelo <carl@carlmastrangelo.com>
-
-sub    9B2A1B698A113AAD
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-U/UZPX6m9g==
-=XXe6
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3C0A8F4744F37328
-sub    D17266C6E05F9993
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFSQ6LEBCADnoAfQsg2uDYMnEPqt7tlnZxzyLVKiHXdJzT6OHA0FUdsB9H/9
-vWI863v20dsk4+tf1pXLa1AWBusInf7FM1JBCQBc/By3fR3JRhJU0QSoEcwtOQSa
-MmktLQx6s5V3hee6pJDJicY3fESWqrVygiUeyuRJupbBOOh3V4GkKnk1s48ZBesl
-viHzOjz8ysZKbn3h7mDuR4NaMx54U9x008NKs4Ry4ztAXbf2FqkmhkU1aE+1v1vz
-/mShXXuwGjYuv4OnQyP6ONHJPOclc4mDFU3yuUg328AUCbWHPg1kAMbpZLiEnBgN
-anC0K9BxYfVdQV55XSMMrdPfC4dNAwMEuzkRABEBAAG5AQ0EVJDosQEIAN9tyXFa
-CMYODFVn/vTf/9+Am9AoNvTtvoulLoC3VsamyIel3QI7ek9rppLi6G/lww9q1EYy
-3F0dR4ciqN8meMnGCbl0KhXCn2IJLp3MabaG4BmMbdskAGoqd2P3lynhbOnjQMBV
-RMcXFWqHPMfpAB4/5RM3wsgOn3vn/eDNBWPbGiHk297EUxGhooVmyb+1mbVXuNDE
-8S9KsiLus3Yq0vytlUI6DoPZoTMaO4GGJG4aOUw0abK6zPfPylzDaFXoryTaRhhJ
-lb4HONVT3GNFOT2Ob+ntgFx0I0cPfKKHDqJhcZl/CAWUMNyQb5/+u7uybyBGHzJw
-fydRH28FC9+m/xEAEQEAAYkBHwQYAQIACQUCVJDosQIbDAAKCRA8Co9HRPNzKJQj
-CACofWbBHPEPNj5mqVtJf/HuViQYib4PlIZKvcKsl2TVXkDdARzW38MV18ZDKUm7
-XECp1BPST0pwKvf1auq1/25X1BOtNC9FIFs8649K4U6RouDbXPo4hyzB0Og+608b
-KC8MN311Cqth+MuWy7rHjBZytNR8CW6e1XQBxJjW/G+1SYRM57g56S9IoPiTMDsW
-8jMQaYyNY7/Getddzfl4EZmjiiOysN3FQrrwF1tUGczLaDiaTO+db/FEGJpzBVmW
-WkxFGLuAjlkSPvBW+ijlTMnWwTnd3Ps/iBHWXLb2StrDV2vmhVln2gw3uR1qML90
-iwdK19eTAhhc+QJ28/SKBcyA
-=F4/Q
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3C27D97B0C83A85C
-sub    4BC7B9A81C39EBA0
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGNBGEdX1MBDACuRDzoPMh3CyUHQydFo363R6OdXqMZ8mJQMdysIJCXOXZGRwUC
-uyPOUfH6uSG24RU2zvD72D2SGAehQKLXLQeN6XCt9PRAszP18dJADm10xgkXJm+G
-GJm69bRYP0GIskQI0D2hXoUlSyXFKZa154pkVzmeM40UXo90FrMC/YjH5dLp7uDn
-QtZbsASlHiy7lXFX0IoJHSHZFppmHcW2KOmFfKwgE9dpku7CdTdySY9BXiLC/Erb
-l2WjwzSDEkQbnq6Jm3/wb/AXxDEu9H2SE6kOxrERqXBfc1ycaEsJMxpLxYpk/kGz
-U6YXqXiOla1SYC78/SnSV8Dkj4/hN1/XtFmkmLUn/WgctmPnsE+fMN/ALXrH2OE7
-pUYLTy7jxJ46dChpjIPJ6Tp5z7EbxdsXR9JwLFQP+Fyp/anqLO/uLkZhZGhI3r6t
-lvFyZW8zoAuf6UpKL6bIvxld9SDuEqahbU1RcLsK/7Lwh8gFYXvq6k9siV2Fs4K+
-UWyVrn5cdSMErMMAEQEAAbkBjQRhHV9TAQwA0zBHsAralWNrZBdCkXHvNI0VqeJf
-Ix1c6AMqFW6FN73153uan6AYkpeBSWz9iHgchZY5UXgaKwx75eW+89X4X0SBU2Lb
-B39584+VDdjieynrW4HH2Fv8VJicioyMYyB/16ERidkIPRAREN3K6SuDXRkkzIZF
-LbHhRZZ6XByKDXeAZ/U56TPgsvYEsdFoj7vn+44ZP1GaAeje5v7nqXiHB1lNrpFw
-T7NV7YQXSpkqQJ4ADaL4jzGHS7umGjY5/T4dy+43qTPIrDSakHFGElfNfW5y46ta
-JiA+Hv4BowILjDMHska9hXM123CCuUS8ZQYmouYleKTCcfp34xxXuKRNDJgY8oiB
-sjXokdCoaRhdcS/PrlQvWfCA/D49XLGCeXdC5veOeGJF9W5fk5qv8Bq1vD/jnapH
-Uf92VkCJ+aVqynf0pPTKrctf0fNsttstGrPSGg+RW6NnQ20B4zgqwZAYME+z9w2z
-jmmLjm78BRJ+nzVvgll8aHy5bel56OdSldK7ABEBAAGJAbwEGAEKACYWIQRvZWt/
-a/sjjTis+B88J9l7DIOoXAUCYR1fUwIbDAUJA8JnAAAKCRA8J9l7DIOoXBx7DACt
-p4W4buVzQKYLZM0Fxucb8AgzJyrMU/01n4ys/hHBLNlCHj/Ar49PPxJ97M/QnI8q
-7yqNWOXPGecU+slBmK9biTHtHnaRhkcC/NhZsIwPNhw0H6QGGYi55VSuUPqpus3F
-fPBQ5uhGpSCy9dfux+9swNl1ZhMj2qO+m0flVf8t1JWLqTPs9giRTWAZfHuGGFdQ
-g/I+3LMyqmcphe/ysTlashiLyusQS3x8OpNhReXjZiyU44bVO5F8K+CZ28404OZi
-rg/TV/mtrH5t5A5rniev4r1FBzLTaqEXslSrvGzZhnZyKefHNL7HMiSWe6AkJBOu
-MNzPX3/PKRjhnZlLM9wpDSpG9Z66cNDDFzUwtDYx5O7gbLFib0OrjIz7q0rhm1h9
-nWky+RZ+dRuNR6HV9OlPcS5OizxbdZ9dgjy4fUuMK7G1gXyifGEXKJCXFW1whs0n
-DOOaC87hGOpfZWMBVF1mbtI+Mhb6xY5pv4UXfmVBNUZLdT8RShMJOwemBJjUkyc=
-=f4Sq
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3E3D777C909A447C
-uid    Dino Oliva <dpo@google.com>
-
-sub    7ECD484BE871E4BC
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFhV2aoBCACyHcEuTUn5nVo1ODvWvgBgV8b6Aju4cVAhMNIvAdcOYf+N9Rgo
-Y/669/P371uN2hc4SxJeORBjHyzkAX2sJZQj+FwdvGl60YX9Zv/NQaTzC1WFMRp2
-rb0QGj8yia+WA+If6hatbZmCg87CtDVpzpPIZUzX4UO+DRQEhezflt9uZ4YrFoYq
-PmbL7znqm7/3kpenKrNoinGnzFG7wnOrDfMrBrZgL0Vt95zvs/PBTyE2r4GWCNms
-PH6n50oTck5Lif0EtnIp26o9+vgkVVAFcHLUDy2y90g67j137SNnYu/47FD/rS8R
-A2Y8wRd6lXXxI/n5Wyj+P0Vai5zq6BIFPMbpABEBAAG0G0Rpbm8gT2xpdmEgPGRw
-b0Bnb29nbGUuY29tPokBOAQTAQIAIgUCWFXZqgIbAwYLCQgHAwIGFQgCCQoLBBYC
-AwECHgECF4AACgkQPj13fJCaRHwthAf/SihiHP9sr4LRSw3TW9t1CuKW2e+DwsJH
-6BY7m64jENIKF2zXWuMkHzGmM9pVO6qy/hY610wI6GqppuPESaFOVBc4sp5i6A5+
-Z70ZzXVEM+rfjS65qAbz0VdaF6cIEcZrJ25DD2DYLMq9wMAWo+EqKyiN3OJ/m/3t
-xz4WECkgpAgIPdfriJ1mmkn0fbpG1Hc7uhwtg0EfcAc2nN84AyPlBbh6RMkKDFgk
-K2/zwsdR6t93JzexVEXRN7hiNqBu9rFPbyvXy2jtoO9P60vlF3OuvM3SCqAr4yYL
-l9Vlkh5ytoZW/XPMJMOYsullzk7q2zSKIOPkx/Si7fqKz4MqZzc7zLkBDQRYVdmq
-AQgAuTKXw+m5HveJjH7uTGdkmX37rkOX7Kl6cyPutq21tbG9cGhrOplTJN9lDoK9
-7km2YOs16SGVlKTEQtJ7CLAQGRLW1qPATMlW6gJ5+KAAY1GFej+DZOLYy+RjxxdT
-+gDSIXt8kQwAlETwSNgymp53TrU1dDGPMjod0AfFbawJtxp/gaI/Sb+MkzLRS+NA
-7g1fDNAsy6twjxwmL5lvCUO+JMtlG8vXlIoiP7N6hXk4PYzYFCI4JR1H4aNhIBk0
-4MoUngJj2WNXfPJYQef3DqAJrzaQpuiCdQAq6F9GgldMHyv0ujHpA2JBikcxlR1r
-dUdo2Yqnc90pd5KB6IO4TfN8twARAQABiQEfBBgBAgAJBQJYVdmqAhsMAAoJED49
-d3yQmkR8SNoH+wRfWyXUFPVDNN4UrAi5HEY/Ca10AGuREkzacZSVz4dYtofNOAxx
-RVfOAoZr1NUECNvWgyxIZ8ZkeQi8fGN8uS3becIVAWmkji8l9jDRpC3DPs/g/7wL
-4A5VGzvp4GdD6jHk7KCVPiEk1DzRajI3sAntmpTKL9LNB9LpP4NdWiFA8TPMEHIg
-SqMuv1Jzycngjd0Zr9joSJvhIU+j38FvL/F+l/ooa7TKpRv6f2eAlyls0K1V9bUh
-a9KhGsyjXqolyxHZ25Gc3VnxEKIZS6R5QrxVbnXPmd/SV6MI4fBSrcrNgR91iH9X
-r1elbwcAFltomc9/3/7xXmHMaEfaxJnY5mk=
-=geV3
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3F00DB67AE236E2E
-uid    Pete Bentley <prb@google.com>
-
-sub    6B7EF7B18190F4A9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=ZR2N
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3F36885C24DF4B75
-sub    97859F2FE8EAEB26
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFmfSwYBCADdZEuR8cs2ejLLW3+Glxiq15rVbHbxaWmmZApGNijFro/LzFrR
-z+99N1mnA5+Ar/yKmn8lsCiTWukGQzWbdH/QSRUdyHtzxbCSeONdMhdKl3sJY1h2
-jW28oYL6iOMtNYe8qKoCrHRtyTl7oqYtYuhMwdNedGrkVWPrInmg0ILUSz9RufCh
-6KW3V3eAwz0LbckpSi9ZNyCNssjINvr6bRf10HMucViAB0O1DjrwO6aiFnatTCyO
-ig5MMZjgRPKjMASsPG8Ri1xivBYS/tpgamQzq+htWkbEydNv9+g31S5sN0pPw2km
-e8SjKp3C8RkSgz+dJz+P6tQrmGvZNs+pm2M9ABEBAAG5AQ0EWZ9LBgEIAL3j10Fr
-ODkE7yVreTlYs7UrZGaJwdx8stENYdHHA7MmDIMkVnjAOkzAwW4zRXdtFHqICLUO
-L4ZRnAiGuyxiwvxXM7NuGgCfC94M2w58xf2JREaCmU5kII/O3KOv60y8+QixFZl/
-c7p3YOGwOQEEit5445chxYwM88Bq+LgkXAn9zNnZbOyUv+E4gx17khkyZOXP+Z2P
-d606+KRvENLlFbrlVaJ7vzGiLhvIr62I4g3hJj/ob5nXT2tZSyMN19bJOtOd48R6
-NXFDmVC3uLWBgqLK1UgV5SylyKg6N32CUdds6E43DHLVUipawknN4QDc3s+ok6j3
-nN688afjFCLQVE8AEQEAAYkBHwQYAQIACQUCWZ9LBgIbDAAKCRA/NohcJN9LdaVO
-CAC7wk7tKsSNDxLhcq+Oa6TrE3JDQUYx6xlVsw0ZOq+TIbk2D7S/4phY+YSUUqWZ
-rp2vpFlszbcJXx41+s/ljfNnkMVjoU6D/A3R0az9weFfmq0J8CoJeP86CNxCiRIX
-d1rZ6wHlc67QJZe/aaYzxOO8vkzkeEiDaXjvmaSoADucbF1c6KjQms/yJ9nFz/Mk
-FPRxWntD1UkxNLh8UQZhIZFrAmhpgdDa0xq0VCJwL1ZLEo+cm6wKTZb6iRnSqPbu
-fwS6/GYF9IKUp/WVQvhZ952mwzfrz9r1PbTg/fOo+MOGywdBZpEEPTL5pvfrrOYg
-5q0kixiYviNzHBn/YKmH2ibE
-=xwpz
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    3FAAD2CD5ECBB314
-sub    3260CB2DEF74135B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-xZG1NzW9unRL1j8/o6QtwZ1S
-=cP6l
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    40A3C4432BD7308C
-uid    Michael Schierl (Maven Project Release Key) <schierlm@users.sourceforge.net>
-
-sub    C0B9C2CC3DD97C16
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-ZmnjA2cUdtHLvchd4fiFbu191pbeIk/BSf10
-=kJKi
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    41321490758AAD6F
-sub    01F3A913FB698736
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFLmWO0BCADfxkkFnwj5uOALP07g8yArQpu6zbNr+5dtDvJe8Y51V1leb74U
-Eh4U1IeosCRdKUCg0XlAjDmjrUkG6W/5AMUZM676JVHL5tVG1F+dsKhCrFOZoMHj
-+oLOMT7+159maGVlTbp+CarWjp9HWguCVYYAgmP96EZVILG+U7iFzLveEDHmWHyP
-QgZeJPbiiZPEPVDYll821zajCsPj6qse050IIiKfsyveCk4j/eEm2EtBDbQeI8Ul
-Y47TRSBvrtUaUUFe9P6uNoNQmbasyFdD/2yKCoZHCMhAdP4QydflybQdDrF9p7UF
-kCRk+uVIyxXDSn/XMHNhYG09+sy2CoQynF43ABEBAAG5AQ0EUuZY7QEIANFoey9+
-gIJ+VBKDYOZIK5t7s0J3fmgYasBt+uOycrZ/UmZfj3I502i4nYVtjwdWJZFp0LLh
-4G+Ba7uLNdTYEiSOEowjcxyBr2tvck98wDGCKkLkiesrg0IUM56ZGBqUvc+hale+
-bKoTV3+HwWfh8Iu+pRPHlNRUGpLTnAwatQf13sJukfRD8vXKdj4em9CtMjbTbsVB
-LdJXNPRzZV75zfH1DOGHTxvHYKDRsVKUmMZn4JE+gJ555dIYxygjYoB6V5oQVIy6
-hud39dhhqmPeCQDY1bUu4VJQBVJZh6WM5+1mquc6SOtJ9CWJ4zOk7hUbWstalOkn
-ipAzIIMXD411+PsAEQEAAYkBHwQYAQIACQUCUuZY7QIbDAAKCRBBMhSQdYqtbwGW
-CACM8r3Zmvr1PZvL632ezNg/GuFHc5d4S2JoEEeWeg8qTLATnOudL4utBDGs1ZQ0
-F2bbLxO9Dfnn5DuxzBCh4OUmtQu7QWzSqZCAd6LCF2hVU/9Fy7NTwAO9JKaTYqSk
-Uvca2gRFe59T/bYYrYboHIKoJ3gTQ0vTe5xq6yY2JAI+wvE8bihwdGNwJYlGdFFP
-ezkslvqAxZYeyFbkzT4eHmAsLKGwZl9ZTWVpgt9fR0fwEgzhLfA2UnSbblq8LUVZ
-naKwZ7gI5HE+7kWpKXaREkwC2H440y0JTKU/631O8qK+faFPepy6bSfej655yJNd
-D7OBDjgf/LLAP43w0BlWOGSG
-=nS+A
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    41321490758AAD6F
-uid    Groovy Operator (Groovy Language Continuous Integration Server) <ci@groovy-lang.org>
-
-sub    01F3A913FB698736
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-ZIY=
-=83HN
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    42575E0CCD6BA16A
-uid    Taro L. Saito <leo@xerial.org>
-
-sub    47624A56526BF2F2
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=6Iv0
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    429C8816DEA04CDB
-uid    Taro L. Saito <leo@xerial.org>
-
-sub    8A57131A07E0911E
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=ihmL
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    43203BE58F49479D
-uid    Viktor Klang <viktor.klang@gmail.com>
-
-sub    1364C5E2DF3E99C5
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-4g==
-=dPSa
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    438E9634A2319637
-uid    Constantin Rack <constantin@rack.li>
-
-sub    2C8E4A350000730C
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-qS9F
-=OTJj
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    44CE7BF2825EA2CD
-sub    E01173141D06B1BF
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBEzQQMUBCACbwbw7tuTWgwPsDAdQTWGO355jP75oBLHwGgEwV+OCKtxkNXNw
-wrJqXst83vmD1dEJyHflQww+d+Olj90IefQGfR+K7O005C2nky7eNGIomxaP52Y/
-90+tmw8qtsI4nsPWPuVj4WdFvlFgUwIZ0SmX4CauVzg0Ris8f0taxg7PH9zEvICs
-G/WAXdB9em08WDD6ruhMAvDF4W8Yy7mpGmdWiFD+B9OC006tv+GzYAvUHRFeCnnT
-SoKRiBeLejW+t4kpdMnEfC9ILAYBEEjNYvBIyPdPKBwNfy0yjRebsUf0eNmjGTpk
-VPlfofjVaUaOZytUOQvntYpocMX+377DGQIdABEBAAG5AQ0ETNBAxQEIANp35mwg
-ILWWQI36F2SyWFTFF8zupjzqlcF4Vx1Mjs2rQYErv1qs09TJfO+uxPRAva0fKik9
-PFmZ0vLM7UAveZgaknzjTQveOaAJuT5OjudoyptG81ilHO66+e9RnuyV6gSINnt6
-wnq4n8KRPoEmI/nxMhvmBCPw+YmxG3ZcU5Zko4GtjLA4J01nag7jY+LH08qFfPcK
-sADmx7EtCRuBcXgQ202kF3o7BjULcLV3R8vni3jp5nljH0vJG5USSY2ZR1bFiLtT
-CMO8cm+jIuay25iWil5DaejASIXzbzTtSYg9Skxet29AWjlrt1+zKZsMSLPbKJ6q
-hdW5XNU4Qo9ycx0AEQEAAYkBHwQYAQIACQUCTNBAxQIbDAAKCRBEznvygl6izZwg
-B/4gOqGHc0Cc165PZggwbf1nyJZ+af0QiKWasgoUzo4a7OSIISmBYPGnW/VP4EMs
-aNEhnqWK3Tu+cuidW6z7MWHRsqLcvYUKeiZE2IhnMP85ad2S14UOHE8cbkLwfIGe
-+rIu+zYpzyc5bcRYqeLvd5Dk1H/eW0/hsadW9qpSWQRGxWPEsMqaAhiret0ntlGH
-2igswZ7SYNYLNtK78wppFqqFHfFvnVu1XNmiTDDuk2IokPIGRjeWO59eSR/kotg0
-zox4S+CJbRdQdPq2ofDNqKCIEtg6y4yM+dc7c7n1Txk53fMBMzXfGnLGfbTFLo1h
-pYdC5sepAZA1XWLRgZ3+5+vD
-=HSWu
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    461A804F2609FD89
-sub    8067ECAA8D58321C
-sub    750F9A735EECF640
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=QNgn
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    47586A1B75EF0DE5
-uid    Benoit Quenaudon <oldering@gmail.com>
-
-sub    D74B959DFA1D84F2
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFkW7RoBCAC7NMtr/e27nrUuIcEZEJBZS3TbZYId80UNQXgYmqPhy/sfCyMc
-87eKzOalauwLbr5+VGuKqhvKrihV1WCt2+FUjOtnCf1GutpAUH9plfSs8IpRog0h
-i9IpApPeR0Q37fHhc/fSLDxoHIylML0058K2X9js/VNg9xospjvRBi0vXmNaMWuo
-qMQXXVJrDDtDlxljx78Fk7b/qiFuqBgIPM3U5OPyaQ9Qks8wactSYo9pcqIZx9BF
-/XR//WvPwQ5MEAPCkwXnNIlrePDGMule7QRRmDvNkcD8V2xSOM+fhVd3UpuCpMEG
-h3MpiaFq9TF9O1Fv22Cs4eM3mnYOEHjAGyNzABEBAAG0JUJlbm9pdCBRdWVuYXVk
-b24gPG9sZGVyaW5nQGdtYWlsLmNvbT6JATcEEwEKACEFAlkW7RoCGwMFCwkIBwMF
-FQoJCAsFFgIDAQACHgECF4AACgkQR1hqG3XvDeU8FAf+KJqG/lNX1xzASjIYxXPj
-W++DVsvysQaSAr5OebRsD/KLeEM68ps65AfpMgxIAs094NEhA99wIXclf4vjZJ3W
-5z2VS2+IwhnDNYD9Pe0xt3H8zfbL3no0LyPS+pAsavtgJ0gqRG/kNDDoM/RmI2S4
-yZgaku6kQ4hCKKubdrPBV+LqCSBvEn6kTvHMvIYQrtDgvm/X9hTR/42zaAK9UaD1
-RiLF2k2nbQeJlDu8ZSvuA3IOGTb6ALUA66KkmiDqMG43vZs+ZTAKnreWKsPKlQr0
-eAAN/dcFVg35+bjf02561Zi73NcgMS7M6VgBExBoGYDW4299vnu8K3FqOHDQs3f4
-8rkBDQRZFu0aAQgA1+Ve/M0qe9PJ3RECh7T23GIGQSQ2qz877YKt0ZszRRqO3zyn
-+odZTlDV7dNfWuC4vZfzY7tMs+4VpYiiFBGnEmZkgCc0upK5IuHrS9HwuD3VcOw6
-e9SpmOgYkJYKmjtNCNz7BIoYCIu+PYzaueP12DXCIod7bij8+smRaon0IkDj4SqH
-ALxnb75+L9MQKaxTfkOybDWLfhz9oxfUtO2StLHlGVk8Q6GVAhKJIp6bZGDA/S3m
-Hx/AZHnVsL8o98oYRIuwLFPxeAYauY6cgwoD/9FYpkQSlxbsLsje8HRT1nvzWKhP
-4NwZFDkmEWsKOiIYgV9lQWompcLpqLFfmp0pPwARAQABiQEfBBgBCgAJBQJZFu0a
-AhsMAAoJEEdYaht17w3l3ZoH/RYBt2aiAhrbjQteyA5CpNZ6V8jRrudzEHB/boJH
-FnBUGNhzDDeu9FoJGrR8r4AvLyJgqiiATN3/erKEiZI/cP8wBfzjoMBM9MiYLgRg
-NawvoLd03oEUq856SbCwW096GE6m/eLcT3735+aIchMAHSagHP9cIuWr+t3+W0z5
-MURVOe71bf2TSySXhbdp4E05XjRgAwdQciW0n8SCKgRppO/CuIWiUyvt5JCCrfxY
-gEOMg5/wEGRSuNS7YtYB92CBgLPQ7SmpNSMUY3Hvvg+AblS7sxPDDvvY7whHK2U4
-6LJQx7BqPFqTmGPfFbSt2843qryNpjbAIzMpm0WC40LvvLU=
-=5a7q
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    476634A4694E716A
-uid    Simon Mittermueller (none) <simon.mittermueller@gmail.com>
-
-sub    4CE6E05D128BCFAD
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFE0soEBCADAy/iIRT/lpb+vfDjWs/k1XQNU3mzXoMm1mmS/Z8VOc0jF7sVB
-A5z2pC6u2OmEr1oJkhWefX+mU//7kXs6VvUCReE4uheGBlisg/ELEXkTm342TcwS
-K+tR/NMk5h1DwxeGR2qc0+zhFcrITiYqCpdaggRVx92syhuYWrG2DtRI3eEz+fys
-2WLhAd/AqBTR0ENDZssp5S6tEBcLvU/jAvKv33/+ydg+1Bsw37CqCOO0bR388+ow
-uSXSARDJaesnBpUcXT9pbog3Wm9pSzJ2fX1FyFaf3rqIIYEqGk1rEND+AkT2CB08
-BykABpDx0mgR6/pAgQVywCatPuc7wneiZY+LABEBAAG0OlNpbW9uIE1pdHRlcm11
-ZWxsZXIgKG5vbmUpIDxzaW1vbi5taXR0ZXJtdWVsbGVyQGdtYWlsLmNvbT6JATgE
-EwECACIFAlE0soECGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEEdmNKRp
-TnFqfr8H/1DXbZ4VzAqqIBhMUWOIvF220gZ6NAxgIP4IAzfuLYKso1pfogbuPzS4
-IzbTZIZv0TXsK7zEzxZY4Oxx5cQaOfRiPOBvkeEC1T8Pf8l9GDQ8ppy0aHPNLgV+
-nloylBUHWuKpTMUHKu3MpwHfwMFZ9ZFsUmgcQ9oYkWcvprH2uOachsuA4BSxXJNe
-OGU3aBIG1CR7lGENmkjwZowXhxM7QuYZ7qIR6oFxQCOj9jcV61AQhj5LuKNOJLfx
-fAICIeUD8mJP3NcblVNp/Nj656naiLWBsK1sfjGzvLkeTKnFYFMpJqEuLTv7VTx1
-fGJnaq2+2UznsLGgWcMVPg68ZOW5V6i5AQ0EUTSygQEIANTGYOD4HupAmugS69tx
-MTAW4GvRQ0s8Li/r/QQQUWPpjo3IkJDA0+kPCe2JRamNJJ2plzndeGUpQIZn+HJS
-N8fGRjZG56HG6l0BJmQRFHD/6CzNOOKK6z+8e306DAwQPqDdDpUgpBmbPHZDhCs7
-tvrOhrUesfLQla15MM7n1DEtII9y+AsMGfwrZCd2PeigiRC+/NH/lYObLUPc+NL6
-GrC1ZHrpGoOR+9GQ6voVNY5EIxVlNgoVBxn3ufcFvvghmZe0WyudBHK9ByWeioBI
-tHQW5n7eGpljcCUbTpsJmErhjH6KBKSuxPQsyV4TkQMqcsymGW0jhdHXc1/tStF3
-L0kAEQEAAYkBHwQYAQIACQUCUTSygQIbDAAKCRBHZjSkaU5xamOiB/9r943gZZy9
-FJv/NGPnNxCvI3ZusQfntgRfVyIFZLIUeaYDab6RqKTD8ZRgyfO2rmO73DiQ2bnt
-zmSPHeAlpKAIhTXfty0g5UICLjr27KocLNt234BKii6go+CDo2+lLUPUAe3cJPFq
-ZrtJ3pYLFwS7O43wwhRaO9A7L1uyruoCqql65B6CJcymMEsDnCizRVEAsE2lxenu
-fxcM8JIaQlczXTsHYf23vnmLjlXm5HvEAfXE0s7iHo9BMlSLxHWWEqeyrbwMdnn/
-gT8lHGw+SHO173THvhtGuKGkrglD2CA9G5d1ZWgAz3il0fLdBenLH6t1m0x3+P6h
-4sUJ04LlldPb
-=GdCO
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    47DCFC2A59F59B5B
-sub    FCB1A11865F6A17A
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFVB0KABCAC8YRgcTIomAMw865DHxS/tbFgqN9i7M+tgpih1ETJbb4enhIBj
-Upeq+MoFCtxN86zGu2gsA4DOMEXVCReJ4O5n0F8E03+NUraCnJjbXLW9eEyRQRaU
-sYXDn/3SpXQyZGP0XemHUfG2Gok77mqiqbYGO5PwQoTX09X1a1wvM/GUYS8I5dUh
-UY6MwB3IEXaoNIccuNs3exm9ojmnvLO4VZuXcLOizlqxq6+8VbEP9qr06UNLsPDH
-vdqLxIUpZWSyYnUQZIrkctsUvlxQMnB/PpzAN9hKvyps6quQv8tD+dyPreT1TJGM
-ej4OcJXkQNmDxXu0/GP7X5yPsunKy3MLabutABEBAAG5AQ0EVUHQoAEIAO5EGsMH
-zoamrTlkeCb1kTqYJN00BPUCRijj5CJZGsU8LNHMmqeInTHGaERE1alwqRYlnMFa
-sA204UFIScd+hBp9z+JgcjTdsC2MNOXzeJ6H4rjO9PL+4Rukldg3LGB8il0+nXO6
-WQ1ksgrRDL9N0k/d60z2hozPl9JY+4AYDg8mCwLR3AIDrgBZA2VNpNQnxlp5tOkG
-fFI/hAX+nxqdLHPWskhkMfWrMleqVWvrZLC7iVQrB3rE+1KdNXMLWwULH0g4eHgL
-mHpqjYh0tB/BCPDxKM8LA3ZiWLV8BsqD9K716I7979KYKyYH7HCbMj63O2o7FljD
-D/x7D0K+g1eDnFMAEQEAAYkBHwQYAQoACQUCVUHQoAIbDAAKCRBH3PwqWfWbWywL
-B/9eLiVoRupsRtvJSGlqrDW7+n3ERVQStfNp9mc4k2Ufc74Kr3RWQl+JiQNeCbWz
-1e0jJeCbecAnI/pay9mYPcsArKRlw6fYA0XM2HhuLmRzlDrj9bBdEB7Y1DwpeL68
-3IKPQR8eNLYPN2KpJeOvOCZNRrFxpo1/ZK53V6WKWcY6r2RMvlHK5c3wcAMTIhVj
-2x8UWlMgJSQAxfOwAvNwsrYQp3vPjMJ0edYDcF+lQfXuRvAiYSiO/TJeDcbvW7IS
-Yr0x+F9YR8tVmeEU6WIffkIl/5lFqREi/9zBxNufP+LeJEppmbomyB+/DO+nuT38
-lY2QXQHYHLkAWBidKfXO6kjO
-=airW
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    47DCFC2A59F59B5B
-uid    Kevin Wooten <kevin@wooten.com>
-
-sub    FCB1A11865F6A17A
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFVB0KABCAC8YRgcTIomAMw865DHxS/tbFgqN9i7M+tgpih1ETJbb4enhIBj
-Upeq+MoFCtxN86zGu2gsA4DOMEXVCReJ4O5n0F8E03+NUraCnJjbXLW9eEyRQRaU
-sYXDn/3SpXQyZGP0XemHUfG2Gok77mqiqbYGO5PwQoTX09X1a1wvM/GUYS8I5dUh
-UY6MwB3IEXaoNIccuNs3exm9ojmnvLO4VZuXcLOizlqxq6+8VbEP9qr06UNLsPDH
-vdqLxIUpZWSyYnUQZIrkctsUvlxQMnB/PpzAN9hKvyps6quQv8tD+dyPreT1TJGM
-ej4OcJXkQNmDxXu0/GP7X5yPsunKy3MLabutABEBAAG0H0tldmluIFdvb3RlbiA8
-a2V2aW5Ad29vdGVuLmNvbT6JATcEEwEKACEFAlVB0KACGwMFCwkIBwMFFQoJCAsF
-FgIDAQACHgECF4AACgkQR9z8Kln1m1tCNwf+MaNFqR4lezA6ebkpZ4vIKGPoCOAx
-b0zEXgKPUIsqiH3R0oYzkTqrhm85w9cwJDnPKISg/uoP6gKqJIFIwjSVWO9ESg7w
-SSXKpHZTd34XaqrBWS102btT3wi0PwRs7Bl098jgKmtFT2AhctwZfh1gULHGjHYp
-tOK4KuDch6gYoJ4h01rxMZ6vkO6IWT5rjkgl8SYbjHMsffl1/eLMpS7UvA9S6xIF
-JLxI1+/+5gg2M6VRAgMFZXujstoKOym6t/8ayZbz3HNA9Sw01vJiMYXmWoNn6Gj4
-nxxCtsorIcTW9qzGubnoDGR/DkUlux7QZrEl84A3/f4Z9SWfZ7u8aTuqsLkBDQRV
-QdCgAQgA7kQawwfOhqatOWR4JvWROpgk3TQE9QJGKOPkIlkaxTws0cyap4idMcZo
-RETVqXCpFiWcwVqwDbThQUhJx36EGn3P4mByNN2wLYw05fN4nofiuM708v7hG6SV
-2DcsYHyKXT6dc7pZDWSyCtEMv03ST93rTPaGjM+X0lj7gBgODyYLAtHcAgOuAFkD
-ZU2k1CfGWnm06QZ8Uj+EBf6fGp0sc9aySGQx9asyV6pVa+tksLuJVCsHesT7Up01
-cwtbBQsfSDh4eAuYemqNiHS0H8EI8PEozwsDdmJYtXwGyoP0rvXojv3v0pgrJgfs
-cJsyPrc7ajsWWMMP/HsPQr6DV4OcUwARAQABiQEfBBgBCgAJBQJVQdCgAhsMAAoJ
-EEfc/CpZ9ZtbLAsH/14uJWhG6mxG28lIaWqsNbv6fcRFVBK182n2ZziTZR9zvgqv
-dFZCX4mJA14JtbPV7SMl4Jt5wCcj+lrL2Zg9ywCspGXDp9gDRczYeG4uZHOUOuP1
-sF0QHtjUPCl4vrzcgo9BHx40tg83Yqkl4684Jk1GsXGmjX9krndXpYpZxjqvZEy+
-UcrlzfBwAxMiFWPbHxRaUyAlJADF87AC83CythCne8+MwnR51gNwX6VB9e5G8CJh
-KI79Ml4Nxu9bshJivTH4X1hHy1WZ4RTpYh9+QiX/mUWpESL/3MHE258/4t4kSmmZ
-uibIH78M76e5PfyVjZBdAdgcuQBYGJ0p9c7qSM4=
-=/5Qn
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    4896F7312A5ACE4D
-uid    Chengyuan Zhang <chengyuanzhang@google.com>
-
-sub    3EA98BD451E4B457
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBF36fYEBCADU+1b8TH2AhJuJXebg5D3UbR9rk8/9kEfiF7ifbb3nCB9tnF5M
-7NnNocEdAq3XezNuSj9LtEpWUu6P4JdpXcfZiQO6wrobzSJRUWDc7X8D8NyhGpd8
-/7EMbAHH8MfMrwb1+00wdCeDXRpDtH8e+9I/mvdkkBgCrJwG2IG5FMSdQkMa44cs
-asquM705q5349n38F6zOFbS2CHtRw+dsGym1xHWX96E/kuAMIh0rlAK1vIh5hlmD
-2d1VQyx1IDQuAMR7YvByzpXvhwGm8neMaPgKvi3EHoySE8goFfo3UUotZBBv8h59
-h56lu4YfV0EOT3rUESOes2bZiRdLrnFPw9ebABEBAAG0K0NoZW5neXVhbiBaaGFu
-ZyA8Y2hlbmd5dWFuemhhbmdAZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQTIiLmVWBXq
-g7SFMXhIlvcxKlrOTQUCXfp9gQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK
-CRBIlvcxKlrOTZYeB/9Gb0MmFCMawEHvB5RbLvkQggZ3a5Ac7WCA4qy4p6B2r/2N
-7S4soaAB0iU3iutF1KzR4EaZod7C/DOJgjY7ZJ/ufoU+3KyzdoEr7b9QZktD8hUm
-vPS/hygpU6eY5gfyelFPtJU4+gTNAvls0/9oTq158OVgh6Kd3lmGpktLe/OFcXKE
-nRZC2+Vv7AJx/PboNko7uYpMml1cHDfi6cqRQv2L7DKvCGXnDseLi2tqfzWW6lYI
-XFJHmzWVk28SjUUFygfPN49kEkzSkQ94I0veC9Jxb8YqPkGD9r1gU2x6O8+4NsVC
-Iv2GnefwoRjDMgVvh4GzRhfGKuWM1+7OvjoC9QpnuQENBF36fYEBCADB55Q7spxH
-PFABiTlWY7iWlZ6KIJYdRm+yZGrWALYq05bL+UGfO1quXeSPoZapkNOp92RP3FSn
-xJ3S2GFXlv8AqjEuB3rUcWq+0g0f/cPq/MOYBPT9RgzYU+2BSmtnOoO9jEmsDBPA
-A8g11TIb/YglHmekEw7O3t76iebol3QYExHZ06IihKbH7kMQlgOGeWIPR1niJbvb
-E+VfFRhNzl2xjIMEcg8cu3nCK7xz4SwPXJTZJQjjJrUoenl6WFtSLVzzL9KQO0vH
-yzRv9cEUUU8npWz0NvNMA6weXYVGS9ZbjaAMgZ04PAMpEuiiYmsENFpP4F3S/yc6
-8o0dFeE3ZqUPABEBAAGJATYEGAEIACAWIQTIiLmVWBXqg7SFMXhIlvcxKlrOTQUC
-Xfp9gQIbDAAKCRBIlvcxKlrOTVN0CADGnC+XyF5FORZClBFtjzDI5WyRhqK0eBv5
-YDfCiBnH+vCrpRzks6ylsoHeuRkLBMyyN/GDyi3vLa/4zb65ekZzsDWROR5zzpiB
-hI5sKBekS3XLEd81cYb8mDVFqn4cgrATUeGz0UpHY0wm5bVel3FGpwY9NpZKHfhQ
-9UATNm4OJcJywPNNCPMjFUyj/XrXwqJDDsPafVewJ2qOziflSXt75TEos6xmi0YB
-zeYL7RbX07QsknYF+31TjsqbAgZsxgRKeexe7DsSL97BvSaUyB8X7Ghxw2UwE+9O
-w5dkCGlkxSnKE7WTKi1is1iziB4eYHLMW1BKVazIeudpCfyKmmhz
-=Zhff
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    4B1E11D5A4B91E89
-uid    Adam Cozzette <acozzette@google.com>
-
-sub    726F4E5C34CFD750
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-psR8R04jHL/ZAxrodA4Awc3BTpNxQDPfdRPc8w==
-=8STR
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5208812E1E4A6DB0
-uid    Gradle Inc. <info@gradle.com>
-uid    Gradle Inc. <maven-publishing@gradle.com>
-
-sub    33AEBC1F01C98081
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-bMFjyklLBAm1WETBiqR+k5uwXmJ8
-=RGVX
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    55C7E5E701832382
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mI0EVdDLQQEEAJMtYCaTA56YsP5RzQzPvqVTaR2nZ27qRk36blHB9WmXK+NHpGeH
-PHgq59mLPVueo2/M5k/fFrCe36jHePP31gYpFtueeYDfsofHwod0WhsHyC7JfG8d
-jEnSczTCmOHRZ3ed9ef6SeWUozYCQAX/tAbpoCthe0lTDYhFhkzVCe/FABEBAAE=
-=45ZY
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    56028DF552BA32E2
-sub    7EC19439E4D4C2A0
-sub    D89D05374952262B
-sub    B5681E477AD61C38
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-5KzrCgVUcXxeOohqkl0SRuYxdQ==
-=UvWw
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    571A5291E827E1C7
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBE9iFawRBACJb4OMk3zqMDNvSJKYZ8fGYrPq7yCcf/ykKDkGb2dtPnAZGkSp
-3mmNlTsU6s9ARn7BtkhIuM5TdbLs+z+okX62h3F0WW3h+CpfIXyKSgl7uWbhZ5G8
-RSCCRr7A8m6y83npkTVDW6m2oFN2cjFwPLm/vxg1gu5pO+NCwz5iBRHdewCg1idO
-Gl6gBAZVNteCRMVnGnX4EhMD/RaYBO2j511h7gR+p+6BBeJTEIA1+tsi+GhTBkS9
-mUMGuD9Z8PyvwL7quGQyXJ/kTe3eB6iyDFn0oemB1w736FQe3vcIX6eePOEiDZs5
-1Uepv7bXI4wn1i3Z3kzynXNKcjCd5ZxAmML5VlQ0zWeE0W18reCjt1P5q5xxBFjw
-0L8WA/9aPi4d5VPakzuDvxfKK29BogScTLn2C3fpEnqWsTfpoWSkNXkRsoB4jUU4
-oIqRFMTxwsjUmjVUPOG+YqoeAaVpj+RBpp+V+CqgfNWpnH4caxzODE9f+6RYRCGm
-LSq/6OmgZg6t38M5XWVpvk7Ixygs6Vrd99VZyIQPJwSBM/pvAw==
-=dENk
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5796E91EE6619C69
-sub    153E7A3C2B4E5118
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=IF9r
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    586654072EAD6677
-uid    Joel Orlina (Sonatype, Inc.) <jorlina@sonatype.com>
-
-sub    2E74CACB6918A897
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBE1VSkkRBACkCgvt26sMi+0X+EOJDMqdK0Sziy06k47LJf1jOg4tTZ2T9QtP
-OZ8fD+va/O5+q8Kna993jzcO5n0Nv+R/K3+MvUqSmdITshCIjBt3cC0n6FWndGyl
-jY7rOmzdNnvSkMGE3V2fQ18stkJRleqk3EuWwv+EwpxcYeVfCO+UCJGz5wCgtqnZ
-JYdRHcDkDYaIZ4eizpbV4d0D/3cgBdpcbSrwIGtft+lDxacaJrWpT5Jh5P0gLlYu
-+6PFz8ZIC4+/aOSi4S4mgZxk8dBL8ZBqLqcW9rc//CYKNtPq33sdf9vxcusMIXvS
-PBODjDpoOsTJwy51fgCEL14qnp0v14y9p7ejjN5+GipiNY/JHo9S9kTdVhMYqt6x
-6a6MA/40vMejIbZ4q3Ia63jbHPi348fLDq3Gp8Wos7Sh2HnLC+pRdC46qX/5wL4t
-Vzj78yW9FdH5yeeE6nQLOBWh7PnSfMt2wYHoarEnkkkycP7WLpRME7qsBYqkNUNa
-2EQZSy8DnGiayYDij1YPNUHI9kpK6H/e3puhmgNkzrZj26T85LQzSm9lbCBPcmxp
-bmEgKFNvbmF0eXBlLCBJbmMuKSA8am9ybGluYUBzb25hdHlwZS5jb20+iGAEExEC
-ACAFAk1VSkkCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBYZlQHLq1md1Cy
-AJ9Vwm/4tCSR2iaLU6fCV4lnJgDnrgCeIDEdpte6HmX4eIWPHHxULLLP4Zq5Ag0E
-TVVKWRAIAOsb3rg3GoeIBQtJdgRUfULCVNEguSJMESQv9xnKgEGeQX9ItVfdMLrv
-Lbf4ySyIJ1ShBR8k80Xk8M6C2XA+c14AVUrtPUHmseO53TY0n2VjZD5ms7TOY/cq
-+DheTBLzlxNsK85q0jZXOK2+Sliv9aRBIl/83c1iS5kBM76fzLWZqsiuqQsLUvEv
-oCmUI2WSzhJ3s4s3nCHHtq+sQkcaLap3FMH1IPozFFJWSlJSsIeE62AxR4XrfGs1
-y6YxA9AEhu/6QWA20T55loV9TT4geDLywxE68eu2rM867Bl2cfU6+tW4RW0Ssg2O
-Ymv/+dNe1YErRgKm5JAjWRxp0Jzc47sAAwUIAOgOfDKe+6VLQrVYXwUZ84ipBGgp
-/JwqajPzxa8YodPH0Cd8bfw236Qcd9R5MuyjNbi4M2RJ3pLlNGasICt2qloPNJqC
-miTcVGXXeaK3haG7Du6bXo7eaJl+pMXRoz3JTrdTPLHOhPgN7EeWtkAv/QbbONps
-nNcyiuvund1KX1JaoGj712xk7IrDO47eA7Vc+ply08owIlnjtO3XG0o4GbkZx7Eg
-iaG805jbRUz9Q4FHnIE3Ditmo4BrLsy6pG2kJyv0YkSM6pBSFpc/K85WDV4fEwPd
-AS3hl0rlThFuxgSHPH1Z7OqNdDnbAKp8xEKnAmb/3hx147fU+VoFd3qcudeISQQY
-EQIACQUCTVVKWQIbDAAKCRBYZlQHLq1md0BDAKCz+pK77m8VG8F4ZWyDthIjE4d/
-zACgsgdtDggyRGK8+BKm7HDnceh97sA=
-=7XCx
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    59A252FB1199D873
-uid    Tagir Valeev <lany@ngs.ru>
-
-sub    92BD2D0B5B21ABA2
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFUBG7QBCADRWXf0Fw05qRhM4cRnGKlOW1ecue1DCxHAtFwoqmAXyTCO+tI0
-MEW5SyXUkX6FsWLl6A2y+KgOs669ogzfQ0rnZMEt4HisRp8wpgk3GWR1/9aKYz/c
-ymy2N3BP9cz2fJ9+3PpBccUPL+ydFKpcnEnIwiQK+p9JjEWzJBlrdUc/UEJ0R+n/
-5r/+0+BHiTEMvjAF6/SwyntpTWpu7iEzLv/pfdCuhFKa4yn+9Ciwe3wGtSiue+dh
-tqKcd4YxED3oAswObBca3CC2HWWsUEH6EmfT1jUdfy1cq4X5x7AZ26oFYfG+odqW
-W5dcB+13VkJtJRzQTO/2HKtITJYC65a1jKt3ABEBAAG0GlRhZ2lyIFZhbGVldiA8
-bGFueUBuZ3MucnU+iQE5BBMBAgAjBQJVARu0AhsDBwsJCAcDAgEGFQgCCQoLBBYC
-AwECHgECF4AACgkQWaJS+xGZ2HNZJQf9ExetK9g1IbC/4L5qGhVzfyNik7m9DJ/m
-/fHibCK6pnAP7wHl3QStpcGfWwTDTnY079tdZKnZFk8OOtendA0WWdS/9OO1DZ8u
-kzI3PusfDOsIl/9U35dTgfQmFs5Nxi3/xYBphsNrzafEW+reUImADxleCxHhBGM3
-U8zAgnBGVQO+oBGQ/XLQ2xpGEW3lxytDgx90eCryFKhlqvE0Gv59ofHTcNjEkDcg
-9ki+dx5B25jpcMD7VzCgSaETs031gDlp7jdiEgJa6ot7o+chhcUlD/1UMZnHgT8h
-806xh4+ddiHD6WIXAwiFxsOhJO7o3Ovv4g9eg3VOW6kp6zjhfxrddrkBDQRVARu0
-AQgA2wgu5T1wf8QgQv46nAhpyv/Lf/osb6iTxIoMciUXpxKm6xKxYzov5EZxmC8I
-NHRLQQSJ3jjLLzAUy+hhKWxccs3hKof+ukshzgIPwN0ItatoppFmuG2rM1ZKxjES
-CqjufXE7r5yxTXtUkCuemQY8egDuihmVoatzTL+uWRNcf74sqqHyeI70NqnjqksW
-t2C+7IpurUHp9oB/YkxHK+rLb5+7B9UZNzsMRRQW3AaDsWeIMXTOX7esUbW532Qf
-xRbP4bALAVPqqFWCWA6a0mDDUJJg14OxC8MHhhMk2cyd4xJ0zoKQRxGEunb6XP3T
-7BHQr9r1AETU0+5sBpEHa5BHhQARAQABiQEfBBgBAgAJBQJVARu0AhsMAAoJEFmi
-UvsRmdhza4kIAMccH8GZzjxh7XGXpPqds0SIwJ2akhtr4k0WcRZy56rjGTTGhddR
-KkGeMtpY9CtVkodd0zGaZHcGOG0W+wuB5qPKktSRUOUoyR0ZC2xZcvRpuvhw2gwO
-JdRHGVteDFnz6Eiz+spJYq26usIPZXgxcuxBXjECuHV7OQkUQMDe1EbOOODODkzC
-auYvsfk9x3q9XUp7rQGa8Vi++NHBPhTDU4PReW6485pqJOJuE8QJznMvEHP355FK
-xFvFxw0TM9glLxeX36EjDtjs53Xzhw6h7HF2gj8rnaQfsDnJ8SPaRcJmbm1jKXIq
-+AalzNZ1m6hXe7XGD63v9CWCFMygkADQfkY=
-=P9c9
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5B05CCDE140C2876
-sub    9D29AE4A6B50E01F
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQMuBEwVZOURCADNnKQzSjFuI9/IGj3WTJcPU2B/H8NbZaTsz5WE91WumgZulK2q
-YeD4u6zdOyFK7DEScgxk7dicox9cNEgYKQnQXctDhfqER9bnvA2iJ+AFxjRAWyvs
-en3ClYLXT5UVx0H1ZfDVKCvmaZVirZInfkqbi3OiPQoWrUfu02c3DiHQJ+Y34kdB
-egH2sIShNH8WLfEZ3YDQ4XaWHVuN1C7VwCBM8R3OeTTfyDrTsuyqJ0SeZXRR/6df
-2pEckjF9DNSXyjzFg24MrZhuhgbnj0oR1zmRh1EF+KlBfF4DF4acfxWqqcJVJx/3
-FTtOkLe3Xjj+inyJgxOW52gD4DsJpyf1tIbjAQDZvOdlRRCqZB4FnzzIb/1GmkGD
-JpDLC4MQmqgxkm0n8wgAmmHLpqDTdmuyJXvdX9RdGycpW64sljd1mpzTWJ8UKDhj
-uFQVHSSEdLoHoVj8ItnBV2kXd2uoQ/tWzbxFBST7wE/tX0e9G5XWaPKogvOKeDus
-u9XTIds2krYp80UTYWFZ88oNwGikdIrEYURSYDsYt15miROtKHWbSOHeLVbZqgVx
-dtWPqQVfH4gJGEH97/OSmozqDVog1aZDKBLGZQosng5h4j2RAQpjkaIdxKl8m7CQ
-x0Yi9tA8yD1QhRGggANQIb4n00G/vm7RMU/7NBvvjAQ/nAFjbsyO5oX1rBY1M6Xo
-NFqIBrHSBzV9MmhS3nXU+ZjAktCRhyJ7TsoHM0OYEAf8CduM5Zzp5w02iVYkFQBB
-wAoKHMpycW5LhMMMS4w7gmOfP7y04rtg6+zVe41y6bOqn/SxHCcCgnE/nhdexlzH
-ElYE1H7+HpphoI5vEwS6uElF67CoO5r74Zrb6nshGEj2AoOqjbrsdQm0noBBNYAu
-f9RsjU0sQQFzLW8+2xahqK3oZkLWOkSxzLtVwJbm7EGaGIYxEBjg87OnGQkAi9vv
-tVPwdO3VWyvgKLuPHudLDhTpeH3AMbzKgnru1Pnh/ZpiRhPzsbuFtFPEX8PMuCyE
-n4OLzUALl98kXuPjG5ww+24UsNgKMbKbu8qq/zRu7IHlpZvd730RoCWU2/i18tnY
-zLkCDQRMFWTlEAgA+MQFGIhyA4Ww9g7J8ZiEltwSzRblrjM1q9anexsBIGsWH37A
-92rlVK1RzMVfhj5yl+BzIBGO+zHbgycX7iB5/Fwsm+6R/2Uich6NDm1Qai9rc/jg
-3MS0phOAQzgxlGKOTS2GzdbDJCBQMijDObNe+Cs5DNB/E29/nzzCTQvtRzSeplZN
-r+8Q8lWz6efXmm5EeeZxN4x1YXjjzMJCHbc3yGxOjTgYQOs962yUYsg9UDRJm1OH
-9NKZe1m3dTRIMUcZvL12dq/kyiHHR9V/6CkdiNw1AFMi3tvEdvX4D1k1/Qr/2ORZ
-E4lRzgug4sKkpgaclLnkJZ9EMczmUFTGbbkx3wADBQf/Y+2nZCJSuHiDv/+SdhQh
-OBapZ2hYPDvg29mpPqin/LwH7eFTNv/oos1wzuzGtTHHGEP5mUQLOxjwdAXsWMMj
-scSbCs66ytTN7X4O8qh+1yN7vrM6ZBL12Ix7Ku40cgkWyvTVLBXKaEGm4ElhAmSL
-Fpu+/fJw0riR6rIuwHcGB4R1IJtMWcj+b1odgw9QmJ8AGpHh2WVdXspoCGnTUN4m
-DEswZjplkKXCgLypU13SrHVOqhjd4caK5GNZUfWtCKtwNcJMnvgp2truMvh9BBn6
-widfK48hEknQtXzGjui+bZz2/AD7/OT/T1CqDspB8IQlBCMBn8J4U1grSrZ1wTJf
-HIhnBBgRCAAPBQJMFWTlAhsMBQkLRzUAAAoJEFsFzN4UDCh23wsBANDSDn2KWz7H
-b5geDwUTX4T8Uqn21eFbp54tFTfopCd/AP4nTdX1iahsClr9q6G+CWQBuQWHVmq3
-FlPU/jTn6vXQwA==
-=dKtU
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5D67BFFCBA1F9A39
-sub    DBE749136BF76809
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFUHdtcBCAC5xFdAcSc5qQsPkujcRdzeldrESZBo1/SfGwFV0T+lgp99QJuI
-LDwZ1OEG/lQck59J0JRdAgxlUj1um5LzNYexIJSdxRz2DffQ/z9R+hw4DF2h0fyP
-0lXPOb/sIYJyQIMaY7Rw6NJ9iiP2Q+yAd/rL34NbaelOjNy00rQkVNBixp88iZB8
-WjzHAZnCy9nz5nL7fDz6c518PaHMwVnQtt6Aza+fZ/4Na5NmKMvLC01SLFSKqV8+
-j1T0bh50vss+7rLBIYjuq024WpNdZjIUdbzsLFRZTgmv6nUKtamlDVu++qDV2tWE
-POV3OyXAPCxim2+kwVoBCsJbhFC2NMo0P28pABEBAAG5AQ0EVQd21wEIAK88nihe
-mV8Hm1g95BXaqc1UCRxXOnYT2wOmeS7nkOQlFzQNSsn6FIRCbSYUae6Q2Wv7NqvJ
-OGmiBCaKXgMSq8iEEPrbY3Ed9BTqiFtoA2smBswA2Do6SjWg9kiuXv+sRLiOMTKf
-jitErkL9Wi5CNnERoD09jICcEcMHeZbzvjslADzJz1iW4cSRmbJC+tY9Tf9LMwUe
-etTmeXYJSv2w34vxuT0zzosN9ucEElmdE1oQXQ1Ryrts4Gyv354R7+raIzEPIcGd
-4fbub+x69G5Xxy3AKI9DbVapwskME7oENwotlxzLm0or/1vVC9tOnjVh1HSd1u5T
-M4DeCQ/7wgxl8Z0AEQEAAYkBHwQYAQIACQUCVQd21wIbDAAKCRBdZ7/8uh+aOduc
-B/9wmTVaPsUtaC7+tsFBf+EM6zVsVgMe6aY8/AG1llwX1IujYRyhs8YvqD+cc9/7
-CvK3GlT2wJyBrRaiHZXE9u0COJUgBHyuIvnV0W7fE8aD5AoPCVMacKxZWoRTY4xe
-r+gde8NpAp5f2AKu8kEquXOiIymG8kXJlUqgvZmQWSFYOWF+j7Xx7iRp2+0j2f6k
-nayvHLvyvMGygvNzzhLYKl5zZMks6XMTk6daVt6WbgaSuT0le5LfpxB/k7p7xMOe
-yW0bFgNhSQMDmPJ2iTnW+iliBXOntGQda/W/uWE3LZ03Z2xTq+2SlXtDllVh6Ma2
-QaYKBnGzozJvTcMbyP/aZ3lj
-=kPmv
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5E1F79A7C298661E
-uid    David P. Baker <dpb@google.com>
-
-sub    A7CC6488427379A4
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFgRFtYBCADud9fmvTI8Dbs+9GcZUIVzxkL84QYHSDxI9fF+sxfAviq1U+YJ
-a+ZLIW7HsXx8vpn3hqIqAbDxHjrb6MEJ3OWD5Ks7O9Lq7HOhtqAT/mpV3fZmf6pF
-zdEw7c4UrfbtKyBY2kSBpKzTfu6HD3q4OBDm59Ezs2XFhKrXtlNC0fQ30ysBpIvm
-vZH/opwlBgyELKnAYJ6eCmdW1iiju7DPKDBOrGi6zgvslToLpnZeSg6hzSyjM15n
-Gx6Dgby0GNR4VEVze/UdOpsFVTSfP9qXgdt5ZOWQqW2Jg5V/ezvk+3Ok+ecfHWRz
-q8tHkagnqn0SfP6mLqUNvmvAH7xp8crH8L/TABEBAAG0H0RhdmlkIFAuIEJha2Vy
-IDxkcGJAZ29vZ2xlLmNvbT6JATgEEwECACIFAlgRFtYCGwMGCwkIBwMCBhUIAgkK
-CwQWAgMBAh4BAheAAAoJEF4feafCmGYepYQH/AoDwA/N5Zq0z686DtrAu3KeQCap
-YbI4oNQ/yhCuCivJy9ORkqOLRZDhrfkmwFmetOmDeg8GAfoMEDUSvgXLqqli4wMS
-UNNlRA18X6g8N/FS7w/rWP0wp68boPK/Ry9Q/f7SFmMxrObT7aSX4hnhzWZfWTZy
-YkhWN9Y3+nXFtaT/XViZtHoxLZP0Ei92N0zcWGkKs/drH84OS+XMVRktCNExyXUY
-wD/cyD9n6r6f/TGtaL8cpXqu46IhLpeaPMPWqikZCLX/2KGSwiO4H2juTkkhQn8E
-bCZziDmfDY6RAa5xrsOnFeLYGbqbkoK7BfR9d+tMFtkgkXxqpHFMjW3a4QG5AQ0E
-WBEW1gEIAMuetYIGcqEC7KdfWn6EKmO7ZucfOEirvo+WXclo48WX0Eo0gsTghKPG
-TS2kOzglwn/wYCbBVKzYaOngZljIcrR47hJiY/u7OH7EjiCiB0sh5WuEqOaCPPFo
-8lCA1+SBPAF+c1d7SfIEABL/WCc6e1rkKhe7wkBSclspL8YQUG3cr5G/cSCGOV69
-TsCqq7rtezjkSsfE5dxmcs39Ouur7hs25DKehufUA5bV2i51v49WIuTE8x53VfIn
-YsJyeRs7f4sx3hmkwN+EL2mo1YFymGwEkp8iB0Jtrpsevl4AFOajl6X4IrdLn6+X
-Sok/1mzIm+t1ZHokQ3mUWe5FC9c1Y1MAEQEAAYkBHwQYAQIACQUCWBEW1gIbDAAK
-CRBeH3mnwphmHv59CACEnAU1vbN4qxquAzNuaalyV6Hyx9olUQqPHopRGBA2ulPs
-0l+gtAXz5USotNsh3Ai5j39Y4J+qxN3HuDtscxEReogawzOo/B+1IKuGuuTzvL6f
-U6ZFUnEosxChAKwJo9eS5xlyenyumTcXx5yB/5X5nqTes6tcZlDcEefh7K5Iaazw
-E5caITBX0ze8g7WQzRxyN+vuhY30U7P8TTKxAsavdSBVIb+Hp0e2W2S5T3ogXaGk
-Ii5qllr9uhfX+E9zLxJJKfJot33ix647mPwpXxo7K6teo2rkwOTQij1sEe2sbMZi
-KZkn4rYSgLpZiVLPiDYuP3RTuHnFenYROA/YcDvA
-=qbvN
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5E2F2B3D474EFE6B
-uid    Sebastiano Vigna <vigna@di.unimi.it>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFijpzMBCACxAT3jijwXbI6b7LIF/k8oSGyM8ZNJpb6AQvPqKIqCzxNFXzow
-EBCasKMhIWgGy+293Tpt/DY4btJie4u+igMBS86iXrF8CUnOLPgTlAIyil/oREGJ
-1GFkHsf0Yj88zCo9H9GNiUZRNSHdf55gsgjzzFVdZ6x0MoN7Yopbvl71bcTSbe25
-AZM6K4gIf5TTo66smG9FgwDkMxc61ixRty44gkfWapzdob5d0cli0Ze0mu+2PHJ0
-Fdt2sUX/4M0Bpxk7eaGVecyb9sm6KkRaGziJ+XVByZ0UMdrEEJscLaX/UpfK+Wek
-aPQjDdyYLW90PJofKFPt4h2DBQyf9DSZ8NfJABEBAAG0JFNlYmFzdGlhbm8gVmln
-bmEgPHZpZ25hQGRpLnVuaW1pLml0PokBOAQTAQIAIgUCWKOnMwIbAwYLCQgHAwIG
-FQgCCQoLBBYCAwECHgECF4AACgkQXi8rPUdO/msQeAf/Z7IJc8pXwUzm2w1G877N
-KHGNivS5WLfuQk+bCZalLVA25aigwP/YVcF7xdQoS7aBSNG+CJzrLCyyUZaixwrQ
-sV+B5E+LsJWgb7xSvnRoCETYGeFQJdAshlu350GTVmCfy3xil4FFyAENl5r3nB98
-tJ4HgYh+NwUH9GUTBZV7SpnV7I2MYOv7mvixqioN8o51SX8AqbT3LgDko3XegtDD
-Sb3JMtTACZ/7SltVNoGvLzCOSgnj0HkU77MZQ5q3rQCPauz8Arp2vJCwOvkYXPde
-O4t8s5dGRTH88sYI81CWQT+X4w1q20CvWxUd3j3ZJthyunX5MH11nbYdXbAnGPIi
-gg==
-=UN0W
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5ED22F661BBF0ACC
-sub    31ADCD8BFCB760B4
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBExyNhsRBAC/W5cMapoP7NUn8S22iWG5bPw0bconApJHP4kQdT17gT2JgNJz
-BmuGWV59ZOGQkc6woeFKc1s6twlsgIL51jMeVOtgLJRGTS4So2hthNqDcgO4j8Lm
-yXpqbTkbD7/ZlRzL2hhedrMz4NQOZCvsZpQ1RaCDrr2hxDq/HhD2omGdlwCg/9Mt
-JNc7897LgfCMmtPOvAFt+rsD/0K87nvW37nlRqHdEtzvwUlyLJmYxdW9hDr8tm4Q
-Y/8rDvNFlhKV/yXmxQuhtgQ1qpBo75dwD86aJmzIMIWM0iei9Ecfu2DsWiWvArq1
-heDjMYSeQl6k37cmD59afo6e/jQmg2/ALC6mRf3912SfmqV5spw0k+NYdFxAnbot
-9jOfA/41shIdZloZ0aDcJDTNe22wFFh2sW8RwWtJJO8rmOCgh3MmkPn7LHPI9idJ
-bSdD1dRcR7UTyeigEeDTu0PAKfKZutc91lfcIGSZdk39SEEhUkL2JdPKVRBotiZZ
-Jsi+NxDdsprF/yQtr00XSGJYzh2TW/Srnb5nZQm2Iyokod3M1rkCDQRMcjYbEAgA
-k0wzZq25ZX73DIlxw30u8Qmy0HM2cVmRe45Pj857FlSQsO82YNPOMxSkACCmHAAT
-3pACuMCf5Z0HO5iLbHrxegFPGWLkNE3CJ5yga1zIiFgzNc9qNqWtPQISJIQjABit
-4SseMY8i+3t6A89NjWc/AOK1BloHdjAmtvT54oYtqFYCMlNMtCLaR6ioSUH38qLV
-jXtFvmTY4OqokNaz6JXxzTymyo8gJff9JRpcm2S2Xksr0dLNYm5QwJEN7KX4E8iH
-8Rz8TWxfAhrf0zn45D7bgHOk3JFPEXzKGV1l96Tb5h/yy9wuN4JePyXDGfigub+1
-grV5DBKQ3srkEwy6iwAYwwADBQf+LXoUj24Evhce+OJ9ZCaPEppmV6xJ+LaU/9D1
-hwMkQ6CXc0IH3oeNGAbbOHhXM2GymRfg8nmzbIHVueTP8ISeO7Dc+gMr7l7l5kB1
-W7IstMlS1xI3Vdg9D8HaPJa5gB3qEGrIPdDP1KRRwJflw+DmQXB5jOj4vW1xECqX
-0bGY9XNFFaSMhkr5XRVT3xgQ8d0wuCB9otuUZC9pxmwFiH2w/FvKzMTKMRwK4IRO
-n5FPhSO2VBHBnlvF/mSbED22jjB7DngUC4rF0fE1MrA6DDJIAKrsDlk0VI7x/tIO
-YbkEOyypDgBf4JLrxgrI6jn3iCRdmi51hS7dtXX3ZIkmDVJrOYhJBBgRAgAJBQJM
-cjYbAhsMAAoJEF7SL2YbvwrMplIAoP5GSTgknFm3ONZ/W59iK+l+XJWhAJ9Bru7L
-aSKZGs7jwqXqGNrZ0ZzxNw==
-=HDKU
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5F69AD087600B22C
-uid    Eric Bruneton <ebruneton@free.fr>
-
-sub    0440006D577EAE4B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBE7JURcBCADO+9Dc4/JnB+wX+fq+Fr2zUGSPOT6/qjE5kXL4FEbJKsqDSAKG
-VnbtRrsIUdmNIFQmz71bBDFhRBbrSrkz927k8eUPhYtxE2NmmWSuKgrjF4qviPQv
-m/7SqGx378m/qw4EvpgGUB8EYif98LYdWp5vsU/zx0Ps9auqvetAzJaL9489oE0F
-q8FVhve6BMfUUV7zOTCmJnf438YO68upjU0PVBdfFE6Qx4cgCeWbQGy2cooW5azN
-iIenhuYU1qikmxMHq2xZzN4uSTWLGDpimPyz+Y1aTSYJ/bgn9gPStbI9sojWo9SS
-5gvNK3XqJzMwxwFow86UcIE0vPD2T6ZlBAXRABEBAAG0IUVyaWMgQnJ1bmV0b24g
-PGVicnVuZXRvbkBmcmVlLmZyPokBOAQTAQIAIgUCTslRFwIbAwYLCQgHAwIGFQgC
-CQoLBBYCAwECHgECF4AACgkQX2mtCHYAsiwWdQf/ZDnKejrNUOREfAZQYoAmf29G
-zPnQ2XVb6ZxoD2kg+b7SyzVL1lnpXw961Ayme9trxztb9KJcxJ6a+oSVIHWoiINS
-zx1g+lXCsBRH3Lb5iJTAr2u8+Gyva9+PB60CBmmcsuOjuLBx21N0/E4KpBiwEoWw
-5z8HGNVsa4jtRxB+RoQGiilBUIelsI17e3hQWgScIGJdLW5xErlC3WfgtUOL6q4J
-mSk/A1R2jmWKOO+WBvGbnOr7mKZd+/h4ohzVVwyC1WrFeFJgEZK7bXPA77Iv/4u+
-al7RuVztBKjrXD0yPwknuxMgyN+Y5f/pqqKncNl0lOtiWayKSxdatBLmGifAgbkB
-DQROyVEXAQgA2uNV77VI+ARj1d97b5cY3/er0Mcc8/Q9ctMY+5YpSYDOQF100QBd
-OQ8q3IJsfhZeF/iMFlHIUikuSgatb/Ih4lk1+irnERPuV2MNoAw3Fvn3/vwl/Jy0
-ZsQCBSXO54U42TcOXSwNLkYOJaomDiiuo61Rxj7jqijpnydwoFvEi84v6q/Uota3
-MijGMbzU9QyTX8J9OKMeCSUq0uVuk4ezebjv/bwA/ax/qQRIrEHDOOB1LJ5JyLac
-K4+h5J8tMkEmWxEQv7MNokRLgbaePqv+tdf1gee4f2fSE3EXKFxjTO2wjLPXCrHS
-SI5gecsilQn7ZNxH9g2YUJipn9yj3ywMxQARAQABiQEfBBgBAgAJBQJOyVEXAhsM
-AAoJEF9prQh2ALIsrWwH/3s8uN8/gDnbcbTX+7N/ZfQBXJZ+H9GGikmYRJE1xoOe
-Et9MOqZyGDTZfGM/qNKeDGfar7pcRQlMK/A4Nts5E6d1OX8fBkUBtYanyyjNLlT3
-yDjO6VaV0SCsgAzNjUZqc4lxS9atN6md5m6lWLAdHghrXuV6LsiKOS+96htchoCv
-Tvm7mcPI7w146yJRSyCC5+PybG3ult5Y6QASkwI3ZWB0u0PKUoqglwWngplu+0Fi
-b2rxQvL32is4YrYaZ+XwoR6u/Bgv0ZvZiypk17Uk17rDb/JfeLqDn7oW6Hlgi9KO
-LbRRIg7vwZVo2Ixco7aGxZp5c4zSfaPvn241v813ZcA=
-=A2GR
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    5F7786DF73E61F56
-uid    Ting-Yuan Huang <laszio@google.com>
-
-sub    73F7734B17EC71F4
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=v4+t
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    604F437C1682DDE5
-sub    F664BA5FCF7560B9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFv2vg0BCADQzzfU42MkbydOEese82s5wyfs/qkUZOQatjwPMyEMlK/H7LZc
-Bk2ZOgBMaDDdEZv2Vq+6oUa/rD/Xmr71gCEk5U1rqeZZ4HuvyEZjjIisjnVrMCT8
-py93im2MJb1zifvY+rgiveiVBNCjSkfqX1/g7HmGiYL30romA/io3jvtWOo6PkQf
-GYzifOKz/5j9oWm1yqdXuhVmPD1aUkpXZeoxfWDpaPS+iUm4Db38umVj7GY55okB
-rrfQAdAUuOG9dyseIgI4HPZMB562Qy2tww5q+PvSxs9ydgSbFHFu1ejCmlViSeXL
-leGPJEoiRdyu9zMW5sU68lxhErtFRpa3IORjABEBAAG5AQ0EW/a+DQEIAMiknjyN
-qHzzG07PNE68DSlUuMvraoyJSkcA6Sjsg1nTgcp9jubqekXW+ZHnNYWZJSxZx4RZ
-wloo3+A4skthmDVh2UN/FO9Vwx1EGkJuyaKELmIVBRSC4IBrVrQ/4/nUXMtG9NhL
-Qmgug3glnlXYg5gqlQc2YjNiWI1zdYmR7pHTxBhDYLB1hweA8X7SH690HDevqhiy
-/qT8YAHZzMZaauj/xQHpvn4uN5xpGm1eQw47tormy7I/1QaDW3pbS4YIC+Q7gdYd
-IA217tTgN5OA8+kXuPJJQKDMG0WtEGegYjMMuNh266HMtfekJVSlJTRdIFQT1j1U
-0OLjrk9WRK/ZcrcAEQEAAYkBJQQYAQIADwUCW/a+DQIbDAUJAeEzgAAKCRBgT0N8
-FoLd5RodB/4pZu8Segyb2VhGYbl0jgmZFqMZDI9iPINx7oZ+09Ck32R6UJgaiaTw
-KT0qeEssum3oj7zz3r5D0s1k5pwvd0w5TLL8CeQ7NxTy+hE+8cHZbFfoMBlnr73c
-UhedkZk+Cf7dm/GVkv1ERr/XnL46wLO3OAMamh2wwo9Od2GP58ZFgFd3jhroIuTt
-YtBVeB21JO5eaktP1ZLi7zsGWcP2mPkQAnd7BtQGwjh6x6M+Xhs/mZEmLP2/nLEf
-oX3eaWU6uE54giiHDC33rBGerBuHGeW0WT7wzatKPz9S51w7mqPXLYNmw7/Qwfvi
-Ca2w4l1R/HAaNTH5suZ1HGKy1nNcY6aA
-=fcxU
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    62BA9C275D14234E
-uid    Pierre Yves Ricau <py.ricau@gmail.com>
-
-sub    FD2D3AEF63B97A64
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=ukU8
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    62C82E50836EB3EE
-sub    2AC7BF2F3349DE80
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-egz57oSj4I+NT33hA64x6jicEKyBNxNI
-=T3Bh
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6425559C47CC79C4
-uid    java_re <GF_RELEASE_WW@oracle.com>
-
-sub    D547B4A01F74AC1E
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-WugIjrW6eRqMfhWIeF6otn/vBGbp44U=
-=+bu2
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6449005F96BC97A3
-sub    D3DBC823BE4819ED
-sub    0162FE0CF6E18BD4
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-FPjHFhRiWd3YGlydu4Dtzwfkmu43CTGp
-=Pq8A
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    64A16FAAEC16A4BE
-uid    Evan Ward <evanward@apache.org>
-
-sub    1E8F1D57A4450BCB
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFbqsT0BCADwERe1Rc9qNWwXOvwZHsjauVDy0TpqNVY8I3S+OYm4rX1dkjyh
-+6bTEH1ys6bKevvR+PLhYzTGKboHnMT0RIINY/DQQSzHr/GRyCiiRlRvULbt9Fnz
-kJJDgH2BcbNSmWJlrCqYk+E3GAyQial+szkEZED+02wXHsbs0z3vozjQGHy0RVOj
-Gc5Shwk7Hr/F3vw9EQKa1nNffWmcGEx9B+WcC9ALPVd/fpQVXvlqfbi+kaIbqv2x
-NHQr7BL8j3SpN6vhfZM/3zeghlxQ5HYWER983XwkmvbNdMxt5HWsMKWZ0utt4ocK
-TnQP8NFGlPWEQhPvRRFNb9BI0wvGD0NUb1gjABEBAAG0H0V2YW4gV2FyZCA8ZXZh
-bndhcmRAYXBhY2hlLm9yZz6JATkEEwECACMFAlbqsT0CGwMHCwkIBwMCAQYVCAIJ
-CgsEFgIDAQIeAQIXgAAKCRBkoW+q7BakvnygB/41oiYgfDqkG5srQ4nC7jE0Pe5V
-MnuLVHqsfJBGPvt2tz5+Z1ciIFFwUi/xsafX5DhC+FVOOGdeEnkKnskPBOI7uMFh
-v/s90lbhNV62LfwcS9hptE4qn0JTg7mYiiL0Zue99mlkeP105+GlMmvH5q54X2Le
-hIDBVR8DehL8ZqZCvNEVK1ftpx45mvF/4yh0YK0oVuCAAzwF9+6OxeWTCUTRHTZC
-4CWjtXKUHMq4nTRSp0wGdqd5UV0VbMn0bKTkhgRNCJAKyFw6lJ0FZWwmuG28T0s+
-bKuRAJHTAZmSM7UmBnKo22t9whNcozcqxWhK1lcS4OWEArXpCKxAx4kXmbwnuQEN
-BFbqsT0BCADj5dHK9K27rmkFscDY6x53w4L/X6AYKmVu7Qol7VhR+1WtZXgxZaLM
-xDxj5RK4sNOIqh6R3vEMlAVS+iYbzahI/A0fcSciCoLCgjJKCR3STnTu2k0D/MO0
-la+wF/bGPa0UADGIJLRCjalkl5uv4c7zZbyLnRl8a9XSc81cp2WJTxafZJlJkFOU
-4cyewwFuH0pwMvc9Wmwhkh5IeBF6w8Asj77M5bzJINXYxtKMGYA506609HrvN0+r
-obfgx4Aqy4hGKsqXMsSZiuPDvbdtH3gIRV8NPdYRq+dQg/gv222Y3G1xprDVbl1A
-1CCHlaUqT2lIFPovjoB2O2SBeX9xKRJzABEBAAGJAR8EGAECAAkFAlbqsT0CGwwA
-CgkQZKFvquwWpL4yawf/WDI4VqLkR9RqaX3am/kS8481pZPWZUlCCL7jONB7X7eG
-Bit/FjmQWzfL5nWAEB5qhm2qqCgvgtPmVxCrQLECVmaGmDFmhGIFh8TQsYvQJPK6
-HZDxZj97lUKsG/ojOY4ZArvZnsXBU6C963QUZF+P5UL52n1pE/ByMV1R3enEfrYI
-X+wZslOx5uRFOR8dgUpG/ohh2vkFCaKD6KJQHm6C5lGBgUNqGMFxp1nknKJaNqYq
-jvippm6KcocWARfTHx6Xm3mBqxigmpsalUKAGpjcsxsIEY6jnnN/5i5y1XeokTY8
-6fqEt2OSFSkWiApqq6lxMRluTiq33bSquTxSomKfQQ==
-=PImz
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6525FD70CC303655
-uid    Stephane Nicoll <snicoll@apache.org>
-
-sub    DCF4B49B4D5845D2
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-LwCg0goAeKquoZuBm9KXUWlDeLuHu6Q=
-=WF0r
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6601E5C08DCCBB96
-uid    Popma Remko <remkop@yahoo.com>
-
-sub    0AC07D0BBD11498C
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-Ds1RyzdSprcN2g==
-=S4Fa
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    66B50994442D2D40
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQINBGDoYisBEACqUDZnT4h6ma6XIzdC6KR++uDbR2VKdhCuv0Og/sHEKkm6ZbG0
-OFB8tAaQx/WlsoQyf3DlLfUEOGDai875Aqor3fbM+E1hrZbQNfsOySKEE52k7PYe
-0qGWlnAzINuQaEuZwNw+pjZqPraMlwc/hwzJB8yFNHCv25pCFohK7KXvFGr5Fc6y
-NHBp6pM3pnDQ1kbkloDr32YZY2LdrfdkRqwa9STNMcZtM724aaInValFpVGEHolF
-dklo9MIsMI6mVHlxi6UwFSSLltUfTXGYY+rt2Q2sLNnEKzK1GvVhK996vrNWCvpr
-cdtbTzGE3WK4f2knhqzlaX99OLmkM1ah+p2EkK7HgWM9oEO7SYpNxKe/F/QfRNRS
-4W0aokPsEtfKCD7vQ3cRWQXdqFwvksilv+b6pcSrwfAsaCzVuhB3lcIra4MevJcH
-ZEbPrfGMi5/MIVtLayglLHSPoZtjQBhlqo8w3nuADR/aFlIUZ6NGOwaz5yXIGVEs
-6E1wiuILRAd7ecJ3Zyr/URHjawfHfKMM2tNCJKl48cScBMY61FJ1EmYzwhDw+at5
-D4pCk75eM5/t6VdYQ1cDWm7J3LGXEANMU5aSZMqgVnb4SQEmRxkW7oq3Z+GIkQQf
-Sj4OK6Oi4cUpM7b0m7Cbcsoqb6nD27VKD3J5KTYEq3e+78h0VRjhoi0Z+QARAQAB
-=UUB8
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    685C46769DBB5E5D
-uid    Egor Andreevici <egor@squareup.com>
-
-sub    CA7AE93399B1ED99
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFqHCi8BCACgRpCaVCiJ2MccCN01SbHYowmM255nSYKOnfItBmXYAMtc4rL9
-n1y1qFtc4LBbkIrPH8CO2zpEImUTZel4W93BQkluPOO3EX/hLCTCFfXrO89L1u4V
-XL4siS8vZl3DVDdY7m9G4vcpiIsggGF683KNctN2KXZ0D3tu9C1X7eJk3GyDo6W7
-MJwiiCm10968VqFqIFn1rTkvtGtXGP61Vqy7kLTdiBrKbo1HkZDbryl6nvCmT++E
-auJXEDYH9R+vsODy10a5in0n0EzQD4DYadL6cQTbwP2SvMbRRRQ7AnNtys6cNCCb
-CIJ8iySLaHYi65w6FEbiBM2XQ2hzf8Dek9yDABEBAAG0I0Vnb3IgQW5kcmVldmlj
-aSA8ZWdvckBzcXVhcmV1cC5jb20+iQFUBBMBCAA+FiEEaC92XupxjSULvbLxaFxG
-dp27Xl0FAlqHCi8CGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ
-aFxGdp27Xl03AAgAgtnhNsz++UIqtiETzp0Y5v40STwdI+8KYhvbhzL2MARmnYr8
-US+NqeALovuWPNoP8CuzGN6dQP4tFMVr/4GtDJRqzi9EGUHIk6KzliK69Eir04TP
-3CgJb4OqrfgqU/tbXTPFVVKbpyWnrrzg50THhIigMxkezvTWa8iLWswBHb/E/NRn
-1NOfVkPqHY0D0Z+KeAR1/20n+aEh5JrLsxzIp3vNF+qXSN4gKtmdj2fYH9eovM85
-0NzlZnaqwetTtBxeu9mYvCHLCbTLrQTY2MvqBpZbUdVJytJrvOTAddmRrNiBz1w9
-yxzGOKXDSB0t6LVWldwAuTM0eGXqaDgInbe7r7kBDQRahwovAQgAzYHtmnHEZVad
-1Th2c8oFr3/QaH7UP7Xz+lhKyYgq/FsKmkQy88qxcxTX4kMfSB8ssKFdaCtBQI6y
-pFVvaUm8jn1LC0dVPZJHKHOdDEiLdg7B20bPzdY0x5+Yav7SJjYIq53V3pkJGZyH
-P9CvZ/L5uJ5+2sFx1nj1qyK1FWVx2VZk2TsFmL4fpiAi6SOXRoGVLlO0sCqUvlH2
-eR873/1u5Ya387En4krWnu0T+dHyg5/xu9S2Q7XKmO7GyEUXRnXsJPur6CwXpUao
-eoXIcydpdjl+TR70OgxyAGsrfQYVNjPvRVK4yUv839Xz8mCIp21CRscsx1IIeshM
-BqRGXIo8BQARAQABiQE8BBgBCAAmFiEEaC92XupxjSULvbLxaFxGdp27Xl0FAlqH
-Ci8CGwwFCQPCZwAACgkQaFxGdp27Xl2rCAf9EwynJ3Pb70PcSVboGozFCnSayE+c
-/SboSK2Cujfw1Fy2Qr0YizXL4RAE4jXzI+Y3EYZpcJ7XMxUheBTZrxO8ACvMrAwm
-MC2vf1EoM3DQVpyoVCv5d1OIY6rYCjyHeBT4rwsl8GLZZ9vsjGWpI9m8Jcpi3jhM
-ih+zfrdaYJpFzu5MA2y/dV3aYn0kpODuN+WVWRyF/3jhLCZtrNFnZb3pfrS/jcDM
-+kdiyqH9wE6iyvIxX8Rk7a+1H0zFmKQNetxdMQPYODUSXQEuygXaZFzm+bfWU+E9
-x+HCpeZqmOpBQgdhFZFEX+ru97s07kBMVUlWM4s4uETNKLIwzkAk2FlbGw==
-=S5Ep
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    689CBE64F4BC997F
-uid    Szczepan Faber <szczepiq@gmail.com>
-
-sub    C0058C509A81C102
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-B1jblPtxo2UqRO/qhPfqSkoVcpWmxgiPUFOr
-=w8k7
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6A65176A0FB1CD0B
-uid    Paul King <paulk@apache.org>
-uid    keybase.io/paulk_asert <paulk_asert@keybase.io>
-uid    Paul King <kingp@ociweb.com>
-uid    Paul King <paulk@asert.com.au>
-uid    Paul King <paul.king.asert@gmail.com>
-
-sub    EA8543C570FAF804
-sub    CA890A5FA09CFD80
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQINBFgMcBMBEAC/xcIVVOOh+F7S0OTzBlFH34s5fDbi6Zto469tZyW1peyWtXAZ
-m+2jzFfeTCHaUQO3YjoTy2fPygS4tVD+ew4EAzMG5Uti4kwWZw0PYKz2JO/gl1JY
-fKpWWkpKfHsGIFkfsOX6J83J4GVpaNJBUHsmcdep8YNf1nYDGpIZCxufihQXhuuK
-x9BPm2SUdeyFwUFdxhGN4JdalxZo+x0pvQ6sKO1hQKK14YZXQxLUV043p3me9lVy
-Ubld8kcda0edx3cyhilehib3sZPVhOm8s18GmjV5/ApPnehJN7SueivB2dzzFPN7
-mUwrslti0j2DmTdOImzcz0IT7zErmiV7xtgsgP8jgKEp2LF23VFXuWsKO2yNubQP
-shNDKpYMMgJn0PfD5gwYl8FN9Yzj3OKA5wiJpgPjPl2PveZ/+rOS91bQMG1hFc3W
-v9ZWSisJAZlNQlfyv36rD12WhwQLlupLo0zPlqp7e/i5ZJBPg4unbAYECtJI5Wqj
-Ljhyd0j68QWon1Ripi8ruqXA9MUe7JMy39ZmF3/fLT4rBiHyRVpWkVKjzLlm0Ks4
-f3cNAPxn4FWeTwM+oUzEbpkNpE/swIbR05u1J2y0f+GS6X5t0CSTcHk1VIOnOiTl
-wLzSEJe9hNkBuNJjwM9Cod7dbdorq6Qwd0ffPJoTw1SVkHMPwIjikzxU7QARAQAB
-tBxQYXVsIEtpbmcgPHBhdWxrQGFwYWNoZS5vcmc+iQI0BBMBCgAeBQJYDHATAhsD
-AwsJBwMVCggCHgECF4ADFgIBAhkBAAoJEGplF2oPsc0LrzcP/3w1z7KeiwXUc7fa
-yYeoWIAXJhtYSN32BCHpfOLruDAXA5FaQmqILVzT/Uk3SYYeaapRwJ72oon4L1oB
-+HaZu8WPwKbKJZ2zJiWDWtwC1aIMoRJpykt3GHlkorXLM4bY943eBnLbFhUi7RpZ
-wfPvrlnblVfUZf+Shxq7CNSwsgaj0CLv68B41HgUgNJeDqCI3DjHQYZ+aL6Gb3kJ
-q6dj4iLFM9WfMM3j+orGuc1+nxWa4GuS26rLlT4Tm95uEA508s+hOOZmMwgFr6AZ
-eF/al46f5jSY35asIIy37IXTX3X+Igky10pEMrMo1XlKOFllyXWBvpZ5aGKgp18Z
-YCeBHXxC85I9JYNUHaAiYVdA8eiLN172dzWvOfCbkYYTvQVXApD2oA85BDjLWnsJ
-3bGERMFnJap+WokGbP/5sEcngozRq0USKlchsN9ij9EGD/AWiUiJaKzPKCKGblmM
-mg9wMR9gUakgxUYFK8HsBNG3dX5zaHRiVxSQwupH4alVSdEqhpYQ3wFFzECcGs7y
-fxT0gxS9zr5e6BauA66BYkwGcNd7ieNwvWvIMpxBQ+eub5fZ3Ndi7Ys18wiNi4kc
-754yDFES8CvapSk4wPAP7j8ua+UyhjO9g8NQlulPES8DYiE5PiW8/0fc4wP4NmAm
-dHPm5OXE31G657HGQ3tqvmdnthBOiQEcBBABAgAGBQJYcO+0AAoJEMjoVWEpccxC
-x2cH/iUYciKTNOjMas94SnLNCFZQTzxFg+cfd37i3FzKzMXJrKTobDLUVtMq92KO
-+GvLjH9eYV99p098rJ609d90QpawKofigi5UNLhYsjLH6o9Fx84MokfXRbnkEnrm
-Fa0eg8B/E1pAli/1F+BSW6anLEAI72nrSnTTTok3o8RNsoJOJdFp11vNaNTv+L0c
-4IeCALiD8c8ChO8lXCK7rHfptsya+r+VrKqi4Bpv4xuhBgJCFvHj6tUDEPa/kVhU
-wbWgXfLtZogzO3ZZKYikAiOu/Tk91lIIocOHQpYYcoIXuUhVBuqAOeHIZHOSIc1U
-izv0hAvQ+FXQX9cH2r5zUyuAFAqJAhwEEAEKAAYFAlhzTG4ACgkQelgJCIR6+eAO
-8Q/8CoOCSsWa/MeTcnQsFTGwPhPgOttjyqV9o0cdmRqS20ygW2ds3uKUe+iP78yX
-NQnt9JOtqUVtL3bIAY4qH6VZSdpBCr904/4MemrHK1UOAYkhaQuWEv6LP/kHndDX
-L4wALn+7lideZjdV1N7jLRyvSH35Hf13yz2o1K4f2Rjrr6e0QRJKTm2RcJnH+zxC
-C4K+vYY1OBn8IyMDr+sD9iMVcy53zkIHHbu0saROaLBJ+vlntvsfaOhWEqOHUx7C
-/KiJQ9VshFyndSAc32LLVIu4/P0HQpLfezZTuNoZtHEaYXRCti3KK1zsGvXbW9aP
-DRAu+FrypUiRGWCyY4hnz3ex9QSoYpa0js6o8+VFPWDuwx428as8iGcbcZ8fPtxQ
-+91YDnWACNDCZq0mYTb+cFohnBhL+/PI3waZDKMypQnT+Fcp4uMV1oN7088mzMUq
-C1yBpEbrPexccDAiTKwYt4Ie4zaAgZmyUH3sSCctyoVhmv57DA6/PXPxJn4Y6IQg
-rBcpmx/MHBmhxfhq2hwTaW2MWESMADvoG5/2ze0bl3rp8FxcYyKhEtyn0bo2JJho
-ZC9YvxXlW1uzWci+CPw6nV6TtdsStRYryweNhoi9ob5PNQxGUfvivEfsBwAmyz9D
-eJI66tzxqyJptBuuaXmIzV2QS/Vpoh2GDgh0zusc5baU6Ky0L2tleWJhc2UuaW8v
-cGF1bGtfYXNlcnQgPHBhdWxrX2FzZXJ0QGtleWJhc2UuaW8+iQI5BBMBCAAjBQJY
-DHf6AhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQamUXag+xzQswow/9
-GpjuyZMxZlpheqRv8YgpHo7cepgBC7YO7ZIphEAvelYGuIwXcMquTVN0OkNNE9iY
-c8vphvFPCHzcqweBKw25EOLzvx+DZbs5u5T6HX6MTb1Z+RNKHsP+HGlcEghcg1sS
-vT65mel3UsOjBv/cgt+8xEfRlLooJprjvlUGoT3z/mV5TLBHu2+zK0pfHgZcXC3t
-uACx2/ozO0WVD0b65UAkVf3wRP4yzha3biy1nH/sUKYOA31WooimDRlRvW+Q0TZJ
-LAv9ckdHsRG9lq2cXDn6h+jjkgbv0/jGpqziix649gjd3xB4Zbh7fEkd0+AMJOtO
-5eUkJUfEOB8PX9mz4Tvjg5995B6Y3G29Ct+pDsHv3zUT9Cvfsw4v4xz2BQa7pCv5
-+cpWvPt6hlhly1Q6wHMziSVWR+4Q0FGfGQMXXMvqa8bxEchGBFL0atCHrCopGj2N
-BcD1kzalLKS/tIw5gpgvDHGDJx9bj/D5lxvM6rPtNhAfoOMNdd7gdQcX3asxFTuk
-nSxzZKW3o1y92fejYdv/e/ScuhAwbAzoSseOodeKAe9SBn7ePz3ogSxR4Z3K0gX1
-cDBjjmETFBCigWofxXBydc/GXljaXDLtIEmo7ociU92xFaIETCmZMlT2bFGvz7TR
-DHFv7Ks3Zxn9Y9aNYBxJCHAMYa+8HO54fSYhlRMJeouJARwEEAECAAYFAlhw77QA
-CgkQyOhVYSlxzEKFDwf/St98fhr4Ngsz+mbjxjYMhmkeHuRU8+d0dMFpiJ++2cTi
-xzgce5oPFOM+mblDJuJRlS8YD+Ca+CNH60YGOUCIzEW281ZANjS2PiHFaeFKC/Sd
-olfOzUfjNdqffcGFMEZJkEgn6m0oc+MGljWwUdgglopbza7LM2A04R/VuNwUm8Ie
-irmHjBuPdJLM2VZlJdPQL+/wumXVLyT8oPPJMcaRFQyglNZw9ne5ftj6zKWRPoti
-o+RCAhjDhe6nE+G1WSHYL5GNdBH7UqHPiaL0hkzabPy960ycpGxSaOSBtRlqsqhc
-41frkjSFIf+kACgN29E8V7jw8ceg3lD05J+UBpDkSIkCHAQQAQoABgUCWHNMdQAK
-CRB6WAkIhHr54MJ1D/4/H5GkufHGm3GTtj5UfXW1Rr/SdvC5AqBpz+r66f8TUUJq
-rXBcn3V+gTITHZdheSUiL/9Gv2DsGeJ65RVBgEiya/4GgV8sjx3/tWRCa4Z7difx
-FBpjY8ZWSMD1r4rtCMANRaMZ5CF7iu+nQ7sLNoMJJYuO7C0MsF2jqUC67TFHoL5F
-N0vwMbk7yuhos/hlfhr+iklYppz3TwbKCEMSP4KfrusrSkq3LqGQJalzNT6RR47O
-LNMqG21XgWopxtyvBCsR2fJV8YUr9fUztskK3l/FCW8Qi92o8FMJpDwln5YNjy1W
-jlSJT/kFk2wG1leucpPR5M/Xf3OeSyelr4lW8hg4u72npOTQ9vfb/sZaS0IPOPuX
-A88NQVMZLbSU+OrtNrdY9AM7jKHxuwszj20wzGcx0XTAkleTHqhKL0tbfOJiq7Cu
-HLxgFOWO7+k4TB6ajMNrtr1rhkTCzjiiUT585+CC0pTtNVuonveq0ySId3bRmF64
-dl6ADFvibDUGsc7GZW/r6WU7xBI/7biykQdOs+GRtm2HrfGAVlrur+cITI4sLRx0
-D3eugxY98fz8DQ31Zw/LPNsKe23DdkHjoj07wRP7nAiRTZ2r/26Xw/rwK060Y2++
-lGVlsV2bJSNfk70jdmGddi307HyJLyFzdaq/DWc23gJlpBUeVtTiGDMjQEz+ALQc
-UGF1bCBLaW5nIDxraW5ncEBvY2l3ZWIuY29tPokCOQQTAQgAIwUCWAx33AIbAwcL
-CQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEGplF2oPsc0LTUgP/RGmHtWXolS2
-/kzTRwovyM1w0zUd55UbmdPZY2tsd97BhUslfUGnXGLBBEaMYejeKTqDlg+EUGv9
-thQIXuB4Pt1WSvDDHWGFRS6si+VEprkU2aCJKiMK3n7Lof4Q7RAve8hK6hGlwQGk
-ApEsig4uHNY4XwvoQ/+AdjlHggJynN1JaR+ylHJWbAEcAvZMuLqxYtNX10uy7tZc
-DveAbf01VIhQSI2rMWWy1nk9nX9TdlP6cYOBdx1s6+KXoXFb66Q1t7JUP36xRXPC
-5dKl62aENoYbSiZpHJVekX2fBDT2UILT8q81UJ2SJbr8SaQVfUVNQIDrOlZCYbhP
-CvOS7cOrYET33nzsGS3rbhssp6bS+tnVz9f1fJoNigBv46I9yTpSZe4PS6nFTFSL
-l17VgeEqbjaGUs8G02wFH5V+VXcpSLSLd28v/+BDmYWh/3/RXnI2XO0qTNK9tNHH
-ADJMQ8LaVUhAKk0DCR5W4SUg9192WMQwilpI5mNfCbYIFNrnzcsNarJMsvtUzFp5
-3RbQrwt0eB3QwCDonjgMdoHO9gXenkL3WeqC9MptzrkA3m9vTAwtnFQrN00DnaIL
-J80jSJg8cWFxwfR2lHldv7kM5muC67ZMBIBiVg5dKq9+yKEbUhaTsESaHvxOO8Vx
-ko8ohMsEXyw3Pm8brQofGV+8Ck6gvoQMiQEcBBABAgAGBQJYcO+0AAoJEMjoVWEp
-ccxC3zsH/0Nm5f6zzvLRVevJAn6qIozkKCO3kfHQpyspizDvhOO6oRBnlC9/7Ejg
-+Hl2mxtPnLly3V8fE2f6DHw0hTCWHxpzdgmR/sfoqwz7OsY1/miAFDs7BCNS+HmT
-oZ3PuvkkIXjPkHjLdAq7Qlp3epSfywXaq0MfZYhexLK3s5pqAc6r5bxmGgsDvUmw
-6vUR4I2EPL7Hkq1k2deCTxaEvTv16ESlGYvNSdmWEYHwGDz1n6ZE3sBnwpqVlIrp
-rIOt/+wmOm5BFwq5w5hZ3SGZttKcJlcfwzwfV9c4+EYbnnpl/WhQZFDRn+XuI2pn
-uOqLWMAy8S59HiV6bGqUvqxQobJaenmJAhwEEAEKAAYFAlhzTHUACgkQelgJCIR6
-+eD84Q/+Kate3f4jqwRUEr6cqeqnXOL87V2sbdcKeYtwx3MX8IZ1QhSY+BquDdVG
-XIwYzEF8oKm6pNhpWH/GZ6IcHHpKyhnCP27LDJQiH0cVfZkyzyg/Ae47uPNxPZl+
-ElC63jESvM9rbkEQPxlbhEWEZYL4+HbUGeIztjhccOzo6r92J0BkbBdnV2k7vZkW
-ZDy5zUkMhIyvn09/McaeZfL7MU1V1l+oSG6xQrmU0GheL8F7EMDo8g9m1sP9nqZ/
-4iMSJJdyLlnCz751ZH8yjfK0D7ouMo0QAIRZICgaboPSW4mG5kzQuaqiUHoQwm0i
-1aB7ZX3W5SStkH+GlChpFxaUutEKRsAWn6CUa/upXjZ6M9cpqiuDBLETNgcZhx8C
-Gf7Fake9yg1hq02kV7mSNfpjW8mfj6jvyJ/H7QO0U36ztNqg8VS2WfI0K3EXggCS
-UGKOp4SA6wST+aBe9Zlk+WCEZRFlRBuBE7xFcvpRUSn0Myvmi9iyyxncGjgz9f/z
-rgLWFwNXIjudHEFE0OxlzxQFay3qclLc7uJgRfmr5rURSPBLLdPVRU847CSWZYzc
-9ehIbsBFCesTiiTFdKFTCPah47JBuXTwDiHMMzW3NoGceihYB8MnaFD1e7mz2Ovl
-DpbUs2c4lF0gCSsALBsAsMHY0dqQJhLWN1hslgALz2KzzSP+fBG0HlBhdWwgS2lu
-ZyA8cGF1bGtAYXNlcnQuY29tLmF1PokCMQQTAQoAGwUCWAxwEwIbAwMLCQcDFQoI
-Ah4BAheAAxYCAQAKCRBqZRdqD7HNC0rxD/9AMTbcAybUWuoHznDgjKOl4OmW5LAe
-PiKW/nz4AsZHM/+/s4gqoO9ugydRCK9ZVMYNR4ukU1HcgyPaJuUW1jAc40p/eACR
-+f51X5rT4Mv976FvCCzP0IdmTilQUubh0RGEFfPK9FtrTplmqQoDf7ehDo2Tmt71
-V0P12LUBj5yx35DZBjjvV42wQzfi68oNaJDqKE7xGax8zOPI1/djyEtuTe/NX+/j
-XG8DP5hGLo305JZKytQKXeVW3fW0/3VEJ+YvVKEuvpoupy8cVYov8NVfs8YRRNwi
-ctRZEB6/q/RB7yin03rvbhN5zVHWMlseJAPooTNK27zxO28rlv55wZoK0NRDDJiB
-GEtF8bCCmdiBQaQdJuHZDfsCbvxL5HPmkUuGW8xbn7+FmW/X3T3VIzR5UNdJRh5A
-m1nvkdo9tM34c5wOk29VTzdgbN/1g9FvRdZMBGvKrQ45FM5pPi9Oux6HArEbRhaW
-UFqNXEatTZtGo+cTj6J8K5Qh1r+GtbeAQvCgq8WF8SY9S4j0vO/TnHYP+Ll+CT7D
-FKQlvHahTetfI8td2xH5Co6RkWLeUF4Z51H0lANZwi0KFI5FDM+rhdD8HKr40b8I
-/+tublwOXUHm71ltI5eDTxEgkK8a3Ii2zieXwsGGY4TK8XrhXbM3TV46hRwlv4lY
-YMIlOK2KZblXSIkBHAQQAQIABgUCWHDvtAAKCRDI6FVhKXHMQhPDB/9/9Ir91uzh
-us7NH1PH/QPx5K9TvaxE7hMfrz23CmxMN8W5yYFu5ra8roxTYRmyc1FdFRA9gM6u
-9tL4GjHpp+fd0Xgep0NcQ1Almcy6I8HgpDNQp5F712gbEYKMSup8dHT8+IBnFXHr
-YW5eIAGuaOYt0477cGQSDXbPhATd3PtLada5T+VNQNEsbMNjtXzr/XqVqOzsSD1Y
-jKmE9+eec2uFxCvMA8STBLkY8ScGD1b3Kjy3yEPwIkBKHyEFcIObPq4GRiRe+M3E
-Yg6xwNEe3tDFxlL8HKWW61YHm5b6ulIeUEfkKYIWuTMJUQVL9vgfZVZSIeaArlL+
-fRTZEfHGGooEiQIcBBABCgAGBQJYc0x1AAoJEHpYCQiEevngRdIP/1T3/aBsFgC4
-Bi6haOIbYsgdubjMHRZjvVwrer9odsQDs+84ntAad3ToN4QmwOnhjnh2vzDHALqR
-ICr9C23gKSRiW9k6WxAhdNOuO/ktFI5OOE17HPU32x2Jv+AMd+jgolYNIo3P5usB
-KACFTB8rsYLFXXwMuOuwbZ34+xmOnNoRCVcBxOhTiFUoNwoI7Q6ZHDmkiTa9vPI4
-UkshJA+bDLPK1b5aZXv55EZ/tHl/at1npT1lJCVAA6RXqIeapwtNxxOemNRihtvz
-gzO0SEpZfUfjOTnCEfMHEVlbAjSuT8i/uM7j0PK9OTS4sqGrBDEJ71GfIn//diNZ
-5WxVQpj6jqIMabfDC7sscVbmVJTrvqVHcs9VtrPnpnCvUZ2kBBAHvbU/SN2wjLsf
-fSOX3TSsROzw78geVDdTLIHH2mb3qlKsOupGvdkNvKGPs/WNwUjZqqZmNZzgSSf7
-4QH9eXoJZTOAuFmJ9Ja69x+19XR0uEjCl7stxAPFa0yag2c3a5x0AhQ1TkgjdjqF
-d34dW7GpQgwDqAL/CDGA08ma0WyP/sxq/ppgUfThakOu8JQHqHsK4SymwqAaLa8c
-/NwQu2a0lxZPLbvhK+A2hqX+Z3j/7HuYFektxCmFSF/sPOEBx/yJIbTEqhwOempc
-mTQfg8PvUHIBUKgltzQjn9WqzH804IqvtCVQYXVsIEtpbmcgPHBhdWwua2luZy5h
-c2VydEBnbWFpbC5jb20+iQIxBBMBCgAbBQJYDHATAhsDAwsJBwMVCggCHgECF4AD
-FgIBAAoJEGplF2oPsc0LHJkP/1dBsfR9T/mp901Z5BvhLfY7lQpA1sALRtWaUgx0
-Sw1ewrjHlzipFXB6OWTwVemZzifDFk/sechnRiC6QYk9vG+hc/CLhq8OllMM6l5V
-tyjKUjqMMu9ie4e72/YyosH3p1GrWpg6oxL09VzCjtKT8lYn9fQBHKXzTtVPnwkI
-DdD3K856UaSQy8NTJPkzfZOkkCsY/Yx7cgxStOU2WDspdqq7rs7P+xz5t9Vgj3GE
-8ynZthNrF8Qb6F4o7Vv80i1dktK5a27OBIjIrXTHryZdQuNJYC2yKRRuD+Us99wZ
-SJZhQCVIJSdIv85Pt9420+bgHwX5nSQkn9MzEh5nh8rgFiBKFYku7VpcrwR6Hr1M
-qik1aaEP1f0vufBcfhsEubqiIoA2Ik204dBGwzrmFPV5lHZ8j2bg6QHoSVQIe38T
-cIRMjJm4TS/FqnVLnf5B2pcpl8uYFPLFynNlqEgSxTfvGRw8Grs4cuA4RfRBX8vP
-idkWG4g1SDAhcs8UDI/QfPvqqNDxsDePSnrAr3BQN5cH4CsMQv0TVWr0aE5dBxKS
-dbND1HV2k1jikGVK/SZFTjdzWgMxzSU2j/gStTbKPVXrBykpLmYXSCVh03WNooUr
-hlq00v79enF1GpDxEV4fbHGUhLdPh3y24CkRt7gkm5LbaYBDuxqSHR8oAZpofthB
-QQDIiQEcBBABAgAGBQJYcO+0AAoJEMjoVWEpccxCyhkIAI8wL37reQe7T9M38XG7
-RxQCzn3TCpx9MGprEhSaC8Iwt5Wl1BKFyLrypQE8fYRhktkaraubEz+GjfVmHpWQ
-62AQ+HwPSh1MsvR/ZUgluIOPPs1aXJF30mBMlfP4gZ4H0CjGHT+inUsEU9axETTu
-THXCaN+BjYHv21zyewSdkU+8r9gsiLvqQnOT8xJrRXJoQl9DFRVOS/hH+VJLv306
-dfowzONAf0ToRaNaoaZ8vq7boov96U5lBIhuX4WJi6PuS9U8wvsRYg3XYhTSY0nC
-JrjJcWJMBZtAnJJAjf27wNGbT1CuLNMOpXzu1xYstujFyqzRo/iN+dOlqB39EleJ
-NSuJAhwEEAEKAAYFAlhzTHUACgkQelgJCIR6+eDZmg/9EL3qCgBf5wQc65uky7Ut
-IXaBeMmM8Wj7ZwN097ioF6AU2369smmU0kjmBDQtlFIxP0026HYTa38WtHQ5ossC
-Z0F7NdncjZXPH3DyyP/2mSotdBhORtZXjKWp547fpT1hX1/VnXxRU7uZpBgMDi82
-aPSEK66qYLUmCv1yWGvRl7y5mezj0UH5ZthOCKsFFJBVJ5AbOyRglHyGck1BxoIv
-wXUGK5IIfBMgrPSdKIeb/2bkpIdcOxZphP770pBbcF1sCnNPcXNxRsLxHlWhgS4e
-zq4OSzX87u49rKcS9Vd26vTVOHdc94My1n3pe6TuG0tkGnOwNLabSioLVX2V0Iuk
-LUThal1kpaW28nleNSwu5MeU7TT58OIvjzZuj6rDzwmBna7bV6eipe/FHIXYGo/q
-u5ls5tIUdzdeMx6PQqaXfSbr4Vm8OgcWgNxQpMMA3CtjIlK3ExpyHenoaBT0Cqvs
-LJEum1Ee/6jEvZ9Go2+kOabYwdOa50hqdf0C4urxox0AiHiYE1lrHEiH/yo9jhMJ
-0E1YFboRyVgSU+ZvuNZF8ZXmZUVFuKN3n4A2tgFUFDkT2erBPxdUi0/pg/A+cpzE
-+IQjCsURlX+zeko+7v735mil/tnmP9/h4dDDa2nPh/zKCRrJEYm526GsX/ejZseP
-lWDb7QYtk0aPkBUnAds6U+C5AQ0EWAxwEwEIAJILxPHY3dmmmonTcC4MmsE5w0lT
-3TddOnmXfuUGXQmI0IM/j7KCQJNTLPT8rlgpBgl/K5WYzmrTJ2qFDryeauaXGq8X
-FEi6DlWpoTtVaGSzI0A5E63EaL0ujoC6Qofa8rnZWHW6pE+Yrjiq0HX5uTwMTVge
-6G3TRcHUDC7iiMi3dYq5Gkz+hJh9uyiXzZ0+3VekO83V63ZvF432pFuUKnu7zc1G
-Z28AaIExERLrJXqfxdalAVORFh/vDJWuiY7PP2bzV1YBbkmzlAi+HcYxsUxL7Zud
-P45UiucK0kLDRO9NffFnHIwS5oK9gicJkD3Z+uakfAkxdq7v/W7XbO4ct+UAEQEA
-AYkDRAQYAQoADwUCWAxwEwUJDwmcAAIbIgEpCRBqZRdqD7HNC8BdIAQZAQoABgUC
-WAxwEwAKCRDqhUPFcPr4BCZEB/9T4GiPb/btnfXSPXjm4+GHzDXX1dzBWoKmBIBT
-DJzBA1ZSPBs3Zxs+0dylG6nvHhc09cpXXJgiE1UWIvusOLVmT9mYi88Yh200MkHJ
-yu1Kyq36kNHLIXey0G9b7cK+hBMkEfds1kJlk0UO/Sy480VqWrPDUJIj/RB0/x8v
-uTMYnUYBcP9dUMo83LVWgLOl74kBtQpoNX0OVYCecZ2WIs2x/UoVExeDWsLod8Er
-BbbdcRj97ILwStHmnEb0f+xK/7O+ySz96nHrepfNSc231PBHJCR+RkYJOb8Oh3+5
-WMzkGlO2axLzzELobhqlARdvNXydo3KTeY8kxhxWtYOT3pIfPncP/i4X9v+DgSkh
-HuHc71kKUKiBetGuCVAFjZS3DDNKNvRyjJmAXmKAFnkTri4yu3+QYEwuZUeTBSXx
-h1CZCtLqO7yWtOt3/teH0sf8w7FcExlpfD79k9ysfdpAVKi1wvYJeYE2+/g6yit2
-ImhN6gggWj5j/xXI6CtTg90b0wL+M3L7rU1wHdXN7IDqvpwu7z7sNeMGLLgzUnAR
-xGjdWl6G4nJM+xW9DwdOCAYS+vGqa/8L7h8B10Hl7xKk8uzuvnCsGyD6IqkKUGMM
-FUWnZIiDYaP1OihCGGVNLWzvsfGWdPdf2bu27DDSi4+NtVv3yeQSa54EC0QRqjrp
-irE1d1YfXRQqiHF5m94JCDMdp8iIOe/Ygt3FzpzGvnDqMSe1t3Q6kgL5X7eX315n
-gnLmvWkZlgSwDcDMDcZ51gtRYY2kNAIhVM+OHN5sAp3dUEiXI98y0dh+uGED6spz
-io+XhI2rKl9TTGvUy4e9vYJTrBhgBKh5B9yp3FvRA3GqmV9L4M5QLGi16OjhhZtG
-wLQSg2/xiSktqGGUhBmNrCuZpm1FOhvTsgqDtKw7Y73R40ncwuF/8BR8bVETQZ8f
-KjnBafyjDB2oReaf1x128DiCqzxsUFX5meBYq4XnzHAe/p3f2eg6iPzkN0QGi33A
-560aWMAoMEwYJdYzmVemU54z6gWzQUL8uQENBFgMcBMBCADbdP0cslUGpTkw26Wg
-Dwoq/1IuhLHRZhnri4OkyKsuscgmdNomOpeHh0zzcYZwzz+Hpvt/4x4fOEGp9NTv
-LCQf6OAEm4owJbz8BYpGifBof6CnPhTuZFMAHIo+H/HbYHZJxipcqARahHX88wBI
-kpV9Bu24qq6g/pkemDN3hWwU0Sn2VcJ8ETIzSDfJ9hVFKbzCnBnt79+Bi/e3vaoP
-hDCAWekicXSmjLbwHymAelxt1CJpQUHWEKEvDoyiY6B+TOzUWPKm/r9PDOc/eM/n
-Wdphees6VnCJaHGCE+HlYv9ifIbcpIMSAQVojT38mC6yt69oexrUvtHtjG8IYVIp
-ozhpABEBAAGJA0QEGAEKAA8FAlgMcBMFCQ8JnAACGwwBKQkQamUXag+xzQvAXSAE
-GQEKAAYFAlgMcBMACgkQyokKX6Cc/YA5TAgAl5h5XUOfyQ1VAr3Dsrom0MUEO0JN
-/Cj8uH58yhkcUAigDhdnkAu2GtpMgz3/XkeXQh8vRZrFdoePy5/YYflksc2Pc5hR
-f0CGYKtr8RQkKmjBpdppJcVVTIK4Azkgx9KkdGmyWeFmUENn2CD3/xRsETOff0PE
-0QQHq4ArUEsiqgf3YgJHibuZUIPl0bmTvfDHtmLqZKTxnv97OLgOIXOegkE6wDFJ
-3RC9KUQoLLVObTI+H8xwA1KXYFyaitU8TMQM+Hl05bxoD+h33Hud0dUqOTTWG8rN
-nid9Ne594nGal+kqkNVcEXlu85iUxeU9AqnAlIXh31Ksl1rsUmdPJDtoR92hD/40
-ZpM9N+E0s9AZ+tJKOZyxf+ZTx+jpvL3U7JoLmCGQg4XzlKX0A0n7ExvricAD8gfh
-76qpwTVg5e8UZS9sPhgRl/d7BTigZS3L+IbyUlRL5kG0wIMzoM6woMhfdQ3qhoDI
-Y5QJig9odPE7UuVn/WTSYK077kZz6Ct7RsNM/CR8D66lDKUB38nKhcXbyy/WfPmw
-NuHRShr3qw0QqwIcoEA8sWmOlbgHBnI2ulCV4qpWwSBOvsFZASCAqlslqcfXLHz0
-t8wCyiqNCY73SC/aTXsnbbNWgR6bFM6Yn2/8m+ihGl187yCBgf88o5EzJXiFMQyG
-0x2/rJJvbvBZpNqNBcKG116cFnFP8KOCj6FfuClaqZjj7KHnX4QlUW+Y0Iw8E5ph
-1Y7s1hbRoCzcLeyqRgzUKOX13rj8aNdGkiX84TM5xrc6H/QjfmkO3BcKG1Khto/p
-YMzMrKAREAxIQ2x8AhaXZVEmgmjys1IBb/mWTajhZhPDDlWaxdE8YsgryrdXIDVg
-sgiW1KorJoMy62HNL1bhc3S0ifOPqIxNuWXkFH2GK+fWtr/A7DsnWyWEGk+d5CkG
-oxjJp6kyI6lyfkUmZRfMgmSDxBx1nq25Or9reT4VOK7Kd1ckrLDP3fcmXBpPDlGO
-sOpznL6YLU4JiwHgbHheWdSmNH2JWMfWgwvQfmLUfg==
-=Wk+k
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6B1B008864323B92
-uid    Terence Parr (ANTLR Project Lead) <parrt@antlr.org>
-
-sub    FA6831EE37606774
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFTDM4oBCAC9cUMAjkP1dD7tt0JUI5kVORKagn4/zG6+Y2MUwGgJs481xsFC
-jXPuNZMucAVtXmw5Sl7FbsfSxR/9jJ2pnbXL918eRFbUqY4LnuOTZjcgNWo8PWPc
-0NLmqoLj3HXaLrpB5cRIXaQvzmfoWxt8o/ZWq1zSfDJDePuQb6qlWmnoDz/S2YJb
-f2AILPsljTE8kYIBHORGilKtUXtQRjs0SCqnbx+DSDAVKSnqYHWDMmxgBMMQsSE/
-RQ/EZ7I4eGRLLfONCxox0fuIt4kOLuMNqGWQlqiG2Kp6Uulx5SepToSrPZLyDGVA
-MgefKrKe/lzKiLeppmx7ELXOKBXlIvTFZBuzABEBAAG0M1RlcmVuY2UgUGFyciAo
-QU5UTFIgUHJvamVjdCBMZWFkKSA8cGFycnRAYW50bHIub3JnPokBOAQTAQIAIgUC
-VMMzigIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQaxsAiGQyO5IHQwf/
-VuVSUFdUJToUScygLSxS1zp6dTEUXc/BfNXD0+7TVRXtzNKNUUwLYRlPRX5aHkUV
-d3+g3QiD6DQIVlSH0INCOto7/EP0ENLbC0Tm6QGhhDg2zO+A1OLRLwXFAVun/4Wm
-1eV3lakXRBCE/Fji0QxDWTYXakShmzIyTZCfJB8jtxG6EYyKNSrOMM2HBjJY63y+
-sQWOYJRz7Y2pv3kpwzPPQ8yxRSsDkJSKU9FyzBZfl1F1UnNkzK3BwL+CyKOAh0Zu
-2u11SJ3gUF0O65Y6FeBW7FVyPYr2IlMsYokr6Ry1pmndehQzQB3paEGUiMO4KWN9
-1OZUfcG0LBZB/FFBmVTVYLkBDQRUwzOKAQgAy86UOqIrhAeN34v5QKv2ZGWWNc6r
-Wi7ieC+dnx2D4kmvn+BLaCX7hJCyNL1ex2TvZlhXt8cgA8jAVgN5+aHTaJwpcTHU
-pzx2p5UIe9oBAEq20NyjF3P9o7lt1C5V1b71EKMTwTOSfWUcK0Skz4G/+gkhNjSV
-fxYwZO1v+Ce4mRCCRi6x8pFGHdyukVR0wJ/o8yKvQijUciGMEbnpDC76N1eAQgd0
-wo79WWGZty+w/qQSknXwTTJ028LlumuVV8UlYxZ/eYYSrtK2t2w+6UG16TqHATDF
-lEyShzYJCer2H1fmSGWncZZ4ODQCkNzNWirPn+q/Rr8CBo7PlMUV06OKZQARAQAB
-iQEfBBgBAgAJBQJUwzOKAhsMAAoJEGsbAIhkMjuSZOMH/2V3TM9qXvwiGsmO2msb
-Ita9b2MbvdlIj7EfI9rt2azPjYTLiQcYWWntKN6tYmB61kK3qzARwcW8pJQ0FiOo
-XEG8jqwHUz3bIxF8ftbq3peLUJi03PDQoNlTpKRuj5EvV7M1f1uZGaKU5W8+BVVx
-Oq8exMeyDU+8PifHmW9S1iFPqq0gPqjljlzzcIZH/JM7pq59uoj3YuNz2X3PreQP
-XVaz607JXUhxJ4MIEqEy/qjD5OGZRKQr44eSxk7938j80OcBa/1IbbjvGs5oi2IY
-gEzpV3KGDU+kSDHVuKcwloU5qMC1Vvhrkildb23wtFBRYIpgke6HBcaQOIivCatS
-bBI=
-=yW86
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6CCC36CC6C69FC17
-sub    C694465FAACEE66F
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBEtrDFABCADLXGAhjPxdh+naC6XU5kficZYEVAURNRa8MTnaMKr+31v2zcAk
-nyqyjihcXGQBCeaNsz2mQkc/MrKdnFNVSwp715JcmcqDJGfR9aIDMUs9PvoNkkqv
-IDtx9Tn73piqbplT2xQxd7HjFvaVuy7oXI68gwcyAGDvQZeiFUodcbAsKrVwFT+R
-94JU6UODFqE/Ihq15Za8Sc8WhWitm8XTQsCsLeh8abGhkvNEmRLi56fh8/Bz8LHv
-8T7r8zkROoQFlUEYaOR2wH5bbipww9+HEg64hrcak2w5smNt0NJUXZ2O1l00u3sF
-Qdu54hM9nZ51xxcqvo+tGft9kIr2AfTrJ28ZABEBAAG5AQ0ES2sMUAEIAOqnjBPR
-FjX47AxlF9NJhzOUECJ2QaoezMOcKQ7RTnDhOiDi/Tzl0MXJoo7ktkeSAMlPIXlb
-K/C2qrM2hT62O/5GSRy1dPErTZx53mNIWTsT0wjQCgxeiAs/+5bqceahRO4PES0L
-J7VR+wiCUP33CIK/Ea2c6ODB97OSly0/RY97jWbM1xwKuzeHH5H0QKTJky1CIdg+
-avdfeeHBDEpCi3BZA55JiAKMuFNYl+Q4yf/FoYI0ZqKFhIwK0OQLY+unIPlX+qPy
-B6TkPIj9tcK/cebpN3VcFvNzVkcqYXdxwUU9G0GyzC3Be437oyzm3SJWw1DRd2Fj
-wFeiL0fWOjwcfvkAEQEAAYkBHwQYAQIACQUCS2sMUAIbDAAKCRBszDbMbGn8F0LE
-B/9O8wwEDuRjidsflZTopMs2drKS/TN/EB/leBFsOqtw712+dYSNhM/LJVZchWS8
-y0RLHQMAd6aX89ooJpvmkijJvJhB9YtuHwmGfT40uco7ATqbo6tYW/aA1rfOs9HA
-jLb1UWQvEsL+96WsiQRLwIoX6AaKebG6mLYikiKKji4LJRp5HVdXpTxRaX/nSPSL
-aau62V7XKJXaVgFvSTy4xn2eph4eRVACKym/psNkXbRyj1maf4a1sdq3WMdiDRHS
-n3rRKsUGVv7HxE45vR7W7hqN0Bna4VzOgNEocRCKO9pDEiOmXsKXUvDJBOrvTddJ
-VHX3/m585HZda1drtSgEv3Rs
-=VojG
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    6EFF5EF5523052D4
-uid    Thilo Schuchort <t.schuchort@googlemail.com>
-
-sub    E2F840B227D3C024
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBF2ClL8BCADs2bbaF1ZMiMkTUUb59NTlyAbOOVWoIh7cnKeNjMWBUTP0kLFI
-XpoKiyccQLP4rFdbP2yI6h+LJR0Kj/lJmKpCaAooNlooxfIyPUX5TMvDTRutzwBO
-c38DafLBAJTUl5BMYsbWTGSvmpC3/qmZ9uJAQH6BVEQxmGNO6jpPsgi/YA2AhrN9
-w1F5Pm5Capc8QQ9fEj+AohXGtpOA6aMhnPLjJ45h0VEwYskRIva0AoqbM660YVi7
-HZPNEqspOtmCrR5yzvRmlDmQQ4uKp4InSQ2Sz0OMw3G9cuZy5AzfAL+/SG+iL626
-S1UeIGAjsCu2GGIFDVRuj4KvfmUZz1H/US5DABEBAAG0LFRoaWxvIFNjaHVjaG9y
-dCA8dC5zY2h1Y2hvcnRAZ29vZ2xlbWFpbC5jb20+iQFUBBMBCAA+FiEEKk9V2c2l
-h3cx++dGbv9e9VIwUtQFAl2ClL8CGwMFCQPDI+EFCwkIBwIGFQoJCAsCBBYCAwEC
-HgECF4AACgkQbv9e9VIwUtTFBQgAt+ZETCausF/UT43FRFa2Pkp+gXnuvY+pSiiS
-lqSP7BvVOvTFnYtljLLufK/O74/MJqGYbiyurNA6Zrhe3yMjQqCQlYGuGBeo8Ssg
-0RC+Z4NJPEyTwrx5XYYLaDyeRMcQwV2pH6sWXc86TZg+6gBWBHrvb1PDBFqd89hd
-UY0xI9Vyc4VWTpJCshX9qA+Bjh0xzmxie7leZo7ejF5L0ymPuROZz9VquxORHyE7
-DAqaKesgQVbmOb1Lc5Vpdy70IIVlscyLIfFycTra31cnxPZsb6Iak6sed5VFM5pc
-9qYiLsNk4FyzEs7w2nmlDjE06jmWWY0So76q2IddcNYeKSggV7kBDQRdgpS/AQgA
-0x3w8TNxkGuXMEXxDcRIXQ54KRF4upy8P1exrJPenVutDAvNJeHLxc/uwrAfPGcR
-/DIJCWLbQv0T36WwjQSpW+VBxX41I5/YRrp1BRqUtT1r9Fx5KodpG+c0Nsjs2qSu
-ju+/9RI5Tyu+fO+bgYfuOfPq1E9H7POHu33Gz5Fap7ZB7VmRPw5uAOU2ev67Qq+d
-cfcKsbh0TUwkErGdzp5HpcspEtHxoQCpc6ZX5Ttoj5FS96vN/VIOnvwgVjxNMEme
-CjwHkcXJkkcFGwkJC2lpZx7y/Uv5RPjeKLoJoKKHofRutL723mGORe/uj/0pYfLy
-gfwtaT9kmsWZbZwNCrCuQQARAQABiQE8BBgBCAAmFiEEKk9V2c2lh3cx++dGbv9e
-9VIwUtQFAl2ClL8CGwwFCQPDI+EACgkQbv9e9VIwUtRRxwgAjqQpC4OL0igysJgI
-xcSUAdltJ080Po9eUcrxszIakH3fYeuN+vtKi37NbTI8BxltbXDZC3JxF2Vqxkqi
-6ow6ZTk3NMS0R42DvkBjO4DGvpIF1F+4rkiF5+w3CJHHyEJYGvBt4MGQ2Ivrp1rs
-C/VKazgG7Bkl160msMq5TMUAvVOuTn3pMljVUcsQLDxK8vAvaI2iox3dOtWj0w0r
-dc3OWmufCl7W/RDicP1Xrodm2QrHZXftDEMr6qB+HvkesWCnc/yqCuCr1UXqsTsJ
-5291U3pZ0RCl8aTFwloSctwwQvGxWxT4uXD1beqJ1tGKyoB1kzhwXnzuCBrzCcmY
-h3cm1w==
-=WIxE
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    72385FF0AF338D52
-sub    458AAC45B5189772
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-BemLeqNijrvozak+6IJUvgac
-=NN0Q
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    7457CA33C3CE9E15
-sub    ABE9F3126BB741C1
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFIXyRQBCADe285y3Pu7KzoKyP6wqeNXtvvuwMatAmPm5x/i+S8MlryqzsYa
-x6twUmXV1yKjjtGrO+9fHvTOWBfSSP+fP9KTaTQYSasoJq2Mw4cQDy1i0zrxNZUw
-N4/BiyjQA25sdfaOolhO0sFlZuTZpYy5wG72KkA1ygNq0L+8aBKhEF6zDU61YzCC
-AxjcgTftgTeeoqkJtYa06lNz3jmJDN+zUQignfRa3ymoGtFHTzoXR9maE8RWDty4
-y+DY+8ibdGgSgKPZ0byTCDyNojgU1YTlADa/1/NY1ShYg617O1xicLNo0JEJlf2U
-Tu4Ymql36+xSkYSISU97Q6Utgq27XMuZvDUDABEBAAG5AQ0EUhfJFAEIAN9NHRd2
-bYP/3CDi+n1ilSChld0NR3DUBgS/AdqQ7IoAUfj7skyI/WyaMdV4uy6vRh5YgNg2
-g01nd0LLZR8Gf2Ck+D6F88CdZaTxlkcxHV/dXMZ8yBO+0D6yFRZEL7Imsv8Ig4QX
-OVwfuiXEPk/Ef5Dy9SdAVhcoErTGGR6BOGVVvexGtBwefsjMaOG0khkRbWIQ32Wx
-fUFuAv5XBQ0ckLrlKvYWUYhOlXg27GtFKH2EBBF0Z5ZWu7gaBFwSV0oLp9EWcD+C
-+WEwUSfBdqfRJtyXvgf4kZdwdQ5caM8P2/Sdncl2l/LU1At2Smc+plr6zhIhDlLh
-lrzKGa16oARSBdUAEQEAAYkCPgQYAQoACQUCUhfJFAIbLgEpCRB0V8ozw86eFcBd
-IAQZAQoABgUCUhfJFAAKCRCr6fMSa7dBwURMCADHrqwRNHkbG1QsXJr9oUK6KVkL
-sPhcngIhxRLlqe89omg9G7eGNauzs2PKsB3txotCFc7ROVNv/TAuSDYzkPos8G46
-p3bGesjfJb24zc6GMT4RGIJoh1oNG1IciafIIHjp2ZJHRmEDwmvZG24OHJ+mlHLj
-aedtqlWu+zwwhH2VZrI/U3gW/x4imbk9UyyzciEIxrAc+fc19xl5PkUVcSDVC0cA
-qGpeZz8+SxFaf3Rr0aGnSbeuHRjNupmoxkQOAey1ztmdWiCPf5RFfmFD+fENh+/x
-qYiGorYpcIN7UAsMkvD5UHc5ZG2tTD41jM99w9Lm/xHJ9ks8gNwZESwIzr6ABKIH
-/1ulsflI216qPz5o7uUxlTm8NfTyATfCUuZEDMYGOjDQPqQa8hFebqjWWYBUq2Sl
-aKD2xMeEuEXV+M5k88Cx6T2nvaZWMsrD7uGj+tTsFaKBGxP5p2OSEWOTETKKv6Cx
-7vcMTQmrqSFo47bFKlNSs+aVM48UnQeFtTDyOhwa5jvtqtst4eQHwHWQ99BK0TEy
-mNx0vF0nPjWA76CRrfopOwXKdxJgoKq4MrxE92ot5I82AZBPeiWVJ+6wECeK/GoB
-IXZ5jEUqrQmmzIboWA5G5PMJ8egzLJNRJjTWHjCWrUTnwNcqaD4/qZxIlW4Lt0uv
-Glx6pKOJQ05u+9X/BzoVWrw=
-=ajY9
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    79752DB6C966F0B8
-uid    Rob Manning <robert.m.manning@gmail.com>
-
-sub    AC9F6F1991913E30
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-1v9wlHhhdbE=
-=R3mQ
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    79E193516BE7998F
-uid    Filip Jirs?k <filip@jirsak.org>
-
-sub    9F7335D63326E7F9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFWdcSoBCADK8j+0eVZKUGctZo/VaJ/K2Wppx4jEFgih8xiIWREQ9B3QEugJ
-mJMWZHhrnHB+sjVx5No482ch6sVhYmC+VMyTdzepItZ8beYa0pnNGJnrFT+HcTOS
-g21Ef5e6BRORNho2j9YTvxvjof29XxU4SJFVgffs48jGeJzN1EDmOz4OlZupKGU+
-98o+kMKCiFjcf6Vu03asuml97b2fMOJ09n+UQVlZbBR/Yo407ZLkL2Elx47Fz+82
-iO+M8w2qNnxT4PA/TLgaVzkVHaR/JIDlQQ4DfuyloQI1hBpMB8f60oukVr5dBGuS
-1dPZ1H7td975sLegWoj7CCOFZXrDzYUXwwXPABEBAAG0IEZpbGlwIEppcnPDoWsg
-PGZpbGlwQGppcnNhay5vcmc+iQE5BBMBCAAjBQJVnXEqAhsDBwsJCAcDAgEGFQgC
-CQoLBBYCAwECHgECF4AACgkQeeGTUWvnmY/Z6wgArX9fzySIVWcqFuhaIlRlib9j
-1qE3sSiFVENV4NrCYv+4ZUQUEUvqwX0F4ij+Au9fzvaWb0gT02ErHYJ9UowUgUYb
-IdHsifoGh05jZdiClXJutcQHddM+P+ReIAS4/JDlXza1kqa1RRvDh+OtsrDkL1MU
-a5T6/KbCWzAj9+96vqa2dLO0mhyrPpVX/hF4tPY6ltGYEXA9N3c83rFmaCZTNM0t
-sEQniQMICOMZul2dKJ4Tev12/G9sd4owtlHtAtv0+tFPDMPQAXjToUo36q9MIzKE
-Cyz5sX64QRablAJc7QD4MFI/7J6eQdpSKM77QaL48kcUAK1j9nlXv+oj/1d437kB
-DQRVnXEqAQgAonYI6XgMnKL5jj1n/3kVxKA+4m0znSoMutK3B2D3geqTzFWlDIWU
-EOEE00U2mBMPUibQ9orbu5IYrbXLR6t0QORJiHudP3LxdtjIqXCagdzCewJ0Kfvd
-pR/a65dsULLu4+v8R7KBH+lBVs0aN0z8e539ZaoGPCVaWliybbHwcry4tOMu9wyB
-dPlt0pkqQ7y+YerXgHO+hc9urQVY9zHVBRe1J2vqzFONitFlD5BoT386pz8tBi0W
-32J46nTgReukzJWLbtV53fxYAFUroA7Ydy2xYKQ2yVqBq9NraUNqbdtlEhJRDS3W
-eQs4ittg+oyMumIdNjSbUlbDX0O7EP16KQARAQABiQEfBBgBCAAJBQJVnXEqAhsM
-AAoJEHnhk1Fr55mPAAUH/itFMvGq/ri1alRXhLbhx8/HmwBBkgS8wCu/oIIPEZ4W
-jRB8EfEYAMbmqtmbGFc/lL2QSxvqAcsUGFlVqRe+Ux9LilQx/84zvD6aG90eTzfF
-pNUHkgBOS7poRbDggVaCSuDYKiyTc07hHNl4iZON3VSiOaXf/4rzbIzv0n0swc0s
-00N1IcwI/pP+74t+tmfH4PUjZwUC6cXHMHSfvImAO2hPMAbd3rJ/ZO/ZVwjNocjR
-5fQj/MSOgl5hiXEkuBdoqoD0lTJMYCwPgwPGNcBr2xeXOKxeIlbYGwh/j3AsK0Op
-uqUJfZ5wvADbdmco+6Piann1q0WvhfmRaie7IPG2tB0=
-=ZbfA
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    7A01B0F236E5430F
-uid    Inderjeet Singh <inder@alumni.stanford.edu>
-
-sub    C3E640F38D845FA2
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFZUsiQBCADGmoidvh3VvXWGdwbAtHPtDPKEebE/MfFVO+QTRbjJxphzKwAt
-mxHruikafaSTnC9FWizj99e/Yc45YZHcnt5Htmy0a7DSOQXL37rrnieZxg86tYmC
-4PxvvzC/s7xF8wmxDo4A+mRyoSF0NF/fQTZAr3ri5l0G/vntH7w8AbiiyerpLobW
-/TqQn1tpMh7XfZZ+XqQKANVRECUiCYT4iJKWMqcBpLZW8aa+iYW8yCQ1xfmNXjrx
-jpTqFCiQjvwCw4dDffNe/A1Dbq0wE6mw3YHW3OC1fnLiP+TEM9P9v02bZyem6uW2
-+krrToLTTHSqIGF9wUUF6S3Ikrw2EtJiRQtnABEBAAG0K0luZGVyamVldCBTaW5n
-aCA8aW5kZXJAYWx1bW5pLnN0YW5mb3JkLmVkdT6JATgEEwECACIFAlZUsiQCGwMG
-CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHoBsPI25UMP6r8H/Rq70+JN+EyS
-6iK6ilytB1vY5GdwBzAxpsRUhTL1lXSqgjCXy/6sgrTQv/9/EgQznm7hEFVkwr5Z
-CacXeajvFJ3FVtjgn0aLRADp88Ry75DsttjwV5nIBNvFBJbydvJhfruHY8gzdUv9
-yOHAX4qtoNDFRn1HDbNsYMlRSXgjHX0JvBexdtZArtsd3aLOM4m8r+t1GFM6ePgj
-CD1q8yBH2RAIETAId/jiu07AqsJXp+UPBgJQi8o7cEtEE1HgkI+IoEsZXFJldRqF
-GJS6eKS8bpjX16nHI0SnR/gtsWpblAdZsY0YieK7o2pU8lvlCFffaUxXDOP7+BCq
-8W29nfaD6YS5AQ0EVlSyJAEIAL0+8UoJuUsC3jDE60tmrApu/hK+dCbe5UJnR8z9
-3aQ/1AfEX6So6JZzBlxID/HCOvRjJbauL6Lrvw2xgSnrnOzRLf1StvBPASfJk1Zd
-o9LZon6Xofzg34qCLUQLkDyntgXQaYF3Yw/xfiqqTC/yav29VTzKnf0Nri8aXGsH
-OycJ8nTO7I0p4xuRirFu7Bkvd7bK99/tDxttYkvUnG3BUGlr85UX4uODh3EcVcgV
-QteawYbmsf4F00IBoTAycutCOdbP2RAgP6kgFxLcGz4zVqu93QjSjEdTegF1SUXc
-GpzvDR8T8zRsQbBCZ32A/UJqmx+EIPPFHNkLijDp+f5mkJcAEQEAAYkBHwQYAQIA
-CQUCVlSyJAIbDAAKCRB6AbDyNuVDD2xjCACqL670xI/26dWsz66ZyHQ2yJI7DNQx
-oiU3OZs2bfrRZxLpGP9Q6YWCehb+iucvmFFvLZBoGGWzffmVBisD2Yz3mHtF3wLx
-+2zJXHt1Xz7H6W89M54T3qUhQTTV6pl5f5/JCXK1DP9iC0y453ORY5B60byrGIUv
-BAv+qWXBPn3ECZ/3oEkErb5ZGof+gJjffqvWRAN3Li0WBRj0ldXpJoP/YE8naDJ7
-UdPfzcnh3tnOTfUDvFer1Nh00ilMmf6EYznRwaN9whc9W/1HwvDeXrijrc6/1U7H
-p1r5b1DddTtx6aHxpWrcwYw1yXGcm82fjXnRdomz6nBt2DF400YubAZR
-=2qwf
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    7A8860944FAD5F62
-uid    Sebastian Bazley (ASF CODE SIGNING KEY) <sebb@apache.org>
-
-sub    C189C86B813330C4
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=Q+g9
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    7C25280EAE63EBE5
-uid    Oleg Kalnichevski <olegk@apache.org>
-uid    Oleg Kalnichevski <oleg@ural.ru>
-
-sub    926DFB2EDB329089
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-ZNfGiQCfdH3+RPBbKSQofz2bGx7/niTd9qg=
-=CP3a
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    7C30F7B1329DBA87
-uid    Ktor Release <ktor@jetbrains.com>
-
-sub    72FF58594F983302
-sub    3967D4EDA591B991
-sub    0588BC69A286FF16
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGNBF+TCd4BDACbIA94MfIWL0SpvZwBddXgx36Lp9GYOWNgGoQCWSvk9vaMrLaI
-rEll0xnoP98CfBQYrVSAmHDMhSLBCjNB3V1Sdz8GRdOG7HUffF7Cqwbm3Fxo3H/h
-+Tsrodv23NuvKsDpgglUL6nJy5e/FO8y9dcxLXRRVdPFDhJubi08SiUJy9FQbnfA
-yb2LuTzXtjDmjEsMZpdpQUlQkk0xNDkrrq+2miwxemVd35cnVQCFP0K7c4T0ksGg
-Rf9A2r45DBbPfvwTL+ZbrGtCssUpCneWhPl79UsMxeY+vJjEggqqqRqbHRn6nOQd
-3gKSaEqdALZURPzvkKxLUeUUtMk/tkFdsNe/ea7edk6G3MI4dbUY7p0XLS54S9cB
-1JUAHNEFtuJQKGWNuwWO58Yun1EBtOdUEvnIIoQ+CIN/XeKrnEIXE3LSblB8BR3H
-bqX54BMe9AzsmDQtc5pUOm2pfvCoiv8xFXQznBg24dGqo2A/jMoUnGj6oRj7k8mt
-i9AdPLigldr0S0sAEQEAAbQhS3RvciBSZWxlYXNlIDxrdG9yQGpldGJyYWlucy5j
-b20+iQHUBBMBCgA+FiEEOUy0NsVpFvwB7qSnfDD3sTKduocFAl+TCd4CGwEFCQPC
-ZwAFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQfDD3sTKduofP5gv/WRDpats/
-AbkXtXF90tNmdLomqzrLaz2dmsmekVjHnppEDZAJDWgHKuqi2LL+FU+8RPZj91yE
-rln0/LmOb1gGAkYhL5HIdSKPhd1BYrlObYIvxoarEi/U3+92B+13621qu4GEV96e
-luRXXe85vncuZiwjwPQqmST8gsAD17AiRt71jUHCqQUhsEE3C/5btOrqvM0Bhh+3
-QDUEoJcl1KoQjkPYhSDP630jhgsq0E22Yb1CWSXbwlJZTpmidAKICurll6YFhHQN
-wL5CLj+DjBJfkyC6nRDK1fX1IyU5jN201iDYMh+ibUclJFF4Lwl/ISlb/8NdhbPS
-SnNehscKyAK+xZ0w9CVfTVOIl0qx4SgwfoWu9fi02vQe60fK82usbrNJl+jWHAJY
-FcZjQ70cU0JpFVwhWr0ffOLD9A+HhiqzL7SBASapY4w5yLSlqZ5BOKcZx7NVqtXI
-qPgmbrSIYoXEzz4HQb+oCeXH6AigT+pxZJXpyEQudIaBtC67Nern3mYbuQGNBF+T
-CpABDADRarOqvERlpMCJjNXGZpK5sV7Umndyu1rwVOfEBhINkRX1vzzFJFciIfWE
-Z2c+vSNnXZC+vFuAYtwnHqTWwyodHU+/jwHeEWQ9WcD2buSwJvpskSei7ZMSWx7z
-AGWM4ae0FmjJrVHEQhM1CgeDwrxIzJqoOhrC26IorT7bGB5M2Z2nNStGz9fen71j
-Neyo0fHvvy9xkcEWsfDd9A5V0odRb5y1yKiHH4Puz+o6Gys43/PQGzf2NBx1sjzQ
-jmJrrufvMIzRWrJwySYJQZkr/qdJyqbKZgbA/BWTmpN9POranNd0YO2/lbD7eiDk
-BflNGnWcb305VVzyZSD1kXXeLAc+y4cQugj+FkA/9Tv2c75sIhXPQAlZAG3ldj8W
-SiAlyyVuuWZh3eyxxH8J9LKDXJpBqvNvzucso1PQS2HzKhT98GxX45LRTsZo6yM5
-XAFgqw42KqTmcOy97mzluVCos090d25zYwCYsFoSaIX06wYz1GuSsW/JHXyUwsG6
-BWScgqMAEQEAAYkBvAQYAQoAJhYhBDlMtDbFaRb8Ae6kp3ww97EynbqHBQJfkwqQ
-AhsgBQkDwmcAAAoJEHww97EynbqHLfcMAJY5nEjYg5u3l9hBcEFTsqplQzucHOay
-r8tckOVr0hDC1twQQpXfpfx2+xlttRfDI8xD+/K9f+y6rDU2INDFiwCUyHERJpgT
-CG4w7/aZfyohYCYzCegutimYeXMXFM/GfG5u8PKcFLYRmFzdOVm3H/Ls1VO3JmA0
-DCcwnMikcARaOjZpOqLce7LGn9nwoWaJRhG3J3pB0DGgM997V3sbBYjzgj8DQPoF
-a7b6ulDmjXDSO/qS7EO8GP88lr1YyhU3ipyYzb8leFEaKVBDIOT7OiWow3t4BRvH
-pADrXRMLVnPIAzfS2l6/JUq0Hr0S7/kUvceuy4tmAPcvsCLmD/xkMpcbTq553gQq
-Ti9dAivAKSEAnT91cPOUM4tMlGwtEcgmjkSoBk2rHviIM+sMo/9zWl+Hs6Ff8nsY
-zcly9qWZa4xIzxxECD2dgoInjymsH6wbqdhqST3H3w9ctvpmDWrnlWU8Q0lsel1K
-bQ3GXn84LphgL3rzyP5ZaV8AlnWM70sEabkBjQRfkwp3AQwA2y+YlU3BFBIsKWAA
-VO5tItpLnbg8yZOl+qrlDb8daZ0CNuUPcI68QNpBagfqFMYI/+wwzmewyHtIHMC3
-c6jSKaNzvpTKfFIoIld2X4O+LKwVtMhJzAWuTu7xb0T74z5BlTgHpPXNXwoEZihy
-4L0jk2WEwPD/Sb1R/HMn1RAmQul1mff5X0eE7O88yh9ig6nef4mDTwUOybdCctW3
-+DuoXdFuZsvuE2UVU17ddJTmlldo4uDog3hUloqbbS0kZ6X2lYmDntJqLyUDUL3M
-tPbOj2XcWOmrpq5KS8QA0MNpm+W+w+UlyrYizYlUVmppm20ARH5pyFNjUbayycFo
-pXxFYzrv5k5jfWkn6A6SnshJEESHCPSEb7b+NnJkiB5JuZ80D/Z4GgYoAOTLjZPw
-1WVJ45NHtqUNSqiCqfsok2/UeTdcDZWdQNsOUj7w7pkOB+Uwg9nUf1eDVcneWjtj
-0ZJ5iZvToMDIe4ivKFoOKvWCYmpvi4xTIFNYvSC2NM5jUUd/ABEBAAGJA3IEGAEK
-ACYWIQQ5TLQ2xWkW/AHupKd8MPexMp26hwUCX5MKdwIbAgUJA8JnAAHACRB8MPex
-Mp26h8D0IAQZAQoAHRYhBI46ApBaGuZ+ew+azTln1O2lkbmRBQJfkwp3AAoJEDln
-1O2lkbmRy6AMAKij5SRq20bW41gmgKOFtqNwdjE1tlnhHj+BwQMrAWapolCRO+uj
-1EwFSHMEBDxYY1iK6u+gvXOtA4PeJa0Um3RFFQfaAkJveAQ2W1hy5TtcbEDW+NDq
-gGkhCAgkF7mqFC+DvKaq9JX2o6suqI4HVkDK1RxdH8gsAwJGAcmn0Vo/b4/L0/ah
-hxed9lsY4/EtbZ7a/CDAItP20KD87hcxbf4IS+cNk2Ai38R9OfJt0uaRrblIuUEx
-7yoyQmk5Pc1r0qMk5DUcEPr9q11e5O6NUyoAkageE3JTa0cGPOj6wJqpz2pMiykQ
-yrLYgvY4xiUCN/EATBU4zUl4q4DAsxnj+KPa+VhAp0kkWv3ta15h7atpzEPdng6s
-cET0Hg+NQ/CdJh+uv0BDR6sMSyjJ4PyjhXc/Ldp5Ap0nyyGNM79ziKjAitMQrib7
-fkzjyoluCSEWVaPiADoh6vIb67mJViRXdEJ8ZxtSRDhoGlz0UIZgFx7QVZSDJ2Xr
-y3I55ArV8c1MUgwAC/9DVKRv/dS1qE9qzWsFjKOy5W7aDKZr0P1lkRMeqr0wJDVw
-YTC3N7RbWsGr0uH3C51Y1QXHMomxYCWnHqnKYFLEjxiMbSbBSvCSz8Aom5TbpfnS
-jbqMnnRCMJwOH3V5InqyubIhItPvFF5rLUl6JU1XZvh6/nfCl7Y1ISRZCqKkNCdh
-y+TqpyHG7g43+oapzl2Xxy/lkuz2EKHal/cGIUI5g8c1tODEhT05kru8L1F/Q0HI
-qf5GOMruKNfN8sU7awSxUXlcjT5rYi5dsvYL2VqTTsbMgsI6xsoIcfoOLNs/SYix
-pT30ogl7ia1W0sufdCyFEkFUagbCfPP9DiTvCqM6ZqBRoSpYzsW9EG+B87J8WSVo
-gQSSEUie+OA8gjXqZbRgIPwVRMWtU1od2tSdXP4mQyxoOGSxK45hU+tg+mnN+DiK
-vSMaTyieFVbtDbJQQlFPqdzs31IjGwxUjndhAFnoHIVUTNhJTUCQjLNCRaMiiz6q
-hK58qnpm3HfWKkmMwiG5AY0EX5MKQQEMANp93MIZCWYbh7zf5WyoBUKaI7VKVWR/
-B+Bem5d2cvH6sPN/oWCQjBRw3CQGlMJAXeLjnsy3nSQpbhchX3+7NJgz5WiFSfbv
-ceY3T7aITFbSNbkvPFB/SMKds8Oed+NzapnoHnJKZWSzzPCy/28vPqtwrf4gMlgy
-VMctBof6J/a/y/MwnmvkOjAkk4lzGEVkIFOFelaXXMCGme/4XBv2w2mhd8A3CrOG
-lKL0/ANWprD1q318NFmCqUqp0i3uaVQD4mXiMt7u33MGq4O414oJJP3sh15NdX80
-4ahWSnyl0vITNDHF1oKIsN2XwJo38lWD0mP+7BBFWrgq9FpR76Mx1Aili7hFwc9A
-yQ+Qtc7kneRK+TZyO2JuiCI3YcI+lrYb0f0CvVMoqfV7lTirL98OvJHXUZWUR0XF
-Wy6CmVshdksPN4AW8SIVZVwxIg1OewpGnxbnK+93nywQj5ZswvDKb/zbmhGzVWhx
-tMh+qNKYPrw38DHLvPRWjdmxREQCsW8ANQARAQABiQG8BBgBCgAmFiEEOUy0NsVp
-FvwB7qSnfDD3sTKduocFAl+TCkECGwwFCQPCZwAACgkQfDD3sTKduodA1wv+O0MJ
-G58unB7kfMTfDfHe9Lf6DuZnxeRX9uGMOl8NuAJeCc9VN8uhiPpBZCiTodIJoU+a
-mav/QP1brZCsjCFE0RzdJSORtV3haBGrwLW348wAZrsSQy+ECqE9ZaBMrBah5fim
-8aGweJ+R+ynemDO4MOWPq4fL7jD3eVeZNAvuXvNBAuidqgtOJt7YsqpyXnp6VJCC
-EfbTgctfBgJgzqqG9VvVieKeGBfzPYDlb1yQH4fxHHbFTRxfoVVaLQOp3H2KJlCk
-0L7kgKD4V15H/fVw0nAF2rQjAH5XsPnN4/GmUtmDxZW3J0ljAlL36YSm4YQMqx9p
-ps4Kyf7rvkGlB3bD5GvT/oKr/Gu+og5BkB6GXXu7mYop3mC0QuNQQ1cv4tex5b8y
-HKQXuyCfPcRnUQCRIZ4/hgqsi+kYiAeXkOBGD7rhqKcOSBneLSMVmew0HoHhdFqg
-qotDdCmhIOaqFtfDZ1DOrfcqxUHcrtxR6u2VZWCGqMaAs/VObsFtKMUFPmME
-=/gGC
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    7C7D8456294423BA
-uid    Henri Tremblay <henri.tremblay@gmail.com>
-
-sub    9842FE565AA0601E
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEvsZw4RBADH20nX+H1xvMBYmXRj1Aae4dRr6Y6qI7QRWHO6Z7/dxr9bk/NN
-Yjq5KsVOQxZzloVdtqx75rznT7fZq98g7Nq9IeEtB6k4tnh6XQLhljJMk0a3mzdt
-q3VzdxeVbwCaPJ0zixv8XPTAH6MpRJUvP9XjzxwaYHrjwcQ1LslW4TrIzwCgi5rf
-jChLCyKcaL05gqUjl4lmefED/iqOwYZw5pJ8+X+OHUViiOB43wsJt1brAhPj4KgB
-ODStcE6WlHFKi7YzcYNLzYMebSGYn6bj65b3qNf6rybWD1hGUFK4122Q7+HCH9Ic
-J+rr8HwjGFo/yxI0/mkyaF0BthXYPy4WtdsdTM2kgx8Zr3Q2rSt1jBPuV3q8d27z
-FZMiA/9cWPkRx0RfAJmBPKmKkbBkEtBbNau3G7MY1OEAkEkRnzmnyyjr5IP84A7K
-RdjTCvkbiQrOQH00Ki4sHIg+9Xv1gDg1XLkFDzRARKA1TxjL0OeS4RWF3iia7Swk
-MOnTdhR50pjb18W8kB4mEMZY7duP4nwDfQwHMwbFZGHrjImaurQpSGVucmkgVHJl
-bWJsYXkgPGhlbnJpLnRyZW1ibGF5QGdtYWlsLmNvbT6IYAQTEQIAIAUCS+xnDgIb
-AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHx9hFYpRCO6PVEAn2zcXoOXcW0I
-7Ht0qnUs4ZMM84ahAKCAKHGR83czneSiWoCsXKJQo9ZQ3LkCDQRL7GcQEAgAthrb
-FDDbIGq97dbX1ZEwNGpjILdeumxZzaCc5PgldHGA86TL2V9iPpONJtv7/Csr1c/r
-vH0IA/BFu+0Kde9UP+z9JycmfJpIsd2Qtxfhn9R4+Td0VtN9NNkpt1+JcThbzyQq
-4UU82uBKwSG/wzubOI4Fn+7ypIuNgDkqK0STIL3ucKF/RV77PsOBeLHkCGKIVhUU
-fY1D51BWZKKB1efaVK7PLdnsi64lAhbaexA43dwUUtVwQOvDzJVtkycV2IMwXwyH
-onlK+4vbcwIH2BAU46LIZy+VFaI+lNNmR9+xeWH49oJYnMWIXif4RzvO1ag2KKwl
-G2sacuVTtpWVqKayBwADBQf7BGl4POKtluAbX3a/KGnX1YyibPT2e4pdOxqbKTwu
-Rc7ILIK/LVcejVuLd+eOF1QmjToI7Y3qjlzvtaxSemfkxbIQpdus0SyHEEAGH/qj
-NuTs8ZwEl9tPPrKaJHbJ9kQrlDPwkufA0NDAXTE76UhcHPY0DeykAKEw2ravEqI7
-Y0nXR2WSmRLFChmQ+aNTm/9UGI/IoRdS/dgo1eaLD/7RLFeL5tGDe+2nj+B6j+52
-nZEmaRCWWU7O9jYL1cQu5WTurtneCLtIqehLsjuVz9ihBysYuUcTOV/6W0AIclQo
-MEiFR9Kyv0owDk6LtX2DgibJuAvvLlnajsiGm5nyVh3G1IhJBBgRAgAJBQJL7GcQ
-AhsMAAoJEHx9hFYpRCO6iXUAnRcLw17lBhe/WcKFRkzETSxaJcjIAJ4/P1NNOn/e
-ScLdx27sje7q3sBENw==
-=TjvQ
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    7FE9900F412D622E
-uid    Wouter van Oortmerssen <aardappel@gmail.com>
-
-sub    AE6B5325E74ED034
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFnyVlkBCACe8zGkIlDV0dUKmk9PWe2Hw8qM9DdPbtpUOpmUOidGY5svQDL3
-eqvHk85TbxqFEe3Qbjjt+R+iApFuXy5kmueXTvwCm7nAU+k/pZtPuzHyhDs3iFFH
-8LCI/dOpd04LXLpuoeLCjBqPlOM+Pxiiu9h9tEnJaJzuXcw9SY3I/puj7qIEwxsJ
-W23gdPtYij9If1ht9gtTsDq9s7VbCM5vL0ofM8JVPilnE4oWuw9hjgIfT/QotbuS
-wPo+1ExZUfaKYPvMxi2kY3LZU3hlp6P5AxU+eI31yaYjtL+0lu66jTD6s8lwmF87
-QqjjxiHwic05//tp2Pk3PIZCoQurfEL6ZHhhABEBAAG0LFdvdXRlciB2YW4gT29y
-dG1lcnNzZW4gPGFhcmRhcHBlbEBnbWFpbC5jb20+iQE4BBMBAgAiBQJZ8lZZAhsD
-BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB/6ZAPQS1iLtSPB/4l5s/avevY
-mNnuEp/97qiG8kWOvFfz3C5QP5lVmsj5hiK6Hllc1zjZxaS+TCdrsvH/zKZvgmv5
-9oy5nNHIu/sZB36JnLbE01ieM8hzoW5H7lADJ0JDI6wRbhJc9oXGA/1ZAudT+Jt8
-K2Ijzc2XOzHqE4j5vF0Sc9NWEM+OnAwkrbnIgK98ZiWTF807+/uobtanAUEWbFjb
-0wSNgSX8IvEj3rr/ZaIbf0Ymp/YObY94jVdBqFE1B1GR2TRp1YiAy+2BqoFE599v
-pmnWjZiT3fKL7V6XT98tyk9+XCFlQT7R5v+T4e+1Ad8j0RxsXUFKUScBPySrqEFl
-gMdy83QUeyhQuQENBFnyVlkBCACk/9GoJK23GwRKF8kx4h2oOkb63mP7DSPmsgBG
-CxvhH04oE9Rg+SPWKTjx7E0XFytyCuBYn9BoyGVPp45X5k4Vvj6sNJsSuyW7ExJf
-1AA7Xqa0mo1tjsUPSeAWyhruZCTaHGmnY6ClA3Bsy4E1C8sC0UapW9dNAf66SDp0
-jWeEkU366fa0RZexz92nIDCTQv4YZkYROX63P6Se7hNtontmKA6JajD+46OLGgNV
-gdSKZpO0PMyD8VMg5RUN8PXHqZ68gJ1ihjUJ499sXFuAaXKcxkbb+ajD6fYPQ2jy
-4S1tQpUGmBKAdvthMenEShmwk6lsTN86yH5q9tTNwMWjTbqFABEBAAGJAR8EGAEC
-AAkFAlnyVlkCGwwACgkQf+mQD0EtYi7nngf/aPDwJQG7NICIuMue/QlWCUG4zW2F
-ZL1iCKMYhfVnz29lM/5AG4Y0SlcRkgEigizBQUkeLVHaj3obLlxr1I5yrjaOwD/f
-ruk3roC1pi+1i0sv0/eZJvyVN3Ta3pjzYDT/Qw09Ao5py7HksJsvAM8tIbw5hnmx
-q091M8/zdgIi/H38QFBWKNYaPkC6WMxWv0M47Kttcfv1DBF/NmsMzts45BDoE98C
-VB/5M2eLVVrbHlj4QqpLDTeSYwcTb7JVSKrNbyp2Ws27l1oNhMexztBivHz1OLxG
-JY8odrCtuxK3JMllDdln/HHdwrp6h7SDRdxR6llX74zIdctZVsii8eJHvA==
-=o0Pq
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    80C08B1C29100955
-uid    Jake Wharton <jakewharton@gmail.com>
-
-sub    CF771F914C2A4A73
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBE2fCWARBAC3v9wYo5kmynmVP+43ccamidflSLQjjpsXpSDLPFokGxeuw0OC
-QJy46m8b5ACoCqRlfwnRRcEHxiSlaBATJA6hi7NRO41R39C62JXsIxNJR16JNQ5k
-oG/NOAraw0E1RQIFslznQexfxPg4yFIVrsFp1wkpCRrCklatPMNap2DuNwCg7PWJ
-1vV93YIsaH0O2fnXz3E+6zsD/3cTzUWuySEDiCLNO3JYJm97v4NDQ93encP1Ooxh
-n+PSIP4GvjrAObh3FfWUucv8UGqcw5bAL7dA1z8SgKeyFk/afs2XofXdvC+PhZqC
-DwU0NiE0D/tDWqX0qIG4ezTU2uk+5dE/WVl3R10nOBgquQdWIdYKGfV4FNTiEduD
-Uw7fA/0XcwFom7eyR9eBonQmgIadljztm4gkv11lY33V1ZfJNndPKNzwevDwX+om
-/VEHvpEfPx5toD4H523BPx55ZtfowuMtFHZI718alpCo3h6xaDhGwXvsg3s9k03k
-rfxzCjf9qcJX1gb2JVZ2+2jCwUDQZeEwV2vivjGNiN9rShWW+7QkSmFrZSBXaGFy
-dG9uIDxqYWtld2hhcnRvbkBnbWFpbC5jb20+iGAEExECACAFAk2fCWACGwMGCwkI
-BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCAwIscKRAJVQoeAKDLeCOKKnt5aqlHD/7+
-QPOgX4iYPACgvGRCubBztEBkU2xXbr9J2cQY5em5Ag0ETZ8JYBAIALeU4dgFKEn8
-b3E1LUT25svvUUX2kuVLQ5TzokC6zjWQrPehOlsYx+ey8RSN/6A5rBLtn1z75ror
-F3+vN5kLPAz8x2Th6Cxd6lvn3DQHfvDL0YHlp0AZzhHx5ogyJxdaqwzNy0JWxava
-FGN6b8bbrR1Nf08kq/d5dNe+NGVdBXcuqUo6jt1W+tkbntklS5e+B9/Q/4L8dYkl
-8xXRIMAuKw6h8j4LFXse6xndWeWtTIkfZImz0f7cLQV5X7QSv90i1KfzT9hLiUjp
-wqPydtTNuB6+gda64jFNhVcvgW+h7MH6FT/zSss2Jh2eDR4HFrv7EJSS8dKCvPox
-y8El8pQMG/8AAwUIAIXq+ryw44voH/IdbvTQtK4t5/lp/Oj9b7QrMR3u/iQxM4K3
-dq7rUbA8hjdMM3gfMu13B4pzGtpcf25b4NIIQkhES9+CUDQDYHF+gwkrwEascbdf
-YZiLAHtcMjW1Og+IhTY8wDuJT4I1pqumSzWV8UxVJctqNUTY2eU7158oD5+prdCc
-eQLbzxoKFtu056kZ2+46v6bAl8g/w8WoVORUuHruuvKohMVPHwNQws7KHCFy9YCr
-4yIQfqC8g8oITqlgUZcZaXx6K+NndwA6LAoXJL0edaZOZBuFq5H7Fkrw07+OIQFq
-LTGcFpR12AzDh9lmtyJQ8nVfb6IjAOSwBPlEZWSISQQYEQIACQUCTZ8JYAIbDAAK
-CRCAwIscKRAJVd58AJ0YA8xv0U5Odm8u21BvyxjGS3tBZACggF6P6KjhUPpIAYTS
-6v3TtzhkJdo=
-=Zirr
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    82B5574242C20D6F
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGNBFC1VWUBDADZwqBEEmSjwy2JADG0qCpvVQzC5KszL0CjzqTLPMBmLKNuc/36
-26MU4yI8Y+pcCTnC3LN9hrI0hxiP4zFFFyLYKkUWCZRAwj4OQlnyTDKa9frKBMed
-PJtihlQAKeCtMh9AOXNa+hZoAAEG/dfIOJhLyZB7JEuuwkil65R4yLrdnbbhPYMi
-1k0GJsaxG3IhkR/XQMO6m1KnThxyk2GPQNLFHUVSN+Gqz9m6u7oUxhhFjwUj3DZb
-8oGcQ08JR7IGdB8qV+XC997MUGjbRRu05hfWJecR0Z8xkprsdKSbFjuw24lZtsfJ
-w8advblczq//NvaUj2g/U/McoTPKoWXDFSPtw0UydazGtBUEM7SFer29upgyxA24
-oHoT4qUj3+lelhBbsf79YuI2M+q6OfeWXfOEO6xkcw54SmcvfYYatGg9UBiZq9PK
-oUfyn4IOKhxPY82N35tDfoeBXDAwr8r00NkFJl2vHv8QkIKQFF4HWLJw/aElij5t
-T34qVUE12H0+oikAEQEAAQ==
-=Uua5
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    840B2BF6DA8ED8C8
-uid    Phil Weaver (Software Engineer, Accessibility) <pweaver@google.com>
-
-sub    43115D7B115DB0C0
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFSR0DQBCADw8XL+xgFg9WVPknAIqqb0sUIZ3yNNr8LkuNtwQXnwAcSJkHSt
-C1k2CIKwRPPfcLsb51l3SpxFTs/s5yhyiknDfjqP8IFtLocBSsn3kD4VRjcxFQhc
-0jjgsTr9ZP/ZAWMBRIuxaZtpe7bpqbLbV9lvqjbOnJzASLKJoUngZAXvljGrWGfM
-3+A9z7SdrilRlA4DOZNqPoxN2RNY0QOwHh8Wv7+R97K/VQoAbvN3tQxlfn5B2scf
-WL2nWoGRS6OuO9Zp5/W1twoVdf4d85FlpNFFM1xzT8f5FpjF5QRgQD/Az2XHnObn
-ukG3ZPEhgwBIwx1Uw/Y9aOceXke9vaGEsDT1ABEBAAG0Q1BoaWwgV2VhdmVyIChT
-b2Z0d2FyZSBFbmdpbmVlciwgQWNjZXNzaWJpbGl0eSkgPHB3ZWF2ZXJAZ29vZ2xl
-LmNvbT6JATgEEwECACIFAlSR0DQCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA
-AAoJEIQLK/bajtjI12QIANhe1ZrLQQvYFyDXGHS99LrT7WUzvxQdJ4xYYBRhmfqE
-6povjXvBAvYQabMQD3iBHie8xZ4PDngc/osp6SJF2wCT7LCFLr1ebCbulnL+rPDc
-y9Y6vQ1zD0NrBxsRYjTGq/1JqBd+Q7L0xMk8BK1xuZOCAUyq4CVRzSSxgTxJSQ+n
-Y4ZOL7PzBTYbdacMnqJc+2TwZKgi+CKIpOJusHa98mZSafzotNbmasKGRLPeJ+66
-Y/+Wfh6P/N2VL4nrnOrERW/XV9QNcI5VYlBUW6eYOhvpaiMeTMHNiN1VfDs1nnfH
-ICTdeZNhw0J7S544RXII59MBjOO3UklyZ6A20fiuvwG5AQ0EVJHQNAEIALIuFrzu
-8kQ/fFJ2FA51e+ULp+dy1ZYrZqJdTF5pMdZId711/zN9NExsTIxck6Vx9PYYaTre
-aquTkRIKnFD4XH/Q5MItEiiKHRtwdyhdFqCKSHaaNSGqldFwWZK2zh/x7OPk0ybn
-9L46E4+Eg9Ie+4WdyTxDKoeYQYl9asjtZPtfbNLad3UBvGAeyqc2hbePSxiNifNe
-cTJqzBpW0voJ85vTkuRa/Y3wBdkfyxRPRofAIjzwjyIXCLQQFSel0ok6aV8nToOp
-/j+HST4L+TVnY2vYDW1UWQP3y/suCp0jtz7/ygEyTie+6P/LEgLfp8LKri0jJqxi
-RUXA86tgDiy8x88AEQEAAYkBHwQYAQIACQUCVJHQNAIbDAAKCRCECyv22o7YyDOi
-B/9mnGjQdqXQ3NWMiqAliYnPEHYuNaP1UnRWrXpAHpRnQ2L0mWTHrAW/f7P6W4is
-l+oUKbURBEItgYY5f4/nIfp6TMrpD2ej91Q63gQw8KLL1x5CpKKLrv27w2SzE3ZG
-c9PYRuvW5rPqIXAdBYpznGKoowszWlRsgpw2XShuTEeiM2xLghmb2gSnU9l5wXFz
-VSa0PHvXoUIV6YeO1wym9bvRdvmAhf1AimvyOlpyk826vmI65l0OSbx30N67RaTi
-k2eHYk1uQ1WlnmgeRB1NfTANUMvaDbrFsbOliPJm3ncc9eGhJ74hzl8WGUy3SseS
-YYRhm4MK4YpKCJtCTWxKdYj9
-=zW35
------END PGP PUBLIC KEY BLOCK-----
-
-
 pub    858FC4C4F43856A3
 uid    J. Daniel Kulp <dan@kulp.com>
 uid    J. Daniel Kulp <dkulp@talend.com>
@@ -6330,859 +1927,266 @@
 =OErs
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    F3D1600878E85A3D
+uid    Netty Project Bot <netty-project-bot@users.noreply.github.com>
 
-pub    85911F425EC61B51
-uid    Marc Philipp <mail@marcphilipp.de>
-uid    Marc Philipp <marc@junit.org>
-uid    Marc Philipp <mphilipp82@gmail.com>
-uid    Open Source Development <mail@marcphilipp.de>
-
-sub    8B2A34A7D4A9B8B3
+sub    1C9F436B883DCCF6
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-bpJ8mdzS2PJko7mm
-=NMA1
+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
+eOotdxJF6J5yWErznxlExP5YBIHvIQljCyU=
+=WKVz
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    8614D6AB265B4C63
-uid    Antoine Levy-Lambert (Apache Ant Committer) <antoine@apache.org>
-uid    Antoine Levy-Lambert (Apache Ant Committer) <antoine@antbuild.com>
-
-sub    8832A83FA3060393
+pub    36D4E9618F3ADAB5
+sub    C4935FA8AC763C70
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-NACdFJ4KIATJDK/5ajFq5+irOpodoHc=
-=VIEf
+mQGNBGGiftwBDAC94Yhhh/5yO8jYFkg01MPnooXKZEPwxAbAg9wn5iM0tHxhEpkU
+zJVYZ+JYq013+Ldp8Of7A/d6hKTtZ0xwSeY7S/WFykIk6tc0P5j0sfFS3pGPDk+W
+D3DwUa+8m0PriF7iA57vCOE51znO/IUIA3PG2YAK6jv2/i8MDXOOq3qB7VrbvKGB
+kIPubp5PbjvP+LFhLuUReU9m2y/3q9lNFXdd9kE2iScqGmu3FDhRJxBK/WQ2kqiv
+sJZjAYeHEVNcc88Ah6vXI73uYrvWVGCErzswYy9UrxCAQ/x2OxUdLw7NTHwjZSYC
+JvH5JPPTlDxMgfwTIsmaECtw4QgiVmvDp+RVa9zyrdI++RNr0InsXv9gWMv3p3yf
+TF20ZL8znFYVUi6XkeQhZjT4fHwDqDVnxhSAFe3E0cwHFJBQe2EFLljwNy6VYnio
+wBr7HrAxczRRqlUy4a3bH5KwiNwwvxgqfdMj9KTVpP9t98/TA36bIohwGFRWB7W4
+i395S90NsTbCh/cAEQEAAbkBjQRhon7cAQwAtPmKcM1/z8sMJnt4sHe3ndXsOdSq
+TJbRkAcdyDO1F4qgj5z9wkrlVVKGuVtmJS3qmR901Q+oH+JqM6UeGqhNig4IQvME
+iQjjelvKXMX9PPVzlP+ga5Y1/2mnUmgmYXK406CU7aaQ3hs7++XDonnQUt5nWF9d
+XT+xK/SDLYMk5i1TNqPVFZBPm44HpIjKGNJXD7Vv/5z62+hKswpLXgYt8Rz95ByG
+ncjQ1Lo2M1T1Y/EuwlRoc9RTdyABavSQWVLKIz6kKM4LejajjRvLnybMUug0CJl5
+mni4cHXx9t0pMlG5DE2O3mZLwTgWcJ8cu2CtPxA9iLfVvFAThxk3ZitkEhChBtG9
+/V8D4DiTIht6bd49xkHP5pxtB/fuo9lNb0axSBaOAeant3KA6F6vki+chnGhOFqV
+1KJHcxYG7VsG1hYhy5IbZsg4GdcXfTwwF1/mq8kvHfyTkBy6HMDGwpr0ATNnrxO7
+tJTiVqDuxfviGQUjqJIQDns6fM9BI4OfpXyjABEBAAGJAbYEGAEIACAWIQRH62g2
+JF0tQOid+0E21OlhjzratQUCYaJ+3AIbDAAKCRA21OlhjzratRBcDACCfhsaCFvM
+JTls5lT/dcTqSCYJYZyDj95DlTiaRNkXnAGrTyE45PnmJLv6FFZzSZdu/eLE8ls2
+MY/KWqnZYYV2Mct/pwDDLSjdAN/NSRe9HeAh2OS1kNeN2SIcoL55gEodKBNSMisY
+9N3ylLMxHZPa5LNBo+j9wftEaVi2fTX8LDJFQvUOZ3f7cz3f6u42FeHUqaLm2alH
+QSkfTB3yIu8Hmo2EXHh4UfwTmS55OBGLQ91d8neu7PcimqCeadeHW+qY5g5hr5NN
+LxMA+n+vwPGcQNxg0lH2XBdlFBbAELEGxMcKbW51QL2h+EdwGzT/nK3Iia/qm3N5
+0Z12j/hhzohlf7TQjhzB43Wbxef94JbKacvng8t/hG3+n8UASQzizCSn/oMkXQom
+XdQe5JFgJCroU2CfrdFmZfbkkq9mAi80BLUEAGNTUQrg/W39VX1/klGiXiWtpU8g
+q/tSGRQHXTwG53qejlUtKI315ZizOhJiniSDx4fZaK2zB9RlZkrnd1Y=
+=KPJF
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    8671A8DF71296252
-uid    Jesse Wilson <jesse@swank.ca>
-
-sub    51F5B36C761AA122
+pub    BB2914C1FA0811C3
+sub    7AEAF265B448E2F3
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-=nFNX
+mQGiBFHwyNYRBACkCXpipiMx0lCEccXXzv0bE7LHHbcQYtb1vT/o9WXYoP8JMChJ
+cvuAe8Tvg+s7EUjKHJRhu7I7kie+IJ2wtH5uVARkYxoP2OslYN6MSXa/bmwU8fwQ
+EFkVeFV7q2UFvH4cqpa7UKWggKcUzvB7z5spg/iKuMDQ/aBkxpmUcrpefwCg4/IC
+Omi4O9ROfzJ5Q1YHSrr8A0MD/0OTgJjkBPPBcel/pFetsWhlqA6dkYINT5qdlht6
+d+aye97QFUccg3ODnCq4fnDPHK9PMK8cTGkrnoux5XY240XkWX95tQDyrssGqldC
+zOLxoii4/gsw5s6j4x/AjycsAI8DxaecQb3/sNg05V30ZNm2+kQNmGGV+0oERpo6
+DAVQA/92UVwQdZjMzCs/6NTbsq/2tRX/XXiIxTij6fpZUeHvR4Ek3meuaXs9PPwC
+o2f/90aO71bNKjh0LHSI0CEuMWbnixmBgOEQY1yv0HvW1OB7otXrTS7EI1m+4k4c
+WlwidtR3XjqqgXTjFz3J/ipT8j15a5HOtoIwP5AHw4e+1cEmCbkCDQRR8MjWEAgA
+mqaIVMeh86G+K7uq7m6m8F9s4WtEkmYAYHdk5FXOXEJ+uOSiUiYLcYSBYRkahk9Z
+o7QSv0bWRmqCFI96Jvo5f0MBLkwR9hxYzrr3vkkJyreMsG7ybyXA0O+ga6ex1091
+bBm0f1vekvT7VGdcTtjWhpDiMBXZgTJDGUEpzz0Z/8MxYEfTsk1P7TNMMAvm4AOw
+vRk/xL8Rc6Gapr5EGMLhKRADwvWU3vYIhRjXApXZUem8tNq58cmR4q6EEsmedDri
+LuufwVBPT98/+sxEPMgPFnSoLPDc7AB7vD9s0Ip+8jG5Rtbc39Phz4GDHmCUwJ01
+Mo8k7Sr+jguGb0fthSfM9wAEDQf+LRyfjdWJ6CW+mGSYFsW1ivKzLujvfiQip3CM
+y68Si8BmUJvN8aPWS58knZY0ikXOai+m7W+4yVMkdNLm8JpJ7SX9NevZCYAb5lOg
+mE7kvHoGFar5oA9ttUIV6RZXbQi0fXtksKse3c5gWqMTmEzTV+7thtQ3V6UmXpIv
+OHKvLJdocHP5T3yDgnKwr1ajw7028XT3wsaiUV+sgjtc+1KMME9/Zhwa1jWSzuZ4
+Pb0kxVIjzebsTr1nMdtQqARg+KKc+R8Gc3NCP9MZ/s59NUFyfCkg3TqazsIXQ1bi
+KMv0GppFbFMnC/ifijqtl9g9phuoF3N6/Cs38zVlRHneyHRAG4hJBBgRAgAJBQJR
+8MjWAhsMAAoJELspFMH6CBHD4SEAniBrVdd83vjrwn/3vXYTuZrmjIO/AKC9Ib56
+Z/+UEC1v8wCMk2365rUPKw==
+=vlw0
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    5208812E1E4A6DB0
+uid    Gradle Inc. <info@gradle.com>
+uid    Gradle Inc. <maven-publishing@gradle.com>
 
-pub    86FDC7E2A11262CB
-sub    59BA7BFEAD3D7F94
+sub    33AEBC1F01C98081
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBE2kzuwBCACYV+G9yxNkSjAKSji0B5ipMGM74JAL1Ogtcu+993pLHHYsdXri
-WWXi37x9PLjeHxw63mN26SFyrbMJ4A8erLB03PDjw0DEzAwiu9P2vSvL/RFxGBbk
-cM0BTNXNR1rk8DpIzvXtejp8IHtD1qcDLTlJ8D0W3USebShDPo6NmMxTNuH0u99B
-WHCMAdSa34wsg0ZpffwQmRxeA+ebrf2ydKupGkeZsKjkLlaXNkTVp1ghn5ts/lvg
-KeHv1SJivWKCRmFlbPhBK4+mxSUSOPdoBNAfxA51QzZoPizSk0VbRz3YufYRVLFy
-9vqPSorDmYJhCvn3f6+A38FS/j8VE+8obQ2rABEBAAG5AQ0ETaTO7AEIALN4amR3
-pf/FN8oMFa9eAc44ognamG31ea1lkqIiPssiJLC9J2z9mShkrECbsBj4o+HxeN/3
-rwW2hQFAm8cAbitujASpPs46slp7Ylx6cfmrNqh3tOkg9BW/5izPwjXAuULovMpG
-PVf30eeDpf6huwRqyc9uYQSS6Jn9KCLi9ULxIeQOZi3UPHyMOCbnehR5aQQk70tI
-jbNytmFKC+DXFrhDiBjlRQruATgtuYYKMWUBO65b/SyvLG7zPGmHXmCSfg2qCTQI
-8xKN6wxgQY6x0PN9BeXa1du3497qYGhaHrsxnW/nM6rcQO2hKoOlY/GmicB5oK40
-MMVfji8aN/EYTS0AEQEAAYkBHwQYAQIACQUCTaTO7AIbDAAKCRCG/cfioRJiy8Qw
-B/9UbKogRzDhPYPeBlnchOR6gF69B3EFP/bvE2+hY5nIZLMZiVFtFCuWj65myN8x
-z0w29pKbHLLiAtVtx29Cvc8X/8bGmEn3xbymT2X4znuN/IeecK6afsw7ij1535a6
-KA3mh640noEird9/ajUOysS8MKFg4kQ54W5bG/67sjYAEkl6ns1sHIzaf08Ty+UZ
-TfNQGBZQGyTqNP6SUqcTIcTvpbN6A8vPeO0SVO7IHuNGGPJAm7XKIkQxuzbMfxok
-Y5uLl/wm6bi0gtm4QB2gjQzdzdVGrXZzP+8vL71Vdr+z//wiwafzySPLJio7LxYk
-SOg5cWH752laIzudmSBBw2Lk
-=HHpt
+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
+bMFjyklLBAm1WETBiqR+k5uwXmJ8
+=RGVX
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    6525FD70CC303655
+uid    Stephane Nicoll <snicoll@apache.org>
 
-pub    873A8E86B4372146
-uid    Olivier Lamy <olamy@apache.org>
-
-sub    1AFEC329B615D06C
+sub    DCF4B49B4D5845D2
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-875QwNruE4Qkt/W0Rhy/QRIZ
-=eBqU
+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
+LwCg0goAeKquoZuBm9KXUWlDeLuHu6Q=
+=WF0r
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    88BB19A33A18445F
-sub    FF59C22B07640A16
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBE//SjoBCADao3lh/I96fWIY2ZU49ljtHR4Vnzmifm3URFNuv/c8McWGxxCy
-Y1+oolgVuJcy4hCqcgbkwTiAfBhjZSmsC1QK/2Vs1awFzGccPcgTBakFw/TUav12
-6Zb8y72dH0VxxcN/HUGBUOSgZg9IMe7AmmVnxbJ2ED1I3/opkC6ElPXFOl8EJdgE
-Wvinp4ok3mwBGMIexQDyEN4DviuqvmB4K+gYCjS33HtHh4OrkXkCO5pDNUDgkAZK
-1uG3GfmxGBjdG6nPWgIuDMEL3j1cW9r5D6I5obXsFlg6bX8mBs91jAtmfTNv+IAB
-bwUOAJC+9C3ZEIsZOcBSSdUIXmuRPa51oP9nABEBAAG5AQ0ET/9KOgEIAOokxMbt
-TY2zLvdAWD9xPHj1kZPThN7o52A9Atw0zKjiNFl9jy+IFarPNdbMzwooQWgx5Y3S
-bKdSCSDlP74psEMOttEdw/23wt3oG70I84RveLuTs+dTDRAd5w8jxLXhjm+QxhiE
-+z+peVhfe//u1+kn2vzesXMIRBdQTikjIZ3W5TMgu+RV7Fgf5zUWTEUTns1kmM99
-XPhOVh5BIr1kkty/Fyg/1Wg87leM3WZUoe/7bnWju+YSgjWvxwv8HEBYPKciNG5n
-0oOPoU3jkyEugJafmlhAt3CAgmFbfrJgkncXPvow2xK312iy0xIslAqm0dy2+E9j
-hYLlS3p3J8TLPGkAEQEAAYkBHwQYAQIACQUCT/9KOgIbDAAKCRCIuxmjOhhEX5s3
-B/sFcywEwoA4ylzSSsVctp7pjDczczlD1MnvCNP9ldzzU2oOGAduvF+zzJNL162J
-qMd1TMYnYROoZhIS78He+LriBSjCsweKDqEix12mtuWrAICpF3UcY8WLMB6SXgXP
-qnZS1cw+Prr+NVnuR+0G/cUJieVdKO5rcYuwrs4OGh2rEMRCksAY5FAMe1lSB4mj
-9jIGKW0B31D3/AxNlQuN1aRzGLj72k6d7Q91OrbQ1+yG12CLwSd6mS4kVBFjppUD
-JCKN+HD8NGQ9EtyiVpx2/gmqshFVdwUgAqQ4tKtFI713bi8xz/oNiHkOfclHdgMM
-E1GU2n+gEnCLRpmC3Qqmeb0n
-=2JQQ
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    8D7F1BEC1E2ECAE7
-uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
-uid    Tatu Saloranta <tatu.saloranta@iki.fi>
-
-sub    E98008460EB9BB34
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-Jqg9YirnHcrlYF0r
-=gukc
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    8E3F0DE7AE354651
-sub    D3047B0BA4452AE1
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFMnpeABCAC+vckg+AqDG5Sg+GKbA5t2knu72aD000Qle1X//SjTvPHz0L1v
-rUNzwrqlmah17usczZHOoOCaGjSUFl3nPmBEOlLBh6L4+e2Av8PSbP0qUneaQVgi
-TQfbNgRB4v4H5dtKIglK1hZwCeqFazuRuFDWLHl/IG4ymcMwy/86y96BJKWrW+Oh
-4vK21DF/BRhyFGaIGwN1aPYRofy3ERsUfwe9WiPXXuYb3gvG++QuiS4V7UJwcAkx
-5TGukoatI4T1PVmZPk2zmeM2pHQRisHAScRt5YJ9bswgBphk1xHoENVQ3BYhzrsu
-a3hFDY5hO+UQiT+eIE38noOuKuSbRalSPelvABEBAAG5AQ0EUyel4AEIAO6MSdr4
-Sp59Gb+J8t5o5g+f4jMJPm2v7BkJzldN1JISoEWeo8iyCOVcM4D83coihMfN5Nwi
-7Tuc4tnZH00+XxYFkHMOLMPtCE7l0Ai8mVhFqE3HraCVnk7gRzNCyXeJRu+Q1TSN
-4QbiIEeonBSoGsAYafkAx1evBJtGmrDv0Y42NdocnACyRPZD0usxMARk2ZwQaqN4
-Ih5pL2MGXqMeo6uEW8iIIumnkMywXyZ0jbAcZSs9Smi3AdU8P/eY/Afpu4nyYVAU
-Sdm79eMjcBHRluvuk7db3mMzQPAepWQSYOgsbWq2BS/0rMq65M+uWo9MNpP1ZH2w
-G87qh+7nFIk38h8AEQEAAYkBJQQYAQIADwUCUyel4AIbDAUJEswDAAAKCRCOPw3n
-rjVGUXwWB/0Yq3UknzRomC9wi8sCh9Nv4erqjSP/JSoNx+rYNpwJX74jVmUA4u7p
-pzywCwSFKyE2L6pkgKw0y+KfE4cWsotlfO7E6VQQi/+cCb5OCxqf+gOelupuW4Co
-MSHKkPWXI/dhM1NMIW77+bLiiHfaOW3Wa9kBSKujiuFSp9tIq2gjTf/2rKQMbywK
-szhlBICdvYzji8t79C7tAJ0xNgZJJv0QHP+5MZJfMAARKrvtRP0I5OB1HYVJrH0v
-RbO9Y8PoYrPxeR5zQYxAyt36/DE+PM4CpEcCZ2D7Xrtk/GKe3Y/jU8FBifEebuhE
-HdZk2xusuOEx27cIovRPHwvLcgY+4u3j
-=oNWb
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    912D2C0ECCDA55C0
+pub    1669C4BB543E0445
 uid    Emily Johnston <epmjohnston@google.com>
 
-sub    37AE8263DA3084E5
+sub    5F6BA89D4B0869B9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGNBFu8+5UBDAC74QfHuMgQVUqSmwgE+zWX1YKY4w9a0vKrj7E4tRY8JXaX6GtH
-TWnOkAndsxK3kpUyRx8S7f4HL4Sxf05Tar22nrNkuiQddKjLsdlH7VIolGW1eFm2
-LYpLdChd3QLimsMzIQUND6YXAEGBYwJwMakxHCSuB7ExwRIb0DnVMM+a7LhsLqFq
-gIx4IrpgRuSSKRxNbgtlVYGqZa+jeJPjJzt6I2XouISHou43X82IurItzmqzg5B6
-UXNQqxEUUJBf9GWIA57MjEeyipzEBAHT2oR6yNj1dB/RuMbYpo1eq+QUIpxSvtLL
-1/krVeL2LU/z/weB+hCstxOcHPocjO3FpjY/jCF8K7j7HxLhPFO6taJZRKDs4tH3
-ti1d8cHQMu2JwK8TLJPaR6A/pRlRK3Z95pchTgW/ZeAfy1INSQxc2KfWSop6X4Ib
-PhFDaRHOJj7jKjQ59k97FAJN3UinH1ZB0olt/7PXtMBihZvvk4D7i5KNBj4MjDKU
-6P/727AxEERSOBEAEQEAAbQnRW1pbHkgSm9obnN0b24gPGVwbWpvaG5zdG9uQGdv
-b2dsZS5jb20+iQHUBBMBCgA+FiEEXOMlmWo1ITMmrixokS0sDszaVcAFAlu8+5UC
-GwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQkS0sDszaVcDNCAwA
-jvpkBXJqGh9v3DLFeESH3ny1DfdseIHoijIiCkkZwOvtzrAn58y97j/+ZEH4tJCs
-ZlDJXeU3/GTCiD4fl6AnKFBGWQ6dchMRxoP9u1cv8veIHr8SFdRoQsBFXRvLRja/
-2HkF9hN1XrlVeaU7HoVlpk/oVOb0ReCsfYEgFlFJvbtTX84GuCFp/Cx2pGvHJNg5
-eaWPjlP2jWcCDa2UT5/0/Wxcvd5vf/w5qsOGXaTz9n+EBmKJItR0WHiHmkhLbwlO
-L3o2OIQhnkKy1h901d4BR9xDWNu0aBpedREHvbOzu7JQ+gzU2JoxEUVZD1aSuswD
-hp1WV2MNqmGkxq24fZK2zi0mB1IZvtj8pB8is+GuwPgZ0KhwezfjyAxcTNPAyaTm
-ezeY3ti8DGU0xRd0DBbWGEqYDaPI8Nsr6i9HBgGaoT4kA4EO84ZgxELC8PxoNGAU
-YSJJHlYKbRg7Do51AOTWN/wv2ePEUjcMA2DOqfjrn7b1M0PfcnfZUw5KB5k2HHE+
-uQGNBFu8+5UBDADRdVG7GKTQp0fnj34zpntbfzMxImRrEZ4l0IlmjkmmChTKyt0X
-brfpnUUlFnQwaaEWQZTt5OUBU+VqA2G4H3ZnLyjdI76E7iURzAHtJXHpF+fo6x/o
-uDMC2JlXUveReR2o+5WO2WNw0mN3nmXX0vykibl/20SUWZno7DNixeq8DUYZQAXM
-iDFNWwUQkKXdTYApD3CqGco3gnOoV3zFSLglIQiYFRMNgjjsMIGJvuYyji+koVeX
-o5OuDZIZhl+mcQsbs+adpg/FiT2tu5YDRggFuSUf7DFzorJgDwH8AXsDAwbNQ+IW
-7P4sDEn2GglttzMXmmdQwPzHHKKTHC4gf62MFeBuqVUOQBWCgKdmN60vCf+Cz9r+
-1DBctkPzQVLj0VfApV/UnDxF/xoRKWLMiFXffDf5BBhmGAu9xxRCygoYsyQN0teF
-vbqYX/S/4BD5maVDLGY6VE/PQnG5xwV2rFIgoEPZyJYCVS/mVczbY9dHjBEJoi5M
-9a1XpNsLkO2ALtsAEQEAAYkBvAQYAQoAJhYhBFzjJZlqNSEzJq4saJEtLA7M2lXA
-BQJbvPuVAhsMBQkDwmcAAAoJEJEtLA7M2lXABgYL/i7OMbPiMydJNpZK09xZarK0
-DT6+SkfotP0EcubvNrWJyEpyjQyFV+XKnZ3qgYEpanPnX4PJwmsWBrJJIVNjWt/8
-oJOqVnUDQ+aFHN9cOGHaOZ7kvxi6WeqgmXrs54VHYrebovdf7Aj4eHCBFk5jzSfF
-YyR34cnrbLkY/DyiRK1PPSIRnMW2+8YIzVZtsXD5ua4tEMLpIjb5qrpZH8Ahk7L7
-UVPlzGzx/JJDVvAbgnrx95DqaxWTYJGQCIFeeBQduwtUwhVjPgFHGatJdZ3HO6lZ
-mKAzB5fD9yXgeJc8+40CeOV3QvOfvv4hdgsrm5FcsRSiioHQf3CSJ9UGacJShxG0
-C+0I7BKdhPh1PWfiAeIeHywEQ30tferUPv/iyyGI0eZB3yQyezJd6XlB+HEk5O1o
-JYL1t7aWV+z2lUHnimg5F8PlawWf70h3RptfxxGymOiXvVQBITsU282nX6lj73aJ
-ld56jz5YEl6wbOtdFkIeOAWOUx/hzMmSQXxEHCKqGA==
-=X7Ws
+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
+=wp39
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    94B291AEF984A085
-uid    ReactiveX Admin <reactivex-admin@googlegroup.com>
-
-sub    9D149DAC4AC24632
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFPzzfABCADK/wEIRhUCUTj00TcBOxGTPs5ad8jn5D01P7P5ILpLOgmnUp1I
-E3EYy54PQYjDIeOFvEmEywvwMRV8yCVhhYGpOPqbegKwcebXoiMGhJjuRf2nPbdZ
-PSB+S3/WAsdydiPiz/2Xl6hhlaKIQSnSOgYPOQjbDjgfU7B0vYGPohYR50fbOd9D
-QLvwsYxQv7CCdMM1M+tx4HevvYOKrceAwTe6yRx9PEhmuXYRCes/AKOs7yODvNm5
-SFFlZzBrYMxh6LSmCAGfYrSGWJliJUuFMQ9U0R304nmVUo3rrCj3tD25Kdr7wj+z
-WjtJVBdWVFTq2/Zh0QnF7mbIOs4bYxLlKe+HABEBAAG0MVJlYWN0aXZlWCBBZG1p
-biA8cmVhY3RpdmV4LWFkbWluQGdvb2dsZWdyb3VwLmNvbT6JAT0EEwEKACcFAlPz
-zfACGwMFCQeGH4AFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQlLKRrvmEoIWN
-gQf9ElK2o7JBUbQ/QgpPbaKlP7+Lgc78g2I20Insd51G7C6SFmnMj+Ae/EariCV5
-R8JObne8kfY2EpmME8ISUqPrFSw0hhR0q7E7jhZgHrY4s0w7R1mujjWYJQ5cSi0q
-2sQP1GDMIk6paJBFORedqQ25B0paWGGATyMLRu2ljz5tog3DVaE/yvaQWAgiH77i
-It24fY9waInC7F+ruYSiL9YwGaDi5VwV8mlVeNZ+yobjXllzsh29UW24UXjWJoEz
-1MH2IXC+v247wnr5s0x4GiBaYFIS7sg2WdPMImAY9tGwfKQRNs2kBAT4G2Y9cDx7
-Oe6eZTFP+VYBhioN+5GzDPMwwbkBDQRT883wAQgAqj9m/clM4PMTIRwRkDbrfFSA
-TZznMxgUe+jOGRbZgemEd0Lpa2Dgrhq1hd8jOQgm+suCKjhJi15oKHMYHRx435cE
-8gvdW/C8R+T8Iwd+Ce5IuaRKBisgcIpCcSBbaDgYqGsjhOT8W5N/Tgqobera2Wvm
-wDGnadIN82RQkvH9Sypj2eFyLuFUk1xIKCS25a62EYr1Pb2/mNwHvgEjkswWeoWR
-a8A6xQevvrcercj/a4dYB8m/RQQhdapo4J3gh/BQxJIHAvjVxxWyLfyOIdnV2tkG
-Cysl154R0ymVHIT/fXILnkUPJNeAQzITMIjbV6GAUklVr1sjtcDqXPHAl49DBQAR
-AQABiQElBBgBCgAPBQJT883wAhsMBQkHhh+AAAoJEJSyka75hKCFz30H/A4I9FC5
-kU5ipCv4iqc77egCekoG8hhm0DtVdWrKOgJwbayIRsyCB+hISnZpt69QyZi5iA2k
-rIPZx0Sq1Nrlw2lPlv87CbreDy57vdtMdFEFQHW0zRbFN+XKZ0noFQGYxG/1LyPR
-4AOg+ykBEX09gnWYHwUO6x7Q73OQs88y5JOurF6A4iQmH7na9Qz2A0YPWNKQ+tmF
-MEciypk7/YABFZrg+9Edz/TWyN81EERhJPDkxzHkYLm8fLpOhnQPOyDxuzt7fh7y
-hy/+b3B9QT4Cv1yH73DYIfJW3jtuQDdmvtTk6G7BdEzAWufGVt6EiY10pr4zyfpd
-eaSSyYoO8iMWJxQ=
-=e7Sd
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    95C15058A5EDA4F1
-uid    Eric Anderson (Maven Central) <ejona@google.com>
-
-sub    F57552EA2A2B5F3F
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFUITeIBCADHIijQBuGmC+Oo/XE5qIXxzZ2cK26uD0tlDqaPhRLWt5RP3EbU
-b6X8ZLE2AlmawFzU0IqndrCDxSyuo9+ZFQRYT+stf+qHFjtvVQJh2+4L2LpcPrnf
-RK9QmmlDpKsTeS6ED32kYLDj7vwqrU+sdJcMxPViQ4TBq2AH+/pXoPJ9VBW0hg5Q
-WNehQ5yKireszStwEceRvNAnPffVJ3QVbOqFWQuxMboxZZnEmbpCot6hSCDTM+Kq
-3cyJkZTLm5ew9jHQGRmQB4sM8krQomokooSqUCb6YjPf5CmN5a4sB2z/YJMGbINr
-GOv48A9k+GDXliESyGyFUdrbZH+SCjU/LklfABEBAAG0MEVyaWMgQW5kZXJzb24g
-KE1hdmVuIENlbnRyYWwpIDxlam9uYUBnb29nbGUuY29tPokBOQQTAQIAIwIbAwcL
-CQgHAwIBBhUIAgkKCwQWAgMBAh4BAheABQJVCFAvAAoJEJXBUFil7aTxpLUH/2tF
-HofV14ZdDcrx0JRqVy6RUv6juLCzwdmaymOW/ZPYgVBs0tByQ5O1bZ5JprEuQCAk
-HKQj0SgI+1INuFsGDxJLXMwk9wbZGMUY3dcdXE9xAVTtxkFOExtEjTkjxP8TwCYt
-3AerZ3Qa/bdLfxIc1Ikeo5TC2rLcm0VJUh+5l7JKPxADpopQx5ATUdLgZEuEBRlg
-nWNm3Hrae6ovjKrXBomrdbAFcsWJNKPkhfszfh/8ajzXWLvYLAdGHaOLGtN5qHuY
-OMt/KNSWF3h6kC0a189292tTSHQy2lwKFVlbR/QW0VJF5K5cIv59dauGkGssiDj5
-Gq1o3bAfUdrVPBrtwba5AQ0EVQhN4gEIAMVQVNg6Kqg1pZNcafvm8CEwJonaIkmH
-82UmxslxuOP23O7so34CPYPOMgHW6werXSnjmGyk4X1LWOeexjbI1Ve7oG/zixy4
-GTtYST14BeGelAGYELc4CtoWlJ6SodIj/4pyuZdyrVjgWlWKvDS0wL0Mv0tRfP3h
-6bPkE1T4dsCVr3O3//qDWBFrPKClWIj8gPiQZBOZLWMwja6ML1r1KB/zW89mGs/Z
-NQqLjnXdSnS7Db4Mzn5C0JFrhbIhi1PICLYx2a4eW+ZQWArbKQYRg+aSRGZEUFyY
-lowM/FC1t8cPix7JnND7fWY+0+vDyB+dpPQ75VH5rHCpYEUIZzPUIqsAEQEAAYkB
-HwQYAQIACQUCVQhN4gIbDAAKCRCVwVBYpe2k8aYwB/9shrf3hLJEnLY9x7Py5wHD
-bKRw53ep/TXe5qHcH1iSClMEInREVE4ju8IHjOM0UsPKxTT/XDZ/rDXjp8eJYx6+
-ftJfk3Us8LnxQVcZGOwC4tO/sBpy+Z0pIpK4kyPzZjy7XjEDPauC73A1BrtIKM87
-NvazV6bbzMc57RAiwzigVGwSkqrur8O4H+seJ6YtM+rVXl0D7q5ZahXPQcZdCsAT
-6UYQxR4vx28L8k40ZTAx/gaT4SRV2vuNm14iujAgM7RfXM7l4LXt0HCaZYqitg3j
-qFEgtbX3f75Uz7wHmq1mY8CNjlnd2TV/NtdSzBeGxfsCXMEAOwWJ9rIWBuuAY22l
-=YwAJ
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    96FB9DB219F3338D
-sub    684EB33FB007E676
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-Qke8BUYtUZHb+6jndURiNwQ3u9E=
-=NSh+
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    96FB9DB219F3338D
-uid    Trustin Heuiseung Lee <trustin.lee@databricks.com>
-uid    Trustin Heuiseung Lee <trustin@linecorp.com>
-uid    Trustin Heuiseung Lee <t@motd.kr>
-uid    Trustin Heuiseung Lee <tlee@redhat.com>
-uid    Trustin Heuiseung Lee <trustin@gleamynode.net>
-uid    Trustin Heuiseung Lee <trustin@gmail.com>
-
-sub    684EB33FB007E676
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQSuBEwVyy4RDAC9hprQuF4fCPCYdtMlb0Mfb+6G2TqerT1MebLm8/KHCRnPbFLg
-PwGgcyynLX5R2nXUb6oBZQByDN/Dal0UMuC19KeZX83LTcFE9vr516BMXLXXKmM9
-Hz5kygsu1iwP4oqow8U+ih16rxdYDmM3KUGhPqXYExpYH777NxaxxCyPJn7Mz/Lg
-QdPkO0awyl86sex6THr0fYJqR11XW2BkbK6Pfs5ubfxrMZxy1JujUw0UmzzEkQqU
-1+lncxecrevglH1R2WdIHx2sjkHQtwqT2rcsk9gJ8ISL4gKJ7LEYfLooKRwro54x
-WVi8Eu/XZ7OHfQfgF4+JDofIrd7zN0/Dia0qKpkZWJTrYhxj6ouvYqMPr7+XEBub
-eHFU6S7Zzo62zkm4dv6bAhvT/M1WWKih+dOvYJ6+qhBt9RsHJdUePAVYLOjTcvl1
-Dn7YKRczBpeiGQTGaquSkWh3HPCw9Eom5wPs/J1L5eeLdKoqyGUQvdGMJxuFLpSM
-BVN7Q1Voom8XBt8BALG8oGuCkFZUN6ukJQn1SWXGeBr4IUbFU9gnfZUVeLMpDACS
-erCIYBhSRHK2XaHWxPppw0yMm9e/eO6WWpVBZLd/cbxtxwJUandSfOhKn5bGRsGs
-phhWXjmT4w5DF3cngfe9aMSAV6xTwfnzJ5nSBwejU/UYCiKTnGVqVkMV1N546ZoO
-XCEJLRK8GeHzBXf4bvPW+4DVhfx/LBz3h8VJ0vy/cjkEqVWPCvb05WqZ7bhnk/kc
-N5F9NzHzCnze3fMfOtUnLgPCaAwWN3S9fJpKumhwAXdkp7qZv6CuvKsXsETmAPYe
-j9GYWiUpbL4bm4C+QEC18F9VkDs5BA3PhukNWutFcYJuRoJ6gYyUaA1PSqvcTaE4
-RM7Jjn3/fbMC+PQTNOYdixN5u+ASAsgjEDDaQJYj0Nzm8hy4uDbFH8TIqU/RLs6w
-pK8oLonItiu2UQWPnExvIN+iYGCfeMWDT8Lcx9cDxpshVZTEyjImPMlQBD3dE9Ov
-Fhh1nVjAZhyVvPbfshtBC+FphC4///lHumxAVJqu5oWdVj0cTlEqEAlOMNHBzJwM
-AIwXYkRklTogkJUCSZb8g1FB+fn6DJCu7CB4Fjd596IJn46fkCZKyxQ+L16KNl6Q
-g+oEhzsGWrpiHcBDZk7Oo5II4Ajjs2IiNhEkbUKbKn1aF3fdnpByOR07Qs0fKYCD
-xuUIgoW9aLtkJiXnQv9ddgpOvNpiqyBVs9dw4c9wWJon6q87dSRv3ZnvR+x64A0I
-82gtiE/gWnv9T7n1ri/P8J0/wMN9G4mL0bs7wTSSyd/rM2dDruYysYQ+CtMD8oIl
-VhV53qEB+5/IGb24OVileRPCVW7jGSdfWLbrV93C7GOh7gLsm+M7sZYqDTLgGkq/
-JNZSiVocTCxnZbi788kT+S6LsDdjYzGwqTqrdH/kOFToxMaen2mG37vB6BjA80t5
-lg79qALXIOKWPDI3UJ9LMavq8MXILghSbgJD78QwmPEROZh+ywN11cDw6yc1HSFw
-NrSZZuKPnj01amo5/Z2N9VMw/DWCYVA0HkPGnnxLsyboIA4tE2JR/QdNuy0CGrmn
-8LQyVHJ1c3RpbiBIZXVpc2V1bmcgTGVlIDx0cnVzdGluLmxlZUBkYXRhYnJpY2tz
-LmNvbT6IkAQTEQgAOBYhBIhY1FvpsnaAIxgVW5b7nbIZ8zONBQJgXoAqAhsDBQsJ
-CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEJb7nbIZ8zON6NwA/1oYHd9ChpQGGO/D
-lKwqijmomSpy5eEz/U8iJeq1eF8JAP9nOLHArkcDUvLqXxwPyY3SD2GE19khrbRD
-w25IWil3qLQsVHJ1c3RpbiBIZXVpc2V1bmcgTGVlIDx0cnVzdGluQGxpbmVjb3Jw
-LmNvbT6IkAQTEQgAOBYhBIhY1FvpsnaAIxgVW5b7nbIZ8zONBQJan8rAAhsDBQsJ
-CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEJb7nbIZ8zONyTkA/3PTaqRvtsm6iKSU
-FD2qe6805NtersLkzPJkChAHCp7SAP0VOOoX8tDOc7f4kkBDTnSwIYdLexqaWuwg
-7HUowhiSLrQhVHJ1c3RpbiBIZXVpc2V1bmcgTGVlIDx0QG1vdGQua3I+iJAEExEI
-ADgWIQSIWNRb6bJ2gCMYFVuW+52yGfMzjQUCWp/KjwIbAwULCQgHAgYVCgkICwIE
-FgIDAQIeAQIXgAAKCRCW+52yGfMzjUO7AP9nd0SjT5u7bVzZ7WIDNhKc3ux2nOv/
-ixSKtENArECA0wD8C9b7o0lW0bODrhoPWyi2GLhcy3M5LD5sDTZ9LmTugc60J1Ry
-dXN0aW4gSGV1aXNldW5nIExlZSA8dGxlZUByZWRoYXQuY29tPoh6BBMRCAAiBQJM
-FcvwAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCW+52yGfMzjURTAP41
-zJKS3mNA0J2q0n/pAkqMd7EZ4SDGp/BG0lyKZvZyEAD/RZmkvpGWHemaNTRpuhed
-rHv7M0LnjMftrIVSpoyDynq0LlRydXN0aW4gSGV1aXNldW5nIExlZSA8dHJ1c3Rp
-bkBnbGVhbXlub2RlLm5ldD6IegQTEQgAIgUCTBXLywIbAwYLCQgHAwIGFQgCCQoL
-BBYCAwECHgECF4AACgkQlvudshnzM42ERwD6A6ge7K7+/QokKj/wFdTzgxOfocpV
-ttSqLxEsmhG04WoA/Rga2VZAQ6gHxgcCIx4Ot5XJJ1S/U6duv+jlYf1OT9HjtClU
-cnVzdGluIEhldWlzZXVuZyBMZWUgPHRydXN0aW5AZ21haWwuY29tPoh6BBMRCAAi
-BQJMFcsuAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCW+52yGfMzjU1P
-AQCAhboUjDQx18iRbYdtpgeMZa2GP0Go25Ms/TsyKOx/dwD/YmAwU8c6cO1qf1vM
-UgqdOMpCjxTo+qUcbU8nIwrisJ65Aw0ETBXLLhAMAP43xB9VDluJa3m0EBTwOswy
-MgHbCJL6iK/MwvBGrTbwdu93jdhNBfjSUsEExMV3YsyIK/0oBDf1s33o6y51OZFP
-UC/NrUmx+QycHcSL8D75+D4M7324T6q3dqNpg0+jFTDixHi3FmNpj8NY+7iIS+Wr
-Q1qkBCfBbKkGrUe6lxgXksenvRoDQFrBndxlZ4JLKNdmY8UL8hhFDVO2ekD50iKL
-cXGTgRaFN3NlU2BLunC+ja0iGCnTVclvAznhmtw4QL7S9aqQIo00LhZlxfZyEQi4
-ljpSrB6aX1eu6VFCrsdldA3vJ31sCPhykrJhoEph6A92a0ewW94+Eun+m7YSVoU5
-noZj5IQlQ1YZ9acQN+7blEAqUBoresm6XJMo/ago2VooTt3bUQlKyoNJhZKfQBwX
-rQr60oskczUkVTMxy2KBTKqMV4BGWEdrkPrrs1wFXUXq8adNUHJ30X3y00Iy58VU
-aRZqLx/J9n+40LsERil+9YoajUMaxa9Xnl1eATq0kwADBQwAkJG2ODt7UZPzcPms
-4eE3az26d+jSPDqNnxgZPYxeW2pidwpva7homwLdIbMT6D52WU/DC+N9LNtuo/2h
-35hnHJ7fasEhXax+ArUzWBkdi61PxP31vM78fV5h7xxFJ2JPv4t6Wmqt2i+d9GCQ
-911lHGwtwV/iAVk4FY3i4f+bs0dkJs+yNhUWsVRzSd87cfvxij2jB7qtIB5aPWdc
-qRsZtSd5T51NtGmGtIrhVr988svcecOrdATU9qBBDTPDW5AacFIWu537nultWrot
-x6S7Wwm7mU8KnOP14b7BVB4rMiQJclSYjduBe+aWHNSxOJeZmAq0JBLdgIt+nerQ
-FeMr57q0q0qqooPIVvrVlxFxzXHZGISIt/JsrOUPJFkI95T7+2huRzNUHFmfHE3A
-eHrcLTsKRMe5nx4OYw/FDgk+qgFfUtUpu6RqH28WTlGtPW/6cZIkCyzc2wtAlpkp
-iiUdIA933CtSpEQ/KiDOj+gKsdtaZb9tiBkhke+OSd7JtoThiGEEGBEIAAkFAkwV
-yy4CGwwACgkQlvudshnzM41tWAD/Qq8DwaDw114pXn00eXN7Qck0v5F2xGpW5ktW
-CO7Aci0A/1mTmMrlJszx6YZuTkJHvAVGLVGR2/uo53VEYjcEN7vR
-=PCTs
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    971B04F56669B805
-sub    D3664677F6280E44
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBEzZjwMBCAC0ecfE/qkdgq8uJv1c1ZlzegeWH/lxW0W3SWK2RwaHx7LrfpiN
-WhxLkXbK6fkf86FN4579W1+9Qef2yjZCwTfLe6bqj3zZGQWSu7HPw1mmhf9lbhJ9
-+TlxlczRt7m20fpSakGLIs1Jp7L4WJq3N5Ti6IsDFNOZdzGCpuiezzvp08PAD/f+
-eYABnWskOOarCOUrRJ5hV4FFj+9w+OPL25iaaEvHaAuqxvmahHzIPaT5v5Kr9Qiu
-zx0jdNaoq4/wJOGQ8rfMnXSjmuoMNgzTEs/H9ElNdBRfH50xYG6MACnVrZ1kGiCy
-z8BYBZzNUen+I0ek9SlMQDvGr0vRe4AeqlutABEBAAG5AQ0ETNmPAwEIALb8q/SE
-92Bg1UamGopUJ7lbqyebdVx0Fjf8T9MkEnteY0kvpEvluDaUWty393w4QRFPFCen
-Qtn5iyIiE0x+/xF5WlfP9kBMS03n6eXTs1pxgQ0YZ73qvzyZdOzg71isigrduA4r
-yXpoiTlWCfeStapimSUUgXxtsxFLeRVm14j0Xht1cvFCKpdxVZ9+vXIQZlyP2QqU
-zN46bwWwK2lNkKehkdSUPgUdEli/jw3L8rdASs6d8RqO/aiQN0R2kc9EA9kaRaQc
-mBboLsuZwoOCbyxPTpIZ7836b/KRuCM0sBy+RVNem1kv+905yWWJF32lZij/M01c
-OUnlnw6TVDJW5hMAEQEAAYkBHwQYAQIACQUCTNmPAwIbDAAKCRCXGwT1Zmm4Bac3
-B/4umKNZuUFKwTD+FTu6kRUOO2Rnsmk6WBuPm8h3ov2g6lW+2NjeeBib3fl+ehQ3
-IeRebLaxa0ZNAiajxbiMW5LNVC0hvqlsVAxP2Rv+DVoznI6L4I8vNEfa8ysbMY4T
-musAds4kbni7oHTUGA5bzvFgQ0ifDaFxFRvbn9ycDYFfatwDEbs3xgjewy1611zQ
-ef74Si6NR86Xit6v+056srmhZyV53e+pxGAVMw/qR6ROiMNrgLl7CPhtTwSYmSZE
-zQseNBFZpHUb7IGzk4B3ulwlhTcLnb7SUo5DhrBz5Et7XcQ/2mQOH1SrSEmoeyoq
-UfbLkuGneZv5H0KIMZ/5pV4H
-=3VLr
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    98FE03A974CE0A0B
-uid    Kotlin Release Key <support@jetbrains.com>
-
-sub    CC3328A2F49A80C8
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFhlXQUBCACoN2nTeSRVZnGoktKHyiCgeYQ/hEKKKDDAbWubnnQwonCTILaN
-Qw3GmIT6plmi9iy4rl+rJprSzDeQDZngQCx1KPYcXCrrc0pnjERDaogw9fC3c3z2
-B6+90qT6UJSTNmxMs5zbhgzKDWb3eaDmVDqVqzsM5xz9GxX6zo83o37fTFSbVbtA
-9+c100+KaAldVL/6uLeGoQsAIxtMH8GiOPiSjrw+XCQ5mbP6e+oYYBKxEyAgu1XW
-8jP4bF0rz2+1lkIGfWfYHZmMbmSutDxXqOXA9cZomhOayOSe+iczoxXkVXkQzMxq
-bG4ru5CHxPh+RSfpwA+9StLvzLeoFrBUlqW3ABEBAAG0KktvdGxpbiBSZWxlYXNl
-IEtleSA8c3VwcG9ydEBqZXRicmFpbnMuY29tPokBOQQTAQgAIwUCWGVdBQIbAwcL
-CQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEJj+A6l0zgoLPTgH/AkH+uBwgQhS
-xIfYNA/pEt+ni0eGtjClsFtFF89jjQQAAOMsflebvBmGB/ptpfAEp2QYqRiGX8Mz
-3cRYwa8JcwEVWbN8BrXSgtS3P5zlzBJNPSJJFqpXENxs0VOLZUd63ZbDgQ3h1DDt
-lP7VwsIlF/ogq/wql6gC4qdP9c/kA57eqvZeMrflSUCIUlN2XkeMZhGugWd/Juee
-kz8qMRXY/kEKGbojJkmrehLKOsFz/L8vOW9TLskFuYBIb9PHf2hqLFOOQ3z4o/NN
-fgrOGQVZxM4LWIsUMkO1hRiIdk6R0jLEdFJIOS0z7mGqKzODWNOVegPNhjUX1E7E
-viyo727zBJu5AQ0EWGVdBQEIAKNt/VhkI5bXMxoM2XYMh9MPz67sAaqc9Eixan/O
-ONftycStOVHB0YhfQ9lsNeLIb6qQvvesktI1exv18wxSpN+AEwroMGDSDfixhpga
-eOGzj8omXOTBZ7Bv73A+4dCVeoQ1F/ss4OkRK7Jx5jLM7TuY7IG64XSYy6D6QvMO
-oIxKdqB81f6JYDzVwszFvUUbDqVQIfhXcuCLAbYxtJVVzAldGBWR/72Uq8nE3ere
-eeZjHniADawU+XR2Egv1aMDvP8zUpWl2mRzOKA+1SJyXhA569435s604PfxPdESl
-KnMYlinWZNvL5rrRV15vYYU2u59ol/g27DOFy33UCrCgZ4EAEQEAAYkBHwQYAQgA
-CQUCWGVdBQIbDAAKCRCY/gOpdM4KC2NwCACTClhcW6GbsRaRHzSdnXDPUNlWf0UD
-Pz0amNp8mQwsygL+jW0awtrfxxSqbv+1myMQB7g6tLFGcTH+jqfkDsN2rpQ2/cnr
-UVmunMjkCnoSyhrqolSv9ow0L7K+FERmxq5QGorE/Gya87oK38ovXZmGUs79OGSt
-AeEnXXkta+dDlX3nyTGM52HEaabPJRv/eMoryZPgv86ahajMUxbc9LdjkdVnwj+x
-a5Ux6ZVuPGHeodq+MWTZuKM//qT9uXbOsgiKWJ1E3YPy4Ip7kc4ne950WGndzu/O
-3aBldqsxUstQ0abZXtAVj1j2Io/Jgvt9btE9i0ssfGT8HCatMFwsfi98
-=2z1p
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    995EFBF4A3D20BEB
-uid    Ktlint (ktlint signing key) <ktlint-admin@pinterest.com>
-
-sub    B89991D171A02F5C
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-RUjO/QWG6CIej/nl7O0g91NtlEY=
-=Ixqm
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    9987B20C8F6A3064
-uid    mkruskal <mkruskal@google.com>
-
-sub    80CFA7C482552DC3
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-vyMjyB4YL48bYbjwFEar/jLCQJj/Dg==
-=Mtq5
------END PGP PUBLIC KEY BLOCK-----
-
-
 pub    99CE9D9F22DC5C99
 uid    Benjamin Gehrels (used for *@gehrels.info) <pgp-key@gehrels.info>
 uid    Benjamin Gehrels <benny.gehrels@abi-05.info>
@@ -7288,49 +2292,2359 @@
 =gZhQ
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    9A259C7EE636C5ED
-sub    D66472CF54179CC4
+pub    1B2718089CE964B8
+sub    A182F48D9C2C0825
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-DG71mmILRI1wVgrDp5mFKeV/d20uMvMq
-=IIN3
+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
+yEpqZGNE2g==
+=OLRp
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    012579464D01C06A
+sub    CB6D56B72FDDF8AA
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFgnlA8BCACVtx3oLXcanfvwtMRwal6pLQ8IVMG9+fr4xGdbSHXCRNbosDa5
+agU7WeQMPhusSxJGaA3w7NOdjAwD/LeHADhDPeI6llJg1Fb3EyqH0NZaODKU/Or/
+dID/i1onAX1dE914J4lf3XvIAxGiAjmr3UvWO9RiFxRUkecMAMlCBp2FuHuvxkcn
+Mk8q9dP9Ef360wu8X5rj0kgP6vPhgl9/RhuPsUxlazb2Kn9Zxi/RmDKDiH/vDuwy
+WdRGFOR1OPV7l3Ws01nrs4vKd2v5rsUmsjvQ8ldxdrA1xzX4IszHRDgSC9PI8ItZ
+1VlbaKjE0L03acPfFTg/wRFSF5zsrGNbTmq1ABEBAAG5AQ0EWCeUDwEIAMGWqQT5
+ccT/Q1OypoOQGEZn+oRkgEdnzt8mjo7aOXd6pkNTkt3+LCkmb8Pp3/a3iYEfvSvB
+Zbb2JbY9xnmM8jBucWnow1iwEPxGhUuu3jlIpRsCwLk+utLkMALRkooXqanDoVRW
+xuVeFYN0as8nndgWiJT30innN4vfaR3x3E6/nS57zp5IggxZYsXTRHb25kaof9lg
+lHyXeypW7quKOP4SeES70PVVUnYZBlLpnX8a2msRtJiouWxCv/kHnYsjW62vc7nq
+vWAsSsfBT61TVx7yI9CckVFBnkpG1I8C9WpfcR+j9yauptgUMfrfDTFg3Aip7czM
+SoL4Jpu7jBcXy9UAEQEAAYkBHwQYAQoACQUCWCeUDwIbDAAKCRABJXlGTQHAapGT
+B/oCoCsuJ7617gpcuEAXxWTBfcXKo4z8ObBek2RUh0AY9aXjRYSzwwbtVFRC01Es
+r7R9b5ScY7W1TDQBKL0OSRZ3jwy7/hA7k8P7xAp3mC4+FdHaHMH8nGz2IbUjGWl3
+Yp01NRn4jc8gcnHnqcUff7PXsRMUtJ3dnbsIYOrBAbWKld07RVEQUyafgUfdF9cx
+e6P/slSZxATJrlIPveB5bgcVDMMw1UQNqJL9LWP2IM7xcljOBHY7jqwqnQ4pRER9
+2VzhLdtsdwF0H1SuERpDxBAuibchMoCfQ3HER+K2mTUoJ04xog7MQs2aaMwSbem1
+LMvNBZ/mfF7QMYfMV2n7rbIk
+=PoPV
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    0315BFB7970A144F
+uid    EE4J Automated Build <tomas.kraus@oracle.com>
+
+sub    7CD1B9BD808646B7
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQINBFqzjCgBEADfFggdskGls5KqMnhvePTtS4Bn/2t9Rl+Wg3ylXgy4IFd4bnI2
+9f82dVM/nobNqAnhOp0wEaAcw+57xBx3rjjKQbrMzUweWeL3uJdTwtPWoyzzsUP0
+w4q75/K8HlHdyFCJGjKBRONRRHS/7ImCs+Y/Roz1BtNMKXz3W0aggr+TEFwHbnMk
+EeBztNBSyNSSl9hUmJmS+PJcOBx25UKOOql6EaghJ0zGF35Cyzm9oUTfGI+I/9vp
+3wuNO7sserhG9NhiW/5IcDUTfSxz8IXh2PI8tKelR3UcswyqqUUpSaFxUlJB5ZZu
+B4u6myh3F391PzAqoUKOXLlVvMRzo4KsHoRDMWxFVxvfNR7ImksEeygPo0Z4JpLP
+YQrLeKrb4LZSWNEIAsQOAnNv7jlr3hNMs9nUwPhcanEX5UKMXPJO80wtJASkLnhm
+eXrcHZnQ2SUbHPyz/CdTCOWjz5JveXIKCvMAeP8CTj6hLgtuYnw5AKryCdH5Q7PM
+iy+WzsXEFIJ2ebwsRTzPQ/qZjF1/fKYsqSQoIad6+EpQ/3EJetyQ9IxXDOYLbQk2
+R/xmaztIO+K+vGqjQofX6x4rIQB/iXB6r5u4HOQpuAM4nus8WsGfRourS2017ZD4
+NI4bg9yqXOQAMHrBpUluI9bs8qJRVcDUkJx3iWNhlTACGyXuabPFQ1z43wARAQAB
+tC1FRTRKIEF1dG9tYXRlZCBCdWlsZCA8dG9tYXMua3JhdXNAb3JhY2xlLmNvbT6J
+Aj8EEwECACkFAlqzjCgCGwMFCQlmAYAHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX
+gAAKCRADFb+3lwoUTw5qEACJlMcYHADE+X+swvP2JStL+PiN6+UDX/q4BWQO7jWS
+dmoWEoVRNIqnlSeo/s+aeMJlVb57Ks+HrVLNOOKT+ycxC6qkbc2yjLoQrNt1QmpA
+6hgQQywmmc3CJMq3G8n5J3I3VDPDkgmcLdpe9wDAz8U0idis56OYB6AIfvjhHpkO
+EMILq6CCQSDs3a1QiHnjJpff9+WarVF+i3XHnesp4oDJDIFsr3EgxhxxKrh0mO95
+QZcIKEY7Ky4/KlQV20Uf0k9WUATbOiGr8r7tqjHa0rczqNOpTLKPFB2kvxBujwxU
+dbEQmnTdvNjJLMP4KXNdX1NIR9xIHvjC0uDF9Gc9hKbWPdC+3dj9FRb4Z/IuUIAd
+1TSmCy3T9KVgGshkzXn/OAMIq+XHfTOBLnWSHNdGn+NEfEU0mJXuFIphjrWBzTZk
+H0S+1JQb3JXbQhAq8C0OHDy0wuafwCdhKFTxV2qajslTQr2C8gIASybZZNOXdpL8
+/dY136VvV83hVUASYWO9XV7f8x1Jf5IxOhkgTuF81VWsh3CuHnaM1g18Cjx76wuG
+2PveRcJzl2Hl3FdHXEg7Qv6l1GpoHlg3wI1S4Gko3sBJWNDcE8ZsbVAGPjyqXudT
+ohQ+SdIEkML0JS70nmsOhimUKs6W14ngAnjwdThlNjCKRNQgCFDhp9g3Z/K5iD4a
+7rkCDQRas4woARAAufAI5QH0KZpOM2ZwkUbDqEJLOhxXhFXdvY03TPZ7wajL9dOl
+otV6yHGlKZAInHPJla5c+Z8sgZzAmLaOg4Xp0qk4gsmg5uzlkttRrFzoN00iZP0t
+YUXKGRbsYZyFm9AezBnUoNbrZfu61JumfPY1x4ggHEKUaO910CjtjHTlPa94gFpa
+EFlzG9NdmFgVvpCrxEOy8phErVSmXQAp9vgBIVur5TOvg5RP4zrQQcjjkjAVjGMJ
+Q8oVGtfFXcpve6gzfnl1Ho0QtaEAy6HbyzpyNZdp2/6XOG69MlZP6TAZ0WAQ7S9r
+3FpE/8ebUjteE7uq5LzBmVDYXOjhDqtwuCzGwPt9Hjf0XPnea288HdfsLuLQH4UD
+vLxZKYuoQIvkBWxm60WkIlQl+hySGfxn/Ng7mU0ktxiQouxtjAZDzEEheYRZWj3n
+guh5rTgCrys89bkv+CgQ49PjSTrILe++/QQYzxIa/VmtUrDeIaIOzd/j18l/1qvR
+/7GDeVWj6mX7MplDmegRgXVTpTRALhwFV/AKWoXZa/YaueFNVPiutHyMpo3eg+NO
+L2xmCtwlG1q3mgVACHRZrszCa4v73iFYhuObQaMY8+TJwKaLn9siLxcvRAhb1vGp
+oNuqGfTX+yDpnld+RDzFOjvNvb7lyDpGHpiShGg1UryOPu597s8tRF0agCkAEQEA
+AYkCJQQYAQIADwUCWrOMKAIbDAUJCWYBgAAKCRADFb+3lwoUT4IBEACkLeajT/i+
+p8HSkq7aiEPVEN+sKNzxu+x1UDkF9XGtmYFCvPUDJddt22X8stVQU9313Wyj42Vg
+Jark/O38dhXNuQxqFhYa+3ioIBshyYVnHX5MN0O0vmf6kY3w5EHu7FE7cVJlvoTx
+qIK+aOvWNmbzmj+w/g04DX+7Uy/BRQKIX7c7kjNYGVdlhbWbybv/XqqD0vD4LRUv
+WhZiOwMSfvzw9nY8YUmrpv/4ezmZMztPdivUdMLHfZrxXi6VFEVG+7u7LGcEl4ss
+VRzu9YyQj5IMs91jj8j8O+Skw5RoDUNQauMRKyzwdn84pYX0I/vHuWsuyLC2R6vT
+bj47z5L7/BgQZLvoGh8Z0jcd2Jqh2ryY9PwsaOedZF3ZbYsDLN8tvdss9QfUmfVt
+iexNeSh/nbUy9Xpv92RL02RNIznUe3lv15CcQ3JEBAMj+quh3DRpCY+U2RgEUyvv
+W0s5r7RL3GTHoSTNlKgIsC8ydWA+RT5a3/DP+LA1aLvcEIjesSxlikPzJo2KzfUo
+jysu1QDVBpikwrIwK9Snh/fHX/Wd50GmVQxPM04Fvi/NEH8UpRw8wCRvVW9eP560
+ycuD9AGKz1mchszh44i0yB8DHVneTzEfq3CgoERJCJl7YD5wGQdNHavNLP72RkEM
+ov8fTyW5CUsFo9wQlCvfBosOf7XRtyG9cg==
+=qap1
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    2BE5D98F751F4136
+sub    C7FDDD147FA73F44
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBEwMV84BCAD0u42clJ3hghKlMGwFA8PPlPgSEZjyvs2dRCF+dKWBaPUnR88K
+kGfWB66jX6PBtHzeiVRa078lL002S1lSth2A+s1UfYGS5wVbE938wO6PCMwgoXJ6
+0MCLsTLP54MDlly4tq5qV0Zme1wH+9n/AC0fbKkLsEWbqXhNJLJ7F8TUh6hPziko
+mLAZCb297KeEDJ3tFN2zkzjx7V79/nkA1sKHQC9INdj5jXxkglTwZhcJgPbxYzCz
+nbGeczPxwzNrN/elx0DDnKEpEms/nURfXETsnd7t2xuUuAYhpGIadZOM+LojhP/A
+Wp0KDHsiSc5tQ0oJE//ydBksCEKid0Tu2bXPABEBAAG5AQ0ETAxXzgEIANGJ24GM
+VmW0QcuT6ykJXtjrgXW4HjOEyylQ6LQJZcCt42tNA95ZhAAiNgB0CBBUuOne7y7H
+5IW0wxnrO8qOStqvjbkUWVheqA3G0AlokZVWQRk1LjmBlABJVeHNBle0248pwrXe
+0lY3NVVywxPE1ol9DOasldSv+nKyMcRFgkZ7rPFnVaLRLoozuAIDwXXaRPczN3pg
+iegwo9BLqYV5+0Ncs24+G0hO6iTToX4166GvjWa0e0YHuJ/zztXPy9CAJ6FMJy4Q
+2ZpyfmIPua653srMDty1igFdR3TVNd7xIvyhw+laJY9GxWM0G86JOCpZhrTWDDZi
+BhgL+sF1iNPcC8kAEQEAAYkBHwQYAQIACQUCTAxXzgIbDAAKCRAr5dmPdR9BNoGn
+CADj7y3qDzkFxiHbfX6RlWJfaJ7wvz2r5D7WOiiyWL2y++zMVPVEhpPSw26b8Car
+4CjRxoG9TqR8GTO8yLlgQ1mPWovaxcmfNzJ1GBQGKD564fKCJLwVMaMgMz8jEANd
+FQNA5Ka25MdixHIYafKgY4TDATQYAHSs4MXW3Y1B+54LCJcL218vdWPxQ7k8AYLQ
+Suei1+1yA4p+tpjxhr+HUuFv8tA2HUk8RcoyRfUH9fqAEuR/u+xWm4kmE4qMIgio
+665T8WuTGYLkUDJEh7F8+L+r+f0nmCxfPhIWenVOrjpyzyjPlNfaweqk2dvHG4wZ
+ulntJIX+jkiE3IPFPSOU3gs7
+=s65m
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3D12CA2AC19F3181
+uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
+
+sub    575D6C921D84AC76
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=hALf
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    280D66A55F5316C5
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFOOGVgBCACiDwUZOc6943aBGUrxikkfUnsyZfHtF9jihYmA1pSgfsye+JxR
+oG9QWW9+3qx4L/d4ZEqBftTWpsjyrY7NyMaeXtJEjE0vhiWNehgXB1z4XTJ66zCX
+nhlMvixGLQtfZANqCxOmtUGoSXw+oRFY/SExAioSS19HlSxApSaUzc0prdujqp9k
+vOKKIBWTBIUELdDTA4+enfzkAnIINUX9LcMTmO+Fh0AvfjDbq4fr8rBglyVUSCqt
+TOT4oGZlbpsq9TOKrTXh5go0rm5KJcbgKvX78ZErK6pcpTgNA+XFXCz1rQ9nkIQt
+HxWaEMJtpSkIvHIBz9qoAroGtNFzz2oF4ElRABEBAAE=
+=1QGy
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    164BD2247B936711
+uid    Marc Philipp (JUnit Development, 2014) <mail@marcphilipp.de>
+
+sub    EFE8086F9E93774E
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+Qw==
+=iceo
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    98FE03A974CE0A0B
+uid    Kotlin Release Key <support@jetbrains.com>
+
+sub    CC3328A2F49A80C8
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFhlXQUBCACoN2nTeSRVZnGoktKHyiCgeYQ/hEKKKDDAbWubnnQwonCTILaN
+Qw3GmIT6plmi9iy4rl+rJprSzDeQDZngQCx1KPYcXCrrc0pnjERDaogw9fC3c3z2
+B6+90qT6UJSTNmxMs5zbhgzKDWb3eaDmVDqVqzsM5xz9GxX6zo83o37fTFSbVbtA
+9+c100+KaAldVL/6uLeGoQsAIxtMH8GiOPiSjrw+XCQ5mbP6e+oYYBKxEyAgu1XW
+8jP4bF0rz2+1lkIGfWfYHZmMbmSutDxXqOXA9cZomhOayOSe+iczoxXkVXkQzMxq
+bG4ru5CHxPh+RSfpwA+9StLvzLeoFrBUlqW3ABEBAAG0KktvdGxpbiBSZWxlYXNl
+IEtleSA8c3VwcG9ydEBqZXRicmFpbnMuY29tPokBOQQTAQgAIwUCWGVdBQIbAwcL
+CQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEJj+A6l0zgoLPTgH/AkH+uBwgQhS
+xIfYNA/pEt+ni0eGtjClsFtFF89jjQQAAOMsflebvBmGB/ptpfAEp2QYqRiGX8Mz
+3cRYwa8JcwEVWbN8BrXSgtS3P5zlzBJNPSJJFqpXENxs0VOLZUd63ZbDgQ3h1DDt
+lP7VwsIlF/ogq/wql6gC4qdP9c/kA57eqvZeMrflSUCIUlN2XkeMZhGugWd/Juee
+kz8qMRXY/kEKGbojJkmrehLKOsFz/L8vOW9TLskFuYBIb9PHf2hqLFOOQ3z4o/NN
+fgrOGQVZxM4LWIsUMkO1hRiIdk6R0jLEdFJIOS0z7mGqKzODWNOVegPNhjUX1E7E
+viyo727zBJu5AQ0EWGVdBQEIAKNt/VhkI5bXMxoM2XYMh9MPz67sAaqc9Eixan/O
+ONftycStOVHB0YhfQ9lsNeLIb6qQvvesktI1exv18wxSpN+AEwroMGDSDfixhpga
+eOGzj8omXOTBZ7Bv73A+4dCVeoQ1F/ss4OkRK7Jx5jLM7TuY7IG64XSYy6D6QvMO
+oIxKdqB81f6JYDzVwszFvUUbDqVQIfhXcuCLAbYxtJVVzAldGBWR/72Uq8nE3ere
+eeZjHniADawU+XR2Egv1aMDvP8zUpWl2mRzOKA+1SJyXhA569435s604PfxPdESl
+KnMYlinWZNvL5rrRV15vYYU2u59ol/g27DOFy33UCrCgZ4EAEQEAAYkBHwQYAQgA
+CQUCWGVdBQIbDAAKCRCY/gOpdM4KC2NwCACTClhcW6GbsRaRHzSdnXDPUNlWf0UD
+Pz0amNp8mQwsygL+jW0awtrfxxSqbv+1myMQB7g6tLFGcTH+jqfkDsN2rpQ2/cnr
+UVmunMjkCnoSyhrqolSv9ow0L7K+FERmxq5QGorE/Gya87oK38ovXZmGUs79OGSt
+AeEnXXkta+dDlX3nyTGM52HEaabPJRv/eMoryZPgv86ahajMUxbc9LdjkdVnwj+x
+a5Ux6ZVuPGHeodq+MWTZuKM//qT9uXbOsgiKWJ1E3YPy4Ip7kc4ne950WGndzu/O
+3aBldqsxUstQ0abZXtAVj1j2Io/Jgvt9btE9i0ssfGT8HCatMFwsfi98
+=2z1p
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A1B4460D8BA7B9AF
+uid    Mockito (http://mockito.org) <mockito.pl@gmail.com>
+
+sub    BA6D22590B3F9BEA
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBE4waOEBCADHDHNTq1NRR5TSooIrKY0BTQnaLfjKZfcJOwp+btBJrOUO7+e/
+V3M4DZQclj/e8SBiVmRPK8Oyrv6i5B5+Ee/qNlLjWiO10AJ/PLRjYdoW1V6PlTm7
+2aUxQ/wNXxDcOoH8M7Y4fEqZJ3rFuta8ogeIYnkUwUk3gc5YKk7KJDbiOXQfRxlY
+9MeVKyoYfj+2Szaaz98W097Pqf9+7i3WjB3TKR1pnWlzF6rLWIGBJqcJuTGLWUAB
+hwOMoNiIBAqyGu8E4rT8pP9OueprOeIjyKgOBWV5yctIxd7uu51sGR47TM2wmMmm
+r/Kz8FkMr1efof7Bx4mJuup6wQXonRMVBqpLABEBAAG0M01vY2tpdG8gKGh0dHA6
+Ly9tb2NraXRvLm9yZykgPG1vY2tpdG8ucGxAZ21haWwuY29tPokBOAQTAQIAIgUC
+TjBo4QIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQobRGDYunua/0Ewf/
+QRv2EXl6rlgV9LgXifdgD4ctYsMvhmJV0uaAaTvTcNpbYL0lG8FpCs0KHvBLWkoq
+esOdJYT4q/9msnBAMXS/9ckteDism8BwZR0qi9qzASzzMJEH7cdpr1te17JR0fl7
+8cgbGyw6UGfRSay9c3HyV0rCuQSFPMwQkG5YVpRiN6NSnYqDczS+aSjd6JCKu/4I
+LVgu4jH8oaUcGJEaWLmExSUzrUv9HFZXQJxLzrFT4k6AVVzBQCuEYW9XtgosKwfo
+0GweBXkC7iuO+bfNi84vyRLTkK50h4+rVNkyvNlgqknbeGrpvOvGErYJy24API/5
+TNP+ZLCTl7Y+qQejTFVJ4bkBDQROMGjhAQgAxDjlr6Oakgs+5d5NcIYpJ/8S5BIU
+aVlmjKoaFJoAy46WzvvpaTC022js1ZSvrM8wlSxSk+kD6/FAJw2pJwRgVrolOYJQ
+mqLqgTA2QSN+leWo0x8gC1+QXzrquCOd7m/+h8FHUDaxc29XQ+7+HtNvsSxY9dtD
+zgQGXjPXSppVCSiDNy1IuIAxmEAFSxok12Glxq/n2DFx6OnVB+5vvt0C8nQ6w0hQ
+AQKPUmO7fNav5lZMfKgR95NrvF1Hu5V6DZvpbXg6+NWfA8LsCampARrou5qzy67h
+b/+KKGHTDMOvZZlGw6oSnPngqmh06QqY7P4PKVkOo3Vb6+02ltyZ95RgmQARAQAB
+iQEfBBgBAgAJBQJOMGjhAhsMAAoJEKG0Rg2Lp7mv2b0IAI5pDzLtBGxYhmO1rSDg
+Y+JY7ZAr4srW/7K6Zc0RmWv48JsZOf7T78kIrif6jrF+ZwBLrdP93umMr9aJ/mJg
+lr+0oag0ZVhEW6Jb7dgiRn8F9+qcCs6lyozAG805oW2lULkwqSJ1xNs79v9RtOWl
+I5ruLVbS7XhGv0qH+ly1xpIuYOzNvpOgj1pC3Pv+NuL2hrLUZVg1vM9eCM3TDVbD
+yJZrxKdMemMSGHHsXWHtn8t4BT88kice4weDq8GBl1Dx+ApO1+iHj779nMX1Drfa
+xtJLTRqH9fhHesISmte8fPiydGT/HCA9quKUuxyN4W6Uwu+Uov12cGV2sAI+H5qP
+hF4=
+=FXjQ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    BCF4173966770193
+uid    IntelliJ IDEA Sign Key <intellij-idea-sign-key-noreply@jetbrains.com>
+
+sub    C9F04E6E2DC4F7F8
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFKneXIBCACtnX3ZQmPujf6ocvdnhsBheze71DSl34TfebyW2Qt+g9NhMxo4
+DaJy+iFNnsaMwLZRr6k/qf+ISE3A4opWAQlbk+Wb5s6DPPA2cHH6W4GdkxtuJzqt
+tFn6YtkFhA15Aahr/vz31NBjUJlBmO4PwvkyxiF/MYP6TQ/AHar4xP1RxSYEPcCi
+dIQczQ8nXzya4OqOyTfibeGz/eiHHuwTLHi3Rd2kihQnlRQdhE1rmm8uTyzFe1H+
+P7WW7kQgygW6yxQ3J+DXrG8kG+nbe57ZY1oyv3F/fOBxzn/kuoKHZ3JJEMJmTIrT
+Lr1ngCZApgteAynRHk4t/SYZiyoyqZCuBcwHABEBAAG0RUludGVsbGlKIElERUEg
+U2lnbiBLZXkgPGludGVsbGlqLWlkZWEtc2lnbi1rZXktbm9yZXBseUBqZXRicmFp
+bnMuY29tPokBPwQTAQIAKQUCUqd5cgIbAwUJEswDAAcLCQgHAwIBBhUIAgkKCwQW
+AgMBAh4BAheAAAoJELz0FzlmdwGTIqEH/AsyCUbhP0m7BJRULiYIWyB1WHK0L8cm
+yLid5X1P6VrktgcRbTMEzn4t08eeqb978P+GHp79xgBU6EQ+2IYiyeeAedZ/m6Lt
+Kv6imJsFPXZO3BLeNfwIzPC8QXdrkyVqU0vG/pSdULyBpc1aGNEK7Hr2dY5vQTX/
+sUrlwxDEH3LCmOnIgilf/M927Gelond9VmUh14HqCqtybv49XQiMUdkVkXmzKNld
+QQk+O24XbnSGOknPW2sADDglwoMu8EZTkZGdetgM/8X9PTBWWd9pEV32AnoYNMtd
+d2ujH+4i7AhH+Kbmn+zWYBQv3J3yQWj/dmFlOa/SFilLmmAtBEgl7wm5AQ0EUqd5
+cgEIAL3PEOztIFUibB6FYEkObVhsDbCnHw9yO5MAvAWB60Ohf1J4T9QK63jZ5/Ci
+qcDrw+uab9I+Ruz/SgGyFS0UXAkwfTICUdhT5kUzZmGyoj2ul+iFDP9uUdEgSgyX
+XakrxBbBPzNaMx8+GyIXRVFyRTH7+1gWgPQsdN1sGYOgZ+f8TMzAv6sxu0JVzjKX
+AAbXdiZTyJh9d6h1jS5Icilu8vRwn3Qc/ZzstBRk+eLbb69wS9YGoUlzYvDBz+5t
+iNwvHUriKc6zVT4Edngcr0mKWTdvD+AsvZffU0XK+vxbgMuRWi/51qb+VgK2gFeA
+seV6a+D1059u2+5Pn3h/Fv/vRAEAEQEAAYkBJQQYAQIADwUCUqd5cgIbDAUJEswD
+AAAKCRC89Bc5ZncBk0qgCACdP8kyUZVqfncA2RsQH38NFYhBz5MAEOIhCm7qwPC6
+XG08CUZfpPXdUbxZGUliE6vhfj7rZbvUKKHlcHDPobdTJqGof2jt2MfsjJ18JY0e
+xSWuVTmNmqAC3gsiMfEGIqjQFWonfm0Od4AvduLuc0TPkyfr0gobakgYvhDjk7eQ
+vgC1QfKlk6hHA/OAFW774qaQsyrANrFevRa7CBQEob6V6N8aV1vNxgl8a6fJzPTN
+BOOmP0mq7xk6nykQuqYTVFyqfXN0p1bbTxHBoW/fvdizi7zMSsuBkWUtfG1wyN70
+uoEQzSQwqgWCIaddzrPZPmaZ8CtzzyB7+JdSNItBB2Sp
+=3tsV
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    E16AB52D79FD224F
+uid    Google Api Client Libraries (Releases) <google-api-client-libraries@google.com>
+
+sub    5A34A5E06B936F93
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFF/4bYBCADTeOLZiVGNbjlPrwG7UcMl+yXmEqpf9dB1A9cuicH3PWXj0WOb
+LSzHjzoRvRekEqSUmgoveey1lPuA2qjOUkXY6Kiyx+oLiG0/ObJHUQW2O+tjSQ0R
+ZXKd4ftaw65SLbwYO2JHzj5fLC9j2mZQiRjGs1bWM58c/dOKp1XaOc1/ffcl3L3q
+Up64jWH9r3yhPemh5SHo47UxNvItdaJJYnt20azpZj9oq1ebUuQFMaQDc/RTALhf
+Xb4BWO+z2PCmChz60i/Ko2ZKPJV2TqPqWO+aklgxTTwZZ0IvgFm/5n3Dtn5p5iGf
+qwKkHPJIDWc8cWYtxC608LFdqiAlYmp/oPi5ABEBAAG0T0dvb2dsZSBBcGkgQ2xp
+ZW50IExpYnJhcmllcyAoUmVsZWFzZXMpIDxnb29nbGUtYXBpLWNsaWVudC1saWJy
+YXJpZXNAZ29vZ2xlLmNvbT6JATgEEwECACIFAlF/4bYCGwMGCwkIBwMCBhUIAgkK
+CwQWAgMBAh4BAheAAAoJEOFqtS15/SJP6NYIAMbwdE5S9M/5tIhLPg2arbvnxfh2
+i1e2aKE6PcRlBGeNq8YzWQStIewRhoDbY4MY3dG0nX9wgXU6XFJNxjyjE5Gqpyrc
+xEhs6r+HfxlGwB/OCaDMGR89lcWn1xF7uju3Qsdkb6o2JuCSAqOh4M1zIqADSMMq
+OjuSJ13GddcUFQ/MEvouE7Leesls9AM724BNZfnyJjIfJqfk38rXCxKpMbxCJ2v2
+louDMu0LClA1efdvDBPOrc8+A74dsVh7cQqMoe5lCqrcoC5apMqlJ71UV7SIBNBr
+7+AD6p0ZdGY8C/pTCl+NGe/Skjdqk7uEbmyePpm4BaJTmbwIgiZdGxthUgO5AQ0E
+UX/htgEIALToF36j45OitNd4k17BSZJKnuS3uIL3tTw0fRqLv0/3EBaj4zD5Qc5Y
+TKFgM66Bb5ybI63cwYhfSBHP2ZRS7oNdDbPd/30jDKNvmcDjIhGLT7bZJwC9SJVi
+fHuvtzr6wBR8xoItyYva5D3ax8ZvnzqIbMPeHou+0ZnRYSPjy2c2TxAJTjDOG461
+h9mVXDdK74wL8kQsIxqqYRIeEdmrXMrd/B8IPwuIv8w7LwzadNgRnXaJ5Q5bnMvv
+hVLnWKRt5aiQVBxc67FTujjqFF4Y/1UJb311K+1LSqNrTT7As8nhf2Gu/Gb47kw1
+bb7wBdKv2Swx5mYqiW5+ARQU7jCiUVkAEQEAAYkBHwQYAQIACQUCUX/htgIbDAAK
+CRDharUtef0iT2SyCADAznSkG/8EdIU5UQhp/lY9h3WLzYI7aARw0IA6O4ijGLwc
+ytO7TaWjEzUCMZdw01vAjVH1xNn9QvTgQV+2GyqyBNsjmgGt5/tK/+JtMgXUwr8+
+KsBf3908rOqAAZ3YGyM9N8sRsyfPB/PHfv289sL2IKPxiFTGI0NGS3qOAKQ5TZvV
+7OPsP5+yHfeJG/XhCW8p+nkMGpH4rE8Z6NKgLe/WC6J36aQ4kBfYneueH90Dc400
+rfGyL+0Gn1Rzuj2KFuUFK6q/GBlFaNo0azCqtdpcO6C3GpJYtISxpQ1Rp9kSEzSC
+L3tOli8Xs6gsruc+vCSIy8lzRw19ZO9G7qhjcHLc
+=JOMJ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    CFAE163B64AC9189
+uid    JetBrains Compose Team <compose@jetbrains.com>
+
+sub    57CE36BB68F1BC57
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mDMEYYx3eRYJKwYBBAHaRw8BAQdAV7zh1T+xL7mD2O63rTIvRfQ9kwL2Gvq/Q6PD
+9apCe2K0LkpldEJyYWlucyBDb21wb3NlIFRlYW0gPGNvbXBvc2VAamV0YnJhaW5z
+LmNvbT6ImgQTFgoAQhYhBCByOmOZvAYBVCg7N8+uFjtkrJGJBQJhjHd5AhsDBQkD
+wmcABQsJCAcCAyICAQYVCgkICwIEFgIDAQIeBwIXgAAKCRDPrhY7ZKyRiRslAQCE
+XiOkwreTSEDg7UXsRd1IruaQEUkrAFsk+1/FkqqvcwEAiAx2FgUTgDV8RoflRcaB
+kqPfkSvkvUBuJBQwqjGuhwa4OARhjHd5EgorBgEEAZdVAQUBAQdA/AOwflH/rum1
+g1gvFPBcqhvFOcN80VUb7OqoENSzUD4DAQgHiH4EGBYKACYWIQQgcjpjmbwGAVQo
+OzfPrhY7ZKyRiQUCYYx3eQIbDAUJA8JnAAAKCRDPrhY7ZKyRiSq0AQCEwGRGd5MO
+TT2kKJf9CphX0LOsqVBBSNvzoloV04wzywD+P4TmIz/CsigszDQy8yl1/rGvszo7
+gaUwnfnqN61JHgA=
+=DQGj
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    7C30F7B1329DBA87
+uid    Ktor Release <ktor@jetbrains.com>
+
+sub    72FF58594F983302
+sub    3967D4EDA591B991
+sub    0588BC69A286FF16
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBF+TCd4BDACbIA94MfIWL0SpvZwBddXgx36Lp9GYOWNgGoQCWSvk9vaMrLaI
+rEll0xnoP98CfBQYrVSAmHDMhSLBCjNB3V1Sdz8GRdOG7HUffF7Cqwbm3Fxo3H/h
++Tsrodv23NuvKsDpgglUL6nJy5e/FO8y9dcxLXRRVdPFDhJubi08SiUJy9FQbnfA
+yb2LuTzXtjDmjEsMZpdpQUlQkk0xNDkrrq+2miwxemVd35cnVQCFP0K7c4T0ksGg
+Rf9A2r45DBbPfvwTL+ZbrGtCssUpCneWhPl79UsMxeY+vJjEggqqqRqbHRn6nOQd
+3gKSaEqdALZURPzvkKxLUeUUtMk/tkFdsNe/ea7edk6G3MI4dbUY7p0XLS54S9cB
+1JUAHNEFtuJQKGWNuwWO58Yun1EBtOdUEvnIIoQ+CIN/XeKrnEIXE3LSblB8BR3H
+bqX54BMe9AzsmDQtc5pUOm2pfvCoiv8xFXQznBg24dGqo2A/jMoUnGj6oRj7k8mt
+i9AdPLigldr0S0sAEQEAAbQhS3RvciBSZWxlYXNlIDxrdG9yQGpldGJyYWlucy5j
+b20+iQHUBBMBCgA+FiEEOUy0NsVpFvwB7qSnfDD3sTKduocFAl+TCd4CGwEFCQPC
+ZwAFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQfDD3sTKduofP5gv/WRDpats/
+AbkXtXF90tNmdLomqzrLaz2dmsmekVjHnppEDZAJDWgHKuqi2LL+FU+8RPZj91yE
+rln0/LmOb1gGAkYhL5HIdSKPhd1BYrlObYIvxoarEi/U3+92B+13621qu4GEV96e
+luRXXe85vncuZiwjwPQqmST8gsAD17AiRt71jUHCqQUhsEE3C/5btOrqvM0Bhh+3
+QDUEoJcl1KoQjkPYhSDP630jhgsq0E22Yb1CWSXbwlJZTpmidAKICurll6YFhHQN
+wL5CLj+DjBJfkyC6nRDK1fX1IyU5jN201iDYMh+ibUclJFF4Lwl/ISlb/8NdhbPS
+SnNehscKyAK+xZ0w9CVfTVOIl0qx4SgwfoWu9fi02vQe60fK82usbrNJl+jWHAJY
+FcZjQ70cU0JpFVwhWr0ffOLD9A+HhiqzL7SBASapY4w5yLSlqZ5BOKcZx7NVqtXI
+qPgmbrSIYoXEzz4HQb+oCeXH6AigT+pxZJXpyEQudIaBtC67Nern3mYbuQGNBF+T
+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
+=/gGC
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A730529CA355A63E
+sub    D5A25EF82542C54A
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEUQYOcRBADsCu4zTVaB4TOhV7NyTvHhG1bqN+3Va5t4vpGQJg4M4U0Yu0ut
+4bCZP8I6rlXGj+TqDKVUx9kfGpIKX6Kw2TvZUYbHIDWh3UhQO1hD4xy4b8rOak1w
+3vDAMYA5L/jsZshNHp++aTgmvSoXGS5S1xsjrbrOics6iTtHXMV9TCRelwCgkwGj
+WHzPJnlSj0z4jAlRG4ZubAkD/3LOfrXtti1oirfDTnBZcxhvldyCT2yiE3LRe8N2
+ijmtNO6fl2fqXSWuP0L125ytlOvww1r6Gd8sVXiVwt2oKZVQ+A5028BbHa0u4e3y
+54nA21OBKLCC/hJvyOkPf9/kZk6S7fV+Tour/auixX4WqUg+siMRe/EwHw6bQDD/
+1OK8A/4rVPPCDTLvcQbT+B3z0IEfryMkivJMu7dEoENDXDK7N5KginugnCpJd+g9
+GbYgTYI2YPNB6A2eaR4lH8yQCMyDXC5+bGL+1NL3SP1qR4JE//nUcbx+iMTYR5uX
+kwmaGMXRl7z47OgtaWM/dVipNuNaqkD9WkuMGb4rdSNHrI+amrkCDQRFEGEDEAgA
+pH7D8VkxWJgH5zCO7I1m2ITBf8pu/McMCvpCHR7qgQp4yvLBiQ+AXkbQPRPnxO8v
+QNlSL7wODfYI9hKDkoi5pFNlzhBI9ivehUrfdx3uMIjowZk+UMBhaiH4Ppazkw3F
+V7JhKm0rA9VX5HnujGmZjWymE+yVRJhR9dy0XQo+b4691Ve8Ce9L7j0j8BzCcCwA
+hTOtEKxBnion46KLgr0caDa89C1HG8QJCqQrN+HRbfj07Zs4HjJl2CuJY6ql/f1G
+lGxJYZT0FxfIst01dAdNFppD8JJ1I+PYErWdgkm1rQDkAZXEN7rwtihHj6A0EEqr
+s1ogkXzyXs05fJurUtI5/wAFEwf9Hqv0J5kyzSA3mVhSzSY1pOheiVP6pWWKCsZ6
+xLM90PWekAHsENvvF0mtoAAOS6HYKog5qDHJme7jr10wdalynSfgCDCzt1qm2dvX
+vEk69j7vqLmqAkKEir//1XaPlGKxA3EYjl4U8HxdqOhw/FApWRmJncezqeE+R+uD
+4pMugi7DLnVa90hlPvRNYfButXXS8p7dhuiCa5ebPxclvcW6F/mf6ZDwDSuhkddP
+Du7OD36ebmiD6RHJwsfn/uOz4sRG5ogYNqiB5OOkKO5zBVztgcmWc3ACzNCbykin
+DmNHnAaeiPWR3xTp8ZwNa0BDLGBX5RUsUhP57nhQr0ifllubsohJBBgRAgAJBQJF
+EGEDAhsMAAoJEKcwUpyjVaY+pVgAnjLQPFKg6QdrUiYYCQactc2Gx9OlAJ9r5x4Z
+Pk/ZgTDkz44EfZS63bJ2IA==
+=6Dub
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    5D67BFFCBA1F9A39
+sub    DBE749136BF76809
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFUHdtcBCAC5xFdAcSc5qQsPkujcRdzeldrESZBo1/SfGwFV0T+lgp99QJuI
+LDwZ1OEG/lQck59J0JRdAgxlUj1um5LzNYexIJSdxRz2DffQ/z9R+hw4DF2h0fyP
+0lXPOb/sIYJyQIMaY7Rw6NJ9iiP2Q+yAd/rL34NbaelOjNy00rQkVNBixp88iZB8
+WjzHAZnCy9nz5nL7fDz6c518PaHMwVnQtt6Aza+fZ/4Na5NmKMvLC01SLFSKqV8+
+j1T0bh50vss+7rLBIYjuq024WpNdZjIUdbzsLFRZTgmv6nUKtamlDVu++qDV2tWE
+POV3OyXAPCxim2+kwVoBCsJbhFC2NMo0P28pABEBAAG5AQ0EVQd21wEIAK88nihe
+mV8Hm1g95BXaqc1UCRxXOnYT2wOmeS7nkOQlFzQNSsn6FIRCbSYUae6Q2Wv7NqvJ
+OGmiBCaKXgMSq8iEEPrbY3Ed9BTqiFtoA2smBswA2Do6SjWg9kiuXv+sRLiOMTKf
+jitErkL9Wi5CNnERoD09jICcEcMHeZbzvjslADzJz1iW4cSRmbJC+tY9Tf9LMwUe
+etTmeXYJSv2w34vxuT0zzosN9ucEElmdE1oQXQ1Ryrts4Gyv354R7+raIzEPIcGd
+4fbub+x69G5Xxy3AKI9DbVapwskME7oENwotlxzLm0or/1vVC9tOnjVh1HSd1u5T
+M4DeCQ/7wgxl8Z0AEQEAAYkBHwQYAQIACQUCVQd21wIbDAAKCRBdZ7/8uh+aOduc
+B/9wmTVaPsUtaC7+tsFBf+EM6zVsVgMe6aY8/AG1llwX1IujYRyhs8YvqD+cc9/7
+CvK3GlT2wJyBrRaiHZXE9u0COJUgBHyuIvnV0W7fE8aD5AoPCVMacKxZWoRTY4xe
+r+gde8NpAp5f2AKu8kEquXOiIymG8kXJlUqgvZmQWSFYOWF+j7Xx7iRp2+0j2f6k
+nayvHLvyvMGygvNzzhLYKl5zZMks6XMTk6daVt6WbgaSuT0le5LfpxB/k7p7xMOe
+yW0bFgNhSQMDmPJ2iTnW+iliBXOntGQda/W/uWE3LZ03Z2xTq+2SlXtDllVh6Ma2
+QaYKBnGzozJvTcMbyP/aZ3lj
+=kPmv
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    D7C92B70FA1C814D
+uid    Matt Sicker (Apache Software Foundation) <mattsicker@apache.org>
+uid    Matthew Sicker (Signing Key) <mattsicker@apache.org>
+
+sub    B4C70893B62BABE8
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=K7VW
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    10AE8966A146E8BE
+uid    Thai Duong <thaidn@google.com>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBFrY3D4BDADSiDX16IC+236IeUiqi7Nbt2wlsBS0zqqaXi43QwXwcf7aYn4+
+qrn+4JvsyMrDgkRgOElz134B1i5OSzP/32w2JCnj90XUjO5N1KD0QqoSops7NLhZ
+/jW+5cFLDDeYPTYNLxJVsDRSqhIztRC0/m3eP0590MbnPxd+ahlj8uz4NRv/bwj1
+vqfIRDyoQOtV0+QX4M8ytX8cyLW9YynWLWMeHUFY344UztDunZrfomPC16roKXrq
+niP71cILlVFvhGhLfE4iF+Q/QZZnn6hvuQGagHR261N4LKw5II737g/5f1DsKZpu
+Mjam5juYCWobRie4fN4k0xwi2+I0KTpYMjBRTNNcOtyAb1AvY08E0HVwAYz8Cm+T
+VQQKriNpa40RI3KtDXCboCkz+LLL1w6vBXnvCes6F8CjSn3IlInpv2AE4nhcPC03
+zI56gPFHhUN+h4vm+b5H0aw8DyyedBDv/GX5sPxYYml3H12L/idpgAwp022rL8dP
+lxtvZrtO9PlOqHMAEQEAAbQeVGhhaSBEdW9uZyA8dGhhaWRuQGdvb2dsZS5jb20+
+iQHUBBMBCgA+FiEEyHQQgv8bDulryr7sEK6JZqFG6L4FAlrY3D4CGwMFCQlmAYAF
+CwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQEK6JZqFG6L5LEAv8CDTDJbAl/Rh3
+ALICi3dsXasWNQjMnG2kqDXQg/ysTPCoUphnYBTvwkEGxg+m6Bjb3ULeCJo+DIfw
+JxgLl5BNZOROeBmlX5uYZ37XYPntl/WwyGBnCF1IW6cHmdtTMwfYd6RkAFYVyFyZ
+FObeCrzdVj2knwqsZQb2Ty6BNodKV+xLCYBggT6VjNpjp1wOedn5ByQEReG9HDim
+qmVWz4pqAe5ipo9mTEwkQzZny6Mw5QHp+SRk+Yyo/NT8Q0BkGPwFpYn9YYUvda1k
+mYN41DwJBzG3m/kfwn3tmIbxCOnrmTt9x6cGuejPPsOI1VjhaJn8HMK7WOOA8DRh
+Zyi/IkZ04pdNlz6PeC7CbzvgGMgrY5Z9mIHP67GlXomOtoE2ZsUyNUBEA2QCBroC
+ktzkT6Y6IIYUe+EdQ8LdMJ+uisbPl72jmkPmnj0ssZfKkTZRTMF5mpR8a/AlRQwL
+VG5qGWHCQvsYUT/C4fNqaZKjwn53SUp6QDhrpMrv1UWhdLSWS+FI
+=YPkN
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    47DCFC2A59F59B5B
+uid    Kevin Wooten <kevin@wooten.com>
+
+sub    FCB1A11865F6A17A
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFVB0KABCAC8YRgcTIomAMw865DHxS/tbFgqN9i7M+tgpih1ETJbb4enhIBj
+Upeq+MoFCtxN86zGu2gsA4DOMEXVCReJ4O5n0F8E03+NUraCnJjbXLW9eEyRQRaU
+sYXDn/3SpXQyZGP0XemHUfG2Gok77mqiqbYGO5PwQoTX09X1a1wvM/GUYS8I5dUh
+UY6MwB3IEXaoNIccuNs3exm9ojmnvLO4VZuXcLOizlqxq6+8VbEP9qr06UNLsPDH
+vdqLxIUpZWSyYnUQZIrkctsUvlxQMnB/PpzAN9hKvyps6quQv8tD+dyPreT1TJGM
+ej4OcJXkQNmDxXu0/GP7X5yPsunKy3MLabutABEBAAG0H0tldmluIFdvb3RlbiA8
+a2V2aW5Ad29vdGVuLmNvbT6JATcEEwEKACEFAlVB0KACGwMFCwkIBwMFFQoJCAsF
+FgIDAQACHgECF4AACgkQR9z8Kln1m1tCNwf+MaNFqR4lezA6ebkpZ4vIKGPoCOAx
+b0zEXgKPUIsqiH3R0oYzkTqrhm85w9cwJDnPKISg/uoP6gKqJIFIwjSVWO9ESg7w
+SSXKpHZTd34XaqrBWS102btT3wi0PwRs7Bl098jgKmtFT2AhctwZfh1gULHGjHYp
+tOK4KuDch6gYoJ4h01rxMZ6vkO6IWT5rjkgl8SYbjHMsffl1/eLMpS7UvA9S6xIF
+JLxI1+/+5gg2M6VRAgMFZXujstoKOym6t/8ayZbz3HNA9Sw01vJiMYXmWoNn6Gj4
+nxxCtsorIcTW9qzGubnoDGR/DkUlux7QZrEl84A3/f4Z9SWfZ7u8aTuqsLkBDQRV
+QdCgAQgA7kQawwfOhqatOWR4JvWROpgk3TQE9QJGKOPkIlkaxTws0cyap4idMcZo
+RETVqXCpFiWcwVqwDbThQUhJx36EGn3P4mByNN2wLYw05fN4nofiuM708v7hG6SV
+2DcsYHyKXT6dc7pZDWSyCtEMv03ST93rTPaGjM+X0lj7gBgODyYLAtHcAgOuAFkD
+ZU2k1CfGWnm06QZ8Uj+EBf6fGp0sc9aySGQx9asyV6pVa+tksLuJVCsHesT7Up01
+cwtbBQsfSDh4eAuYemqNiHS0H8EI8PEozwsDdmJYtXwGyoP0rvXojv3v0pgrJgfs
+cJsyPrc7ajsWWMMP/HsPQr6DV4OcUwARAQABiQEfBBgBCgAJBQJVQdCgAhsMAAoJ
+EEfc/CpZ9ZtbLAsH/14uJWhG6mxG28lIaWqsNbv6fcRFVBK182n2ZziTZR9zvgqv
+dFZCX4mJA14JtbPV7SMl4Jt5wCcj+lrL2Zg9ywCspGXDp9gDRczYeG4uZHOUOuP1
+sF0QHtjUPCl4vrzcgo9BHx40tg83Yqkl4684Jk1GsXGmjX9krndXpYpZxjqvZEy+
+UcrlzfBwAxMiFWPbHxRaUyAlJADF87AC83CythCne8+MwnR51gNwX6VB9e5G8CJh
+KI79Ml4Nxu9bshJivTH4X1hHy1WZ4RTpYh9+QiX/mUWpESL/3MHE258/4t4kSmmZ
+uibIH78M76e5PfyVjZBdAdgcuQBYGJ0p9c7qSM4=
+=/5Qn
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    80C08B1C29100955
+uid    Jake Wharton <jakewharton@gmail.com>
+
+sub    CF771F914C2A4A73
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBE2fCWARBAC3v9wYo5kmynmVP+43ccamidflSLQjjpsXpSDLPFokGxeuw0OC
+QJy46m8b5ACoCqRlfwnRRcEHxiSlaBATJA6hi7NRO41R39C62JXsIxNJR16JNQ5k
+oG/NOAraw0E1RQIFslznQexfxPg4yFIVrsFp1wkpCRrCklatPMNap2DuNwCg7PWJ
+1vV93YIsaH0O2fnXz3E+6zsD/3cTzUWuySEDiCLNO3JYJm97v4NDQ93encP1Ooxh
+n+PSIP4GvjrAObh3FfWUucv8UGqcw5bAL7dA1z8SgKeyFk/afs2XofXdvC+PhZqC
+DwU0NiE0D/tDWqX0qIG4ezTU2uk+5dE/WVl3R10nOBgquQdWIdYKGfV4FNTiEduD
+Uw7fA/0XcwFom7eyR9eBonQmgIadljztm4gkv11lY33V1ZfJNndPKNzwevDwX+om
+/VEHvpEfPx5toD4H523BPx55ZtfowuMtFHZI718alpCo3h6xaDhGwXvsg3s9k03k
+rfxzCjf9qcJX1gb2JVZ2+2jCwUDQZeEwV2vivjGNiN9rShWW+7QkSmFrZSBXaGFy
+dG9uIDxqYWtld2hhcnRvbkBnbWFpbC5jb20+iGAEExECACAFAk2fCWACGwMGCwkI
+BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCAwIscKRAJVQoeAKDLeCOKKnt5aqlHD/7+
+QPOgX4iYPACgvGRCubBztEBkU2xXbr9J2cQY5em5Ag0ETZ8JYBAIALeU4dgFKEn8
+b3E1LUT25svvUUX2kuVLQ5TzokC6zjWQrPehOlsYx+ey8RSN/6A5rBLtn1z75ror
+F3+vN5kLPAz8x2Th6Cxd6lvn3DQHfvDL0YHlp0AZzhHx5ogyJxdaqwzNy0JWxava
+FGN6b8bbrR1Nf08kq/d5dNe+NGVdBXcuqUo6jt1W+tkbntklS5e+B9/Q/4L8dYkl
+8xXRIMAuKw6h8j4LFXse6xndWeWtTIkfZImz0f7cLQV5X7QSv90i1KfzT9hLiUjp
+wqPydtTNuB6+gda64jFNhVcvgW+h7MH6FT/zSss2Jh2eDR4HFrv7EJSS8dKCvPox
+y8El8pQMG/8AAwUIAIXq+ryw44voH/IdbvTQtK4t5/lp/Oj9b7QrMR3u/iQxM4K3
+dq7rUbA8hjdMM3gfMu13B4pzGtpcf25b4NIIQkhES9+CUDQDYHF+gwkrwEascbdf
+YZiLAHtcMjW1Og+IhTY8wDuJT4I1pqumSzWV8UxVJctqNUTY2eU7158oD5+prdCc
+eQLbzxoKFtu056kZ2+46v6bAl8g/w8WoVORUuHruuvKohMVPHwNQws7KHCFy9YCr
+4yIQfqC8g8oITqlgUZcZaXx6K+NndwA6LAoXJL0edaZOZBuFq5H7Fkrw07+OIQFq
+LTGcFpR12AzDh9lmtyJQ8nVfb6IjAOSwBPlEZWSISQQYEQIACQUCTZ8JYAIbDAAK
+CRCAwIscKRAJVd58AJ0YA8xv0U5Odm8u21BvyxjGS3tBZACggF6P6KjhUPpIAYTS
+6v3TtzhkJdo=
+=Zirr
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    6A65176A0FB1CD0B
+uid    Paul King <paulk@apache.org>
+uid    keybase.io/paulk_asert <paulk_asert@keybase.io>
+uid    Paul King <kingp@ociweb.com>
+uid    Paul King <paulk@asert.com.au>
+uid    Paul King <paul.king.asert@gmail.com>
+
+sub    EA8543C570FAF804
+sub    CA890A5FA09CFD80
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=Wk+k
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    4B1E11D5A4B91E89
+uid    Adam Cozzette <acozzette@google.com>
+
+sub    726F4E5C34CFD750
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+psR8R04jHL/ZAxrodA4Awc3BTpNxQDPfdRPc8w==
+=8STR
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3D12CA2AC19F3181
+uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
+
+sub    575D6C921D84AC76
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQINBGL4BxIBEAC+lX44fd/zrVQPzdKygarBd/X0bBpGakT++Kfk4UBGl3q+wd2G
+R9puB9R377ds8hU7U3To8sHguUZo6DbD9Gb/is/WajSb9g92z+rMow3KbqfCYqWr
+kaIj27OJgbziFcnMAtvGoFRfaPI/7TOwEw3jT7B87RXeiATX4iL8fzMUmkfZm0Hk
+qjnepMQeaz3KzMY4DfBcI45kwzl3EIBFIlk428mhBU5iAAANoyPsimfqEPRCUDjx
+vT8g7PvpkBdNZgRS6R9vLxyzKi/f5KswZIMvop/pRXIhAKDhCCyr2GD+T3JoIKp9
+kvS1MQucWeX8+TFWh5qEA3e06Xu0JSdPCEej0BH06EiTMsAOU5bWqgLAO9DVpS32
+I092KAuMJlEPCnz7IGXVkeNY5KYrlsmoKrBO3GF/zsCyiZDvSULkVJcrtBCYOrgq
+HRIzvJWQaTJ5V15MD8CZIELyjCGZ8Jy8hdZpaTjYalw0bUq+yRAqMD5slp6A1tnv
+jyqVTgU+yRGq2HB90vJ0D3P1w4xRDuNF8c02futO415Yc/qkyh3/5AjGSoocrlfX
+cMreJXpQWVsvXn3NsitjsA6XOJpMOgipCDxfvn8SSLl9fWNJf55j7fCkBokF/lIi
+81RVQbyjVCOV0OEqHJLP9asPHyAFvUppNWtcvViPxVmb52djnw/x/61WVQARAQAB
+tDVUYXR1IFNhbG9yYW50YSAoY293dG93bmNvZGVyKSA8dGF0dS5zYWxvcmFudGFA
+aWtpLmZpPokCVAQTAQgAPhYhBCgRjAcMsioBdaLo1D0SyirBnzGBBQJi+AcSAhsD
+BQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJED0SyirBnzGBnxsQALTJ
+d/chCW8zWgR6x9ZDfU2f5fgMhi8jjILCieiQdQ/vec3QqCVLpJmE+l6MrI75E7GY
+eL8Iu0DXO26nHHSEbDa9kGk+ohdODbOd+y6KE5t6qPFaHSG5Gj1iiQ7libmrO7EZ
+qPQzl4fwmzUvl/2x+kaL5WsC4SxbwTG2mGo8WRCz+hqM40yeBeKYxpTlN2VBrlU2
+xkJ1I0rQITtHwck1dClgf4up13uBna7TlCBJc7vio3OwAFbXTPHEL+efrn8zk0au
+J+cwocHmm4d9shGiwiSUAOEnQ8FZ08IwO5MoOUWKz/ARYLuR6FAd8HqFERbfUxU2
+AlcyLSAhSi0c+j2Gi9PFkNTABEDHpdTosaAgKpbYdGke/2sfA0BKmcNRIfGjs+W0
+GnX2c7tP6qc7iFCCP0TjXvR8jnCmH8BT1JiSN5C/JPH0hDE1Zvmvgs0hid48e6Zv
+k1yXvEdtd/rH0uM3yUs28EfdcqokhwKZi5duUeizgG1gGNCW8RGvhi5ks1bABK9i
+52JMZznINMb35mZ0bEK7YLi3K8DE2hfIU6yg8WnlXlx3eOK4e6jWxWbjuEmUJ7BE
+ZWvz5IJ9nFI1UAIq7Ug7ruM+CH8ntpHueuGp6goq39+0lTd/1Sc29kVadg/DXQtC
+mDDrw4Btpz8hXthmTnNVvP/GUu5K1fttW3gNU/ofuQINBGL4BxIBEACwpcarOeEN
+5TztQDTvemc+DXZuWirmHv1TyJmjOhU0hGGMzEnKKU6VZlUIg5YQNYknUOfOf/05
+pgQmsEhjjI8NBD3Cys6SVQ6wOlkA+KpDKs/dXwyJttYE+EG/IMzjwZW2DbF50Hkm
+T2VK/oFhRSf0Par+cbVQ/mNLAVC7ueZWBVXldezqVvk3tDYYZef9T8Qlf999LVXF
+giMzRFrzLLcd2KEHAX4se65FTxIfFYYCrshFIKDRi4IWNzQqtPV7mb94wXY0Vwse
+5mMEgjmieGPjBGYne2JU0xYNBxtly1y3aeDXcxNlNrcS/Ake9AqWAYU4agtocCef
+b1pt5Q3li0qg3PsVKDJ5qWDceb+kgcUuHgtwHFCVICoQUMsv9p5F/kWL38/OWcTR
+2lQ4tGerE2dmlyqFWu7mpELckAfXSpJobZltUbp8CO679g0lk+OJWSmxddlVybdX
+CFaAeOKQb0woQOkR1vo2tJHyGmGr20Eea+UX+kdLojVQwYCqICdvnK4YpHuhpT5c
+rzk6lohfZpBPMHdpR7FQQZeQEW5EbcFNfoUEwsgb2qkG+hQIL5Q7wRajHkGaG3Wu
+hY2xEyoHuLSb20hP5hI2uhtxswUl/+IOjjZtDCjzLz59Q+ADkDZYM+PN3eR0UJDq
+YKly49KTuz23zLluNjNwqo8K0y05XGCQMwARAQABiQI8BBgBCAAmFiEEKBGMBwyy
+KgF1oujUPRLKKsGfMYEFAmL4BxICGwwFCQlmAYAACgkQPRLKKsGfMYGQbQ//bxZq
+IUIrPa86oXELq19E+OFTvCKVQzgohiaKPS6Hx2rgtvPS2bJvO+rXlAvRAFyI8sX7
+Dq0deeZP0pXefidjpfjKz1bhW8Wf7RU6QOKc0Eyl8/YqCVZign1DzJlF1r2mrkZa
+0VRNLjh86P/Y1T7ZhrAiR0PNv++LEgNsPbL8Tu1ryWl8vWFdlos40W8xleP1nBU1
+9OWheOPU9VYN80eBD5ij2Cn0LCxJQdyNOpVD03P3Ycauk9OHOVCd+UVX2A7VwemX
+b4wRDL59gAfSGyYLHYqAF1XJbOXkheTPRsttxXRIkzvA/gjpmQmioNU3UhiMZ1EJ
+kbJ42loFPv7YplbmBXoMAKJF1402+sOVusC1FULMQQtpZvC/bgobqEqdTzhZa/Hr
+KA45BFpcaTO80jJto8kiZR7infwX1gBGrYgwXisxiiYPI5yVwAvYTcNnU1nD9Vk5
+iyTgx0BNBG1hLPaZBtkYarDmUo0KyYf0Y8mQZmd7U0nOHptdkR+5yND5yO29/wGf
+se1KeZcRNGgcYQFKGw72HDiYsOELiiwsFqyUMWPLEwQJave/tO4SYSY1wP4rA3IA
+IU24GMQFZ64lljAKQCRXLwDKK2tMyHz8I+GT+0+bbpz4ojkEmxCDxXfgUy1362tG
+FdEbaZ88HZxTa30iXtOXOLvWIYRp8hv3pSb8id8=
+=hALf
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3D12CA2AC19F3181
+uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
+
+sub    575D6C921D84AC76
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=hALf
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3D12CA2AC19F3181
+uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
+
+sub    575D6C921D84AC76
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=hALf
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    CC6346F2CE3872D9
+uid    Jisi Liu <liujisi@google.com>
+
+sub    BE04F93C75A3B493
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFRIQyEBCADYOc8Y4bOkLGh5NFwQ1JJwGzPY/mV9kndWy2tudEs89Poo4cQD
+A/wndJqO2PrdvDvt+kxKQGra0RzUNW3Te5gaePo7+3H297BAWar8+KiX8RRu3uB1
+Tbk2b5xmrncaD5R9TtRB8uNIzA0OG7N3+2rrwzplY3HNYlz9EeWwllUO5YFkniJp
+hOBjAbTGc2RjcuhueFse68NNCUUEzS+7pGWSpkwo5CsLyfbaCJUiSNIC06ygkY6R
+XCDZUFXI7jxfcReVMK+Wpoyk/RqY++xGmCf6MWJqkcKbn9G31fy0arHWnmaMNUUi
+rwGGzEVggMH+sbXKsLvRWr44fA/cKf+EbZ29ABEBAAG0HUppc2kgTGl1IDxsaXVq
+aXNpQGdvb2dsZS5jb20+iQE4BBMBAgAiBQJUSEMhAhsDBgsJCAcDAgYVCAIJCgsE
+FgIDAQIeAQIXgAAKCRDMY0byzjhy2UUPCADOIICATGIaZb2wnFpgXIq+3zOHutZW
+M+zmXXw5YUK6s5mRZycr90neciis8g31wTFa3832VHbJHEoLni8C1hERg4rvVrqU
+Q4y7iBEoGhKn/lgBCjImRfpYlhKtd5mmEXye2iz5EQ+VRHQWxOy3cG6TesBBpD9A
+Tya9BCSaUbc7UkGTRwhqNyX5+oeGwhoUrn4bOL+JQVATEMDskgAx0h3pIWMbhmZh
+XuKRVMxVgcPRbTFUiqDMl0uNUJwuFvvEorAGGVvEDh2Bws8CaY308b2EzF1tt9I1
+oOuqQh49JScg18aJU/h8n9x2lkzJhbobdmmvICQ+FClS4CpK5X89M8dduQENBFRI
+QyEBCADsdI8kpJKcdOgZjPwpp7xnWhaxWJ4JYVCB8Omr6ToEAaw3dWqkYfmTQwlO
+i2oBRKUnxgc+VBo/+mKOz18BIQUduM6kPjp/Hbas+uF0vKjbYKY/aLASRKR7drwp
+mphuZqibQr894HsVqXHJXwBN7/PUoAfsjVhcuZDtz+A1YJi+6D4I5kB4gBdk+fjh
+mqoapUhgDQ1RZPYzjko7UH7cMkQkHBCj1HmlPKU6MlZbvQn/p5lbIL7WuTuNI3jy
+jiWp0lLkblWgTyEY7MJvFH9s2bpPWjkxcx2+lBG2HAmXiOgRWmZSrrcX9+a2/Nb1
+5+2pMg/8ZI1bSw3lju5V/ozQ9pCRABEBAAGJAR8EGAECAAkFAlRIQyECGwwACgkQ
+zGNG8s44ctkKkQf9GAw6vtfuksg9BhVP1oyAqVwEDrQ7L5Bt1SB3iZbMcs455nY3
+YFD+0N4yPIIsYg+K0JaHr3PzHBaZjGFh3pD+tV7cuMXq/HkW+82Ogvn3onHWCfiG
+Yvl+ZBLlN9C52EGbIjx07vnjJoDXPHpeUeLEaKn3R7ijMP67/mfKYKUlZ/9uMRcJ
+Jt+HJXwaSaQgyGRDT37wmUCBUE9X0XaNKXYlZA7kn7jfpDBy/IaqcNOxe32yum/c
+4MpmcKGOFdm5Tr48TgdbDu75FT2tNsb/VtD6OFFaX7GjQB1CX64SCeuT9sDmqXsf
+uup3aw/ff+A7vCNFbhwiMUCJgH0aXV+A/bgZ3w==
+=ll74
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    41321490758AAD6F
+uid    Groovy Operator (Groovy Language Continuous Integration Server) <ci@groovy-lang.org>
+
+sub    01F3A913FB698736
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+ZIY=
+=83HN
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    205C8673DC742C7C
+uid    Brian E Fox (CODE SIGNING KEY) <brianf@apache.org>
+
+sub    AD9CEBA0521B1945
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+hfxMZo//jMG5FUu/pIWz5aHxQUjBv7phbwxwKvQAB7q4eYIPG6ZabYTQJDIweq3S
+q0XJaY1DxbHet+O4PKHUu+p0fjLabGTwENN8fnzI1adO6mKDrn3LcdZmPj9m1KkK
+2hslY7P8q5jz1AjAsVlSMWQoLwqfwj4ZqPnvUDeR1YivXnFf5jYkmX5rrzOHuSpk
+i5K7fKT30hwLE8Ew1Fn7LftldGWIi7U/T+IUlCDUgF6CxBKMjXCDtAic2dYo62aY
+WimcJC2KNWsj41+Iq+auUBdbIB4uHkROm0/V08OhQNSrHx7piQQcBBABCAAGBQJK
+/hroAAoJEIqviNbYTkGuiecf/0ZxYsoCsaUtkmLHhIeaB+VSgsGQRzQJExLyUi58
+i8c91+FXYykabOCzsQlIN3hhqDI0s7rQUJQTGoFWgwdVWRWpAhklidEFGx4wS9wN
+9twIiY+xgdwQkQ4/hf//////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////+JAn4EEAECAGgFAksM
+3mcgHFNhbmRlciBUZW1tZSA8c2FuZGVyQHRlbW1lLm5ldD4iHFNhbmRlciBUZW1t
+ZSA8c2N0ZW1tZUBhcGFjaGUub3JnPh0cU2FuZGVyIFRlbW1lIDxzYW5kZXJAbWUu
+Y29tPgAKCRCbuGOw9Ru4ikI8D/9vWt/TfpmUErEq+Md9F0MZqJ2H+y/nJJMviUDH
+Hx+po2etYJauhw5Ota6brkLjef1cNRWQ4tDxctQRPc8SsU05/Epzrdov5SWVutcw
+vmAjWSUs2wKp7/+lPuFUvEd7g4xt8gXY+mmvo8qi8tTNE+nfzaU7I0MHIMbN25P2
+b6//+Po1ifLVFE+S9fq6NbXI0QvuVBKCCmzVvA4VTVNaCd2CQCrZA+6c5VuFJBZK
+VoCW2FThDvXyQYlQAZmE3zYAZDjNFU+jAYF6aqY0dtU6wh+U1c1qbpLhrdn073pT
+HsfNsQW1vyzYLLr7QxkU9pVpFJ5Ajq41NwyU6xxSZhnJN+7TOYcJ17EnDKmdO7Mb
+52nn0zvxG2bactz+ycWwZrIxfQo9RAxyor9shORfPmEoVbsLOdfuoJxvb3OL8mI7
+wcTTfsSoPeqac2p7NS5ZWaDenliNrVR5ZWJFQeeoll/paBampGjK5En/QpIEoct4
+p3KnVTusFSsZdRnNkOFCKPUusbiQPl7dga17oiIqhpsLewq7BnQ9oW8h5jO0TuJ7
+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
+y+5xrNg+uv6po4Jjtidfww==
+=uA5H
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    1DA784CCB5C46DD5
+uid    Rafael Winterhalter <rafael.wth@gmail.com>
+
+sub    7999BEFBA1039E8B
+sub    A7E989B0634097AC
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=gRaX
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    995EFBF4A3D20BEB
+uid    Ktlint (ktlint signing key) <ktlint-admin@pinterest.com>
+
+sub    B89991D171A02F5C
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+RUjO/QWG6CIej/nl7O0g91NtlEY=
+=Ixqm
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    CF9F3090CE4CB752
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBE7E4m4BCADCkqre+MJRRn+yBa8PqDHFIpfxOk8lQeueZTrU0Hw14wMkkOW6
+XFBb4hDeezStNNP6s2TS7bf5YRXZwqOwwgg33WYVVH4jPldaP1m+Z3GtYSLKEjTl
+G7/YqLcCtLxDdhLF3WpR7LUyZFQpIPEwRj12UyK8gU/Wy67GP3JBz/YhGTGfEaXE
+13VWM6FLvS6GJVouT4lFVqPTVv54+RKz0GdlgCB7Ht7kPtpMkz8ceKGU8+JcbAsL
+zkcicA97ZBzYEnlHFfoNI4M6EZumw8TXM+hvJBQ3SEWenhmUj5dwkympTahH+Dw/
+iam4sbZPiQH01GLiffeNNfTVlf0bvaczvvG5ABEBAAE=
+=YoaU
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    21A24B3F8B0F594A
+uid    Karl Heinz Marbaise (Apache Software Foundation) <khmarbaise@apache.org>
+
+sub    D658968EFD5E9F85
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=klCb
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    79752DB6C966F0B8
+uid    Rob Manning <robert.m.manning@gmail.com>
+
+sub    AC9F6F1991913E30
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+1v9wlHhhdbE=
+=R3mQ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    8614D6AB265B4C63
+uid    Antoine Levy-Lambert (Apache Ant Committer) <antoine@apache.org>
+uid    Antoine Levy-Lambert (Apache Ant Committer) <antoine@antbuild.com>
+
+sub    8832A83FA3060393
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+NACdFJ4KIATJDK/5ajFq5+irOpodoHc=
+=VIEf
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    7C25280EAE63EBE5
+uid    Oleg Kalnichevski <olegk@apache.org>
+uid    Oleg Kalnichevski <oleg@ural.ru>
+
+sub    926DFB2EDB329089
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+ZNfGiQCfdH3+RPBbKSQofz2bGx7/niTd9qg=
+=CP3a
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    0E91C2DE43B72BB1
+sub    83552A552A0D431C
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFBIm/wBCACgqvegptBhfKbyBXZiW+7XchIJCOpwq0/9QgSehKMwELbUKqNM
+sIVrywANqYn32S9hNRvBiKGm/KY7VwN9p1Cr6Ey3XuGSbRo/xN6tqfV/rV5YClL5
+6sMc67BlnEaCZRNuB9ATeUE/4wCO7fWg79jJuNl8tKQ8EYIrVGizzjmZHt76OwAi
+hQtD6A19+qjQ02SyPUJS6a2lKx+gwaHNxv4L2FqImCFGOOEToyRb12GD18Mgbf5o
+OtQVVtr3qbT07odFQt8Iyy1DiNUJbOfC+YO2wO7eMTr5xaFr1HejsTvKZiTDC0Nr
+EjtctqGxrjxPmoUPNwtxwEDTEh1lyKMhnqgJABEBAAG5AQ0EUEib/AEIAMDUgjnP
+KBeHIN0KNmXTS/uXXC4LTGltnQJ57OG2kmPz/JjAjYLoLvINY+xtghehMhRY3DmQ
+Dy/ufZsgO9oH8PztcC8QL5/dV6VTYf4U3FndbiSKgikaBX7yu5Qcrtkv8XgkJ+aw
+IEUgTGDXn2VT1hH6yEG1tA97iT/d7ZUxLEBsVgbxz9VtPellTNK5x/8NGY4NW+fM
+6+yGFpjr5juZVYRLa8u565vGBQO5FU7bg/69DftmL7vO4KRLs154VpsfAsTeo1rm
+U/8kIjgCVeKFClJG+Sg+m9rsJNYgiKy9dGfD/qDmVlEeWBuhtlAfqM7pHTv1Mu8m
+v5/DheBwvlwheg8AEQEAAYkBHwQYAQIACQUCUEib/AIbDAAKCRAOkcLeQ7crsaE0
+B/4/+ZcjdUfLPlKk/8BH0tMafEWOGvqY8bG4YpxGoJZHT/Lb/cnWDLvZzs98FVaQ
+3DKHZwQhhtnQIhnupvxSHX5wLeBZMtAANGQLauGp+A3S1WBVRHs0mzOdlVDbzJu7
+RW72mnkRMSoVd018fh4eQ0+VpZh0Pf9KfKJDwpEuESP1+6JcLLBvQXlEJYHOk7Up
+5eRkhljdIwz3TlSuJ9sCscTgM0PI7/L1eFP/iCgZIBHhpllVV6v5IGXx3P5Q7YQU
+y32zCrht4t9fdtdLct1j6eNaAQdPAU91auSbYhuVCpjgKNpwOv1ULoSWLUUPMNW5
+Qc4ZDKq+ywOElvONMnX4oaQ1
+=f1ra
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    9B1FDA9F3C062231
+uid    Brian E Fox <brianf@apache.org>
+
+sub    458AF764D812A037
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEWjofgRBACePEiXmSvjcjUgWkNAFQ/w7w2VSEqe1vuTCrta+ER9JsvhwipP
+2/BEHigFf99TlU0p1UC591LMeYP2UXfQnb3jiyEPKxA06aj1fTGGMoNMAilymvgd
+pcixjlSJBvsmyFYuUdYK20UghL7fAU1lD8Y7TVXz0XT0n1oMOwf78qB4vwCg/bIQ
+LlFGTwqgEBBJpFJnaVk66hMD/0wMKe5Lk3rfdm/9Ku56ddZ6GTjyuNFI6sc9gOIJ
+XWuRpZUO4d7LKq7QaKLKBQeAI1NqqZuB7gtdU6ILy7OjI2C38KTCpyu+8lj97CNQ
+gJqFh26lqhtFfMOUwKvNUUsEABDy+vnI+VCW32ZT/E1xjA+nVTSjGM9lyv4Gls7M
+8pd5A/wJ3rD8XDiriM3ZV1Sn7/pt9OBxc25YHhfbTinIQBYCBhTw3wbS3d+PLQOL
+/TmkeaZcuFA0KQW5hHEjTIY2YbOd2lPNa9ynq+/1OvJOGAseCWL8uorYAmk6ztkc
+Sy4UZuNbupNSPGOt0hZixQpSB3Tv49XlFyupd7rPnYi4F37nPLQfQnJpYW4gRSBG
+b3ggPGJyaWFuZkBhcGFjaGUub3JnPohgBBMRAgAgBQJFo6H4AhsDBgsJCAcDAgQV
+AggDBBYCAwECHgECF4AACgkQmx/anzwGIjH7qgCgyf62qYqZB/Qna+RgS9x9WQ8u
+qUgAnj3ym5yyRSxCzKAuFz+XCKiksckpiEYEEBECAAYFAkkSWGAACgkQb7IeiTPG
+AkMW0wCfWpi6Yg1UAvdeJNKg6QFI1+f9+1sAoIdwV84eJ7cscMyammeDrZ65hw5F
+iQEcBBABAgAGBQJJEmTqAAoJEFvmMcGZldJKsTkIALQpI/WcoH40eXeto3GB/4fp
+zqZNKK0DP+1OMOuIxNESionjyUxVhFuUDffL43wuiZxpB9wiMDQfzIk/pMlpFnSl
+bPq2iR4fJWDaphianl3ARyuLvZe+NTxYV3KohkNf4m5/VdL6HbR+ZxreWz1wA8L/
++CIDmeoK6Qy6gJS3HXO+SWcQAdW/qHqAodc9r0dWDQK2Z2v5vYR7HEpMMYOyt9eN
+DKRbEDgQy2h2lY+3+zRWJikVeKE7nYoVhmtBlKvDhMYHiulcVkfAUCOwJO360LxD
+puxhHmHn/nS6qSsjMSb3CxphUfyeiwqqeLZ52dwaBtEgTAq9nizD7/dNyjoYFguI
+RgQQEQIABgUCSRNHNgAKCRDdZFWbP+8ev969AJoCwMlyaG+5mFYNkBKoV1TW3Rmz
+NgCgiXRfM/qUR5NSNm6WTww4uXpACpyIRgQQEQIABgUCSRNHcQAKCRCQOE2aNcfp
+Qgw2AJ0ci2a92nC+nwe+xhqPGdlmoM0ddgCgj3oFhbqHViA5M9u5o8+zsjhqOKOI
+RgQQEQIABgUCSRhrFAAKCRCw4Bj8s7TZi1CAAJ0fCp04mWHTYi04x0G14A0Sag05
+3wCgnRIF2y1coVmEYLrcwgmmSvU0+2OIRgQQEQIABgUCSRnnRwAKCRAtIatlZUYb
+eR1WAJwOjkVW5QssBuA9+wn4lZZV4886hACePClRhX9YpSVQihz79WWE628+ccuI
+RgQQEQIABgUCSRoxDwAKCRBbloAQ4E+aiXP7AJ9nnnf9mcNmc7SWu9hUYjseTCQV
+jgCeK/ZkDHsaVfCAcdk//yu964l18vSIRgQQEQIABgUCSRsK9wAKCRC5W70/pDxE
+kizDAJ4pDHilmFtgs3FL9VEhV8a4FuqDcQCfRKKM2fdNMlSvbA/TP5ccGWCCJzqI
+RgQQEQIABgUCSR7O8gAKCRBTJs9AH54Xu0H0AJ9Lhe+j0SiUr4LN1Qw+5I1bLH7V
+lwCbB6kD5lVzVp/iPDyg1rmpg7xeKeGIqQQQEQIAaQUCSVsZ6iAcU2FuZGVyIFRl
+bW1lIDxzYW5kZXJAdGVtbWUubmV0PiIcU2FuZGVyIFRlbW1lIDxzY3RlbW1lQGFw
+YWNoZS5vcmc+HhxTYW5kZXIgVGVtbWUgPHNhbmRlckBtYWMuY29tPgAKCRCyvrxA
+FSkkryB1AKC18f4sur8q8mdXarxjtPnqFbdWFgCfaeJKC3QNAIbnseS4czldrYEO
+lj6IRgQQEQIABgUCSV4GaQAKCRAPRQomYhC/wEY6AJ92ftkXynsHAyeKrqWjiBZU
+gKFtwgCgrMVeFhKIJsaN/7XM/z23r8m00w+IRgQQEQIABgUCSagh5AAKCRBhKKrO
++XjYT/fXAJ9HdHZf0I6pXcw2B7WOMuqnaUodWACcDkmO+UpctOcTgbdr5dEdULZa
+oA6JAhwEEAEKAAYFAkxum64ACgkQ4TYIihgkvcFmGw/9E2LKqawUhLc6QCU7Qdub
+gAZEebAqiaTTMpZ7Ua0jQSlXq5GUciwp+0F7uFcuyKz3FS5he1TR9D+7auuNyIEF
+8CIQHNuoxo4na7s/XydEwBXDTkvlWgTeXCZJaaRGoreKluws4q+QN1sjA3w/iKTZ
+LTwFEqbEx7lBPMcGNkwlRgu9ggyX4MR27KJItgaM28C4+qxQ5G9OtuY/hKt7Q0IK
+xjfPY64IZOIb+DzkV9WgiMFjd0Q4ZXKGAldvkVodlTTfyl6SHrI03XcLp/ZXQp4o
+Pm4+rdPOga2KDoe8+eOE2P0rvQfb9mnW5/yj0FVIo1LF2/DFARjALom2gjQKSyDI
+2dMw3WID//H36/wGCwb529uZbkaqkmde1ErHLjbVzpaa0VcAEPEE8dO5q0EVwI45
+I25ZxjCNo4+ACiihSA+GHSHDnO4kGQFPgfMTsaGX/rr+ghYAwMQNfOznsolYYnIg
+FoWx3nUfutytxvbdygWaIdjJoN+nsPz82kXQPlymbILVi99s005CiuISjwnqqasP
+oO6rzxXBE9745eBRGUyfUV3rIOBz3DEHXr65YuadumUJEeEiJON3lk82xq3yBXZ4
+hZOnRHbr1OyKyLM3ArJFxuI77kDOcTfVGylk5UUAjcwfW5UAoeNkNBTPk8vdHybf
+l9vVsCu5u2aBOaVYeQVxn9KJAUoEEAEIADQWIQS10bBTFHtMTL5JaA+WEpPX9Ca6
+oQUCX8WuyBYUgAAAAAANAAByZW1AZ251cGcub3JnAAoJEJYSk9f0Jrqh7iYIAKR9
+Jy2kbU8Jl3Q0/n1xkK0AhqD7Jb+zDyXH13PUZgea0siNenQxbUjT0yTQd3m8tzdy
+YT7GPkNVYqt4dLZGc1T5aYrDaqbX+EVt3yTwkAZIvTwkVLspk8q4MDimUrAQ1wcH
+fGwUyrYIxVSvNPXcwJfjRnIJ1IN8w5smbOkppMRIUvnVl5bqVt0T0v1LQk2Hnzmu
+JUryathuuNdLgLwv0DaX7yX8q4DiMrZHspUmz8cSBTcnEksy6durBf2asD9+Y5Va
+a1Fr16A92Kjar6FVPjZzPSAbzCxwdYB1GB5VXCDRL84khIqM4toKiptPUFhtj6bA
+PRZ7WxR0vPxUu59Ox4+5Ag0ERaOiGxAIAKD8eQZuPsFLlXmu6aovDU7PwpIQHQFo
+DZ7I+rUv2M8p3Fw+po3PUsddmOg0QpMwvmU78vPZ7fyBzr22gmfHrS7gaJ7/T8mF
+7uh5hjYoaoPKwUM11JWyD3WQ/9RnlcB95Dtg2mfkbdRCo55aF5acCxjJ59p/YrFl
+AjFo8lkmW5zQXGt9LaKF6fnFhgZwpb/gMns94766Fgnvb1W4/PwFjNj5+aQehMM8
+PUi5gt5IHKteV1wU4HnhGaIbk765rDThxjYfRxRKfmOeiQ/LnzzrDWskR1t3sfG7
+ceLGYSztiMY9uXDow36Cmdmo/AcgrCQLDVNaoFnsp/0E66x2rzky6ZsAAwUH/iuR
+YuyHKQ/naDJLFlqbuvPtheLA4h8m8ItbK5FfaMv0erxtEpDuA7ldv5Pawqrmrx0E
+lu41832bjqGPxKyv+v23dxqS42TUfytmTU9mjnB1RSaEE0ICn9xg5UpnnDbrJB6X
+taVIW2mPs1isfgzBI3ME4XIQKwAVtnY3Mk5NGEcoMUMKlgTxiPLI6rsbK6iiq42p
+ZU1aJG8fa69VcAi3MYNxxSPhiY4R5I5mFyQDUqs2j8iGpnH0fMAUBFffiIhsfxHU
+U7wEse7r3oOddfaT7cG9INK/eUpSaaGEHuMIkwGoMZMMEm96lpLQNOoFspF+TUJD
+F9FSupbDbz9LQDr2Nd+ISQQYEQIACQUCRaOiGwIbDAAKCRCbH9qfPAYiMQZqAKCK
+xjnpSSp8MgI2oHi3r1MODLvSegCgnzuSirQWS7Fd1quoQiOefogN+ek=
+=o0/H
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    9A259C7EE636C5ED
 uid    Liam Miller-Cushon <cushon@google.com>
@@ -7389,6 +4703,1404 @@
 =eURh
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    461A804F2609FD89
+sub    8067ECAA8D58321C
+sub    750F9A735EECF640
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=QNgn
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3AD93C3C677A106E
+uid    Carl Mastrangelo <carl@carlmastrangelo.com>
+
+sub    9B2A1B698A113AAD
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+U/UZPX6m9g==
+=XXe6
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A797295E9D87BDD0
+uid    Aurimas Liutikas <aurimas@google.com>
+
+sub    FB4C179C9305F3B1
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=k/aW
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    F406F31BC1468EBA
+sub    4BB1ED965FF68B71
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFmnALcBCAD1KazT9eswNXzML5+M72qhdIX4VlJrrOzeiQtTW9vbXj7DZUnw
+U8m2bNmKHtpnyXQ3Vl7FE/e8CKGUVKmB854VJGDSyjToeAnt8A0Lg4smaSfgbEim
+rVi6jkgSCjzvNFUsKx4uOCkI59lbAWcww1aoQZcjW3D0ZTrrjo5ilx/zNXbKMfX5
+KosRIO3OzIfHYOjsmbLKj9U6pj85AXJ3/aKuRMLbFvOE3KZTxKLhl8LsgSgJFg2g
+XFKOJeXyRHCLTlsRB2qD+jAXeE0f7nTQ3xMnMUi9U2SN4WuYxxFTtrZ7QyIze0/4
+568f0ylZda+3j/FkbcZK4KJEi11kqS/ph9UNABEBAAG5AQ0EWacAtwEIAKH79EfC
+C5z/pkDx9MVSnoA5WAYX20KL+ErpMnaRbwzpizQeQVhqDjiKGCk6qyC4PUUk+H3I
+aYuTQN+rABVur4S2sO6AyNUETpAMNmrZNvClG/p6gnlYml0vzvEKtsa3U88rTTWx
+fzoecQs0UugkUrRuJI4XJyTMgRuDDLClH7IUjkrUmw2g6EzlDVdLczcpLxvP93j6
+I8R+DwDwlCX6Nqw5Nnr7Q16n9sPgDthJAF+7VS7xXs/jeGROFckdrolrQGirwbfa
+Kh4k0gfSJykV1ivuKx7QOWN6bYejph9DXD8oxE+Nne1y8tfNZFw16i75y46zAVqr
+rKY79Pkcr4RgP9sAEQEAAYkBHwQYAQIACQUCWacAtwIbDAAKCRD0BvMbwUaOunu/
+CADJcTU+K/cg8ItaIfMWM+miuYpoITqDiMpMw+2RkUnlXwn1ouZP0QP7Cpt3mq+K
+Ihei1JIRKR5+XvMV5h8ffvDy6gKpWdsUFadyLMNY07/HVtE2ydUjDhPo5vb2AWe0
+9qMZWef1/hQumkqqhz9Dbs/L8QATpnYVAtv4QMKFwDAXYCgnBijZClYwwhnJwJ3U
+rPejhP0MQomdy/li9kFMlkp795s0Ng5I/BjkFYg/S3IFQEHsgizPclibJdUR8P2C
+GXOcxXB5dE7ykv51FxMpcpgd6jnK0XRzWwQExelrRb5ys/D7pDiJBuGG/u4Hykbm
+LuHslpPWYJ7ZOeVf01xL+I5T
+=dLR3
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    95C15058A5EDA4F1
+uid    Eric Anderson (Maven Central) <ejona@google.com>
+
+sub    F57552EA2A2B5F3F
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFUITeIBCADHIijQBuGmC+Oo/XE5qIXxzZ2cK26uD0tlDqaPhRLWt5RP3EbU
+b6X8ZLE2AlmawFzU0IqndrCDxSyuo9+ZFQRYT+stf+qHFjtvVQJh2+4L2LpcPrnf
+RK9QmmlDpKsTeS6ED32kYLDj7vwqrU+sdJcMxPViQ4TBq2AH+/pXoPJ9VBW0hg5Q
+WNehQ5yKireszStwEceRvNAnPffVJ3QVbOqFWQuxMboxZZnEmbpCot6hSCDTM+Kq
+3cyJkZTLm5ew9jHQGRmQB4sM8krQomokooSqUCb6YjPf5CmN5a4sB2z/YJMGbINr
+GOv48A9k+GDXliESyGyFUdrbZH+SCjU/LklfABEBAAG0MEVyaWMgQW5kZXJzb24g
+KE1hdmVuIENlbnRyYWwpIDxlam9uYUBnb29nbGUuY29tPokBOQQTAQIAIwIbAwcL
+CQgHAwIBBhUIAgkKCwQWAgMBAh4BAheABQJVCFAvAAoJEJXBUFil7aTxpLUH/2tF
+HofV14ZdDcrx0JRqVy6RUv6juLCzwdmaymOW/ZPYgVBs0tByQ5O1bZ5JprEuQCAk
+HKQj0SgI+1INuFsGDxJLXMwk9wbZGMUY3dcdXE9xAVTtxkFOExtEjTkjxP8TwCYt
+3AerZ3Qa/bdLfxIc1Ikeo5TC2rLcm0VJUh+5l7JKPxADpopQx5ATUdLgZEuEBRlg
+nWNm3Hrae6ovjKrXBomrdbAFcsWJNKPkhfszfh/8ajzXWLvYLAdGHaOLGtN5qHuY
+OMt/KNSWF3h6kC0a189292tTSHQy2lwKFVlbR/QW0VJF5K5cIv59dauGkGssiDj5
+Gq1o3bAfUdrVPBrtwba5AQ0EVQhN4gEIAMVQVNg6Kqg1pZNcafvm8CEwJonaIkmH
+82UmxslxuOP23O7so34CPYPOMgHW6werXSnjmGyk4X1LWOeexjbI1Ve7oG/zixy4
+GTtYST14BeGelAGYELc4CtoWlJ6SodIj/4pyuZdyrVjgWlWKvDS0wL0Mv0tRfP3h
+6bPkE1T4dsCVr3O3//qDWBFrPKClWIj8gPiQZBOZLWMwja6ML1r1KB/zW89mGs/Z
+NQqLjnXdSnS7Db4Mzn5C0JFrhbIhi1PICLYx2a4eW+ZQWArbKQYRg+aSRGZEUFyY
+lowM/FC1t8cPix7JnND7fWY+0+vDyB+dpPQ75VH5rHCpYEUIZzPUIqsAEQEAAYkB
+HwQYAQIACQUCVQhN4gIbDAAKCRCVwVBYpe2k8aYwB/9shrf3hLJEnLY9x7Py5wHD
+bKRw53ep/TXe5qHcH1iSClMEInREVE4ju8IHjOM0UsPKxTT/XDZ/rDXjp8eJYx6+
+ftJfk3Us8LnxQVcZGOwC4tO/sBpy+Z0pIpK4kyPzZjy7XjEDPauC73A1BrtIKM87
+NvazV6bbzMc57RAiwzigVGwSkqrur8O4H+seJ6YtM+rVXl0D7q5ZahXPQcZdCsAT
+6UYQxR4vx28L8k40ZTAx/gaT4SRV2vuNm14iujAgM7RfXM7l4LXt0HCaZYqitg3j
+qFEgtbX3f75Uz7wHmq1mY8CNjlnd2TV/NtdSzBeGxfsCXMEAOwWJ9rIWBuuAY22l
+=YwAJ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3C27D97B0C83A85C
+sub    4BC7B9A81C39EBA0
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBGEdX1MBDACuRDzoPMh3CyUHQydFo363R6OdXqMZ8mJQMdysIJCXOXZGRwUC
+uyPOUfH6uSG24RU2zvD72D2SGAehQKLXLQeN6XCt9PRAszP18dJADm10xgkXJm+G
+GJm69bRYP0GIskQI0D2hXoUlSyXFKZa154pkVzmeM40UXo90FrMC/YjH5dLp7uDn
+QtZbsASlHiy7lXFX0IoJHSHZFppmHcW2KOmFfKwgE9dpku7CdTdySY9BXiLC/Erb
+l2WjwzSDEkQbnq6Jm3/wb/AXxDEu9H2SE6kOxrERqXBfc1ycaEsJMxpLxYpk/kGz
+U6YXqXiOla1SYC78/SnSV8Dkj4/hN1/XtFmkmLUn/WgctmPnsE+fMN/ALXrH2OE7
+pUYLTy7jxJ46dChpjIPJ6Tp5z7EbxdsXR9JwLFQP+Fyp/anqLO/uLkZhZGhI3r6t
+lvFyZW8zoAuf6UpKL6bIvxld9SDuEqahbU1RcLsK/7Lwh8gFYXvq6k9siV2Fs4K+
+UWyVrn5cdSMErMMAEQEAAbkBjQRhHV9TAQwA0zBHsAralWNrZBdCkXHvNI0VqeJf
+Ix1c6AMqFW6FN73153uan6AYkpeBSWz9iHgchZY5UXgaKwx75eW+89X4X0SBU2Lb
+B39584+VDdjieynrW4HH2Fv8VJicioyMYyB/16ERidkIPRAREN3K6SuDXRkkzIZF
+LbHhRZZ6XByKDXeAZ/U56TPgsvYEsdFoj7vn+44ZP1GaAeje5v7nqXiHB1lNrpFw
+T7NV7YQXSpkqQJ4ADaL4jzGHS7umGjY5/T4dy+43qTPIrDSakHFGElfNfW5y46ta
+JiA+Hv4BowILjDMHska9hXM123CCuUS8ZQYmouYleKTCcfp34xxXuKRNDJgY8oiB
+sjXokdCoaRhdcS/PrlQvWfCA/D49XLGCeXdC5veOeGJF9W5fk5qv8Bq1vD/jnapH
+Uf92VkCJ+aVqynf0pPTKrctf0fNsttstGrPSGg+RW6NnQ20B4zgqwZAYME+z9w2z
+jmmLjm78BRJ+nzVvgll8aHy5bel56OdSldK7ABEBAAGJAbwEGAEKACYWIQRvZWt/
+a/sjjTis+B88J9l7DIOoXAUCYR1fUwIbDAUJA8JnAAAKCRA8J9l7DIOoXBx7DACt
+p4W4buVzQKYLZM0Fxucb8AgzJyrMU/01n4ys/hHBLNlCHj/Ar49PPxJ97M/QnI8q
+7yqNWOXPGecU+slBmK9biTHtHnaRhkcC/NhZsIwPNhw0H6QGGYi55VSuUPqpus3F
+fPBQ5uhGpSCy9dfux+9swNl1ZhMj2qO+m0flVf8t1JWLqTPs9giRTWAZfHuGGFdQ
+g/I+3LMyqmcphe/ysTlashiLyusQS3x8OpNhReXjZiyU44bVO5F8K+CZ28404OZi
+rg/TV/mtrH5t5A5rniev4r1FBzLTaqEXslSrvGzZhnZyKefHNL7HMiSWe6AkJBOu
+MNzPX3/PKRjhnZlLM9wpDSpG9Z66cNDDFzUwtDYx5O7gbLFib0OrjIz7q0rhm1h9
+nWky+RZ+dRuNR6HV9OlPcS5OizxbdZ9dgjy4fUuMK7G1gXyifGEXKJCXFW1whs0n
+DOOaC87hGOpfZWMBVF1mbtI+Mhb6xY5pv4UXfmVBNUZLdT8RShMJOwemBJjUkyc=
+=f4Sq
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    971B04F56669B805
+sub    D3664677F6280E44
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBEzZjwMBCAC0ecfE/qkdgq8uJv1c1ZlzegeWH/lxW0W3SWK2RwaHx7LrfpiN
+WhxLkXbK6fkf86FN4579W1+9Qef2yjZCwTfLe6bqj3zZGQWSu7HPw1mmhf9lbhJ9
++TlxlczRt7m20fpSakGLIs1Jp7L4WJq3N5Ti6IsDFNOZdzGCpuiezzvp08PAD/f+
+eYABnWskOOarCOUrRJ5hV4FFj+9w+OPL25iaaEvHaAuqxvmahHzIPaT5v5Kr9Qiu
+zx0jdNaoq4/wJOGQ8rfMnXSjmuoMNgzTEs/H9ElNdBRfH50xYG6MACnVrZ1kGiCy
+z8BYBZzNUen+I0ek9SlMQDvGr0vRe4AeqlutABEBAAG5AQ0ETNmPAwEIALb8q/SE
+92Bg1UamGopUJ7lbqyebdVx0Fjf8T9MkEnteY0kvpEvluDaUWty393w4QRFPFCen
+Qtn5iyIiE0x+/xF5WlfP9kBMS03n6eXTs1pxgQ0YZ73qvzyZdOzg71isigrduA4r
+yXpoiTlWCfeStapimSUUgXxtsxFLeRVm14j0Xht1cvFCKpdxVZ9+vXIQZlyP2QqU
+zN46bwWwK2lNkKehkdSUPgUdEli/jw3L8rdASs6d8RqO/aiQN0R2kc9EA9kaRaQc
+mBboLsuZwoOCbyxPTpIZ7836b/KRuCM0sBy+RVNem1kv+905yWWJF32lZij/M01c
+OUnlnw6TVDJW5hMAEQEAAYkBHwQYAQIACQUCTNmPAwIbDAAKCRCXGwT1Zmm4Bac3
+B/4umKNZuUFKwTD+FTu6kRUOO2Rnsmk6WBuPm8h3ov2g6lW+2NjeeBib3fl+ehQ3
+IeRebLaxa0ZNAiajxbiMW5LNVC0hvqlsVAxP2Rv+DVoznI6L4I8vNEfa8ysbMY4T
+musAds4kbni7oHTUGA5bzvFgQ0ifDaFxFRvbn9ycDYFfatwDEbs3xgjewy1611zQ
+ef74Si6NR86Xit6v+056srmhZyV53e+pxGAVMw/qR6ROiMNrgLl7CPhtTwSYmSZE
+zQseNBFZpHUb7IGzk4B3ulwlhTcLnb7SUo5DhrBz5Et7XcQ/2mQOH1SrSEmoeyoq
+UfbLkuGneZv5H0KIMZ/5pV4H
+=3VLr
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    AB2DA4527F6FFC0B
+uid    Egor Andreevici <egor@squareup.com>
+
+sub    1A94B14C6A03458D
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+aEmE
+=lnZo
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    CE8B1D1D2530EDC5
+sub    7ECBD740FF06AEB5
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=R7zg
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    0DA8A5EC02D11EAD
+sub    71499A87DC1FF84B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBE3LMfMRBAD90h69D8yyPWaSoAyh2mOOOZ/XH0isuBpDZCWptemlMHgImqdQ
+2sXLXYT1bJKmSaMw+yKjp8J/NYk69EbmSK1C2nypLQtWhUmXXd3XVYw6hrG/dGvi
+gjkS5eq8L04f5CSuXO7r1eLTOch9iDl/ESaI5Nhq9A3mRQIhQalum+FjzwCgx0PK
+hoC4MVPVGXzOQPc5sG4jzAUD/0OX9c/yKQqjHUs38HTCgrjseM40iPhp8NfbWenP
+IwUMSWXE3lz0MMeKrGcEOcZOGWsjyepkLHXwj8DDOeGxhfh9bhFRJssdfzOCKBpf
+6S70A3fanzqOAvddxCqF/zOwDaieDmWvVntVpmZO9d+pgR/sZN0JgSIm7qGDdNqG
+Aq6eBACyywfwuVoY6lfNz70ZZqYjYuUkbKnKqpG0XmI+m5LYrUW7QuKJqaNdg+ZL
+vVgX/TdkWVSIoSRS5+eYm3fRD++cg3ZgoR6ZY4WEa7SRSp2zoidtQijWOzp8WeHs
+30rIaXBrb5wHR4GQ4FYsBGRuWkmIaferusllUmHCHFJI4ldvgbkCDQRNyzHzEAgA
+1rD70DvCcy91ShQKP2snZ4cLJnFwKArulDUcxoBZ0AG0qMbaE8jiiJTHIwgVrqsK
+aS1JENv6tVdUS8xHswu30zvd0obaj+4IGXlMVdc6052Y4SLAGNbGVw99Ah1OkQ7o
+v92gmYAYfqppOtRt1tylz7Jf+F6er0umdVBZm8fJ+QjzTw36AwERj2bjVbc6ogM7
+OsTyru5oZGOJ+oJU+M9/mh/Gq3AyrcfU8c6bL2pacXwylME4lxy4fBB7BsMogPXX
+iplZ2XRH7RmlZiAfLHv3StxVB1RrLXVcjdnqIO2guVYrK6mxH9WMG4LnOGvcnYTf
+GtWexEmNA5l8IOSgsK+InwADBQgA037clDFi3XWaZBVXst7IfkU6bKq9vhmphS4f
+uBx4wp7MBA62k0kGDmZWcbinZWnybypili9ihYSHlp3EYzCNTbUMWlbhc/ffYHuv
+rZsIT2DxMPb2iCnjPu5HMGegTM8iTTotW4xYmJUsEDIvgQUz0/UNsPHTX5XU09So
+cL3YOP5MxcEbgO0Fpjny3X76rc+ETAd9TmDJi7HOm24grKdOQXHQJr65j7nTc9M3
+zWnTxOP3fL9jcVnGTnLGRVoR7kedDpa5FsoFqtY8YMaFvNPVvI4+m+jozjNwTg2d
+GG6nU2dEC0qgDEeKMSJwF1wgO3Fe6mXHvxratgNrqfdY/rtEGYhJBBgRAgAJBQJN
+yzHzAhsMAAoJEA2opewC0R6tNKgAnigkHDCNu7Owm8x01E9+aL73JmDXAKCj7ROh
+7Wu1iZQbjeJfypM6CQ+fdw==
+=GCHG
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    AC7A514BC9F9BB70
+uid    Punyashloka Biswal <punya@google.com>
+
+sub    7B92B768F9D37337
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+sg==
+=w5lW
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    D9C565AA72BA2FDD
+uid    grpc-java-team-sonatype <grpc-java-team-sonatype@google.com>
+
+sub    9121AD263441EEDD
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=t7l/
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    B57BD58EF6D0A713
+sub    781D1F35916E0113
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBFsZf3oBDADUgeJsq9asQLaUajkGON9KmxKBtJS+IbGa0jgvx37T4LDigKS/
+wh4axvdJ0mE31uXKitBVDkr5TptyxA0jojYwlt5YLXsotnskdHrIg35Q8xpMp72K
+BfBsqtnfdmBUd/oBZEKgxMM2Pl/VZ+1wmF+KnyToSWuy4Q+9d88ame+8Jdq5ELJn
+zWZWYhwE3c2Y8t62VGzXeZg9Zz747Qt0ITl02//ufoR8aLdb+8uLuidNktyoqpt2
+UG8oLr8mgOAaOn6npN81FbteIWCEcuGewCjiiYTHGpA13JmToDDUfopWYGJirkSI
+dYjP4fZBu4aryHKwXt/zsiD7rzbHrn821CAAZKGptVVu9IfqD3jCBhJilGmkWw+j
+IozAd33hLvlCnH8miXRnGPyNT5T481qbi09wOnQEUYrXBe1zOvBAEVxwSLcNcxe5
+/2gRDbSNU9NJst994hzofSyxA/3X/CDiOSHDKdAcOglgqfpistQIS68FqDGo4eIS
+WeR3S583Two98+UAEQEAAbkBjQRbGX96AQwA5IIECRfqpRDQKsgEYdDMzEYED5i4
+w8GrkqK9Bl2KErI6WQmuBnZaHr71bMrYFS8duUOYetasTKCxjU/Ps0THuOmTnuLv
+Am6PCkpzJ+qBNM4jf5sxHflcb1jRUQ/R+qoWOsWcwJhOw2OgNONHhW8/2mAs+5Zz
+ThWe4cL62YRK3CeWdWphwcUSGx+zQo5vYBZzIbdQ+E+c7aRyc4qEPfyGNccAJRdQ
+eW1tAWydmf+QIYGMbANWNPXm+g80wE5xCA9wwU7N26Rk0zn6e9+lSy8e+l6+hsNh
+uNxWxDDBubF8YMuzD4q+VM4dOOsAJARtp6HW/0mBTcTD5BEOqnDd/aRsNOrR9Cbk
+K4nU1aSrYOeOby8jc7Zu0SnYC6g+JXalt0jtDEGVaxY9IMIe6AcIJhSXlgllK87b
+YX+t4uVXYFb10QfxRj1oduBQEHJkCovsi3EIIl5a4XyoGdNUGn2IgWg+C0RXrcb/
+KDrg7iakp9SwXP0xBSbcNiwE/3C3Xom0l3ijABEBAAGJAbwEGAEKACYWIQQit59F
+awb051uLV521e9WO9tCnEwUCWxl/egIbDAUJA8JnAAAKCRC1e9WO9tCnE/ydC/9g
+6xJK/aIvvKLSraYfS90XamIyUqNgAyXgivWn0jqaTwoz27HG/hRgWR85q72vZ4qV
+vYwx06S8WHMijKMcI5fBtEL318c9V6Y8Pl7jwSOy5yN0k8IFA+TzqHGXVvPcuCwH
+TQAvvP/9v2d7ZrOiH7urM0eoRDXj7Tq+K4rLjeVIHALLEhqBT8w8LGBOEZUAwS7t
+aaGrURVuhO80QW2gJAoG5AU1qMUkzFsTXBsRTcwPP25FIPYClXPNsMR+2iVZAZ1e
+3yBqQkwRlymU3gPGY3M+TOyplfoYIJy6oT2ri0wYa2jeNdo6eEmLUjNAbpdiIEop
+ruzQLLaT7PUk+RU1UFVHjV0rgrXrTYvdgKyI4dX2yGlTTmnq94eaxMOsMxkHAGBh
+GrOJpBDWzJKXX48WAdi/4WpnhOD6N1BOrvWq9QWIU2374WutAX09dt1kBG3m4kGR
+STHuixCePH/e8n89lWDXSsqkV/+imzi75cTN9RWBT1mRltc4jNQ0B2WwUgrTSPo=
+=yiE5
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    1F7A8F87B9D8F501
+sub    7D1BE4480B61E2A7
+sub    C2148900BCD3C2AF
+sub    CFF46EE3C17E53E9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+Lx/KSjFhpjYYPWtx15xNpdqJ8g==
+=Le9W
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    40A3C4432BD7308C
+uid    Michael Schierl (Maven Project Release Key) <schierlm@users.sourceforge.net>
+
+sub    C0B9C2CC3DD97C16
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+ZmnjA2cUdtHLvchd4fiFbu191pbeIk/BSf10
+=kJKi
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    C1B12A5D99C0729D
+uid    Valentin Fondaratov <fondarat@gmail.com>
+
+sub    606CC6C4533E81A2
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=Pyox
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    5F69AD087600B22C
+uid    Eric Bruneton <ebruneton@free.fr>
+
+sub    0440006D577EAE4B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBE7JURcBCADO+9Dc4/JnB+wX+fq+Fr2zUGSPOT6/qjE5kXL4FEbJKsqDSAKG
+VnbtRrsIUdmNIFQmz71bBDFhRBbrSrkz927k8eUPhYtxE2NmmWSuKgrjF4qviPQv
+m/7SqGx378m/qw4EvpgGUB8EYif98LYdWp5vsU/zx0Ps9auqvetAzJaL9489oE0F
+q8FVhve6BMfUUV7zOTCmJnf438YO68upjU0PVBdfFE6Qx4cgCeWbQGy2cooW5azN
+iIenhuYU1qikmxMHq2xZzN4uSTWLGDpimPyz+Y1aTSYJ/bgn9gPStbI9sojWo9SS
+5gvNK3XqJzMwxwFow86UcIE0vPD2T6ZlBAXRABEBAAG0IUVyaWMgQnJ1bmV0b24g
+PGVicnVuZXRvbkBmcmVlLmZyPokBOAQTAQIAIgUCTslRFwIbAwYLCQgHAwIGFQgC
+CQoLBBYCAwECHgECF4AACgkQX2mtCHYAsiwWdQf/ZDnKejrNUOREfAZQYoAmf29G
+zPnQ2XVb6ZxoD2kg+b7SyzVL1lnpXw961Ayme9trxztb9KJcxJ6a+oSVIHWoiINS
+zx1g+lXCsBRH3Lb5iJTAr2u8+Gyva9+PB60CBmmcsuOjuLBx21N0/E4KpBiwEoWw
+5z8HGNVsa4jtRxB+RoQGiilBUIelsI17e3hQWgScIGJdLW5xErlC3WfgtUOL6q4J
+mSk/A1R2jmWKOO+WBvGbnOr7mKZd+/h4ohzVVwyC1WrFeFJgEZK7bXPA77Iv/4u+
+al7RuVztBKjrXD0yPwknuxMgyN+Y5f/pqqKncNl0lOtiWayKSxdatBLmGifAgbkB
+DQROyVEXAQgA2uNV77VI+ARj1d97b5cY3/er0Mcc8/Q9ctMY+5YpSYDOQF100QBd
+OQ8q3IJsfhZeF/iMFlHIUikuSgatb/Ih4lk1+irnERPuV2MNoAw3Fvn3/vwl/Jy0
+ZsQCBSXO54U42TcOXSwNLkYOJaomDiiuo61Rxj7jqijpnydwoFvEi84v6q/Uota3
+MijGMbzU9QyTX8J9OKMeCSUq0uVuk4ezebjv/bwA/ax/qQRIrEHDOOB1LJ5JyLac
+K4+h5J8tMkEmWxEQv7MNokRLgbaePqv+tdf1gee4f2fSE3EXKFxjTO2wjLPXCrHS
+SI5gecsilQn7ZNxH9g2YUJipn9yj3ywMxQARAQABiQEfBBgBAgAJBQJOyVEXAhsM
+AAoJEF9prQh2ALIsrWwH/3s8uN8/gDnbcbTX+7N/ZfQBXJZ+H9GGikmYRJE1xoOe
+Et9MOqZyGDTZfGM/qNKeDGfar7pcRQlMK/A4Nts5E6d1OX8fBkUBtYanyyjNLlT3
+yDjO6VaV0SCsgAzNjUZqc4lxS9atN6md5m6lWLAdHghrXuV6LsiKOS+96htchoCv
+Tvm7mcPI7w146yJRSyCC5+PybG3ult5Y6QASkwI3ZWB0u0PKUoqglwWngplu+0Fi
+b2rxQvL32is4YrYaZ+XwoR6u/Bgv0ZvZiypk17Uk17rDb/JfeLqDn7oW6Hlgi9KO
+LbRRIg7vwZVo2Ixco7aGxZp5c4zSfaPvn241v813ZcA=
+=A2GR
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    B341DDB020FCB6AB
+sub    315693699F8D102F
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEowbDsRBAD2jx/Q2jNuCkgiS3fzIj6EzDP+2kipIKH2LEnpnTiBlds2PFYM
+xYibVab/grgQODxTdDnAKifbJA/4h1/T7ba+OV+xIUoSI5MbgaF3USidiDHPX0pY
+qvG+k3hKECLysQ2zoZpcC8c2ePiZQSVC2i5BRqgs0xZPz3kiT5U9WPozTwCgtasB
+TgHhkOGhZ0SOUuQ4dL54R9cEAIaDjdPcI7LxyOMvvGTuW/SaS9JyP21Kch+Vf6I4
+vKWWqXEaF0So8S088zHnBrcBKhu9D1sKIHS64EoYCrznfMUtoENPe4sf5QuJmZ9D
++fBuFcudQIpkx8L73q+E3fmCK0uX+anqipJtS8mgpMeabKda4KkjDsZkiaNl7OBI
+0H09BACofK1HTNHNke2N0wXN1GyG7IAqprKl4lBbu5aRXvfKQ2tDj8s5webNQ+Se
+Om/Yg0Bi+CiONLgUjiwYe1wNls8zkk3LwYFeKIJ1AjAY3auBRWOI0/IFFzwTkV8J
+YPHa3Dl/kmYp8NMMwA5bgrblggM0Qhnp+k//xpb0FYbmwHMwUrkCDQRKMGw7EAgA
+5MMlt89bomqE0TSq63JnPaSeEKsAx6A1KaXaSg0LEI7fMebSQcAdVdAFBo4HaR+j
+NNGv5JGTvAObLrqxnn5mU/+qhdTw4WCf17R4ETEKc3iFN3xrpxz2Vew8ZWpw3PcE
+gCe27ZN02J6BgtEqhT9v9f0EkAgRHIkcaFCnxme1yPOFN+O0/n1A+59Ar8rmwcHG
+opSoZlGDEdEdqElx/shQjqq6Lx3bWYXS+fGzSAip+EAX/dh8S9mZuS6VCWjLx0St
+a1tuouq9PdOz5/4W/z4dF36XbZd1UZHkw7DSAUXYXfwfHPmrBOrLx8L+3nLjNnF4
+SSBd14AfOhnBcTQtvLuVMwADBQf8DC9ZhtJqHB/aXsQSrJtmoHbUHuOB3Hd8486U
+bZR+BPnnXQndt3Lm2zaSY3plWM2njxL42kuPVrhddLu4fWmWGhn/djFhUehZ7hsr
+Qw735eMPhWZQpFnXQBRX98ElZ4VVspszSBhybwlH39iCQBOv/IuR/tykWIxjPY7R
+H41EWcSOjJ1LJM2yrk/R+FidUyetedcwUApuDZHnH330Tl/1e+MYpmMzgdUGpU9v
+xZJHD9uzEbIxyTd2ky2y3R+n/6EkRt3AU9eI0IY1BqUh0wAuGv/Mq2aSDXXNYJ/p
+znXSQBjmy2tvJlqXn+wI1/ujRMHTTFUBySuMyZkC0PwUAAnWMYhJBBgRAgAJBQJK
+MGw7AhsMAAoJELNB3bAg/Larfc0AnAmQbEg9XnLr/t0iUS7+V7FcL5KpAJ9k3LS5
+JI97g3GZQ2CHkQwJ3+WcPw==
+=OasT
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    1DA784CCB5C46DD5
+uid    Rafael Winterhalter <rafael.wth@gmail.com>
+
+sub    7999BEFBA1039E8B
+sub    A7E989B0634097AC
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=gRaX
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    604F437C1682DDE5
+sub    F664BA5FCF7560B9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFv2vg0BCADQzzfU42MkbydOEese82s5wyfs/qkUZOQatjwPMyEMlK/H7LZc
+Bk2ZOgBMaDDdEZv2Vq+6oUa/rD/Xmr71gCEk5U1rqeZZ4HuvyEZjjIisjnVrMCT8
+py93im2MJb1zifvY+rgiveiVBNCjSkfqX1/g7HmGiYL30romA/io3jvtWOo6PkQf
+GYzifOKz/5j9oWm1yqdXuhVmPD1aUkpXZeoxfWDpaPS+iUm4Db38umVj7GY55okB
+rrfQAdAUuOG9dyseIgI4HPZMB562Qy2tww5q+PvSxs9ydgSbFHFu1ejCmlViSeXL
+leGPJEoiRdyu9zMW5sU68lxhErtFRpa3IORjABEBAAG5AQ0EW/a+DQEIAMiknjyN
+qHzzG07PNE68DSlUuMvraoyJSkcA6Sjsg1nTgcp9jubqekXW+ZHnNYWZJSxZx4RZ
+wloo3+A4skthmDVh2UN/FO9Vwx1EGkJuyaKELmIVBRSC4IBrVrQ/4/nUXMtG9NhL
+Qmgug3glnlXYg5gqlQc2YjNiWI1zdYmR7pHTxBhDYLB1hweA8X7SH690HDevqhiy
+/qT8YAHZzMZaauj/xQHpvn4uN5xpGm1eQw47tormy7I/1QaDW3pbS4YIC+Q7gdYd
+IA217tTgN5OA8+kXuPJJQKDMG0WtEGegYjMMuNh266HMtfekJVSlJTRdIFQT1j1U
+0OLjrk9WRK/ZcrcAEQEAAYkBJQQYAQIADwUCW/a+DQIbDAUJAeEzgAAKCRBgT0N8
+FoLd5RodB/4pZu8Segyb2VhGYbl0jgmZFqMZDI9iPINx7oZ+09Ck32R6UJgaiaTw
+KT0qeEssum3oj7zz3r5D0s1k5pwvd0w5TLL8CeQ7NxTy+hE+8cHZbFfoMBlnr73c
+UhedkZk+Cf7dm/GVkv1ERr/XnL46wLO3OAMamh2wwo9Od2GP58ZFgFd3jhroIuTt
+YtBVeB21JO5eaktP1ZLi7zsGWcP2mPkQAnd7BtQGwjh6x6M+Xhs/mZEmLP2/nLEf
+oX3eaWU6uE54giiHDC33rBGerBuHGeW0WT7wzatKPz9S51w7mqPXLYNmw7/Qwfvi
+Ca2w4l1R/HAaNTH5suZ1HGKy1nNcY6aA
+=fcxU
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    2383163BC40844FD
+uid    Roland Kuhn <roland@rkuhn.info>
+uid    Roland Kuhn <rk@rkuhn.info>
+uid    Roland Kuhn <rkuhn@ph.tum.de>
+uid    Roland Kuhn <roland.kuhn@gmx.net>
+uid    Roland Kuhn <rkuhn@e18.physik.tu-muenchen.de>
+uid    Roland Kuhn <roland.kuhn@physik.tu-muenchen.de>
+
+sub    EDB3D937B0C94C3E
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+1I65Ri4=
+=5Xso
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    2F566D4221D3EC52
+uid    Ryan Harter <ryanjharter@gmail.com>
+
+sub    C4725C965E0455E9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFPSiQsBCADcgBiaKkIG5jVFbQ0NyG//y18S84/OT1X1I82OwtTryxNqxT9A
+q6HuTJqRPi5Qd0BwmQB6dG0mug9AEp58L8W5udiDysHeUvBKY6zTOprSSFvFg/Y8
+S7i9D3pM6k7L7lGahUQqVAAU4RSky90nJfcT3qTNpmsO24EelMf61XvdFHdyPAjS
+aAO9W+QWquxNqXd0FVQqpHKRB43oR64oeAAE/N/H4lvemuxK6aWEq0/KJo0KYHkt
+H60Jo+djdNhHD/EQwCp9m8pKd3FuAAI9/ypvE/a8LeH/8AcLqnrPq63vxVe678nZ
+yePb1Xl7zQUsMw/ZD4urlkcTrOLl9yfIg7wBABEBAAG0I1J5YW4gSGFydGVyIDxy
+eWFuamhhcnRlckBnbWFpbC5jb20+iQE4BBMBAgAiBQJT0okLAhsDBgsJCAcDAgYV
+CAIJCgsEFgIDAQIeAQIXgAAKCRAvVm1CIdPsUvShB/48Ai4yB2nlxy05CwbuX1ka
+E39VL2sb2Bd6ZVtmkWerIaA16MFj+/o12JlJ9R1S7BsrvZor/oa9ejCyJLUOHW5s
+vRD5BkAJC8IRpk88szJNeVwh9gRgd/lWv8IEKMaMFIx1I96NDKo2bjw+rdF6Qo1Y
+C9yC1qsj8vg9+szMvfAoDCN4KDa9rk5/k7a6q390QpaXm7KY0TbqTkUr8Y+NMY+R
+yEap/qk8EzaauKQyHvxOBj9m8bkv2QlxID9Cyjd1ZyJ9hWuyQy8UWLPy6pVXKPaC
+CVlf+Uoj/qbzoVrElZDqGok5GQfKjNFzOkHuKEgXdYEuX7JWJgDO2i4pAr5isfST
+uQENBFPSiQsBCADt3ycVnpTw4NeU+q1rt6+aBrOQfcdRrTAxAwhilKEo+jD1kufJ
+LfcDooqEYZ6l4B9Sw91/zECNmIyqRiMlMTDtZOniuv/fFgxKSzHIstVDjO6tlY1R
+DqjzQUSb5uHMTfToTDrLki9KJfHIHfHSgOvfa1l3FmX4vt9ro8X8f+wfZg8jHY2p
+aWW5RfhVprR2/A91nzgs5a3wdPQi9Bl6YRZKSJKNvgktsm18LMhwLqvuBpQ1ongT
+QdUVY9VLIkDc7Tn/V5x+2mWCAf7HrJg9UnZK0JoKjop4ZwR7MQ0DoBh2K1Hd6RFH
+rmKjpCmKA3TZVAe5C1Ntloby7un2FOL7zZfvABEBAAGJAR8EGAECAAkFAlPSiQsC
+GwwACgkQL1ZtQiHT7FL7Xwf+PM0DHB+7ENW+1HbkEXZRVF3hNHSWFWj1AySvSrUe
+Xm4z5I2Edq0zDdTQPmi/aEhYgXVzsOWXi+MinkNHXerzt6YHIfbeJJ6dX5IL7Xwq
+rsDRxpg/J7MoWL826FUXZ6CePBfGoEA1IjhkeSkyKvLm4aLv9vfC4MVuLHRbsx3n
+np4ZkMVvLBSnBSeBTLaINvhlp15NLyHweE1KhtAqVuiisWm86n9kqIXjfoj+DFuB
+kK9cE/YCU0sNFELYgmLVVoTjxxtY9mPsROt+KJxIDS9BQ8mjeifXbYwkHERnOTKx
+NzgwWngWLQBG5cIsQ4b80Hzl5AF5ApOcC5iu6Z5e2OWW+Q==
+=qdIG
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    07D3516820BCF6B1
+uid    Ben Manes <ben.manes@gmail.com>
+
+sub    11F4CE313A637CC1
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBF3HgdMBCAC3ET5ipFXdZ9GGMbtsCQ3HGT40saajsNDOdov2nMJxzKkVe3wk
+sN3bpgbsqBU9ykVkIhX8zV5+v8DOBzkV0pJ2eLjFa9jBPvNjV+KoK2BAI5pzNzYg
+sHPwo1aRXdI0MvCy+7iaIiiGF4/O16AhU4LmALHnaRQZCyuN6VOQ8rlqNvcczwUf
+J2DQeLHqR/tsch7S01hGpPAptBeu19PyAlQsntYN0yLCLKoe9dFXWCDkvd1So5LF
+6So+ryPqupumBbh4WxCmTp9qwDJYJItjAE0zyPe890FurOtxrFTwtRtX6d6qGKkY
+/B4T3r0tTE1EiOUpmSnxmGNItMh7/l5UtnHjABEBAAG0H0JlbiBNYW5lcyA8YmVu
+Lm1hbmVzQGdtYWlsLmNvbT6JAU4EEwEIADgWIQRjXuYnNF88HdQisuIH01FoILz2
+sQUCXceB0wIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRAH01FoILz2sdoo
+B/0YUh73jUMl14MjWvp9zrFHN8h+LqB4NMQcP93RdPTtDKi0a+0h8gQtm0D+K49Q
+BQbFztOObfZS3kdJ3VOqmodScWrGtMU3HsYT2ioQalqbYvl9FIPDrlOjHaZgwgyJ
+We0DVKHRApbtIh+NxTpQUJtanxgF60ZtOoToZe8XMGc9LaCZcrFxK/AlMdDMgUCx
+qzBbXhAcvut2bJVL5B4kLNMABrbUuFMjTNI4JxvgTXKL/jNk6XPtCjdmgIh7mT/G
+Mpu9t3i1zegAPdM5N/MAgiGHqm+blANLniSAbZja8Ny7211fwOYoJ546VPwDjL7B
+rBlymB3COoYZhql2DcBBg39cuQENBF3HgdMBCACu3VQKKmagcPbcMZOqbDXE5iK3
+0G742rCpf/j3ywnwTZJQ/58HtAi8+/fXxUhTHswoON2TwiiHrHAkObe+K9A+jv0E
+xjKVMmQ/sOCYWZDEGMth4yJnzDbT1Tlm/l2i5Lv0ZaD7fTEhtprQNuU06dveTeJs
+zDyqtK9T80mvI4+GH59wM80l1y6uj8KA4pY0PdSFgbyS9iAFADGsUsc6t1KiZ5W1
+9odMjDPlQtJ20pm5CvJlDZbYNRJ54CSldZikRvmNRg5mWdRLNfbRMFDLFfcdYLdO
+WJXnAt9cKFJC9P//ItZFrlhu3akTH//HF2kxQNW61Sd92/xtFUD/2tN1GlXfABEB
+AAGJATYEGAEIACAWIQRjXuYnNF88HdQisuIH01FoILz2sQUCXceB0wIbDAAKCRAH
+01FoILz2saySCACibIpnls5wJkfX1B/7tDjWk2hEGZYcASr0xp/DDwSgJ5edByuQ
+NQF7RHuCk0ke6IQGfytMLJlXeEIu79DvgPakxBP5iG+c095FbhRu+9nCEkRqQvop
+4fA7ZdhuerOyuObWz8+o3Z2RywWPXlK+F/9iJiO/qtvmdORuikJtN9VxgvAUvANZ
+RtlzjL296p0TJzGqXhyer46CHl/Yj7TtX6EpnZDgiaQbOWRFOZ5x81xI79bQD7Ew
+DzfrwQHbjQDkqhkwOoV6Wq239ZaHh6p7GXHnQkDMQ0H/7Y2tw6PH5VM8fDJkJKF2
+PIukJrUXa06KqrdZ9YxqvSmu5UY6tMSRwGWp
+=/wFN
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    30E6F80434A72A7F
+sub    C30F4CB428DDFC28
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEaNL+QRBACYhfwZdDNXVeU9G5/XsxrUgQGKkhfOaB1CyPHAd02Jyc5oHR0a
+nu7dHb6QBlY8b47pX8ii+uTCOX2yyFlJt2cuKYqN1TwHrMspDTC9K1x8WJMmKdM5
+KUtWchFQ/zmFgIcXM8Vm1851k0aOOP3Pkexv51u4kZ6tbAK2iqYAawB93wCgkv/X
+YpZR9qL0FWip23gsjjxf01ED/3cHs+5L6hm0vP4x8xbsei31/4yHPIRytLhkS3CP
+tPZGANloRi05FlPxNXMQdeI4tUk//V3Yew5LkJC7Ue0zkAKAxjyWYBBsbl20grmq
+89ZKcj0/pZBw9Gzm4indpORfPRT7BBc+F8+2TUD9jpha+W6paCLp9pFJR++OyiZ+
+hNwfBACIyapWUmoEmV4XG869hsnico6vF4WzuhHe/PfityhlHX2M/DDX0KrMqNeM
+muxYNsKoSw3EU8BS+g6bHYvxDFePPhpFIMwbtEEOul533V1sGbPYhBIiSBpnb7FX
+AnbVIYk06T5mKfaK8n9XB4BIrt/pz9gxDjb9KBuIHE0H8OkfzbkCDQRGjS/kEAgA
+madPbo/cLInRyG4EezfSMDw3wNw3Je3+Ozy12FgQE7aaUQ6a4YRLkWeldmTtOBlV
+XqRUV1MrGQ0+C1bWEAXPsrdzzInM8NiXz4d5kCVNa8WzfnA5Fe46hxUqUawSEt6P
+9QpT02mzYQZhazDMJqgGWFHoMHKQVtAqTlKH8W0D0YPRdV6Qn/VYZ2ZRW2mk0tU4
+/xBMLprmcQCrDYXYPC/apl3tXuzXqs/FA60lKZzzE+KqW53G7qSbSSN59IRCpk0N
+X5hFMZJ+/oBItH37Z5V/pVhRGytEfA9yv3IELpJ1CLtFZVS7lJTY7hsr74qRhbCC
+JAkjR1Ywz1/Ya29NUjF18wADBgf/SXXHiYR4XasV+LOngRzA/yw8yG+1gBhF/5LF
+NidGG1NnkUVk9t0APwgd5pubPagIrVqJVbr3UfFjU8lZQOLUigadk+JJ3NnhRQkQ
+NZtkvN9a53vZeORGWNDoxqnIm4RDLJjjf4pfI8tORRwNyqxWxNB4bAc+k9ysXEO+
+4qbQQmCFKzXjCaxWCsl6dXuRvQ4SKzoi63pN05o9/YG+wh/c8QCM7rZVDqIVDoqz
+hHrsWszUyHvr8Vg2uYOaIbxnWXhaNPb9R4h+DV2dITCeIrOj+Ey3MRl+vXNDqx4B
+nEq2SxFS6PXWTjqp7xE0ITKv5rppyrR231RLmY5lQxSbm0PEE4hJBBgRAgAJBQJG
+jS/kAhsMAAoJEDDm+AQ0pyp/2Z0AnRYlvIQAMoO33jBp6ZEd8GQ8iARZAJ4323AS
+sjiqTZMbrvYrk4fWvFzxXg==
+=z07+
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    C4C8CB73B1435348
+sub    EA2A558279B36E6B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+4q5nL0cFWrpYBtEUxDwWSI3K
+=qAlt
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    5E2F2B3D474EFE6B
+uid    Sebastiano Vigna <vigna@di.unimi.it>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFijpzMBCACxAT3jijwXbI6b7LIF/k8oSGyM8ZNJpb6AQvPqKIqCzxNFXzow
+EBCasKMhIWgGy+293Tpt/DY4btJie4u+igMBS86iXrF8CUnOLPgTlAIyil/oREGJ
+1GFkHsf0Yj88zCo9H9GNiUZRNSHdf55gsgjzzFVdZ6x0MoN7Yopbvl71bcTSbe25
+AZM6K4gIf5TTo66smG9FgwDkMxc61ixRty44gkfWapzdob5d0cli0Ze0mu+2PHJ0
+Fdt2sUX/4M0Bpxk7eaGVecyb9sm6KkRaGziJ+XVByZ0UMdrEEJscLaX/UpfK+Wek
+aPQjDdyYLW90PJofKFPt4h2DBQyf9DSZ8NfJABEBAAG0JFNlYmFzdGlhbm8gVmln
+bmEgPHZpZ25hQGRpLnVuaW1pLml0PokBOAQTAQIAIgUCWKOnMwIbAwYLCQgHAwIG
+FQgCCQoLBBYCAwECHgECF4AACgkQXi8rPUdO/msQeAf/Z7IJc8pXwUzm2w1G877N
+KHGNivS5WLfuQk+bCZalLVA25aigwP/YVcF7xdQoS7aBSNG+CJzrLCyyUZaixwrQ
+sV+B5E+LsJWgb7xSvnRoCETYGeFQJdAshlu350GTVmCfy3xil4FFyAENl5r3nB98
+tJ4HgYh+NwUH9GUTBZV7SpnV7I2MYOv7mvixqioN8o51SX8AqbT3LgDko3XegtDD
+Sb3JMtTACZ/7SltVNoGvLzCOSgnj0HkU77MZQ5q3rQCPauz8Arp2vJCwOvkYXPde
+O4t8s5dGRTH88sYI81CWQT+X4w1q20CvWxUd3j3ZJthyunX5MH11nbYdXbAnGPIi
+gg==
+=UN0W
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    E3822B59020A349D
+sub    9351716690874F25
+sub    60EB70DDAAC2EC21
+sub    3D5839A2262CBBFB
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+bMW74dKTLoW6+aNn4F9nqCJ88A==
+=2g4Z
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    15C71C0A4E0B8EDD
+sub    891E4C2D471515FE
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+tiwy+wOBjaK9g3Kk8jsN3I8t
+=8Tiq
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    9AE296FD02E9F65B
 uid    Luc Maisonobe (CODE SIGNING KEY) <luc@apache.org>
@@ -9011,115 +7723,639 @@
 =G1yK
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    FD5DEA07FCB690A8
+uid    Baptiste Mathus (Baptiste <batmat> Mathus @ CloudBees) <bmathus@cloudbees.com>
+uid    Baptiste Mathus (CloudBees alias for Baptiste <batmat> Mathus' account for infra access) <bmathus@cloudbees.com>
+uid    Baptiste Mathus <baptiste@codehaus.org>
 
-pub    9B1FDA9F3C062231
-sub    458AF764D812A037
+sub    5F68B9B2F1725F16
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGiBEWjofgRBACePEiXmSvjcjUgWkNAFQ/w7w2VSEqe1vuTCrta+ER9JsvhwipP
-2/BEHigFf99TlU0p1UC591LMeYP2UXfQnb3jiyEPKxA06aj1fTGGMoNMAilymvgd
-pcixjlSJBvsmyFYuUdYK20UghL7fAU1lD8Y7TVXz0XT0n1oMOwf78qB4vwCg/bIQ
-LlFGTwqgEBBJpFJnaVk66hMD/0wMKe5Lk3rfdm/9Ku56ddZ6GTjyuNFI6sc9gOIJ
-XWuRpZUO4d7LKq7QaKLKBQeAI1NqqZuB7gtdU6ILy7OjI2C38KTCpyu+8lj97CNQ
-gJqFh26lqhtFfMOUwKvNUUsEABDy+vnI+VCW32ZT/E1xjA+nVTSjGM9lyv4Gls7M
-8pd5A/wJ3rD8XDiriM3ZV1Sn7/pt9OBxc25YHhfbTinIQBYCBhTw3wbS3d+PLQOL
-/TmkeaZcuFA0KQW5hHEjTIY2YbOd2lPNa9ynq+/1OvJOGAseCWL8uorYAmk6ztkc
-Sy4UZuNbupNSPGOt0hZixQpSB3Tv49XlFyupd7rPnYi4F37nPLkCDQRFo6IbEAgA
-oPx5Bm4+wUuVea7pqi8NTs/CkhAdAWgNnsj6tS/YzyncXD6mjc9Sx12Y6DRCkzC+
-ZTvy89nt/IHOvbaCZ8etLuBonv9PyYXu6HmGNihqg8rBQzXUlbIPdZD/1GeVwH3k
-O2DaZ+Rt1EKjnloXlpwLGMnn2n9isWUCMWjyWSZbnNBca30tooXp+cWGBnClv+Ay
-ez3jvroWCe9vVbj8/AWM2Pn5pB6Ewzw9SLmC3kgcq15XXBTgeeEZohuTvrmsNOHG
-Nh9HFEp+Y56JD8ufPOsNayRHW3ex8btx4sZhLO2Ixj25cOjDfoKZ2aj8ByCsJAsN
-U1qgWeyn/QTrrHavOTLpmwADBQf+K5Fi7IcpD+doMksWWpu68+2F4sDiHybwi1sr
-kV9oy/R6vG0SkO4DuV2/k9rCquavHQSW7jXzfZuOoY/ErK/6/bd3GpLjZNR/K2ZN
-T2aOcHVFJoQTQgKf3GDlSmecNuskHpe1pUhbaY+zWKx+DMEjcwThchArABW2djcy
-Tk0YRygxQwqWBPGI8sjquxsrqKKrjallTVokbx9rr1VwCLcxg3HFI+GJjhHkjmYX
-JANSqzaPyIamcfR8wBQEV9+IiGx/EdRTvASx7uveg5119pPtwb0g0r95SlJpoYQe
-4wiTAagxkwwSb3qWktA06gWykX5NQkMX0VK6lsNvP0tAOvY134hJBBgRAgAJBQJF
-o6IbAhsMAAoJEJsf2p88BiIxBmoAoIrGOelJKnwyAjageLevUw4Mu9J6AKCfO5KK
-tBZLsV3Wq6hCI55+iA356Q==
-=kt5X
+mQENBFFCLwoBCADxtcGi0nfolr1kGWe3jQ7n18roJFwBs4Q52nx0h4+a8ZGr7/1E
+1brakrz3t/cTSZIrhfru8kirP8cJtXBxpd/nCeRrB/4ZtXPUJiGwKx6sVGr0ix6U
+eZKQb3anH3jdGTzZ2csqt6Ro85SvIHfqAREcPOoQk7Kz3DFOGbSfECN2Wf1pTnRT
+jdF1Z5DkoTd8sGBmGOdhNMzgqMTHz6np6M2B/JVP5DpcKPbbMhQ75RPcxNEb4QSa
+HtCL+gMZiF7fndWx2Tjbpanbb5+TomfWOMizpkyziyYeUmGoyggrnXQ4BMlzsIuK
+ATz6wA5j4qfRLfoDDgNv5UacVAtWL+rlTP8NABEBAAG0TkJhcHRpc3RlIE1hdGh1
+cyAoQmFwdGlzdGUgPGJhdG1hdD4gTWF0aHVzIEAgQ2xvdWRCZWVzKSA8Ym1hdGh1
+c0BjbG91ZGJlZXMuY29tPokBOAQTAQIAIgUCV81wjAIbAwYLCQgHAwIGFQgCCQoL
+BBYCAwECHgECF4AACgkQ/V3qB/y2kKhonAf+Lcl9bj90OOyUANRNkZnuq2sLI+KD
+kerGmbwG7FJCM/Hvq6MgtNaXt98RfU7a1aBmmM6uTOBFko+7o8QXocnU/2TrlsnU
+yMHsFfO7OQSQJebSSyAyE1vy5VYzblsqgfs7Zreb3BO/awzr0GZXjR+g/q6ivxhK
++2pIkdfuBBkConNzoPqSC1f/F4qZuCi1e/VM5LmincIUEnWUR/PXpgXOwu/KoyzX
+X8VC/Vwk73vGaeBN3avCMVzNUmyYXELzcimcaa70ISKReUJvoYqHEDyVcMk9Yzjn
+VosDTfun0kUcfs2nd0ZySyygn80JHsZURIzEAnliz56lE8Fq5i2MO9o0ErRwQmFw
+dGlzdGUgTWF0aHVzIChDbG91ZEJlZXMgYWxpYXMgZm9yIEJhcHRpc3RlIDxiYXRt
+YXQ+IE1hdGh1cycgYWNjb3VudCBmb3IgaW5mcmEgYWNjZXNzKSA8Ym1hdGh1c0Bj
+bG91ZGJlZXMuY29tPokBOAQTAQIAIgUCV81mXwIbAwYLCQgHAwIGFQgCCQoLBBYC
+AwECHgECF4AACgkQ/V3qB/y2kKjQQQf+K6NNaERzm+5dkPOdmrVQQPAXrUxGW6b5
+Bsx12mU4qJKxQsq9tKsw9kdkvlP7rVhJATBk4J3ZYGWSqQajnVcAxznlWZVksWqo
+rCtYAH2+rhlUBo7/mvDnCW+z0vfEwBS4vQM3Oo83CyOecSnn98wp+W1O+TdCZVAf
+k8UOrODdc55VpXoQTw4PZ2uGr/56EFNYNXia6O7H0FuyDM6g5ilFd5Wxpp7qS7D7
+zJkWciSGmOwcw4NeeAMAu0bv8X9vmom30EEoFa6o3GHUJz0/DsbaoAOxcVMIymY+
+SzQQ+XyaHpTeRdpWB2qQo6BHSktm+vxp54811qSwyqPp0uKjHmVFLbQnQmFwdGlz
+dGUgTWF0aHVzIDxiYXB0aXN0ZUBjb2RlaGF1cy5vcmc+iQE4BBMBAgAiBQJRQi8K
+AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD9XeoH/LaQqLyjB/9diBWw
+NMYG6UB3ijZYyUo0P3F49JcboW8U8vtGkDjZU8bSHkDQX/1mstMSTPoO63TrszRh
+UCn7lMxHfDaYVhbr6N622Jc10WhGiJICPGSz4azHdQA4e2tC2l2BCMnq7mvJ0bVx
+uqVb3VE5P2R884g3K8Jq3O3tjWTten5Z63UvqPcPmpN2C8WoI4EDWqxTAxyJs0GQ
+hNnfPDKycIpv7ESjprJ7c4oo/K0YUtlK5rF3eNorZSOrj6adsrdcf7IMvQxnI2Ro
+tFr49wqdvn3fTW7db+1qoXAvsHV7bHZPxc4OmOeCuqNOoh4J5ftROO8o0Gi/wC4B
+bniNzu7SndfMOTjXuQENBFFCLwoBCACaK5wadodZGLdBAAcRg9rwBzPy+F7ZXdwQ
+A1kHo0Z6xhQJP2/X3C/rEgKW59QhBLyEMBPELRtO5vTC5UYLu0pHK0XsOEacFVTW
+GQ+gLGp2UkScAJEgAQPYNNWrAz0MoAPQ//RW2Byph+WBVtgnP09nmq/WcXjv0tz7
+FrSFW/A0uADkcEdWGx6ItNiHRAZBgO4uzSY8GUw2YSEBjAilDwVs/Jftj5dlJlwI
+JzA0VzNIFunKwBTicMHSSHRNic+zlxMOs02a3XK3NBPv9a5DIffZuU9657rHmZM9
+zaS1PyHsMbpZsy+hFtxMFfVuViojg63ZC5eh9C/ghKCIbP0F+L9tABEBAAGJAR8E
+GAECAAkFAlFCLwoCGwwACgkQ/V3qB/y2kKgcqgf9EGoznHgOwfohcWsi6uIuLgsT
+ypd2f+zPAYpgySP8LK2+UZBnTzo6zxtWB0ZZAj8ICdciVOdcSYim/X29pRzygKYD
+JpHh7ZvvxeB9bxg7Gfd8Ml5Ycdf1x8L/Psi8kajbkMczrhClxhAR76Zqjpm6gvyi
+e+21f6qAnx9B+J5jQpN6p5uLg1Ac3dU+kY9MJLL8qy53yXxJHfcF+hMoAVZPajU2
+fzySiLttENnxXHIqJiYj/N53RJmcQdYLNjQNwfpq01DJy0k5nvXDGCZmgUB2T7w1
+sVIIF1w0sMxaEy8blxB+j25b3KhYYe9NiQvK+/gthDgWyhkHs2UALPQwIfd9ig==
+=YlII
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    9B1FDA9F3C062231
-uid    Brian E Fox <brianf@apache.org>
-
-sub    458AF764D812A037
+pub    5B05CCDE140C2876
+sub    9D29AE4A6B50E01F
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-=o0/H
+mQMuBEwVZOURCADNnKQzSjFuI9/IGj3WTJcPU2B/H8NbZaTsz5WE91WumgZulK2q
+YeD4u6zdOyFK7DEScgxk7dicox9cNEgYKQnQXctDhfqER9bnvA2iJ+AFxjRAWyvs
+en3ClYLXT5UVx0H1ZfDVKCvmaZVirZInfkqbi3OiPQoWrUfu02c3DiHQJ+Y34kdB
+egH2sIShNH8WLfEZ3YDQ4XaWHVuN1C7VwCBM8R3OeTTfyDrTsuyqJ0SeZXRR/6df
+2pEckjF9DNSXyjzFg24MrZhuhgbnj0oR1zmRh1EF+KlBfF4DF4acfxWqqcJVJx/3
+FTtOkLe3Xjj+inyJgxOW52gD4DsJpyf1tIbjAQDZvOdlRRCqZB4FnzzIb/1GmkGD
+JpDLC4MQmqgxkm0n8wgAmmHLpqDTdmuyJXvdX9RdGycpW64sljd1mpzTWJ8UKDhj
+uFQVHSSEdLoHoVj8ItnBV2kXd2uoQ/tWzbxFBST7wE/tX0e9G5XWaPKogvOKeDus
+u9XTIds2krYp80UTYWFZ88oNwGikdIrEYURSYDsYt15miROtKHWbSOHeLVbZqgVx
+dtWPqQVfH4gJGEH97/OSmozqDVog1aZDKBLGZQosng5h4j2RAQpjkaIdxKl8m7CQ
+x0Yi9tA8yD1QhRGggANQIb4n00G/vm7RMU/7NBvvjAQ/nAFjbsyO5oX1rBY1M6Xo
+NFqIBrHSBzV9MmhS3nXU+ZjAktCRhyJ7TsoHM0OYEAf8CduM5Zzp5w02iVYkFQBB
+wAoKHMpycW5LhMMMS4w7gmOfP7y04rtg6+zVe41y6bOqn/SxHCcCgnE/nhdexlzH
+ElYE1H7+HpphoI5vEwS6uElF67CoO5r74Zrb6nshGEj2AoOqjbrsdQm0noBBNYAu
+f9RsjU0sQQFzLW8+2xahqK3oZkLWOkSxzLtVwJbm7EGaGIYxEBjg87OnGQkAi9vv
+tVPwdO3VWyvgKLuPHudLDhTpeH3AMbzKgnru1Pnh/ZpiRhPzsbuFtFPEX8PMuCyE
+n4OLzUALl98kXuPjG5ww+24UsNgKMbKbu8qq/zRu7IHlpZvd730RoCWU2/i18tnY
+zLkCDQRMFWTlEAgA+MQFGIhyA4Ww9g7J8ZiEltwSzRblrjM1q9anexsBIGsWH37A
+92rlVK1RzMVfhj5yl+BzIBGO+zHbgycX7iB5/Fwsm+6R/2Uich6NDm1Qai9rc/jg
+3MS0phOAQzgxlGKOTS2GzdbDJCBQMijDObNe+Cs5DNB/E29/nzzCTQvtRzSeplZN
+r+8Q8lWz6efXmm5EeeZxN4x1YXjjzMJCHbc3yGxOjTgYQOs962yUYsg9UDRJm1OH
+9NKZe1m3dTRIMUcZvL12dq/kyiHHR9V/6CkdiNw1AFMi3tvEdvX4D1k1/Qr/2ORZ
+E4lRzgug4sKkpgaclLnkJZ9EMczmUFTGbbkx3wADBQf/Y+2nZCJSuHiDv/+SdhQh
+OBapZ2hYPDvg29mpPqin/LwH7eFTNv/oos1wzuzGtTHHGEP5mUQLOxjwdAXsWMMj
+scSbCs66ytTN7X4O8qh+1yN7vrM6ZBL12Ix7Ku40cgkWyvTVLBXKaEGm4ElhAmSL
+Fpu+/fJw0riR6rIuwHcGB4R1IJtMWcj+b1odgw9QmJ8AGpHh2WVdXspoCGnTUN4m
+DEswZjplkKXCgLypU13SrHVOqhjd4caK5GNZUfWtCKtwNcJMnvgp2truMvh9BBn6
+widfK48hEknQtXzGjui+bZz2/AD7/OT/T1CqDspB8IQlBCMBn8J4U1grSrZ1wTJf
+HIhnBBgRCAAPBQJMFWTlAhsMBQkLRzUAAAoJEFsFzN4UDCh23wsBANDSDn2KWz7H
+b5geDwUTX4T8Uqn21eFbp54tFTfopCd/AP4nTdX1iahsClr9q6G+CWQBuQWHVmq3
+FlPU/jTn6vXQwA==
+=dKtU
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    7457CA33C3CE9E15
+sub    ABE9F3126BB741C1
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFIXyRQBCADe285y3Pu7KzoKyP6wqeNXtvvuwMatAmPm5x/i+S8MlryqzsYa
+x6twUmXV1yKjjtGrO+9fHvTOWBfSSP+fP9KTaTQYSasoJq2Mw4cQDy1i0zrxNZUw
+N4/BiyjQA25sdfaOolhO0sFlZuTZpYy5wG72KkA1ygNq0L+8aBKhEF6zDU61YzCC
+AxjcgTftgTeeoqkJtYa06lNz3jmJDN+zUQignfRa3ymoGtFHTzoXR9maE8RWDty4
+y+DY+8ibdGgSgKPZ0byTCDyNojgU1YTlADa/1/NY1ShYg617O1xicLNo0JEJlf2U
+Tu4Ymql36+xSkYSISU97Q6Utgq27XMuZvDUDABEBAAG5AQ0EUhfJFAEIAN9NHRd2
+bYP/3CDi+n1ilSChld0NR3DUBgS/AdqQ7IoAUfj7skyI/WyaMdV4uy6vRh5YgNg2
+g01nd0LLZR8Gf2Ck+D6F88CdZaTxlkcxHV/dXMZ8yBO+0D6yFRZEL7Imsv8Ig4QX
+OVwfuiXEPk/Ef5Dy9SdAVhcoErTGGR6BOGVVvexGtBwefsjMaOG0khkRbWIQ32Wx
+fUFuAv5XBQ0ckLrlKvYWUYhOlXg27GtFKH2EBBF0Z5ZWu7gaBFwSV0oLp9EWcD+C
++WEwUSfBdqfRJtyXvgf4kZdwdQ5caM8P2/Sdncl2l/LU1At2Smc+plr6zhIhDlLh
+lrzKGa16oARSBdUAEQEAAYkCPgQYAQoACQUCUhfJFAIbLgEpCRB0V8ozw86eFcBd
+IAQZAQoABgUCUhfJFAAKCRCr6fMSa7dBwURMCADHrqwRNHkbG1QsXJr9oUK6KVkL
+sPhcngIhxRLlqe89omg9G7eGNauzs2PKsB3txotCFc7ROVNv/TAuSDYzkPos8G46
+p3bGesjfJb24zc6GMT4RGIJoh1oNG1IciafIIHjp2ZJHRmEDwmvZG24OHJ+mlHLj
+aedtqlWu+zwwhH2VZrI/U3gW/x4imbk9UyyzciEIxrAc+fc19xl5PkUVcSDVC0cA
+qGpeZz8+SxFaf3Rr0aGnSbeuHRjNupmoxkQOAey1ztmdWiCPf5RFfmFD+fENh+/x
+qYiGorYpcIN7UAsMkvD5UHc5ZG2tTD41jM99w9Lm/xHJ9ks8gNwZESwIzr6ABKIH
+/1ulsflI216qPz5o7uUxlTm8NfTyATfCUuZEDMYGOjDQPqQa8hFebqjWWYBUq2Sl
+aKD2xMeEuEXV+M5k88Cx6T2nvaZWMsrD7uGj+tTsFaKBGxP5p2OSEWOTETKKv6Cx
+7vcMTQmrqSFo47bFKlNSs+aVM48UnQeFtTDyOhwa5jvtqtst4eQHwHWQ99BK0TEy
+mNx0vF0nPjWA76CRrfopOwXKdxJgoKq4MrxE92ot5I82AZBPeiWVJ+6wECeK/GoB
+IXZ5jEUqrQmmzIboWA5G5PMJ8egzLJNRJjTWHjCWrUTnwNcqaD4/qZxIlW4Lt0uv
+Glx6pKOJQ05u+9X/BzoVWrw=
+=ajY9
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    164BD2247B936711
+uid    Marc Philipp (JUnit Development, 2014) <mail@marcphilipp.de>
+
+sub    EFE8086F9E93774E
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+Qw==
+=iceo
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    912D2C0ECCDA55C0
+uid    Emily Johnston <epmjohnston@google.com>
+
+sub    37AE8263DA3084E5
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=X7Ws
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    2A742740E08E7F8D
+uid    Terence Parr <parrt@antlr.org>
+
+sub    74C249541619FF0B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+jJNKSYyrKuT+DCAd1uFvcTw=
+=SigC
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    11509ED50EC155E6
+uid    Konrad 'ktoso' Malawski <konrad@malaw.ski>
+uid    Konrad 'ktoso' Malawski <ktoso@lightbend.com>
+uid    Konrad 'ktoso' Malawski <konrad.malawski@project13.pl>
+uid    Konrad 'ktoso' Malawski <ktoso@project13.pl>
+
+sub    DEDF3A7EB400D53A
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+1+61dcLTcdUOi2uBhwZG67Mpp3cSRw==
+=lHW6
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    9C538D5A79281639
+uid    Alec Strong <anstrong22@gmail.com>
+
+sub    81176177BB514041
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBF3xPHMBCAC7OXU5uXXKttUU/BwWm6q08NBC3ybk0fNIfoITWiFA1RtxO7S3
+K4ijImBnLLb7ivjpTtIWzUwFAfSZHc3LgS/TBQJQ2PGsO4/AdaMAcs69irgfoPYY
+1sJkR/Iw/C1gi7KV8PR/vwIE5N6wVll42FMGjBvKl7wTmvuHDou12tANXWJp3X3M
+5qj4eMK5fIv11u0vPIsmBHQTPzZN6prxAEp8Dm3XDT7OCZxfCYsy1Rl6zUIY01ai
+/lOk6YAg6IjHqGyChlJnhQbmvu4kNrRiKRSElikiDDra1Ltj66AGD86O2yQ/21ha
+muWwm0GWkl1gd3k3BOy7EhvDTAE3RFi4f6TVABEBAAG0IkFsZWMgU3Ryb25nIDxh
+bnN0cm9uZzIyQGdtYWlsLmNvbT6JAVQEEwEIAD4WIQSbvBw+QIygnPdtGgKcU41a
+eSgWOQUCXfE8cwIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCc
+U41aeSgWOWEcB/9tOXz5kHKjfZOFKjP8v6lmDZfpJmt1oFngOLVm/fjqMrP1M47w
+cTCershV8DW2LWIoAh7p5w4/9c6Uaa48YptT5JqAQ4G21Fy0P2bAZ90uDYRxoY0m
+ybXiH9lwTWgrj7X38HBZfZthRT2THLWXYlYhbsxQ3s5Kfj0gdAN1R3IMm+C5bjxe
+n3X7fCcShwbb+rX0yCH8uUT/kjVJU0KQHXwih6QcknkK5pIpBfLRgukAf/qYY73b
+K+lUBXBxxiYUGc+ydQi0huEpNOTNokOh9PB30wBwccrLPLeWrpakGpUlNv3gZ/sI
+cHXWDtBB2g8KxKESfWzoroMq6y+XXe3ubjE/uQENBF3xPHMBCADGJu/jqEe5/eot
+oS3YqaBATQPZyKgYisyA94Ivo5ZrRGwVACW3aWbzeGdGGr3AazWmvhfMovSp5Iuc
+yFTvjIQwlNetAXHuZUi5sN4I8o0sDPER7Y2RqBfZcvU98CgTziJe85iEy1Vx0NVJ
+OSd55ZeLtEjeQbF0MNljrU4j4jqt/NR20C0DrJ+tgH4tGuo7n3AWmCSwzoXRrzEJ
+dkqf9IWXww21MjmOYGEOSClUA9L6HxeVrZX8IauV1eVeDNyTUbC5eVAhV4/8TiMM
+6KbBRUsPzW6TXbo2HTAtRPsvzM2ssC3QWV4aafLBN7MadK51ZKD1ZeNnbPvxGWrL
+XDVaXDZvABEBAAGJATwEGAEIACYWIQSbvBw+QIygnPdtGgKcU41aeSgWOQUCXfE8
+cwIbDAUJA8JnAAAKCRCcU41aeSgWOZNrB/0UbtDXcjpzehkR73Xc8dj8DLgwMANh
+5Jr/dHf/ZENXOIORuN2uWg0Dai0mZ+gPC0jb2qNK0MdTbHRNHPEcS0UX6wDBX0Bc
+BcbW3nesQXv4LYJY2DN8Q0vtxj2Ra/4FfxT+lZn3A3BmHRu+Aps9nmJoGOh06ThO
+e+6KezHnYmmo8IDzS3JuyGz8ma29Qem71VDAMlLNg0QUN3RJc7nSLdwoLUDJWmpm
+WXmOR1JD0iewyjuSmKHuizRPPNVMbg9R+eMPF9OECheR+Pseu3XTqCyqedEDItwb
+htywBZaReIkxE3VIhM7CEI9gsVAaNgoe6Q7BXIk3WMDpo3t6JWORF/PE
+=EwZF
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    296CD27F60EED12C
+uid    Charles Lee <ckl@google.com>
+
+sub    D95ECEC170500D9F
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+pbySzrh5PAD5/2W6CzkFMpH6a6E=
+=sgH/
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    E6EC76B4C6D3AE8E
+uid    Sandy Zhang <sandyzhang@google.com>
+
+sub    52410ED7B05AD2E9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+MmIzscVR5uuvPq1m2aUkkKLFWLBqkpuelMmW
+=W+so
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A4B1A03FB9C2CE23
+uid    Pierre Yves Ricau <py.ricau@gmail.com>
+
+sub    21200D723F53CE38
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFy+swoBCADGyV4k02OjVCrziziYIvIO+qDm8Yqxt4KVd+ISw2DvmKVcP7lx
+z5WVGvxVdAl+Xy7FdcrIJYFCsYfFFxPz+BM6+np2c477HkdIcDwBWiHEoOqMehax
+wlEBhJdJUVCjTKvpMgqs4/a0PddNcp/odYx20HzDAK+X6/EgL1McZk03okfMSn0R
+TUvZeh76SbU0aQRXdGlSs5IUtywn2f+5jUNLht/TMd/bbAXWA2EQo1UallY3+dj8
+I/Y722X5Yu15rLu8u+pcVE/pMO9CHeX78mgPU2xU/xwDSGtU5lxwNXnYpHMUdFB8
+YtG/ofDtZR9+9Dcjhb3xSIv6Vlui9HgOgvctABEBAAG0JlBpZXJyZSBZdmVzIFJp
+Y2F1IDxweS5yaWNhdUBnbWFpbC5jb20+iQFUBBMBCAA+FiEEucyhPFnyHGzoQajR
+pLGgP7nCziMFAly+swoCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AA
+CgkQpLGgP7nCziPuugf/fDa86INrKZ08fCywB6oMcLEi/sNBbaKaysbp/zmmANwk
+nTWrIH6fqfQfkFdBpA4roPrjCNqQ3gdpjDhB9U7IeqpUzzeM+WEWVOlkA098MFrj
+ToJuxf7oCMXCPAtW3S+tGM1FdIFtqzoE3mdbhde/F0ppJDIbuAZfjKJclIeGj7eC
+6QbLua+IQeDKuQ6TRuFCc6vWl38L+LqqmNPxfw7Uta9W7CrP5oUYQqrdIszeVWGV
+ivK8cyLltXgIKcWJmj6GLsJtIUuXAj3kg1d05HQ5dpIkgaRN7+Q9BnsTcdnc+R6r
+nprvl+/QNk6XeNIRrPKiv7SWf1gYWbi4CpthjNsGy7kBDQRcvrMKAQgAvap3U+0R
+j3ZFSth8u9AnCrJrClbNtysMEYmpK0JgiNpaCDbw5lPv7yJyTPjnGTLSS2qx/+C2
+2Bml6b7lV2JgCXA54p9sa9Jpw5Mili2rx/62M0VmqMCNZi0vCxBOlj49fSpyxfKr
+IJ8eNwXd/XbHl0uKm+AYCJgtmBE4+ErSb2tJ3iEPqRBq9vYXnm1LKIZVKHzZr1Gw
+LS039UfGBFtlChF7ED7wQ4XuODmz5dx92tkI6svqvOuXZaTP1PDTqu8l5+E8yd3q
+JvonloHroLKbTDEuCtpn4jDSN/LZ1C7ekRu9OjL4gChvs/TJsPwkVka/rw4OWEOR
+KQfo2iv64g4NjQARAQABiQE8BBgBCAAmFiEEucyhPFnyHGzoQajRpLGgP7nCziMF
+Aly+swoCGwwFCQPCZwAACgkQpLGgP7nCziMSkAf+L6oedz16wE0F2ZYc4UM+J1bf
+qS2HEesB7YGTwnafi14xRQorvFOJ+CxfyDnl9HGCbfwqie1wO7VNQukhWl95wJSc
+Or1Nv3XPnHq6RKpBQrIR09eggfegf1N67HmorYRkfA25fwe9KmbNAUfPiKa6Vyrx
+6htiUIK1V7ArKVXwBL0saatdOnwrxOiHKBbxyy2jyZgt+rHKNUFmQLiiIvqg+krh
+sSksRMYzjG3Y96Wm0K/IH0XcuiQkVaHPOYSEqODz+miiS/PSqbw+WhfSNtdKfKDx
+OS6mrMnFluqthJ06aXBz+RmXGPtzJvKnI2LN7lwoGXk5zynZK8AXpTOpWED5ow==
+=Ig1p
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    DEA3D207428EF16D
+uid    Dexmaker Team <oss@linkedin.com>
+
+sub    E8D0C72FC5A02B28
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=Uwhf
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3F36885C24DF4B75
+sub    97859F2FE8EAEB26
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFmfSwYBCADdZEuR8cs2ejLLW3+Glxiq15rVbHbxaWmmZApGNijFro/LzFrR
+z+99N1mnA5+Ar/yKmn8lsCiTWukGQzWbdH/QSRUdyHtzxbCSeONdMhdKl3sJY1h2
+jW28oYL6iOMtNYe8qKoCrHRtyTl7oqYtYuhMwdNedGrkVWPrInmg0ILUSz9RufCh
+6KW3V3eAwz0LbckpSi9ZNyCNssjINvr6bRf10HMucViAB0O1DjrwO6aiFnatTCyO
+ig5MMZjgRPKjMASsPG8Ri1xivBYS/tpgamQzq+htWkbEydNv9+g31S5sN0pPw2km
+e8SjKp3C8RkSgz+dJz+P6tQrmGvZNs+pm2M9ABEBAAG5AQ0EWZ9LBgEIAL3j10Fr
+ODkE7yVreTlYs7UrZGaJwdx8stENYdHHA7MmDIMkVnjAOkzAwW4zRXdtFHqICLUO
+L4ZRnAiGuyxiwvxXM7NuGgCfC94M2w58xf2JREaCmU5kII/O3KOv60y8+QixFZl/
+c7p3YOGwOQEEit5445chxYwM88Bq+LgkXAn9zNnZbOyUv+E4gx17khkyZOXP+Z2P
+d606+KRvENLlFbrlVaJ7vzGiLhvIr62I4g3hJj/ob5nXT2tZSyMN19bJOtOd48R6
+NXFDmVC3uLWBgqLK1UgV5SylyKg6N32CUdds6E43DHLVUipawknN4QDc3s+ok6j3
+nN688afjFCLQVE8AEQEAAYkBHwQYAQIACQUCWZ9LBgIbDAAKCRA/NohcJN9LdaVO
+CAC7wk7tKsSNDxLhcq+Oa6TrE3JDQUYx6xlVsw0ZOq+TIbk2D7S/4phY+YSUUqWZ
+rp2vpFlszbcJXx41+s/ljfNnkMVjoU6D/A3R0az9weFfmq0J8CoJeP86CNxCiRIX
+d1rZ6wHlc67QJZe/aaYzxOO8vkzkeEiDaXjvmaSoADucbF1c6KjQms/yJ9nFz/Mk
+FPRxWntD1UkxNLh8UQZhIZFrAmhpgdDa0xq0VCJwL1ZLEo+cm6wKTZb6iRnSqPbu
+fwS6/GYF9IKUp/WVQvhZ952mwzfrz9r1PbTg/fOo+MOGywdBZpEEPTL5pvfrrOYg
+5q0kixiYviNzHBn/YKmH2ibE
+=xwpz
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    9C4F7E9D98B1CC53
 uid    Benson Margulies <bimargulies@apache.org>
@@ -9213,284 +8449,1821 @@
 =gGyT
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    6425559C47CC79C4
+uid    java_re <GF_RELEASE_WW@oracle.com>
 
-pub    9C538D5A79281639
-uid    Alec Strong <anstrong22@gmail.com>
-
-sub    81176177BB514041
+sub    D547B4A01F74AC1E
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBF3xPHMBCAC7OXU5uXXKttUU/BwWm6q08NBC3ybk0fNIfoITWiFA1RtxO7S3
-K4ijImBnLLb7ivjpTtIWzUwFAfSZHc3LgS/TBQJQ2PGsO4/AdaMAcs69irgfoPYY
-1sJkR/Iw/C1gi7KV8PR/vwIE5N6wVll42FMGjBvKl7wTmvuHDou12tANXWJp3X3M
-5qj4eMK5fIv11u0vPIsmBHQTPzZN6prxAEp8Dm3XDT7OCZxfCYsy1Rl6zUIY01ai
-/lOk6YAg6IjHqGyChlJnhQbmvu4kNrRiKRSElikiDDra1Ltj66AGD86O2yQ/21ha
-muWwm0GWkl1gd3k3BOy7EhvDTAE3RFi4f6TVABEBAAG0IkFsZWMgU3Ryb25nIDxh
-bnN0cm9uZzIyQGdtYWlsLmNvbT6JAVQEEwEIAD4WIQSbvBw+QIygnPdtGgKcU41a
-eSgWOQUCXfE8cwIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCc
-U41aeSgWOWEcB/9tOXz5kHKjfZOFKjP8v6lmDZfpJmt1oFngOLVm/fjqMrP1M47w
-cTCershV8DW2LWIoAh7p5w4/9c6Uaa48YptT5JqAQ4G21Fy0P2bAZ90uDYRxoY0m
-ybXiH9lwTWgrj7X38HBZfZthRT2THLWXYlYhbsxQ3s5Kfj0gdAN1R3IMm+C5bjxe
-n3X7fCcShwbb+rX0yCH8uUT/kjVJU0KQHXwih6QcknkK5pIpBfLRgukAf/qYY73b
-K+lUBXBxxiYUGc+ydQi0huEpNOTNokOh9PB30wBwccrLPLeWrpakGpUlNv3gZ/sI
-cHXWDtBB2g8KxKESfWzoroMq6y+XXe3ubjE/uQENBF3xPHMBCADGJu/jqEe5/eot
-oS3YqaBATQPZyKgYisyA94Ivo5ZrRGwVACW3aWbzeGdGGr3AazWmvhfMovSp5Iuc
-yFTvjIQwlNetAXHuZUi5sN4I8o0sDPER7Y2RqBfZcvU98CgTziJe85iEy1Vx0NVJ
-OSd55ZeLtEjeQbF0MNljrU4j4jqt/NR20C0DrJ+tgH4tGuo7n3AWmCSwzoXRrzEJ
-dkqf9IWXww21MjmOYGEOSClUA9L6HxeVrZX8IauV1eVeDNyTUbC5eVAhV4/8TiMM
-6KbBRUsPzW6TXbo2HTAtRPsvzM2ssC3QWV4aafLBN7MadK51ZKD1ZeNnbPvxGWrL
-XDVaXDZvABEBAAGJATwEGAEIACYWIQSbvBw+QIygnPdtGgKcU41aeSgWOQUCXfE8
-cwIbDAUJA8JnAAAKCRCcU41aeSgWOZNrB/0UbtDXcjpzehkR73Xc8dj8DLgwMANh
-5Jr/dHf/ZENXOIORuN2uWg0Dai0mZ+gPC0jb2qNK0MdTbHRNHPEcS0UX6wDBX0Bc
-BcbW3nesQXv4LYJY2DN8Q0vtxj2Ra/4FfxT+lZn3A3BmHRu+Aps9nmJoGOh06ThO
-e+6KezHnYmmo8IDzS3JuyGz8ma29Qem71VDAMlLNg0QUN3RJc7nSLdwoLUDJWmpm
-WXmOR1JD0iewyjuSmKHuizRPPNVMbg9R+eMPF9OECheR+Pseu3XTqCyqedEDItwb
-htywBZaReIkxE3VIhM7CEI9gsVAaNgoe6Q7BXIk3WMDpo3t6JWORF/PE
-=EwZF
+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
+WugIjrW6eRqMfhWIeF6otn/vBGbp44U=
+=+bu2
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    689CBE64F4BC997F
+uid    Szczepan Faber <szczepiq@gmail.com>
 
-pub    9DAADC1C9FCC82D0
-uid    Benedikt Ritter (CODE SIGNING KEY) <britter@apache.org>
-
-sub    923C08F9417B222D
+sub    C0058C509A81C102
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-uGWBaZVODvhr9hDoUpp2+qte
-=rXX9
+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
+B1jblPtxo2UqRO/qhPfqSkoVcpWmxgiPUFOr
+=w8k7
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    D4DA5EAB3CD7E958
+uid    Jiaxiang Chen <jiaxiang@google.com>
 
-pub    A1B4460D8BA7B9AF
-uid    Mockito (http://mockito.org) <mockito.pl@gmail.com>
-
-sub    BA6D22590B3F9BEA
+sub    D826E3935EE9DC71
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBE4waOEBCADHDHNTq1NRR5TSooIrKY0BTQnaLfjKZfcJOwp+btBJrOUO7+e/
-V3M4DZQclj/e8SBiVmRPK8Oyrv6i5B5+Ee/qNlLjWiO10AJ/PLRjYdoW1V6PlTm7
-2aUxQ/wNXxDcOoH8M7Y4fEqZJ3rFuta8ogeIYnkUwUk3gc5YKk7KJDbiOXQfRxlY
-9MeVKyoYfj+2Szaaz98W097Pqf9+7i3WjB3TKR1pnWlzF6rLWIGBJqcJuTGLWUAB
-hwOMoNiIBAqyGu8E4rT8pP9OueprOeIjyKgOBWV5yctIxd7uu51sGR47TM2wmMmm
-r/Kz8FkMr1efof7Bx4mJuup6wQXonRMVBqpLABEBAAG0M01vY2tpdG8gKGh0dHA6
-Ly9tb2NraXRvLm9yZykgPG1vY2tpdG8ucGxAZ21haWwuY29tPokBOAQTAQIAIgUC
-TjBo4QIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQobRGDYunua/0Ewf/
-QRv2EXl6rlgV9LgXifdgD4ctYsMvhmJV0uaAaTvTcNpbYL0lG8FpCs0KHvBLWkoq
-esOdJYT4q/9msnBAMXS/9ckteDism8BwZR0qi9qzASzzMJEH7cdpr1te17JR0fl7
-8cgbGyw6UGfRSay9c3HyV0rCuQSFPMwQkG5YVpRiN6NSnYqDczS+aSjd6JCKu/4I
-LVgu4jH8oaUcGJEaWLmExSUzrUv9HFZXQJxLzrFT4k6AVVzBQCuEYW9XtgosKwfo
-0GweBXkC7iuO+bfNi84vyRLTkK50h4+rVNkyvNlgqknbeGrpvOvGErYJy24API/5
-TNP+ZLCTl7Y+qQejTFVJ4bkBDQROMGjhAQgAxDjlr6Oakgs+5d5NcIYpJ/8S5BIU
-aVlmjKoaFJoAy46WzvvpaTC022js1ZSvrM8wlSxSk+kD6/FAJw2pJwRgVrolOYJQ
-mqLqgTA2QSN+leWo0x8gC1+QXzrquCOd7m/+h8FHUDaxc29XQ+7+HtNvsSxY9dtD
-zgQGXjPXSppVCSiDNy1IuIAxmEAFSxok12Glxq/n2DFx6OnVB+5vvt0C8nQ6w0hQ
-AQKPUmO7fNav5lZMfKgR95NrvF1Hu5V6DZvpbXg6+NWfA8LsCampARrou5qzy67h
-b/+KKGHTDMOvZZlGw6oSnPngqmh06QqY7P4PKVkOo3Vb6+02ltyZ95RgmQARAQAB
-iQEfBBgBAgAJBQJOMGjhAhsMAAoJEKG0Rg2Lp7mv2b0IAI5pDzLtBGxYhmO1rSDg
-Y+JY7ZAr4srW/7K6Zc0RmWv48JsZOf7T78kIrif6jrF+ZwBLrdP93umMr9aJ/mJg
-lr+0oag0ZVhEW6Jb7dgiRn8F9+qcCs6lyozAG805oW2lULkwqSJ1xNs79v9RtOWl
-I5ruLVbS7XhGv0qH+ly1xpIuYOzNvpOgj1pC3Pv+NuL2hrLUZVg1vM9eCM3TDVbD
-yJZrxKdMemMSGHHsXWHtn8t4BT88kice4weDq8GBl1Dx+ApO1+iHj779nMX1Drfa
-xtJLTRqH9fhHesISmte8fPiydGT/HCA9quKUuxyN4W6Uwu+Uov12cGV2sAI+H5qP
-hF4=
-=FXjQ
+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
+=E4ez
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    88BB19A33A18445F
+sub    FF59C22B07640A16
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBE//SjoBCADao3lh/I96fWIY2ZU49ljtHR4Vnzmifm3URFNuv/c8McWGxxCy
+Y1+oolgVuJcy4hCqcgbkwTiAfBhjZSmsC1QK/2Vs1awFzGccPcgTBakFw/TUav12
+6Zb8y72dH0VxxcN/HUGBUOSgZg9IMe7AmmVnxbJ2ED1I3/opkC6ElPXFOl8EJdgE
+Wvinp4ok3mwBGMIexQDyEN4DviuqvmB4K+gYCjS33HtHh4OrkXkCO5pDNUDgkAZK
+1uG3GfmxGBjdG6nPWgIuDMEL3j1cW9r5D6I5obXsFlg6bX8mBs91jAtmfTNv+IAB
+bwUOAJC+9C3ZEIsZOcBSSdUIXmuRPa51oP9nABEBAAG5AQ0ET/9KOgEIAOokxMbt
+TY2zLvdAWD9xPHj1kZPThN7o52A9Atw0zKjiNFl9jy+IFarPNdbMzwooQWgx5Y3S
+bKdSCSDlP74psEMOttEdw/23wt3oG70I84RveLuTs+dTDRAd5w8jxLXhjm+QxhiE
++z+peVhfe//u1+kn2vzesXMIRBdQTikjIZ3W5TMgu+RV7Fgf5zUWTEUTns1kmM99
+XPhOVh5BIr1kkty/Fyg/1Wg87leM3WZUoe/7bnWju+YSgjWvxwv8HEBYPKciNG5n
+0oOPoU3jkyEugJafmlhAt3CAgmFbfrJgkncXPvow2xK312iy0xIslAqm0dy2+E9j
+hYLlS3p3J8TLPGkAEQEAAYkBHwQYAQIACQUCT/9KOgIbDAAKCRCIuxmjOhhEX5s3
+B/sFcywEwoA4ylzSSsVctp7pjDczczlD1MnvCNP9ldzzU2oOGAduvF+zzJNL162J
+qMd1TMYnYROoZhIS78He+LriBSjCsweKDqEix12mtuWrAICpF3UcY8WLMB6SXgXP
+qnZS1cw+Prr+NVnuR+0G/cUJieVdKO5rcYuwrs4OGh2rEMRCksAY5FAMe1lSB4mj
+9jIGKW0B31D3/AxNlQuN1aRzGLj72k6d7Q91OrbQ1+yG12CLwSd6mS4kVBFjppUD
+JCKN+HD8NGQ9EtyiVpx2/gmqshFVdwUgAqQ4tKtFI713bi8xz/oNiHkOfclHdgMM
+E1GU2n+gEnCLRpmC3Qqmeb0n
+=2JQQ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    94B291AEF984A085
+uid    ReactiveX Admin <reactivex-admin@googlegroup.com>
+
+sub    9D149DAC4AC24632
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFPzzfABCADK/wEIRhUCUTj00TcBOxGTPs5ad8jn5D01P7P5ILpLOgmnUp1I
+E3EYy54PQYjDIeOFvEmEywvwMRV8yCVhhYGpOPqbegKwcebXoiMGhJjuRf2nPbdZ
+PSB+S3/WAsdydiPiz/2Xl6hhlaKIQSnSOgYPOQjbDjgfU7B0vYGPohYR50fbOd9D
+QLvwsYxQv7CCdMM1M+tx4HevvYOKrceAwTe6yRx9PEhmuXYRCes/AKOs7yODvNm5
+SFFlZzBrYMxh6LSmCAGfYrSGWJliJUuFMQ9U0R304nmVUo3rrCj3tD25Kdr7wj+z
+WjtJVBdWVFTq2/Zh0QnF7mbIOs4bYxLlKe+HABEBAAG0MVJlYWN0aXZlWCBBZG1p
+biA8cmVhY3RpdmV4LWFkbWluQGdvb2dsZWdyb3VwLmNvbT6JAT0EEwEKACcFAlPz
+zfACGwMFCQeGH4AFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQlLKRrvmEoIWN
+gQf9ElK2o7JBUbQ/QgpPbaKlP7+Lgc78g2I20Insd51G7C6SFmnMj+Ae/EariCV5
+R8JObne8kfY2EpmME8ISUqPrFSw0hhR0q7E7jhZgHrY4s0w7R1mujjWYJQ5cSi0q
+2sQP1GDMIk6paJBFORedqQ25B0paWGGATyMLRu2ljz5tog3DVaE/yvaQWAgiH77i
+It24fY9waInC7F+ruYSiL9YwGaDi5VwV8mlVeNZ+yobjXllzsh29UW24UXjWJoEz
+1MH2IXC+v247wnr5s0x4GiBaYFIS7sg2WdPMImAY9tGwfKQRNs2kBAT4G2Y9cDx7
+Oe6eZTFP+VYBhioN+5GzDPMwwbkBDQRT883wAQgAqj9m/clM4PMTIRwRkDbrfFSA
+TZznMxgUe+jOGRbZgemEd0Lpa2Dgrhq1hd8jOQgm+suCKjhJi15oKHMYHRx435cE
+8gvdW/C8R+T8Iwd+Ce5IuaRKBisgcIpCcSBbaDgYqGsjhOT8W5N/Tgqobera2Wvm
+wDGnadIN82RQkvH9Sypj2eFyLuFUk1xIKCS25a62EYr1Pb2/mNwHvgEjkswWeoWR
+a8A6xQevvrcercj/a4dYB8m/RQQhdapo4J3gh/BQxJIHAvjVxxWyLfyOIdnV2tkG
+Cysl154R0ymVHIT/fXILnkUPJNeAQzITMIjbV6GAUklVr1sjtcDqXPHAl49DBQAR
+AQABiQElBBgBCgAPBQJT883wAhsMBQkHhh+AAAoJEJSyka75hKCFz30H/A4I9FC5
+kU5ipCv4iqc77egCekoG8hhm0DtVdWrKOgJwbayIRsyCB+hISnZpt69QyZi5iA2k
+rIPZx0Sq1Nrlw2lPlv87CbreDy57vdtMdFEFQHW0zRbFN+XKZ0noFQGYxG/1LyPR
+4AOg+ykBEX09gnWYHwUO6x7Q73OQs88y5JOurF6A4iQmH7na9Qz2A0YPWNKQ+tmF
+MEciypk7/YABFZrg+9Edz/TWyN81EERhJPDkxzHkYLm8fLpOhnQPOyDxuzt7fh7y
+hy/+b3B9QT4Cv1yH73DYIfJW3jtuQDdmvtTk6G7BdEzAWufGVt6EiY10pr4zyfpd
+eaSSyYoO8iMWJxQ=
+=e7Sd
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    5A68A2249128E2C6
+uid    Tink Developers (Signing key for Maven artifacts) <tink-dev@google.com>
+
+sub    4E5C59DBFF7DACF9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=TnZo
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    8671A8DF71296252
+uid    Jesse Wilson <jesse@swank.ca>
+
+sub    51F5B36C761AA122
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=nFNX
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    840B2BF6DA8ED8C8
+uid    Phil Weaver (Software Engineer, Accessibility) <pweaver@google.com>
+
+sub    43115D7B115DB0C0
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFSR0DQBCADw8XL+xgFg9WVPknAIqqb0sUIZ3yNNr8LkuNtwQXnwAcSJkHSt
+C1k2CIKwRPPfcLsb51l3SpxFTs/s5yhyiknDfjqP8IFtLocBSsn3kD4VRjcxFQhc
+0jjgsTr9ZP/ZAWMBRIuxaZtpe7bpqbLbV9lvqjbOnJzASLKJoUngZAXvljGrWGfM
+3+A9z7SdrilRlA4DOZNqPoxN2RNY0QOwHh8Wv7+R97K/VQoAbvN3tQxlfn5B2scf
+WL2nWoGRS6OuO9Zp5/W1twoVdf4d85FlpNFFM1xzT8f5FpjF5QRgQD/Az2XHnObn
+ukG3ZPEhgwBIwx1Uw/Y9aOceXke9vaGEsDT1ABEBAAG0Q1BoaWwgV2VhdmVyIChT
+b2Z0d2FyZSBFbmdpbmVlciwgQWNjZXNzaWJpbGl0eSkgPHB3ZWF2ZXJAZ29vZ2xl
+LmNvbT6JATgEEwECACIFAlSR0DQCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA
+AAoJEIQLK/bajtjI12QIANhe1ZrLQQvYFyDXGHS99LrT7WUzvxQdJ4xYYBRhmfqE
+6povjXvBAvYQabMQD3iBHie8xZ4PDngc/osp6SJF2wCT7LCFLr1ebCbulnL+rPDc
+y9Y6vQ1zD0NrBxsRYjTGq/1JqBd+Q7L0xMk8BK1xuZOCAUyq4CVRzSSxgTxJSQ+n
+Y4ZOL7PzBTYbdacMnqJc+2TwZKgi+CKIpOJusHa98mZSafzotNbmasKGRLPeJ+66
+Y/+Wfh6P/N2VL4nrnOrERW/XV9QNcI5VYlBUW6eYOhvpaiMeTMHNiN1VfDs1nnfH
+ICTdeZNhw0J7S544RXII59MBjOO3UklyZ6A20fiuvwG5AQ0EVJHQNAEIALIuFrzu
+8kQ/fFJ2FA51e+ULp+dy1ZYrZqJdTF5pMdZId711/zN9NExsTIxck6Vx9PYYaTre
+aquTkRIKnFD4XH/Q5MItEiiKHRtwdyhdFqCKSHaaNSGqldFwWZK2zh/x7OPk0ybn
+9L46E4+Eg9Ie+4WdyTxDKoeYQYl9asjtZPtfbNLad3UBvGAeyqc2hbePSxiNifNe
+cTJqzBpW0voJ85vTkuRa/Y3wBdkfyxRPRofAIjzwjyIXCLQQFSel0ok6aV8nToOp
+/j+HST4L+TVnY2vYDW1UWQP3y/suCp0jtz7/ygEyTie+6P/LEgLfp8LKri0jJqxi
+RUXA86tgDiy8x88AEQEAAYkBHwQYAQIACQUCVJHQNAIbDAAKCRCECyv22o7YyDOi
+B/9mnGjQdqXQ3NWMiqAliYnPEHYuNaP1UnRWrXpAHpRnQ2L0mWTHrAW/f7P6W4is
+l+oUKbURBEItgYY5f4/nIfp6TMrpD2ej91Q63gQw8KLL1x5CpKKLrv27w2SzE3ZG
+c9PYRuvW5rPqIXAdBYpznGKoowszWlRsgpw2XShuTEeiM2xLghmb2gSnU9l5wXFz
+VSa0PHvXoUIV6YeO1wym9bvRdvmAhf1AimvyOlpyk826vmI65l0OSbx30N67RaTi
+k2eHYk1uQ1WlnmgeRB1NfTANUMvaDbrFsbOliPJm3ncc9eGhJ74hzl8WGUy3SseS
+YYRhm4MK4YpKCJtCTWxKdYj9
+=zW35
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    429C8816DEA04CDB
+uid    Taro L. Saito <leo@xerial.org>
+
+sub    8A57131A07E0911E
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=ihmL
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    D364ABAA39A47320
+sub    3F606403DCA455C8
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=5tlI
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    685C46769DBB5E5D
+uid    Egor Andreevici <egor@squareup.com>
+
+sub    CA7AE93399B1ED99
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFqHCi8BCACgRpCaVCiJ2MccCN01SbHYowmM255nSYKOnfItBmXYAMtc4rL9
+n1y1qFtc4LBbkIrPH8CO2zpEImUTZel4W93BQkluPOO3EX/hLCTCFfXrO89L1u4V
+XL4siS8vZl3DVDdY7m9G4vcpiIsggGF683KNctN2KXZ0D3tu9C1X7eJk3GyDo6W7
+MJwiiCm10968VqFqIFn1rTkvtGtXGP61Vqy7kLTdiBrKbo1HkZDbryl6nvCmT++E
+auJXEDYH9R+vsODy10a5in0n0EzQD4DYadL6cQTbwP2SvMbRRRQ7AnNtys6cNCCb
+CIJ8iySLaHYi65w6FEbiBM2XQ2hzf8Dek9yDABEBAAG0I0Vnb3IgQW5kcmVldmlj
+aSA8ZWdvckBzcXVhcmV1cC5jb20+iQFUBBMBCAA+FiEEaC92XupxjSULvbLxaFxG
+dp27Xl0FAlqHCi8CGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ
+aFxGdp27Xl03AAgAgtnhNsz++UIqtiETzp0Y5v40STwdI+8KYhvbhzL2MARmnYr8
+US+NqeALovuWPNoP8CuzGN6dQP4tFMVr/4GtDJRqzi9EGUHIk6KzliK69Eir04TP
+3CgJb4OqrfgqU/tbXTPFVVKbpyWnrrzg50THhIigMxkezvTWa8iLWswBHb/E/NRn
+1NOfVkPqHY0D0Z+KeAR1/20n+aEh5JrLsxzIp3vNF+qXSN4gKtmdj2fYH9eovM85
+0NzlZnaqwetTtBxeu9mYvCHLCbTLrQTY2MvqBpZbUdVJytJrvOTAddmRrNiBz1w9
+yxzGOKXDSB0t6LVWldwAuTM0eGXqaDgInbe7r7kBDQRahwovAQgAzYHtmnHEZVad
+1Th2c8oFr3/QaH7UP7Xz+lhKyYgq/FsKmkQy88qxcxTX4kMfSB8ssKFdaCtBQI6y
+pFVvaUm8jn1LC0dVPZJHKHOdDEiLdg7B20bPzdY0x5+Yav7SJjYIq53V3pkJGZyH
+P9CvZ/L5uJ5+2sFx1nj1qyK1FWVx2VZk2TsFmL4fpiAi6SOXRoGVLlO0sCqUvlH2
+eR873/1u5Ya387En4krWnu0T+dHyg5/xu9S2Q7XKmO7GyEUXRnXsJPur6CwXpUao
+eoXIcydpdjl+TR70OgxyAGsrfQYVNjPvRVK4yUv839Xz8mCIp21CRscsx1IIeshM
+BqRGXIo8BQARAQABiQE8BBgBCAAmFiEEaC92XupxjSULvbLxaFxGdp27Xl0FAlqH
+Ci8CGwwFCQPCZwAACgkQaFxGdp27Xl2rCAf9EwynJ3Pb70PcSVboGozFCnSayE+c
+/SboSK2Cujfw1Fy2Qr0YizXL4RAE4jXzI+Y3EYZpcJ7XMxUheBTZrxO8ACvMrAwm
+MC2vf1EoM3DQVpyoVCv5d1OIY6rYCjyHeBT4rwsl8GLZZ9vsjGWpI9m8Jcpi3jhM
+ih+zfrdaYJpFzu5MA2y/dV3aYn0kpODuN+WVWRyF/3jhLCZtrNFnZb3pfrS/jcDM
++kdiyqH9wE6iyvIxX8Rk7a+1H0zFmKQNetxdMQPYODUSXQEuygXaZFzm+bfWU+E9
+x+HCpeZqmOpBQgdhFZFEX+ru97s07kBMVUlWM4s4uETNKLIwzkAk2FlbGw==
+=S5Ep
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3C0A8F4744F37328
+sub    D17266C6E05F9993
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFSQ6LEBCADnoAfQsg2uDYMnEPqt7tlnZxzyLVKiHXdJzT6OHA0FUdsB9H/9
+vWI863v20dsk4+tf1pXLa1AWBusInf7FM1JBCQBc/By3fR3JRhJU0QSoEcwtOQSa
+MmktLQx6s5V3hee6pJDJicY3fESWqrVygiUeyuRJupbBOOh3V4GkKnk1s48ZBesl
+viHzOjz8ysZKbn3h7mDuR4NaMx54U9x008NKs4Ry4ztAXbf2FqkmhkU1aE+1v1vz
+/mShXXuwGjYuv4OnQyP6ONHJPOclc4mDFU3yuUg328AUCbWHPg1kAMbpZLiEnBgN
+anC0K9BxYfVdQV55XSMMrdPfC4dNAwMEuzkRABEBAAG5AQ0EVJDosQEIAN9tyXFa
+CMYODFVn/vTf/9+Am9AoNvTtvoulLoC3VsamyIel3QI7ek9rppLi6G/lww9q1EYy
+3F0dR4ciqN8meMnGCbl0KhXCn2IJLp3MabaG4BmMbdskAGoqd2P3lynhbOnjQMBV
+RMcXFWqHPMfpAB4/5RM3wsgOn3vn/eDNBWPbGiHk297EUxGhooVmyb+1mbVXuNDE
+8S9KsiLus3Yq0vytlUI6DoPZoTMaO4GGJG4aOUw0abK6zPfPylzDaFXoryTaRhhJ
+lb4HONVT3GNFOT2Ob+ntgFx0I0cPfKKHDqJhcZl/CAWUMNyQb5/+u7uybyBGHzJw
+fydRH28FC9+m/xEAEQEAAYkBHwQYAQIACQUCVJDosQIbDAAKCRA8Co9HRPNzKJQj
+CACofWbBHPEPNj5mqVtJf/HuViQYib4PlIZKvcKsl2TVXkDdARzW38MV18ZDKUm7
+XECp1BPST0pwKvf1auq1/25X1BOtNC9FIFs8649K4U6RouDbXPo4hyzB0Og+608b
+KC8MN311Cqth+MuWy7rHjBZytNR8CW6e1XQBxJjW/G+1SYRM57g56S9IoPiTMDsW
+8jMQaYyNY7/Getddzfl4EZmjiiOysN3FQrrwF1tUGczLaDiaTO+db/FEGJpzBVmW
+WkxFGLuAjlkSPvBW+ijlTMnWwTnd3Ps/iBHWXLb2StrDV2vmhVln2gw3uR1qML90
+iwdK19eTAhhc+QJ28/SKBcyA
+=F4/Q
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    C51E6CBC7FF46F0B
+sub    4006CBA6D352F1FC
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFbgSbABCADGGENSy3oWLjW7zfYMSsR0pm3l3eMA7ptyU5C0U/MoIYjbXwyX
+XtlGwKnNgngATh1SMpX4WDbD8tn6vdeP4uHQsDb40t0XN7/HISFcLhV5pCgz2wNR
+t1dZbreV/EaZn3f84Vnm9s6TU7RHuPP9qBne1YLbB+LKKZUfQGavqGR+n322DhrR
+NqLdC3zFNtSmCVXS6GZ17IV/B+6CiNdbmPVk0o7zZexqZCNMXxv1IFzHV1/Y8Htu
+WQBfZ0zWwrX85ZKysU7UDdoyUw2aa8/+YpZmKwo32N8GpqA6azBeUjjVXGuqktMy
+l6IcHbLlgymkkjK7TyAKltuhvp6AlBTzp9i/ABEBAAG5AQ0EVuBJsAEIALE90/PK
+unEOu2B+QGGV9e0jJMlW+rs3BV6NI9ZaRw0Uvy0xN+jqhMsyCzB8P1joTZKUsmK9
+ptaPlMuKrTaQ/0GYPi6cP5EamphyvjK8ljLhhQuiAxt7zwv78vX7CGqRUEcAszsK
+8FPBAXERsSit661rjp4Ai71cyQg8YOXDjhissHWmneF8TJ3yItocj4KxDKLxoY+h
+F64epbkjIkpfrZ34iX8zdZMRCNJlh+oTHe/xulYLQDbgkgQa+Y6gnKmUZi0QGU01
+k6eWw/U3yOC69++ehiYcZYS0dWpPE/H51Rizn7QipFeFfTsia9jkGjzMyKHGju66
+URQ8okd4E6ev3N8AEQEAAYkBHwQYAQIACQUCVuBJsAIbDAAKCRDFHmy8f/RvC1c0
+CACy49b4H6ZzY71Ao9JHRRpQZ2VSVk+6xPblr1DOoytDC/zhVKekerE7OBEul0UO
+qzUyLNwkDiHy+5PRi6ZquZr85PlaVV5j6DkuZ/0lcL3ofsvtQi1Dwd1q/9RzedSU
+jjY3OimPWDkDBIGyBXohxx1BxRIAvlRnk9agapfbAdwtv6cjYxW0TDcPx4XW839n
+MN3CMEWtlI1GhKGYi5nsUw73ctpSq9dm3ov85ykFOqB/juvTcPoiOwPE+6o0OCTZ
+o60VwPUfv7uoXtkrLVJ0B06mfKiUgZvaqppYDi9IrhcHarOz8MD2OrUS3z4riTsL
+VEPwY+Xd06QyemMynHqpcDpm
+=1WLL
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    56028DF552BA32E2
+sub    7EC19439E4D4C2A0
+sub    D89D05374952262B
+sub    B5681E477AD61C38
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+5KzrCgVUcXxeOohqkl0SRuYxdQ==
+=UvWw
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    7A01B0F236E5430F
+uid    Inderjeet Singh <inder@alumni.stanford.edu>
+
+sub    C3E640F38D845FA2
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFZUsiQBCADGmoidvh3VvXWGdwbAtHPtDPKEebE/MfFVO+QTRbjJxphzKwAt
+mxHruikafaSTnC9FWizj99e/Yc45YZHcnt5Htmy0a7DSOQXL37rrnieZxg86tYmC
+4PxvvzC/s7xF8wmxDo4A+mRyoSF0NF/fQTZAr3ri5l0G/vntH7w8AbiiyerpLobW
+/TqQn1tpMh7XfZZ+XqQKANVRECUiCYT4iJKWMqcBpLZW8aa+iYW8yCQ1xfmNXjrx
+jpTqFCiQjvwCw4dDffNe/A1Dbq0wE6mw3YHW3OC1fnLiP+TEM9P9v02bZyem6uW2
++krrToLTTHSqIGF9wUUF6S3Ikrw2EtJiRQtnABEBAAG0K0luZGVyamVldCBTaW5n
+aCA8aW5kZXJAYWx1bW5pLnN0YW5mb3JkLmVkdT6JATgEEwECACIFAlZUsiQCGwMG
+CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHoBsPI25UMP6r8H/Rq70+JN+EyS
+6iK6ilytB1vY5GdwBzAxpsRUhTL1lXSqgjCXy/6sgrTQv/9/EgQznm7hEFVkwr5Z
+CacXeajvFJ3FVtjgn0aLRADp88Ry75DsttjwV5nIBNvFBJbydvJhfruHY8gzdUv9
+yOHAX4qtoNDFRn1HDbNsYMlRSXgjHX0JvBexdtZArtsd3aLOM4m8r+t1GFM6ePgj
+CD1q8yBH2RAIETAId/jiu07AqsJXp+UPBgJQi8o7cEtEE1HgkI+IoEsZXFJldRqF
+GJS6eKS8bpjX16nHI0SnR/gtsWpblAdZsY0YieK7o2pU8lvlCFffaUxXDOP7+BCq
+8W29nfaD6YS5AQ0EVlSyJAEIAL0+8UoJuUsC3jDE60tmrApu/hK+dCbe5UJnR8z9
+3aQ/1AfEX6So6JZzBlxID/HCOvRjJbauL6Lrvw2xgSnrnOzRLf1StvBPASfJk1Zd
+o9LZon6Xofzg34qCLUQLkDyntgXQaYF3Yw/xfiqqTC/yav29VTzKnf0Nri8aXGsH
+OycJ8nTO7I0p4xuRirFu7Bkvd7bK99/tDxttYkvUnG3BUGlr85UX4uODh3EcVcgV
+QteawYbmsf4F00IBoTAycutCOdbP2RAgP6kgFxLcGz4zVqu93QjSjEdTegF1SUXc
+GpzvDR8T8zRsQbBCZ32A/UJqmx+EIPPFHNkLijDp+f5mkJcAEQEAAYkBHwQYAQIA
+CQUCVlSyJAIbDAAKCRB6AbDyNuVDD2xjCACqL670xI/26dWsz66ZyHQ2yJI7DNQx
+oiU3OZs2bfrRZxLpGP9Q6YWCehb+iucvmFFvLZBoGGWzffmVBisD2Yz3mHtF3wLx
++2zJXHt1Xz7H6W89M54T3qUhQTTV6pl5f5/JCXK1DP9iC0y453ORY5B60byrGIUv
+BAv+qWXBPn3ECZ/3oEkErb5ZGof+gJjffqvWRAN3Li0WBRj0ldXpJoP/YE8naDJ7
+UdPfzcnh3tnOTfUDvFer1Nh00ilMmf6EYznRwaN9whc9W/1HwvDeXrijrc6/1U7H
+p1r5b1DddTtx6aHxpWrcwYw1yXGcm82fjXnRdomz6nBt2DF400YubAZR
+=2qwf
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    6B1B008864323B92
+uid    Terence Parr (ANTLR Project Lead) <parrt@antlr.org>
+
+sub    FA6831EE37606774
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFTDM4oBCAC9cUMAjkP1dD7tt0JUI5kVORKagn4/zG6+Y2MUwGgJs481xsFC
+jXPuNZMucAVtXmw5Sl7FbsfSxR/9jJ2pnbXL918eRFbUqY4LnuOTZjcgNWo8PWPc
+0NLmqoLj3HXaLrpB5cRIXaQvzmfoWxt8o/ZWq1zSfDJDePuQb6qlWmnoDz/S2YJb
+f2AILPsljTE8kYIBHORGilKtUXtQRjs0SCqnbx+DSDAVKSnqYHWDMmxgBMMQsSE/
+RQ/EZ7I4eGRLLfONCxox0fuIt4kOLuMNqGWQlqiG2Kp6Uulx5SepToSrPZLyDGVA
+MgefKrKe/lzKiLeppmx7ELXOKBXlIvTFZBuzABEBAAG0M1RlcmVuY2UgUGFyciAo
+QU5UTFIgUHJvamVjdCBMZWFkKSA8cGFycnRAYW50bHIub3JnPokBOAQTAQIAIgUC
+VMMzigIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQaxsAiGQyO5IHQwf/
+VuVSUFdUJToUScygLSxS1zp6dTEUXc/BfNXD0+7TVRXtzNKNUUwLYRlPRX5aHkUV
+d3+g3QiD6DQIVlSH0INCOto7/EP0ENLbC0Tm6QGhhDg2zO+A1OLRLwXFAVun/4Wm
+1eV3lakXRBCE/Fji0QxDWTYXakShmzIyTZCfJB8jtxG6EYyKNSrOMM2HBjJY63y+
+sQWOYJRz7Y2pv3kpwzPPQ8yxRSsDkJSKU9FyzBZfl1F1UnNkzK3BwL+CyKOAh0Zu
+2u11SJ3gUF0O65Y6FeBW7FVyPYr2IlMsYokr6Ry1pmndehQzQB3paEGUiMO4KWN9
+1OZUfcG0LBZB/FFBmVTVYLkBDQRUwzOKAQgAy86UOqIrhAeN34v5QKv2ZGWWNc6r
+Wi7ieC+dnx2D4kmvn+BLaCX7hJCyNL1ex2TvZlhXt8cgA8jAVgN5+aHTaJwpcTHU
+pzx2p5UIe9oBAEq20NyjF3P9o7lt1C5V1b71EKMTwTOSfWUcK0Skz4G/+gkhNjSV
+fxYwZO1v+Ce4mRCCRi6x8pFGHdyukVR0wJ/o8yKvQijUciGMEbnpDC76N1eAQgd0
+wo79WWGZty+w/qQSknXwTTJ028LlumuVV8UlYxZ/eYYSrtK2t2w+6UG16TqHATDF
+lEyShzYJCer2H1fmSGWncZZ4ODQCkNzNWirPn+q/Rr8CBo7PlMUV06OKZQARAQAB
+iQEfBBgBAgAJBQJUwzOKAhsMAAoJEGsbAIhkMjuSZOMH/2V3TM9qXvwiGsmO2msb
+Ita9b2MbvdlIj7EfI9rt2azPjYTLiQcYWWntKN6tYmB61kK3qzARwcW8pJQ0FiOo
+XEG8jqwHUz3bIxF8ftbq3peLUJi03PDQoNlTpKRuj5EvV7M1f1uZGaKU5W8+BVVx
+Oq8exMeyDU+8PifHmW9S1iFPqq0gPqjljlzzcIZH/JM7pq59uoj3YuNz2X3PreQP
+XVaz607JXUhxJ4MIEqEy/qjD5OGZRKQr44eSxk7938j80OcBa/1IbbjvGs5oi2IY
+gEzpV3KGDU+kSDHVuKcwloU5qMC1Vvhrkildb23wtFBRYIpgke6HBcaQOIivCatS
+bBI=
+=yW86
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3FAAD2CD5ECBB314
+sub    3260CB2DEF74135B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+xZG1NzW9unRL1j8/o6QtwZ1S
+=cP6l
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    5F7786DF73E61F56
+uid    Ting-Yuan Huang <laszio@google.com>
+
+sub    73F7734B17EC71F4
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=v4+t
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    476634A4694E716A
+uid    Simon Mittermueller (none) <simon.mittermueller@gmail.com>
+
+sub    4CE6E05D128BCFAD
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFE0soEBCADAy/iIRT/lpb+vfDjWs/k1XQNU3mzXoMm1mmS/Z8VOc0jF7sVB
+A5z2pC6u2OmEr1oJkhWefX+mU//7kXs6VvUCReE4uheGBlisg/ELEXkTm342TcwS
+K+tR/NMk5h1DwxeGR2qc0+zhFcrITiYqCpdaggRVx92syhuYWrG2DtRI3eEz+fys
+2WLhAd/AqBTR0ENDZssp5S6tEBcLvU/jAvKv33/+ydg+1Bsw37CqCOO0bR388+ow
+uSXSARDJaesnBpUcXT9pbog3Wm9pSzJ2fX1FyFaf3rqIIYEqGk1rEND+AkT2CB08
+BykABpDx0mgR6/pAgQVywCatPuc7wneiZY+LABEBAAG0OlNpbW9uIE1pdHRlcm11
+ZWxsZXIgKG5vbmUpIDxzaW1vbi5taXR0ZXJtdWVsbGVyQGdtYWlsLmNvbT6JATgE
+EwECACIFAlE0soECGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEEdmNKRp
+TnFqfr8H/1DXbZ4VzAqqIBhMUWOIvF220gZ6NAxgIP4IAzfuLYKso1pfogbuPzS4
+IzbTZIZv0TXsK7zEzxZY4Oxx5cQaOfRiPOBvkeEC1T8Pf8l9GDQ8ppy0aHPNLgV+
+nloylBUHWuKpTMUHKu3MpwHfwMFZ9ZFsUmgcQ9oYkWcvprH2uOachsuA4BSxXJNe
+OGU3aBIG1CR7lGENmkjwZowXhxM7QuYZ7qIR6oFxQCOj9jcV61AQhj5LuKNOJLfx
+fAICIeUD8mJP3NcblVNp/Nj656naiLWBsK1sfjGzvLkeTKnFYFMpJqEuLTv7VTx1
+fGJnaq2+2UznsLGgWcMVPg68ZOW5V6i5AQ0EUTSygQEIANTGYOD4HupAmugS69tx
+MTAW4GvRQ0s8Li/r/QQQUWPpjo3IkJDA0+kPCe2JRamNJJ2plzndeGUpQIZn+HJS
+N8fGRjZG56HG6l0BJmQRFHD/6CzNOOKK6z+8e306DAwQPqDdDpUgpBmbPHZDhCs7
+tvrOhrUesfLQla15MM7n1DEtII9y+AsMGfwrZCd2PeigiRC+/NH/lYObLUPc+NL6
+GrC1ZHrpGoOR+9GQ6voVNY5EIxVlNgoVBxn3ufcFvvghmZe0WyudBHK9ByWeioBI
+tHQW5n7eGpljcCUbTpsJmErhjH6KBKSuxPQsyV4TkQMqcsymGW0jhdHXc1/tStF3
+L0kAEQEAAYkBHwQYAQIACQUCUTSygQIbDAAKCRBHZjSkaU5xamOiB/9r943gZZy9
+FJv/NGPnNxCvI3ZusQfntgRfVyIFZLIUeaYDab6RqKTD8ZRgyfO2rmO73DiQ2bnt
+zmSPHeAlpKAIhTXfty0g5UICLjr27KocLNt234BKii6go+CDo2+lLUPUAe3cJPFq
+ZrtJ3pYLFwS7O43wwhRaO9A7L1uyruoCqql65B6CJcymMEsDnCizRVEAsE2lxenu
+fxcM8JIaQlczXTsHYf23vnmLjlXm5HvEAfXE0s7iHo9BMlSLxHWWEqeyrbwMdnn/
+gT8lHGw+SHO173THvhtGuKGkrglD2CA9G5d1ZWgAz3il0fLdBenLH6t1m0x3+P6h
+4sUJ04LlldPb
+=GdCO
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    DDDAFA7674E54418
+uid    Cedric Beust <cedric@beust.com>
+
+sub    50C6CC55C6F24FB1
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBF8tnmMBCADROe7j1ZvgiMgfsQKqCSuSqgMkfMT2DEXwZKdHqkj0gfx8MPQg
+OP1pmMgpIwIXKr5kZ9KMGiGULNnS+WU2SNqjyKeq3MlnSYW5Di52MoAD7W4cHmry
+8ekaasF/x0AS5Q3M/6X/EBOD8YLWaFkk+h5x8D4IOSqiOiWH8olGjY4ZmGblaldX
+PLr7BWSrPKQ1QDsoICn583Mnjz3YLlc4p5IKnY2wss1zm7/gQk6KkdL5bRuASxLh
+to2adZ1LEE8MQfHweauHCK915RmMg7W3KW66/EsuCyEwZKBwq6rIpAciym2FngJt
+CPnY0o4IMFSasV7d1xSH5N4jeHL3Hh2Yd9tHABEBAAG0H0NlZHJpYyBCZXVzdCA8
+Y2VkcmljQGJldXN0LmNvbT6JAU4EEwEIADgWIQR81StagpUTfIj7V0jd2vp2dOVE
+GAUCXy2eYwIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDd2vp2dOVEGLQr
+CACZTTneMoaUR4pQHa/rQfGnYcYznSL32JUP98bgstwN+g5BoivHkrN/5IinELly
+n2nxrjrPucN2arjOvObiGk7UhvUY8h1kqWKWqc5Gsc/iXwnrIx9bwzwdbYaiKqMT
+E6RJ+naIN80rNRQnOMtBRTNmRWYZ9UMk2W1DEKZeCaKUJpO2lLpMW6R+Sta/pkq9
+L36F5G9qWBrVhUS4U/rEE27G7xiDZ7fCnjYt6lfvc6mKQ72BIUGtjVDRwBAiG98X
+Zn5+TqLaMkC8NotYInuV1/CwvfE9SuYH8dn3YJqAkkn57L74y8I0V54AyMXaLNp5
+G62uRD43Xw6rLakCxGNUafcouQENBF8tnmMBCADWQEHet457l0v27b6EVxjNZMGl
+NI939o3k4NdrCBglIojODXA9jp8VkisL7+klrpOP1vmoVd80Lk0fGSOdZDcIMbzW
+WChRMVMkY0vgeDqOgKw0j6e+isqN/vNipj2nh8cYm4q+LB6GVE0pfFCsrM8RFFew
+RO+esEuw0R1qXhNYLIwpRV3Ov4ZxDp1yM7KAHSBc86HJHy1t4LqLofjA+RBP8f/6
+2MmSRKLbDwruLz/02p0fR+lp2DiJ/IN40lGq1fSxRjXMTQnI+bIdsd7TlY0AbT6R
+NklBL3i492hxU188dva1PZM0sxAMZRXSt6cFCvz/jDvlf6jB6DmN18E2ad55ABEB
+AAGJATYEGAEIACAWIQR81StagpUTfIj7V0jd2vp2dOVEGAUCXy2eYwIbDAAKCRDd
+2vp2dOVEGAwbB/sFvYn1o5Q0r+ngdMJLCjQYT8a6uy8SH8N3k8RsTJ+ad0TdfOoG
+wvxl/SFB1MEjEVpXgbojjv01gVDola2ObIYSX+GWcvlJdfXKz8oZ5f8/KdRrAc3h
+z7gf8huUVeriwHoEEA7xi14kJZpwCPh8PiMMl5KQFWuG4D1eQnwOm54cIw/9hYB3
+R7oVI+2THlm3CAlFalsXzZ1N/l/JQG6LfPkKmrubr++FveXx6izjZssdFiaLg4dk
+AQdAwgpmFmCQHb63BCKzqPwDxpazpk1wP6Y5ornLu/ISaOo9VC9ylX+vUK93eq4K
+AFuUjn/Jk55tpdUEH8mW12W6Ukjt9FxVb8ZX
+=Vb7/
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    64A16FAAEC16A4BE
+uid    Evan Ward <evanward@apache.org>
+
+sub    1E8F1D57A4450BCB
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFbqsT0BCADwERe1Rc9qNWwXOvwZHsjauVDy0TpqNVY8I3S+OYm4rX1dkjyh
++6bTEH1ys6bKevvR+PLhYzTGKboHnMT0RIINY/DQQSzHr/GRyCiiRlRvULbt9Fnz
+kJJDgH2BcbNSmWJlrCqYk+E3GAyQial+szkEZED+02wXHsbs0z3vozjQGHy0RVOj
+Gc5Shwk7Hr/F3vw9EQKa1nNffWmcGEx9B+WcC9ALPVd/fpQVXvlqfbi+kaIbqv2x
+NHQr7BL8j3SpN6vhfZM/3zeghlxQ5HYWER983XwkmvbNdMxt5HWsMKWZ0utt4ocK
+TnQP8NFGlPWEQhPvRRFNb9BI0wvGD0NUb1gjABEBAAG0H0V2YW4gV2FyZCA8ZXZh
+bndhcmRAYXBhY2hlLm9yZz6JATkEEwECACMFAlbqsT0CGwMHCwkIBwMCAQYVCAIJ
+CgsEFgIDAQIeAQIXgAAKCRBkoW+q7BakvnygB/41oiYgfDqkG5srQ4nC7jE0Pe5V
+MnuLVHqsfJBGPvt2tz5+Z1ciIFFwUi/xsafX5DhC+FVOOGdeEnkKnskPBOI7uMFh
+v/s90lbhNV62LfwcS9hptE4qn0JTg7mYiiL0Zue99mlkeP105+GlMmvH5q54X2Le
+hIDBVR8DehL8ZqZCvNEVK1ftpx45mvF/4yh0YK0oVuCAAzwF9+6OxeWTCUTRHTZC
+4CWjtXKUHMq4nTRSp0wGdqd5UV0VbMn0bKTkhgRNCJAKyFw6lJ0FZWwmuG28T0s+
+bKuRAJHTAZmSM7UmBnKo22t9whNcozcqxWhK1lcS4OWEArXpCKxAx4kXmbwnuQEN
+BFbqsT0BCADj5dHK9K27rmkFscDY6x53w4L/X6AYKmVu7Qol7VhR+1WtZXgxZaLM
+xDxj5RK4sNOIqh6R3vEMlAVS+iYbzahI/A0fcSciCoLCgjJKCR3STnTu2k0D/MO0
+la+wF/bGPa0UADGIJLRCjalkl5uv4c7zZbyLnRl8a9XSc81cp2WJTxafZJlJkFOU
+4cyewwFuH0pwMvc9Wmwhkh5IeBF6w8Asj77M5bzJINXYxtKMGYA506609HrvN0+r
+obfgx4Aqy4hGKsqXMsSZiuPDvbdtH3gIRV8NPdYRq+dQg/gv222Y3G1xprDVbl1A
+1CCHlaUqT2lIFPovjoB2O2SBeX9xKRJzABEBAAGJAR8EGAECAAkFAlbqsT0CGwwA
+CgkQZKFvquwWpL4yawf/WDI4VqLkR9RqaX3am/kS8481pZPWZUlCCL7jONB7X7eG
+Bit/FjmQWzfL5nWAEB5qhm2qqCgvgtPmVxCrQLECVmaGmDFmhGIFh8TQsYvQJPK6
+HZDxZj97lUKsG/ojOY4ZArvZnsXBU6C963QUZF+P5UL52n1pE/ByMV1R3enEfrYI
+X+wZslOx5uRFOR8dgUpG/ohh2vkFCaKD6KJQHm6C5lGBgUNqGMFxp1nknKJaNqYq
+jvippm6KcocWARfTHx6Xm3mBqxigmpsalUKAGpjcsxsIEY6jnnN/5i5y1XeokTY8
+6fqEt2OSFSkWiApqq6lxMRluTiq33bSquTxSomKfQQ==
+=PImz
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A7F5ED0FA05D64B7
+uid    Kengo TODA <skypencil+github@gmail.com>
+
+sub    4044EDF1BB73EFEA
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+3ug=
+=QgEH
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    47586A1B75EF0DE5
+uid    Benoit Quenaudon <oldering@gmail.com>
+
+sub    D74B959DFA1D84F2
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFkW7RoBCAC7NMtr/e27nrUuIcEZEJBZS3TbZYId80UNQXgYmqPhy/sfCyMc
+87eKzOalauwLbr5+VGuKqhvKrihV1WCt2+FUjOtnCf1GutpAUH9plfSs8IpRog0h
+i9IpApPeR0Q37fHhc/fSLDxoHIylML0058K2X9js/VNg9xospjvRBi0vXmNaMWuo
+qMQXXVJrDDtDlxljx78Fk7b/qiFuqBgIPM3U5OPyaQ9Qks8wactSYo9pcqIZx9BF
+/XR//WvPwQ5MEAPCkwXnNIlrePDGMule7QRRmDvNkcD8V2xSOM+fhVd3UpuCpMEG
+h3MpiaFq9TF9O1Fv22Cs4eM3mnYOEHjAGyNzABEBAAG0JUJlbm9pdCBRdWVuYXVk
+b24gPG9sZGVyaW5nQGdtYWlsLmNvbT6JATcEEwEKACEFAlkW7RoCGwMFCwkIBwMF
+FQoJCAsFFgIDAQACHgECF4AACgkQR1hqG3XvDeU8FAf+KJqG/lNX1xzASjIYxXPj
+W++DVsvysQaSAr5OebRsD/KLeEM68ps65AfpMgxIAs094NEhA99wIXclf4vjZJ3W
+5z2VS2+IwhnDNYD9Pe0xt3H8zfbL3no0LyPS+pAsavtgJ0gqRG/kNDDoM/RmI2S4
+yZgaku6kQ4hCKKubdrPBV+LqCSBvEn6kTvHMvIYQrtDgvm/X9hTR/42zaAK9UaD1
+RiLF2k2nbQeJlDu8ZSvuA3IOGTb6ALUA66KkmiDqMG43vZs+ZTAKnreWKsPKlQr0
+eAAN/dcFVg35+bjf02561Zi73NcgMS7M6VgBExBoGYDW4299vnu8K3FqOHDQs3f4
+8rkBDQRZFu0aAQgA1+Ve/M0qe9PJ3RECh7T23GIGQSQ2qz877YKt0ZszRRqO3zyn
++odZTlDV7dNfWuC4vZfzY7tMs+4VpYiiFBGnEmZkgCc0upK5IuHrS9HwuD3VcOw6
+e9SpmOgYkJYKmjtNCNz7BIoYCIu+PYzaueP12DXCIod7bij8+smRaon0IkDj4SqH
+ALxnb75+L9MQKaxTfkOybDWLfhz9oxfUtO2StLHlGVk8Q6GVAhKJIp6bZGDA/S3m
+Hx/AZHnVsL8o98oYRIuwLFPxeAYauY6cgwoD/9FYpkQSlxbsLsje8HRT1nvzWKhP
+4NwZFDkmEWsKOiIYgV9lQWompcLpqLFfmp0pPwARAQABiQEfBBgBCgAJBQJZFu0a
+AhsMAAoJEEdYaht17w3l3ZoH/RYBt2aiAhrbjQteyA5CpNZ6V8jRrudzEHB/boJH
+FnBUGNhzDDeu9FoJGrR8r4AvLyJgqiiATN3/erKEiZI/cP8wBfzjoMBM9MiYLgRg
+NawvoLd03oEUq856SbCwW096GE6m/eLcT3735+aIchMAHSagHP9cIuWr+t3+W0z5
+MURVOe71bf2TSySXhbdp4E05XjRgAwdQciW0n8SCKgRppO/CuIWiUyvt5JCCrfxY
+gEOMg5/wEGRSuNS7YtYB92CBgLPQ7SmpNSMUY3Hvvg+AblS7sxPDDvvY7whHK2U4
+6LJQx7BqPFqTmGPfFbSt2843qryNpjbAIzMpm0WC40LvvLU=
+=5a7q
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    1188B69F6D6259CA
+uid    Chris Banes <chris@banes.me>
+
+sub    0888B86856F9D71A
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBF2hcBkBCAC2H5WcFoeByKBUAjRDjmP+5P6FRsZjLe6c1wy7G1ha6/EQUVK4
+gZUZYE9W7l/4QKHvAu4PvFWdD+5FXGZuB/2kw348CtabAlJTehm1QlPt5//ODkxB
+fWPPz3uHBo5PQJZuLpStQn+aEkTTHK6Sk5033e6fa7mV5X/c8pTmTzkunG58NFbj
+5VSVbks4pbafKoMY7rSN0/I2hEApCjB9tx/7DJuQ9gbaGhmabnhBTnwHXEV1/hIF
+369lfiqeoeqDMOKj99C6KFD/NPRrRLfoPRpqL3LPsPp7P+TzyZN2q89Xqn2ysyI9
+jDtrlssEXLskU5kA8fVa179V/QR6QtrJ29m/ABEBAAG0HENocmlzIEJhbmVzIDxj
+aHJpc0BiYW5lcy5tZT6JAVQEEwEIAD4WIQRkubCfFkqgv4h0LrYRiLafbWJZygUC
+XaFwGQIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRARiLafbWJZ
+ygNIB/wPXRnQJ5Pj+G/S0sbcDjTFegfN5TzXRRu0wXyogHPCt5ItE+8DURp7coq1
+eaocMZQ1186QLow/gInpji5l2pyv8BjC+H0GrXrT00S4wWcmd4ink+cNIwCtO8Dk
+Bi25t9RxA12zKqXn62W8sATRl4DlL17ASw8k1bYDGWWJAM8GJG2yucaFN7RohO7q
+5QmcjsXmuzfZtcKrlVBVNkYoGQKfjgr5fPjG1p5aOKELYt33u16stDGOuvXyJL2h
+4FhqMJL9UvFj7uOdMQLK10QPb3tFXELchvBWCkD/GVHtH1hwFumLkLbIKaj43Sq8
+Kap/NfRkl5GXw5e8UQDQevfTXdJduQENBF2hcBkBCAC2kr/FJuCwW8jzPDyH3EsJ
+ebKgUGpdZ8O+OtbvIBgIt7opJ+tkOyBjt0kUbiXEeoZGOQ8qtaj8BD5nAYytDZcd
+TU7ZOE8A02bMXsTVeNKkPgbmYQm9DZokAUQWO6NxohWvJqnDXkzZyMb6jGCJyGHL
+x6bN6++0DWPD2c53wzaSZLg/776BZw453HWkHfiomtoKgBR0DMOg51daAsj8d/Aq
+itdK8Nwz7cmKP7FaOu5lSyWb6F8dueQ2yjQEykq4YrgiLCva/pSL2Pc16CNnCRbD
+QNUEog5Ldco1tbrPPfizLeXVQmp6tG34aa1OCd2WKs1EtbFQHpFWNo0cP7LInV/r
+ABEBAAGJATwEGAEIACYWIQRkubCfFkqgv4h0LrYRiLafbWJZygUCXaFwGQIbDAUJ
+A8JnAAAKCRARiLafbWJZyoPeB/9hrGRr1ivPnQOMtAJgrT+Aev1gFKJxgTJlB9QM
+fBmjyiELgnjwW0COb9nRgalDk404f6nKcH0x0jElhUU79h2Qz/NoGP7QByaymdeP
+j69SQeDb3TyI+tHShX8r3gt7fEyeJFYyr7w8xmO6B7GdTpltTcrbG3uk2o+e1GPL
++u86S0QhG2RyBKOIWLXoRCJQlouzNqiZl7Viv8FN28NAvCi+Crp/evPtNNOYjnUP
+yIoOKCOCv1Fth5H0DNQMLsCZbHPLl1Lx+AN5JFR0xp774uGkzLQ1jyqXTbv3rn1s
+LjK0uhsXbr+8I7TfsExnrL9DmAn8R0nE4uPV2wW1NzwavqcU
+=yIZi
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A7764F502A938C99
+sub    F20DB7FEF61CE1E8
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFc7oMQBCADaIPEUzMrwF9gnEC+PRn2cSPG8OV4RxXxa88TZm0L7NF7D+F5N
+MNUAZ58oVqFUW+ytgb5iey3X7KjlJXZnuqES4m2Id4N7FlnvrmpeOg7MUc9VmNkt
+E7RH0O5GAo3V3o/Xp5nATUoaQ7v1WaPloB78ucyWLnH/iANw8YuxYuYUTJ0f2b15
+1oY1feqkpibbbO39kdMY36FH5h8Gsv0vvGdeS2O1p9vbzDHXEMLkNyKfcILLjbNU
+O/n2FzDL1y7hHXcFKDl6z2G7rKJCAsASH+r51YX3dOKUepE3pFcUbMAXGeG//n4B
+T8cv9YOhsYGaXBdbOMjy1WsZMvizbp0p6yIhABEBAAG5AQ0EVzugxAEIAMxtJLP4
+EGHrf/bnRuJHkyMqd/LEIMR4KszUl1AU5oeCxah7ZsK2MjwAUDD2UeLAIyANmKq+
+vXtma2wvQeOzo0QDMnxLqADSQ4xqUUcgbn71rjMq2O/T06BI9Lr2BaXeuYYjifA+
+loWzCbOHcgz78p8RRmxlChO5mWWlnrznDbUjV4Pih8M1LR/a2bUiU/Ftg14GPSrh
+ct9D3b5CjMIa4tqWMpvI+6jOjJm/ZD3Ux7WbzlHB+B9/yTw7n3pLSMXj/07PJKrp
+tUeJONprdN7V3wg1fnVS8CuQmLKoJhU1kLnucgnCFQMaHThhjxdaBMr6Mlq3urT2
+BSw970AB1qV4Wg8AEQEAAYkBHwQYAQIACQUCVzugxAIbDAAKCRCndk9QKpOMmUjO
+B/9ByOS3hX9yJysA/IDbFWonYmlo7p2hQbR1tiQ03QpbXZXCPxkSknW2uHqFLxd5
+eFkR46ExXINqFzMO6V7+o+soj7jUOK2rxQUIvdf423rhjdOU+TGXSDVKfNhBc/P+
+z0xQX7TkOuNwrcztgsmoSI/5K0rbF6+Yx3Thz29ZNFPTTkdFGiq6GfDOwBOp0VOv
+NyHw7mO4x4/5gdPKJ7zsMTT1OgBY+UQ9msb/ae47HvAEIgFg65OAamU+cWe471PQ
+uo8MEmeRKCsJuZlYjHcwqvqcVOcHJ9XzjuiCPn4N7aNkSTvoOcGvBWaAmBTxWVRM
+hvtJrydlnWJlCJiPfZvTePUR
+=IsAk
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    BE096E29EDB8D141
+uid    Eric Lafortune (Key for signing ProGuard artefacts) <eric@graphics.cornell.edu>
+
+sub    E05A9780475FAB55
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFFGZXQBCADeZK9xuCrDwJ7v37y8RITlchzBfJEWv7cSbrSIBlFNAsUUoshW
+Y8U6xYKe0GdiLVta2F8bzs0Si4LcDeglQNi9Fxvh3/jfs0MEJUfSeZ4z1Mn5WY35
+utbdlHe6i+7qvhpHveREwWoWuvFGKeSCV8SioolG1mzxrDVLkQefPZ+Kr+xd2cYZ
+SIkbjdhCvJHcUkD9gs8Wz9q9eDyc7dGJmfBYaQ7Xa6lbd852qj8LjQ7Gd41yHU6T
+U3oo0kKfAPFkW7rX4zeJEBgpncK0i4ertd5to/y2hauqPU3VMExqNS0/L2GqKNmb
+Q2Me02pBSBCrLLCUJkm8jZorPNxlQxHpFLHDABEBAAG0T0VyaWMgTGFmb3J0dW5l
+IChLZXkgZm9yIHNpZ25pbmcgUHJvR3VhcmQgYXJ0ZWZhY3RzKSA8ZXJpY0BncmFw
+aGljcy5jb3JuZWxsLmVkdT6JATgEEwECACIFAlFGZXQCGwMGCwkIBwMCBhUIAgkK
+CwQWAgMBAh4BAheAAAoJEL4JbintuNFBUQ0H/1ahtWOeS+EEZqUxxgLE3aiuw6XR
+mcFY/9kRlnBsKpWGGyV0DRkLThXSV5fWwiP0+moef04Miv81txVXR3U5f4MY3U5J
+SDgeB1GK+BvcYz1CXxGcErgaMIDXu/K03OyQNp1lD2kjmDDz8SHdVqpv/aFfxWpL
+uMaogbStXfbDiMjeMg2zRcAzXqu7JlMt3z33uiTUZk9jubAPOBnP5/Yhuc2wcnfu
+cLUUL9xNE6gpl0Noy8qJ2TaVoHLfDEdSgVbLDNpippNQCIEXn8VtlBCG9FBtTUR7
+z8fGU8f+ijNYHMa6jNsDlSo45/RV+alQSSZhx3hPCIgO2klEkawBs0ikEjS5AQ0E
+UUZldAEIAL0CmXXJLZWMbKXEROAYFnUqQ4eNLUcLY1NfL9xrF2KP6apMXLJdftwz
+JtcenfD5vra8w5JJBn6cvY4Dr4zmueDSsN3Cpgr7c0trDNspAQMyUGmg4Cw7lAMr
+uIX2om1TTa5ALsQ1PfupnLFLFKbYd2MmfwEVHgEBAzqmr89RoG/NnlV4uxvWumb/
+OrLzzizGLHdLFjnq3Szl6wQPJwmxCtWHvzW/Y+HYclm+wp0sufvrXJ/G1RrHKxwh
+xaDVyLKsb5wkUC6SZmE477SP6ZCokoAGHqEK+5JnM9MYXreQ7N6NggRUseCokFaq
+ckze5wVBXmPuVAg76ScPFQd4JzLkGzUAEQEAAYkBHwQYAQIACQUCUUZldAIbDAAK
+CRC+CW4p7bjRQSkUCACPWdIvMXPtSQFnFR8oUIGxvcp9MYdealHNYkf3qgJTuWbH
+TeD8WpE53immju4hitOq/qDevKOWhcfSaLqCtdRyYQFFDWQt4SsiGdWfCvKiBMSM
+nrDQI9f+XCv7J3ute5alyMgv9Uo1XLyyiwhz9kJ9mzg+ENvy152PucI4TN63qMRQ
+MQbkAenrTzIer+5Q9ZY4TILC8pVVAIPQjTHuhdh8VMclTdkHab2PCFC57/3djJyY
+44PLhN3hLI4CElAGLUwBZLRa6OFOvwW5naivwgk0zeeTqq/jTOWPYiy2dyyX1pRX
+8bJh5et4mXyM7HLHRp+FblgWxpFWNvMCEpxujLsG
+=B/UT
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    E0130A3ED5A2079E
+sub    0AE7BBD7FEE66E0C
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFlMSXMBCADcgN0/57D/gU5cDobPiRuDT6qAxb/NWhQiqwAocKd274r4gPJm
+RbffUEZEgKhjH6l0CQfilC4R4x2QtU9sNC9kB/D6zumoS1uI0Hmx1pC4UseUy55r
+20WDxujUQ7OcJbpe2cDcQVKmMok2top7ZJqt4KVosQEeT9jjsgBBbEtg4cWb5ddR
+5rf+aJw0v/6dMLef1r9YAo0ZtLc+g2dyacqw73tcWEd3oCH++SgE26NntN+GibZu
+VXSE5u6xI4KwfT2vUT3jt5Fb29myX4sxsfB7n/xageuJYy5ms1ABS+WDO5ssEZC4
+eQEVL7eyIb9YhNAW/WtjeAuOfOKNonoqKFGXABEBAAG5AQ0EWUxJcwEIAMgrP3U+
+7YCibxSQKOZrp63RaSUkv7mCvQ3Lx4P4ZD/sDEsLOiKkAc+ZU7ETTIQkEpHaibvC
+ZNrA+R0pfAj0LYBLstEIkUxtAaVM4DBQGN13Zdup46fI8rPZEyZVb2XpZ/qS4RYi
+StFyJzUdazBJs/IB7CT0xp4DUFUOrsykVy0aWzWt4z0QBe1x3AmpAO/DdrDN5gvt
+mWzWbV3f783PuK3g41ju7F9XX5nuuatNSNHOHt65XL4vmhmSfXuP6UFjK6MKzq9z
+pbZD4ipUPoKEId5ONDSucX4C8OydpC8+rFWJCDDDvocox3/l6TzihQXf8MDDcB0u
+1TgDPz4M/S2vBh8AEQEAAYkBHwQYAQgACQUCWUxJcwIbDAAKCRDgEwo+1aIHntk2
+B/42pBknUQB2YjkPryJ1B1ArcxaLO7gVo/lgT/rLGL7BuTYsFIl9kJUD156EfkmS
+AkfsxPzwUNh/GyfVQt09F6wheprx1fLNJCFIYA9ZA0WVZGSwbE3NdiuwEaJ3/HZ7
+7IteQh5LKllqFuSlZ3u0xdtGJjnAUU9wHxWH+0W3RPm62piSJcWUw7CSqEyuX+8Z
++eq4HY0v74znfy6GyCiil7S1T9fdan22hP3xiJHgVKtyFmhhrz6YxcZLa0fYl+R3
+mCQvt2FuiaLL3d/uH0z6EzWs+XZNbjRBTGI9VmO7siIy6rjatdult3Sx1quBCixC
+4Ms2AWEA7bMqvUmCoB2M/0x8
+=6Sqy
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A6EA2E2BF22E0543
+uid    Tobias Warneke (for development purposes) <t.warneke@gmx.net>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=thlj
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    D5F4C07A434AB3DA
+uid    Egor Andreevici (My key) <egor@squareup.com>
+
+sub    9D49CFE20A7A3EE7
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+Umx6zyOUi5AfW8LWHwPYuk2dkLY=
+=KXp1
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A40E24B5B408DBD5
+uid    Robolectric Developers <robolectric@googlegroups.com>
+
+sub    6A2038967E03726F
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFRdA40BCAC0zSALsOjfjr+gO8q+HV4qPWuIRB8S4z//jCEpKypyCRR9sA0W
+IDHG6OqG5fO1bP6VsHvSx32E8YUf0bi8eGgpKj5gJ9jmausRvRHtUHJ0pvZRBw51
+z4amYVr+NdVoyqLXBgBYeFlEYI04rQH9W8r1bCk8RKGJFNvO6ikTN9opLRkvZ7A6
+7VKlQGMd0sSJ3MAhzKUkM+ZWeCb/TG0xSrhJHcrFUORdV5zaX61anOTSst4HOTuL
+ByIZq1RMxKP4UJIWH2NYVUC1Bdn5CbY5mJysqQXjobPwG/cNAyBjsDBCh2VMnFY6
+geCHL3BowNd8gHUr0wjGKOipRmyfOJoTspMfABEBAAG0NVJvYm9sZWN0cmljIERl
+dmVsb3BlcnMgPHJvYm9sZWN0cmljQGdvb2dsZWdyb3Vwcy5jb20+iQE4BBMBAgAi
+BQJUXQONAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCkDiS1tAjb1Z24
+B/4iAEYvEFhBGjOuXhAPmZSyYyiHWrehY2yZGKmjPKoDKxD05PC6lCNOsdYn5WQ4
+sO32Yi2MbCRpOdphJDJORuGapMeEdrbNqAZ3kzCyMEI7AojH70B7/g99bY9bLq4c
+MYS1udCVPBzfNNSZok22S54fJmFg1evzJbOynZnIFKAhSWL1Ns0zQ9RXQ3gddhAF
+zE1ciZTwmRwdkObd/oxjs/g5ps3VuB25b88+WxGRaZf1vlZN8fNvK4AEDhbH/j5+
+VjcI7R5zLVsYNHEZSspckuoxn+1PNOKDZvhrSrDlqf1EUSmPb4j/nrW07c1p/91/
+T/R02aGSzbwqbbI17ZuxYMU3uQENBFRdA40BCADhMeWEVcUNBLRWDatdlvc7q3jZ
+EyejhSl3zw0I15yhoBbuW+ZnOTG4fkIr9SRo4whm2NZ7eemEnQ6tuGhVXUqPIxWA
+wBteY0ZBhwNGhMql+IIdOE9WIo82yV4gj1Lo2rjxaxG4Rd7FQnys5f+XyFZ8vaXp
+mpH9VeFjc1Ls550DUP8iVvIoKI65Ve5RMZc9e3AeP8FZqJpc3q+Al2f/FAO8+tiD
+/J849aP4aqUKiwvHk/nxle8FwepQyvXRrSpFNz2uK5bgIXQrxgcKLPjl6s9l8SKn
+Twg6ok0EcJjGuHjzCeFNp/WFpAeJAxmAZ/qUbr0TBp6jxXoMc/RqdO79MPX5ABEB
+AAGJAR8EGAECAAkFAlRdA40CGwwACgkQpA4ktbQI29WOzgf8D487fhQSsH87OJfp
+oSPf9p2wGzgNFAc+sb0gUy8rMmc/xySKGfZ2BZFT/CAQsOzGZ/KSM3og+FFgDcm8
+GWpSfZNymXnmM8aCaEyNj4arENxwhU4BEnKYFf8PIDoCjAqBbSWuTa2RzaWlawEE
+g4hItheFmw/My/tbo62N4zn98IYU//50PNDuDb1lvOi4SVFglXRoM+jS2X6E9R3Z
+7sYceClr2EDN2k+RbvB6ngOiu52FvC9ZZPJnfK9/XHFtKcQ64yu3pbeXwiuqyr4T
+SpzGJNm7czyVylHZfvkZYVhmZCEG9xQ0lzHshaXmkfqi5ZJMEtXwNP1dWIMhIGgY
+4aLehw==
+=LRPz
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    102E05D8DA6C286D
+sub    7680B2343D1CF013
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFOZyw0BCADj6eDnIjaug0RJQCi/HLw5jJ2kORPaegxFuE5IhpN9pZCPASax
+aTROfUSnys7cbxZxh3Sri3spQ0j+ejod0MhVX9ajTg508YAJUaCBbM7CGZJZtVFL
+atf99umsxzDrXIk24z04W5KBiLS3M7QKPyMujjiVy9naFxyW8GXJxYcGKUEltWwP
+zgO97xwHs+T5nXcO6jOrJ7NxI9fbnWb6QY6btSkrlpLnwH5yxGpajcR6R8+kj+0W
+dqWWrs9vo0DQGohkoqjTzeVt8UWHqUBva6hULkz6H9CRLfVxuK3lLFtnRBjnjRbu
+bNyOdVdtaXArmMKwsonsaZ0E973yqcmbhKQ3ABEBAAG5AQ0EU5nLDQEIAK6UjEUy
+lBC987DwdhJ8sQKGcOq8JM7sfLgpBfuRL+kWM+jpXi+DmfThnO2tI5UaaF/jMd8w
+Kd4JeAGE0Ynj5V1n5qUsTUXwEonDLLBOBYEj2NYJ40kmVrPdp00auDf11Y8NC4vS
+m+4QV+FDcWvV62ogOC5rYKOaKMPf20F9rCxUBwvrXNHPQJZeX3FqU/HBhvaqtHjA
+flZoQF01baDMQTZf5JgATzXJRsKKum7z0DWiYNoOJ8wpbuXM6CG50N+4OrlSZfxx
+kN8I9sSyREzHj5zVWoKqeyii9HUeqBLWh++TiYrRyP9NHM1SXhrtp3wZ36CBXqp6
+ME2K1DQTMlqZTwEAEQEAAYkBJQQYAQIADwUCU5nLDQIbDAUJAeEzgAAKCRAQLgXY
+2mwobdDhCACjfIYnUCHd6KzmgOoYXsW8NeVE3QFpMxMVq9rNEJxAiOg3b+Bdz48L
+2lQy6yJJ7owKAH2M6FvVXpfrdkiMQICEzKr1IT48H1Sa0jj0cSR0jRYszmd8k3G0
+hBqmGnfPBfolrOVDaRGf2CXCZFHVZA/Qvof76FaZ1cFAKYmUraXJBocxupXz6QMq
+P4qsPgkscwEVv4b9u+Q+YLpqHBiWmsHk9mp1Jtqz1SBTqI4zVj7w6qmc0aZh9I2T
+ROvKAtF7WjBg9LEFstqZeP42rKenm9vOGs0aQbe4kkgFMIwkLI1TeXrYeQWSdjlN
+nCYHwzPH+lq2dsCro1T8dMZTRFWKeaPn
+=w1VQ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    42575E0CCD6BA16A
+uid    Taro L. Saito <leo@xerial.org>
+
+sub    47624A56526BF2F2
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=6Iv0
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    D73C68EE4152C255
+uid    Eric Chang <erichang@google.com>
+
+sub    A23FC45C6F9E2F57
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBF0uFrIBDADbJkwrWs0qPrv4bNmPZMWHcryANAwodvFF4f51Z6S3pBkuBxx0
+vW8ZKC9/scJiAzSqJRf4im70GPNE3MZjNyfuRdaedXw2rFc4Ip7lBsCtklYmTWmC
+vA9DXI6gIhvQ58s13fHcLGepIfKZcIXntyXp3DcPz8XJpfZTwgpS6RlbJjr296p4
+ya1LiyH5GBaWal7DcKwgIBSSAbtEyZH0tNp9wfkiILiTI1RE1D+DrQ9MJa1b7Gag
+qBMn2A74TFEzx/bSPMMllwdKTRurvjz33TTdNuyd45bkteMKiw5O+6c26Q29o6hw
+oQG8efNDrzWOCjW2Sj91DPdA52UfJ9T7C5dcf+EcCLmpV7hWrfkDdzDX3NXnMU7A
+r7kEPKeF608jEcqS46YB8lIBqC6gPMwluLqmukRpxrlyMwsygc7bbieMZRhczCLo
+tj9CUAUW2dvXwY32N7zUqFgVnJ26t4/bHRAW5QVVqrfDC0WmoUVyOsPh9/KKGmIf
+3ocDh93eN6x0UH0AEQEAAbQgRXJpYyBDaGFuZyA8ZXJpY2hhbmdAZ29vZ2xlLmNv
+bT6JAdQEEwEKAD4WIQQOudfEaPl+RAUdZQrXPGjuQVLCVQUCXS4WsgIbAwUJA8Jn
+AAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDXPGjuQVLCVSyzC/9UHsOGJ3px
+qNcSYm6UJGnaco1XNw/znMBUFbhxO6R0dhgfc5YEDm6cQlMlKskX5VgdbwXKD85X
+YJx9O6Xew9GQJJy+xVBm8di0AqCes/0mfRsANeMWsxZ9c77zSZdWHjyYxZSvVFAl
+0UL66S1lYuMxeBrBdWn1Aq85g6O5vQI8a3OiBWu6Fx90GwX9DY96BSwTqxKFkn9s
+Pt3VL7moJAxSBUEeWKezD3C9RlkOqmjuEtsQ2mnF0NPWgIO0tABMUXJiOR65YXNq
+V9sgu7OVhXylBvG8fVp/rFyA61T1CJwDoZwkoyXBacnK8AA3vVwP4Ll4vw/MIxww
+B8p1oO+4dbHzmGDU63ic0JFSuj9eIGdQWXf0acaYmjIpSs/0jR8NOY8S67SNsWzX
+9xrekvUriWjo4l7L/k4i4lPcZOjpRX6Zov0G00rAPq5Y+ZV7J3mRkKrHqw+GZZ5C
+41YP9Td+RBapg0OSu8wHeAeh5rnrFNDHL15iYl0/H8dgeiVrr3YCaa25AY0EXS4W
+sgEMAKfohKMRHHVJ9aAse/rwsoF9D5Qxg/g/DeuWRtnFwrSv+6rBJW00S1jIXkze
+M99MsjK4aJaSLfId8SQmMWMvzwBp6m3J0Gqy2CdRo3v6zW0juPHZ2vDs3wt9sJPJ
+edufqxlXwWo6XhmNJXcclBzeP2f17Phx6Wrp78ONo6tDg77IHLdsXER/KwYAv4cK
+6O+MahvnelpAFyi1fdiLJkkrwIheUKF9jKgCvYGQeQSoe0sopFD7zXYgE0DurlpI
+9Shj++i5jN7atvaHRSFp6Vo8PkmtGeD0jq1N2nCdVWkIIZL226ABcSBSQSVdTiLP
+FrMmqlppoxvwl8Q/R8nKo1lsNKp/HV/qshF50GfpJfLKA3GmWZWt/dkCb1nurCmK
+jAO3AHCL5p++idGIsSTgIDg5mcpnltG/TH1atoQj1ixRZ/ykSu6VO+RygcV60IdG
+Ct8CFTLSLUacfPieSR6mGqLdta5ISNHqbJ3Xi2mQwADQmLbYnwKcU0uunRUjYDzy
+IINn0wARAQABiQG8BBgBCgAmFiEEDrnXxGj5fkQFHWUK1zxo7kFSwlUFAl0uFrIC
+GwwFCQPCZwAACgkQ1zxo7kFSwlWfEAwAqz6AHYxuxfbEOkCd/d7Zhd8OvmLHyH70
+A3wfw1LXHowUQBhQi2BwZ9jwXzu7s3ciohMaHvN2w4VFLwCY86VnKQ+mn36Op6/O
+05UlGFauaCxyT9PMHJOHpKdUopCPnajquSdpHZ/y2oCl+KUcMEY+s74dEkDvj+Qb
+L4VMawOunmKlomYyFurRJ5k28RhmzgGaUr5r/2xUMIvPaKQ+YamxjW8THKMyNZqu
+D/cRNHusxtXXoULhO9XOhSWyOV1EDwrK+uIV8Vg7kP0AD3jNW+S42NmrQnAUk4Ni
+Uj/2vtXqqZrr57qxOAz7GGCh5xNGuPXeb8mjwCLqYECLIms6clQT5gWHD5AU36te
+s5nZyahgbVU34Jx2XQkbyw1245MWBeOfjZA/cAQfweDmKNf4sevLfDoLu7fnsOyw
+IwrtprcYdzyhAaM+pO76brTX40781a2yUH2zpZPWobdMyDNDeo+bql+Wvzb+qRGS
+zJV7rbKv80zNxWNJMOr+yshtM+Hclm3s
+=mRRB
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    62C82E50836EB3EE
+sub    2AC7BF2F3349DE80
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+egz57oSj4I+NT33hA64x6jicEKyBNxNI
+=T3Bh
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    AC5EC74981F9CDA6
+uid    Cedric Beust <cedric@beust.com>
+
+sub    501B5ADEF57CE6A3
+sub    5D9FFE7B8E3DEA8B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+FF1NsuDIia3lMYUCPApVQbA4f0Paaw==
+=qDUR
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    79E193516BE7998F
+uid    Filip Jirs?k <filip@jirsak.org>
+
+sub    9F7335D63326E7F9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFWdcSoBCADK8j+0eVZKUGctZo/VaJ/K2Wppx4jEFgih8xiIWREQ9B3QEugJ
+mJMWZHhrnHB+sjVx5No482ch6sVhYmC+VMyTdzepItZ8beYa0pnNGJnrFT+HcTOS
+g21Ef5e6BRORNho2j9YTvxvjof29XxU4SJFVgffs48jGeJzN1EDmOz4OlZupKGU+
+98o+kMKCiFjcf6Vu03asuml97b2fMOJ09n+UQVlZbBR/Yo407ZLkL2Elx47Fz+82
+iO+M8w2qNnxT4PA/TLgaVzkVHaR/JIDlQQ4DfuyloQI1hBpMB8f60oukVr5dBGuS
+1dPZ1H7td975sLegWoj7CCOFZXrDzYUXwwXPABEBAAG0IEZpbGlwIEppcnPDoWsg
+PGZpbGlwQGppcnNhay5vcmc+iQE5BBMBCAAjBQJVnXEqAhsDBwsJCAcDAgEGFQgC
+CQoLBBYCAwECHgECF4AACgkQeeGTUWvnmY/Z6wgArX9fzySIVWcqFuhaIlRlib9j
+1qE3sSiFVENV4NrCYv+4ZUQUEUvqwX0F4ij+Au9fzvaWb0gT02ErHYJ9UowUgUYb
+IdHsifoGh05jZdiClXJutcQHddM+P+ReIAS4/JDlXza1kqa1RRvDh+OtsrDkL1MU
+a5T6/KbCWzAj9+96vqa2dLO0mhyrPpVX/hF4tPY6ltGYEXA9N3c83rFmaCZTNM0t
+sEQniQMICOMZul2dKJ4Tev12/G9sd4owtlHtAtv0+tFPDMPQAXjToUo36q9MIzKE
+Cyz5sX64QRablAJc7QD4MFI/7J6eQdpSKM77QaL48kcUAK1j9nlXv+oj/1d437kB
+DQRVnXEqAQgAonYI6XgMnKL5jj1n/3kVxKA+4m0znSoMutK3B2D3geqTzFWlDIWU
+EOEE00U2mBMPUibQ9orbu5IYrbXLR6t0QORJiHudP3LxdtjIqXCagdzCewJ0Kfvd
+pR/a65dsULLu4+v8R7KBH+lBVs0aN0z8e539ZaoGPCVaWliybbHwcry4tOMu9wyB
+dPlt0pkqQ7y+YerXgHO+hc9urQVY9zHVBRe1J2vqzFONitFlD5BoT386pz8tBi0W
+32J46nTgReukzJWLbtV53fxYAFUroA7Ydy2xYKQ2yVqBq9NraUNqbdtlEhJRDS3W
+eQs4ittg+oyMumIdNjSbUlbDX0O7EP16KQARAQABiQEfBBgBCAAJBQJVnXEqAhsM
+AAoJEHnhk1Fr55mPAAUH/itFMvGq/ri1alRXhLbhx8/HmwBBkgS8wCu/oIIPEZ4W
+jRB8EfEYAMbmqtmbGFc/lL2QSxvqAcsUGFlVqRe+Ux9LilQx/84zvD6aG90eTzfF
+pNUHkgBOS7poRbDggVaCSuDYKiyTc07hHNl4iZON3VSiOaXf/4rzbIzv0n0swc0s
+00N1IcwI/pP+74t+tmfH4PUjZwUC6cXHMHSfvImAO2hPMAbd3rJ/ZO/ZVwjNocjR
+5fQj/MSOgl5hiXEkuBdoqoD0lTJMYCwPgwPGNcBr2xeXOKxeIlbYGwh/j3AsK0Op
+uqUJfZ5wvADbdmco+6Piann1q0WvhfmRaie7IPG2tB0=
+=ZbfA
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    B16698A4ADF4D638
+sub    32784D4F004B405B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFM1v9ABCADD0KoXq2ZKlUHeIVovQy3gFmW9oFAaraV48ouv8cYvqdf+s91H
+NyqeyNPT/ihFeNqZJUAMyPdwN5xrWD6gxMrOCR7BFhA5kLmAKz4HfFCQ05ViyQdI
+/HVNFvTdF8LNnuF+a5aNgg+jjLvFwzkyMFkuiPGuUDFnqEGxC+z9J8t40tpOTOIw
+tPjSzkDN41AJDpUK/simKC5F0Im78nUbwMalE5z2IsZRWpYZyIhN1HhEdDvaDIh7
+3vENjH7enAjWh0iGRu+GTP/fayZnX0uhmausCCwMMhsr489e63ZOaJrqeC//wWrX
+dtEJjcmvRmJ2hwLmgwMP4zSNKsnLGzP0sh69ABEBAAG5AQ0EUzW/0AEIAO62SMbq
+gIzEFQEHlxNN5pZHd7msqDESILFYFkI1mxlkD0twFWMbk4nMH2VXhiuT3ulqKBOU
+UUNQrO7egtfbGsgVv4bWbUHfeZkfvoWDlmbrvi1YLlR/ZxzGpCNc8e3aOcN3XKHl
+BwfUaco6pcTBvLpKPA/TAjkTOtK4A5Azv1CSwpzSJf2bVVbrn7mi/rw78SmZAV2/
+rtiOU5a9S+3fzswLk1PO/z//d4VoCcL2s2WueVO1Q99kejkE55l3lYwEiBzVuAA9
+8Q0a5wg84vRGFZQWLIw8c20On2+dZcTLZc61ZjnsI1LSnLUUyQ/fzHQ+BynQF9l4
+3ZCPKFIl125MGikAEQEAAYkBHwQYAQIACQUCUzW/0AIbDAAKCRCxZpikrfTWOJel
+B/9vDc3G/mrIHB1P/zl0Fdl5wQzaSVc9JB/ce0018ptplL711af0ZDvWqmZkJNkY
+u0lHgnniaXB0l3GGUPIa/TZzVgFSRPj65FWTMkBbNnhGIwV5IVOPcSKSyDYn9/nQ
+PpmWl5fDj8xiv6kKYxA4hjjRbRGuUXiI2dnyFHuFpacf/Af/Mc0U/CDDuz5a1jS4
+SYuYM/HFVL93POZzwLUR/+GDuVJFnm12rmjGnJVgR0rWcJKJt6vCsBPVfIamfl6v
+G+N4TWQ9euj8Rd4hjsYPOwDfgVIUGIhpTUJ+fz046fkz9MWnX7RJh6hqLAXT7Hbc
+0FTFsKYAbLJbm3Q+rU9jTdM8
+=mDDW
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    62BA9C275D14234E
+uid    Pierre Yves Ricau <py.ricau@gmail.com>
+
+sub    FD2D3AEF63B97A64
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=ukU8
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    ECDFEA3CB4493B94
+sub    3BD211F725778C36
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBERFeVERBACjfASThn15ynIICr0Gu8quGCl2rSSRar8TsjrbiwYB2MTW35Rg
+NjLU6MN5Nq4d5G8D5aMeoyGODstIHH8zA52sDGeHOMKfDaAraL+lGzElbpmaqP2s
+P+y+J4gDMlxSBoXY5HjfZUTogP4olWYJS0tWTFc6EiXcSH1zCo1rdo1TTwCg9/U5
+q+Us2XbjevKghRbRabl//R0EAIcimKSJf1w/3yVwrYeUh2Op0fM23y+JUAPcG8SD
+lRnHRnIrf2e0pAkQQ32us1zRaHbuHzcJc0lP1eyoQh0KoRZIUq/7mj9q6Dp3H63b
+VNAxU7O4DyPMMmlgTiZCjwN2qBclZ9zegGx51v2UR4b+qKhZZCHOSjdj0Xhq6P1L
+O7G9A/wItw9LtJhVBqXVxL/pNVNA++NneLMdl5OpAAqJtI44oflJpo/FJlnDFuHP
+ueLYZVWWGoOlPW0odKxI3fvMO0ZfTtm4VO0mjEN2kZ/OR8L3c2Tdx9AHS5lVqIh/
+T4fRqXl/zjbdE+ZqYqhEYelZat3V4EhBAmj2jFQiHsSbfMiSerkCDQRERXljEAgA
+3nHJ+5JvtwQIFzw95ZTPdB/4+Do6JzhZssC1L6ZtgjDh3zdEDbloXsyroawwcY6U
++unak24iTXlbcI/IgZnYIzZcdHM70hi9KtfhSAMRDI+UaFsxLhvx8hcTUV0fzx+B
+8q6nvdI/8fnjJ6Cr0EaCmWOqEjERs9NL7va7Y33JirQQ3pwe6VpzaejE+OzpqQMA
+vfhLw9ucq+l2KGTTk/LccQU3sUIF0osAakPXbTPDHXFmqWkIp0GQIExCorW7FBbq
++4Edd0n4H54z0kP/BLh3M6HgHTUQurV5yw+/enSv7B0wJPiULiUCWN1hb/Vyds9W
+Yo4NPL/MIlxH/ZVTUids0wADBQf/WpR4MjKrxrf6G20J+TXBnRV7cZPdx4FsUE8s
+CQFay4ZzXP24tkmWXQ1b8AcmUr6opnuMio6QXV1lFBIU2rrdoJ3uQihrc21cTE5/
+FzYkFrWH3ESlOuYUaqefWJp3B5i8lNoUdShAK4iwjxsM6J1Mnl/TT5V2nwvB38Co
+AcuKQTmUGNOAnECAPGmTy5NQ2YLZzRMHn9HzyWpNKLAEkp0qN9EVZK5TBGSnFP0f
+BfYPWHg+kaLVzpT3KhkzSGjE4cyWoyuIYwSb6/3FLnaCCalYaC8k2mEhw9oFaJc8
+yyIasKaoAnbPWdMXQR32ZSTUwWBd7GyA9U+wLaNamJramQEBFYhJBBgRAgAJBQJE
+RXljAhsMAAoJEOzf6jy0STuUac8AoK8Mz00VwJP+L1IEB+9rlPaWwPAkAKD1W5wH
+sZzmsaj6pFkpumu/OmsStg==
+=rjff
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    C9FBAA83A8753994
+uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
+
+sub    AFF3E378166B1F0F
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFeWvEwBCAC7oSQ7XqcGDc6YL4KAGvDVZYigcJmv0y5hWT4wv9ABP4Jhzr1H
+NDmmGyWzhzTeMxwuZnc9vhxCQRwyxj3gGI5lYPEARswbi2fWk//78/3Wk+YMHJw3
+/1EO3VqvvDUt39gbaSqMCQNHctnFdb2QYZ7nRFTQeCqG/wyMdB05beqEnWEXzjeP
+FDF9y6gXkELn0lxUm2TKO8tU3h96TCuutDKJ0aE00lOeh/MbEaGHEbIU8kdfui6U
+znZ1X80EWbkCY8cKxEZHKD0aONSVHXwE6nETvFW9/9+K+sj/I7ytlyxwHsaQpi1H
+6aRGnq013VsIECrwkhmXBsLLXNjmhER+LkcDABEBAAG0NVRhdHUgU2Fsb3JhbnRh
+IChjb3d0b3duY29kZXIpIDx0YXR1LnNhbG9yYW50YUBpa2kuZmk+iQE+BBMBAgAo
+BQJXlrxMAhsDBQkHhM4ABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDJ+6qD
+qHU5lFtxB/0QBiKaHHdFu3GOs21+S4LZYmO0bvHASg7ueeWtoE/1cEsKqvES03Tw
+iSfMabaPt+UL4qP9w6/SUtTITAmxuc1ksyU+HwC/R1QuF+vdsguFZ0/8VdVRVY5I
+5/6Dcp7kI49RO0LxGPXCMn8s3Nj0KXiCoodMDLHwwMv5OXWrQQ4yXiQTsJudBxy5
+o2yfp0AlLm4uZdDLj7Z4u4DfyKOuKIUMsMQ2Hk12gSkDaZViIURH6MaSEdC+XbDU
+cPTq27+JSdjfYEX0908P/bH36H2kPCGVh+sXpICZ/Ce7m0OHBfE/pTTCuOlAJvcL
+Y4QbyMTlyPpZ0zFgO+jX+fj8UFi2sRhquQENBFeWvEwBCADfbjqRN1GvSf9VkjDD
+WBqX3hILiPx3DKPiSFmSsAoiLSEkP8gRDBDy6po/Oez9q+bgb9Sk+iGifJvbVNZr
+7+88LSxQECsrVL+ZgTAZ2LkqABQJ8XYh/dTO6BMJ5rSLH/YN6bO9V4NjYod67W5u
+Yox+aCp6keE7ia7eBHck2wyqxikCqvVzmAduPCkkNSRuOwLkOguduXfwb7Cg1Rna
+cMMEfDd9t+a6ytY/8JFu01G++VVxFHO3vs//RINrm0O4xKPkT1+Ocd4+h3DlhhRv
+RXvI+MKeM0ud0OpUVCBKCZqbFKTVgoRpsKC925ZRUSqbmyBcIkqyYjzD1adaZdkq
+4PLFABEBAAGJASUEGAECAA8FAleWvEwCGwwFCQeEzgAACgkQyfuqg6h1OZQ6swf/
+Vm0ndBcvdK0qCoubR/WOsynS1wdQ2rGKJC5oVsUN4YVCZhg9OMhwMSO3EOBPdxtq
+4A8bSZp/8ZWmHLohE8QHD8AgaQBtRZyNkvMRiN157XGkPEBRWdHw6XAvx/lE31W+
+19qFRnAE8BbERE3gieJcG4CKWy5CyzXnjSM+znZvDQ8J7MfG+LxKbr7zUHQH9ZWs
+k8V9D+GXDgpuyZc4ct1tNDLcn6784FubcdrD3RLMiOAYSSgKSgoELRzB8zZds+WK
+FuiAYXZSdzCbjJJ2VqnJnQtYHN7Z5r3ySqbG7w3rRen+Ett6PX9Hrvc1MTy/UUdb
+3s08C0wD0x+ZzFzqUXKTZg==
+=nsI4
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3E3D777C909A447C
+uid    Dino Oliva <dpo@google.com>
+
+sub    7ECD484BE871E4BC
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFhV2aoBCACyHcEuTUn5nVo1ODvWvgBgV8b6Aju4cVAhMNIvAdcOYf+N9Rgo
+Y/669/P371uN2hc4SxJeORBjHyzkAX2sJZQj+FwdvGl60YX9Zv/NQaTzC1WFMRp2
+rb0QGj8yia+WA+If6hatbZmCg87CtDVpzpPIZUzX4UO+DRQEhezflt9uZ4YrFoYq
+PmbL7znqm7/3kpenKrNoinGnzFG7wnOrDfMrBrZgL0Vt95zvs/PBTyE2r4GWCNms
+PH6n50oTck5Lif0EtnIp26o9+vgkVVAFcHLUDy2y90g67j137SNnYu/47FD/rS8R
+A2Y8wRd6lXXxI/n5Wyj+P0Vai5zq6BIFPMbpABEBAAG0G0Rpbm8gT2xpdmEgPGRw
+b0Bnb29nbGUuY29tPokBOAQTAQIAIgUCWFXZqgIbAwYLCQgHAwIGFQgCCQoLBBYC
+AwECHgECF4AACgkQPj13fJCaRHwthAf/SihiHP9sr4LRSw3TW9t1CuKW2e+DwsJH
+6BY7m64jENIKF2zXWuMkHzGmM9pVO6qy/hY610wI6GqppuPESaFOVBc4sp5i6A5+
+Z70ZzXVEM+rfjS65qAbz0VdaF6cIEcZrJ25DD2DYLMq9wMAWo+EqKyiN3OJ/m/3t
+xz4WECkgpAgIPdfriJ1mmkn0fbpG1Hc7uhwtg0EfcAc2nN84AyPlBbh6RMkKDFgk
+K2/zwsdR6t93JzexVEXRN7hiNqBu9rFPbyvXy2jtoO9P60vlF3OuvM3SCqAr4yYL
+l9Vlkh5ytoZW/XPMJMOYsullzk7q2zSKIOPkx/Si7fqKz4MqZzc7zLkBDQRYVdmq
+AQgAuTKXw+m5HveJjH7uTGdkmX37rkOX7Kl6cyPutq21tbG9cGhrOplTJN9lDoK9
+7km2YOs16SGVlKTEQtJ7CLAQGRLW1qPATMlW6gJ5+KAAY1GFej+DZOLYy+RjxxdT
++gDSIXt8kQwAlETwSNgymp53TrU1dDGPMjod0AfFbawJtxp/gaI/Sb+MkzLRS+NA
+7g1fDNAsy6twjxwmL5lvCUO+JMtlG8vXlIoiP7N6hXk4PYzYFCI4JR1H4aNhIBk0
+4MoUngJj2WNXfPJYQef3DqAJrzaQpuiCdQAq6F9GgldMHyv0ujHpA2JBikcxlR1r
+dUdo2Yqnc90pd5KB6IO4TfN8twARAQABiQEfBBgBAgAJBQJYVdmqAhsMAAoJED49
+d3yQmkR8SNoH+wRfWyXUFPVDNN4UrAi5HEY/Ca10AGuREkzacZSVz4dYtofNOAxx
+RVfOAoZr1NUECNvWgyxIZ8ZkeQi8fGN8uS3becIVAWmkji8l9jDRpC3DPs/g/7wL
+4A5VGzvp4GdD6jHk7KCVPiEk1DzRajI3sAntmpTKL9LNB9LpP4NdWiFA8TPMEHIg
+SqMuv1Jzycngjd0Zr9joSJvhIU+j38FvL/F+l/ooa7TKpRv6f2eAlyls0K1V9bUh
+a9KhGsyjXqolyxHZ25Gc3VnxEKIZS6R5QrxVbnXPmd/SV6MI4fBSrcrNgR91iH9X
+r1elbwcAFltomc9/3/7xXmHMaEfaxJnY5mk=
+=geV3
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    02216ED811210DAA
+sub    8C40458A5F28CF7B
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBGADx6IBDADoHin1LGQ8dhnlhfNCBZ3IyXS2NpR1VjmYtHSlh1hGsPcmHuwo
+1mLA6JzXF7NuK3Y52pbTr6vz9bAap8Ysjq/3UJeiDbf7FvmO5xAEVUhrpc7AEY7G
+Wygi+HqK5OaNhxUr7OmHY4N2/NxXiYGD2PNU3mXkOszpQJk3yVKgjmGnv0zbTpn2
+wwsXygc87nG/h2R4YQ80m9UknkPR63vRwPnsTwovG9CAb8RyHq+6P81vKE/U5GUJ
+TzV1BDY95niypsCYja2QR4Gi5TKlpsUjT4sT32l6/CqOhcpwO05pTv0fvoHDbDx6
+/gHivgyVUyPbQzUwYfMYoINePOaX37okHQE8n5QPPx6HmXfIhumKbXi6ppVPjPG6
+cB2Lq/F6UKHlttiwWgSIiLDC+UbFCVvc41Lrydbt/2eXoBGxWbU6DUSGnefKymP3
+c3IsgdzeP11tlfaxLVz60lomXMeyyXD41QzeuyzUNvoSgiqSE6BO9EqeCyk1/n+O
+Are5EFnyLBjChgkAEQEAAbkBjQRgA8eiAQwAuC4Z9laL4sRX8FTseTzd5/8AqBKk
+gtrZjW5onrse1hWpkjeB42qfhVrfUorkpGY9N0xo7jZT7PhXuOEB1WRcJPHA11Q4
+166WkHRDv7IwPGAQr6LsJAAlZYkV2d3BXoWoS4ATCH1jyXaxKT/jNGBazs+Nqprh
+ypL6X2xOIqKozehjTMfD1cFzFzoaZvD+G9qdk0w7qikUIla0Y3ADswtMLH32mszw
+9g0ddFSimmWQ8scVcaalt9k9ATX7zMJKmYaYi6fWsH/Le13DhJgQMjjh1BeUguIP
+r6pRoBZ/5xJxJ7OKIRk4pk6h7BImGMKTCONICf41i4kGsZMoRb2XvLDgSNs9gYKp
+N9+J7TYTeqofBxxQLH6cVplBPoNCkJun6scYJLWAepr4u0K5RTnU7y9iigiTTFeV
+xbSjuxIEzLk9gVKD1hsbtkLVmkxMljqJG5El3I7qu7eM2c1ufo22BFjHom1CmtWd
+oai56nxG5zv1WDsMRJukaXbDwbpSkb45rj09ABEBAAGJAbwEGAEIACYWIQSFaclc
+rcUIsJ/pDzACIW7YESENqgUCYAPHogIbDAUJA8JnAAAKCRACIW7YESENqpGYC/0Q
+NoVAXMkCa0Iei/kGdzZNLKpiG0nZIJGuml9T7eMyp0QQXzenOahCGhna4QQvSBER
+UZb9HzP/0xY93C8FEXv7Ns972XdeOvYjpOLG6euRwWLD//c5Ah7siSgUJ7CFPBHj
+r9mnZXzYjhvXT0eJlb96j0rBuSblG/NXu1oEJPySqP7vkK2ZZsHNoGfSoGlGtush
+YtUP568KMzz4LsnOfSLnkOc9Hh0qydipY+ocfQQhh7tLUzFsMbG80yWw4/2JVicT
+nTosdl4J9WyI3Xuqa423XEAC25dS0aQNeDa4lpfmOOyj5ViJISdutlVC3zmtkpXE
+xUXqb+AcsNDOuulUhVjw7KpKX7xUXJM+LSg57lfyGHiLejDHvPAXBSfzFxT9ZDxO
+92MhvR7JqP1Z0SvZ/yZ1RAidKaNJs3o1Dk/WbuxnRYjyf4URhfUVeH8tykNDIMJr
+gY4uKjJu0S9RuzG1PVw85w5f6UDZlJ01gGvtT81JFrizhvS9t0HoPbDcDhG5iVE=
+=Lmqo
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    7A8860944FAD5F62
+uid    Sebastian Bazley (ASF CODE SIGNING KEY) <sebb@apache.org>
+
+sub    C189C86B813330C4
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=Q+g9
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    66B50994442D2D40
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQINBGDoYisBEACqUDZnT4h6ma6XIzdC6KR++uDbR2VKdhCuv0Og/sHEKkm6ZbG0
+OFB8tAaQx/WlsoQyf3DlLfUEOGDai875Aqor3fbM+E1hrZbQNfsOySKEE52k7PYe
+0qGWlnAzINuQaEuZwNw+pjZqPraMlwc/hwzJB8yFNHCv25pCFohK7KXvFGr5Fc6y
+NHBp6pM3pnDQ1kbkloDr32YZY2LdrfdkRqwa9STNMcZtM724aaInValFpVGEHolF
+dklo9MIsMI6mVHlxi6UwFSSLltUfTXGYY+rt2Q2sLNnEKzK1GvVhK996vrNWCvpr
+cdtbTzGE3WK4f2knhqzlaX99OLmkM1ah+p2EkK7HgWM9oEO7SYpNxKe/F/QfRNRS
+4W0aokPsEtfKCD7vQ3cRWQXdqFwvksilv+b6pcSrwfAsaCzVuhB3lcIra4MevJcH
+ZEbPrfGMi5/MIVtLayglLHSPoZtjQBhlqo8w3nuADR/aFlIUZ6NGOwaz5yXIGVEs
+6E1wiuILRAd7ecJ3Zyr/URHjawfHfKMM2tNCJKl48cScBMY61FJ1EmYzwhDw+at5
+D4pCk75eM5/t6VdYQ1cDWm7J3LGXEANMU5aSZMqgVnb4SQEmRxkW7oq3Z+GIkQQf
+Sj4OK6Oi4cUpM7b0m7Cbcsoqb6nD27VKD3J5KTYEq3e+78h0VRjhoi0Z+QARAQAB
+=UUB8
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    8E3F0DE7AE354651
+sub    D3047B0BA4452AE1
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFMnpeABCAC+vckg+AqDG5Sg+GKbA5t2knu72aD000Qle1X//SjTvPHz0L1v
+rUNzwrqlmah17usczZHOoOCaGjSUFl3nPmBEOlLBh6L4+e2Av8PSbP0qUneaQVgi
+TQfbNgRB4v4H5dtKIglK1hZwCeqFazuRuFDWLHl/IG4ymcMwy/86y96BJKWrW+Oh
+4vK21DF/BRhyFGaIGwN1aPYRofy3ERsUfwe9WiPXXuYb3gvG++QuiS4V7UJwcAkx
+5TGukoatI4T1PVmZPk2zmeM2pHQRisHAScRt5YJ9bswgBphk1xHoENVQ3BYhzrsu
+a3hFDY5hO+UQiT+eIE38noOuKuSbRalSPelvABEBAAG5AQ0EUyel4AEIAO6MSdr4
+Sp59Gb+J8t5o5g+f4jMJPm2v7BkJzldN1JISoEWeo8iyCOVcM4D83coihMfN5Nwi
+7Tuc4tnZH00+XxYFkHMOLMPtCE7l0Ai8mVhFqE3HraCVnk7gRzNCyXeJRu+Q1TSN
+4QbiIEeonBSoGsAYafkAx1evBJtGmrDv0Y42NdocnACyRPZD0usxMARk2ZwQaqN4
+Ih5pL2MGXqMeo6uEW8iIIumnkMywXyZ0jbAcZSs9Smi3AdU8P/eY/Afpu4nyYVAU
+Sdm79eMjcBHRluvuk7db3mMzQPAepWQSYOgsbWq2BS/0rMq65M+uWo9MNpP1ZH2w
+G87qh+7nFIk38h8AEQEAAYkBJQQYAQIADwUCUyel4AIbDAUJEswDAAAKCRCOPw3n
+rjVGUXwWB/0Yq3UknzRomC9wi8sCh9Nv4erqjSP/JSoNx+rYNpwJX74jVmUA4u7p
+pzywCwSFKyE2L6pkgKw0y+KfE4cWsotlfO7E6VQQi/+cCb5OCxqf+gOelupuW4Co
+MSHKkPWXI/dhM1NMIW77+bLiiHfaOW3Wa9kBSKujiuFSp9tIq2gjTf/2rKQMbywK
+szhlBICdvYzji8t79C7tAJ0xNgZJJv0QHP+5MZJfMAARKrvtRP0I5OB1HYVJrH0v
+RbO9Y8PoYrPxeR5zQYxAyt36/DE+PM4CpEcCZ2D7Xrtk/GKe3Y/jU8FBifEebuhE
+HdZk2xusuOEx27cIovRPHwvLcgY+4u3j
+=oNWb
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    A2115AE15F6B8B72
 uid    Stefan Bodewig <bodewig@apache.org>
@@ -10026,198 +10799,244 @@
 =Td5q
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    21939FF0CA2A6567
+uid    Alex Herbert (CODE SIGNING KEY) <aherbert@apache.org>
 
-pub    A40E24B5B408DBD5
-uid    Robolectric Developers <robolectric@googlegroups.com>
-
-sub    6A2038967E03726F
+sub    A98BD25BE464EA45
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFRdA40BCAC0zSALsOjfjr+gO8q+HV4qPWuIRB8S4z//jCEpKypyCRR9sA0W
-IDHG6OqG5fO1bP6VsHvSx32E8YUf0bi8eGgpKj5gJ9jmausRvRHtUHJ0pvZRBw51
-z4amYVr+NdVoyqLXBgBYeFlEYI04rQH9W8r1bCk8RKGJFNvO6ikTN9opLRkvZ7A6
-7VKlQGMd0sSJ3MAhzKUkM+ZWeCb/TG0xSrhJHcrFUORdV5zaX61anOTSst4HOTuL
-ByIZq1RMxKP4UJIWH2NYVUC1Bdn5CbY5mJysqQXjobPwG/cNAyBjsDBCh2VMnFY6
-geCHL3BowNd8gHUr0wjGKOipRmyfOJoTspMfABEBAAG0NVJvYm9sZWN0cmljIERl
-dmVsb3BlcnMgPHJvYm9sZWN0cmljQGdvb2dsZWdyb3Vwcy5jb20+iQE4BBMBAgAi
-BQJUXQONAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCkDiS1tAjb1Z24
-B/4iAEYvEFhBGjOuXhAPmZSyYyiHWrehY2yZGKmjPKoDKxD05PC6lCNOsdYn5WQ4
-sO32Yi2MbCRpOdphJDJORuGapMeEdrbNqAZ3kzCyMEI7AojH70B7/g99bY9bLq4c
-MYS1udCVPBzfNNSZok22S54fJmFg1evzJbOynZnIFKAhSWL1Ns0zQ9RXQ3gddhAF
-zE1ciZTwmRwdkObd/oxjs/g5ps3VuB25b88+WxGRaZf1vlZN8fNvK4AEDhbH/j5+
-VjcI7R5zLVsYNHEZSspckuoxn+1PNOKDZvhrSrDlqf1EUSmPb4j/nrW07c1p/91/
-T/R02aGSzbwqbbI17ZuxYMU3uQENBFRdA40BCADhMeWEVcUNBLRWDatdlvc7q3jZ
-EyejhSl3zw0I15yhoBbuW+ZnOTG4fkIr9SRo4whm2NZ7eemEnQ6tuGhVXUqPIxWA
-wBteY0ZBhwNGhMql+IIdOE9WIo82yV4gj1Lo2rjxaxG4Rd7FQnys5f+XyFZ8vaXp
-mpH9VeFjc1Ls550DUP8iVvIoKI65Ve5RMZc9e3AeP8FZqJpc3q+Al2f/FAO8+tiD
-/J849aP4aqUKiwvHk/nxle8FwepQyvXRrSpFNz2uK5bgIXQrxgcKLPjl6s9l8SKn
-Twg6ok0EcJjGuHjzCeFNp/WFpAeJAxmAZ/qUbr0TBp6jxXoMc/RqdO79MPX5ABEB
-AAGJAR8EGAECAAkFAlRdA40CGwwACgkQpA4ktbQI29WOzgf8D487fhQSsH87OJfp
-oSPf9p2wGzgNFAc+sb0gUy8rMmc/xySKGfZ2BZFT/CAQsOzGZ/KSM3og+FFgDcm8
-GWpSfZNymXnmM8aCaEyNj4arENxwhU4BEnKYFf8PIDoCjAqBbSWuTa2RzaWlawEE
-g4hItheFmw/My/tbo62N4zn98IYU//50PNDuDb1lvOi4SVFglXRoM+jS2X6E9R3Z
-7sYceClr2EDN2k+RbvB6ngOiu52FvC9ZZPJnfK9/XHFtKcQ64yu3pbeXwiuqyr4T
-SpzGJNm7czyVylHZfvkZYVhmZCEG9xQ0lzHshaXmkfqi5ZJMEtXwNP1dWIMhIGgY
-4aLehw==
-=LRPz
+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
+II4Pqx0ip7s95q54JSpekQZ65g==
+=QoHd
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    A41F13C999945293
-uid    Thomas Neidhart <thomas.neidhart@gmail.com>
-uid    Thomas Neidhart (CODE SIGNING KEY) <tn@apache.org>
-
-sub    8183E80D264EE073
+pub    DEE12B9896F97E34
+sub    9A716F957BC42546
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-25lhPkZ/FaSYF1lb13TNIRT1q1My
-=pAbP
+mQENBFAxQKwBCADJGPv6pmFEq0SDwAKESEgCdnXycbR0bNXpNa/3VGboNto1xKgd
+AQ/sI5x+CmN0hpUjklEwff6QIt3MlofEMkAzSfRmTobhJTK9W7r4+p5DuhJpi5Wz
+ITdbNCMT3Cvp13rRE+dx9qY+WFQmTYPf3gq+C6T8Q1i35ePNlCTN2RayaFxxR77D
+W93zKZDdd7I1qH0Vx7GGcSwBgBlEB8jmhNAkz/zAhv53S6px3ZttqYYmuwRtg6Fi
+i/u9VoDR/c9tyUq8L6oAUtg0mo4CP/tfUF/uZnibshEsLzbRP961VQXduhn8HcRp
+k6QPTj37B1vsNWJ9U7XXJ6pYnkizQo7sl5XxABEBAAG5AQ0EUDFArAEIALyNR+z1
+eBBF4S+dOEWKXz2ANmsp6RRhvR09QeQwNycVdbdEXpOiSZUCAkw/EhuJWmHBngat
+0KBO+7CIHyQqwHnqyatizzKXi1OuaEhMzPsQMwPRfYyWHgN0aklc5oOzB2RbSJN4
+et/oVvfAplVSjgR0v+56+qXw9TFlp4kxqFeJLycZ+5ImKQ+XclsBokKuE7cjeF+g
+O5oY/CFHdkxD8d+cLF8FSNUFMypuDQ4IH9zPYGkUJqsb2t67iMyxi14RqyN2YNqK
+JcwxTL42VBlUFlTBoF2Y3w0LNll6pR2WSNvpcj+5/uBjtY1qAj5e7yVts+d1YZsX
+7D76AV742RQ31kkAEQEAAYkCRAQYAQIADwUCUDFArAIbLgUJB4YfgAEpCRDe4SuY
+lvl+NMBdIAQZAQIABgUCUDFArAAKCRCacW+Ve8QlRhFDB/9xE/cXf5fVaLa598xL
+muXiD9U1B04dPdz445/chdDS9iGWBB+5QVvAqv2Jt0hyPN0+n9Mk/4lLStEEL8TP
+NLdTBP1JRvVWC1c+G3kTJq05Abj8CGFFm1UZhFRwCTJ+vrv8fSb15s+YYxBLIUdl
+tKld6OupTHm8A4XJQOhYxd5PHs72bJ3bXs4GmPLKD/RpYmXYJ9EZHQHKnrhZKJ8R
+JKTM6sxBrgdVeI1K0ekA0o5HAVpNEXgY1gG8Pa14jqK0iwlcI02ntqeJkobvv1wN
+vh+nJT2wM5QyLH737kdPrUdi63PfCYLOEHYhI6sFkzI/DAtI/C3wmHtTuRam3aLs
+Rnb7GNQH/i07ndoI4trmUor3X1JBbcjw2BVS+idCtML3jhKtziwK2/kz0rJqBQKa
+Z/zxgEfwkRPqhXLaBW8a1G/d1mGphazHqSaDqylz07XqR31ZtGCc6256anaVbWaW
+9HXUsU5ADNrAK9PdD0EibGB8YumuSTtApICUqN5SVz+h3Mi1MXVsmbiVSAZPzLTD
+0YRwzPJ3jiXIrKDUmZMM7oWwGx6nzW++tW8aKyLKm7x1/y8g+XHvySQiVOKAvvxj
+yPStkEW38Rls5nucpyLzLjoA5vlyIcOkeKCy2jlUmM56YrAIWNn/eCRFPHMOY1DO
+B1nUXMr+2W21xZO+/sWrEEysY0mdGU0=
+=uzFx
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    3F00DB67AE236E2E
+uid    Pete Bentley <prb@google.com>
 
-pub    A4B1A03FB9C2CE23
-uid    Pierre Yves Ricau <py.ricau@gmail.com>
-
-sub    21200D723F53CE38
+sub    6B7EF7B18190F4A9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFy+swoBCADGyV4k02OjVCrziziYIvIO+qDm8Yqxt4KVd+ISw2DvmKVcP7lx
-z5WVGvxVdAl+Xy7FdcrIJYFCsYfFFxPz+BM6+np2c477HkdIcDwBWiHEoOqMehax
-wlEBhJdJUVCjTKvpMgqs4/a0PddNcp/odYx20HzDAK+X6/EgL1McZk03okfMSn0R
-TUvZeh76SbU0aQRXdGlSs5IUtywn2f+5jUNLht/TMd/bbAXWA2EQo1UallY3+dj8
-I/Y722X5Yu15rLu8u+pcVE/pMO9CHeX78mgPU2xU/xwDSGtU5lxwNXnYpHMUdFB8
-YtG/ofDtZR9+9Dcjhb3xSIv6Vlui9HgOgvctABEBAAG0JlBpZXJyZSBZdmVzIFJp
-Y2F1IDxweS5yaWNhdUBnbWFpbC5jb20+iQFUBBMBCAA+FiEEucyhPFnyHGzoQajR
-pLGgP7nCziMFAly+swoCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AA
-CgkQpLGgP7nCziPuugf/fDa86INrKZ08fCywB6oMcLEi/sNBbaKaysbp/zmmANwk
-nTWrIH6fqfQfkFdBpA4roPrjCNqQ3gdpjDhB9U7IeqpUzzeM+WEWVOlkA098MFrj
-ToJuxf7oCMXCPAtW3S+tGM1FdIFtqzoE3mdbhde/F0ppJDIbuAZfjKJclIeGj7eC
-6QbLua+IQeDKuQ6TRuFCc6vWl38L+LqqmNPxfw7Uta9W7CrP5oUYQqrdIszeVWGV
-ivK8cyLltXgIKcWJmj6GLsJtIUuXAj3kg1d05HQ5dpIkgaRN7+Q9BnsTcdnc+R6r
-nprvl+/QNk6XeNIRrPKiv7SWf1gYWbi4CpthjNsGy7kBDQRcvrMKAQgAvap3U+0R
-j3ZFSth8u9AnCrJrClbNtysMEYmpK0JgiNpaCDbw5lPv7yJyTPjnGTLSS2qx/+C2
-2Bml6b7lV2JgCXA54p9sa9Jpw5Mili2rx/62M0VmqMCNZi0vCxBOlj49fSpyxfKr
-IJ8eNwXd/XbHl0uKm+AYCJgtmBE4+ErSb2tJ3iEPqRBq9vYXnm1LKIZVKHzZr1Gw
-LS039UfGBFtlChF7ED7wQ4XuODmz5dx92tkI6svqvOuXZaTP1PDTqu8l5+E8yd3q
-JvonloHroLKbTDEuCtpn4jDSN/LZ1C7ekRu9OjL4gChvs/TJsPwkVka/rw4OWEOR
-KQfo2iv64g4NjQARAQABiQE8BBgBCAAmFiEEucyhPFnyHGzoQajRpLGgP7nCziMF
-Aly+swoCGwwFCQPCZwAACgkQpLGgP7nCziMSkAf+L6oedz16wE0F2ZYc4UM+J1bf
-qS2HEesB7YGTwnafi14xRQorvFOJ+CxfyDnl9HGCbfwqie1wO7VNQukhWl95wJSc
-Or1Nv3XPnHq6RKpBQrIR09eggfegf1N67HmorYRkfA25fwe9KmbNAUfPiKa6Vyrx
-6htiUIK1V7ArKVXwBL0saatdOnwrxOiHKBbxyy2jyZgt+rHKNUFmQLiiIvqg+krh
-sSksRMYzjG3Y96Wm0K/IH0XcuiQkVaHPOYSEqODz+miiS/PSqbw+WhfSNtdKfKDx
-OS6mrMnFluqthJ06aXBz+RmXGPtzJvKnI2LN7lwoGXk5zynZK8AXpTOpWED5ow==
-=Ig1p
+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
+=ZR2N
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    BAC30622339994C4
+sub    FC9BDC25FB378008
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFlMExYBCACmdTDSXPwSJeYbfYvHoDl5C7vx/0+LOTunDGJN38pNQHYQAZnv
+Gyoc9ZmChrhLoim7z4ILqmNo8eegknepQ3dGdUij4NVIhR+m+8irayTbsNHvo3UG
+9y7eM5tTSjyNYkyk5fAVuT7OhzIzMA+qtc3GRVxNYRKnaHajt+pOSqr+uoDtMG3n
+6eAMHCAnhgh5Nd+dCFcNT+syl3zCwolA1wrzGxxOaif+xi5wwXjmF/lAt4PDIuDT
+etA2/AqPM4zAC0BtC0iqVgVypjFV3EAexm/g0LNMiG/M/krzwjPq5gf1DY/57jU0
+02FpKd79HmR7bHdc4e2olEf9NlHxfbPXDDsHABEBAAG5AQ0EWUwTFgEIANmMpV3N
+K8aLrLgQTyh5++det8C3D3T5tkEdljHOuN31/qdKNge8H6uKH8zXRZsj5pd8adpW
+kD4TzIMvzIwzizsGw34O9hf1E2XPoDqvQr39p1sovX3PeDvRJY/7JFNt9DsphVc3
+xWQfNkC7JdMPa6JRiFHd3ynfbQ+wplf4tfaDVn1JXAWp0NSGgMtXfn5i19hHQWjm
+RNAKNQLdVn8UczI8XdVM7bS4giDpQMukSyjsjgAo466iRK2+8f8BwIRe1JRvF37B
+dnbvTg/dzoi1/E4ukwVJD6YE2LlDwzdGno9KxPlRsuY3nnheVgjbrGJ2XKRJkIk8
+7cMGh41VKw6L4usAEQEAAYkBHwQYAQIACQUCWUwTFgIbDAAKCRC6wwYiM5mUxEiH
+CACQViGOHi0BoZ78ZJz6L48YNMx8fSdSv3YJ83Ih1n5DWCJgrDV5S3/edYinkoVI
+0Lusy3MdftRg6OWaYOuOTf6MYcddO/mY363jiMByf9Uh3Dqq4sKqVLRnZbAqgD1o
+dRoj2NkEQfgEH/H4JRVrxquzAKoWwJh3MhY+kajYJRJyWfc1/Bm3Bj1tcMGlGeIQ
+fgWheeMg3kxrxJ9TXPqVi6VVPaPKIU5i8l46S+Wg3uvMs8vC3XzOIvhY6cwguJv9
+UkjZwGDSI952wLqnREMy0gFZ+OAB0qJpYM3nDEekWZP38G80kojnN61tZjRThu9I
+i8/b+PwSW+nW3EpQZdLqZtOU
+=2H2i
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    6EFF5EF5523052D4
+uid    Thilo Schuchort <t.schuchort@googlemail.com>
+
+sub    E2F840B227D3C024
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBF2ClL8BCADs2bbaF1ZMiMkTUUb59NTlyAbOOVWoIh7cnKeNjMWBUTP0kLFI
+XpoKiyccQLP4rFdbP2yI6h+LJR0Kj/lJmKpCaAooNlooxfIyPUX5TMvDTRutzwBO
+c38DafLBAJTUl5BMYsbWTGSvmpC3/qmZ9uJAQH6BVEQxmGNO6jpPsgi/YA2AhrN9
+w1F5Pm5Capc8QQ9fEj+AohXGtpOA6aMhnPLjJ45h0VEwYskRIva0AoqbM660YVi7
+HZPNEqspOtmCrR5yzvRmlDmQQ4uKp4InSQ2Sz0OMw3G9cuZy5AzfAL+/SG+iL626
+S1UeIGAjsCu2GGIFDVRuj4KvfmUZz1H/US5DABEBAAG0LFRoaWxvIFNjaHVjaG9y
+dCA8dC5zY2h1Y2hvcnRAZ29vZ2xlbWFpbC5jb20+iQFUBBMBCAA+FiEEKk9V2c2l
+h3cx++dGbv9e9VIwUtQFAl2ClL8CGwMFCQPDI+EFCwkIBwIGFQoJCAsCBBYCAwEC
+HgECF4AACgkQbv9e9VIwUtTFBQgAt+ZETCausF/UT43FRFa2Pkp+gXnuvY+pSiiS
+lqSP7BvVOvTFnYtljLLufK/O74/MJqGYbiyurNA6Zrhe3yMjQqCQlYGuGBeo8Ssg
+0RC+Z4NJPEyTwrx5XYYLaDyeRMcQwV2pH6sWXc86TZg+6gBWBHrvb1PDBFqd89hd
+UY0xI9Vyc4VWTpJCshX9qA+Bjh0xzmxie7leZo7ejF5L0ymPuROZz9VquxORHyE7
+DAqaKesgQVbmOb1Lc5Vpdy70IIVlscyLIfFycTra31cnxPZsb6Iak6sed5VFM5pc
+9qYiLsNk4FyzEs7w2nmlDjE06jmWWY0So76q2IddcNYeKSggV7kBDQRdgpS/AQgA
+0x3w8TNxkGuXMEXxDcRIXQ54KRF4upy8P1exrJPenVutDAvNJeHLxc/uwrAfPGcR
+/DIJCWLbQv0T36WwjQSpW+VBxX41I5/YRrp1BRqUtT1r9Fx5KodpG+c0Nsjs2qSu
+ju+/9RI5Tyu+fO+bgYfuOfPq1E9H7POHu33Gz5Fap7ZB7VmRPw5uAOU2ev67Qq+d
+cfcKsbh0TUwkErGdzp5HpcspEtHxoQCpc6ZX5Ttoj5FS96vN/VIOnvwgVjxNMEme
+CjwHkcXJkkcFGwkJC2lpZx7y/Uv5RPjeKLoJoKKHofRutL723mGORe/uj/0pYfLy
+gfwtaT9kmsWZbZwNCrCuQQARAQABiQE8BBgBCAAmFiEEKk9V2c2lh3cx++dGbv9e
+9VIwUtQFAl2ClL8CGwwFCQPDI+EACgkQbv9e9VIwUtRRxwgAjqQpC4OL0igysJgI
+xcSUAdltJ080Po9eUcrxszIakH3fYeuN+vtKi37NbTI8BxltbXDZC3JxF2Vqxkqi
+6ow6ZTk3NMS0R42DvkBjO4DGvpIF1F+4rkiF5+w3CJHHyEJYGvBt4MGQ2Ivrp1rs
+C/VKazgG7Bkl160msMq5TMUAvVOuTn3pMljVUcsQLDxK8vAvaI2iox3dOtWj0w0r
+dc3OWmufCl7W/RDicP1Xrodm2QrHZXftDEMr6qB+HvkesWCnc/yqCuCr1UXqsTsJ
+5291U3pZ0RCl8aTFwloSctwwQvGxWxT4uXD1beqJ1tGKyoB1kzhwXnzuCBrzCcmY
+h3cm1w==
+=WIxE
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    5ED22F661BBF0ACC
+sub    31ADCD8BFCB760B4
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBExyNhsRBAC/W5cMapoP7NUn8S22iWG5bPw0bconApJHP4kQdT17gT2JgNJz
+BmuGWV59ZOGQkc6woeFKc1s6twlsgIL51jMeVOtgLJRGTS4So2hthNqDcgO4j8Lm
+yXpqbTkbD7/ZlRzL2hhedrMz4NQOZCvsZpQ1RaCDrr2hxDq/HhD2omGdlwCg/9Mt
+JNc7897LgfCMmtPOvAFt+rsD/0K87nvW37nlRqHdEtzvwUlyLJmYxdW9hDr8tm4Q
+Y/8rDvNFlhKV/yXmxQuhtgQ1qpBo75dwD86aJmzIMIWM0iei9Ecfu2DsWiWvArq1
+heDjMYSeQl6k37cmD59afo6e/jQmg2/ALC6mRf3912SfmqV5spw0k+NYdFxAnbot
+9jOfA/41shIdZloZ0aDcJDTNe22wFFh2sW8RwWtJJO8rmOCgh3MmkPn7LHPI9idJ
+bSdD1dRcR7UTyeigEeDTu0PAKfKZutc91lfcIGSZdk39SEEhUkL2JdPKVRBotiZZ
+Jsi+NxDdsprF/yQtr00XSGJYzh2TW/Srnb5nZQm2Iyokod3M1rkCDQRMcjYbEAgA
+k0wzZq25ZX73DIlxw30u8Qmy0HM2cVmRe45Pj857FlSQsO82YNPOMxSkACCmHAAT
+3pACuMCf5Z0HO5iLbHrxegFPGWLkNE3CJ5yga1zIiFgzNc9qNqWtPQISJIQjABit
+4SseMY8i+3t6A89NjWc/AOK1BloHdjAmtvT54oYtqFYCMlNMtCLaR6ioSUH38qLV
+jXtFvmTY4OqokNaz6JXxzTymyo8gJff9JRpcm2S2Xksr0dLNYm5QwJEN7KX4E8iH
+8Rz8TWxfAhrf0zn45D7bgHOk3JFPEXzKGV1l96Tb5h/yy9wuN4JePyXDGfigub+1
+grV5DBKQ3srkEwy6iwAYwwADBQf+LXoUj24Evhce+OJ9ZCaPEppmV6xJ+LaU/9D1
+hwMkQ6CXc0IH3oeNGAbbOHhXM2GymRfg8nmzbIHVueTP8ISeO7Dc+gMr7l7l5kB1
+W7IstMlS1xI3Vdg9D8HaPJa5gB3qEGrIPdDP1KRRwJflw+DmQXB5jOj4vW1xECqX
+0bGY9XNFFaSMhkr5XRVT3xgQ8d0wuCB9otuUZC9pxmwFiH2w/FvKzMTKMRwK4IRO
+n5FPhSO2VBHBnlvF/mSbED22jjB7DngUC4rF0fE1MrA6DDJIAKrsDlk0VI7x/tIO
+YbkEOyypDgBf4JLrxgrI6jn3iCRdmi51hS7dtXX3ZIkmDVJrOYhJBBgRAgAJBQJM
+cjYbAhsMAAoJEF7SL2YbvwrMplIAoP5GSTgknFm3ONZ/W59iK+l+XJWhAJ9Bru7L
+aSKZGs7jwqXqGNrZ0ZzxNw==
+=HDKU
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    A6ADFC93EF34893E
 uid    Tom Denley (scarytom) <t.denley@cantab.net>
@@ -10254,610 +11073,284 @@
 =rYGl
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    1F8CF885D537A431
+uid    Niek Haarman <haarman.niek@gmail.com>
 
-pub    A6EA2E2BF22E0543
-uid    Tobias Warneke (for development purposes) <t.warneke@gmx.net>
-
+sub    B7D9C5C3EEC4A9A9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGNBFJQhigBDADpuhND/VUQwJT0nnJxfjAIur59hyaZZ3Ph/KIgmCneyq7lzYO6
-xa1ucH8mqNBVNLLBhs4CjihBddU/ZKTX3WnZyhQKQMZr3Tg+TCNFmAR4/hnZ3NjZ
-N5N5gUj/dqVI2rIvypIuxUApl88BYMsxYpn2+8FKeMd8oBJLqFRJ3WNjB4Op2tRO
-XRWoxs1ypubS/IV1zkphHHpi6VSABlTyTWu4kXEj/1/GpsdtHRa9kvdWw7yKQbnM
-XuwOxtzZFJcyu0P2jYVfHHvxcjxuklc9edmCGdNxgKIoo0LXZOeFIi6OWtwzD0pn
-O6ovJ+PL9QscMdnQlPwsiCwjNUNue20GBv3aUIYc+Z8Gq0SqSan5V0IiKRHMJkzd
-FAhnpkSFBvHhPJn07BCcb1kctqL+xnLxIdi7arq3WNA/6bJjsojc/x3FdIvORIeP
-sqejhtL8mCBvbMAMHSBrFxclMp+HSz2ouHEEPIQam0KeN8t1yEqIy3/aYKMzHj9c
-C3s8XOaBCbJbKpMAEQEAAbQ9VG9iaWFzIFdhcm5la2UgKGZvciBkZXZlbG9wbWVu
-dCBwdXJwb3NlcykgPHQud2FybmVrZUBnbXgubmV0PokB1gQTAQgAQAIbDwcLCQgH
-AwIBBhUIAgkKCwQWAgMBAh4BAheAFiEE1HfVGBLmkgEdsR5mpuouK/IuBUMFAl+f
-HewFCREQdggACgkQpuouK/IuBUPAjgv+IvGD8arZP2epxB10nNxehgdB3vVGRvCz
-AWyw/d56KBwGN1czmlHINP/Ejfh4bRZgFXILISqcf+8rATvISsCgKzzfluOfDuFR
-puqZisrlaqEpDqUGK2R8x7kxARaB2G3g4dy6xyJZwv/5dfFPQJ/aQjeNkRSoXI4W
-WLNexZB3E0Gx9a3F32Xvr87vu9GchsoftxQft9joFupRg+kCipQ+w36D9gWmFXtj
-pYT3Wdrm0AcP6lezq+SpcwVn3+DW79p0/WOLhRr6NNQsRBIuM5nNIbCt8hnj9ule
-PZGctzwCTY8suID4Ru18NOiU8NKztoXII7XRloB9v5ezwktKoDzwTBgwm2+XM/vv
-GFlB09LaICdiuPQaiqSZbeLKKmBT1hTEtEHiPdMld2Hlji/rVYS3Ceiv0YUoOnmo
-AAEmtAG7ghpIJxyVtWZchZ55Hrb4oU5AntshrwYMWNRe0toxjQds5Ds2I2lqkjeU
-paUjQXEmPDS1hnckKAxI2PiOeifiLljxiQHWBBMBAgBAAhsPBwsJCAcDAgEGFQgC
-CQoLBBYCAwECHgECF4AWIQTUd9UYEuaSAR2xHmam6i4r8i4FQwUCW5n2GQUJDSpo
-eAAKCRCm6i4r8i4FQ9byDAC6yPry/EBRyJgpWXgLca8Dy56Oe9XtRA+kuAxq+c3q
-GmLy8JdBYxWeBI/dnjwzU6jCLLnY6eTigjSemHZRMPOoyxXYF47LpaoWL52JDi4R
-7xft+GD5Hy+tbDlYW5RVeMzR2Okg3XpvTmsYlcgSr6HCL0L7D25tpcFZMZrls9LN
-z80HetFk4LrR1LvVL8GpFv74xyWullpQU2QwnwXCzUpsXa9qOzwZltNIUfs4gVNG
-KhzfabYmMtlBAXzpi20bRWmJY4W+vGJKC9yWL1L4iu7LrIgMedqsKoMrl4Bg8xKE
-JGU0JEHWgfRopSr0FccP1bxWOaoJ2iN/v3Lifrk0T24vBA9cbTrnQmwrbNftJBLb
-7ccgkvkaFk+8qBe5t/OFgoV5zvmJ6xNEojpFnOtLfrPVpu8b7t3mcGVq1jQJ8afa
-8yIlQrLsA+ubA71pqgdv2ZhoWvL3R2wyxZGMX3xefqavJNxaziHGQorddrg9dyEO
-0xqXKDzjN5vuDTgSJimmZiGJAb8EEwECACkFAlJQhigCGw8FCQlmr/gHCwkIBwMC
-AQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCm6i4r8i4FQ//CC/oD2LxmXHedlqlKl5WU
-EEFoXjDRpcSnfOTFdCn9U5bpBxM2gtlxNB4890TVga6C9kGfgkf9e11/ftdFQgHQ
-2LQKwpRaPOQdfk8Ek/oONmO6x6oIYXrVvY57xsW5AiFHUtPd84NJBoAyTePxstrJ
-TrFo0KQ8wX84rsU2XF/5CRCUuvx+Xomv1ALEed8Ajf9dhY85UTwIWXFINKwMTbNC
-neoBeUy3xugYEYWZCkrIk/iUvwA2pwqCwzHeDRomf1OTwW3VZ0U9/cfFyt3RgkU5
-goF55YOIpnKAjSkyygESaAs4kPrMtAJ6gy8lKsBEpxQfJWH6c5Q6MZn3RVb2S5Dx
-vlpCeiKIqnKtX1DnZrCZntt4Dwrrt4aFemLJ7+iaYndbMun3mAxG6Nqm+CfEOicG
-uTmFS6yakutYNOxJrxtz7yEIIt6yr5T3fQk6LhczhjXpVlvExPutlIsbtVZSsSlE
-lFV5uuVOVYcfjnQJtuUj5JtwP6mhn0Njj/YiJPzG2ugpM0M=
-=thlj
+mQENBFkyw7oBCACtGFos6g11ycruiWMuXwrE4+XbU85+1jR99AN5PcKjgXo/J3T9
+XaZLjJ+oTWCVgEHu5PTxAftbkq9+lmDAUEWZ1Q8dKrnVgBLsFNn+G2pcvVschorz
+CYFu/WT+eORA2UkdPZ7LH00iMx8DFpGtL2dBZY+tS3OpLi1LdNw4Dh/dJO7x7gas
+GWVUnL7+Cv53rmvwj8bQEuvrQjaeXMGxJKUSm0qpJ7BvkSEmQZ7qnRS7vZ05Iz4m
+uJsTNnuxtf0+fmWNrIqpv/J4RvaZVdA5OW/zA1kKYaGlZoLtWhKOht9gPAKlBk4k
+/fBfHoKqm+vnaOnxSzuYpQkYWqeEu6qzfZOHABEBAAG0JU5pZWsgSGFhcm1hbiA8
+aGFhcm1hbi5uaWVrQGdtYWlsLmNvbT6JATcEEwEIACEFAlkyw7oCGwMFCwkIBwIG
+FQgJCgsCBBYCAwECHgECF4AACgkQH4z4hdU3pDF9hggAoh6EV67Ep7HGBScS+Ow9
+X/gxOWzFS9aMVJw+MzSRRBm5YDSsJ3QfSEZHSDc7gkD6cHUjpUCaB2bAnrfv2wKO
+4EawnXkj9vhnZ/M5lVl2TOi/95Yep3aa+qCgl3jNefzANgrRgXhW3m5ao3YazHVy
+eBezQGKbuBfLTuLd5sknl369zY7IOuP59KaB2BYZfPYqpRrquFzZhdQoReSyhu0Q
+DFewliiCF5QA2AkW7yqrQOh7mEpCPvjX2GfqCsvIF0HoIL6zQuBcif7ELoSnFWYX
+RRpD7b3zshMX4Yt6yOMkcoN/JOGe0F9L0eoK/Cl1oPW1j7tdnnEn0+56CxbNExQx
+mLkBDQRZMsO6AQgAwWzQyChoPMNa3OER/72w/G6EtbS15PxNNktkPYFz2ibrDhkf
+z3av4G/mxYpYgvPhGHlgHbnGGfmhetEXVebc2iaWYih5AXxzCBQfDQNB5gsVg4x7
+SAp5rVmTnmgjtPV0domsbwK/vNepUK4dw5jMwxIbVO8Hsy66B4yvEMj3lFKkOg3a
+8uY19DaAlxehYAWyiWfcbduD9GeDGaiIXnbTgaf0x8s8bC1zWUlShRISrPnMOvPx
+D+PCJ/Qna2ixES7IpkzHKJCX1NMwKk20rH4saiwIpQwL3A2ktF6VRMmv1xHwZUl6
+3xZYGN7u9cJ2pd64xSGkTZxVw3P5KVoMOPTY2wARAQABiQEfBBgBCAAJBQJZMsO6
+AhsMAAoJEB+M+IXVN6QxkUgH+wTO3xI0072PDGNFgkDcItRy7G6tKphQNAy2ylDH
+y1QZ2uHWqNBHy9LuR0lzWVqWgeDudQQL2MAENnxJIV3mKeiHGspOaj2RgQcuIF6g
+MvFUODfme/vahJMoe7JhmX7xCMVWDEMpOg8gIyr3qix0s4DnkXKXgE+v1qmVoYb5
+qoPguSQnOyrHYxWN6qc3I6mwBi4sJ3PsCrkKDUXgJBiRjgbSkemkDi7naK0sRRYE
+tujjOSICJy1rc7jjeEPRcsk1unydI8aLPO2fIooiLrWJJPr0feeZVrGHS2Hpr2Tj
+kB+5IR1A1FK4o7oFcZTLcXVlQFgkac8BPyRuUGhF1YX1JA0=
+=rXm+
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    A730529CA355A63E
-sub    D5A25EF82542C54A
+pub    6CCC36CC6C69FC17
+sub    C694465FAACEE66F
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGiBEUQYOcRBADsCu4zTVaB4TOhV7NyTvHhG1bqN+3Va5t4vpGQJg4M4U0Yu0ut
-4bCZP8I6rlXGj+TqDKVUx9kfGpIKX6Kw2TvZUYbHIDWh3UhQO1hD4xy4b8rOak1w
-3vDAMYA5L/jsZshNHp++aTgmvSoXGS5S1xsjrbrOics6iTtHXMV9TCRelwCgkwGj
-WHzPJnlSj0z4jAlRG4ZubAkD/3LOfrXtti1oirfDTnBZcxhvldyCT2yiE3LRe8N2
-ijmtNO6fl2fqXSWuP0L125ytlOvww1r6Gd8sVXiVwt2oKZVQ+A5028BbHa0u4e3y
-54nA21OBKLCC/hJvyOkPf9/kZk6S7fV+Tour/auixX4WqUg+siMRe/EwHw6bQDD/
-1OK8A/4rVPPCDTLvcQbT+B3z0IEfryMkivJMu7dEoENDXDK7N5KginugnCpJd+g9
-GbYgTYI2YPNB6A2eaR4lH8yQCMyDXC5+bGL+1NL3SP1qR4JE//nUcbx+iMTYR5uX
-kwmaGMXRl7z47OgtaWM/dVipNuNaqkD9WkuMGb4rdSNHrI+amrkCDQRFEGEDEAgA
-pH7D8VkxWJgH5zCO7I1m2ITBf8pu/McMCvpCHR7qgQp4yvLBiQ+AXkbQPRPnxO8v
-QNlSL7wODfYI9hKDkoi5pFNlzhBI9ivehUrfdx3uMIjowZk+UMBhaiH4Ppazkw3F
-V7JhKm0rA9VX5HnujGmZjWymE+yVRJhR9dy0XQo+b4691Ve8Ce9L7j0j8BzCcCwA
-hTOtEKxBnion46KLgr0caDa89C1HG8QJCqQrN+HRbfj07Zs4HjJl2CuJY6ql/f1G
-lGxJYZT0FxfIst01dAdNFppD8JJ1I+PYErWdgkm1rQDkAZXEN7rwtihHj6A0EEqr
-s1ogkXzyXs05fJurUtI5/wAFEwf9Hqv0J5kyzSA3mVhSzSY1pOheiVP6pWWKCsZ6
-xLM90PWekAHsENvvF0mtoAAOS6HYKog5qDHJme7jr10wdalynSfgCDCzt1qm2dvX
-vEk69j7vqLmqAkKEir//1XaPlGKxA3EYjl4U8HxdqOhw/FApWRmJncezqeE+R+uD
-4pMugi7DLnVa90hlPvRNYfButXXS8p7dhuiCa5ebPxclvcW6F/mf6ZDwDSuhkddP
-Du7OD36ebmiD6RHJwsfn/uOz4sRG5ogYNqiB5OOkKO5zBVztgcmWc3ACzNCbykin
-DmNHnAaeiPWR3xTp8ZwNa0BDLGBX5RUsUhP57nhQr0ifllubsohJBBgRAgAJBQJF
-EGEDAhsMAAoJEKcwUpyjVaY+pVgAnjLQPFKg6QdrUiYYCQactc2Gx9OlAJ9r5x4Z
-Pk/ZgTDkz44EfZS63bJ2IA==
-=6Dub
+mQENBEtrDFABCADLXGAhjPxdh+naC6XU5kficZYEVAURNRa8MTnaMKr+31v2zcAk
+nyqyjihcXGQBCeaNsz2mQkc/MrKdnFNVSwp715JcmcqDJGfR9aIDMUs9PvoNkkqv
+IDtx9Tn73piqbplT2xQxd7HjFvaVuy7oXI68gwcyAGDvQZeiFUodcbAsKrVwFT+R
+94JU6UODFqE/Ihq15Za8Sc8WhWitm8XTQsCsLeh8abGhkvNEmRLi56fh8/Bz8LHv
+8T7r8zkROoQFlUEYaOR2wH5bbipww9+HEg64hrcak2w5smNt0NJUXZ2O1l00u3sF
+Qdu54hM9nZ51xxcqvo+tGft9kIr2AfTrJ28ZABEBAAG5AQ0ES2sMUAEIAOqnjBPR
+FjX47AxlF9NJhzOUECJ2QaoezMOcKQ7RTnDhOiDi/Tzl0MXJoo7ktkeSAMlPIXlb
+K/C2qrM2hT62O/5GSRy1dPErTZx53mNIWTsT0wjQCgxeiAs/+5bqceahRO4PES0L
+J7VR+wiCUP33CIK/Ea2c6ODB97OSly0/RY97jWbM1xwKuzeHH5H0QKTJky1CIdg+
+avdfeeHBDEpCi3BZA55JiAKMuFNYl+Q4yf/FoYI0ZqKFhIwK0OQLY+unIPlX+qPy
+B6TkPIj9tcK/cebpN3VcFvNzVkcqYXdxwUU9G0GyzC3Be437oyzm3SJWw1DRd2Fj
+wFeiL0fWOjwcfvkAEQEAAYkBHwQYAQIACQUCS2sMUAIbDAAKCRBszDbMbGn8F0LE
+B/9O8wwEDuRjidsflZTopMs2drKS/TN/EB/leBFsOqtw712+dYSNhM/LJVZchWS8
+y0RLHQMAd6aX89ooJpvmkijJvJhB9YtuHwmGfT40uco7ATqbo6tYW/aA1rfOs9HA
+jLb1UWQvEsL+96WsiQRLwIoX6AaKebG6mLYikiKKji4LJRp5HVdXpTxRaX/nSPSL
+aau62V7XKJXaVgFvSTy4xn2eph4eRVACKym/psNkXbRyj1maf4a1sdq3WMdiDRHS
+n3rRKsUGVv7HxE45vR7W7hqN0Bna4VzOgNEocRCKO9pDEiOmXsKXUvDJBOrvTddJ
+VHX3/m585HZda1drtSgEv3Rs
+=VojG
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    A7764F502A938C99
-sub    F20DB7FEF61CE1E8
+pub    5796E91EE6619C69
+sub    153E7A3C2B4E5118
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFc7oMQBCADaIPEUzMrwF9gnEC+PRn2cSPG8OV4RxXxa88TZm0L7NF7D+F5N
-MNUAZ58oVqFUW+ytgb5iey3X7KjlJXZnuqES4m2Id4N7FlnvrmpeOg7MUc9VmNkt
-E7RH0O5GAo3V3o/Xp5nATUoaQ7v1WaPloB78ucyWLnH/iANw8YuxYuYUTJ0f2b15
-1oY1feqkpibbbO39kdMY36FH5h8Gsv0vvGdeS2O1p9vbzDHXEMLkNyKfcILLjbNU
-O/n2FzDL1y7hHXcFKDl6z2G7rKJCAsASH+r51YX3dOKUepE3pFcUbMAXGeG//n4B
-T8cv9YOhsYGaXBdbOMjy1WsZMvizbp0p6yIhABEBAAG5AQ0EVzugxAEIAMxtJLP4
-EGHrf/bnRuJHkyMqd/LEIMR4KszUl1AU5oeCxah7ZsK2MjwAUDD2UeLAIyANmKq+
-vXtma2wvQeOzo0QDMnxLqADSQ4xqUUcgbn71rjMq2O/T06BI9Lr2BaXeuYYjifA+
-loWzCbOHcgz78p8RRmxlChO5mWWlnrznDbUjV4Pih8M1LR/a2bUiU/Ftg14GPSrh
-ct9D3b5CjMIa4tqWMpvI+6jOjJm/ZD3Ux7WbzlHB+B9/yTw7n3pLSMXj/07PJKrp
-tUeJONprdN7V3wg1fnVS8CuQmLKoJhU1kLnucgnCFQMaHThhjxdaBMr6Mlq3urT2
-BSw970AB1qV4Wg8AEQEAAYkBHwQYAQIACQUCVzugxAIbDAAKCRCndk9QKpOMmUjO
-B/9ByOS3hX9yJysA/IDbFWonYmlo7p2hQbR1tiQ03QpbXZXCPxkSknW2uHqFLxd5
-eFkR46ExXINqFzMO6V7+o+soj7jUOK2rxQUIvdf423rhjdOU+TGXSDVKfNhBc/P+
-z0xQX7TkOuNwrcztgsmoSI/5K0rbF6+Yx3Thz29ZNFPTTkdFGiq6GfDOwBOp0VOv
-NyHw7mO4x4/5gdPKJ7zsMTT1OgBY+UQ9msb/ae47HvAEIgFg65OAamU+cWe471PQ
-uo8MEmeRKCsJuZlYjHcwqvqcVOcHJ9XzjuiCPn4N7aNkSTvoOcGvBWaAmBTxWVRM
-hvtJrydlnWJlCJiPfZvTePUR
-=IsAk
+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
+=IF9r
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    A797295E9D87BDD0
-uid    Aurimas Liutikas <aurimas@google.com>
-
-sub    FB4C179C9305F3B1
+pub    125A9EC9FAA91AE1
+sub    F2EA967B5B8FD0FC
+sub    F860F86A8AA8521B
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-q757UsGg74eHTP6IdA89lHXL6F5cuTBcMM+tIu4=
-=k/aW
+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
+4D0hnpwfN9FlrGaJAjU=
+=a9iN
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    A7F5ED0FA05D64B7
-uid    Kengo TODA <skypencil+github@gmail.com>
-
-sub    4044EDF1BB73EFEA
+pub    F6D4A1D411E9D1AE
+sub    B5CB27F94F97173B
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-3ug=
-=QgEH
+mQENBE89LqsBCAC/C7QToaRF8eZgGOxcvp9aG+mFFCMjaRAb4Mh59OYdmUb6ZjfO
+9388HPebGbPNR8SHYs0dBIuWY4ZJ7oUTYPswasL8vB0iPFdyHhvkCca+yk0b8ZBM
+DmFlISm9HkYpoVjcFUp1oivyeJ5LRTJTd5JGEd/SWFRbB4TimdKXBzej9fIm2zVl
+KInEMMd8HnSYE6nm3aNkbyiqhx81bFvl8x6X3ZMWcKs+TAVXdP9uLVvWowUwcApk
+xpee442Ld1QfzMqdDnA6bGrp8LN8PZF9AXQ9Z6LTQL3p9PIq/6LPueQjpJWM+2j8
+BfhbW/F2kyHRwVNkjaa68A544shgxJcrxWzJABEBAAG5AQ0ETz0uqwEIALmEZ0xN
+tuX1cLsNUzzq0HVzwDiw5IquPWy33McESXvkaMyqyQtYisW++dY06MxBCS3uV4+1
+nKI6oA7Lk482ixwzbwws0Rb8H5CeLHDEwGXfthmLAvDdxoNCUYAtpVOMGcbGpy51
+TG3V9i9JWe1px+kvhieX9BLfDzP4Pldho9lK2gYRhmpPDgUOjYZgiQXMmIPAYfdH
+IA/VdYTETC0lu4Adb56SzOwvGMpnd3rXWUiJbZg7lW97hvbOFMKudbNjBCrF7LhW
+Ah089MU9rvunuz7mquVdNtfEBkdVrqZJdvYiFBee4RUe3+qGCpHnLzynOGHr+iIt
+DG73NR9fZCzl1K8AEQEAAYkBHwQYAQIACQUCTz0uqwIbDAAKCRD21KHUEenRrp0k
+B/wPuP2W69oweOqtSRDf1FeFNzAUIjbwjkg/bTjzJwb1cyedx7rbxhpJmn27W8A2
+WjfmDLOn4orQTKoxf3kP6SeeGhYLkzxjBa5Rco89p/6X35By6VR4LPFeTOACyE7b
+cAjqPFb+7t1YzvnmuZIgpvTKickq1D9g7+JT1Qd9nqBFKlg8aMngAooVvlLXaPEw
+Q1XfkfMN+ltwlEr7o1ts/YzDUxflaFVg0FnN7qezam/s7VvcK46rO95yQr/Wyz2o
+VDzc34e+Nr/b2pN05MDHA0dXmb/irwPBl0mTOgAgC805qkR14xhd1GeL6MEA34k8
+2Sq/O3gWhBaB3KOy55/lvvKp
+=CmMl
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    AB2DA4527F6FFC0B
-uid    Egor Andreevici <egor@squareup.com>
-
-sub    1A94B14C6A03458D
+pub    0729A0AFF8999A87
+sub    6005789E24E5AD1E
+sub    6A0975F8B1127B83
+sub    3FF44D37464BBB7E
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-aEmE
-=lnZo
+mQGNBFzy4ngBDAC4mz6ELMWjfJ8GZtolq3E96T7qjfp4J9FxGVxdbJxkEDnn6MTg
+V8zhD7yeSZcUSvwzPiDlB/b4RYnh+5LjzKHTsrtr9ja0SupuCkVGkMGWeHhpIGV9
+BekEY50RClpOvZktu/sSao6cGe9n/TQ9MrWwDDDwdUdZyain1xLoWVvLRxqk36+O
+kbND5RvwfHLquyxbbmQPNbXZTDmhBq38dfnH6QPogVZHR3XaEg/izbRdT2Z0mk/W
+fFHBBPuN0vT03shH2srHjDwQVQLgi2HYBljrUJ4/byip6DKee4Di8qvPw+BAE8KX
+kr9yfoHDyGc1TvZNvTaxiIM956rHcKpeRHGIrzg0t5B2DX8zjFY2rT+O5iQrdQ94
+p5f8alSNjhKp8jRpxljwnmNJQir03UQyfaOArApodCt4zVAT8jc9KXEaIVbZOSJY
+eztmP7C8RiFGtNwRU678guNDRE7pWFmqRmjHyAWj/VU85XcwebkOh+qQvY62fxCf
+oYmgz71fArs8978AEQEAAbkBjQRc8uM9AQwA4p1uJ3vrH7zSq1Q+yNohA7+/xX38
+4pZ02/BuZ+CBnBFNspU69JHRf8gvyineVkAoZ4QxQ5cOdrEUaeqDVrjMVFctNazK
+R3z7KHgVKkGwI1ojJ9O3DhR3K5qObXgybj3BCcxnKPSSSWMvO6MC7QQXZKHN9eRu
+FlqLCUCgbineZnCOhV2CFxr4yfByZ1/UZ0LnuVIqpXxdeEcgKMIBf6sNaJALDPyW
+kpzLmnWu0oyZA8Ox7YirpsXQLjg3Wa/56MBCpjXhStWc1kmV3jSINwRECmjgt5U/
+ph9fdwEKJ85IsjvloSQuQj+CVUYe/aBRciX1s+rWBKkxrFxosIZbln1dgakVxyXh
+1fi5k4q5OtNKDMOvIIMtpdqpXgUizkcxg0DWqDM7cS2U6uwJrEppxlWAEQXoTay7
+cZxbHnTGHbdoVLqxiD/gV09lGzpL/UelXCG28CgStysB5SzW4et8PfbTuGRWLFqt
+kEHT2X1937nUzrx1D921qchHiVjUjQ65zF9vABEBAAGJAbwEGAEKACYCGwwWIQQv
+uinQjS4l7oTBMsMHKaCv+JmahwUCYH/4cwUJB098NgAKCRAHKaCv+Jmah+U9DACU
+3oM/f6M6pyudvWWd5BSoSnE0QgusdtbELDn7o87L06jxaadjqJYxhzS0+3tVkuAq
+4pXZpWzYsykN4FOPKzgCtx2TtQg4I4D7TtOfkWfpt+LItzp6hBYIItn3TLpd9GRy
+gtSUrfRsApR75gxebYMgteVQGUmxei1lNHxdW1LCv9U/vyWkY0A3v+akIxeAywPU
+k4Oo6pdx2tZh/ygUUBTUp85AhvwTy9m40P6PdREWwbukl0JH6/odQilaSMczs+uO
+vCQ4SkZ4kX7TvNsCZsy44f9ceydFuSMm3pKmvawvviikUJy7bK/YVpF7uJat0jJG
+LKXKavqx45MINVWKsA5eWNiLSR7umGEmsHRQNv/UGIhmVdHMDJR3Vx4OrKr9gqi0
+9NE1ZJIs75frkVuKvCxH3dpHwjZjf8RdsDGEc6HFCeU3gDZNMRxzZMHhvuh3TR6b
+MYPjtYYwIWO6Hl9vR4uaKUW5ciuzDIZiLXeuGJsdxMZDIOq/yas5uIEZ0rDBPjC5
+AY0EXPLjwAEMAONcEBbDg/uXPlXq3V0M7Ki4LgCGghIHV3mX2QspDi/LuePtBBjV
+6Kyq1grUnNjfG54mCEKtjIq2joRuEOuMVY3KIz64LMJDEuLl/bGmdRxQD0naJ8z3
+hPK6KwMtiMPg1tUoxWHJjx50H0gJBB3oxLVrKKv4piO1/l3Rep46AQmBcriQXR9J
+fPajqxLxTBR2gvbza5iwh3lQqKowMaYZ8EeQoQZt6gGn8CBLMB5ShquXkRUmvkFt
+6OgzgLChBOaFS/b5jjcfLiRuGSV4Nz7KQ3I7OdYRtUyYOw4pDsHtYBuLfkUkhNaB
+NNDDguzh6OErN/GvvTxtZah6a2Z1Jhr97DAwEenDDH9h8YOThheT13LXHIAj+cL9
+lMdjZiP7Zpx0coRYXnLS9sc/WRiiSz5ArXbPwAEToPyGKQ9iujiWlOBi0XOMhSr+
+KCRYvGzMvvpEN80x944IspuBaciaTDoNBH2+hiuxGCpqZ4C+SzQkcFuDyEHCSuK/
+ryYkeAhqSuo9YQARAQABiQNyBBgBCgAmAhsCFiEEL7op0I0uJe6EwTLDBymgr/iZ
+mocFAmB/+H4FCQdPe74BwAkQBymgr/iZmofA9CAEGQEKAB0WIQRvU4B0zOvzXyiv
+mwZqCXX4sRJ7gwUCXPLjwAAKCRBqCXX4sRJ7g0J2C/9uOtMKsNPYhNiPxVCLReYX
+pCqNXZlsIAXvtyreG8o+TL8oKpSSwOfBgKkAyQCqhPk43cIzfiBu4CJAop3Sjofm
+htlcIt7C2U2puRR40IdesE2FppTF1gSu7IF2yiPRKJzd2GXWrIhhKK62Akc2EcGx
+tKioH2LZmUmPburHWy+TP9CG1ROh5ptq4WvklRlLQxW65cjc5OOjL+obHdMJg3FR
+UDrnxu3N49ihWk5VzS4JBtPkv6xn4/VZSo3+vLyjP5/DQxgT4lnnuVlM+wiDlnlR
+l50KClVF7f10hgXq6vPJc6cf8iiZ5hk2QOgncekhNyy3Q0Tjx0m9UKMVIQy+QHm7
+sjFN6Mtf333S9xNrTRpKw9t30SSnT7vOYfo2V6AS96IolEen7b3kclGBGua4c0xP
+sb0Z6yMe1hdQvVpjScnHxkDxEs7F/tMmVMsToKaXZP/1bhww6kDWqsothj6Nmhxn
+laeDrhDJ887gSc9kKL1AIqmwnx0rv/m/yHoMvPO9qooryAv+ISFiS/b+MCHPflkd
+6HGEzOLxQvYIrHsTm0MWi+PRigckVvh5IjeiNbiAfXh9jh64d0Rwdz7Meqdun17I
+cLCgBY9Aum6U0SyEHXGj2Mt1qnbQCm/q1szUPHqQeDa5jMnlBqjunu/3nyqLV/p/
+1rFrqqGaWtyIV0BmfaCm6iKipo4hZLk/wxo0fj4hIMaCjvZdJgVQrhagpFxacWPI
+P/reoL89mAQjpuXk2ZAOKATJ2Ti6tieuwupGEBTTr7yHJA9gNoTKglBgErATwtFh
+lbr8J5cnGMzt1nuBzNkkUN0yCBNJlMcUxN0XOWAVApWc9LiMfvoQ0cVn7zhjqF3v
+S5O+YuF9suXi+HXIuySis66GwaILn16nL/EflakJcva7GEJbIKbYZXouAPxfV8nr
+97i6Zh5RcJYu9GqaJcEeRZiVTKrcDHmIEfAfV+qnk6Wz0C0GMTNVd3AYh1XjPCv9
+7irTL9xNmUqWMFa1HZ2eA7vPf3a3qIy229g84d+CzTwVX6pXuQGNBFzy5G0BDAD4
+BZlZz0a3fNVMKFKFVD7fUDMAiKTzVegK3yHRHOPNmV15CtCgBfyFoK8uZ2UJ2NRP
+oAECHjU5zAhFc+k/++m7vcJXtJZJH0O8O2q/W+R68heycgYM941ChvyZqbbiXHoe
+2SetpmD5K3oABvOaboHno8AsPA+IX+WcIC9GE4DrRhpQ4FfjEvaxexdPexXQghP+
+msHt3mkSUvLzolA/yjLqdFqAefiC6qt2SjtNxjM9WdC9NOjogLyLjazen2dhcLKk
+7SQCYkNnlXMoEkkmLJVVcdLu+2M5iMN7ApNdYGEhVtRhIwsOzHvXMTiwY9nApAQt
+zCIIF3BY4bmM9hdh7/NkYq8ioubSSKbJiSCjIlYb7oI4GDfksd7Y1iR04ATSeCh7
+83GhBCJDQDwEK3SdB5hLmf4ub9E3pgUkw7n4FtN8Pm/d5AplC3b/X0GO3UHaO72d
+zajyQGKe2pUyTDHbnVzHdkGmdH6HaAF1UAzL6PaS64UevJJtEoPsViw1nG41nzUA
+EQEAAYkBvAQYAQoAJgIbIBYhBC+6KdCNLiXuhMEywwcpoK/4mZqHBQJgf/iPBQkH
+T3siAAoJEAcpoK/4mZqHroEL/3yPa+RvfpSNb2dfDi8UCJJZYNXqG4boUWAS7xlQ
+IYqYxIcCsz0Ac9sbH/9v23WBksn5T/O6f3x7KNaLs/Xqkw9N1NOJJS4Dji055Lff
+rwfVqNjKtGF5T3+LIwLutLO3M/oV9umvGLXTn4aZx1wKc4xbBBTim1jbuBHA9c0/
+Hhstoygo9z1tD6VjcsZlT6cL1R7t4n2G0ejEW+XDS+dKUvXjEnakPq+HbvZsdx4e
+CMdCjtwJ4ewFaks6AfWMr0BxTp74k9QVH4GysfjmCUd7fCzvXtq1gHtdlYnDfIXt
+fTNRig3al9BhXlcfLZZn2RqK49J9jLH06k2/dVIf0gVWIsVTI94AwhjOQuxY1VOA
+s9JvNxblje8ehiW0YDuFtktjqN+P7FiSbqSmgVwcW5pzSYp4blIxz5L9pPcvLE1+
+WBNM+Lx2V2vOC3Eka7zWs7ofuZCslGrxaxv8n39gCqjPs+kjVMyM3jkZT0bJfVJy
+khD1P8/4BedOSN7DqsnvIUfFaQ==
+=33eI
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    AC5EC74981F9CDA6
-uid    Cedric Beust <cedric@beust.com>
-
-sub    501B5ADEF57CE6A3
-sub    5D9FFE7B8E3DEA8B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-FF1NsuDIia3lMYUCPApVQbA4f0Paaw==
-=qDUR
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    AC7A514BC9F9BB70
-uid    Punyashloka Biswal <punya@google.com>
-
-sub    7B92B768F9D37337
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-sg==
-=w5lW
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    AE7AF7AE095EB290
-uid    David Saff <david@saff.net>
-
-sub    C707929E5065E0BC
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=Exzw
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    B0F3710FA64900E7
-uid    ?amonn McManus <eamonn@mcmanus.net>
-
-sub    7892707E9657EBD4
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFdbSfIBCACrFI0ai/abnV2U2Wa9QQZwGk3Fegc8laiuTKc0GoYdyptd83/H
-hD5S61ppdkOugBjVTHdgda3xJ7zBZdnwjZvV/TyayQltbh6hU+BMlEolzXLgyvY7
-cAzKE+iKWbLLwfhRn1iuC7s5l1NLPsh44IUt3xDaFXNQrPO5OnRz8bqsGFVawxmu
-2bPqIjkhxEiYpxwaZZbDkgBR6rbBth6A7QOadQcj/9wNdekoM9dyg+olOUmnLrtA
-nMBhrvvbm2fZxTps3SZHlLV7+iSu71B5SqU/kT54/49n8vxrQiGvzp9K+t7c7EP2
-w4Ax1nYpRkCxYdHOX3YBdayUiP9ZaYH/YHtLABEBAAG0I8NhbW9ubiBNY01hbnVz
-IDxlYW1vbm5AbWNtYW51cy5uZXQ+iQE3BBMBCgAhBQJXW0nyAhsDBQsJCAcDBRUK
-CQgLBRYCAwEAAh4BAheAAAoJELDzcQ+mSQDnRqcH/Am3OQSYYBFrtOT3Zrf2NEma
-ojd48oWZ5xODFmqSs5ksd3op9qakbqkxITzq7BP6CkFbi2NEWYVbPp+jiSiGr02L
-yNA9ipiMBDyVZ7CXTBYqCQZ/3yQKOFN38U8R1SnoH1gDq/YdxDkSkWZEWQlXj4T9
-QR/fXWObN/oIdVDNONL99nqU0+xSvsE+toVHTH7upY7RcdDdnBEarKrifYjbCvpU
-0yiOgB1WOj91z/BrfpBFyJ6/qW2/qJun1Ja1bdpKPm0ZbTCupYOALJhf8dcznNDn
-gVCEB6L1+s693SuU2ZzFkdykpU/8WxlhjJcSqTpp8BIlwlFyOmZC7jrxArr2Jk65
-AQ0EV1tJ8gEIAJVavNan4WxxlwLwvnBj3/wcEWqN+kfMHENMSjmRWOYSmC332hhG
-LmTDi++BPWt2OOvHUusJV8dZP5D9yUBRFsKozIpyXyS76C5VYGMY8WZ6kyqn/mLC
-iwmnkOJ24kXLaaHPsQjv6i5f2KliDVhAGUHmNMJgH8o/GL7zZ03Mb8ZlKFZobp0d
-n+/lxoOtQSzR+cBz8NvMBkOKD8r4PJA6BxCR1HVEHsq4xSnjr/UZOYvh+Kaxfnop
-7Rn9in5MoY2rCY+PV59Xbx4grqNpjupyHEf1MHodJRj85JiClnLZk7dNJ/kr+zgg
-wbsd12/GHkBt/pxuWhe0eFcAOJmvqC3c4pUAEQEAAYkBHwQYAQoACQUCV1tJ8gIb
-DAAKCRCw83EPpkkA54FACACFZB2Tk96FQkr8+WHOz93CJs4UD88PosLaKmiXKP68
-arjH3y5jhNLBzqteZo0Crfw75DYWIZChdf5uLGKCWXBEytF4uoHOy9Lv/3emoSee
-nluFVcNjL7CIOQDRmqw1t/LjnsLbgvlwHix5f7I6Txu/J0HKJbq0XpoTqCzFK6sx
-EPHH3gZto+XfHk85haKd73SOM4edkmJx+jDXES1wb3K3SpYibt+uPVfLYXWxK7xA
-aztESTIqZ9RnYHzd/7z6DO4z//lfB7IVAqvM8ga7Qj58ObeqZxx2iVit5WUZ4cE3
-0crNGyXH/HKlAp+B9EvENnwr++TI1CGYthPLFHFc831L
-=MZeq
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    B16698A4ADF4D638
-sub    32784D4F004B405B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFM1v9ABCADD0KoXq2ZKlUHeIVovQy3gFmW9oFAaraV48ouv8cYvqdf+s91H
-NyqeyNPT/ihFeNqZJUAMyPdwN5xrWD6gxMrOCR7BFhA5kLmAKz4HfFCQ05ViyQdI
-/HVNFvTdF8LNnuF+a5aNgg+jjLvFwzkyMFkuiPGuUDFnqEGxC+z9J8t40tpOTOIw
-tPjSzkDN41AJDpUK/simKC5F0Im78nUbwMalE5z2IsZRWpYZyIhN1HhEdDvaDIh7
-3vENjH7enAjWh0iGRu+GTP/fayZnX0uhmausCCwMMhsr489e63ZOaJrqeC//wWrX
-dtEJjcmvRmJ2hwLmgwMP4zSNKsnLGzP0sh69ABEBAAG5AQ0EUzW/0AEIAO62SMbq
-gIzEFQEHlxNN5pZHd7msqDESILFYFkI1mxlkD0twFWMbk4nMH2VXhiuT3ulqKBOU
-UUNQrO7egtfbGsgVv4bWbUHfeZkfvoWDlmbrvi1YLlR/ZxzGpCNc8e3aOcN3XKHl
-BwfUaco6pcTBvLpKPA/TAjkTOtK4A5Azv1CSwpzSJf2bVVbrn7mi/rw78SmZAV2/
-rtiOU5a9S+3fzswLk1PO/z//d4VoCcL2s2WueVO1Q99kejkE55l3lYwEiBzVuAA9
-8Q0a5wg84vRGFZQWLIw8c20On2+dZcTLZc61ZjnsI1LSnLUUyQ/fzHQ+BynQF9l4
-3ZCPKFIl125MGikAEQEAAYkBHwQYAQIACQUCUzW/0AIbDAAKCRCxZpikrfTWOJel
-B/9vDc3G/mrIHB1P/zl0Fdl5wQzaSVc9JB/ce0018ptplL711af0ZDvWqmZkJNkY
-u0lHgnniaXB0l3GGUPIa/TZzVgFSRPj65FWTMkBbNnhGIwV5IVOPcSKSyDYn9/nQ
-PpmWl5fDj8xiv6kKYxA4hjjRbRGuUXiI2dnyFHuFpacf/Af/Mc0U/CDDuz5a1jS4
-SYuYM/HFVL93POZzwLUR/+GDuVJFnm12rmjGnJVgR0rWcJKJt6vCsBPVfIamfl6v
-G+N4TWQ9euj8Rd4hjsYPOwDfgVIUGIhpTUJ+fz046fkz9MWnX7RJh6hqLAXT7Hbc
-0FTFsKYAbLJbm3Q+rU9jTdM8
-=mDDW
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    B341DDB020FCB6AB
-sub    315693699F8D102F
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEowbDsRBAD2jx/Q2jNuCkgiS3fzIj6EzDP+2kipIKH2LEnpnTiBlds2PFYM
-xYibVab/grgQODxTdDnAKifbJA/4h1/T7ba+OV+xIUoSI5MbgaF3USidiDHPX0pY
-qvG+k3hKECLysQ2zoZpcC8c2ePiZQSVC2i5BRqgs0xZPz3kiT5U9WPozTwCgtasB
-TgHhkOGhZ0SOUuQ4dL54R9cEAIaDjdPcI7LxyOMvvGTuW/SaS9JyP21Kch+Vf6I4
-vKWWqXEaF0So8S088zHnBrcBKhu9D1sKIHS64EoYCrznfMUtoENPe4sf5QuJmZ9D
-+fBuFcudQIpkx8L73q+E3fmCK0uX+anqipJtS8mgpMeabKda4KkjDsZkiaNl7OBI
-0H09BACofK1HTNHNke2N0wXN1GyG7IAqprKl4lBbu5aRXvfKQ2tDj8s5webNQ+Se
-Om/Yg0Bi+CiONLgUjiwYe1wNls8zkk3LwYFeKIJ1AjAY3auBRWOI0/IFFzwTkV8J
-YPHa3Dl/kmYp8NMMwA5bgrblggM0Qhnp+k//xpb0FYbmwHMwUrkCDQRKMGw7EAgA
-5MMlt89bomqE0TSq63JnPaSeEKsAx6A1KaXaSg0LEI7fMebSQcAdVdAFBo4HaR+j
-NNGv5JGTvAObLrqxnn5mU/+qhdTw4WCf17R4ETEKc3iFN3xrpxz2Vew8ZWpw3PcE
-gCe27ZN02J6BgtEqhT9v9f0EkAgRHIkcaFCnxme1yPOFN+O0/n1A+59Ar8rmwcHG
-opSoZlGDEdEdqElx/shQjqq6Lx3bWYXS+fGzSAip+EAX/dh8S9mZuS6VCWjLx0St
-a1tuouq9PdOz5/4W/z4dF36XbZd1UZHkw7DSAUXYXfwfHPmrBOrLx8L+3nLjNnF4
-SSBd14AfOhnBcTQtvLuVMwADBQf8DC9ZhtJqHB/aXsQSrJtmoHbUHuOB3Hd8486U
-bZR+BPnnXQndt3Lm2zaSY3plWM2njxL42kuPVrhddLu4fWmWGhn/djFhUehZ7hsr
-Qw735eMPhWZQpFnXQBRX98ElZ4VVspszSBhybwlH39iCQBOv/IuR/tykWIxjPY7R
-H41EWcSOjJ1LJM2yrk/R+FidUyetedcwUApuDZHnH330Tl/1e+MYpmMzgdUGpU9v
-xZJHD9uzEbIxyTd2ky2y3R+n/6EkRt3AU9eI0IY1BqUh0wAuGv/Mq2aSDXXNYJ/p
-znXSQBjmy2tvJlqXn+wI1/ujRMHTTFUBySuMyZkC0PwUAAnWMYhJBBgRAgAJBQJK
-MGw7AhsMAAoJELNB3bAg/Larfc0AnAmQbEg9XnLr/t0iUS7+V7FcL5KpAJ9k3LS5
-JI97g3GZQ2CHkQwJ3+WcPw==
-=OasT
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    B57BD58EF6D0A713
-sub    781D1F35916E0113
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGNBFsZf3oBDADUgeJsq9asQLaUajkGON9KmxKBtJS+IbGa0jgvx37T4LDigKS/
-wh4axvdJ0mE31uXKitBVDkr5TptyxA0jojYwlt5YLXsotnskdHrIg35Q8xpMp72K
-BfBsqtnfdmBUd/oBZEKgxMM2Pl/VZ+1wmF+KnyToSWuy4Q+9d88ame+8Jdq5ELJn
-zWZWYhwE3c2Y8t62VGzXeZg9Zz747Qt0ITl02//ufoR8aLdb+8uLuidNktyoqpt2
-UG8oLr8mgOAaOn6npN81FbteIWCEcuGewCjiiYTHGpA13JmToDDUfopWYGJirkSI
-dYjP4fZBu4aryHKwXt/zsiD7rzbHrn821CAAZKGptVVu9IfqD3jCBhJilGmkWw+j
-IozAd33hLvlCnH8miXRnGPyNT5T481qbi09wOnQEUYrXBe1zOvBAEVxwSLcNcxe5
-/2gRDbSNU9NJst994hzofSyxA/3X/CDiOSHDKdAcOglgqfpistQIS68FqDGo4eIS
-WeR3S583Two98+UAEQEAAbkBjQRbGX96AQwA5IIECRfqpRDQKsgEYdDMzEYED5i4
-w8GrkqK9Bl2KErI6WQmuBnZaHr71bMrYFS8duUOYetasTKCxjU/Ps0THuOmTnuLv
-Am6PCkpzJ+qBNM4jf5sxHflcb1jRUQ/R+qoWOsWcwJhOw2OgNONHhW8/2mAs+5Zz
-ThWe4cL62YRK3CeWdWphwcUSGx+zQo5vYBZzIbdQ+E+c7aRyc4qEPfyGNccAJRdQ
-eW1tAWydmf+QIYGMbANWNPXm+g80wE5xCA9wwU7N26Rk0zn6e9+lSy8e+l6+hsNh
-uNxWxDDBubF8YMuzD4q+VM4dOOsAJARtp6HW/0mBTcTD5BEOqnDd/aRsNOrR9Cbk
-K4nU1aSrYOeOby8jc7Zu0SnYC6g+JXalt0jtDEGVaxY9IMIe6AcIJhSXlgllK87b
-YX+t4uVXYFb10QfxRj1oduBQEHJkCovsi3EIIl5a4XyoGdNUGn2IgWg+C0RXrcb/
-KDrg7iakp9SwXP0xBSbcNiwE/3C3Xom0l3ijABEBAAGJAbwEGAEKACYWIQQit59F
-awb051uLV521e9WO9tCnEwUCWxl/egIbDAUJA8JnAAAKCRC1e9WO9tCnE/ydC/9g
-6xJK/aIvvKLSraYfS90XamIyUqNgAyXgivWn0jqaTwoz27HG/hRgWR85q72vZ4qV
-vYwx06S8WHMijKMcI5fBtEL318c9V6Y8Pl7jwSOy5yN0k8IFA+TzqHGXVvPcuCwH
-TQAvvP/9v2d7ZrOiH7urM0eoRDXj7Tq+K4rLjeVIHALLEhqBT8w8LGBOEZUAwS7t
-aaGrURVuhO80QW2gJAoG5AU1qMUkzFsTXBsRTcwPP25FIPYClXPNsMR+2iVZAZ1e
-3yBqQkwRlymU3gPGY3M+TOyplfoYIJy6oT2ri0wYa2jeNdo6eEmLUjNAbpdiIEop
-ruzQLLaT7PUk+RU1UFVHjV0rgrXrTYvdgKyI4dX2yGlTTmnq94eaxMOsMxkHAGBh
-GrOJpBDWzJKXX48WAdi/4WpnhOD6N1BOrvWq9QWIU2374WutAX09dt1kBG3m4kGR
-STHuixCePH/e8n89lWDXSsqkV/+imzi75cTN9RWBT1mRltc4jNQ0B2WwUgrTSPo=
-=yiE5
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    B5A9E81B565E89E0
-sub    28FA4026A9B24A91
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-3JnT33a2taNG0TUPdkSq3adt
-=QSEW
------END PGP PUBLIC KEY BLOCK-----
-
-
 pub    B7C3B43D18EAA8B7
 sub    02A4A6FB70018AD9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
@@ -10932,1047 +11425,6 @@
 =VHs2
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    BAC30622339994C4
-sub    FC9BDC25FB378008
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFlMExYBCACmdTDSXPwSJeYbfYvHoDl5C7vx/0+LOTunDGJN38pNQHYQAZnv
-Gyoc9ZmChrhLoim7z4ILqmNo8eegknepQ3dGdUij4NVIhR+m+8irayTbsNHvo3UG
-9y7eM5tTSjyNYkyk5fAVuT7OhzIzMA+qtc3GRVxNYRKnaHajt+pOSqr+uoDtMG3n
-6eAMHCAnhgh5Nd+dCFcNT+syl3zCwolA1wrzGxxOaif+xi5wwXjmF/lAt4PDIuDT
-etA2/AqPM4zAC0BtC0iqVgVypjFV3EAexm/g0LNMiG/M/krzwjPq5gf1DY/57jU0
-02FpKd79HmR7bHdc4e2olEf9NlHxfbPXDDsHABEBAAG5AQ0EWUwTFgEIANmMpV3N
-K8aLrLgQTyh5++det8C3D3T5tkEdljHOuN31/qdKNge8H6uKH8zXRZsj5pd8adpW
-kD4TzIMvzIwzizsGw34O9hf1E2XPoDqvQr39p1sovX3PeDvRJY/7JFNt9DsphVc3
-xWQfNkC7JdMPa6JRiFHd3ynfbQ+wplf4tfaDVn1JXAWp0NSGgMtXfn5i19hHQWjm
-RNAKNQLdVn8UczI8XdVM7bS4giDpQMukSyjsjgAo466iRK2+8f8BwIRe1JRvF37B
-dnbvTg/dzoi1/E4ukwVJD6YE2LlDwzdGno9KxPlRsuY3nnheVgjbrGJ2XKRJkIk8
-7cMGh41VKw6L4usAEQEAAYkBHwQYAQIACQUCWUwTFgIbDAAKCRC6wwYiM5mUxEiH
-CACQViGOHi0BoZ78ZJz6L48YNMx8fSdSv3YJ83Ih1n5DWCJgrDV5S3/edYinkoVI
-0Lusy3MdftRg6OWaYOuOTf6MYcddO/mY363jiMByf9Uh3Dqq4sKqVLRnZbAqgD1o
-dRoj2NkEQfgEH/H4JRVrxquzAKoWwJh3MhY+kajYJRJyWfc1/Bm3Bj1tcMGlGeIQ
-fgWheeMg3kxrxJ9TXPqVi6VVPaPKIU5i8l46S+Wg3uvMs8vC3XzOIvhY6cwguJv9
-UkjZwGDSI952wLqnREMy0gFZ+OAB0qJpYM3nDEekWZP38G80kojnN61tZjRThu9I
-i8/b+PwSW+nW3EpQZdLqZtOU
-=2H2i
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BB2914C1FA0811C3
-sub    7AEAF265B448E2F3
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBFHwyNYRBACkCXpipiMx0lCEccXXzv0bE7LHHbcQYtb1vT/o9WXYoP8JMChJ
-cvuAe8Tvg+s7EUjKHJRhu7I7kie+IJ2wtH5uVARkYxoP2OslYN6MSXa/bmwU8fwQ
-EFkVeFV7q2UFvH4cqpa7UKWggKcUzvB7z5spg/iKuMDQ/aBkxpmUcrpefwCg4/IC
-Omi4O9ROfzJ5Q1YHSrr8A0MD/0OTgJjkBPPBcel/pFetsWhlqA6dkYINT5qdlht6
-d+aye97QFUccg3ODnCq4fnDPHK9PMK8cTGkrnoux5XY240XkWX95tQDyrssGqldC
-zOLxoii4/gsw5s6j4x/AjycsAI8DxaecQb3/sNg05V30ZNm2+kQNmGGV+0oERpo6
-DAVQA/92UVwQdZjMzCs/6NTbsq/2tRX/XXiIxTij6fpZUeHvR4Ek3meuaXs9PPwC
-o2f/90aO71bNKjh0LHSI0CEuMWbnixmBgOEQY1yv0HvW1OB7otXrTS7EI1m+4k4c
-WlwidtR3XjqqgXTjFz3J/ipT8j15a5HOtoIwP5AHw4e+1cEmCbkCDQRR8MjWEAgA
-mqaIVMeh86G+K7uq7m6m8F9s4WtEkmYAYHdk5FXOXEJ+uOSiUiYLcYSBYRkahk9Z
-o7QSv0bWRmqCFI96Jvo5f0MBLkwR9hxYzrr3vkkJyreMsG7ybyXA0O+ga6ex1091
-bBm0f1vekvT7VGdcTtjWhpDiMBXZgTJDGUEpzz0Z/8MxYEfTsk1P7TNMMAvm4AOw
-vRk/xL8Rc6Gapr5EGMLhKRADwvWU3vYIhRjXApXZUem8tNq58cmR4q6EEsmedDri
-LuufwVBPT98/+sxEPMgPFnSoLPDc7AB7vD9s0Ip+8jG5Rtbc39Phz4GDHmCUwJ01
-Mo8k7Sr+jguGb0fthSfM9wAEDQf+LRyfjdWJ6CW+mGSYFsW1ivKzLujvfiQip3CM
-y68Si8BmUJvN8aPWS58knZY0ikXOai+m7W+4yVMkdNLm8JpJ7SX9NevZCYAb5lOg
-mE7kvHoGFar5oA9ttUIV6RZXbQi0fXtksKse3c5gWqMTmEzTV+7thtQ3V6UmXpIv
-OHKvLJdocHP5T3yDgnKwr1ajw7028XT3wsaiUV+sgjtc+1KMME9/Zhwa1jWSzuZ4
-Pb0kxVIjzebsTr1nMdtQqARg+KKc+R8Gc3NCP9MZ/s59NUFyfCkg3TqazsIXQ1bi
-KMv0GppFbFMnC/ifijqtl9g9phuoF3N6/Cs38zVlRHneyHRAG4hJBBgRAgAJBQJR
-8MjWAhsMAAoJELspFMH6CBHD4SEAniBrVdd83vjrwn/3vXYTuZrmjIO/AKC9Ib56
-Z/+UEC1v8wCMk2365rUPKw==
-=vlw0
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BCF4173966770193
-uid    IntelliJ IDEA Sign Key <intellij-idea-sign-key-noreply@jetbrains.com>
-
-sub    C9F04E6E2DC4F7F8
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFKneXIBCACtnX3ZQmPujf6ocvdnhsBheze71DSl34TfebyW2Qt+g9NhMxo4
-DaJy+iFNnsaMwLZRr6k/qf+ISE3A4opWAQlbk+Wb5s6DPPA2cHH6W4GdkxtuJzqt
-tFn6YtkFhA15Aahr/vz31NBjUJlBmO4PwvkyxiF/MYP6TQ/AHar4xP1RxSYEPcCi
-dIQczQ8nXzya4OqOyTfibeGz/eiHHuwTLHi3Rd2kihQnlRQdhE1rmm8uTyzFe1H+
-P7WW7kQgygW6yxQ3J+DXrG8kG+nbe57ZY1oyv3F/fOBxzn/kuoKHZ3JJEMJmTIrT
-Lr1ngCZApgteAynRHk4t/SYZiyoyqZCuBcwHABEBAAG0RUludGVsbGlKIElERUEg
-U2lnbiBLZXkgPGludGVsbGlqLWlkZWEtc2lnbi1rZXktbm9yZXBseUBqZXRicmFp
-bnMuY29tPokBPwQTAQIAKQUCUqd5cgIbAwUJEswDAAcLCQgHAwIBBhUIAgkKCwQW
-AgMBAh4BAheAAAoJELz0FzlmdwGTIqEH/AsyCUbhP0m7BJRULiYIWyB1WHK0L8cm
-yLid5X1P6VrktgcRbTMEzn4t08eeqb978P+GHp79xgBU6EQ+2IYiyeeAedZ/m6Lt
-Kv6imJsFPXZO3BLeNfwIzPC8QXdrkyVqU0vG/pSdULyBpc1aGNEK7Hr2dY5vQTX/
-sUrlwxDEH3LCmOnIgilf/M927Gelond9VmUh14HqCqtybv49XQiMUdkVkXmzKNld
-QQk+O24XbnSGOknPW2sADDglwoMu8EZTkZGdetgM/8X9PTBWWd9pEV32AnoYNMtd
-d2ujH+4i7AhH+Kbmn+zWYBQv3J3yQWj/dmFlOa/SFilLmmAtBEgl7wm5AQ0EUqd5
-cgEIAL3PEOztIFUibB6FYEkObVhsDbCnHw9yO5MAvAWB60Ohf1J4T9QK63jZ5/Ci
-qcDrw+uab9I+Ruz/SgGyFS0UXAkwfTICUdhT5kUzZmGyoj2ul+iFDP9uUdEgSgyX
-XakrxBbBPzNaMx8+GyIXRVFyRTH7+1gWgPQsdN1sGYOgZ+f8TMzAv6sxu0JVzjKX
-AAbXdiZTyJh9d6h1jS5Icilu8vRwn3Qc/ZzstBRk+eLbb69wS9YGoUlzYvDBz+5t
-iNwvHUriKc6zVT4Edngcr0mKWTdvD+AsvZffU0XK+vxbgMuRWi/51qb+VgK2gFeA
-seV6a+D1059u2+5Pn3h/Fv/vRAEAEQEAAYkBJQQYAQIADwUCUqd5cgIbDAUJEswD
-AAAKCRC89Bc5ZncBk0qgCACdP8kyUZVqfncA2RsQH38NFYhBz5MAEOIhCm7qwPC6
-XG08CUZfpPXdUbxZGUliE6vhfj7rZbvUKKHlcHDPobdTJqGof2jt2MfsjJ18JY0e
-xSWuVTmNmqAC3gsiMfEGIqjQFWonfm0Od4AvduLuc0TPkyfr0gobakgYvhDjk7eQ
-vgC1QfKlk6hHA/OAFW774qaQsyrANrFevRa7CBQEob6V6N8aV1vNxgl8a6fJzPTN
-BOOmP0mq7xk6nykQuqYTVFyqfXN0p1bbTxHBoW/fvdizi7zMSsuBkWUtfG1wyN70
-uoEQzSQwqgWCIaddzrPZPmaZ8CtzzyB7+JdSNItBB2Sp
-=3tsV
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BE096E29EDB8D141
-uid    Eric Lafortune (Key for signing ProGuard artefacts) <eric@graphics.cornell.edu>
-
-sub    E05A9780475FAB55
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFFGZXQBCADeZK9xuCrDwJ7v37y8RITlchzBfJEWv7cSbrSIBlFNAsUUoshW
-Y8U6xYKe0GdiLVta2F8bzs0Si4LcDeglQNi9Fxvh3/jfs0MEJUfSeZ4z1Mn5WY35
-utbdlHe6i+7qvhpHveREwWoWuvFGKeSCV8SioolG1mzxrDVLkQefPZ+Kr+xd2cYZ
-SIkbjdhCvJHcUkD9gs8Wz9q9eDyc7dGJmfBYaQ7Xa6lbd852qj8LjQ7Gd41yHU6T
-U3oo0kKfAPFkW7rX4zeJEBgpncK0i4ertd5to/y2hauqPU3VMExqNS0/L2GqKNmb
-Q2Me02pBSBCrLLCUJkm8jZorPNxlQxHpFLHDABEBAAG0T0VyaWMgTGFmb3J0dW5l
-IChLZXkgZm9yIHNpZ25pbmcgUHJvR3VhcmQgYXJ0ZWZhY3RzKSA8ZXJpY0BncmFw
-aGljcy5jb3JuZWxsLmVkdT6JATgEEwECACIFAlFGZXQCGwMGCwkIBwMCBhUIAgkK
-CwQWAgMBAh4BAheAAAoJEL4JbintuNFBUQ0H/1ahtWOeS+EEZqUxxgLE3aiuw6XR
-mcFY/9kRlnBsKpWGGyV0DRkLThXSV5fWwiP0+moef04Miv81txVXR3U5f4MY3U5J
-SDgeB1GK+BvcYz1CXxGcErgaMIDXu/K03OyQNp1lD2kjmDDz8SHdVqpv/aFfxWpL
-uMaogbStXfbDiMjeMg2zRcAzXqu7JlMt3z33uiTUZk9jubAPOBnP5/Yhuc2wcnfu
-cLUUL9xNE6gpl0Noy8qJ2TaVoHLfDEdSgVbLDNpippNQCIEXn8VtlBCG9FBtTUR7
-z8fGU8f+ijNYHMa6jNsDlSo45/RV+alQSSZhx3hPCIgO2klEkawBs0ikEjS5AQ0E
-UUZldAEIAL0CmXXJLZWMbKXEROAYFnUqQ4eNLUcLY1NfL9xrF2KP6apMXLJdftwz
-JtcenfD5vra8w5JJBn6cvY4Dr4zmueDSsN3Cpgr7c0trDNspAQMyUGmg4Cw7lAMr
-uIX2om1TTa5ALsQ1PfupnLFLFKbYd2MmfwEVHgEBAzqmr89RoG/NnlV4uxvWumb/
-OrLzzizGLHdLFjnq3Szl6wQPJwmxCtWHvzW/Y+HYclm+wp0sufvrXJ/G1RrHKxwh
-xaDVyLKsb5wkUC6SZmE477SP6ZCokoAGHqEK+5JnM9MYXreQ7N6NggRUseCokFaq
-ckze5wVBXmPuVAg76ScPFQd4JzLkGzUAEQEAAYkBHwQYAQIACQUCUUZldAIbDAAK
-CRC+CW4p7bjRQSkUCACPWdIvMXPtSQFnFR8oUIGxvcp9MYdealHNYkf3qgJTuWbH
-TeD8WpE53immju4hitOq/qDevKOWhcfSaLqCtdRyYQFFDWQt4SsiGdWfCvKiBMSM
-nrDQI9f+XCv7J3ute5alyMgv9Uo1XLyyiwhz9kJ9mzg+ENvy152PucI4TN63qMRQ
-MQbkAenrTzIer+5Q9ZY4TILC8pVVAIPQjTHuhdh8VMclTdkHab2PCFC57/3djJyY
-44PLhN3hLI4CElAGLUwBZLRa6OFOvwW5naivwgk0zeeTqq/jTOWPYiy2dyyX1pRX
-8bJh5et4mXyM7HLHRp+FblgWxpFWNvMCEpxujLsG
-=B/UT
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BEABCFBEE059E4E5
-sub    6579F3D193AD0019
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFOv78cBCACj4w72ksYDdLAY3GzwpRa1fo6S4aF7r96PitlETY83ct7AVF7j
-XaBGk5ylNAZXan3vlsSAKtxlI7skZOE5iKjqDo7SUfohs1WXdmL765mUNsSmkbG+
-WMOwDneg7Z6+licSC780OUFbifiPOKpgzGuaj91vrNigOmtyA+cbIHckhy+t3/PQ
-w4fO0S3RyJvQM/aQeDsyvhhBf2QzrUN7RQSfS69n0gtlVcu8usM7FZwOlBDGVPqi
-2Pauuj9QEyQIqnn07uWAUTzKrWF/WtcAXmLMxs59VuVRC3xnPVxekQTcJeCKas2L
-Aaic1HKp3AfTOT7+Ao2RRg4GpIiFhaJpul0dABEBAAG5AQ0EU6/vxwEIALyM80xq
-kaopZN0A1tNL6KUnoLZx/Tme1qp10JQ+AtYP5eFqPpM2yQIkFgWoQFFRZ3saPsqE
-jYlAAeyrRLOJ65PGRycHckckdhyEmGFCbHl4bJl3qnfJZuAqOSUlmxMwvhFTi7Hc
-BCOcWOqCBm99Y91IIy6NGeB+D5Oe7RGox4a9iDDh/NfyYCTTRo1vR6GW4JK5y/oJ
-GfWGx0U3CkzrwPw5efhCgSXmo0U+tQyUSWKl+J9DtdR+kP5mNoWOOxYMN3w4D68A
-IDXdD9ECEAXZKcKAlEXQ3AkVQ+Gfi24S4z5ewsHm8he6HFOsYb+FYtEByeydskWl
-U829LN49xrG2sm0AEQEAAYkBHwQYAQIACQUCU6/vxwIbDAAKCRC+q8++4Fnk5S9M
-B/wLDuqtJf1ANTTf7pyQBmjyeD9QE/Tzv606tnLxZwkZKqtEa/+3EJuPJLYOVHkn
-XpWl4VlMdJv6DEg4DrOQuJDEvv0R7YrIRqKZcZNRn+9donI6PI9jqrbY+8ZWsoA1
-kom+hU2VEoutPgxkZsZPHMj3LfWTGouTa3/HEOP5cxi5leiqJmYLKKBXJs4iMNBO
-BsqNQQjD/0rLeyh1JlVF/bpsapQJJ2kijowt5Yqg0rPOC2qq7EQUV54EVhiq4+40
-iyn5JNPmXaRHH8lFCavNWLNUh9HxNZHUOb7/UmFG9T77reY4ATTl0hZUYKdCYHeX
-eOq2bxXEhHlRB6yktjak7zk8
-=y0Hp
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BEDE11EAF1164480
-uid    Joe Schmetzer <joe@exubero.com>
-
-sub    4BE257B370130000
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-33wjXAW0h+qq7/7Yq3w3/7ncv9sWIzU=
-=NtIH
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BF1518E0160788A2
-uid    Karl Heinz Marbaise (ASF Key) <khmarbaise@apache.org>
-
-sub    C163B490C5CDC967
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=v6l+
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BF984B4145EA13F7
-sub    84761D363E7B0FC4
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBF7rgogBCADU9OwoEFdIgN5U0JU5pI7s3T1T1LeDMzAQ8l2Hq4jFrhnrjcEA
-ieDSut1YIv5NTBoZv4CrklaKvvQNUXPvKrFImA4OKhBodKV3wsq2efCATDGa1JAw
-VEJx6nJxxMsCLCJvmZsD+YE8/DIBI6jjnjh8jagZVkxkSRPvUIxlZCxytIyqXI0t
-O8pLh8+8p5e0PgGb9OoszxEQZdBavsixdpe+0feU9cz0l0jJYx3W4ErZeCGGwNat
-UUiW0ctb3iz7BkNhhoV9zepxkSLzCf5zBeyA+WfD34028pAfPpyAfDYXF4x55sVP
-/3MdWGB6eU6KzPG2/QV/6or5E+C1yCMrnMy1ABEBAAG5AQ0EXuuCiAEIAMExiS4A
-u6FPSlMyjCaT8EfxP05ey79rYSSZd/ixmqyVzJkXYbf/SJCBeX9+NtWU3LEuL0L9
-WXgAA9Ys18NaJzBMC4kiQJfyXK6Kak7sUfZWWvx3Ad3It35X4svJNuR9GoqgsOvC
-D1SPgK7MfTcAF8e4j2UUqgRnjM5S6dRa6AH2s3bCj8GE+YSH9Ag2osNcKBgosNiv
-w04tYh+sjx8W5ehKaOEMrBDO8OMYVeiIEOvBIjsCZpJgAnOBPh/7zIQ72tPa9Ou3
-nAWBwdiPBgqv5FTIVmHWMfAJKRRCW4ri2hN6toHGrjJMgobtwW56vTibb82EGLdY
-3BF41DQT2MEiM1UAEQEAAYkBPAQYAQgAJhYhBB0Ki153xninxyREWr+YS0FF6hP3
-BQJe64KIAhsMBQkDwmcAAAoJEL+YS0FF6hP3VWoH/1Uhih+Q/iJIddvBatWdzpgO
-e03ppK9pCWZ2KepukILbR8bpX3cqUiTbFD3W+ybrrY0k4Oe9hXcm3re0N2GAfEWf
-tRknxXH0TMeyWoBlldfSM5DjrljM88XAIkk/T2wcARv1PC59IIZGKOpixItF5Pps
-YII4YzlripU98sXBTSlJLU1/UZaT7XNOZ9O1/PVxADpVIeH6MVdWh4W7AV/dYZ5j
-d31NbXDTtyDJBUYoiq2hu10+RNoqq28WmJQGD8aqIuKOpeBA8EirLcRoDGELSqYT
-lQyC8nl8P5PgkEZ5CHcGymZlpzihR3ECrPJTk39Sb7D3SxCW4WrChV3kVfmLgvc=
-=WqT9
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    BFFC9B54721244AD
-sub    788E173C196BC673
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGNBFRRGVMBDADAQcmG+x0mHZwJ3uKgODjUZXkGRkuz7aP/qRmuQVn93tl8DmA1
-lgvXndvChUjzYt4DJnQhRsapAXEmP5/YYIkWOzuk9EpXGtqUieocylvNXP9eDF9y
-4mRbGbCUmz5W6Y/3w7wIsrz4kbCC5xij7cavCxxSGGg1IsyDHYkOMpcQyZH41vXJ
-IPMyDvkJUON2/YA+xPph4XkmNA+hJZ1fEa+06Cd5P4j8GeTnpibkkgzqzjuiUlo1
-PcXMXUzkGnf5IwMQOdDYbmDC0K+QUKEPheWY6NsmTdZTuyEdD7BunWA++mUlrqZW
-n81HMNijG9fQbipvuGiOn7OfmVF1eqfH+NtP9csBCjn84ZMUHHArzsWgb9LWpoki
-+vQyc2K+egdykeDJG3hFZ0Ztbz1YPQAUy8BN3r/OmKuSwJ33cleugxyDe123kyUX
-KhBdGEY9pTZ8dbBKn6PfA51XvuWQSVPJRjG3bPFphLPDYNJr/MUuYqo3TSTSp1O9
-EGUz6yVG/S01tJ0AEQEAAbkBjQRUURlTAQwA5QjPD3Y6kiGacT7lXdhYYN1m0iHV
-ddk6NpERbQn7NAncLI8yx2kWCtF2bBYujv/plSfMKZmKSR2VUx3NXwmG4QD0Wr0G
-AjhS81jrmAjEEs6Kf0fvihJn5Z5fJAyDB0BMYARhCPtQBmZ5g/mLQWqPEj00kaXc
-vZyPaMwOvkFpNowItAdj+oxt9v2DS0zYSNQoRtF8WkX8GeU5j5yL8l3+dgu9CKlS
-CM+DqnbpMDiXDdDpc56Ca5jSuI85+c0TYo6ZIvn/34nmWMD5dIMQ2504Qr+Cuc9g
-u3zIJL9Op5TPpDKLMhiF+Pdes51unoFMnuLKMmbPWtIAIXkphd1QkVTnhr/yiqh6
-gGyGD3520FLTqR+Aq44CUUINWN2nBTbgrAaE42B0PRGVjtmTqoYJBziig0Fbqt+m
-BPwvT5+qRlX9fttcV4Nkhgan7JNH2B7xL07mWXAOifoGmkAeCH5y5TKvxJOCGTw0
-17NN05RCsQTHsL+0OhjU32hvhRGrbQTNq17nABEBAAGJAaUEGAECAA8CGwwFAlRR
-G/8FCQHhNh4ACgkQv/ybVHISRK1gaAv+Lg3GF1LFbHQlT0DiF8cAJ7f0VTiEgpKR
-SHh1SJ9mwPJYM+60HNHr2/i6+8aMML6VVy8goOvYzSW9BPgTY7wPF5HJ6k09kzDP
-+R/tG74XjrZNFwZfRQ9rAeAlMVYXpPcUfo2FpM8tvR8HKAvJJNZfPGEtVkIJnJSz
-pZcqLX7ScOdKyWu+byo7+UoINF0vWvHorWHps0iMNDtrCL1QiNWxGMYH0+vK+a0C
-zGM/C2JllP8hzLc8anJjjtcF2xIZGL/roQnal6g2+OlKmtXSgdDwGOzEFPIjMHU2
-CvsjRPX2RbdzKOjIo/4ybjKtbvrbiXPfUORyb/aQ8PHHAZXaQ6yU1LRTCI+qA+gu
-sFCtKpk7RvXQdo6sIcrpqvLfAAWL7SB6zV0rtIFqPHh09NlLJ3LIl+2UK43Sa7gT
-j88XfFZYef0bm+IZjSGmEaZVEiXHB79AXyD3DZDhHX8fmcJIvvaZt+6V34ZOaKIG
-RATW8oAGjGserAKr1rvL3gGRF8LiRmBx
-=oggK
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C1B12A5D99C0729D
-uid    Valentin Fondaratov <fondarat@gmail.com>
-
-sub    606CC6C4533E81A2
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=Pyox
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C29B11246382A4D7
-uid    charleskorn's Travis CI builds <travis@charleskorn.com>
-
-sub    97149CA7141687A7
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-WLi/z9M5/VqJKMD6Dc6RCIwKYA==
-=SsPP
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C4C8CB73B1435348
-sub    EA2A558279B36E6B
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-4q5nL0cFWrpYBtEUxDwWSI3K
-=qAlt
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C51E6CBC7FF46F0B
-sub    4006CBA6D352F1FC
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFbgSbABCADGGENSy3oWLjW7zfYMSsR0pm3l3eMA7ptyU5C0U/MoIYjbXwyX
-XtlGwKnNgngATh1SMpX4WDbD8tn6vdeP4uHQsDb40t0XN7/HISFcLhV5pCgz2wNR
-t1dZbreV/EaZn3f84Vnm9s6TU7RHuPP9qBne1YLbB+LKKZUfQGavqGR+n322DhrR
-NqLdC3zFNtSmCVXS6GZ17IV/B+6CiNdbmPVk0o7zZexqZCNMXxv1IFzHV1/Y8Htu
-WQBfZ0zWwrX85ZKysU7UDdoyUw2aa8/+YpZmKwo32N8GpqA6azBeUjjVXGuqktMy
-l6IcHbLlgymkkjK7TyAKltuhvp6AlBTzp9i/ABEBAAG5AQ0EVuBJsAEIALE90/PK
-unEOu2B+QGGV9e0jJMlW+rs3BV6NI9ZaRw0Uvy0xN+jqhMsyCzB8P1joTZKUsmK9
-ptaPlMuKrTaQ/0GYPi6cP5EamphyvjK8ljLhhQuiAxt7zwv78vX7CGqRUEcAszsK
-8FPBAXERsSit661rjp4Ai71cyQg8YOXDjhissHWmneF8TJ3yItocj4KxDKLxoY+h
-F64epbkjIkpfrZ34iX8zdZMRCNJlh+oTHe/xulYLQDbgkgQa+Y6gnKmUZi0QGU01
-k6eWw/U3yOC69++ehiYcZYS0dWpPE/H51Rizn7QipFeFfTsia9jkGjzMyKHGju66
-URQ8okd4E6ev3N8AEQEAAYkBHwQYAQIACQUCVuBJsAIbDAAKCRDFHmy8f/RvC1c0
-CACy49b4H6ZzY71Ao9JHRRpQZ2VSVk+6xPblr1DOoytDC/zhVKekerE7OBEul0UO
-qzUyLNwkDiHy+5PRi6ZquZr85PlaVV5j6DkuZ/0lcL3ofsvtQi1Dwd1q/9RzedSU
-jjY3OimPWDkDBIGyBXohxx1BxRIAvlRnk9agapfbAdwtv6cjYxW0TDcPx4XW839n
-MN3CMEWtlI1GhKGYi5nsUw73ctpSq9dm3ov85ykFOqB/juvTcPoiOwPE+6o0OCTZ
-o60VwPUfv7uoXtkrLVJ0B06mfKiUgZvaqppYDi9IrhcHarOz8MD2OrUS3z4riTsL
-VEPwY+Xd06QyemMynHqpcDpm
-=1WLL
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C727D053C4481CF5
-uid    TFLite Support <tflite-support-github-robot@google.com>
-
-sub    29E792953D515FC5
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=zvsL
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C7CA19B7B620D787
-uid    Stephen Connolly <stephenc@apache.org>
-
-sub    7679164AA2590985
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=H7JA
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C92C5FEC70161C62
-sub    64863FF4D1BF1809
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEdUhrIRBADCU9cuKc92CWQlZxwtRuSIV/36Qmj264YD+Lix+r1Qe1PqRr1I
-/MObOo83ulorWigSkx1k81Mnr56NwmIeo2bMhjmgRgf7EG6XEbKdRKfJcJRR1lDV
-Ml4ru40W958M3PX5fsi0m0g2TuVrAKIS4vscUt4L/Cf4IT2/0OhaT6bWswCgsNws
-Qq6NtCkLkpWSBNYGT4zb6yUEALlhHMnfzPSDerKjDOaYHTz3PRc/GGUDSBTSVj6W
-hQIDrgTqrPxoB5JMnfUz8BLSayk0d6HiwspJ4Wnxe2/jdIT+6xhX9xBYXVHZVs4R
-cr8zbBNcW2kwFg5Mqy7TiAPzakzCslKAAX+cjAKSOWyRbmkEYnNgMlctdyENOR9+
-BpP+A/9anoVEfULqoETShmgWdi94gx713qymhNBpFZnPpm4j4JuxKopl/unQmw5i
-Jwtu93cg38UfaOMJjTi6tJ6F6SE8xXv43nKs3Xb+Ll1MpTgaGUXEhCOeTZl223Qe
-NBUp8kvfcys6aVX6GT93dmWxtMewlc6gc7HVQnUnyCFsVeoy/7kCDQRHVIayEAgA
-/OzW6erYExaWTjI7wPnD1uv1Leq2WRhG1I5YfuKU7K91TMilBm8L+qCmF1QEg7yF
-6mYtdwXjOiA0YoGOVEeNJELhJFKZOoeZob+R3DC05uUsBl7xi3NgB8Msags5N4q+
-nqZSMZaEDl5JR4ZAhYCZBy5xBmnvmRPUL50CDN2IBKxHVOaUllBIZDtdtVH37Gwa
-VzXuhPxsLiAOeJ29W1t8RrIP9TjQlPhzwu7P9Fq3/JcCmhF8xOmcn3wfCZ/VMteF
-Vp8aTr4aO4uo0O/HYisbStUw2YDGe/RmXiNOD8CXHFOg0/c4tettRhtnl8OO3hQ4
-srY5eymBG4tnV02l3/Y2CwADBggA2i5UGKqWDJ46LviS1rNzBLLHPv7GASFicQY4
-HxMTvREdBIdb+p287azp0l0ixaLQOq6HgSMZbexRG/DdDSakxlOr+kil5NJnHmZ9
-tXzGmnLP1WoxQEc2FVdG/jKTg6gz2x9Cz1pRMxxAHN6Os+c7hxYKbD649fBbGPgZ
-PP0OCjwrHVfu3WaMaek41QxnFfk5s+YNENly+XfeX2PuYLwKwuVkYJftqohU9bRx
-0phdDgQWbIZMVzihxr5yTxfkCvmHlrLHn+lAOz3N3xh0Qh/DofWEDAee8uk+pbzC
-XSON2v4iO9lsHg+wXYLREBHxdE0EreZu2VzBFa9iN2nhtJnuTIhJBBgRAgAJBQJH
-VIayAhsMAAoJEMksX+xwFhxicoMAn01LUw+mkBfQJFsMLdCpx+OORYPOAJ9YRvfA
-o/Xn3TqMTLepQBB19Xhy6g==
-=luzT
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C92C5FEC70161C62
-uid    Herve Boutemy <hboutemy@apache.org>
-
-sub    64863FF4D1BF1809
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEdUhrIRBADCU9cuKc92CWQlZxwtRuSIV/36Qmj264YD+Lix+r1Qe1PqRr1I
-/MObOo83ulorWigSkx1k81Mnr56NwmIeo2bMhjmgRgf7EG6XEbKdRKfJcJRR1lDV
-Ml4ru40W958M3PX5fsi0m0g2TuVrAKIS4vscUt4L/Cf4IT2/0OhaT6bWswCgsNws
-Qq6NtCkLkpWSBNYGT4zb6yUEALlhHMnfzPSDerKjDOaYHTz3PRc/GGUDSBTSVj6W
-hQIDrgTqrPxoB5JMnfUz8BLSayk0d6HiwspJ4Wnxe2/jdIT+6xhX9xBYXVHZVs4R
-cr8zbBNcW2kwFg5Mqy7TiAPzakzCslKAAX+cjAKSOWyRbmkEYnNgMlctdyENOR9+
-BpP+A/9anoVEfULqoETShmgWdi94gx713qymhNBpFZnPpm4j4JuxKopl/unQmw5i
-Jwtu93cg38UfaOMJjTi6tJ6F6SE8xXv43nKs3Xb+Ll1MpTgaGUXEhCOeTZl223Qe
-NBUp8kvfcys6aVX6GT93dmWxtMewlc6gc7HVQnUnyCFsVeoy/7QjSGVydmUgQm91
-dGVteSA8aGJvdXRlbXlAYXBhY2hlLm9yZz6IYAQTEQIAIAUCR1SGsgIbAwYLCQgH
-AwIEFQIIAwQWAgMBAh4BAheAAAoJEMksX+xwFhxid2sAoKppOorIM7ygdeFyhvcN
-VV0l9cRnAKCGxTdvoOnDAgZN+5lBP0q/o3PGPYkBMwQQAQoAHRYhBPp33P7y7m6y
-3r7dLAEleUZNAcBqBQJdyJjjAAoJEAEleUZNAcBqkiEIAJSzD+MACN+Dy/6l0htV
-6nP9sUTthw1Uwzxmj5vFCrBIjpq/l7ZSVfmNyyW+X/U3ZYIg8AmM1aoZ/x94pDO/
-XAvSlrw7XwAyiN+3lMg0PAIKCzjZPYszSvkdy+1yTd7ka5vp1F5AAVl1N+erIttJ
-yT/aKW708XGR5kRMBBvanXQJxTTNBrPVPBPTqM7F1cdR2sGzKcJmRudbuMJt6MXe
-SDOOjZD398ix8HIfk8CyTL38OvGaALOd2vxsyMLg6fjKmtbYNRE95fHJsmQcphco
-rLZcKg6SJlsGb8UIotMAmFWK0uP+h9oe4TGzhl0qNdsKr8EArWv+hUfRdmnw1moo
-jRe5Ag0ER1SGshAIAPzs1unq2BMWlk4yO8D5w9br9S3qtlkYRtSOWH7ilOyvdUzI
-pQZvC/qgphdUBIO8hepmLXcF4zogNGKBjlRHjSRC4SRSmTqHmaG/kdwwtOblLAZe
-8YtzYAfDLGoLOTeKvp6mUjGWhA5eSUeGQIWAmQcucQZp75kT1C+dAgzdiASsR1Tm
-lJZQSGQ7XbVR9+xsGlc17oT8bC4gDnidvVtbfEayD/U40JT4c8Luz/Rat/yXApoR
-fMTpnJ98Hwmf1TLXhVafGk6+GjuLqNDvx2IrG0rVMNmAxnv0Zl4jTg/AlxxToNP3
-OLXrbUYbZ5fDjt4UOLK2OXspgRuLZ1dNpd/2NgsAAwYIANouVBiqlgyeOi74ktaz
-cwSyxz7+xgEhYnEGOB8TE70RHQSHW/qdvO2s6dJdIsWi0Dquh4EjGW3sURvw3Q0m
-pMZTq/pIpeTSZx5mfbV8xppyz9VqMUBHNhVXRv4yk4OoM9sfQs9aUTMcQBzejrPn
-O4cWCmw+uPXwWxj4GTz9Dgo8Kx1X7t1mjGnpONUMZxX5ObPmDRDZcvl33l9j7mC8
-CsLlZGCX7aqIVPW0cdKYXQ4EFmyGTFc4oca+ck8X5Ar5h5ayx5/pQDs9zd8YdEIf
-w6H1hAwHnvLpPqW8wl0jjdr+IjvZbB4PsF2C0RAR8XRNBK3mbtlcwRWvYjdp4bSZ
-7kyISQQYEQIACQUCR1SGsgIbDAAKCRDJLF/scBYcYnKDAJ9NS1MPppAX0CRbDC3Q
-qcfjjkWDzgCfWEb3wKP15906jEy3qUAQdfV4cuo=
-=GWfv
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    C9FBAA83A8753994
-uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
-
-sub    AFF3E378166B1F0F
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFeWvEwBCAC7oSQ7XqcGDc6YL4KAGvDVZYigcJmv0y5hWT4wv9ABP4Jhzr1H
-NDmmGyWzhzTeMxwuZnc9vhxCQRwyxj3gGI5lYPEARswbi2fWk//78/3Wk+YMHJw3
-/1EO3VqvvDUt39gbaSqMCQNHctnFdb2QYZ7nRFTQeCqG/wyMdB05beqEnWEXzjeP
-FDF9y6gXkELn0lxUm2TKO8tU3h96TCuutDKJ0aE00lOeh/MbEaGHEbIU8kdfui6U
-znZ1X80EWbkCY8cKxEZHKD0aONSVHXwE6nETvFW9/9+K+sj/I7ytlyxwHsaQpi1H
-6aRGnq013VsIECrwkhmXBsLLXNjmhER+LkcDABEBAAG0NVRhdHUgU2Fsb3JhbnRh
-IChjb3d0b3duY29kZXIpIDx0YXR1LnNhbG9yYW50YUBpa2kuZmk+iQE+BBMBAgAo
-BQJXlrxMAhsDBQkHhM4ABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDJ+6qD
-qHU5lFtxB/0QBiKaHHdFu3GOs21+S4LZYmO0bvHASg7ueeWtoE/1cEsKqvES03Tw
-iSfMabaPt+UL4qP9w6/SUtTITAmxuc1ksyU+HwC/R1QuF+vdsguFZ0/8VdVRVY5I
-5/6Dcp7kI49RO0LxGPXCMn8s3Nj0KXiCoodMDLHwwMv5OXWrQQ4yXiQTsJudBxy5
-o2yfp0AlLm4uZdDLj7Z4u4DfyKOuKIUMsMQ2Hk12gSkDaZViIURH6MaSEdC+XbDU
-cPTq27+JSdjfYEX0908P/bH36H2kPCGVh+sXpICZ/Ce7m0OHBfE/pTTCuOlAJvcL
-Y4QbyMTlyPpZ0zFgO+jX+fj8UFi2sRhquQENBFeWvEwBCADfbjqRN1GvSf9VkjDD
-WBqX3hILiPx3DKPiSFmSsAoiLSEkP8gRDBDy6po/Oez9q+bgb9Sk+iGifJvbVNZr
-7+88LSxQECsrVL+ZgTAZ2LkqABQJ8XYh/dTO6BMJ5rSLH/YN6bO9V4NjYod67W5u
-Yox+aCp6keE7ia7eBHck2wyqxikCqvVzmAduPCkkNSRuOwLkOguduXfwb7Cg1Rna
-cMMEfDd9t+a6ytY/8JFu01G++VVxFHO3vs//RINrm0O4xKPkT1+Ocd4+h3DlhhRv
-RXvI+MKeM0ud0OpUVCBKCZqbFKTVgoRpsKC925ZRUSqbmyBcIkqyYjzD1adaZdkq
-4PLFABEBAAGJASUEGAECAA8FAleWvEwCGwwFCQeEzgAACgkQyfuqg6h1OZQ6swf/
-Vm0ndBcvdK0qCoubR/WOsynS1wdQ2rGKJC5oVsUN4YVCZhg9OMhwMSO3EOBPdxtq
-4A8bSZp/8ZWmHLohE8QHD8AgaQBtRZyNkvMRiN157XGkPEBRWdHw6XAvx/lE31W+
-19qFRnAE8BbERE3gieJcG4CKWy5CyzXnjSM+znZvDQ8J7MfG+LxKbr7zUHQH9ZWs
-k8V9D+GXDgpuyZc4ct1tNDLcn6784FubcdrD3RLMiOAYSSgKSgoELRzB8zZds+WK
-FuiAYXZSdzCbjJJ2VqnJnQtYHN7Z5r3ySqbG7w3rRen+Ett6PX9Hrvc1MTy/UUdb
-3s08C0wD0x+ZzFzqUXKTZg==
-=nsI4
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    CB43338E060CF9FA
-sub    C59D5D06CF8D0E01
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-DEWnnCsLSDubW3nXYsAeK/6d
-=/Ri5
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    CC6346F2CE3872D9
-uid    Jisi Liu <liujisi@google.com>
-
-sub    BE04F93C75A3B493
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFRIQyEBCADYOc8Y4bOkLGh5NFwQ1JJwGzPY/mV9kndWy2tudEs89Poo4cQD
-A/wndJqO2PrdvDvt+kxKQGra0RzUNW3Te5gaePo7+3H297BAWar8+KiX8RRu3uB1
-Tbk2b5xmrncaD5R9TtRB8uNIzA0OG7N3+2rrwzplY3HNYlz9EeWwllUO5YFkniJp
-hOBjAbTGc2RjcuhueFse68NNCUUEzS+7pGWSpkwo5CsLyfbaCJUiSNIC06ygkY6R
-XCDZUFXI7jxfcReVMK+Wpoyk/RqY++xGmCf6MWJqkcKbn9G31fy0arHWnmaMNUUi
-rwGGzEVggMH+sbXKsLvRWr44fA/cKf+EbZ29ABEBAAG0HUppc2kgTGl1IDxsaXVq
-aXNpQGdvb2dsZS5jb20+iQE4BBMBAgAiBQJUSEMhAhsDBgsJCAcDAgYVCAIJCgsE
-FgIDAQIeAQIXgAAKCRDMY0byzjhy2UUPCADOIICATGIaZb2wnFpgXIq+3zOHutZW
-M+zmXXw5YUK6s5mRZycr90neciis8g31wTFa3832VHbJHEoLni8C1hERg4rvVrqU
-Q4y7iBEoGhKn/lgBCjImRfpYlhKtd5mmEXye2iz5EQ+VRHQWxOy3cG6TesBBpD9A
-Tya9BCSaUbc7UkGTRwhqNyX5+oeGwhoUrn4bOL+JQVATEMDskgAx0h3pIWMbhmZh
-XuKRVMxVgcPRbTFUiqDMl0uNUJwuFvvEorAGGVvEDh2Bws8CaY308b2EzF1tt9I1
-oOuqQh49JScg18aJU/h8n9x2lkzJhbobdmmvICQ+FClS4CpK5X89M8dduQENBFRI
-QyEBCADsdI8kpJKcdOgZjPwpp7xnWhaxWJ4JYVCB8Omr6ToEAaw3dWqkYfmTQwlO
-i2oBRKUnxgc+VBo/+mKOz18BIQUduM6kPjp/Hbas+uF0vKjbYKY/aLASRKR7drwp
-mphuZqibQr894HsVqXHJXwBN7/PUoAfsjVhcuZDtz+A1YJi+6D4I5kB4gBdk+fjh
-mqoapUhgDQ1RZPYzjko7UH7cMkQkHBCj1HmlPKU6MlZbvQn/p5lbIL7WuTuNI3jy
-jiWp0lLkblWgTyEY7MJvFH9s2bpPWjkxcx2+lBG2HAmXiOgRWmZSrrcX9+a2/Nb1
-5+2pMg/8ZI1bSw3lju5V/ozQ9pCRABEBAAGJAR8EGAECAAkFAlRIQyECGwwACgkQ
-zGNG8s44ctkKkQf9GAw6vtfuksg9BhVP1oyAqVwEDrQ7L5Bt1SB3iZbMcs455nY3
-YFD+0N4yPIIsYg+K0JaHr3PzHBaZjGFh3pD+tV7cuMXq/HkW+82Ogvn3onHWCfiG
-Yvl+ZBLlN9C52EGbIjx07vnjJoDXPHpeUeLEaKn3R7ijMP67/mfKYKUlZ/9uMRcJ
-Jt+HJXwaSaQgyGRDT37wmUCBUE9X0XaNKXYlZA7kn7jfpDBy/IaqcNOxe32yum/c
-4MpmcKGOFdm5Tr48TgdbDu75FT2tNsb/VtD6OFFaX7GjQB1CX64SCeuT9sDmqXsf
-uup3aw/ff+A7vCNFbhwiMUCJgH0aXV+A/bgZ3w==
-=ll74
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    CE8B1D1D2530EDC5
-sub    7ECBD740FF06AEB5
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-=R7zg
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    CF9F3090CE4CB752
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBE7E4m4BCADCkqre+MJRRn+yBa8PqDHFIpfxOk8lQeueZTrU0Hw14wMkkOW6
-XFBb4hDeezStNNP6s2TS7bf5YRXZwqOwwgg33WYVVH4jPldaP1m+Z3GtYSLKEjTl
-G7/YqLcCtLxDdhLF3WpR7LUyZFQpIPEwRj12UyK8gU/Wy67GP3JBz/YhGTGfEaXE
-13VWM6FLvS6GJVouT4lFVqPTVv54+RKz0GdlgCB7Ht7kPtpMkz8ceKGU8+JcbAsL
-zkcicA97ZBzYEnlHFfoNI4M6EZumw8TXM+hvJBQ3SEWenhmUj5dwkympTahH+Dw/
-iam4sbZPiQH01GLiffeNNfTVlf0bvaczvvG5ABEBAAE=
-=YoaU
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    CFAE163B64AC9189
-uid    JetBrains Compose Team <compose@jetbrains.com>
-
-sub    57CE36BB68F1BC57
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mDMEYYx3eRYJKwYBBAHaRw8BAQdAV7zh1T+xL7mD2O63rTIvRfQ9kwL2Gvq/Q6PD
-9apCe2K0LkpldEJyYWlucyBDb21wb3NlIFRlYW0gPGNvbXBvc2VAamV0YnJhaW5z
-LmNvbT6ImgQTFgoAQhYhBCByOmOZvAYBVCg7N8+uFjtkrJGJBQJhjHd5AhsDBQkD
-wmcABQsJCAcCAyICAQYVCgkICwIEFgIDAQIeBwIXgAAKCRDPrhY7ZKyRiRslAQCE
-XiOkwreTSEDg7UXsRd1IruaQEUkrAFsk+1/FkqqvcwEAiAx2FgUTgDV8RoflRcaB
-kqPfkSvkvUBuJBQwqjGuhwa4OARhjHd5EgorBgEEAZdVAQUBAQdA/AOwflH/rum1
-g1gvFPBcqhvFOcN80VUb7OqoENSzUD4DAQgHiH4EGBYKACYWIQQgcjpjmbwGAVQo
-OzfPrhY7ZKyRiQUCYYx3eQIbDAUJA8JnAAAKCRDPrhY7ZKyRiSq0AQCEwGRGd5MO
-TT2kKJf9CphX0LOsqVBBSNvzoloV04wzywD+P4TmIz/CsigszDQy8yl1/rGvszo7
-gaUwnfnqN61JHgA=
-=DQGj
------END PGP PUBLIC KEY BLOCK-----
-
-
 pub    D041CAD2E452550F
 uid    Deanna <deannagarcia@google.com>
 
@@ -12020,247 +11472,710 @@
 =vnEw
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    9DAADC1C9FCC82D0
+uid    Benedikt Ritter (CODE SIGNING KEY) <britter@apache.org>
 
-pub    D364ABAA39A47320
-sub    3F606403DCA455C8
+sub    923C08F9417B222D
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-=5tlI
+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
+uGWBaZVODvhr9hDoUpp2+qte
+=rXX9
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    D4DA5EAB3CD7E958
-uid    Jiaxiang Chen <jiaxiang@google.com>
-
-sub    D826E3935EE9DC71
+pub    379CE192D401AB61
+sub    0CFE993CDBE1D0A2
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-=E4ez
+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
+N9IFsU1/E/XhP4QkRJrZI1F/
+=N8tg
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    D57506CD188FD842
-sub    63F72A7A8658D653
+pub    0D3B328562A119A7
+sub    C45D01093DCFC371
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFj2NXwBCADPJcGfWz4Zsfa/UEUF6a4aAIjqCy+rNmLf9Vs3HD6B5p1r7VkC
-e0HhxrfbkDkQu6aEmAwV6GwYiwWBf/LQYNdKm1FYZFhKLhyuTPiirFqIouEFqiK2
-HPFdil0d6Bi6HB27qe3NScpqMK21ectpQfTGlmd0HrSN55pSnb9k+Dnx5MdR+XNl
-pfA4f5jNBIrnsCvaY5jccyFfvGpzykVF0yaSikbcs9hJ3pbfddLuBJ4Tk+yePDjR
-FWJ2Rtau0Pbaz4CebAIQprLfdOuxKQ8l7jhMZpRE7+sz1mU6fvDnPyj5kvnoU4SB
-tVvsnSuILeewp99/MG/wE+B5uqxG6KNpxRgvABEBAAG5AQ0EWPY1fAEIANhZYkCh
-aM7zRmJZhzbwoHNfuKfSVYfNjCpRdu5PkutVxBsjqGWs47SjXEjhiTjAD/s3cgj8
-x/uHKmXXJoHUhnU+9RPlRiEwt6xdaEgRqMJyqrqIJ/PqmerMZsZsnAC4dFFDbR19
-lfDBNa5RjF7f2s+rHtaAPSMbn7lfeBpP7V/r4qUg9E2pRqoCCMqCtFRFlNgLwv7A
-jgMhaTaO1Am2sxfsTOVyoxCxC6kpJE8r4iRVstdfKifZrfStE7ZmtKmRjqLmblla
-GkQXWAlcayc6SLJa6bj61Ln043+qum9l5H5xUBHwfv1p/UPzNpZVGgZ/SVfV9rxL
-/DktPZ5S+HPSyBUAEQEAAYkBJQQYAQIADwUCWPY1fAIbDAUJAJ40AAAKCRDVdQbN
-GI/YQsl1CADJMZdQGxuAOmK16/0k8q7sNSbGtrdyD9n3yLsWg9cCTI9ecJdM1cXT
-RglhAfsm5sr+xJnyA6ShTn8KCxgRHPqLTIwSfmFNjePKmWUK1iBRdbNdbfHiKUKb
-Xc2CMwkwHj6hWo7rwh7WWS3gtKzldUirfIJoA13AXrtJQRq0qgV9qN5sEpVGr+fe
-5whzG9BallTirYztskrI82p3e4thRPr5XDK9r8SWJKPuhL9zEfStSMVnR0gO4n6w
-pFryXcDaWuA6/+hIzS+RwTQKpQYNbb/OKrkAUH6jDLzKtixWNwxuDJpVz5YHDJVI
-LCwzEShVwuejAYnuG+xpgw1jIxtoj/bGiQElBBgBAgAPAhsMBQJZnMEmBQkBRL+o
-AAoJENV1Bs0Yj9hCzpQIAMMZ7J4QXPur6jDgjpbWESvLbSSYGEt6uIMB8SEHBEJ1
-DdMNdRKu6AvUn7doVOhVDbzof6jGpycRFG4goL1fJM7pLljcOwJ+75FrYZCdC0sy
-JPd+QkpueUHyE+/lZpvWuu0vlgfDkfIFFhC96/h659oTt5j82l5YIXanpgQg/AiK
-l9joXXxvVt073y+ngFHpYhCkrdna6rxN4WRbVN2OlUJx8BP4tfFagYKaMSlPkA40
-03nUlwsPKQ8Bj4tASVSpCihlR5ijmxR3YxNlMET2f1ljvj8Uu3N0LrR9wVr2g7t7
-nqTzRs0OjV+r+qy7eoZ4NBugYFXpP/RMAXZJezpKfKU=
-=FXUZ
+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
+UGyrigQZu0gUujkogzGo8f7UOwHRBoA=
+=7aNS
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    208B0AB1D63011C7
+uid    Violeta Georgieva Georgieva (CODE SIGNING KEY) <violetagg@apache.org>
 
-pub    D5F4C07A434AB3DA
-uid    Egor Andreevici (My key) <egor@squareup.com>
-
-sub    9D49CFE20A7A3EE7
+sub    B4A1D8D630480593
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-Umx6zyOUi5AfW8LWHwPYuk2dkLY=
-=KXp1
+mQINBFI6WiwBEAD+kkswnsY8eaqvYkS+ZB5MJr7juWrv9Lw9OGsIXFlTvD1XK01c
+E8k4+uA2sOtaXQ5wTMdc5N3YzAXqFxplWuafQgEvhyTTq37M5YCxvtYEZy/EHQYT
+iok5H97lMRKbhLdZB+wkdsa0P/L1FveCUiEawKY/Rrfi+UeRAneSV+m7S+RrPphZ
+M9aNSczqYKfAqlpUAlUcrF/bt59vjhepoHcE4ev6SB+PCs0vbvX4iTvvZCTk1lZ9
+InS2wdK80Jz9pRB0Uf3LEnZxt9e3RkIFdQOCcEISmNlBKQQKFG+zCpIAbVoMLKEw
+rXWl8mLzGzBbhGmLpFroem3Ln1YiAxUqnPR/MoBquYnpTINwePgwKVWyQ1TXG2MF
+Z7DPayBMN+G51rfLS/8iy35pAnNeqbWQjavdUis6/0aRMv5EYMFMAerutQ5v99bA
+rGj6OL3R6repJLOGT4YWcD/Tw+eU1lMWxbq8BbbRU9Fd0iVFhFyKB/DQSxofvTCe
+PdWXRrptrE0/SmvuoTRVPmB21WyJenKdNmVOQ6U+W1Rs+5IKAdWWrGPcUt0qTrRC
+SL8vAQ7MejYLovFtRHslJRs7T3ratpRcQUNOx1jytJhmSUJktNWZWNHqBTe/eOAU
+Yr+QAkQVQXvRVWzHkDHQRTOFmNYIDZYRkzSP19sBWRnYdCs6CbIVPgMJVwARAQAB
+tEVWaW9sZXRhIEdlb3JnaWV2YSBHZW9yZ2lldmEgKENPREUgU0lHTklORyBLRVkp
+IDx2aW9sZXRhZ2dAYXBhY2hlLm9yZz6JAjcEEwEKACEFAlI6WiwCGwMFCwkIBwMF
+FQoJCAsFFgIDAQACHgECF4AACgkQIIsKsdYwEccMXA/+KMQKWfw2T2CXLhqvQLoh
+Irj1Vi9leAttKqKp2NCHLK1jf1qKzUx5U81VvizIGUsDXGlAvnnavrj+hmQqZdsO
+CoJAo7ViIR1ZhNca1tFK4Sy03wdpNyUkvxVuC+3peXmwhjPJoqU2ONCuDl/bCczl
+QAQpgZCMO93h45U9H6JkjqK01aDorQHxvXo+Ap2IViQvDkNtJ515vG2k5K+x2XHw
+Tv19wr5N2rz407TWKzS5hh7QHRgg+PZs/zPf1YHD7Tg5K6vvmZd+5EsDrse6tZXy
+mzz2+8Yg1SNa765Aq6p1uAQf5NKeej/25TbRYT7RyIlgDXPcPrKxy0cKzpqFqCFs
+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
+BCfJ3B8rg6v0
+=3GO4
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    1939A2520BAB1D90
+uid    Daniel Dekany <ddekany@apache.org>
+uid    Daniel Dekany <ddekany@freemail.hu>
 
-pub    D73C68EE4152C255
-uid    Eric Chang <erichang@google.com>
-
-sub    A23FC45C6F9E2F57
+sub    D068F0D7B6A63980
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-zJV7rbKv80zNxWNJMOr+yshtM+Hclm3s
-=mRRB
+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
+1ejrktxPt0rVTJs=
+=Rkt1
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    2E2010F8A7FF4A41
+sub    E4D15F24364C7906
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEnOgPURBADYutfvXAtNgf67BQ2gWTI6+nKfILIwMPzCbQPMd7pykzF5nPMu
+Nswt3E7efo5IP1Zsv6DRrLafAW0OJSmL/oo8/ta0AfqcxCCbJ6CUyViifRZ5T4nU
+WfuWTZiaKRQ57jtt0WnNpFNFf00gDbYJWs5b4RU5Vac/0B0WDQ0wvOJfBwCgylAw
+LrDQmwyOZcws9VbpvZvz9pMEAMRkV6DN8kvmfktpbUnHNuZJOps5botqKyffQVj/
+b2zh9mQ9yFpaSWESdFgpJNeBGtQJEDOz2G/q9ydTrYyCD8ILMKmsUlj/DAjaE7mU
+/NmSpHBUO97NJN/fdMgkkbkSlk4j64lGaVovQph9ehw3DsuSTF8IPvr/DXV9nuIc
+duxTBACUE6vsxZlzB9dXe5HjKCoPGr90kUm8uCG/CVu6fBVpZZa9B6+OM6NhEkLG
+FA/EKgKc/tvNIlPsRwX1R2RoV9/tR9N772ZjhLcEBKV2UO9mb5iAWWZaMJtQ06SI
+Ws9fyd+Zx3GGY1+iwWPUxZ2lSGLlfg3Sunl7Cni86tb0fTHTrrkCDQRJzoD1EAgA
+lYw+EWr/t9pNqJhzVpAZ9u3LMKJfrGopbO+jOW0T58mIdVF4oMF5WZ4lHPTgHrRL
+KxXNcGlzaxjxBKtkUbnjRTSGk7ExzGIcWoqq65RI8JgONif1VpBaS4Y8WwX/akQB
+nCAL+eV7UwHttVUKEmt4xUW5CNa4BgCFKtVdiomvdxnBHBCgfWNHXpNnQLWhuOGJ
+ZVyqq1ZAh0/vIxUBDSJZPxmEh5235+2CDK8Zu4FCcsi409zrLTtga+ggsN4tp22x
+vRgNs6nwARsk4paFII3OMkdMVJlGqU0oQ+H5I5PADBFSUYwpcIYne/+k19+QMR1x
+Ik+7EavzdOribLC/nwaLFwADBQf+INE8jnD6qg3g1gRN3S9MNh+PAPEsrM/7Gw0N
+CAhaf3METVwSzZfwVNiXM8DVEGjaBAPTBpuJdveHpTG43E4eibjXWTe7j5A5QSUx
+O7p3W4AXNTKldFnlKkVs+6ZKCkKeasY2/7do6Cf2Ed6lL1CDXEYcZRZ6BbkXruI/
+HqT/IP2mTw1i53S5Gxj3gaG/jOroXN5cBZnRoaPJQpuri9hdUJVqPNIDhe8dz3Zx
+kHEgVPMoanp8xti86ErSjgvsxGs6xjjuxC9CNjMjyod7d6E1NSt7gvVdksX3vok3
+QvIqQKDO6l777R9LQcxEStPz91mrBRTAyO6b7AtCk4/5S2hTdYhJBBgRAgAJBQJJ
+zoD1AhsMAAoJEC4gEPin/0pBVNMAoLT0LzbZNVmium/JNdBhDhufgi7JAJ9s7DMy
+snT2e4S6/VitgWdoI9iCfA==
+=sgte
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    438E9634A2319637
+uid    Constantin Rack <constantin@rack.li>
+
+sub    2C8E4A350000730C
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQINBFQMn6cBEACn5RegEd6pYnrIwFMpf/SKP1aIp+rF657o4zP2eQtCyU2Kxiyd
+VXyvUqIN9kv8exnNUOHnjQzUyVFmcaYaQTxf6D+DVkSlusHk4yq+6I4K7g42Ghvw
+okUldrVhQUTyZKpR8CUzEOsdhZJftMzxZp2QCHKuRoA8QWKGcbUrp7SQ91uHRxVs
+56egdQcNYiBX0QrxrYaI4lFAdpUa7LJNrggk5AAloqalD/fWskJCmBp7NNSQWNT1
+oOk0hEPNrGcETZxvYXHZ95wbqe+ZXCBydk1UhJnLSmqjmEufYyHdVQJVQCpEVMAO
+xUonaK8VHb4Trdp2D0V3ZcKNhukdllQL7Rv3L34tmN2fXPBQUU6uisKbMHK4ZdQw
+weCITIzfvLcIppEhhOTBI6RsRJtxiNMuH+DoeDWl6CoYiKleQy2T4Ed76sPDBm1E
+NuKDnGooal7QhzSpUrZ71fRfBWY6taEegCns14pBRpDvQKgAURpIOIaD13K6tngY
+dQOXyZP5+nyc+p7Bo7vVd1+gNbdLeYBusntf/UqJFJnJPyGIjcTrCsELDltl1Ifg
+Yz6gfzcc/Euhh6SJVciv/bItQaViaQIJyIuXsPKV4BtUgTisZj+5L2JGa/LQi5bJ
+UZx+hz2dHThtck6I93eDEUya5Vk3gRlex02RLopAKOtr/9nkDbl0D4dqowARAQAB
+tCRDb25zdGFudGluIFJhY2sgPGNvbnN0YW50aW5AcmFjay5saT6JAjgEEwECACIF
+AlQMn6cCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEEOOljSiMZY3B4EP
+/j6v9dToiJO7FRUMuJy9Tj6RpfOw17ccRVz4baXKhRJEMMvadkUKAJrLAz4hEDt0
+hNOM44AKgrPzzXiT96AS/Ysj2FCr7RPUE6y9xkRrbFOhxXmLXuSc9wrslbrpNsgD
+akHSBZZb8SaOplvLtSWhPnY+q+a1DUrJqGc3J9b8RnGIkJE0HfkexQ2jDU04CeyQ
+E91bRSkCT54tz2DDITav3PtPFCKe7/iI2xxhJsIEzhLQFwJK1xzIKqZOumC4A3iK
+KUAniiZjv4soKac9BhEGV+FXHMaexcjYb7QJVrYWVXEIXeEaDrrLiFmviLiz7DOV
+kPYFIGv8iuusEJmlM6kmjgZiHVb0ZH2H1XHSIzQjO1J4I8rJyH6p9PLcZFP+VYBB
+fdV42019gkdJTZQaOEiK7MbK/84Ium5EsRtGIFxFu0/hqTiZWyRM2slXbyJBBT6K
+3EA1UPHZY60UpHUxq/SJ13MMOYvVxRDHPaWzR5RVAtZcPQVwU+no6s4kmi9v6qas
+AFSGJUoeTKmcJjQF1ME44RbjTk8XR8a3qSxloDIQonpJybV8MebPVT2no9bw5+Ye
+7SNW1SCaghwDGMhp7DcBft8UEDsbKParlIY1tIxLakNcrQbxLruQIGZl3Pk9cFUg
+8qhJq9dcRHGQk7B68zhURmhItXd6SHHOj+zVqvQINxo6uQINBFQMn6cBEADBIHTj
+f6I/+FH/LCAS8MXe+S/8JvE/nG2XnoU1GGirorSYSYq4L3+/mqmvnHLbGiATQqIE
+NqJwqYymkZSqKFbp4gUW0ffaHAl6KqHjwDD7OL/hpf1xdqa46Pb99URL5Hdf3kYu
+lUyHdBvFpQusJah6h6cYvME41bNsricZ7aXoKCPaOXIe0EvAqGs7MgxGJ3QrWSuh
+JVsZk1FxWhVI+Ibx78spQ5Fg344ngVDPm2Zv3tKajERv4VjgLg2vQQdKvYB/5VFu
+rDXHrmBtJxmPqw7THGltX4ZD1gGZFa4yS8kmTv3FfT+gzFPtc7FJsQDCYJpaTVnQ
+8XUKum9e6bvL1puEIMGD7nGPECnnd/gt57xJxXceQZernykwPNlsr4ZmUVwwymLg
+3Le7wBiM5UqdKUbFOeEQeBerGl3A4QkdS3zAEmdclCJLIWsgOGFeNRIEcygY5Dn6
+EoR11tRJJ+bn770jCZX8Vpah4p6aQNZO4uBkb9F2qRi2Y0r7pS4O/KMDKl6nfA7U
+oR8LR1vGu5M7KiH+WGaTddd2L7KQR4OkDpODNvrXWSlKI5kPtfArRqSUoXef0Ww/
+mN4T0s852O2iRuwDT2SCjkDFQcYaFTiV/DXR3ZXxVv8+CQY/gFYunDpXjjNqMuUA
+AEDYhqLTYJKDZD9eVVCeyaFhM8lZr7LY+OrGSwARAQABiQIfBBgBAgAJBQJUDJ+n
+AhsMAAoJEEOOljSiMZY3W2kQAJcvP9H9vG1fRV40sFolL/HmH/y4n4ir7lgLIoG8
+lv7qUADXzgcqC6taWPc1r5u6oxinbHGyzLFO7DRFi6NzDJwl1/EhCM3zaLSieqCk
+BxlS6g5+Gz60vl6XrsQ4eRdvtWFKRvdJAxCYlzvJtrsM6arD3LpaUGceFoXngIm3
+uu0krGLwpE50ga4ssK1vYIaMqXNZMLVaj0RPzUISQaYO/M0PY36h2k0lJEH1Sph7
+NaH0C2APOLPNu6jbbtB6VVz/2690ErnD/d6vNxJ6xAfQntd3CQ5FzIq2Dml6r3Wj
+x/g+4NtflytXgpN17LuBqsKRP3RvfuXAzLEp+ZBaB647dBRWEXUlQyiRnqmHOWcB
+1pTAfzWOApIPzi4ccvqe7Eod4YWamO3wHpuaLSt21+JcnnIjEW4SfOBZhSWkR0Cb
+lAdMCtbDr2DjYvJU7bsTyQ4kYyo3jgrY7gHDragqbssCFwAAwdMPxwLSLDFEQ5y4
+7Vvkxwqm1Z0COb4kM0Q6uue+d/j/ndbMZyFPCoTa+9hEKVshVmdYmlw7Go4mcH1E
+3ygcPRD+hL12xZhA3l++LYQ4f05gxLwe5G6DWHVbm/M4y3TqpQQVvhXYgKxvmflP
+AIrw5s29N2HIyghVlKFpWkPab5dir6RHAP6wVupt7QCLKs5ayWR6uect/3abaBc1
+qS9F
+=OTJj
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    6601E5C08DCCBB96
+uid    Popma Remko <remkop@yahoo.com>
+
+sub    0AC07D0BBD11498C
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+Ds1RyzdSprcN2g==
+=S4Fa
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    82B5574242C20D6F
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBFC1VWUBDADZwqBEEmSjwy2JADG0qCpvVQzC5KszL0CjzqTLPMBmLKNuc/36
+26MU4yI8Y+pcCTnC3LN9hrI0hxiP4zFFFyLYKkUWCZRAwj4OQlnyTDKa9frKBMed
+PJtihlQAKeCtMh9AOXNa+hZoAAEG/dfIOJhLyZB7JEuuwkil65R4yLrdnbbhPYMi
+1k0GJsaxG3IhkR/XQMO6m1KnThxyk2GPQNLFHUVSN+Gqz9m6u7oUxhhFjwUj3DZb
+8oGcQ08JR7IGdB8qV+XC997MUGjbRRu05hfWJecR0Z8xkprsdKSbFjuw24lZtsfJ
+w8advblczq//NvaUj2g/U/McoTPKoWXDFSPtw0UydazGtBUEM7SFer29upgyxA24
+oHoT4qUj3+lelhBbsf79YuI2M+q6OfeWXfOEO6xkcw54SmcvfYYatGg9UBiZq9PK
+oUfyn4IOKhxPY82N35tDfoeBXDAwr8r00NkFJl2vHv8QkIKQFF4HWLJw/aElij5t
+T34qVUE12H0+oikAEQEAAQ==
+=Uua5
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    D7C92B70FA1C814D
 uid    Matt Sicker (Apache Software Foundation) <mattsicker@apache.org>
@@ -12680,210 +12595,535 @@
 =K7VW
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    D9C565AA72BA2FDD
-uid    grpc-java-team-sonatype <grpc-java-team-sonatype@google.com>
-
-sub    9121AD263441EEDD
+pub    44CE7BF2825EA2CD
+sub    E01173141D06B1BF
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGNBFrjUQUBDADTMQL/4d9EyVhsO4XBH9wbGWxcEJvsu/HvppN5fY8hpMV0+Cr9
-wjAeJ7d9zdFJVB8vPLN7bb5dm6SNyK3KiOugqVgZrQ+ZPTvCCgFbFyEXuZwDiOa1
-9oMwKypq+GyAqXnfNkQTx8+7PAKslPoEKeft6g7T2+hb73nf2vpnOfpp5ljQhWPe
-YEO2kXIikCxVXK5uSpuq1JLjLB+AFsnERCEGqOCueQgrLyPZnGrk6i3pEyz8b6Mh
-8NdFjztqBWUta+e26Z00CKEpmGYzoV3sHD8Bhf8aHPWUHp9lGIAW3klLbsp1+FVM
-20eF+a/f7XK9YBzd2dqIYWELdYUB+XU0EPFTgYAsXG1Z34ObgOVjU5gjDSNYfvz7
-tPPngDB7k9w7n2NatF3aHpHvkgekaLlflmZ5rQnMadhBUWgJoiwsx2q4TnSh70/t
-TI3dPBbdVG+8YQ/LpNzOVshY2uMHHxJq6lUGVl6BIIy83Yslu0gFYHzL7H2tXKpg
-Q0qAQBktmX6H/P0AEQEAAbQ8Z3JwYy1qYXZhLXRlYW0tc29uYXR5cGUgPGdycGMt
-amF2YS10ZWFtLXNvbmF0eXBlQGdvb2dsZS5jb20+iQHOBBMBCgA4FiEEsCM1qlTM
-8h5Su/mr2cVlqnK6L90FAlrjUQUCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AA
-CgkQ2cVlqnK6L90OfQwAivE4SXbsTD5aLoak2Gfo2EyVUQUhi+qJ6nWen8LwVMh/
-xdaRpXNmWuBZlIiQOvmigNWej7pnF4yl3HnTCHTHiEbrntgZX6fwQ/2c8JTMWgLX
-A4bBxJ1ipBKfyXGnQVXHySqw2A2ci2Ks1CGgEHoAEr6yhhwxkSdFC3Ts/eytPjrT
-5NaFv9vD0TQWFaCILedw7hvTHY1JexH/Ry3X+aFrCmRMOx21bjbQKsecBGVfASjx
-owM3e6Qb3ToJLr+t+BlILI3b6L69WLFYhZv0KJm6U+mxJ3caqzZcUwomOJaYAdSq
-RBTJOEDJ3Kv3QUFwE+YTKUQEgNG31u8CEc7c2aHhQUBJouxEalos1lx8tcoodL5i
-D6PwDb22mYutLSIa7hdLIROw2v38JTTSMaXRW1TqD6Q+cn1KV0btz5vfCGkXH4WU
-MGtMzG9h+EUS2E2vf2UqVObZ9M6hHUPOM4mmriUzuvjnOjE3X7IAwQMgZdfsTQ4B
-oYgL1uwrTnyj+dMho9j5uQGNBFrjUQUBDACq5JHcBH/y8KUIR8blOOov354cQgX4
-x+eF4znw42/5lb3pLpYF9gAtPMs0zQFhwgKFHCr8SxZY+nYi9h1pULqaLJXeNLZi
-paoUufyXALyXJojvBf557UljlvZM4J6n0xHMVM5NuHxGkkNoZyMrqDqsarbsLY35
-ssizc+fwXq4dPmyGn5hCSwwc1Z/DXqFadK8jSdo7klVxwtnBlOFlSqQ3iT0o9ppB
-5h135ygkGY3vfSsqrxXE2Cg1Y7vQBdrhC3t12dICZAzqI/sfYL5Ejw1DYY2H4c5v
-bWPIj5mRQNCsUkotF4Bt/IAOHN50lPpoDLMDrTAnBpvTmU/vsLNWfZ06nMJj+Fm4
-zZ9rPfdgRnTdFqlh5iFEhRildPSdHTd1zw1tFW1SpgVIo49pvQIjlSacwvza/oaj
-w3p5FOJJccbAYRuvekIvBMVQlNh2S7TEYD1MKddONSw1bv4JyjptNSa0Rk4aiZEY
-GEjSob1SPveNZc1kuAu98ViPbtKNv+ylUBEAEQEAAYkBtgQYAQoAIBYhBLAjNapU
-zPIeUrv5q9nFZapyui/dBQJa41EFAhsMAAoJENnFZapyui/d+yUMAJKh1e3YX2mF
-pMz1oCuVw2zPEwtJvSLE7q592b09LyTOXOKi3eVmvFVwQMSSoz0JQfINoB/hkHeB
-5vzU0atgN2sUTA1hVrErX1rLdpjErJ+6n6vVXfZcrFMXfjwmxuhnvbAqKDQ5Cm1m
-eykOrXgGRIglHVJBs4KQnCcdS/b0uyujs3E3hBR11jAug4eUXA7nWOVI7WeCxjLl
-A5+gCzOfiRX3Njl4kBQX+ekIcxO88AJmf/NlSjTJzEC3t/o0Tc6dN+ZYxpOT0eIC
-C5xrEj2WaToE3cU455Sq3ZWyUgxviTWlfsVFGy/M25ZMk71LwM+WmDhaPNa279wd
-gJKrqHebCiOW36HtIDoK2XW4D66aJ28+nujO5tvGwZ0IJ3EZJWDjNf8vTaL7l8TN
-TuSQ9SkoHHqEeD/MmfBNUBj+Dj4jDoIfAGHD7b8qgymNDrdWqPBBnr5UjB2xIKHj
-DMAmR/4OG8OYf8b2whrC7clxWPU/NrQjDeAt//3FmtueX4dQRyz4Xg==
-=t7l/
+mQENBEzQQMUBCACbwbw7tuTWgwPsDAdQTWGO355jP75oBLHwGgEwV+OCKtxkNXNw
+wrJqXst83vmD1dEJyHflQww+d+Olj90IefQGfR+K7O005C2nky7eNGIomxaP52Y/
+90+tmw8qtsI4nsPWPuVj4WdFvlFgUwIZ0SmX4CauVzg0Ris8f0taxg7PH9zEvICs
+G/WAXdB9em08WDD6ruhMAvDF4W8Yy7mpGmdWiFD+B9OC006tv+GzYAvUHRFeCnnT
+SoKRiBeLejW+t4kpdMnEfC9ILAYBEEjNYvBIyPdPKBwNfy0yjRebsUf0eNmjGTpk
+VPlfofjVaUaOZytUOQvntYpocMX+377DGQIdABEBAAG5AQ0ETNBAxQEIANp35mwg
+ILWWQI36F2SyWFTFF8zupjzqlcF4Vx1Mjs2rQYErv1qs09TJfO+uxPRAva0fKik9
+PFmZ0vLM7UAveZgaknzjTQveOaAJuT5OjudoyptG81ilHO66+e9RnuyV6gSINnt6
+wnq4n8KRPoEmI/nxMhvmBCPw+YmxG3ZcU5Zko4GtjLA4J01nag7jY+LH08qFfPcK
+sADmx7EtCRuBcXgQ202kF3o7BjULcLV3R8vni3jp5nljH0vJG5USSY2ZR1bFiLtT
+CMO8cm+jIuay25iWil5DaejASIXzbzTtSYg9Skxet29AWjlrt1+zKZsMSLPbKJ6q
+hdW5XNU4Qo9ycx0AEQEAAYkBHwQYAQIACQUCTNBAxQIbDAAKCRBEznvygl6izZwg
+B/4gOqGHc0Cc165PZggwbf1nyJZ+af0QiKWasgoUzo4a7OSIISmBYPGnW/VP4EMs
+aNEhnqWK3Tu+cuidW6z7MWHRsqLcvYUKeiZE2IhnMP85ad2S14UOHE8cbkLwfIGe
++rIu+zYpzyc5bcRYqeLvd5Dk1H/eW0/hsadW9qpSWQRGxWPEsMqaAhiret0ntlGH
+2igswZ7SYNYLNtK78wppFqqFHfFvnVu1XNmiTDDuk2IokPIGRjeWO59eSR/kotg0
+zox4S+CJbRdQdPq2ofDNqKCIEtg6y4yM+dc7c7n1Txk53fMBMzXfGnLGfbTFLo1h
+pYdC5sepAZA1XWLRgZ3+5+vD
+=HSWu
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    14A84C976D265B25
+uid    Rafi Kamal <rafikamal93@gmail.com>
 
-pub    DDDAFA7674E54418
+sub    0190A8A50D88C2C9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+sPa3uBnylgYyUnzuNZB3kLz3zAM04/jc8Vk=
+=/GAm
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    D57506CD188FD842
+sub    63F72A7A8658D653
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFj2NXwBCADPJcGfWz4Zsfa/UEUF6a4aAIjqCy+rNmLf9Vs3HD6B5p1r7VkC
+e0HhxrfbkDkQu6aEmAwV6GwYiwWBf/LQYNdKm1FYZFhKLhyuTPiirFqIouEFqiK2
+HPFdil0d6Bi6HB27qe3NScpqMK21ectpQfTGlmd0HrSN55pSnb9k+Dnx5MdR+XNl
+pfA4f5jNBIrnsCvaY5jccyFfvGpzykVF0yaSikbcs9hJ3pbfddLuBJ4Tk+yePDjR
+FWJ2Rtau0Pbaz4CebAIQprLfdOuxKQ8l7jhMZpRE7+sz1mU6fvDnPyj5kvnoU4SB
+tVvsnSuILeewp99/MG/wE+B5uqxG6KNpxRgvABEBAAG5AQ0EWPY1fAEIANhZYkCh
+aM7zRmJZhzbwoHNfuKfSVYfNjCpRdu5PkutVxBsjqGWs47SjXEjhiTjAD/s3cgj8
+x/uHKmXXJoHUhnU+9RPlRiEwt6xdaEgRqMJyqrqIJ/PqmerMZsZsnAC4dFFDbR19
+lfDBNa5RjF7f2s+rHtaAPSMbn7lfeBpP7V/r4qUg9E2pRqoCCMqCtFRFlNgLwv7A
+jgMhaTaO1Am2sxfsTOVyoxCxC6kpJE8r4iRVstdfKifZrfStE7ZmtKmRjqLmblla
+GkQXWAlcayc6SLJa6bj61Ln043+qum9l5H5xUBHwfv1p/UPzNpZVGgZ/SVfV9rxL
+/DktPZ5S+HPSyBUAEQEAAYkBJQQYAQIADwUCWPY1fAIbDAUJAJ40AAAKCRDVdQbN
+GI/YQsl1CADJMZdQGxuAOmK16/0k8q7sNSbGtrdyD9n3yLsWg9cCTI9ecJdM1cXT
+RglhAfsm5sr+xJnyA6ShTn8KCxgRHPqLTIwSfmFNjePKmWUK1iBRdbNdbfHiKUKb
+Xc2CMwkwHj6hWo7rwh7WWS3gtKzldUirfIJoA13AXrtJQRq0qgV9qN5sEpVGr+fe
+5whzG9BallTirYztskrI82p3e4thRPr5XDK9r8SWJKPuhL9zEfStSMVnR0gO4n6w
+pFryXcDaWuA6/+hIzS+RwTQKpQYNbb/OKrkAUH6jDLzKtixWNwxuDJpVz5YHDJVI
+LCwzEShVwuejAYnuG+xpgw1jIxtoj/bGiQElBBgBAgAPAhsMBQJZnMEmBQkBRL+o
+AAoJENV1Bs0Yj9hCzpQIAMMZ7J4QXPur6jDgjpbWESvLbSSYGEt6uIMB8SEHBEJ1
+DdMNdRKu6AvUn7doVOhVDbzof6jGpycRFG4goL1fJM7pLljcOwJ+75FrYZCdC0sy
+JPd+QkpueUHyE+/lZpvWuu0vlgfDkfIFFhC96/h659oTt5j82l5YIXanpgQg/AiK
+l9joXXxvVt073y+ngFHpYhCkrdna6rxN4WRbVN2OlUJx8BP4tfFagYKaMSlPkA40
+03nUlwsPKQ8Bj4tASVSpCihlR5ijmxR3YxNlMET2f1ljvj8Uu3N0LrR9wVr2g7t7
+nqTzRs0OjV+r+qy7eoZ4NBugYFXpP/RMAXZJezpKfKU=
+=FXUZ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    85911F425EC61B51
+uid    Marc Philipp <mail@marcphilipp.de>
+uid    Marc Philipp <marc@junit.org>
+uid    Marc Philipp <mphilipp82@gmail.com>
+uid    Open Source Development <mail@marcphilipp.de>
+
+sub    8B2A34A7D4A9B8B3
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+bpJ8mdzS2PJko7mm
+=NMA1
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    991EFB94DB91127D
+uid    Antoine Mottier <antoine.mottier@ow2.org>
+
+sub    C327DD2B96A50E1C
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQINBF6WyHgBEADOrbvGGDYVckFcUofqKiYrBneClFJH1ANheF+KIekmnFV2SH1Z
+RS2rw12IbpCjwqjhFTMWH2UTLF6pAsSGIufTrSVUAF2WxHw84Y60KmwuYayJCVd3
+R91/FaonEcZkH770vNaij8BNnQUOXoyhTsmTw8tpMcVMyCjLn5qKtNVnGsafdi3C
+8VJBTP6x/LjYyv/m0/PgSIX8huzD6m8WzjKyEd9sww0K1sm6C3kF9S1/yQzTu8Hw
+Y22fc5HMNU6IzyUxLPht4BIbvtCIVn1HSfiKv3CUd4B/4z8voc9HJidFzrWxei+W
+uev1h8GSIGQdu7csfsuuFjbpIWuU1OpTRWNr8lFHtGtgQfE4AemSnvXycA/gSlWC
+M5BhTW5w5JuGSo2LBq+YEthjhrBrjkWsOGHiD6TiMvsFPw9UGvhEvzlqeA83sXiX
+KWHvroGUduKyq4/G0c2qCxncCB9IXA+Bbc2je+uSXxY+Phgz3b5XocqOKphTJ6Y5
+dvq8oYWrx4T0Ow/pYWT3n2gJP7BN7raRr2WafQ45fPKNYcE5qTDtLJ/HPPFKdHpP
+jZj8cFKzUw6VPbZwRQi+itJOUQeJ1l4xWvEA2RKgDxDcunO9270RGdSsj/rxNWRS
+mS5He7HuEYdzB8MsO+HrhQgTSTh4gpwgKr6lRhWJTyKH1qk2Q4pT3N4fIQARAQAB
+tClBbnRvaW5lIE1vdHRpZXIgPGFudG9pbmUubW90dGllckBvdzIub3JnPokCTgQT
+AQoAOBYhBBDzx6AuylXlArrc85ke+5TbkRJ9BQJelsh4AhsDBQsJCAcCBhUKCQgL
+AgQWAgMBAh4BAheAAAoJEJke+5TbkRJ9R14P/136DcEesh+kVXbIR3CDnN8oQDJl
+1ciqZMS93VNIQ7zY6hPtwVB/JBmWNjBrVCu+1MW8G0W39fGthWW1NtORZHnmna8q
+3yFdaPYDqikJr0DXs5gGM/Bo0K0aVtH4UNA1g9BKhIX/U6wbTkmFhZ/PBAKO6Gtp
+93aFtkCkO5vMu8r0yhig5sbv59FwjMoHaOPIydcfSPiYfYW0bacxBiY4B61XinWI
+dh21K1B3ufkeoyR2Zi4I6DPl0dj0XJzu2Aly+wPdywhD9mbfs2HCDYpZ+eSt5y4m
+FJgV8dXUrBOg+Ghw4iTcf4IFPXhbYwQNqq6MG7v8KCJVbLQwmSMxx1PWKJoSEYqI
+mH0cs306Kspt1+hZyf77KlvuVcwReAuXBc/bHhoR6LXlp+PMzYw8Hb6niewQIAx/
+oBYPdVN51tI/gRDNwDzpd12iWAC7XGr9CwEEmMUCKRiRGHOkzEeWUI6jZB+XwaH1
+oXC6k1vzMEWdF8T06D4GXX/TbM9a1/dCHNAx3hKhlkbFpTnAfkdCOLl53V9jarva
+QygfpbM0NI58/dgvcxlnf4JSfIf2V7ll+/nW5Ekt/grmihfgETxbIykqW4UqjS+k
+JFhqpSS+ey6GyRK4TF2TavdMC2X5X/uCpw+YvfouNDnTnUn80mxhxlZu9lxDUNgD
+jClweeOYOaZitvVXuQINBF6WyHgBEADX15qJoH8yYoVJHhzNi41oHophSQ371uaB
+KTtY6GxNUFeGJWmTkBMKz4WvAiA2BIcYHwb0ZGIzEkwqKOJ+d6ZM/kOM5h8m198E
+SFKLk6RXgL0yqcE6y89IRUEuBtsnbkkR2IIrC83Aa1jMHb5oRitckVCGkzZEY6S4
+icqrpEseYW7VZrDbgCYfbT6zmZrTlThBdkAAefbxSGSfrKZc6FAyvHGzTfwbNmnd
+jXt+IBokmQEFo4lMx5qIqSRT6umU5icE3zfZXTx7jpuzUjuN9pGugIJolOfk7jVo
+rkIbvm3KnZPPmyFBaRyeIRzNdcqXLW8a5cuTgKCJWkdUblcHuKUfcRUMERTyQqk/
+STdm3SGcjU+LtMzK8ii5ZouixnFc4JQlrYsvTeNYKB1V7xFUcogbjB+bGNQ/OVKz
+aVJh5fkfCf2JKqjssjlbplDw2HEvkPv9T4m20pdt8LgIcBk1hKdWEPaeHP1hVGeD
+7WxJuDTBdE0dvrN5nk5womgLT+om2VC7qoC3tOoJ5GIps+Jcqh+03rolZI89iK7M
+2KW3h+OdY9fTS4fCNdvS9H19sroZ4G3S4TM4FMB8CqaOEdigbM+qHIndwwWTWowj
+TqfvbEECUNiRyK8/yhd8wgrUP1X9S0T3SV5b4H4VysN/rroPssBmv0q/SBTM45L7
+NnB8laTzcwARAQABiQI2BBgBCgAgFiEEEPPHoC7KVeUCutzzmR77lNuREn0FAl6W
+yHgCGwwACgkQmR77lNuREn0TmQ/+NO2IdVVCWAza3ONRb05cQfgWHZLr62J4jrOo
+aKNOvgkln6wcqbBXTczCBzQzjOPenaPDcCBApBt12ji6SxcUgLzjncnFgaNCQswN
+O8Z1UbY/n26DPb7tTxY97aN7BrDPTBlsv78SmTOrr2B3XlZ43D5SFpiSjhRRYbq+
+7ozhhE+ETXBVRf7j/MfbakJOYlfPZr29YwOYqKmXsNhIKK0Kf8TeQApd57dBNj1k
+JjM9Yqp/KxlwWNVjKYGo/eNIYy9hojK6gWLSKahED0fAjc0AZjoQmuQeJEIUyQDk
+CkVM4TACtVNq6P0TWGg35YexaJyQ7ddR2kMuHn1pI9qpgjzYjLTFnUkDf4vfD37r
+rlQ6hYngplPx9PJQM3ZZOdr63axYByMcUc8fHx0KHI85bCGGHZBzGyAyqmOgbAYI
+QixlIXbeZwLdvq3QlCy4oRH/rEjItt50dLVOblNyYnLO2HixgqUwtkMcHmv/ZDtH
+HeiFnzii6+FJQyVqwDYyT02odqde4TtSoCUuTqJg0z91l0b7O3Rl+t55C18qSVWE
+wvzFWug3eOWzCtscY4U/M44XPJaSUXF/vBMrtKeB5solOOb5T4HjNyDBwxFRYZm9
+w18S9Qb4LCdWzXZVRRLbIjKV3a1qR958Ad+iiQ5vQdsEfto6IjHgPQaAaqZi2OZ7
+zXFYXic=
+=osYp
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    A41F13C999945293
+uid    Thomas Neidhart <thomas.neidhart@gmail.com>
+uid    Thomas Neidhart (CODE SIGNING KEY) <tn@apache.org>
+
+sub    8183E80D264EE073
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+25lhPkZ/FaSYF1lb13TNIRT1q1My
+=pAbP
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    22E44AC0622B91C3
 uid    Cedric Beust <cedric@beust.com>
 
-sub    50C6CC55C6F24FB1
+sub    BFE9E301CD277BAF
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBF8tnmMBCADROe7j1ZvgiMgfsQKqCSuSqgMkfMT2DEXwZKdHqkj0gfx8MPQg
-OP1pmMgpIwIXKr5kZ9KMGiGULNnS+WU2SNqjyKeq3MlnSYW5Di52MoAD7W4cHmry
-8ekaasF/x0AS5Q3M/6X/EBOD8YLWaFkk+h5x8D4IOSqiOiWH8olGjY4ZmGblaldX
-PLr7BWSrPKQ1QDsoICn583Mnjz3YLlc4p5IKnY2wss1zm7/gQk6KkdL5bRuASxLh
-to2adZ1LEE8MQfHweauHCK915RmMg7W3KW66/EsuCyEwZKBwq6rIpAciym2FngJt
-CPnY0o4IMFSasV7d1xSH5N4jeHL3Hh2Yd9tHABEBAAG0H0NlZHJpYyBCZXVzdCA8
-Y2VkcmljQGJldXN0LmNvbT6JAU4EEwEIADgWIQR81StagpUTfIj7V0jd2vp2dOVE
-GAUCXy2eYwIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDd2vp2dOVEGLQr
-CACZTTneMoaUR4pQHa/rQfGnYcYznSL32JUP98bgstwN+g5BoivHkrN/5IinELly
-n2nxrjrPucN2arjOvObiGk7UhvUY8h1kqWKWqc5Gsc/iXwnrIx9bwzwdbYaiKqMT
-E6RJ+naIN80rNRQnOMtBRTNmRWYZ9UMk2W1DEKZeCaKUJpO2lLpMW6R+Sta/pkq9
-L36F5G9qWBrVhUS4U/rEE27G7xiDZ7fCnjYt6lfvc6mKQ72BIUGtjVDRwBAiG98X
-Zn5+TqLaMkC8NotYInuV1/CwvfE9SuYH8dn3YJqAkkn57L74y8I0V54AyMXaLNp5
-G62uRD43Xw6rLakCxGNUafcouQENBF8tnmMBCADWQEHet457l0v27b6EVxjNZMGl
-NI939o3k4NdrCBglIojODXA9jp8VkisL7+klrpOP1vmoVd80Lk0fGSOdZDcIMbzW
-WChRMVMkY0vgeDqOgKw0j6e+isqN/vNipj2nh8cYm4q+LB6GVE0pfFCsrM8RFFew
-RO+esEuw0R1qXhNYLIwpRV3Ov4ZxDp1yM7KAHSBc86HJHy1t4LqLofjA+RBP8f/6
-2MmSRKLbDwruLz/02p0fR+lp2DiJ/IN40lGq1fSxRjXMTQnI+bIdsd7TlY0AbT6R
-NklBL3i492hxU188dva1PZM0sxAMZRXSt6cFCvz/jDvlf6jB6DmN18E2ad55ABEB
-AAGJATYEGAEIACAWIQR81StagpUTfIj7V0jd2vp2dOVEGAUCXy2eYwIbDAAKCRDd
-2vp2dOVEGAwbB/sFvYn1o5Q0r+ngdMJLCjQYT8a6uy8SH8N3k8RsTJ+ad0TdfOoG
-wvxl/SFB1MEjEVpXgbojjv01gVDola2ObIYSX+GWcvlJdfXKz8oZ5f8/KdRrAc3h
-z7gf8huUVeriwHoEEA7xi14kJZpwCPh8PiMMl5KQFWuG4D1eQnwOm54cIw/9hYB3
-R7oVI+2THlm3CAlFalsXzZ1N/l/JQG6LfPkKmrubr++FveXx6izjZssdFiaLg4dk
-AQdAwgpmFmCQHb63BCKzqPwDxpazpk1wP6Y5ornLu/ISaOo9VC9ylX+vUK93eq4K
-AFuUjn/Jk55tpdUEH8mW12W6Ukjt9FxVb8ZX
-=Vb7/
+mQENBFpqN94BCACaAb8Afmng1QPu5k5uzLoA1FJnF6Wf31ZU1FzDxHFHLNUYSWN2
+Bg6k95QH5ruZ+Z/QOJSoIB+b3htDklyxd8m+G2KsMIqnQs0BaTN18hb3PFyMIknM
+YWkkTPF3nVV9APk73AebTAcd2V1GB7xOP+L3T7tyUcB9/7bDeM3od6qPksdVGNMA
+0S32U8SNhe4jw8uXKdFL6PSxgyg9yeu0V7DyR92V9jF+ZicZWxaLeKpf/Vn3MBX8
+JdePR9SCJc8CNj0n/tsvg/aSmGZ3OMZTUYYvrtfgpXUw0WVkyma+T0ANcdDN91uZ
+P8lV3o+Ic8f15xwsTePDhMhmtOapIz/85ukFABEBAAG0H0NlZHJpYyBCZXVzdCA8
+Y2VkcmljQGJldXN0LmNvbT6JAU4EEwEIADgWIQTHC4RPAC8h9tK5yHUi5ErAYiuR
+wwUCWmo33gIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRAi5ErAYiuRw5Md
+B/9ajI8dvk0oUaenxcPCchWQ6pwA2B5w9yQVWQBoJbxMI+pvEqpS6ur7PI+bJ0or
+rCyNLiNj/okFuU6yeh9g8eeKIR3984HtBAkGo59TtH9kTg3HDZF2ys5j+tdtcb3r
+KrGafc41llryb4XTGiLjcCS4n6q1EmZIJjCwvt1sIO1fo3cBim/1kjhjMgXSpiYz
+yB+ve1NaG+f//nfallAnryxFHVfk2/N373cNZTD9bV2FRZs9SSO2mO9BoyG8deSF
+x89lwLxK7MeoSH6pAioMMRGoZhNz2Thb9voUjrqS3P3+auwPt//JbhmCR3Zg+upu
+n6Aw5q67aj4V959Qra3ZpD/TuQENBFpqN94BCADAfXydE1VYais6o/4JpVQwk9JL
+3r2hkgwfN68B2rRvw9ofXZoqaBCFgbw+Nvz15GLmONoiDvP4rb1TsaT2Ti/hTUb3
+ov2W1RJ6OFRmiSkOuOjZHlVslYF2fPlZEXWdJ9PWvoKM/3taaICXy/AVSm1NBera
+1l2MsJ1ePr6dpMMDBjUU15rzWm3WOqwBNE34whhOjvU9vDl8u4h1xV96E5B47ZbV
+B1pR6y3vSYQgwj6BYkp3Uz2Mg3GQ/nBFoNuwV/F7LiUb5W68wOe8Q98NuREh1ico
+/OM+iudjP2LO0vz2sGe6X5UZGwCfbJnlq/fqoPhiyW6HPb1+JHU08kKeY5BJABEB
+AAGJATYEGAEIACAWIQTHC4RPAC8h9tK5yHUi5ErAYiuRwwUCWmo33gIbDAAKCRAi
+5ErAYiuRw+XKB/0ToXO2daY6/ZlkfK69O8jRBzbhn90/2dePM/qLy5Fe3UaG2sge
+uFYbTMGbRPvCpn9E5bceczdhkJKqEj5dPHVhUU6+jeyH/DdDgrcP12SQR2vHg9hR
+e0pzVouiMDX4QnUbW09CwpmhymlIp3pXb5jNa4iNxjYIBmuHDEmMP+uW5Ue+e2lg
+IAFWRFovZ9C1DCg0YYyGktc47cakq3ENKNU2LFvRcbgoyfjM0EprSUColUUNN3yy
+UNc+I+bvGL5swhKqdnRHagbg7kelsn/05oDFGPQHi0/VOlWU7wBh+vUw6lb3Zi7C
+obUInUhW3rPu5LubTOtT+oIH7+RSUIEJO1hE
+=j2aw
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    DEA3D207428EF16D
-uid    Dexmaker Team <oss@linkedin.com>
-
-sub    E8D0C72FC5A02B28
+pub    55C7E5E701832382
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-=Uwhf
+mI0EVdDLQQEEAJMtYCaTA56YsP5RzQzPvqVTaR2nZ27qRk36blHB9WmXK+NHpGeH
+PHgq59mLPVueo2/M5k/fFrCe36jHePP31gYpFtueeYDfsofHwod0WhsHyC7JfG8d
+jEnSczTCmOHRZ3ed9ef6SeWUozYCQAX/tAbpoCthe0lTDYhFhkzVCe/FABEBAAE=
+=45ZY
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    DEE12B9896F97E34
-sub    9A716F957BC42546
+pub    10066A9707090CF9
+sub    2B9F5DBAEAB53FE8
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFAxQKwBCADJGPv6pmFEq0SDwAKESEgCdnXycbR0bNXpNa/3VGboNto1xKgd
-AQ/sI5x+CmN0hpUjklEwff6QIt3MlofEMkAzSfRmTobhJTK9W7r4+p5DuhJpi5Wz
-ITdbNCMT3Cvp13rRE+dx9qY+WFQmTYPf3gq+C6T8Q1i35ePNlCTN2RayaFxxR77D
-W93zKZDdd7I1qH0Vx7GGcSwBgBlEB8jmhNAkz/zAhv53S6px3ZttqYYmuwRtg6Fi
-i/u9VoDR/c9tyUq8L6oAUtg0mo4CP/tfUF/uZnibshEsLzbRP961VQXduhn8HcRp
-k6QPTj37B1vsNWJ9U7XXJ6pYnkizQo7sl5XxABEBAAG5AQ0EUDFArAEIALyNR+z1
-eBBF4S+dOEWKXz2ANmsp6RRhvR09QeQwNycVdbdEXpOiSZUCAkw/EhuJWmHBngat
-0KBO+7CIHyQqwHnqyatizzKXi1OuaEhMzPsQMwPRfYyWHgN0aklc5oOzB2RbSJN4
-et/oVvfAplVSjgR0v+56+qXw9TFlp4kxqFeJLycZ+5ImKQ+XclsBokKuE7cjeF+g
-O5oY/CFHdkxD8d+cLF8FSNUFMypuDQ4IH9zPYGkUJqsb2t67iMyxi14RqyN2YNqK
-JcwxTL42VBlUFlTBoF2Y3w0LNll6pR2WSNvpcj+5/uBjtY1qAj5e7yVts+d1YZsX
-7D76AV742RQ31kkAEQEAAYkCRAQYAQIADwUCUDFArAIbLgUJB4YfgAEpCRDe4SuY
-lvl+NMBdIAQZAQIABgUCUDFArAAKCRCacW+Ve8QlRhFDB/9xE/cXf5fVaLa598xL
-muXiD9U1B04dPdz445/chdDS9iGWBB+5QVvAqv2Jt0hyPN0+n9Mk/4lLStEEL8TP
-NLdTBP1JRvVWC1c+G3kTJq05Abj8CGFFm1UZhFRwCTJ+vrv8fSb15s+YYxBLIUdl
-tKld6OupTHm8A4XJQOhYxd5PHs72bJ3bXs4GmPLKD/RpYmXYJ9EZHQHKnrhZKJ8R
-JKTM6sxBrgdVeI1K0ekA0o5HAVpNEXgY1gG8Pa14jqK0iwlcI02ntqeJkobvv1wN
-vh+nJT2wM5QyLH737kdPrUdi63PfCYLOEHYhI6sFkzI/DAtI/C3wmHtTuRam3aLs
-Rnb7GNQH/i07ndoI4trmUor3X1JBbcjw2BVS+idCtML3jhKtziwK2/kz0rJqBQKa
-Z/zxgEfwkRPqhXLaBW8a1G/d1mGphazHqSaDqylz07XqR31ZtGCc6256anaVbWaW
-9HXUsU5ADNrAK9PdD0EibGB8YumuSTtApICUqN5SVz+h3Mi1MXVsmbiVSAZPzLTD
-0YRwzPJ3jiXIrKDUmZMM7oWwGx6nzW++tW8aKyLKm7x1/y8g+XHvySQiVOKAvvxj
-yPStkEW38Rls5nucpyLzLjoA5vlyIcOkeKCy2jlUmM56YrAIWNn/eCRFPHMOY1DO
-B1nUXMr+2W21xZO+/sWrEEysY0mdGU0=
-=uzFx
+mQENBFGKp5ABCADTyMhDq+7Kcv2wXOpOmZgp++JNO1erNUjVqFX7n9bT77DciEML
+LNxWVF1tkNqgkn0ughZTXK5EGdjUfZaJaDDfG4BIsox/ng4nDvIp4CtXqHbWqrlc
+SPsMl82uABh7ZJgsZM4Z7c8KirxYL42MiWu6hhRqfJZigWUd+ceKEDuFcNHcEA6h
+98LWFCZ7KHjKhZpUbMBurd5f+N2mn06YnVZrHVzX+q6REWGToF3p+mrBwstrGaiU
+j78gMgZnI2tiJ99HqmocjLXbwXxdvFmLkniBHAQ91D9fHfYL3odTEkjZ/Wi7DSZt
+PAbEhbBIKpFKnbazyMB8ACeF+m7jQ/Nq1+g7ABEBAAG5AQ0EUYqnkAEIAOMb65Q/
+m/7+A8XBVNXgoyGDksgTDSIfvePi4saGdSJOcQWc2HbEHFhqcOqr50h0aOEBN+7W
+B7X8ZMqqeCub1BlXLAs9gWhw5QK4mAKCtaARpmWj4sr22JscpMi4uutgcsfakRae
+Tmd1J7efjcDNL0/EsQKQSGht1AakJN8zfyb6IBuuAqj3xegwFCu3MRanRyY8DP4C
+YXfIyLBPLWfDVBViK0HOjEMEO7tdvsZ8h6ptLNqAYQQYcHFi75lKa626RVeEbxK3
+dptWfA7vQ59PlnsMhUZkiDDPzhnIatpfdBgA8EpBJ2Lrq7hE0nZI4/0rn/wxIPT9
+Ibl9JWeSfoT7Vc8AEQEAAYkBJQQYAQIADwUCUYqnkAIbDAUJBaOagAAKCRAQBmqX
+BwkM+aaFB/9TyOSAJtb7qonJ8Q5Un4JLIhfTIaBj3cMHzP0ZbotpskDqnvRhUe9f
+OM0KG+OibqaW8hKT3ZQVVIJeSVUCDYyrWX93KPV/tiL5F+5WWN+/L6Uvp6598oiA
+ZvYBNNA5Gzn8kh4b5d68Qyr9W/2TAWm+jVYywlguNHsysLLTvPVG5OGK48/dYSeO
+2PyCy7hpxV0z+xDinDDiVjwXc+vHoTg8ZDILQG83ZsICO7dO5FACCpFuKu2mjDvo
+bcV4ajxKHNvnnNwFUxuGNogQOiMaeH62T/WBCdeyE8X0A+UsH6WVXmXkCSDxRD96
+UdK1vJJR/sRkoSFvf8E1KmFZR351/wZQiQElBBgBAgAPAhsMBQJX8oreBQkZM+ZJ
+AAoJEBAGapcHCQz5ax8IAIMnwmPs5nvuo6A8mSEmKXzW2M9K4CimmR2HhLtFoo6n
+HRcrL05I/XUq4YxqQLMmZeQ+N3lk5RVfZwJDIY3NzR/R0dGiRP4z6F1sz7qRPYxL
+faFA8anPzrfW8tNtD9QeXhG9k2H4WVYdPwQe7zKmyf42XrJSX8bpgxAoRdGR6atr
+VZFf4Dwgua+SdIrSpeiqXCqPVSh6xoQ6svNXwnee94zY8/R8I+6gqI7E0XaZY8ub
+q4Ep950wDEkOIBB3HsTgUauXd9vdkFMnO20JWZRujDcE6U4GJsG6OsgllB2e0m9V
+OL8rBTxpelg6gJCVVXLOLUbuZ9UUebjIiAABCA6V/9A=
+=HrWq
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    8D7F1BEC1E2ECAE7
+uid    Tatu Saloranta (cowtowncoder) <tatu.saloranta@iki.fi>
+uid    Tatu Saloranta <tatu.saloranta@iki.fi>
 
-pub    E0130A3ED5A2079E
-sub    0AE7BBD7FEE66E0C
+sub    E98008460EB9BB34
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFlMSXMBCADcgN0/57D/gU5cDobPiRuDT6qAxb/NWhQiqwAocKd274r4gPJm
-RbffUEZEgKhjH6l0CQfilC4R4x2QtU9sNC9kB/D6zumoS1uI0Hmx1pC4UseUy55r
-20WDxujUQ7OcJbpe2cDcQVKmMok2top7ZJqt4KVosQEeT9jjsgBBbEtg4cWb5ddR
-5rf+aJw0v/6dMLef1r9YAo0ZtLc+g2dyacqw73tcWEd3oCH++SgE26NntN+GibZu
-VXSE5u6xI4KwfT2vUT3jt5Fb29myX4sxsfB7n/xageuJYy5ms1ABS+WDO5ssEZC4
-eQEVL7eyIb9YhNAW/WtjeAuOfOKNonoqKFGXABEBAAG5AQ0EWUxJcwEIAMgrP3U+
-7YCibxSQKOZrp63RaSUkv7mCvQ3Lx4P4ZD/sDEsLOiKkAc+ZU7ETTIQkEpHaibvC
-ZNrA+R0pfAj0LYBLstEIkUxtAaVM4DBQGN13Zdup46fI8rPZEyZVb2XpZ/qS4RYi
-StFyJzUdazBJs/IB7CT0xp4DUFUOrsykVy0aWzWt4z0QBe1x3AmpAO/DdrDN5gvt
-mWzWbV3f783PuK3g41ju7F9XX5nuuatNSNHOHt65XL4vmhmSfXuP6UFjK6MKzq9z
-pbZD4ipUPoKEId5ONDSucX4C8OydpC8+rFWJCDDDvocox3/l6TzihQXf8MDDcB0u
-1TgDPz4M/S2vBh8AEQEAAYkBHwQYAQgACQUCWUxJcwIbDAAKCRDgEwo+1aIHntk2
-B/42pBknUQB2YjkPryJ1B1ArcxaLO7gVo/lgT/rLGL7BuTYsFIl9kJUD156EfkmS
-AkfsxPzwUNh/GyfVQt09F6wheprx1fLNJCFIYA9ZA0WVZGSwbE3NdiuwEaJ3/HZ7
-7IteQh5LKllqFuSlZ3u0xdtGJjnAUU9wHxWH+0W3RPm62piSJcWUw7CSqEyuX+8Z
-+eq4HY0v74znfy6GyCiil7S1T9fdan22hP3xiJHgVKtyFmhhrz6YxcZLa0fYl+R3
-mCQvt2FuiaLL3d/uH0z6EzWs+XZNbjRBTGI9VmO7siIy6rjatdult3Sx1quBCixC
-4Ms2AWEA7bMqvUmCoB2M/0x8
-=6Sqy
+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
+Jqg9YirnHcrlYF0r
+=gukc
 -----END PGP PUBLIC KEY BLOCK-----
 
-
 pub    E0CB7823CFD00FBF
 uid    Jake Wharton <jakew@google.com>
 
@@ -12920,177 +13160,6 @@
 =bCXo
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    E16AB52D79FD224F
-sub    5A34A5E06B936F93
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFF/4bYBCADTeOLZiVGNbjlPrwG7UcMl+yXmEqpf9dB1A9cuicH3PWXj0WOb
-LSzHjzoRvRekEqSUmgoveey1lPuA2qjOUkXY6Kiyx+oLiG0/ObJHUQW2O+tjSQ0R
-ZXKd4ftaw65SLbwYO2JHzj5fLC9j2mZQiRjGs1bWM58c/dOKp1XaOc1/ffcl3L3q
-Up64jWH9r3yhPemh5SHo47UxNvItdaJJYnt20azpZj9oq1ebUuQFMaQDc/RTALhf
-Xb4BWO+z2PCmChz60i/Ko2ZKPJV2TqPqWO+aklgxTTwZZ0IvgFm/5n3Dtn5p5iGf
-qwKkHPJIDWc8cWYtxC608LFdqiAlYmp/oPi5ABEBAAG5AQ0EUX/htgEIALToF36j
-45OitNd4k17BSZJKnuS3uIL3tTw0fRqLv0/3EBaj4zD5Qc5YTKFgM66Bb5ybI63c
-wYhfSBHP2ZRS7oNdDbPd/30jDKNvmcDjIhGLT7bZJwC9SJVifHuvtzr6wBR8xoIt
-yYva5D3ax8ZvnzqIbMPeHou+0ZnRYSPjy2c2TxAJTjDOG461h9mVXDdK74wL8kQs
-IxqqYRIeEdmrXMrd/B8IPwuIv8w7LwzadNgRnXaJ5Q5bnMvvhVLnWKRt5aiQVBxc
-67FTujjqFF4Y/1UJb311K+1LSqNrTT7As8nhf2Gu/Gb47kw1bb7wBdKv2Swx5mYq
-iW5+ARQU7jCiUVkAEQEAAYkBHwQYAQIACQUCUX/htgIbDAAKCRDharUtef0iT2Sy
-CADAznSkG/8EdIU5UQhp/lY9h3WLzYI7aARw0IA6O4ijGLwcytO7TaWjEzUCMZdw
-01vAjVH1xNn9QvTgQV+2GyqyBNsjmgGt5/tK/+JtMgXUwr8+KsBf3908rOqAAZ3Y
-GyM9N8sRsyfPB/PHfv289sL2IKPxiFTGI0NGS3qOAKQ5TZvV7OPsP5+yHfeJG/Xh
-CW8p+nkMGpH4rE8Z6NKgLe/WC6J36aQ4kBfYneueH90Dc400rfGyL+0Gn1Rzuj2K
-FuUFK6q/GBlFaNo0azCqtdpcO6C3GpJYtISxpQ1Rp9kSEzSCL3tOli8Xs6gsruc+
-vCSIy8lzRw19ZO9G7qhjcHLc
-=vO0K
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    E16AB52D79FD224F
-uid    Google Api Client Libraries (Releases) <google-api-client-libraries@google.com>
-
-sub    5A34A5E06B936F93
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFF/4bYBCADTeOLZiVGNbjlPrwG7UcMl+yXmEqpf9dB1A9cuicH3PWXj0WOb
-LSzHjzoRvRekEqSUmgoveey1lPuA2qjOUkXY6Kiyx+oLiG0/ObJHUQW2O+tjSQ0R
-ZXKd4ftaw65SLbwYO2JHzj5fLC9j2mZQiRjGs1bWM58c/dOKp1XaOc1/ffcl3L3q
-Up64jWH9r3yhPemh5SHo47UxNvItdaJJYnt20azpZj9oq1ebUuQFMaQDc/RTALhf
-Xb4BWO+z2PCmChz60i/Ko2ZKPJV2TqPqWO+aklgxTTwZZ0IvgFm/5n3Dtn5p5iGf
-qwKkHPJIDWc8cWYtxC608LFdqiAlYmp/oPi5ABEBAAG0T0dvb2dsZSBBcGkgQ2xp
-ZW50IExpYnJhcmllcyAoUmVsZWFzZXMpIDxnb29nbGUtYXBpLWNsaWVudC1saWJy
-YXJpZXNAZ29vZ2xlLmNvbT6JATgEEwECACIFAlF/4bYCGwMGCwkIBwMCBhUIAgkK
-CwQWAgMBAh4BAheAAAoJEOFqtS15/SJP6NYIAMbwdE5S9M/5tIhLPg2arbvnxfh2
-i1e2aKE6PcRlBGeNq8YzWQStIewRhoDbY4MY3dG0nX9wgXU6XFJNxjyjE5Gqpyrc
-xEhs6r+HfxlGwB/OCaDMGR89lcWn1xF7uju3Qsdkb6o2JuCSAqOh4M1zIqADSMMq
-OjuSJ13GddcUFQ/MEvouE7Leesls9AM724BNZfnyJjIfJqfk38rXCxKpMbxCJ2v2
-louDMu0LClA1efdvDBPOrc8+A74dsVh7cQqMoe5lCqrcoC5apMqlJ71UV7SIBNBr
-7+AD6p0ZdGY8C/pTCl+NGe/Skjdqk7uEbmyePpm4BaJTmbwIgiZdGxthUgO5AQ0E
-UX/htgEIALToF36j45OitNd4k17BSZJKnuS3uIL3tTw0fRqLv0/3EBaj4zD5Qc5Y
-TKFgM66Bb5ybI63cwYhfSBHP2ZRS7oNdDbPd/30jDKNvmcDjIhGLT7bZJwC9SJVi
-fHuvtzr6wBR8xoItyYva5D3ax8ZvnzqIbMPeHou+0ZnRYSPjy2c2TxAJTjDOG461
-h9mVXDdK74wL8kQsIxqqYRIeEdmrXMrd/B8IPwuIv8w7LwzadNgRnXaJ5Q5bnMvv
-hVLnWKRt5aiQVBxc67FTujjqFF4Y/1UJb311K+1LSqNrTT7As8nhf2Gu/Gb47kw1
-bb7wBdKv2Swx5mYqiW5+ARQU7jCiUVkAEQEAAYkBHwQYAQIACQUCUX/htgIbDAAK
-CRDharUtef0iT2SyCADAznSkG/8EdIU5UQhp/lY9h3WLzYI7aARw0IA6O4ijGLwc
-ytO7TaWjEzUCMZdw01vAjVH1xNn9QvTgQV+2GyqyBNsjmgGt5/tK/+JtMgXUwr8+
-KsBf3908rOqAAZ3YGyM9N8sRsyfPB/PHfv289sL2IKPxiFTGI0NGS3qOAKQ5TZvV
-7OPsP5+yHfeJG/XhCW8p+nkMGpH4rE8Z6NKgLe/WC6J36aQ4kBfYneueH90Dc400
-rfGyL+0Gn1Rzuj2KFuUFK6q/GBlFaNo0azCqtdpcO6C3GpJYtISxpQ1Rp9kSEzSC
-L3tOli8Xs6gsruc+vCSIy8lzRw19ZO9G7qhjcHLc
-=JOMJ
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    E3822B59020A349D
-sub    9351716690874F25
-sub    60EB70DDAAC2EC21
-sub    3D5839A2262CBBFB
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-bMW74dKTLoW6+aNn4F9nqCJ88A==
-=2g4Z
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    E93671C7272B7B3F
-uid    Rolf Lear (JDOM) (Used to sign JDOM Packages) <jdom@tuis.net>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFCPD00BCAC4tY8wMQTsCKyII/mMkUDAkXA2cLM47fY1Wn+iohtgtalUdA0v
-AhGvTdFU6/St35rOKNoyLC7Sy30FBYpAEfMB/x9j/CaQtdtGhaQU0hCvtWGhhS3J
-BJb3BIzhKuP2mx+6tgSPtP/meiF/K1GV8x4s+4JyrVxSFtqz+yp5szFNbIXA46cg
-UWOkzPhwA567Jf/8dUWysXb3lp59DG9anp2BQENwh/EmUhuhlPoM3PeUIPcZAiyD
-SMJCR/KooLzE78lAOK14oD8eV0qg3tT0R5RlsNKfFRRoo2bwwPhz0SUVqJlt7ehd
-By6ztFKej4M4ZKonnWUiVJhKEGm3dVoEAJTZABEBAAG0PVJvbGYgTGVhciAoSkRP
-TSkgKFVzZWQgdG8gc2lnbiBKRE9NIFBhY2thZ2VzKSA8amRvbUB0dWlzLm5ldD6J
-ATgEEwECACIFAlCPD00CGw8GCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOk2
-cccnK3s/HJMIALDETleTycLBl02uRg9ZRwPNWANajpfeJK9yY/SgpVfVn0ExXtY3
-/1Sgc0kZn66c1ohjv3DhLJYTL0GgSfb6FmAkvXMTDfFcm3hMMQKBPTUxRKw+gmgX
-ITrrZbXZcEprlF8GWlAcpv/9X+m5X+u24C0nR8tOtwZkwQa9oUKyUajYrt5KUJUN
-JoVpd8ZDWspXw7HkdQaC+tMjU1i8rypptfpnSvHFXSgH49pe/EAT1C88mx74eGMR
-XGJKL4VdzvNi+m8ECrM1GE9+EHBBLExL7NEd17N75ZYQq5HTQYKEpWZRCewOFJS6
-+QWMp+oawQ7VUApo9bhGSH1E7X0IcVsqVr8=
-=bCVv
------END PGP PUBLIC KEY BLOCK-----
-
-
 pub    EB380DC13C39F675
 uid    Mark Vedder <mark.vedder.key@my-accounts.info>
 
@@ -13172,6 +13241,659 @@
 =gTWy
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    0374CF2E8DD1BDFD
+uid    Sonatype, Inc. (Sonatype release key) <dev@sonatype.com>
+
+sub    F2E4DE8FA750E060
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+pA==
+=OkOT
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    B5A9E81B565E89E0
+sub    28FA4026A9B24A91
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+3JnT33a2taNG0TUPdkSq3adt
+=QSEW
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    083891AD4774845A
+uid    Eclipse Project for JAXB <jaxb-dev@eclipse.org>
+
+sub    8118B3BCDB1A5000
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+XCfM
+=930f
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    AE7AF7AE095EB290
+uid    David Saff <david@saff.net>
+
+sub    C707929E5065E0BC
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=Exzw
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    C29B11246382A4D7
+uid    charleskorn's Travis CI builds <travis@charleskorn.com>
+
+sub    97149CA7141687A7
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+WLi/z9M5/VqJKMD6Dc6RCIwKYA==
+=SsPP
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    C92C5FEC70161C62
+uid    Herve Boutemy <hboutemy@apache.org>
+
+sub    64863FF4D1BF1809
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=GWfv
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    EEF9ECC7D5D90518
+uid    Daniel Santiago Rivera <danysantiago@google.com>
+
+sub    AE7B5A78012824FE
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+=3gTW
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    3A1959EEF8726006
+uid    Eclipse Project for JAF <jaf-dev@eclipse.org>
+
+sub    D908A43FB7EC07AC
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+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
+9Q==
+=PprS
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    7C7D8456294423BA
+uid    Henri Tremblay <henri.tremblay@gmail.com>
+
+sub    9842FE565AA0601E
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEvsZw4RBADH20nX+H1xvMBYmXRj1Aae4dRr6Y6qI7QRWHO6Z7/dxr9bk/NN
+Yjq5KsVOQxZzloVdtqx75rznT7fZq98g7Nq9IeEtB6k4tnh6XQLhljJMk0a3mzdt
+q3VzdxeVbwCaPJ0zixv8XPTAH6MpRJUvP9XjzxwaYHrjwcQ1LslW4TrIzwCgi5rf
+jChLCyKcaL05gqUjl4lmefED/iqOwYZw5pJ8+X+OHUViiOB43wsJt1brAhPj4KgB
+ODStcE6WlHFKi7YzcYNLzYMebSGYn6bj65b3qNf6rybWD1hGUFK4122Q7+HCH9Ic
+J+rr8HwjGFo/yxI0/mkyaF0BthXYPy4WtdsdTM2kgx8Zr3Q2rSt1jBPuV3q8d27z
+FZMiA/9cWPkRx0RfAJmBPKmKkbBkEtBbNau3G7MY1OEAkEkRnzmnyyjr5IP84A7K
+RdjTCvkbiQrOQH00Ki4sHIg+9Xv1gDg1XLkFDzRARKA1TxjL0OeS4RWF3iia7Swk
+MOnTdhR50pjb18W8kB4mEMZY7duP4nwDfQwHMwbFZGHrjImaurQpSGVucmkgVHJl
+bWJsYXkgPGhlbnJpLnRyZW1ibGF5QGdtYWlsLmNvbT6IYAQTEQIAIAUCS+xnDgIb
+AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHx9hFYpRCO6PVEAn2zcXoOXcW0I
+7Ht0qnUs4ZMM84ahAKCAKHGR83czneSiWoCsXKJQo9ZQ3LkCDQRL7GcQEAgAthrb
+FDDbIGq97dbX1ZEwNGpjILdeumxZzaCc5PgldHGA86TL2V9iPpONJtv7/Csr1c/r
+vH0IA/BFu+0Kde9UP+z9JycmfJpIsd2Qtxfhn9R4+Td0VtN9NNkpt1+JcThbzyQq
+4UU82uBKwSG/wzubOI4Fn+7ypIuNgDkqK0STIL3ucKF/RV77PsOBeLHkCGKIVhUU
+fY1D51BWZKKB1efaVK7PLdnsi64lAhbaexA43dwUUtVwQOvDzJVtkycV2IMwXwyH
+onlK+4vbcwIH2BAU46LIZy+VFaI+lNNmR9+xeWH49oJYnMWIXif4RzvO1ag2KKwl
+G2sacuVTtpWVqKayBwADBQf7BGl4POKtluAbX3a/KGnX1YyibPT2e4pdOxqbKTwu
+Rc7ILIK/LVcejVuLd+eOF1QmjToI7Y3qjlzvtaxSemfkxbIQpdus0SyHEEAGH/qj
+NuTs8ZwEl9tPPrKaJHbJ9kQrlDPwkufA0NDAXTE76UhcHPY0DeykAKEw2ravEqI7
+Y0nXR2WSmRLFChmQ+aNTm/9UGI/IoRdS/dgo1eaLD/7RLFeL5tGDe+2nj+B6j+52
+nZEmaRCWWU7O9jYL1cQu5WTurtneCLtIqehLsjuVz9ihBysYuUcTOV/6W0AIclQo
+MEiFR9Kyv0owDk6LtX2DgibJuAvvLlnajsiGm5nyVh3G1IhJBBgRAgAJBQJL7GcQ
+AhsMAAoJEHx9hFYpRCO6iXUAnRcLw17lBhe/WcKFRkzETSxaJcjIAJ4/P1NNOn/e
+ScLdx27sje7q3sBENw==
+=TjvQ
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    F42E87F9665015C9
+uid    Jonathan Hedley <jonathan@hedley.net>
+
+sub    6064B04A9DC688E0
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEtsF2oRBACcai1CJgjBfgteTh61OuTg4dxFwvLSxXy8uM1ouJw5sMx+OKR9
+Uq6pAZ1+NAUckUrha9J6qhQ+WQtaO5PI1Cz2f9rY+FBRx3O+jeTaCgGxM8mGUM5e
+9lFqWQOAuCIWB1XPzoy5iTRDquD2q9NrgldpcwLX3EVtloIPKF7QLq72cwCgrb5X
+R25dB8PUdZKUt2TtJbjB+SMD/1UzAPirgX0/RpL9wUR1i14yIrTfpFP/yM9PE4ij
+qcZ1yafVdw64E1k5W4k+Pyl4D8DvSJvbJHvYjg8/G9V66WzaKcv+987fetUuePvY
+/rwxBPztqq8y6+hjBc8QVhZGWmAoGGEFO6MIGsSyN5ohqPMpNXkczIo+NMvDxGzz
+ld5ZA/9awGTsigBdpBK2F6GOmbvBv+Xebu9rbaJvBvP+npNx01s/f5sHPCxmBTFk
+m1vtaMdZ29RovrWPSZRj8WWes0bcisw80250r1CBlYzGzqEVZ7b0Hh2RfkfaxbYh
+wikyfTfA2iX8TUGBgirsZbyegjUadElhwFNDASnvLTEuQKeVLLQlSm9uYXRoYW4g
+SGVkbGV5IDxqb25hdGhhbkBoZWRsZXkubmV0Poh3BBMRAgAgBQJLbBdqAhsDBgsJ
+CAcDAgQVAggDBBYCAwECHgECF4AAIQkQ9C6H+WZQFckWIQTzGEvNVfTQFuMNTJv0
+Lof5ZlAVyUaVAJ98o4QsLXrRWAe4qp2AePIJa5pRhgCdGrNdOEgEImKoSwS00vWE
+RiojY0W5Ag0ES2wXahAIANLGdCWb1qCiBm/qOjDsCOqd7jG/olgcHWH6IdkT51GX
+QcBoSY6d9gok7dmN6mBHKguTbxeRVncdZuSjkHtTvkBaKjypwtWz4/bmToy1ape8
+ebUsAnjyGjDQfnzMRIeYWMC1rQc/J63Qj4MJvpwMHnKBPGH66Zq12ZP2C2pOeBTn
+hMC2Gj/BOLthR4hKjflpijIyEcC81aWAK1kQm0y4UkiskQcu1MRKL1B/ZiGuGLlO
+D29keuC8KKTBwgZuaMNFPJAsPL6VuNBqwXP9nmiHlwl9lye+xPbPWT4FujKCeiHN
+cVer6CySiBFfLeOHXijUsA31TWR8cnpmimvPxoKY1OcAAwUH/1My+ZV0Zsk3Sakb
+xyH1Fd4OAN1++3d7zq6Gm/CisODBcti4k4qDe27SisRPeyY6dtWGRXeyqZn7tov5
+K/UFSaPg0sXtqdsXEKM8kvpWsjyvIf+tS4cofL481eQFFgOWbqfj+yYf1kZYfRsb
+NJNL4pmDBSiJsN5ma+BAPFAo9nvOVyBzRwXdAdVSLpKuDo1OEIUa7rTXmyMtxmd+
+cpXGl0+b9fEav4kSQLiRaAs11GhPdP1ff9qG/ANQmBChi6HLzkIAbI+/toD+Vjj/
+lsSOE1jxDUSjFXIVQRPM1fu2GYmoTwsDkK/U0FjGlCCcWfOcq+zvA4STgV9wexBy
+H6aAA12IYAQYEQIACQUCS2wXagIbDAAhCRD0Lof5ZlAVyRYhBPMYS81V9NAW4w1M
+m/Quh/lmUBXJfs8AnAyiCC2xgVDR0RmOe5pmecSjFmwrAJ0W5jNfBpStUykXDnKq
+hD1krrLqx4hgBBgRAgAJBQJLbBdqAhsMACEJEPQuh/lmUBXJFiEE8xhLzVX00Bbj
+DUyb9C6H+WZQFcl+zwCfc7b8hD9OHMusz/ZR7dKl3a7nA34AoIdTiFJNKRczWAbd
+z17znsg+RUG5
+=8yMs
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    BF984B4145EA13F7
+sub    84761D363E7B0FC4
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBF7rgogBCADU9OwoEFdIgN5U0JU5pI7s3T1T1LeDMzAQ8l2Hq4jFrhnrjcEA
+ieDSut1YIv5NTBoZv4CrklaKvvQNUXPvKrFImA4OKhBodKV3wsq2efCATDGa1JAw
+VEJx6nJxxMsCLCJvmZsD+YE8/DIBI6jjnjh8jagZVkxkSRPvUIxlZCxytIyqXI0t
+O8pLh8+8p5e0PgGb9OoszxEQZdBavsixdpe+0feU9cz0l0jJYx3W4ErZeCGGwNat
+UUiW0ctb3iz7BkNhhoV9zepxkSLzCf5zBeyA+WfD34028pAfPpyAfDYXF4x55sVP
+/3MdWGB6eU6KzPG2/QV/6or5E+C1yCMrnMy1ABEBAAG5AQ0EXuuCiAEIAMExiS4A
+u6FPSlMyjCaT8EfxP05ey79rYSSZd/ixmqyVzJkXYbf/SJCBeX9+NtWU3LEuL0L9
+WXgAA9Ys18NaJzBMC4kiQJfyXK6Kak7sUfZWWvx3Ad3It35X4svJNuR9GoqgsOvC
+D1SPgK7MfTcAF8e4j2UUqgRnjM5S6dRa6AH2s3bCj8GE+YSH9Ag2osNcKBgosNiv
+w04tYh+sjx8W5ehKaOEMrBDO8OMYVeiIEOvBIjsCZpJgAnOBPh/7zIQ72tPa9Ou3
+nAWBwdiPBgqv5FTIVmHWMfAJKRRCW4ri2hN6toHGrjJMgobtwW56vTibb82EGLdY
+3BF41DQT2MEiM1UAEQEAAYkBPAQYAQgAJhYhBB0Ki153xninxyREWr+YS0FF6hP3
+BQJe64KIAhsMBQkDwmcAAAoJEL+YS0FF6hP3VWoH/1Uhih+Q/iJIddvBatWdzpgO
+e03ppK9pCWZ2KepukILbR8bpX3cqUiTbFD3W+ybrrY0k4Oe9hXcm3re0N2GAfEWf
+tRknxXH0TMeyWoBlldfSM5DjrljM88XAIkk/T2wcARv1PC59IIZGKOpixItF5Pps
+YII4YzlripU98sXBTSlJLU1/UZaT7XNOZ9O1/PVxADpVIeH6MVdWh4W7AV/dYZ5j
+d31NbXDTtyDJBUYoiq2hu10+RNoqq28WmJQGD8aqIuKOpeBA8EirLcRoDGELSqYT
+lQyC8nl8P5PgkEZ5CHcGymZlpzihR3ECrPJTk39Sb7D3SxCW4WrChV3kVfmLgvc=
+=WqT9
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    E93671C7272B7B3F
+uid    Rolf Lear (JDOM) (Used to sign JDOM Packages) <jdom@tuis.net>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQENBFCPD00BCAC4tY8wMQTsCKyII/mMkUDAkXA2cLM47fY1Wn+iohtgtalUdA0v
+AhGvTdFU6/St35rOKNoyLC7Sy30FBYpAEfMB/x9j/CaQtdtGhaQU0hCvtWGhhS3J
+BJb3BIzhKuP2mx+6tgSPtP/meiF/K1GV8x4s+4JyrVxSFtqz+yp5szFNbIXA46cg
+UWOkzPhwA567Jf/8dUWysXb3lp59DG9anp2BQENwh/EmUhuhlPoM3PeUIPcZAiyD
+SMJCR/KooLzE78lAOK14oD8eV0qg3tT0R5RlsNKfFRRoo2bwwPhz0SUVqJlt7ehd
+By6ztFKej4M4ZKonnWUiVJhKEGm3dVoEAJTZABEBAAG0PVJvbGYgTGVhciAoSkRP
+TSkgKFVzZWQgdG8gc2lnbiBKRE9NIFBhY2thZ2VzKSA8amRvbUB0dWlzLm5ldD6J
+ATgEEwECACIFAlCPD00CGw8GCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOk2
+cccnK3s/HJMIALDETleTycLBl02uRg9ZRwPNWANajpfeJK9yY/SgpVfVn0ExXtY3
+/1Sgc0kZn66c1ohjv3DhLJYTL0GgSfb6FmAkvXMTDfFcm3hMMQKBPTUxRKw+gmgX
+ITrrZbXZcEprlF8GWlAcpv/9X+m5X+u24C0nR8tOtwZkwQa9oUKyUajYrt5KUJUN
+JoVpd8ZDWspXw7HkdQaC+tMjU1i8rypptfpnSvHFXSgH49pe/EAT1C88mx74eGMR
+XGJKL4VdzvNi+m8ECrM1GE9+EHBBLExL7NEd17N75ZYQq5HTQYKEpWZRCewOFJS6
++QWMp+oawQ7VUApo9bhGSH1E7X0IcVsqVr8=
+=bCVv
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    34918B7D3969D2F5
+uid    Brad Corso <bcorso@google.com>
+
+sub    5CE9BCD2ED28F793
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGNBF0vfHYBDADEDPY9ub98c7jQe4yMbPke3A/sxNHnn0WuA9JN880DPs3L7lrv
+9VHTOlFXslDNBPYSbgFXH5YlMGg8ZY8bhngjc+Z3dtrCX1cAjUXOnibi7fBFomLB
+xvKzTHyWprguV6B2YAldKpqA4DtecJEF6jusNPptSpMN2olZGcxVrTB1s75eO5Lr
+MRIvZoWxvkH76KxisytDh/Z3MJMi9fFD+2OMsC/WynOs0TIih1T5U2jCz25dwkez
+zb3Bd4G6E85fS+weJPXMRiezimF8WyFN+dDrFgpwWqgA24jbKG/tfF6sAuvGmPgw
+aKIv2VFrdstqfCVC9p2nzuchIDS85f/D+fEjBsSj8spUzA15rD0T1/9BHxtW+L92
+fcTs0rTGT4sP5HPl2aD9R/NP03Ywg8bDqcBWofTuCMtfDz5lUBpeOPngByDiKtQC
+tpsB0PyhPoMkrn701QSkMXPO6yLP6VZH5f9qhpvWrHLqsd4GEA+PoRuBJbYoDErq
+5hLW0Sgi9qDyzLMAEQEAAbQeQnJhZCBDb3JzbyA8YmNvcnNvQGdvb2dsZS5jb20+
+iQHTBBMBCgA+FiEET4/sZ4X2EdmnEuonNJGLfTlp0vUFAl0vfHYCGwMFCQPCZwAF
+CwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQNJGLfTlp0vVP5wv3REDfOtp+58Vx
+uIVZon9IFopwa5vdUYH2mIO5v4QHW6WXOcnw+MAWM4JxUqmJVqGOWFQIxs+cgalN
+LawP1uE8+Tj1e0uFx5e58UV4BGWrUuyuIwvKoGLsE8O5IO2+8TftvZh+PV6rWVeX
+K4dQ6Shg/+1HkaF4wVc0AiM3kq/+xE2/2SVluNi8XU+vUvSs522d2mfgnjkQ0f/o
+2rG9LNVIIazZt3hd8d5gHeDnVoCmF0Xhs+KLFmkJxgtPxSLUba+kmGl8g3Smfk07
+5DYpCXk4mG8E2Ku/JyGr+k6GVmMjYcSCPA77m7xk9LQ2sZYZAONLNW240hcS/lNt
+GDSfvNjNmWS8X173ulKDNgZhc5MWFD+g+UZIutYjCWA4OOWjdbYMs/ehU3AGANbB
+6z2fg9lll/HLsc9RyofLJLTzqZYffCUcsx4nJeqgE4jXuj/7tH4XvwpIUbX0wHRw
+KKdviRXH2YFLZaHYdGsySB2qjAUCsd0Z5uU1NiljWwiQR3Y/w7e5AY0EXS98dgEM
+ANAIhsSWs2+DaSb0X/Fg2+P0lCY5wlxSIAMlxiokqPA8y09lq/hg7e3oTyrvdxAS
+6YMg42uXhmdVMhvgoEQW8qzGVug7GpEknGg+3hHyos9JQmokNGhowyqxxrFG/opN
+LeGkEnqBri2LkXZ06+qHJERYJd+MSFVysE6fidp6g81/NlM9AsoanZEcr+RFO5Vs
+uxW7oSnUzI+62PizU0Gzs17clO7ESQ4/WasbqFTZ41kzPuihQe6VqyCcNm+rqqtg
+qgE/LGbtXK2k8Hr6NbwmyO8lkUHUqhBkzze6WIY0sp0hjrYA1zef6ISnTBBnMiyS
+CM+8KVcqCpsLOoBhKLP02XnjpKkKGe+VgMpgvZ+Oyj1zQmLcrCLpwsSYDceq0hVP
+iFoE7Lg9tVpbtbra2xzAJ4MYUMoX7PRfg/lCGa+acvQ3hRO9yOeYtWFlAMQvGjSB
+istOzE7IWIaLJMZDa0UwwFcznr6gud96gyxRGtwsB8Sv7pR4qfR1ZrMNcDeLRi8u
+nwARAQABiQG8BBgBCgAmFiEET4/sZ4X2EdmnEuonNJGLfTlp0vUFAl0vfHYCGwwF
+CQPCZwAACgkQNJGLfTlp0vXn8wv+LPfK6xp+GwbjOHUomFW7JAoOKeZF6gF+tMG4
+RO7bLp/BvWrAKnHjniZPtpGC0VoRAe01Bb7utCMPCfwIyC7bE/jYjboTTGUB+zm9
+yy0ndZ06txt8gUSdKtBYRS6Zfh9agyvWba44LVzLy5J0ZNE+MJK85PGaYZYFuAB6
++GeHc/7h6BvVoESB+/PutySWh3Gp+0lwqWcd6GpZ1Lz5LIzXP6+LcqThJzMwyAKB
+Q1vdkmOYvQXWQAcBeWiXGFmOI4OgH5anIcdfDxqEaKovP2nPoMtUZ7p6XTEr0Z/o
+oODmN8G8PTen1EGo0pz6BhnmhNShhAguYebH0u891T0JiYh6D96wNwriF3T4YmrY
+bMk0hmSgFAz9uLnGukeH1kmfBasAmrvMhzHElY8UrjOGm9kaUJj3/12cKKcf56lX
+R3g85vtJR8LP5d+s5h1Niz8blQKCAJWsHEKp2r3B0ig+CLXylSorSstdsh7/RDUy
+QuOcn0ypycYY9I1Xl3Z/9D1jxT0Q
+=pU+S
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub    056ACA74D46000BF
+uid    Norman Maurer <norman@apache.org>
+
+sub    DECB4AA7ECD68C0E
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: BCPG v1.68
+
+mQGiBEoo3BYRBACXE2oGRA58Ml6s+kvfk6n/AJ+5OFeRT/Xelco/cpdxOVF5LkRk
+yd+vR2+F9ldBlH7CSTCmrdZIN3M3zrcWndrk/OQkCxNWVnE/a1li7L3G9nYr011k
+MwMM8MLkdf1Wr+FBunf1qpxPYuydfjWGFL749hYr4uQ8RbFDRQcmWLYCRwCgl+ur
+E28AmiICPcje59DNKHZZxd8D/Rk1LcZojARyMPjEsPOVSOh6kOaJQ/FOKN0j97k7
+ZqA+4C+OnIONSy22uMia9xO5g8oMLyHaRiA4S7JSIypYfX7JMCmwQCSLM/oQ5zct
+tsY7tGzCRBA7UVmW8uCDDZGmmzYIGQ7h1vcabgOFQ8wsteMHW3F0tU1K6oQut71x
+5KowA/9LeDjhl3tKizJn5hKf+NR8kTMcFFVMk8tf9/ZdqCG2gVTuB0EFimH47j1+
+YFWftvKg2IwF0qRnYuhpXn3kAtkzSwDr2T4r5CpDjttq+oBwhJ+N6lcPRoU26ijr
+nQ61Ek0jFFE5vfU7UODSLYXYbjf8McM6BtksY1SWfFBU5cVzgrQhTm9ybWFuIE1h
+dXJlciA8bm9ybWFuQGFwYWNoZS5vcmc+iGAEExECACAFAkoo3BYCGwMGCwkIBwMC
+BBUCCAMEFgIDAQIeAQIXgAAKCRAFasp01GAAvwh2AJ9HdFLGMuAGkk/wSv6dr6gM
+Xw32iACaA/Ez8jdn6/8kp/RpqMtUnl9c/Pq5AQ0ESijcFhAEAJIGBbVgN1O73XVP
+oGlZdqPd9n5QOjIy9cF6h5GBXEUDy3T+iVh1ak6Oqn1g3Wd0v2XgQ40gKWe/8O3M
+FhWkJbLENKhGyc9dLIpXDt9WIKfV3PNbblI/FmEYFqeJDNZUfaf/F3L3Lw0Z2YE1
+f0Kr3J64xuxJACUjAzXkssEqVUQ7AAMGA/9Tfa8rJD06apF3u22qd7DNao6UlUeo
+RIdluCpHfZQ10nEDTnFz5wNzHBlZDDoaketUZ5IY72hRKMcLMWRI5MaktQb9XvFp
+zhiGplsFGnzCBI99AqTsxy3m45AdVxbcVy2Lfeh9gzS+ZnL6m49Xf7mQuqQJatIX
+mWyplftyWc3XDYhJBBgRAgAJBQJKKNwWAhsMAAoJEAVqynTUYAC/qnQAoI/8QMuu
+PGrvivKDTCk2tA60w51gAJ9brzNybLCs1HYoPtjY97nOEy0tmw==
+=2BgH
+-----END PGP PUBLIC KEY BLOCK-----
 
 pub    EB9D04A9A679FE18
 uid    Uber Technologies Inc. (Uber Technologies Inc.) <developer@uber.com>
@@ -13243,38 +13965,32 @@
 =fPJO
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    ECDFEA3CB4493B94
-sub    3BD211F725778C36
+pub    BEABCFBEE059E4E5
+sub    6579F3D193AD0019
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGiBERFeVERBACjfASThn15ynIICr0Gu8quGCl2rSSRar8TsjrbiwYB2MTW35Rg
-NjLU6MN5Nq4d5G8D5aMeoyGODstIHH8zA52sDGeHOMKfDaAraL+lGzElbpmaqP2s
-P+y+J4gDMlxSBoXY5HjfZUTogP4olWYJS0tWTFc6EiXcSH1zCo1rdo1TTwCg9/U5
-q+Us2XbjevKghRbRabl//R0EAIcimKSJf1w/3yVwrYeUh2Op0fM23y+JUAPcG8SD
-lRnHRnIrf2e0pAkQQ32us1zRaHbuHzcJc0lP1eyoQh0KoRZIUq/7mj9q6Dp3H63b
-VNAxU7O4DyPMMmlgTiZCjwN2qBclZ9zegGx51v2UR4b+qKhZZCHOSjdj0Xhq6P1L
-O7G9A/wItw9LtJhVBqXVxL/pNVNA++NneLMdl5OpAAqJtI44oflJpo/FJlnDFuHP
-ueLYZVWWGoOlPW0odKxI3fvMO0ZfTtm4VO0mjEN2kZ/OR8L3c2Tdx9AHS5lVqIh/
-T4fRqXl/zjbdE+ZqYqhEYelZat3V4EhBAmj2jFQiHsSbfMiSerkCDQRERXljEAgA
-3nHJ+5JvtwQIFzw95ZTPdB/4+Do6JzhZssC1L6ZtgjDh3zdEDbloXsyroawwcY6U
-+unak24iTXlbcI/IgZnYIzZcdHM70hi9KtfhSAMRDI+UaFsxLhvx8hcTUV0fzx+B
-8q6nvdI/8fnjJ6Cr0EaCmWOqEjERs9NL7va7Y33JirQQ3pwe6VpzaejE+OzpqQMA
-vfhLw9ucq+l2KGTTk/LccQU3sUIF0osAakPXbTPDHXFmqWkIp0GQIExCorW7FBbq
-+4Edd0n4H54z0kP/BLh3M6HgHTUQurV5yw+/enSv7B0wJPiULiUCWN1hb/Vyds9W
-Yo4NPL/MIlxH/ZVTUids0wADBQf/WpR4MjKrxrf6G20J+TXBnRV7cZPdx4FsUE8s
-CQFay4ZzXP24tkmWXQ1b8AcmUr6opnuMio6QXV1lFBIU2rrdoJ3uQihrc21cTE5/
-FzYkFrWH3ESlOuYUaqefWJp3B5i8lNoUdShAK4iwjxsM6J1Mnl/TT5V2nwvB38Co
-AcuKQTmUGNOAnECAPGmTy5NQ2YLZzRMHn9HzyWpNKLAEkp0qN9EVZK5TBGSnFP0f
-BfYPWHg+kaLVzpT3KhkzSGjE4cyWoyuIYwSb6/3FLnaCCalYaC8k2mEhw9oFaJc8
-yyIasKaoAnbPWdMXQR32ZSTUwWBd7GyA9U+wLaNamJramQEBFYhJBBgRAgAJBQJE
-RXljAhsMAAoJEOzf6jy0STuUac8AoK8Mz00VwJP+L1IEB+9rlPaWwPAkAKD1W5wH
-sZzmsaj6pFkpumu/OmsStg==
-=rjff
+mQENBFOv78cBCACj4w72ksYDdLAY3GzwpRa1fo6S4aF7r96PitlETY83ct7AVF7j
+XaBGk5ylNAZXan3vlsSAKtxlI7skZOE5iKjqDo7SUfohs1WXdmL765mUNsSmkbG+
+WMOwDneg7Z6+licSC780OUFbifiPOKpgzGuaj91vrNigOmtyA+cbIHckhy+t3/PQ
+w4fO0S3RyJvQM/aQeDsyvhhBf2QzrUN7RQSfS69n0gtlVcu8usM7FZwOlBDGVPqi
+2Pauuj9QEyQIqnn07uWAUTzKrWF/WtcAXmLMxs59VuVRC3xnPVxekQTcJeCKas2L
+Aaic1HKp3AfTOT7+Ao2RRg4GpIiFhaJpul0dABEBAAG5AQ0EU6/vxwEIALyM80xq
+kaopZN0A1tNL6KUnoLZx/Tme1qp10JQ+AtYP5eFqPpM2yQIkFgWoQFFRZ3saPsqE
+jYlAAeyrRLOJ65PGRycHckckdhyEmGFCbHl4bJl3qnfJZuAqOSUlmxMwvhFTi7Hc
+BCOcWOqCBm99Y91IIy6NGeB+D5Oe7RGox4a9iDDh/NfyYCTTRo1vR6GW4JK5y/oJ
+GfWGx0U3CkzrwPw5efhCgSXmo0U+tQyUSWKl+J9DtdR+kP5mNoWOOxYMN3w4D68A
+IDXdD9ECEAXZKcKAlEXQ3AkVQ+Gfi24S4z5ewsHm8he6HFOsYb+FYtEByeydskWl
+U829LN49xrG2sm0AEQEAAYkBHwQYAQIACQUCU6/vxwIbDAAKCRC+q8++4Fnk5S9M
+B/wLDuqtJf1ANTTf7pyQBmjyeD9QE/Tzv606tnLxZwkZKqtEa/+3EJuPJLYOVHkn
+XpWl4VlMdJv6DEg4DrOQuJDEvv0R7YrIRqKZcZNRn+9donI6PI9jqrbY+8ZWsoA1
+kom+hU2VEoutPgxkZsZPHMj3LfWTGouTa3/HEOP5cxi5leiqJmYLKKBXJs4iMNBO
+BsqNQQjD/0rLeyh1JlVF/bpsapQJJ2kijowt5Yqg0rPOC2qq7EQUV54EVhiq4+40
+iyn5JNPmXaRHH8lFCavNWLNUh9HxNZHUOb7/UmFG9T77reY4ATTl0hZUYKdCYHeX
+eOq2bxXEhHlRB6yktjak7zk8
+=y0Hp
 -----END PGP PUBLIC KEY BLOCK-----
 
-
 pub    EE9E7DC9D92FC896
 sub    3B7272A25F20140F
 -----BEGIN PGP PUBLIC KEY BLOCK-----
@@ -13301,466 +14017,323 @@
 =RmVV
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    B0F3710FA64900E7
+uid    ?amonn McManus <eamonn@mcmanus.net>
 
-pub    EEF9ECC7D5D90518
-uid    Daniel Santiago Rivera <danysantiago@google.com>
-
-sub    AE7B5A78012824FE
+sub    7892707E9657EBD4
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-=3gTW
+mQENBFdbSfIBCACrFI0ai/abnV2U2Wa9QQZwGk3Fegc8laiuTKc0GoYdyptd83/H
+hD5S61ppdkOugBjVTHdgda3xJ7zBZdnwjZvV/TyayQltbh6hU+BMlEolzXLgyvY7
+cAzKE+iKWbLLwfhRn1iuC7s5l1NLPsh44IUt3xDaFXNQrPO5OnRz8bqsGFVawxmu
+2bPqIjkhxEiYpxwaZZbDkgBR6rbBth6A7QOadQcj/9wNdekoM9dyg+olOUmnLrtA
+nMBhrvvbm2fZxTps3SZHlLV7+iSu71B5SqU/kT54/49n8vxrQiGvzp9K+t7c7EP2
+w4Ax1nYpRkCxYdHOX3YBdayUiP9ZaYH/YHtLABEBAAG0I8NhbW9ubiBNY01hbnVz
+IDxlYW1vbm5AbWNtYW51cy5uZXQ+iQE3BBMBCgAhBQJXW0nyAhsDBQsJCAcDBRUK
+CQgLBRYCAwEAAh4BAheAAAoJELDzcQ+mSQDnRqcH/Am3OQSYYBFrtOT3Zrf2NEma
+ojd48oWZ5xODFmqSs5ksd3op9qakbqkxITzq7BP6CkFbi2NEWYVbPp+jiSiGr02L
+yNA9ipiMBDyVZ7CXTBYqCQZ/3yQKOFN38U8R1SnoH1gDq/YdxDkSkWZEWQlXj4T9
+QR/fXWObN/oIdVDNONL99nqU0+xSvsE+toVHTH7upY7RcdDdnBEarKrifYjbCvpU
+0yiOgB1WOj91z/BrfpBFyJ6/qW2/qJun1Ja1bdpKPm0ZbTCupYOALJhf8dcznNDn
+gVCEB6L1+s693SuU2ZzFkdykpU/8WxlhjJcSqTpp8BIlwlFyOmZC7jrxArr2Jk65
+AQ0EV1tJ8gEIAJVavNan4WxxlwLwvnBj3/wcEWqN+kfMHENMSjmRWOYSmC332hhG
+LmTDi++BPWt2OOvHUusJV8dZP5D9yUBRFsKozIpyXyS76C5VYGMY8WZ6kyqn/mLC
+iwmnkOJ24kXLaaHPsQjv6i5f2KliDVhAGUHmNMJgH8o/GL7zZ03Mb8ZlKFZobp0d
+n+/lxoOtQSzR+cBz8NvMBkOKD8r4PJA6BxCR1HVEHsq4xSnjr/UZOYvh+Kaxfnop
+7Rn9in5MoY2rCY+PV59Xbx4grqNpjupyHEf1MHodJRj85JiClnLZk7dNJ/kr+zgg
+wbsd12/GHkBt/pxuWhe0eFcAOJmvqC3c4pUAEQEAAYkBHwQYAQoACQUCV1tJ8gIb
+DAAKCRCw83EPpkkA54FACACFZB2Tk96FQkr8+WHOz93CJs4UD88PosLaKmiXKP68
+arjH3y5jhNLBzqteZo0Crfw75DYWIZChdf5uLGKCWXBEytF4uoHOy9Lv/3emoSee
+nluFVcNjL7CIOQDRmqw1t/LjnsLbgvlwHix5f7I6Txu/J0HKJbq0XpoTqCzFK6sx
+EPHH3gZto+XfHk85haKd73SOM4edkmJx+jDXES1wb3K3SpYibt+uPVfLYXWxK7xA
+aztESTIqZ9RnYHzd/7z6DO4z//lfB7IVAqvM8ga7Qj58ObeqZxx2iVit5WUZ4cE3
+0crNGyXH/HKlAp+B9EvENnwr++TI1CGYthPLFHFc831L
+=MZeq
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    5A68A2249128E2C6
+uid    Tink Developers (Signing key for Maven artifacts) <tink-dev@google.com>
 
-pub    F1F111AF65925306
-uid    Luke Hutchison <luke.hutch@gmail.com>
-
-sub    EF375EEBBDEFD775
+sub    4E5C59DBFF7DACF9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFS2J+0BCADZI8RYk32YeO9gnEkY9RN+4dKb+H1AR4v+IGxmy0UYy+O8bo4m
-YzkQHTlPpEPGe10/quKk1embDifEfNa9mwcSJl+XUPFlTrSA97SR31mdyK/Ua146
-GKMW0F6v8aCgLUlm9BCJo/OmOat2jsc94SuKnPiRRywhmapte/8o9t7/0GghqLyj
-X+Ifz4WSKyKZ8oe9mRFg1ZIA+z52a8QnfyI8WS8bpGHM/dXkBXZpzIDlrfKvoZYb
-I2DcbOotJK/ZzStAZ81e4E/q2BEw96NUKJC5X+G8qahEFNJDcJz33UAxLiTFqWmw
-iKLqy8oL8p9qPYlx0IAXoW/GxV7E0rBoA95pABEBAAG0JUx1a2UgSHV0Y2hpc29u
-IDxsdWtlLmh1dGNoQGdtYWlsLmNvbT6JATgEEwECACIFAlS2J+0CGwMGCwkIBwMC
-BhUIAgkKCwQWAgMBAh4BAheAAAoJEPHxEa9lklMGaJIH/jjzVBHF28G+gYmktFGh
-zhclmHsEvfqNEgaWkjyUOVTlccA5Ej+8GWrumWqX9PJbHoZVJWeVikkjFsTltspx
-bQkIv+hygvqIyMBJLks32pLUCXlWrxOnTFTljWzPhy3TMeBzE5Zgt8YhHwyuLGRu
-roOnYz/1VDY5SHB8ST37VAr4lZdwslAwW8RLXAXfQfbKnMCwjNBZf4FmllZk6GWM
-3YyaTuWtQN0qEJ7y1BZJYZwKC7EFGk4viTuoU3gFC5uI6idcmFFBWxgYmnkbQilc
-akbBGU7qhsTyyAWxPlKZg7ldQoLFrZgoO9CAdmLLzbCyPM0w3MpPa4Szw1nyJb5r
-Qjm5AQ0EVLYn7QEIAMde+nVUcozJy9dzLCUpn91SCoWld/wTaSckxTnVMcr4uNLl
-JI/2PFjMb9ya91grr1yuwqSG3jE8P0Qdk9Bi6t6NkMIGUSJuzyIipsDDWaiCfjWx
-s7seFd9c+rgcH6r9CaUbNRfUrPqEZSeL+RDwIIz1gQkXmosF94DjZHP9abZYObH1
-/Or64CSRD8Ocf6kTRndwJOZkRdDtUX5NPFSiU17E/DoEkyryuXMR+Ci0b/hjQ4Jn
-riGeyy6c0StWQUW18SEYPV0j3VyRRUcOLhJajEu8KU4Xaaxgb/2X7o/BosjjQ8BP
-PUdTz2wRluU/1tKUQ8D+O8QH7dCR3lJt76kKWbsAEQEAAYkBHwQYAQIACQUCVLYn
-7QIbDAAKCRDx8RGvZZJTBvJ/B/9vrvZR1pFqDfux/ezze7ovgYF3jkxfQj3Hqgx1
-GvLYdvNacZiJG1bfGRuoEvLPv8lPIfEBTSqJGxzRiEl33eUUXlatI20Dh4oeRYUE
-70hCfqRn7cqITJ7nXwctMZGtwSLduNa4+cjKdSaWq6kffpQVSLrjvJYyxk8td+Nv
-CLYiTDnyybAmSGge44RppDjwGsQ+9X8wyd5b9hwcBQOY4UTm/6RPDJF66KPlPaU2
-qy8NeQB5AcO6goAdGI9WwOJuxg9IzULwpCvRYB0chLKkGOBh0vuyQbHoRmI6gs2K
-/I3i0q8Df30ObL7oBALsr2QfkkKatq4qx+xU7QMdeMs8STRj
-=CCVw
+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
+=TnZo
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    5A68A2249128E2C6
+uid    Tink Developers (Signing key for Maven artifacts) <tink-dev@google.com>
 
-pub    F3D1600878E85A3D
-uid    Netty Project Bot <netty-project-bot@users.noreply.github.com>
-
-sub    1C9F436B883DCCF6
+sub    4E5C59DBFF7DACF9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-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
-eOotdxJF6J5yWErznxlExP5YBIHvIQljCyU=
-=WKVz
+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
+=TnZo
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    5A68A2249128E2C6
+uid    Tink Developers (Signing key for Maven artifacts) <tink-dev@google.com>
 
-pub    F406F31BC1468EBA
-sub    4BB1ED965FF68B71
+sub    4E5C59DBFF7DACF9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBFmnALcBCAD1KazT9eswNXzML5+M72qhdIX4VlJrrOzeiQtTW9vbXj7DZUnw
-U8m2bNmKHtpnyXQ3Vl7FE/e8CKGUVKmB854VJGDSyjToeAnt8A0Lg4smaSfgbEim
-rVi6jkgSCjzvNFUsKx4uOCkI59lbAWcww1aoQZcjW3D0ZTrrjo5ilx/zNXbKMfX5
-KosRIO3OzIfHYOjsmbLKj9U6pj85AXJ3/aKuRMLbFvOE3KZTxKLhl8LsgSgJFg2g
-XFKOJeXyRHCLTlsRB2qD+jAXeE0f7nTQ3xMnMUi9U2SN4WuYxxFTtrZ7QyIze0/4
-568f0ylZda+3j/FkbcZK4KJEi11kqS/ph9UNABEBAAG5AQ0EWacAtwEIAKH79EfC
-C5z/pkDx9MVSnoA5WAYX20KL+ErpMnaRbwzpizQeQVhqDjiKGCk6qyC4PUUk+H3I
-aYuTQN+rABVur4S2sO6AyNUETpAMNmrZNvClG/p6gnlYml0vzvEKtsa3U88rTTWx
-fzoecQs0UugkUrRuJI4XJyTMgRuDDLClH7IUjkrUmw2g6EzlDVdLczcpLxvP93j6
-I8R+DwDwlCX6Nqw5Nnr7Q16n9sPgDthJAF+7VS7xXs/jeGROFckdrolrQGirwbfa
-Kh4k0gfSJykV1ivuKx7QOWN6bYejph9DXD8oxE+Nne1y8tfNZFw16i75y46zAVqr
-rKY79Pkcr4RgP9sAEQEAAYkBHwQYAQIACQUCWacAtwIbDAAKCRD0BvMbwUaOunu/
-CADJcTU+K/cg8ItaIfMWM+miuYpoITqDiMpMw+2RkUnlXwn1ouZP0QP7Cpt3mq+K
-Ihei1JIRKR5+XvMV5h8ffvDy6gKpWdsUFadyLMNY07/HVtE2ydUjDhPo5vb2AWe0
-9qMZWef1/hQumkqqhz9Dbs/L8QATpnYVAtv4QMKFwDAXYCgnBijZClYwwhnJwJ3U
-rPejhP0MQomdy/li9kFMlkp795s0Ng5I/BjkFYg/S3IFQEHsgizPclibJdUR8P2C
-GXOcxXB5dE7ykv51FxMpcpgd6jnK0XRzWwQExelrRb5ys/D7pDiJBuGG/u4Hykbm
-LuHslpPWYJ7ZOeVf01xL+I5T
-=dLR3
+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
+=TnZo
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    5E1F79A7C298661E
+uid    David P. Baker <dpb@google.com>
 
-pub    F42E87F9665015C9
-uid    Jonathan Hedley <jonathan@hedley.net>
-
-sub    6064B04A9DC688E0
+sub    A7CC6488427379A4
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQGiBEtsF2oRBACcai1CJgjBfgteTh61OuTg4dxFwvLSxXy8uM1ouJw5sMx+OKR9
-Uq6pAZ1+NAUckUrha9J6qhQ+WQtaO5PI1Cz2f9rY+FBRx3O+jeTaCgGxM8mGUM5e
-9lFqWQOAuCIWB1XPzoy5iTRDquD2q9NrgldpcwLX3EVtloIPKF7QLq72cwCgrb5X
-R25dB8PUdZKUt2TtJbjB+SMD/1UzAPirgX0/RpL9wUR1i14yIrTfpFP/yM9PE4ij
-qcZ1yafVdw64E1k5W4k+Pyl4D8DvSJvbJHvYjg8/G9V66WzaKcv+987fetUuePvY
-/rwxBPztqq8y6+hjBc8QVhZGWmAoGGEFO6MIGsSyN5ohqPMpNXkczIo+NMvDxGzz
-ld5ZA/9awGTsigBdpBK2F6GOmbvBv+Xebu9rbaJvBvP+npNx01s/f5sHPCxmBTFk
-m1vtaMdZ29RovrWPSZRj8WWes0bcisw80250r1CBlYzGzqEVZ7b0Hh2RfkfaxbYh
-wikyfTfA2iX8TUGBgirsZbyegjUadElhwFNDASnvLTEuQKeVLLQlSm9uYXRoYW4g
-SGVkbGV5IDxqb25hdGhhbkBoZWRsZXkubmV0Poh3BBMRAgAgBQJLbBdqAhsDBgsJ
-CAcDAgQVAggDBBYCAwECHgECF4AAIQkQ9C6H+WZQFckWIQTzGEvNVfTQFuMNTJv0
-Lof5ZlAVyUaVAJ98o4QsLXrRWAe4qp2AePIJa5pRhgCdGrNdOEgEImKoSwS00vWE
-RiojY0W5Ag0ES2wXahAIANLGdCWb1qCiBm/qOjDsCOqd7jG/olgcHWH6IdkT51GX
-QcBoSY6d9gok7dmN6mBHKguTbxeRVncdZuSjkHtTvkBaKjypwtWz4/bmToy1ape8
-ebUsAnjyGjDQfnzMRIeYWMC1rQc/J63Qj4MJvpwMHnKBPGH66Zq12ZP2C2pOeBTn
-hMC2Gj/BOLthR4hKjflpijIyEcC81aWAK1kQm0y4UkiskQcu1MRKL1B/ZiGuGLlO
-D29keuC8KKTBwgZuaMNFPJAsPL6VuNBqwXP9nmiHlwl9lye+xPbPWT4FujKCeiHN
-cVer6CySiBFfLeOHXijUsA31TWR8cnpmimvPxoKY1OcAAwUH/1My+ZV0Zsk3Sakb
-xyH1Fd4OAN1++3d7zq6Gm/CisODBcti4k4qDe27SisRPeyY6dtWGRXeyqZn7tov5
-K/UFSaPg0sXtqdsXEKM8kvpWsjyvIf+tS4cofL481eQFFgOWbqfj+yYf1kZYfRsb
-NJNL4pmDBSiJsN5ma+BAPFAo9nvOVyBzRwXdAdVSLpKuDo1OEIUa7rTXmyMtxmd+
-cpXGl0+b9fEav4kSQLiRaAs11GhPdP1ff9qG/ANQmBChi6HLzkIAbI+/toD+Vjj/
-lsSOE1jxDUSjFXIVQRPM1fu2GYmoTwsDkK/U0FjGlCCcWfOcq+zvA4STgV9wexBy
-H6aAA12IYAQYEQIACQUCS2wXagIbDAAhCRD0Lof5ZlAVyRYhBPMYS81V9NAW4w1M
-m/Quh/lmUBXJfs8AnAyiCC2xgVDR0RmOe5pmecSjFmwrAJ0W5jNfBpStUykXDnKq
-hD1krrLqx4hgBBgRAgAJBQJLbBdqAhsMACEJEPQuh/lmUBXJFiEE8xhLzVX00Bbj
-DUyb9C6H+WZQFcl+zwCfc7b8hD9OHMusz/ZR7dKl3a7nA34AoIdTiFJNKRczWAbd
-z17znsg+RUG5
-=8yMs
+mQENBFgRFtYBCADud9fmvTI8Dbs+9GcZUIVzxkL84QYHSDxI9fF+sxfAviq1U+YJ
+a+ZLIW7HsXx8vpn3hqIqAbDxHjrb6MEJ3OWD5Ks7O9Lq7HOhtqAT/mpV3fZmf6pF
+zdEw7c4UrfbtKyBY2kSBpKzTfu6HD3q4OBDm59Ezs2XFhKrXtlNC0fQ30ysBpIvm
+vZH/opwlBgyELKnAYJ6eCmdW1iiju7DPKDBOrGi6zgvslToLpnZeSg6hzSyjM15n
+Gx6Dgby0GNR4VEVze/UdOpsFVTSfP9qXgdt5ZOWQqW2Jg5V/ezvk+3Ok+ecfHWRz
+q8tHkagnqn0SfP6mLqUNvmvAH7xp8crH8L/TABEBAAG0H0RhdmlkIFAuIEJha2Vy
+IDxkcGJAZ29vZ2xlLmNvbT6JATgEEwECACIFAlgRFtYCGwMGCwkIBwMCBhUIAgkK
+CwQWAgMBAh4BAheAAAoJEF4feafCmGYepYQH/AoDwA/N5Zq0z686DtrAu3KeQCap
+YbI4oNQ/yhCuCivJy9ORkqOLRZDhrfkmwFmetOmDeg8GAfoMEDUSvgXLqqli4wMS
+UNNlRA18X6g8N/FS7w/rWP0wp68boPK/Ry9Q/f7SFmMxrObT7aSX4hnhzWZfWTZy
+YkhWN9Y3+nXFtaT/XViZtHoxLZP0Ei92N0zcWGkKs/drH84OS+XMVRktCNExyXUY
+wD/cyD9n6r6f/TGtaL8cpXqu46IhLpeaPMPWqikZCLX/2KGSwiO4H2juTkkhQn8E
+bCZziDmfDY6RAa5xrsOnFeLYGbqbkoK7BfR9d+tMFtkgkXxqpHFMjW3a4QG5AQ0E
+WBEW1gEIAMuetYIGcqEC7KdfWn6EKmO7ZucfOEirvo+WXclo48WX0Eo0gsTghKPG
+TS2kOzglwn/wYCbBVKzYaOngZljIcrR47hJiY/u7OH7EjiCiB0sh5WuEqOaCPPFo
+8lCA1+SBPAF+c1d7SfIEABL/WCc6e1rkKhe7wkBSclspL8YQUG3cr5G/cSCGOV69
+TsCqq7rtezjkSsfE5dxmcs39Ouur7hs25DKehufUA5bV2i51v49WIuTE8x53VfIn
+YsJyeRs7f4sx3hmkwN+EL2mo1YFymGwEkp8iB0Jtrpsevl4AFOajl6X4IrdLn6+X
+Sok/1mzIm+t1ZHokQ3mUWe5FC9c1Y1MAEQEAAYkBHwQYAQIACQUCWBEW1gIbDAAK
+CRBeH3mnwphmHv59CACEnAU1vbN4qxquAzNuaalyV6Hyx9olUQqPHopRGBA2ulPs
+0l+gtAXz5USotNsh3Ai5j39Y4J+qxN3HuDtscxEReogawzOo/B+1IKuGuuTzvL6f
+U6ZFUnEosxChAKwJo9eS5xlyenyumTcXx5yB/5X5nqTes6tcZlDcEefh7K5Iaazw
+E5caITBX0ze8g7WQzRxyN+vuhY30U7P8TTKxAsavdSBVIb+Hp0e2W2S5T3ogXaGk
+Ii5qllr9uhfX+E9zLxJJKfJot33ix647mPwpXxo7K6teo2rkwOTQij1sEe2sbMZi
+KZkn4rYSgLpZiVLPiDYuP3RTuHnFenYROA/YcDvA
+=qbvN
 -----END PGP PUBLIC KEY BLOCK-----
 
-
-pub    F6D4A1D411E9D1AE
-sub    B5CB27F94F97173B
+pub    72385FF0AF338D52
+sub    458AAC45B5189772
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQENBE89LqsBCAC/C7QToaRF8eZgGOxcvp9aG+mFFCMjaRAb4Mh59OYdmUb6ZjfO
-9388HPebGbPNR8SHYs0dBIuWY4ZJ7oUTYPswasL8vB0iPFdyHhvkCca+yk0b8ZBM
-DmFlISm9HkYpoVjcFUp1oivyeJ5LRTJTd5JGEd/SWFRbB4TimdKXBzej9fIm2zVl
-KInEMMd8HnSYE6nm3aNkbyiqhx81bFvl8x6X3ZMWcKs+TAVXdP9uLVvWowUwcApk
-xpee442Ld1QfzMqdDnA6bGrp8LN8PZF9AXQ9Z6LTQL3p9PIq/6LPueQjpJWM+2j8
-BfhbW/F2kyHRwVNkjaa68A544shgxJcrxWzJABEBAAG5AQ0ETz0uqwEIALmEZ0xN
-tuX1cLsNUzzq0HVzwDiw5IquPWy33McESXvkaMyqyQtYisW++dY06MxBCS3uV4+1
-nKI6oA7Lk482ixwzbwws0Rb8H5CeLHDEwGXfthmLAvDdxoNCUYAtpVOMGcbGpy51
-TG3V9i9JWe1px+kvhieX9BLfDzP4Pldho9lK2gYRhmpPDgUOjYZgiQXMmIPAYfdH
-IA/VdYTETC0lu4Adb56SzOwvGMpnd3rXWUiJbZg7lW97hvbOFMKudbNjBCrF7LhW
-Ah089MU9rvunuz7mquVdNtfEBkdVrqZJdvYiFBee4RUe3+qGCpHnLzynOGHr+iIt
-DG73NR9fZCzl1K8AEQEAAYkBHwQYAQIACQUCTz0uqwIbDAAKCRD21KHUEenRrp0k
-B/wPuP2W69oweOqtSRDf1FeFNzAUIjbwjkg/bTjzJwb1cyedx7rbxhpJmn27W8A2
-WjfmDLOn4orQTKoxf3kP6SeeGhYLkzxjBa5Rco89p/6X35By6VR4LPFeTOACyE7b
-cAjqPFb+7t1YzvnmuZIgpvTKickq1D9g7+JT1Qd9nqBFKlg8aMngAooVvlLXaPEw
-Q1XfkfMN+ltwlEr7o1ts/YzDUxflaFVg0FnN7qezam/s7VvcK46rO95yQr/Wyz2o
-VDzc34e+Nr/b2pN05MDHA0dXmb/irwPBl0mTOgAgC805qkR14xhd1GeL6MEA34k8
-2Sq/O3gWhBaB3KOy55/lvvKp
-=CmMl
+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
+BemLeqNijrvozak+6IJUvgac
+=NN0Q
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    353A436E043E3145
+uid    Garvin LeClaire <garvin.leclaire@gmail.com>
 
-pub    F800DD0933ECF7F7
-sub    592C39141EB02A78
+sub    7494750BDF4F8FAE
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: BCPG v1.68
 
-mQMuBEvQhhQRCADQ2MH2FpQD7pbCTDJ4uvPSeaOz0IUhkX9bK4sKvIISx8MbHhR4
-k4sXi+vVkLngWCMUV4nB4WcCibk2S184SzL0TstTDrudxe4eJFVbmZw0GrgASugQ
-aD+8daVhMgQZEjvEB7kjaYzMyljzVRE/o30AaizHPMVytZQpIL7GTsaBcGtxLkyq
-JG+SF+fN3WAKiMyKCUTaji1owY5SyZIbPBBHqcIQVdtCFRPXhLDNnGHUz/ubI4Fn
-U5sN9gEe7raXQfvZzwS6fW2SaxhxMXDNVDEipY7okuRKQ0wPWqcanh9dri8qoTfI
-7MOqfWWKL3NF1hnjuutyGTTKCllyTWEW4MfjAQCJBTUh43abqyHej9Dzcc2lSgLn
-xeN5iM48tYZRv+aYxQf/b9rWigbReKL7iYmCTqd+hLfh0YDmaJbZ8ZZM4p/YZ5tL
-NdkNJR5TiWwH9ub0BvXYOtYUwclOaaD85CKNN8IU+A/YcrWP2O8fBQw5lqARuGx+
-TjG7c+WRVn+fLrTzrzbUYh+/Jg5UYCbDYh6H2kLKnPVQPzSjDScJNtevFnX+IRjT
-7woB/WHlrfvowZGO1kclypZZS6nDiPYhEk1isEU+nD7OvvM1fQN1rdl0QhkLUh2w
-qKiM3xvY42LGicnJcxyMSODkYlG6J6OE2sFDBJ1axa90+S8Jze1fBlbQVb7OF6ma
-31mhOedb6xiqJ17/5Kx9gPEUpVMpkrDUVToIv18c6wf+J2TJ1sdMPqUsiuKHDQq1
-elTxtfq5ELQoNlnuK+mRrsSMfa1I6jE7QbZkCcoTNnD5ikOVmkHJFQlEZsmaKCrD
-oUpEyELdzFy1ghfGDPbvv1a5AoGVsR+sj39XNckBgZS+25vZupBxWvTd8Fj/KY5l
-a1aQlPUyMgqmo7rdE3WEzv7v11xBy6wQMAoGu6lp9tnaAE7sPEy/UHuYSexCO3Ar
-83sZ9o9ZQa+z33QU5Z0guNz+efCkFfG4nqjHjZ8ZY5VvWlw0W2gxNqzNCeQR7m14
-C4J2TNNn/F2nGAKEpKEgp8IjpEXYZ6kF9xoSkJ07bjujvf5vtvAm10h+ZEumKSiS
-mbkCDQRL0IYUEAgA7Ci1jY5JdrLs7pKjhbqP1lkZKDRn+0fDgix9y2JP2O0lJ6Am
-SAVUE6Mi+izqV97q3vMmOkIuDFLoBP79/YOaDlMWAj9QelNWwz30yT6LB5Wgw0c/
-Tpi5lQD5K75L84u2vAFjoOwvnLx3cKjC7TG2h7zxt9EHEtLFAFP2JBtsMvcmpFPP
-Ucpv0+/RFLhRV6JPxEUKiVbz52pgBLSa83vtZI4d6CDu/W3QXvCw7uYoTWx7e0+K
-rrZj3LE7KUzEa/Vazsn6Nwhi7VL0irNOZJGALdhrxLA8iGnPYDys78vPBWB3k4VQ
-G7rgvdVXiAldMNtoy7sNuhtI8Cicgl0JG/6flwADBQf+O8kWSrda5ezDK7vWAhBh
-r3tEMIE08eL/HPErE3DOzud8oyV8B7Z89ZOjSqzn/6EQdnEGnVRr/isOJcmgAXQQ
-RpJfFQ4dnpEeestJ5y5hzrtbMvfZ/Wms3WFgjgfYl5+TAbSF3Gz9VNn5AmaeA18i
-d8qzNVQ/e8J9zXfLV62qRLzbAS74K6rzGpYaZEWFAid1KLTu0S+I/ZuvQfZ83jyq
-oenwS0iYawM824w5oCDN/+8cDzLcHipN+B6g6S+X9m8s5E3RZGVKqUjd+fTRg0LY
-JkkasJwQa+20AadpCE0RZtR82jrbyLfNY2FFJT3TKYnaVhYcjpPBqffevhwSRIEs
-KYhnBBgRCAAPBQJL0IYUAhsMBQkDwmcAAAoJEPgA3Qkz7Pf3m+4A/RghXcZwWrZB
-/vvvAfhkYQeQJjPmYluGNebJ4wPi5ZI8AQCBjv2b6yDTWPenmPNeSB88HWjSL8/A
-mimEzF5VTg7GrQ==
-=Q4rB
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    FD5DEA07FCB690A8
-uid    Baptiste Mathus (Baptiste <batmat> Mathus @ CloudBees) <bmathus@cloudbees.com>
-uid    Baptiste Mathus (CloudBees alias for Baptiste <batmat> Mathus' account for infra access) <bmathus@cloudbees.com>
-uid    Baptiste Mathus <baptiste@codehaus.org>
-
-sub    5F68B9B2F1725F16
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQENBFFCLwoBCADxtcGi0nfolr1kGWe3jQ7n18roJFwBs4Q52nx0h4+a8ZGr7/1E
-1brakrz3t/cTSZIrhfru8kirP8cJtXBxpd/nCeRrB/4ZtXPUJiGwKx6sVGr0ix6U
-eZKQb3anH3jdGTzZ2csqt6Ro85SvIHfqAREcPOoQk7Kz3DFOGbSfECN2Wf1pTnRT
-jdF1Z5DkoTd8sGBmGOdhNMzgqMTHz6np6M2B/JVP5DpcKPbbMhQ75RPcxNEb4QSa
-HtCL+gMZiF7fndWx2Tjbpanbb5+TomfWOMizpkyziyYeUmGoyggrnXQ4BMlzsIuK
-ATz6wA5j4qfRLfoDDgNv5UacVAtWL+rlTP8NABEBAAG0TkJhcHRpc3RlIE1hdGh1
-cyAoQmFwdGlzdGUgPGJhdG1hdD4gTWF0aHVzIEAgQ2xvdWRCZWVzKSA8Ym1hdGh1
-c0BjbG91ZGJlZXMuY29tPokBOAQTAQIAIgUCV81wjAIbAwYLCQgHAwIGFQgCCQoL
-BBYCAwECHgECF4AACgkQ/V3qB/y2kKhonAf+Lcl9bj90OOyUANRNkZnuq2sLI+KD
-kerGmbwG7FJCM/Hvq6MgtNaXt98RfU7a1aBmmM6uTOBFko+7o8QXocnU/2TrlsnU
-yMHsFfO7OQSQJebSSyAyE1vy5VYzblsqgfs7Zreb3BO/awzr0GZXjR+g/q6ivxhK
-+2pIkdfuBBkConNzoPqSC1f/F4qZuCi1e/VM5LmincIUEnWUR/PXpgXOwu/KoyzX
-X8VC/Vwk73vGaeBN3avCMVzNUmyYXELzcimcaa70ISKReUJvoYqHEDyVcMk9Yzjn
-VosDTfun0kUcfs2nd0ZySyygn80JHsZURIzEAnliz56lE8Fq5i2MO9o0ErRwQmFw
-dGlzdGUgTWF0aHVzIChDbG91ZEJlZXMgYWxpYXMgZm9yIEJhcHRpc3RlIDxiYXRt
-YXQ+IE1hdGh1cycgYWNjb3VudCBmb3IgaW5mcmEgYWNjZXNzKSA8Ym1hdGh1c0Bj
-bG91ZGJlZXMuY29tPokBOAQTAQIAIgUCV81mXwIbAwYLCQgHAwIGFQgCCQoLBBYC
-AwECHgECF4AACgkQ/V3qB/y2kKjQQQf+K6NNaERzm+5dkPOdmrVQQPAXrUxGW6b5
-Bsx12mU4qJKxQsq9tKsw9kdkvlP7rVhJATBk4J3ZYGWSqQajnVcAxznlWZVksWqo
-rCtYAH2+rhlUBo7/mvDnCW+z0vfEwBS4vQM3Oo83CyOecSnn98wp+W1O+TdCZVAf
-k8UOrODdc55VpXoQTw4PZ2uGr/56EFNYNXia6O7H0FuyDM6g5ilFd5Wxpp7qS7D7
-zJkWciSGmOwcw4NeeAMAu0bv8X9vmom30EEoFa6o3GHUJz0/DsbaoAOxcVMIymY+
-SzQQ+XyaHpTeRdpWB2qQo6BHSktm+vxp54811qSwyqPp0uKjHmVFLbQnQmFwdGlz
-dGUgTWF0aHVzIDxiYXB0aXN0ZUBjb2RlaGF1cy5vcmc+iQE4BBMBAgAiBQJRQi8K
-AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD9XeoH/LaQqLyjB/9diBWw
-NMYG6UB3ijZYyUo0P3F49JcboW8U8vtGkDjZU8bSHkDQX/1mstMSTPoO63TrszRh
-UCn7lMxHfDaYVhbr6N622Jc10WhGiJICPGSz4azHdQA4e2tC2l2BCMnq7mvJ0bVx
-uqVb3VE5P2R884g3K8Jq3O3tjWTten5Z63UvqPcPmpN2C8WoI4EDWqxTAxyJs0GQ
-hNnfPDKycIpv7ESjprJ7c4oo/K0YUtlK5rF3eNorZSOrj6adsrdcf7IMvQxnI2Ro
-tFr49wqdvn3fTW7db+1qoXAvsHV7bHZPxc4OmOeCuqNOoh4J5ftROO8o0Gi/wC4B
-bniNzu7SndfMOTjXuQENBFFCLwoBCACaK5wadodZGLdBAAcRg9rwBzPy+F7ZXdwQ
-A1kHo0Z6xhQJP2/X3C/rEgKW59QhBLyEMBPELRtO5vTC5UYLu0pHK0XsOEacFVTW
-GQ+gLGp2UkScAJEgAQPYNNWrAz0MoAPQ//RW2Byph+WBVtgnP09nmq/WcXjv0tz7
-FrSFW/A0uADkcEdWGx6ItNiHRAZBgO4uzSY8GUw2YSEBjAilDwVs/Jftj5dlJlwI
-JzA0VzNIFunKwBTicMHSSHRNic+zlxMOs02a3XK3NBPv9a5DIffZuU9657rHmZM9
-zaS1PyHsMbpZsy+hFtxMFfVuViojg63ZC5eh9C/ghKCIbP0F+L9tABEBAAGJAR8E
-GAECAAkFAlFCLwoCGwwACgkQ/V3qB/y2kKgcqgf9EGoznHgOwfohcWsi6uIuLgsT
-ypd2f+zPAYpgySP8LK2+UZBnTzo6zxtWB0ZZAj8ICdciVOdcSYim/X29pRzygKYD
-JpHh7ZvvxeB9bxg7Gfd8Ml5Ycdf1x8L/Psi8kajbkMczrhClxhAR76Zqjpm6gvyi
-e+21f6qAnx9B+J5jQpN6p5uLg1Ac3dU+kY9MJLL8qy53yXxJHfcF+hMoAVZPajU2
-fzySiLttENnxXHIqJiYj/N53RJmcQdYLNjQNwfpq01DJy0k5nvXDGCZmgUB2T7w1
-sVIIF1w0sMxaEy8blxB+j25b3KhYYe9NiQvK+/gthDgWyhkHs2UALPQwIfd9ig==
-=YlII
------END PGP PUBLIC KEY BLOCK-----
-pub    1861C322C56014B2
-sub    9A347756830C4541
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-mQGiBEGVK0ERBADwhGhmOMvSgvGaqHW3ial0NS80ZXyE1EeNL6ke/WrXHB4dT6if
-inoAuUgRz3v9Na4rjSQ8YVFjn3NaZq1i8RM2KJOUU8ZkJ2AsrH6fqStjofLTd5ng
-iQaq2wLM5rTQfdjLsGQb1iDNDyCXU56+/l4mFZ2JiEGCq3Re9EFHelRBKQCg/7k0
-BIfyoFVTHw39PKaDBmCYF2sD/3CMD0J/WldhBM7gLOndH9/YEQaEMy+PJNXcfTWN
-WLygGPSOQdNBulyLkvcFIZjUTxFVakh7FbjMq3dsAP1oqthwmK7L8A1zsvRgp/TI
-4YMHkZSkgcs0PBBby+h/lpgRrWmtwjTPzql/K5xX4VSRS+umHye/7R+4ZEH7mABa
-m/ZABADkPGG2ECvfjNosPQDHZVFuF9oVaske0OjzxI+rU6sR1fJKtbOPl9d+bgz+
-df7rZ3mwppkPX2r/muUbd0CM1Se10sK7ZAoPYmWqHX+vB/oj3Jq+iqb6M5mDZzEz
-6h4hdnaGERyxbktZvhRV7Psco9CGi8o7RFUQTR79Y5ElnBavqLkCDQRBlStBEAgA
-9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt
-90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcw
-Yc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZr
-M2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEs
-tSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8
-vYlLIhkmuquiXsNV6TILOwACAggAw6kL0PhPZ/EPI0mPfmIYeaKUgTB8q47nDKY4
-6wDs1l/msVJHAVwGEBHuxmbC7r/qfAgfSW+/Lj4XbSLCqaZIWSu6lfY43IOIYXD4
-pe5cCnWkQij+h3LxRR6uDmBr5cwheHEuB2sMFU5lJiiQR1+eXYkPNK4FgVQpHLWe
-boODAlTf0j8gRR+aTs5eWXqfSA+UEsXpn6453bfZKELXkRmEznb4xyGWJaLW2Mlm
-aRlauYvc61M7FK8z15SSZbq6oictpnEcfkgnBxcNza3jZQV7WOWZ3BlD1nKQ661s
-bmS81/nLnxbov9ASs25K2olXBsHkERhjMnERedvv7avlmBwi1ohMBBgRAgAMBQJB
-lStBBRsMAAAAAAoJEBhhwyLFYBSyGTQAn2u/CvPzKwRv1FUkPYR751j9PGwDAJ4k
-Pt2uco8an9pO9/oqU6vlZUr38w==
-=alQS
------END PGP PUBLIC KEY BLOCK-----
-
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Comment: 10F3 C7A0 2ECA 55E5 02BA  DCF3 991E FB94 DB91 127D
-Comment: Antoine Mottier <antoine.mottier@ow2.org>
-
-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
-zXFYXic=
-=YKsx
------END PGP PUBLIC KEY BLOCK-----
-
-
-pub    E6EC76B4C6D3AE8E
-uid    Sandy Zhang <sandyzhang@google.com>
-
-sub    52410ED7B05AD2E9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: BCPG v1.68
-
-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
-MmIzscVR5uuvPq1m2aUkkKLFWLBqkpuelMmW
-=W+so
+mQENBE1/v9YBCADaUiBecDzwU5g9Gmn3T9pAa17OlUl2iH0zn8tNTUg++bW/A9m3
+lWykQBlvPOi32lqZ5q7yewSNBGHl/pHRRVsIE6hhkVigNQbMztRFPshKCU/0RvKu
+29cew2T37crxYFGShYFwiJgOdQmXqhgIai0S2sW0Iavf5/PJJjXbrM1YIqUqkf73
+unns/lIDEiIDXCnGRNJKzGWTPsbt5R3hVo9mFraPUxapw3b9C/2GGDT/mwR51IOf
+rHkQby7Uh6XzDC8jWIH/BrFT6gFRZgKn9BRi3meB5vPip0rvcxPQnmvi2R4iUIyg
+DvCsUpXr6RpAEK6/p4k17JeglxCDlAbTDLUHABEBAAG0K0dhcnZpbiBMZUNsYWly
+ZSA8Z2FydmluLmxlY2xhaXJlQGdtYWlsLmNvbT6JATgEEwECACIFAk1/v9YCGwMG
+CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDU6Q24EPjFFHoQIAJXH6gRuS250
+q/EBG6vHSSqVWsck3vDwo22zGwAXOmuZ1YH7kCdzyfs9i3LnmtTyMUymvCBE0y94
+Bn2fFbin6CQsPS5U40NiquBo1wxyR8qO9pFpANlq4old1qW8t9mZBkwBjBpN6Pmf
+L5vbrgCECN46wVGqarPxseBgVjK7BB9E3qv9ymUrUJ8DSvL3b6vUwNEIqXDcZHKn
+xn4EX611YigPYiQazByw8UNq0a8kR262JN2ND64IxjBtFikdjuP5nck9Iz/yQ++V
+YpS2QfsaToCJfl8DhsVcht6N6pgo5FfDPOOhZyuDPCC+8j83JaeRS5sw6NcK03rk
+tNsnz4hef+u5AQ0ETX+/1gEIAJsFRfWMDIoJMsLPltDrrPsg1lpl2RFQuPqjZfPM
+0AAiAJTB/UhRfoMoijggV/m5r0y9d6LH4XhCynm+2VC/6TTxkvMKHAQroZFKzBKj
+vpCKXYaLgiMNi0XfsQ8p7/0nEUA1XXZDOrol9JJQ+3XxaQv3+64u+ZiZY7JrcH9M
+tytyVcsqOnQe8ST02pnpjwOIqh0TZt+HB17PWraDWRETspAMfbmoZSB9vEBiHsSo
+ELZYywFxcsxB+nbMunYONTjp/14MRKKlxeTLlH7CfJwaGV/2rvN+dKOymbg2uA4y
+/wrZrOJVE3G7IP5ehQ/Pitcb1TP6Q5LISdAo7zGFslS9iD8AEQEAAYkBHwQYAQIA
+CQUCTX+/1gIbDAAKCRA1OkNuBD4xRZ+QB/45ejZ9k7v3Yh4MtyY0th94E2h8UK3g
+T1axDIEyeWqQZaVxqvA8gG2kXhFP97c/WINUScMcdOCqTpUWRnQaZgcvD39/AFc5
+Bb3kN8Mo69YoOGkRRkvsY28NhRQBjn96QKUBmc4vGNBLV/XCsbhSD8T5KJdFszVc
+THg5q237mYucSzDfU9/0EUeSuFwwtng93Y4Rt5nDTm1MLcnBi5CTGw6Q1FL9orGN
+Hi6OXcwXDGKK1iiWjUjrmXwpgp5Zv+A4WcmG2dZHADjBlsgeHhfWCfxdJeMNZ5BO
+LL6SHLRuKiw6HUKNYs6BZNNdPQXapzKhCpSuFHW+84/4S2jX89AAfhTk
+=S97J
 -----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index b0ef115..23ee8db 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -5,7 +5,7 @@
       <verify-metadata>true</verify-metadata>
       <verify-signatures>true</verify-signatures>
       <key-servers enabled="false">
-          <key-server uri="https://keyserver.ubuntu.com"/>
+         <key-server uri="https://keyserver.ubuntu.com"/>
       </key-servers>
       <trusted-artifacts>
          <trust group="ch.qos.logback" name="logback-classic" version="1.2.11" reason="b/234161459"/>
@@ -231,6 +231,7 @@
             <trusting group="org.jvnet.staxex"/>
             <trusting group="^com[.]sun($|([.].*))" regex="true"/>
          </trusted-key>
+         <trusted-key id="713da88be50911535fe716f5208b0ab1d63011c7" group="org.apache.tomcat" name="annotations-api" version="6.0.53"/>
          <trusted-key id="720746177725a89207a7075bfd5dea07fcb690a8" group="org.codehaus.mojo"/>
          <trusted-key id="73976c9c39c1479b84e2641a5a68a2249128e2c6" group="com.google.crypto.tink" name="tink-android" version="1.8.0"/>
          <trusted-key id="748f15b2cf9ba8f024155e6ed7c92b70fa1c814d" group="org.apache.logging.log4j"/>
diff --git a/graphics/graphics-core/build.gradle b/graphics/graphics-core/build.gradle
index f20971b..b99b3c8 100644
--- a/graphics/graphics-core/build.gradle
+++ b/graphics/graphics-core/build.gradle
@@ -61,7 +61,7 @@
 }
 
 androidx {
-    name = "Android Graphics Core"
+    name = "Graphics Core"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.GRAPHICS_CORE
     inceptionYear = "2021"
diff --git a/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/BufferTransformHintResolverTest.kt b/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/BufferTransformHintResolverTest.kt
index 067f6ba..ff5d80f 100644
--- a/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/BufferTransformHintResolverTest.kt
+++ b/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/BufferTransformHintResolverTest.kt
@@ -27,8 +27,8 @@
 import androidx.graphics.lowlatency.BufferTransformHintResolver.Companion.ORIENTATION_90
 import androidx.graphics.lowlatency.BufferTransformHintResolver.Companion.UNKNOWN_TRANSFORM
 import androidx.graphics.surface.SurfaceControlCompat.Companion.BUFFER_TRANSFORM_IDENTITY
-import androidx.graphics.surface.SurfaceControlCompat.Companion.BUFFER_TRANSFORM_ROTATE_270
 import androidx.graphics.surface.SurfaceControlCompat.Companion.BUFFER_TRANSFORM_ROTATE_180
+import androidx.graphics.surface.SurfaceControlCompat.Companion.BUFFER_TRANSFORM_ROTATE_270
 import androidx.graphics.surface.SurfaceControlCompat.Companion.BUFFER_TRANSFORM_ROTATE_90
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
diff --git a/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SampleInkViewActivity.kt b/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SampleInkViewActivity.kt
index 56ffdec..458ad0c 100644
--- a/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SampleInkViewActivity.kt
+++ b/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SampleInkViewActivity.kt
@@ -21,9 +21,9 @@
 import android.os.Bundle
 import android.view.Gravity
 import android.view.View
-import android.widget.FrameLayout.LayoutParams.WRAP_CONTENT
 import android.widget.Button
 import android.widget.FrameLayout
+import android.widget.FrameLayout.LayoutParams.WRAP_CONTENT
 import android.widget.LinearLayout.LayoutParams.MATCH_PARENT
 import androidx.annotation.RequiresApi
 
diff --git a/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt b/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt
index 43f1de6..8d31c50 100644
--- a/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt
+++ b/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt
@@ -43,11 +43,11 @@
 import androidx.graphics.isAllColor
 import androidx.graphics.lowlatency.LineRenderer
 import androidx.graphics.lowlatency.Rectangle
-import androidx.hardware.SyncFenceCompat
 import androidx.graphics.opengl.egl.EGLManager
 import androidx.graphics.opengl.egl.EGLSpec
 import androidx.graphics.opengl.egl.supportsNativeAndroidFence
 import androidx.graphics.verifyQuadrants
+import androidx.hardware.SyncFenceCompat
 import androidx.lifecycle.Lifecycle.State
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.runners.AndroidJUnit4
diff --git a/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/egl/EGLManagerTest.kt b/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/egl/EGLManagerTest.kt
index d2a9139..8a8486e 100644
--- a/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/egl/EGLManagerTest.kt
+++ b/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/egl/EGLManagerTest.kt
@@ -32,11 +32,6 @@
 import androidx.opengl.EGLBindings
 import androidx.opengl.EGLExt
 import androidx.opengl.EGLExt.Companion.EGL_ANDROID_CLIENT_BUFFER
-import androidx.opengl.EGLExt.Companion.EGL_SYNC_CONDITION_KHR
-import androidx.opengl.EGLExt.Companion.EGL_SYNC_FENCE_KHR
-import androidx.opengl.EGLExt.Companion.EGL_SYNC_NATIVE_FENCE_ANDROID
-import androidx.opengl.EGLExt.Companion.EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR
-import androidx.opengl.EGLExt.Companion.EGL_SYNC_TYPE_KHR
 import androidx.opengl.EGLExt.Companion.EGL_ANDROID_IMAGE_NATIVE_BUFFER
 import androidx.opengl.EGLExt.Companion.EGL_ANDROID_NATIVE_FENCE_SYNC
 import androidx.opengl.EGLExt.Companion.EGL_FOREVER_KHR
@@ -44,8 +39,13 @@
 import androidx.opengl.EGLExt.Companion.EGL_KHR_IMAGE
 import androidx.opengl.EGLExt.Companion.EGL_KHR_IMAGE_BASE
 import androidx.opengl.EGLExt.Companion.EGL_KHR_SURFACELESS_CONTEXT
+import androidx.opengl.EGLExt.Companion.EGL_SYNC_CONDITION_KHR
+import androidx.opengl.EGLExt.Companion.EGL_SYNC_FENCE_KHR
 import androidx.opengl.EGLExt.Companion.EGL_SYNC_FLUSH_COMMANDS_BIT_KHR
+import androidx.opengl.EGLExt.Companion.EGL_SYNC_NATIVE_FENCE_ANDROID
+import androidx.opengl.EGLExt.Companion.EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR
 import androidx.opengl.EGLExt.Companion.EGL_SYNC_STATUS_KHR
+import androidx.opengl.EGLExt.Companion.EGL_SYNC_TYPE_KHR
 import androidx.opengl.EGLSyncKHR
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
diff --git a/graphics/graphics-core/src/main/java/androidx/graphics/opengl/FrameBufferRenderer.kt b/graphics/graphics-core/src/main/java/androidx/graphics/opengl/FrameBufferRenderer.kt
index 19a3ed5..bafcff8 100644
--- a/graphics/graphics-core/src/main/java/androidx/graphics/opengl/FrameBufferRenderer.kt
+++ b/graphics/graphics-core/src/main/java/androidx/graphics/opengl/FrameBufferRenderer.kt
@@ -25,13 +25,13 @@
 import android.util.Log
 import android.view.Surface
 import androidx.annotation.RequiresApi
-import androidx.hardware.SyncFenceCompat
 import androidx.graphics.opengl.egl.EGLManager
 import androidx.graphics.opengl.egl.EGLSpec
+import androidx.hardware.SyncFenceCompat
 import androidx.opengl.EGLExt
-import java.util.concurrent.atomic.AtomicBoolean
 import androidx.opengl.EGLExt.Companion.EGL_ANDROID_NATIVE_FENCE_SYNC
 import androidx.opengl.EGLExt.Companion.EGL_KHR_FENCE_SYNC
+import java.util.concurrent.atomic.AtomicBoolean
 
 /**
  * [GLRenderer.RenderCallback] implementation that renders content into a frame buffer object
diff --git a/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlImpl.kt b/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlImpl.kt
index 9d8af62..460f50a 100644
--- a/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlImpl.kt
+++ b/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlImpl.kt
@@ -25,9 +25,9 @@
 import android.view.SurfaceControl
 import android.view.SurfaceView
 import androidx.annotation.RequiresApi
+import androidx.graphics.surface.SurfaceControlCompat.TransactionCommittedListener
 import androidx.hardware.SyncFenceCompat
 import androidx.hardware.SyncFenceImpl
-import androidx.graphics.surface.SurfaceControlCompat.TransactionCommittedListener
 import java.util.concurrent.Executor
 
 /**
diff --git a/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlV29.kt b/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlV29.kt
index c1e1701..8a303de 100644
--- a/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlV29.kt
+++ b/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlV29.kt
@@ -26,9 +26,9 @@
 import androidx.annotation.RequiresApi
 import androidx.graphics.lowlatency.BufferTransformHintResolver.Companion.UNKNOWN_TRANSFORM
 import androidx.graphics.lowlatency.FrontBufferUtils
-import androidx.hardware.SyncFenceImpl
 import androidx.graphics.surface.SurfaceControlCompat.Companion.BUFFER_TRANSFORM_ROTATE_270
 import androidx.graphics.surface.SurfaceControlCompat.Companion.BUFFER_TRANSFORM_ROTATE_90
+import androidx.hardware.SyncFenceImpl
 import androidx.hardware.SyncFenceV19
 import java.util.concurrent.Executor
 
diff --git a/graphics/graphics-core/src/main/java/androidx/hardware/SyncFenceCompat.kt b/graphics/graphics-core/src/main/java/androidx/hardware/SyncFenceCompat.kt
index 29bc952..2b17fc6 100644
--- a/graphics/graphics-core/src/main/java/androidx/hardware/SyncFenceCompat.kt
+++ b/graphics/graphics-core/src/main/java/androidx/hardware/SyncFenceCompat.kt
@@ -22,8 +22,8 @@
 import android.os.Build
 import androidx.annotation.RequiresApi
 import androidx.graphics.lowlatency.FrontBufferUtils
-import androidx.opengl.EGLExt
 import androidx.graphics.surface.SurfaceControlCompat
+import androidx.opengl.EGLExt
 import androidx.opengl.EGLSyncKHR
 
 /**
diff --git a/graphics/graphics-shapes/build.gradle b/graphics/graphics-shapes/build.gradle
index f04e619..5e5dfc1 100644
--- a/graphics/graphics-shapes/build.gradle
+++ b/graphics/graphics-shapes/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Graphics Shapes"
+    name = "Graphics Shapes"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.GRAPHICS_SHAPES
     inceptionYear = "2022"
diff --git a/gridlayout/gridlayout/build.gradle b/gridlayout/gridlayout/build.gradle
index 44db995..9fdbcdb 100644
--- a/gridlayout/gridlayout/build.gradle
+++ b/gridlayout/gridlayout/build.gradle
@@ -17,7 +17,7 @@
 }
 
 androidx {
-    name = "Android Support Grid Layout"
+    name = "Grid Layout"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2013"
     description = "Android Support Grid Layout"
diff --git a/health/connect/connect-client-proto/build.gradle b/health/connect/connect-client-proto/build.gradle
index 0458446..0ed136e 100644
--- a/health/connect/connect-client-proto/build.gradle
+++ b/health/connect/connect-client-proto/build.gradle
@@ -78,7 +78,7 @@
 artifacts.add(jarjarConf.name, preferencesProtoJarJarTask.flatMap { it.archiveFile })
 
 androidx {
-    name = "AndroidX Health Connect Client Proto"
+    name = "Health Connect Client Proto"
     publish = Publish.NONE
     inceptionYear = "2022"
     description = "Proto files for health-connect-client"
diff --git a/health/connect/connect-client/api/current.txt b/health/connect/connect-client/api/current.txt
index 0a8378c..a5bd664 100644
--- a/health/connect/connect-client/api/current.txt
+++ b/health/connect/connect-client/api/current.txt
@@ -421,21 +421,119 @@
   public static final class ElevationGainedRecord.Companion {
   }
 
+  public final class ExerciseLap {
+    ctor public ExerciseLap(java.time.Instant startTime, java.time.Instant endTime, optional androidx.health.connect.client.units.Length? length);
+    method public java.time.Instant getEndTime();
+    method public androidx.health.connect.client.units.Length? getLength();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final androidx.health.connect.client.units.Length? length;
+    property public final java.time.Instant startTime;
+  }
+
+  public final class ExerciseSegment {
+    ctor public ExerciseSegment(java.time.Instant startTime, java.time.Instant endTime, int segmentType, optional int repetitions);
+    method public java.time.Instant getEndTime();
+    method public int getRepetitions();
+    method public int getSegmentType();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final int repetitions;
+    property public final int segmentType;
+    property public final java.time.Instant startTime;
+    field public static final androidx.health.connect.client.records.ExerciseSegment.Companion Companion;
+    field public static final int EXERCISE_SEGMENT_TYPE_ARM_CURL = 1; // 0x1
+    field public static final int EXERCISE_SEGMENT_TYPE_BACK_EXTENSION = 2; // 0x2
+    field public static final int EXERCISE_SEGMENT_TYPE_BALL_SLAM = 3; // 0x3
+    field public static final int EXERCISE_SEGMENT_TYPE_BARBELL_SHOULDER_PRESS = 4; // 0x4
+    field public static final int EXERCISE_SEGMENT_TYPE_BENCH_PRESS = 5; // 0x5
+    field public static final int EXERCISE_SEGMENT_TYPE_BENCH_SIT_UP = 6; // 0x6
+    field public static final int EXERCISE_SEGMENT_TYPE_BIKING = 7; // 0x7
+    field public static final int EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY = 8; // 0x8
+    field public static final int EXERCISE_SEGMENT_TYPE_BURPEE = 9; // 0x9
+    field public static final int EXERCISE_SEGMENT_TYPE_CRUNCH = 10; // 0xa
+    field public static final int EXERCISE_SEGMENT_TYPE_DEADLIFT = 11; // 0xb
+    field public static final int EXERCISE_SEGMENT_TYPE_DOUBLE_ARM_TRICEPS_EXTENSION = 12; // 0xc
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_LEFT_ARM = 13; // 0xd
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_RIGHT_ARM = 14; // 0xe
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_FRONT_RAISE = 15; // 0xf
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_LATERAL_RAISE = 16; // 0x10
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_ROW = 17; // 0x11
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM = 18; // 0x12
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM = 19; // 0x13
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM = 20; // 0x14
+    field public static final int EXERCISE_SEGMENT_TYPE_ELLIPTICAL = 21; // 0x15
+    field public static final int EXERCISE_SEGMENT_TYPE_FORWARD_TWIST = 22; // 0x16
+    field public static final int EXERCISE_SEGMENT_TYPE_FRONT_RAISE = 23; // 0x17
+    field public static final int EXERCISE_SEGMENT_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING = 24; // 0x18
+    field public static final int EXERCISE_SEGMENT_TYPE_HIP_THRUST = 25; // 0x19
+    field public static final int EXERCISE_SEGMENT_TYPE_HULA_HOOP = 26; // 0x1a
+    field public static final int EXERCISE_SEGMENT_TYPE_JUMPING_JACK = 27; // 0x1b
+    field public static final int EXERCISE_SEGMENT_TYPE_JUMP_ROPE = 28; // 0x1c
+    field public static final int EXERCISE_SEGMENT_TYPE_KETTLEBELL_SWING = 29; // 0x1d
+    field public static final int EXERCISE_SEGMENT_TYPE_LATERAL_RAISE = 30; // 0x1e
+    field public static final int EXERCISE_SEGMENT_TYPE_LAT_PULL_DOWN = 31; // 0x1f
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_CURL = 32; // 0x20
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_EXTENSION = 33; // 0x21
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_PRESS = 34; // 0x22
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_RAISE = 35; // 0x23
+    field public static final int EXERCISE_SEGMENT_TYPE_LUNGE = 36; // 0x24
+    field public static final int EXERCISE_SEGMENT_TYPE_MOUNTAIN_CLIMBER = 37; // 0x25
+    field public static final int EXERCISE_SEGMENT_TYPE_OTHER_WORKOUT = 38; // 0x26
+    field public static final int EXERCISE_SEGMENT_TYPE_PAUSE = 39; // 0x27
+    field public static final int EXERCISE_SEGMENT_TYPE_PILATES = 40; // 0x28
+    field public static final int EXERCISE_SEGMENT_TYPE_PLANK = 41; // 0x29
+    field public static final int EXERCISE_SEGMENT_TYPE_PULL_UP = 42; // 0x2a
+    field public static final int EXERCISE_SEGMENT_TYPE_PUNCH = 43; // 0x2b
+    field public static final int EXERCISE_SEGMENT_TYPE_REST = 44; // 0x2c
+    field public static final int EXERCISE_SEGMENT_TYPE_ROWING_MACHINE = 45; // 0x2d
+    field public static final int EXERCISE_SEGMENT_TYPE_RUNNING = 46; // 0x2e
+    field public static final int EXERCISE_SEGMENT_TYPE_RUNNING_TREADMILL = 47; // 0x2f
+    field public static final int EXERCISE_SEGMENT_TYPE_SHOULDER_PRESS = 48; // 0x30
+    field public static final int EXERCISE_SEGMENT_TYPE_SINGLE_ARM_TRICEPS_EXTENSION = 49; // 0x31
+    field public static final int EXERCISE_SEGMENT_TYPE_SIT_UP = 50; // 0x32
+    field public static final int EXERCISE_SEGMENT_TYPE_SQUAT = 51; // 0x33
+    field public static final int EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING = 52; // 0x34
+    field public static final int EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING_MACHINE = 53; // 0x35
+    field public static final int EXERCISE_SEGMENT_TYPE_STRETCHING = 54; // 0x36
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BACKSTROKE = 55; // 0x37
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BREASTSTROKE = 56; // 0x38
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BUTTERFLY = 57; // 0x39
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_FREESTYLE = 58; // 0x3a
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_MIXED = 59; // 0x3b
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_OPEN_WATER = 60; // 0x3c
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_OTHER = 61; // 0x3d
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_POOL = 62; // 0x3e
+    field public static final int EXERCISE_SEGMENT_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int EXERCISE_SEGMENT_TYPE_UPPER_TWIST = 63; // 0x3f
+    field public static final int EXERCISE_SEGMENT_TYPE_WALKING = 64; // 0x40
+    field public static final int EXERCISE_SEGMENT_TYPE_WEIGHTLIFTING = 65; // 0x41
+    field public static final int EXERCISE_SEGMENT_TYPE_WHEELCHAIR = 66; // 0x42
+    field public static final int EXERCISE_SEGMENT_TYPE_YOGA = 67; // 0x43
+  }
+
+  public static final class ExerciseSegment.Companion {
+  }
+
   public final class ExerciseSessionRecord implements androidx.health.connect.client.records.Record {
-    ctor public ExerciseSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int exerciseType, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata);
+    ctor public ExerciseSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int exerciseType, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata, optional java.util.List<androidx.health.connect.client.records.ExerciseSegment> segments, optional java.util.List<androidx.health.connect.client.records.ExerciseLap> laps);
     method public java.time.Instant getEndTime();
     method public java.time.ZoneOffset? getEndZoneOffset();
     method public int getExerciseType();
+    method public java.util.List<androidx.health.connect.client.records.ExerciseLap> getLaps();
     method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
     method public String? getNotes();
+    method public java.util.List<androidx.health.connect.client.records.ExerciseSegment> getSegments();
     method public java.time.Instant getStartTime();
     method public java.time.ZoneOffset? getStartZoneOffset();
     method public String? getTitle();
     property public java.time.Instant endTime;
     property public java.time.ZoneOffset? endZoneOffset;
     property public final int exerciseType;
+    property public final java.util.List<androidx.health.connect.client.records.ExerciseLap> laps;
     property public androidx.health.connect.client.records.metadata.Metadata metadata;
     property public final String? notes;
+    property public final java.util.List<androidx.health.connect.client.records.ExerciseSegment> segments;
     property public java.time.Instant startTime;
     property public java.time.ZoneOffset? startZoneOffset;
     property public final String? title;
@@ -944,11 +1042,12 @@
   }
 
   public final class SleepSessionRecord implements androidx.health.connect.client.records.Record {
-    ctor public SleepSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata);
+    ctor public SleepSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, optional String? title, optional String? notes, optional java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> stages, optional androidx.health.connect.client.records.metadata.Metadata metadata);
     method public java.time.Instant getEndTime();
     method public java.time.ZoneOffset? getEndZoneOffset();
     method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
     method public String? getNotes();
+    method public java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> getStages();
     method public java.time.Instant getStartTime();
     method public java.time.ZoneOffset? getStartZoneOffset();
     method public String? getTitle();
@@ -956,32 +1055,14 @@
     property public java.time.ZoneOffset? endZoneOffset;
     property public androidx.health.connect.client.records.metadata.Metadata metadata;
     property public final String? notes;
+    property public final java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> stages;
     property public java.time.Instant startTime;
     property public java.time.ZoneOffset? startZoneOffset;
     property public final String? title;
     field public static final androidx.health.connect.client.records.SleepSessionRecord.Companion Companion;
     field public static final androidx.health.connect.client.aggregate.AggregateMetric<java.time.Duration> SLEEP_DURATION_TOTAL;
-  }
-
-  public static final class SleepSessionRecord.Companion {
-  }
-
-  public final class SleepStageRecord implements androidx.health.connect.client.records.Record {
-    ctor public SleepStageRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int stage, optional androidx.health.connect.client.records.metadata.Metadata metadata);
-    method public java.time.Instant getEndTime();
-    method public java.time.ZoneOffset? getEndZoneOffset();
-    method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
-    method public int getStage();
-    method public java.time.Instant getStartTime();
-    method public java.time.ZoneOffset? getStartZoneOffset();
-    property public java.time.Instant endTime;
-    property public java.time.ZoneOffset? endZoneOffset;
-    property public androidx.health.connect.client.records.metadata.Metadata metadata;
-    property public final int stage;
-    property public java.time.Instant startTime;
-    property public java.time.ZoneOffset? startZoneOffset;
-    field public static final androidx.health.connect.client.records.SleepStageRecord.Companion Companion;
     field public static final int STAGE_TYPE_AWAKE = 1; // 0x1
+    field public static final int STAGE_TYPE_AWAKE_IN_BED = 7; // 0x7
     field public static final int STAGE_TYPE_DEEP = 5; // 0x5
     field public static final int STAGE_TYPE_LIGHT = 4; // 0x4
     field public static final int STAGE_TYPE_OUT_OF_BED = 3; // 0x3
@@ -990,7 +1071,17 @@
     field public static final int STAGE_TYPE_UNKNOWN = 0; // 0x0
   }
 
-  public static final class SleepStageRecord.Companion {
+  public static final class SleepSessionRecord.Companion {
+  }
+
+  public static final class SleepSessionRecord.Stage {
+    ctor public SleepSessionRecord.Stage(java.time.Instant startTime, java.time.Instant endTime, int stage);
+    method public java.time.Instant getEndTime();
+    method public int getStage();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final int stage;
+    property public final java.time.Instant startTime;
   }
 
   public final class SpeedRecord implements androidx.health.connect.client.records.Record {
diff --git a/health/connect/connect-client/api/public_plus_experimental_current.txt b/health/connect/connect-client/api/public_plus_experimental_current.txt
index 0a8378c..a5bd664 100644
--- a/health/connect/connect-client/api/public_plus_experimental_current.txt
+++ b/health/connect/connect-client/api/public_plus_experimental_current.txt
@@ -421,21 +421,119 @@
   public static final class ElevationGainedRecord.Companion {
   }
 
+  public final class ExerciseLap {
+    ctor public ExerciseLap(java.time.Instant startTime, java.time.Instant endTime, optional androidx.health.connect.client.units.Length? length);
+    method public java.time.Instant getEndTime();
+    method public androidx.health.connect.client.units.Length? getLength();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final androidx.health.connect.client.units.Length? length;
+    property public final java.time.Instant startTime;
+  }
+
+  public final class ExerciseSegment {
+    ctor public ExerciseSegment(java.time.Instant startTime, java.time.Instant endTime, int segmentType, optional int repetitions);
+    method public java.time.Instant getEndTime();
+    method public int getRepetitions();
+    method public int getSegmentType();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final int repetitions;
+    property public final int segmentType;
+    property public final java.time.Instant startTime;
+    field public static final androidx.health.connect.client.records.ExerciseSegment.Companion Companion;
+    field public static final int EXERCISE_SEGMENT_TYPE_ARM_CURL = 1; // 0x1
+    field public static final int EXERCISE_SEGMENT_TYPE_BACK_EXTENSION = 2; // 0x2
+    field public static final int EXERCISE_SEGMENT_TYPE_BALL_SLAM = 3; // 0x3
+    field public static final int EXERCISE_SEGMENT_TYPE_BARBELL_SHOULDER_PRESS = 4; // 0x4
+    field public static final int EXERCISE_SEGMENT_TYPE_BENCH_PRESS = 5; // 0x5
+    field public static final int EXERCISE_SEGMENT_TYPE_BENCH_SIT_UP = 6; // 0x6
+    field public static final int EXERCISE_SEGMENT_TYPE_BIKING = 7; // 0x7
+    field public static final int EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY = 8; // 0x8
+    field public static final int EXERCISE_SEGMENT_TYPE_BURPEE = 9; // 0x9
+    field public static final int EXERCISE_SEGMENT_TYPE_CRUNCH = 10; // 0xa
+    field public static final int EXERCISE_SEGMENT_TYPE_DEADLIFT = 11; // 0xb
+    field public static final int EXERCISE_SEGMENT_TYPE_DOUBLE_ARM_TRICEPS_EXTENSION = 12; // 0xc
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_LEFT_ARM = 13; // 0xd
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_RIGHT_ARM = 14; // 0xe
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_FRONT_RAISE = 15; // 0xf
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_LATERAL_RAISE = 16; // 0x10
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_ROW = 17; // 0x11
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM = 18; // 0x12
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM = 19; // 0x13
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM = 20; // 0x14
+    field public static final int EXERCISE_SEGMENT_TYPE_ELLIPTICAL = 21; // 0x15
+    field public static final int EXERCISE_SEGMENT_TYPE_FORWARD_TWIST = 22; // 0x16
+    field public static final int EXERCISE_SEGMENT_TYPE_FRONT_RAISE = 23; // 0x17
+    field public static final int EXERCISE_SEGMENT_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING = 24; // 0x18
+    field public static final int EXERCISE_SEGMENT_TYPE_HIP_THRUST = 25; // 0x19
+    field public static final int EXERCISE_SEGMENT_TYPE_HULA_HOOP = 26; // 0x1a
+    field public static final int EXERCISE_SEGMENT_TYPE_JUMPING_JACK = 27; // 0x1b
+    field public static final int EXERCISE_SEGMENT_TYPE_JUMP_ROPE = 28; // 0x1c
+    field public static final int EXERCISE_SEGMENT_TYPE_KETTLEBELL_SWING = 29; // 0x1d
+    field public static final int EXERCISE_SEGMENT_TYPE_LATERAL_RAISE = 30; // 0x1e
+    field public static final int EXERCISE_SEGMENT_TYPE_LAT_PULL_DOWN = 31; // 0x1f
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_CURL = 32; // 0x20
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_EXTENSION = 33; // 0x21
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_PRESS = 34; // 0x22
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_RAISE = 35; // 0x23
+    field public static final int EXERCISE_SEGMENT_TYPE_LUNGE = 36; // 0x24
+    field public static final int EXERCISE_SEGMENT_TYPE_MOUNTAIN_CLIMBER = 37; // 0x25
+    field public static final int EXERCISE_SEGMENT_TYPE_OTHER_WORKOUT = 38; // 0x26
+    field public static final int EXERCISE_SEGMENT_TYPE_PAUSE = 39; // 0x27
+    field public static final int EXERCISE_SEGMENT_TYPE_PILATES = 40; // 0x28
+    field public static final int EXERCISE_SEGMENT_TYPE_PLANK = 41; // 0x29
+    field public static final int EXERCISE_SEGMENT_TYPE_PULL_UP = 42; // 0x2a
+    field public static final int EXERCISE_SEGMENT_TYPE_PUNCH = 43; // 0x2b
+    field public static final int EXERCISE_SEGMENT_TYPE_REST = 44; // 0x2c
+    field public static final int EXERCISE_SEGMENT_TYPE_ROWING_MACHINE = 45; // 0x2d
+    field public static final int EXERCISE_SEGMENT_TYPE_RUNNING = 46; // 0x2e
+    field public static final int EXERCISE_SEGMENT_TYPE_RUNNING_TREADMILL = 47; // 0x2f
+    field public static final int EXERCISE_SEGMENT_TYPE_SHOULDER_PRESS = 48; // 0x30
+    field public static final int EXERCISE_SEGMENT_TYPE_SINGLE_ARM_TRICEPS_EXTENSION = 49; // 0x31
+    field public static final int EXERCISE_SEGMENT_TYPE_SIT_UP = 50; // 0x32
+    field public static final int EXERCISE_SEGMENT_TYPE_SQUAT = 51; // 0x33
+    field public static final int EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING = 52; // 0x34
+    field public static final int EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING_MACHINE = 53; // 0x35
+    field public static final int EXERCISE_SEGMENT_TYPE_STRETCHING = 54; // 0x36
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BACKSTROKE = 55; // 0x37
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BREASTSTROKE = 56; // 0x38
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BUTTERFLY = 57; // 0x39
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_FREESTYLE = 58; // 0x3a
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_MIXED = 59; // 0x3b
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_OPEN_WATER = 60; // 0x3c
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_OTHER = 61; // 0x3d
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_POOL = 62; // 0x3e
+    field public static final int EXERCISE_SEGMENT_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int EXERCISE_SEGMENT_TYPE_UPPER_TWIST = 63; // 0x3f
+    field public static final int EXERCISE_SEGMENT_TYPE_WALKING = 64; // 0x40
+    field public static final int EXERCISE_SEGMENT_TYPE_WEIGHTLIFTING = 65; // 0x41
+    field public static final int EXERCISE_SEGMENT_TYPE_WHEELCHAIR = 66; // 0x42
+    field public static final int EXERCISE_SEGMENT_TYPE_YOGA = 67; // 0x43
+  }
+
+  public static final class ExerciseSegment.Companion {
+  }
+
   public final class ExerciseSessionRecord implements androidx.health.connect.client.records.Record {
-    ctor public ExerciseSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int exerciseType, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata);
+    ctor public ExerciseSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int exerciseType, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata, optional java.util.List<androidx.health.connect.client.records.ExerciseSegment> segments, optional java.util.List<androidx.health.connect.client.records.ExerciseLap> laps);
     method public java.time.Instant getEndTime();
     method public java.time.ZoneOffset? getEndZoneOffset();
     method public int getExerciseType();
+    method public java.util.List<androidx.health.connect.client.records.ExerciseLap> getLaps();
     method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
     method public String? getNotes();
+    method public java.util.List<androidx.health.connect.client.records.ExerciseSegment> getSegments();
     method public java.time.Instant getStartTime();
     method public java.time.ZoneOffset? getStartZoneOffset();
     method public String? getTitle();
     property public java.time.Instant endTime;
     property public java.time.ZoneOffset? endZoneOffset;
     property public final int exerciseType;
+    property public final java.util.List<androidx.health.connect.client.records.ExerciseLap> laps;
     property public androidx.health.connect.client.records.metadata.Metadata metadata;
     property public final String? notes;
+    property public final java.util.List<androidx.health.connect.client.records.ExerciseSegment> segments;
     property public java.time.Instant startTime;
     property public java.time.ZoneOffset? startZoneOffset;
     property public final String? title;
@@ -944,11 +1042,12 @@
   }
 
   public final class SleepSessionRecord implements androidx.health.connect.client.records.Record {
-    ctor public SleepSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata);
+    ctor public SleepSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, optional String? title, optional String? notes, optional java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> stages, optional androidx.health.connect.client.records.metadata.Metadata metadata);
     method public java.time.Instant getEndTime();
     method public java.time.ZoneOffset? getEndZoneOffset();
     method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
     method public String? getNotes();
+    method public java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> getStages();
     method public java.time.Instant getStartTime();
     method public java.time.ZoneOffset? getStartZoneOffset();
     method public String? getTitle();
@@ -956,32 +1055,14 @@
     property public java.time.ZoneOffset? endZoneOffset;
     property public androidx.health.connect.client.records.metadata.Metadata metadata;
     property public final String? notes;
+    property public final java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> stages;
     property public java.time.Instant startTime;
     property public java.time.ZoneOffset? startZoneOffset;
     property public final String? title;
     field public static final androidx.health.connect.client.records.SleepSessionRecord.Companion Companion;
     field public static final androidx.health.connect.client.aggregate.AggregateMetric<java.time.Duration> SLEEP_DURATION_TOTAL;
-  }
-
-  public static final class SleepSessionRecord.Companion {
-  }
-
-  public final class SleepStageRecord implements androidx.health.connect.client.records.Record {
-    ctor public SleepStageRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int stage, optional androidx.health.connect.client.records.metadata.Metadata metadata);
-    method public java.time.Instant getEndTime();
-    method public java.time.ZoneOffset? getEndZoneOffset();
-    method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
-    method public int getStage();
-    method public java.time.Instant getStartTime();
-    method public java.time.ZoneOffset? getStartZoneOffset();
-    property public java.time.Instant endTime;
-    property public java.time.ZoneOffset? endZoneOffset;
-    property public androidx.health.connect.client.records.metadata.Metadata metadata;
-    property public final int stage;
-    property public java.time.Instant startTime;
-    property public java.time.ZoneOffset? startZoneOffset;
-    field public static final androidx.health.connect.client.records.SleepStageRecord.Companion Companion;
     field public static final int STAGE_TYPE_AWAKE = 1; // 0x1
+    field public static final int STAGE_TYPE_AWAKE_IN_BED = 7; // 0x7
     field public static final int STAGE_TYPE_DEEP = 5; // 0x5
     field public static final int STAGE_TYPE_LIGHT = 4; // 0x4
     field public static final int STAGE_TYPE_OUT_OF_BED = 3; // 0x3
@@ -990,7 +1071,17 @@
     field public static final int STAGE_TYPE_UNKNOWN = 0; // 0x0
   }
 
-  public static final class SleepStageRecord.Companion {
+  public static final class SleepSessionRecord.Companion {
+  }
+
+  public static final class SleepSessionRecord.Stage {
+    ctor public SleepSessionRecord.Stage(java.time.Instant startTime, java.time.Instant endTime, int stage);
+    method public java.time.Instant getEndTime();
+    method public int getStage();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final int stage;
+    property public final java.time.Instant startTime;
   }
 
   public final class SpeedRecord implements androidx.health.connect.client.records.Record {
diff --git a/health/connect/connect-client/api/restricted_current.txt b/health/connect/connect-client/api/restricted_current.txt
index 970eb61..fbce104 100644
--- a/health/connect/connect-client/api/restricted_current.txt
+++ b/health/connect/connect-client/api/restricted_current.txt
@@ -421,21 +421,119 @@
   public static final class ElevationGainedRecord.Companion {
   }
 
+  public final class ExerciseLap {
+    ctor public ExerciseLap(java.time.Instant startTime, java.time.Instant endTime, optional androidx.health.connect.client.units.Length? length);
+    method public java.time.Instant getEndTime();
+    method public androidx.health.connect.client.units.Length? getLength();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final androidx.health.connect.client.units.Length? length;
+    property public final java.time.Instant startTime;
+  }
+
+  public final class ExerciseSegment {
+    ctor public ExerciseSegment(java.time.Instant startTime, java.time.Instant endTime, int segmentType, optional int repetitions);
+    method public java.time.Instant getEndTime();
+    method public int getRepetitions();
+    method public int getSegmentType();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final int repetitions;
+    property public final int segmentType;
+    property public final java.time.Instant startTime;
+    field public static final androidx.health.connect.client.records.ExerciseSegment.Companion Companion;
+    field public static final int EXERCISE_SEGMENT_TYPE_ARM_CURL = 1; // 0x1
+    field public static final int EXERCISE_SEGMENT_TYPE_BACK_EXTENSION = 2; // 0x2
+    field public static final int EXERCISE_SEGMENT_TYPE_BALL_SLAM = 3; // 0x3
+    field public static final int EXERCISE_SEGMENT_TYPE_BARBELL_SHOULDER_PRESS = 4; // 0x4
+    field public static final int EXERCISE_SEGMENT_TYPE_BENCH_PRESS = 5; // 0x5
+    field public static final int EXERCISE_SEGMENT_TYPE_BENCH_SIT_UP = 6; // 0x6
+    field public static final int EXERCISE_SEGMENT_TYPE_BIKING = 7; // 0x7
+    field public static final int EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY = 8; // 0x8
+    field public static final int EXERCISE_SEGMENT_TYPE_BURPEE = 9; // 0x9
+    field public static final int EXERCISE_SEGMENT_TYPE_CRUNCH = 10; // 0xa
+    field public static final int EXERCISE_SEGMENT_TYPE_DEADLIFT = 11; // 0xb
+    field public static final int EXERCISE_SEGMENT_TYPE_DOUBLE_ARM_TRICEPS_EXTENSION = 12; // 0xc
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_LEFT_ARM = 13; // 0xd
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_RIGHT_ARM = 14; // 0xe
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_FRONT_RAISE = 15; // 0xf
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_LATERAL_RAISE = 16; // 0x10
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_ROW = 17; // 0x11
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM = 18; // 0x12
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM = 19; // 0x13
+    field public static final int EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM = 20; // 0x14
+    field public static final int EXERCISE_SEGMENT_TYPE_ELLIPTICAL = 21; // 0x15
+    field public static final int EXERCISE_SEGMENT_TYPE_FORWARD_TWIST = 22; // 0x16
+    field public static final int EXERCISE_SEGMENT_TYPE_FRONT_RAISE = 23; // 0x17
+    field public static final int EXERCISE_SEGMENT_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING = 24; // 0x18
+    field public static final int EXERCISE_SEGMENT_TYPE_HIP_THRUST = 25; // 0x19
+    field public static final int EXERCISE_SEGMENT_TYPE_HULA_HOOP = 26; // 0x1a
+    field public static final int EXERCISE_SEGMENT_TYPE_JUMPING_JACK = 27; // 0x1b
+    field public static final int EXERCISE_SEGMENT_TYPE_JUMP_ROPE = 28; // 0x1c
+    field public static final int EXERCISE_SEGMENT_TYPE_KETTLEBELL_SWING = 29; // 0x1d
+    field public static final int EXERCISE_SEGMENT_TYPE_LATERAL_RAISE = 30; // 0x1e
+    field public static final int EXERCISE_SEGMENT_TYPE_LAT_PULL_DOWN = 31; // 0x1f
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_CURL = 32; // 0x20
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_EXTENSION = 33; // 0x21
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_PRESS = 34; // 0x22
+    field public static final int EXERCISE_SEGMENT_TYPE_LEG_RAISE = 35; // 0x23
+    field public static final int EXERCISE_SEGMENT_TYPE_LUNGE = 36; // 0x24
+    field public static final int EXERCISE_SEGMENT_TYPE_MOUNTAIN_CLIMBER = 37; // 0x25
+    field public static final int EXERCISE_SEGMENT_TYPE_OTHER_WORKOUT = 38; // 0x26
+    field public static final int EXERCISE_SEGMENT_TYPE_PAUSE = 39; // 0x27
+    field public static final int EXERCISE_SEGMENT_TYPE_PILATES = 40; // 0x28
+    field public static final int EXERCISE_SEGMENT_TYPE_PLANK = 41; // 0x29
+    field public static final int EXERCISE_SEGMENT_TYPE_PULL_UP = 42; // 0x2a
+    field public static final int EXERCISE_SEGMENT_TYPE_PUNCH = 43; // 0x2b
+    field public static final int EXERCISE_SEGMENT_TYPE_REST = 44; // 0x2c
+    field public static final int EXERCISE_SEGMENT_TYPE_ROWING_MACHINE = 45; // 0x2d
+    field public static final int EXERCISE_SEGMENT_TYPE_RUNNING = 46; // 0x2e
+    field public static final int EXERCISE_SEGMENT_TYPE_RUNNING_TREADMILL = 47; // 0x2f
+    field public static final int EXERCISE_SEGMENT_TYPE_SHOULDER_PRESS = 48; // 0x30
+    field public static final int EXERCISE_SEGMENT_TYPE_SINGLE_ARM_TRICEPS_EXTENSION = 49; // 0x31
+    field public static final int EXERCISE_SEGMENT_TYPE_SIT_UP = 50; // 0x32
+    field public static final int EXERCISE_SEGMENT_TYPE_SQUAT = 51; // 0x33
+    field public static final int EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING = 52; // 0x34
+    field public static final int EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING_MACHINE = 53; // 0x35
+    field public static final int EXERCISE_SEGMENT_TYPE_STRETCHING = 54; // 0x36
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BACKSTROKE = 55; // 0x37
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BREASTSTROKE = 56; // 0x38
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_BUTTERFLY = 57; // 0x39
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_FREESTYLE = 58; // 0x3a
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_MIXED = 59; // 0x3b
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_OPEN_WATER = 60; // 0x3c
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_OTHER = 61; // 0x3d
+    field public static final int EXERCISE_SEGMENT_TYPE_SWIMMING_POOL = 62; // 0x3e
+    field public static final int EXERCISE_SEGMENT_TYPE_UNKNOWN = 0; // 0x0
+    field public static final int EXERCISE_SEGMENT_TYPE_UPPER_TWIST = 63; // 0x3f
+    field public static final int EXERCISE_SEGMENT_TYPE_WALKING = 64; // 0x40
+    field public static final int EXERCISE_SEGMENT_TYPE_WEIGHTLIFTING = 65; // 0x41
+    field public static final int EXERCISE_SEGMENT_TYPE_WHEELCHAIR = 66; // 0x42
+    field public static final int EXERCISE_SEGMENT_TYPE_YOGA = 67; // 0x43
+  }
+
+  public static final class ExerciseSegment.Companion {
+  }
+
   public final class ExerciseSessionRecord implements androidx.health.connect.client.records.IntervalRecord {
-    ctor public ExerciseSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int exerciseType, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata);
+    ctor public ExerciseSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int exerciseType, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata, optional java.util.List<androidx.health.connect.client.records.ExerciseSegment> segments, optional java.util.List<androidx.health.connect.client.records.ExerciseLap> laps);
     method public java.time.Instant getEndTime();
     method public java.time.ZoneOffset? getEndZoneOffset();
     method public int getExerciseType();
+    method public java.util.List<androidx.health.connect.client.records.ExerciseLap> getLaps();
     method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
     method public String? getNotes();
+    method public java.util.List<androidx.health.connect.client.records.ExerciseSegment> getSegments();
     method public java.time.Instant getStartTime();
     method public java.time.ZoneOffset? getStartZoneOffset();
     method public String? getTitle();
     property public java.time.Instant endTime;
     property public java.time.ZoneOffset? endZoneOffset;
     property public final int exerciseType;
+    property public final java.util.List<androidx.health.connect.client.records.ExerciseLap> laps;
     property public androidx.health.connect.client.records.metadata.Metadata metadata;
     property public final String? notes;
+    property public final java.util.List<androidx.health.connect.client.records.ExerciseSegment> segments;
     property public java.time.Instant startTime;
     property public java.time.ZoneOffset? startZoneOffset;
     property public final String? title;
@@ -967,11 +1065,12 @@
   }
 
   public final class SleepSessionRecord implements androidx.health.connect.client.records.IntervalRecord {
-    ctor public SleepSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, optional String? title, optional String? notes, optional androidx.health.connect.client.records.metadata.Metadata metadata);
+    ctor public SleepSessionRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, optional String? title, optional String? notes, optional java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> stages, optional androidx.health.connect.client.records.metadata.Metadata metadata);
     method public java.time.Instant getEndTime();
     method public java.time.ZoneOffset? getEndZoneOffset();
     method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
     method public String? getNotes();
+    method public java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> getStages();
     method public java.time.Instant getStartTime();
     method public java.time.ZoneOffset? getStartZoneOffset();
     method public String? getTitle();
@@ -979,32 +1078,14 @@
     property public java.time.ZoneOffset? endZoneOffset;
     property public androidx.health.connect.client.records.metadata.Metadata metadata;
     property public final String? notes;
+    property public final java.util.List<androidx.health.connect.client.records.SleepSessionRecord.Stage> stages;
     property public java.time.Instant startTime;
     property public java.time.ZoneOffset? startZoneOffset;
     property public final String? title;
     field public static final androidx.health.connect.client.records.SleepSessionRecord.Companion Companion;
     field public static final androidx.health.connect.client.aggregate.AggregateMetric<java.time.Duration> SLEEP_DURATION_TOTAL;
-  }
-
-  public static final class SleepSessionRecord.Companion {
-  }
-
-  public final class SleepStageRecord implements androidx.health.connect.client.records.IntervalRecord {
-    ctor public SleepStageRecord(java.time.Instant startTime, java.time.ZoneOffset? startZoneOffset, java.time.Instant endTime, java.time.ZoneOffset? endZoneOffset, int stage, optional androidx.health.connect.client.records.metadata.Metadata metadata);
-    method public java.time.Instant getEndTime();
-    method public java.time.ZoneOffset? getEndZoneOffset();
-    method public androidx.health.connect.client.records.metadata.Metadata getMetadata();
-    method public int getStage();
-    method public java.time.Instant getStartTime();
-    method public java.time.ZoneOffset? getStartZoneOffset();
-    property public java.time.Instant endTime;
-    property public java.time.ZoneOffset? endZoneOffset;
-    property public androidx.health.connect.client.records.metadata.Metadata metadata;
-    property public final int stage;
-    property public java.time.Instant startTime;
-    property public java.time.ZoneOffset? startZoneOffset;
-    field public static final androidx.health.connect.client.records.SleepStageRecord.Companion Companion;
     field public static final int STAGE_TYPE_AWAKE = 1; // 0x1
+    field public static final int STAGE_TYPE_AWAKE_IN_BED = 7; // 0x7
     field public static final int STAGE_TYPE_DEEP = 5; // 0x5
     field public static final int STAGE_TYPE_LIGHT = 4; // 0x4
     field public static final int STAGE_TYPE_OUT_OF_BED = 3; // 0x3
@@ -1013,7 +1094,17 @@
     field public static final int STAGE_TYPE_UNKNOWN = 0; // 0x0
   }
 
-  public static final class SleepStageRecord.Companion {
+  public static final class SleepSessionRecord.Companion {
+  }
+
+  public static final class SleepSessionRecord.Stage {
+    ctor public SleepSessionRecord.Stage(java.time.Instant startTime, java.time.Instant endTime, int stage);
+    method public java.time.Instant getEndTime();
+    method public int getStage();
+    method public java.time.Instant getStartTime();
+    property public final java.time.Instant endTime;
+    property public final int stage;
+    property public final java.time.Instant startTime;
   }
 
   public final class SpeedRecord implements androidx.health.connect.client.records.SeriesRecord<androidx.health.connect.client.records.SpeedRecord.Sample> {
diff --git a/health/connect/connect-client/build.gradle b/health/connect/connect-client/build.gradle
index 06b657b..f3b4530 100644
--- a/health/connect/connect-client/build.gradle
+++ b/health/connect/connect-client/build.gradle
@@ -73,7 +73,7 @@
 }
 
 androidx {
-    name = "AndroidX Health Connect Client Library"
+    name = "Health Connect Client"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "read or write user's health and fitness records."
diff --git a/health/connect/connect-client/proguard-rules.pro b/health/connect/connect-client/proguard-rules.pro
index 5f54197..0442efc 100644
--- a/health/connect/connect-client/proguard-rules.pro
+++ b/health/connect/connect-client/proguard-rules.pro
@@ -26,3 +26,7 @@
 # Permissions are put into Intents and retrieved via getParcelable, which uses
 # reflection and require name to be kept in client apps.
 -keepnames class androidx.health.platform.client.permission.Permission
+
+# ExerciseRoute is put into Intents and retrieved via getParcelable, which uses
+# reflection and require name to be kept in client apps.
+-keepnames class androidx.health.platform.client.exerciseroute.ExerciseRoute
diff --git a/health/connect/connect-client/samples/build.gradle b/health/connect/connect-client/samples/build.gradle
index 2d8bd45..b1b2388 100644
--- a/health/connect/connect-client/samples/build.gradle
+++ b/health/connect/connect-client/samples/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Health Connect Library Samples"
+    name = "Health Connect Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2022"
     description = "Contains the sample code for the Androidx Health Connect Library"
diff --git a/health/connect/connect-client/samples/src/main/java/androidx/health/connect/client/samples/AggregationSamples.kt b/health/connect/connect-client/samples/src/main/java/androidx/health/connect/client/samples/AggregationSamples.kt
index 829941f5..e6a48dc 100644
--- a/health/connect/connect-client/samples/src/main/java/androidx/health/connect/client/samples/AggregationSamples.kt
+++ b/health/connect/connect-client/samples/src/main/java/androidx/health/connect/client/samples/AggregationSamples.kt
@@ -23,9 +23,9 @@
 import androidx.health.connect.client.records.DistanceRecord
 import androidx.health.connect.client.records.HeartRateRecord
 import androidx.health.connect.client.records.StepsRecord
-import androidx.health.connect.client.request.AggregateRequest
 import androidx.health.connect.client.request.AggregateGroupByDurationRequest
 import androidx.health.connect.client.request.AggregateGroupByPeriodRequest
+import androidx.health.connect.client.request.AggregateRequest
 import androidx.health.connect.client.time.TimeRangeFilter
 import java.time.Duration
 import java.time.Instant
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordConverters.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordConverters.kt
index 9723271..a410c3f 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordConverters.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordConverters.kt
@@ -421,9 +421,10 @@
                     metadata = metadata,
                     segments = subTypeDataListsMap["segments"]?.toSegmentList() ?: emptyList(),
                     laps = subTypeDataListsMap["laps"]?.toLapList() ?: emptyList(),
-                    route = subTypeDataListsMap["route"]?.let {
-                        ExerciseRoute(route = it.toLocationList())
-                    },
+                    route =
+                        subTypeDataListsMap["route"]?.let {
+                            ExerciseRoute(route = it.toLocationList())
+                        },
                     hasRoute = valuesMap["hasRoute"]?.booleanVal ?: false,
                 )
             "Distance" ->
@@ -580,3 +581,20 @@
             else -> throw RuntimeException("Unknown data type ${dataType.name}")
         }
     }
+
+fun toExerciseRoute(
+    protoWrapper: androidx.health.platform.client.exerciseroute.ExerciseRoute
+): ExerciseRoute {
+    return ExerciseRoute(
+        protoWrapper.proto.valuesList.map { value ->
+            ExerciseRoute.Location(
+                time = Instant.ofEpochMilli(value.startTimeMillis),
+                latitude = value.valuesMap["latitude"]!!.doubleVal,
+                longitude = value.valuesMap["longitude"]!!.doubleVal,
+                altitude = value.valuesMap["altitude"]?.doubleVal?.meters,
+                horizontalAccuracy = value.valuesMap["horizontal_accuracy"]?.doubleVal?.meters,
+                verticalAccuracy = value.valuesMap["vertical_accuracy"]?.doubleVal?.meters
+            )
+        }
+    )
+}
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordUtils.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordUtils.kt
index 57b0fba..f2fa0f4 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordUtils.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/converters/records/ProtoToRecordUtils.kt
@@ -18,12 +18,12 @@
 package androidx.health.connect.client.impl.converters.records
 
 import androidx.annotation.RestrictTo
-import androidx.health.connect.client.records.SleepSessionRecord
-import androidx.health.connect.client.records.SleepSessionRecord.Companion.STAGE_TYPE_STRING_TO_INT_MAP
 import androidx.health.connect.client.records.ExerciseLap
 import androidx.health.connect.client.records.ExerciseRoute
 import androidx.health.connect.client.records.ExerciseSegment
 import androidx.health.connect.client.records.ExerciseSegment.Companion.EXERCISE_SEGMENT_TYPE_UNKNOWN
+import androidx.health.connect.client.records.SleepSessionRecord
+import androidx.health.connect.client.records.SleepSessionRecord.Companion.STAGE_TYPE_STRING_TO_INT_MAP
 import androidx.health.connect.client.records.metadata.DataOrigin
 import androidx.health.connect.client.records.metadata.Device
 import androidx.health.connect.client.records.metadata.Metadata
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/RequestExerciseRouteInternal.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/RequestExerciseRouteInternal.kt
new file mode 100644
index 0000000..4417c02
--- /dev/null
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/RequestExerciseRouteInternal.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.health.connect.client.permission
+
+import android.content.Context
+import android.content.Intent
+import androidx.activity.result.contract.ActivityResultContract
+import androidx.annotation.RestrictTo
+import androidx.health.connect.client.HealthConnectClient
+import androidx.health.connect.client.impl.converters.records.toExerciseRoute
+import androidx.health.connect.client.records.ExerciseRoute
+import androidx.health.platform.client.impl.logger.Logger
+import androidx.health.platform.client.service.HealthDataServiceConstants
+
+/**
+ * An [ActivityResultContract] to request a route associated with an {@code ExerciseSessionRecord}.
+ *
+ * @see androidx.activity.ComponentActivity.registerForActivityResult
+ */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+internal class RequestExerciseRouteInternal : ActivityResultContract<String?, ExerciseRoute?>() {
+    override fun createIntent(context: Context, input: String?): Intent {
+        require(!input.isNullOrEmpty()) { "Session identifier is required" }
+        return Intent(HealthDataServiceConstants.ACTION_REQUEST_ROUTE).apply {
+            putExtra(HealthDataServiceConstants.EXTRA_SESSION_ID, input)
+        }
+    }
+
+    @Suppress("DEPRECATION") // getParcelableExtra
+    override fun parseResult(resultCode: Int, intent: Intent?): ExerciseRoute? {
+        val route =
+            intent?.getParcelableExtra<androidx.health.platform.client.exerciseroute.ExerciseRoute>(
+                HealthDataServiceConstants.EXTRA_EXERCISE_ROUTE
+            )
+        if (route == null) {
+            Logger.debug(HealthConnectClient.HEALTH_CONNECT_CLIENT_TAG, "No route returned.")
+            return null
+        }
+        Logger.debug(HealthConnectClient.HEALTH_CONNECT_CLIENT_TAG, "Returned a route.")
+        return toExerciseRoute(route)
+    }
+}
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseLap.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseLap.kt
index 08aa1fc..290feb0 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseLap.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseLap.kt
@@ -16,21 +16,19 @@
 
 package androidx.health.connect.client.records
 
-import androidx.annotation.RestrictTo
 import androidx.health.connect.client.units.Length
 import java.time.Instant
 
 /**
  * Captures the time of a lap within an exercise session.
  *
- * <p>Each lap contains the start and end time and optional [Length] of the lap (e.g. pool
- * length while swimming or a track lap while running). There may or may not be direct correlation
- * with [ExerciseSegment] start and end times, e.g. [ExerciseSessionRecord] of type
- * running without any segments can be divided into laps of different lengths.
+ * <p>Each lap contains the start and end time and optional [Length] of the lap (e.g. pool length
+ * while swimming or a track lap while running). There may or may not be direct correlation with
+ * [ExerciseSegment] start and end times, e.g. [ExerciseSessionRecord] of type running without any
+ * segments can be divided into laps of different lengths.
  *
  * @see ExerciseSessionRecord
  */
-@RestrictTo(RestrictTo.Scope.LIBRARY)
 public class ExerciseLap(
     public val startTime: Instant,
     public val endTime: Instant,
@@ -62,4 +60,4 @@
         result = 31 * result + length.hashCode()
         return result
     }
-}
\ No newline at end of file
+}
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSegment.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSegment.kt
index 67cf876..6afd2ee 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSegment.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSegment.kt
@@ -28,7 +28,6 @@
  *
  * @see ExerciseSessionRecord
  */
-@RestrictTo(RestrictTo.Scope.LIBRARY)
 public class ExerciseSegment(
     public val startTime: Instant,
     public val endTime: Instant,
@@ -70,10 +69,7 @@
         if (UNIVERSAL_SEGMENTS.contains(segmentType)) {
             return true
         }
-        if (!SESSION_TO_SEGMENTS_MAPPING.contains(sessionType)) {
-            return false
-        }
-        return SESSION_TO_SEGMENTS_MAPPING[sessionType]!!.contains(segmentType)
+        return SESSION_TO_SEGMENTS_MAPPING[sessionType]?.contains(segmentType) ?: false
     }
 
     companion object {
@@ -280,179 +276,48 @@
         /** Use this type for yoga. */
         const val EXERCISE_SEGMENT_TYPE_YOGA = 67
 
-        internal val UNIVERSAL_SESSION_TYPES = setOf(
-            ExerciseSessionRecord.EXERCISE_TYPE_BOOT_CAMP,
-            ExerciseSessionRecord.EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING,
-            ExerciseSessionRecord.EXERCISE_TYPE_OTHER_WORKOUT,
-        )
+        internal val UNIVERSAL_SESSION_TYPES =
+            setOf(
+                ExerciseSessionRecord.EXERCISE_TYPE_BOOT_CAMP,
+                ExerciseSessionRecord.EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING,
+                ExerciseSessionRecord.EXERCISE_TYPE_OTHER_WORKOUT,
+            )
 
-        internal val UNIVERSAL_SEGMENTS = setOf(
-            EXERCISE_SEGMENT_TYPE_OTHER_WORKOUT,
-            EXERCISE_SEGMENT_TYPE_PAUSE,
-            EXERCISE_SEGMENT_TYPE_REST,
-            EXERCISE_SEGMENT_TYPE_STRETCHING,
-            EXERCISE_SEGMENT_TYPE_UNKNOWN,
-        )
-
-        internal val EXERCISE_SEGMENTS = setOf(
-            EXERCISE_SEGMENT_TYPE_ARM_CURL,
-            EXERCISE_SEGMENT_TYPE_BACK_EXTENSION,
-            EXERCISE_SEGMENT_TYPE_BALL_SLAM,
-            EXERCISE_SEGMENT_TYPE_BARBELL_SHOULDER_PRESS,
-            EXERCISE_SEGMENT_TYPE_BENCH_PRESS,
-            EXERCISE_SEGMENT_TYPE_BENCH_SIT_UP,
-            EXERCISE_SEGMENT_TYPE_BURPEE,
-            EXERCISE_SEGMENT_TYPE_CRUNCH,
-            EXERCISE_SEGMENT_TYPE_DEADLIFT,
-            EXERCISE_SEGMENT_TYPE_DOUBLE_ARM_TRICEPS_EXTENSION,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_LEFT_ARM,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_RIGHT_ARM,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_FRONT_RAISE,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_LATERAL_RAISE,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_ROW,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM,
-            EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM,
-            EXERCISE_SEGMENT_TYPE_FORWARD_TWIST,
-            EXERCISE_SEGMENT_TYPE_FRONT_RAISE,
-            EXERCISE_SEGMENT_TYPE_HIP_THRUST,
-            EXERCISE_SEGMENT_TYPE_HULA_HOOP,
-            EXERCISE_SEGMENT_TYPE_JUMP_ROPE,
-            EXERCISE_SEGMENT_TYPE_JUMPING_JACK,
-            EXERCISE_SEGMENT_TYPE_KETTLEBELL_SWING,
-            EXERCISE_SEGMENT_TYPE_LATERAL_RAISE,
-            EXERCISE_SEGMENT_TYPE_LAT_PULL_DOWN,
-            EXERCISE_SEGMENT_TYPE_LEG_CURL,
-            EXERCISE_SEGMENT_TYPE_LEG_EXTENSION,
-            EXERCISE_SEGMENT_TYPE_LEG_PRESS,
-            EXERCISE_SEGMENT_TYPE_LEG_RAISE,
-            EXERCISE_SEGMENT_TYPE_LUNGE,
-            EXERCISE_SEGMENT_TYPE_MOUNTAIN_CLIMBER,
-            EXERCISE_SEGMENT_TYPE_PLANK,
-            EXERCISE_SEGMENT_TYPE_PULL_UP,
-            EXERCISE_SEGMENT_TYPE_PUNCH,
-            EXERCISE_SEGMENT_TYPE_SHOULDER_PRESS,
-            EXERCISE_SEGMENT_TYPE_SINGLE_ARM_TRICEPS_EXTENSION,
-            EXERCISE_SEGMENT_TYPE_SIT_UP,
-            EXERCISE_SEGMENT_TYPE_SQUAT,
-            EXERCISE_SEGMENT_TYPE_UPPER_TWIST,
-            EXERCISE_SEGMENT_TYPE_WEIGHTLIFTING
-        )
-        internal val SWIMMING_SEGMENTS = setOf(
-            EXERCISE_SEGMENT_TYPE_SWIMMING_BACKSTROKE,
-            EXERCISE_SEGMENT_TYPE_SWIMMING_BREASTSTROKE,
-            EXERCISE_SEGMENT_TYPE_SWIMMING_FREESTYLE,
-            EXERCISE_SEGMENT_TYPE_SWIMMING_BUTTERFLY,
-            EXERCISE_SEGMENT_TYPE_SWIMMING_MIXED,
-            EXERCISE_SEGMENT_TYPE_SWIMMING_OTHER
-        )
-
-        private val SESSION_TO_SEGMENTS_MAPPING = mapOf(
-            ExerciseSessionRecord.EXERCISE_TYPE_BIKING to setOf(EXERCISE_SEGMENT_TYPE_BIKING),
-            ExerciseSessionRecord.EXERCISE_TYPE_BIKING_STATIONARY to setOf(
-                EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_CALISTHENICS to EXERCISE_SEGMENTS,
-            ExerciseSessionRecord.EXERCISE_TYPE_ELLIPTICAL
-                to setOf(EXERCISE_SEGMENT_TYPE_ELLIPTICAL),
-            ExerciseSessionRecord.EXERCISE_TYPE_EXERCISE_CLASS to setOf(
-                EXERCISE_SEGMENT_TYPE_YOGA,
-                EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY,
-                EXERCISE_SEGMENT_TYPE_PILATES,
-                EXERCISE_SEGMENT_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_GYMNASTICS to EXERCISE_SEGMENTS,
-            ExerciseSessionRecord.EXERCISE_TYPE_HIKING to setOf(
-                EXERCISE_SEGMENT_TYPE_WALKING,
-                EXERCISE_SEGMENT_TYPE_WHEELCHAIR
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_PILATES to setOf(EXERCISE_SEGMENT_TYPE_PILATES),
-            ExerciseSessionRecord.EXERCISE_TYPE_ROWING_MACHINE to setOf(
-                EXERCISE_SEGMENT_TYPE_ROWING_MACHINE
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_RUNNING to setOf(
-                EXERCISE_SEGMENT_TYPE_RUNNING,
-                EXERCISE_SEGMENT_TYPE_WALKING
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_RUNNING_TREADMILL to setOf(
-                EXERCISE_SEGMENT_TYPE_RUNNING_TREADMILL
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_STRENGTH_TRAINING to EXERCISE_SEGMENTS,
-            ExerciseSessionRecord.EXERCISE_TYPE_STAIR_CLIMBING to setOf(
-                EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_STAIR_CLIMBING_MACHINE to setOf(
-                EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING_MACHINE
-            ),
-            ExerciseSessionRecord.EXERCISE_TYPE_SWIMMING_OPEN_WATER to buildSet {
-                add(EXERCISE_SEGMENT_TYPE_SWIMMING_OPEN_WATER)
-                addAll(SWIMMING_SEGMENTS)
-            },
-            ExerciseSessionRecord.EXERCISE_TYPE_SWIMMING_POOL to buildSet {
-                add(EXERCISE_SEGMENT_TYPE_SWIMMING_POOL)
-                addAll(SWIMMING_SEGMENTS)
-            },
-            ExerciseSessionRecord.EXERCISE_TYPE_WALKING to setOf(EXERCISE_SEGMENT_TYPE_WALKING),
-            ExerciseSessionRecord.EXERCISE_TYPE_WHEELCHAIR
-                to setOf(EXERCISE_SEGMENT_TYPE_WHEELCHAIR),
-            ExerciseSessionRecord.EXERCISE_TYPE_WEIGHTLIFTING to EXERCISE_SEGMENTS,
-            ExerciseSessionRecord.EXERCISE_TYPE_YOGA to setOf(EXERCISE_SEGMENT_TYPE_YOGA),
-        )
-
-        /**
-         * List of supported segment types on Health Platform.
-         *
-         * @suppress
-         */
-        @Retention(AnnotationRetention.SOURCE)
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
-        @IntDef(
-            value =
-            [
-                EXERCISE_SEGMENT_TYPE_UNKNOWN,
-                EXERCISE_SEGMENT_TYPE_BARBELL_SHOULDER_PRESS,
-                EXERCISE_SEGMENT_TYPE_BENCH_SIT_UP,
-                EXERCISE_SEGMENT_TYPE_BIKING,
-                EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY,
-                EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_LEFT_ARM,
-                EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_RIGHT_ARM,
-                EXERCISE_SEGMENT_TYPE_DUMBBELL_FRONT_RAISE,
-                EXERCISE_SEGMENT_TYPE_DUMBBELL_LATERAL_RAISE,
-                EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM,
-                EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM,
-                EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM,
-                EXERCISE_SEGMENT_TYPE_FORWARD_TWIST,
-                EXERCISE_SEGMENT_TYPE_ELLIPTICAL,
-                EXERCISE_SEGMENT_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING,
-                EXERCISE_SEGMENT_TYPE_PILATES,
-                EXERCISE_SEGMENT_TYPE_ROWING_MACHINE,
-                EXERCISE_SEGMENT_TYPE_RUNNING,
-                EXERCISE_SEGMENT_TYPE_RUNNING_TREADMILL,
-                EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING,
-                EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING_MACHINE,
-                EXERCISE_SEGMENT_TYPE_STRETCHING,
-                EXERCISE_SEGMENT_TYPE_SWIMMING_OPEN_WATER,
-                EXERCISE_SEGMENT_TYPE_SWIMMING_POOL,
-                EXERCISE_SEGMENT_TYPE_UPPER_TWIST,
-                EXERCISE_SEGMENT_TYPE_WALKING,
-                EXERCISE_SEGMENT_TYPE_WEIGHTLIFTING,
-                EXERCISE_SEGMENT_TYPE_WHEELCHAIR,
+        internal val UNIVERSAL_SEGMENTS =
+            setOf(
                 EXERCISE_SEGMENT_TYPE_OTHER_WORKOUT,
-                EXERCISE_SEGMENT_TYPE_YOGA,
+                EXERCISE_SEGMENT_TYPE_PAUSE,
+                EXERCISE_SEGMENT_TYPE_REST,
+                EXERCISE_SEGMENT_TYPE_STRETCHING,
+                EXERCISE_SEGMENT_TYPE_UNKNOWN,
+            )
+
+        internal val EXERCISE_SEGMENTS =
+            setOf(
                 EXERCISE_SEGMENT_TYPE_ARM_CURL,
                 EXERCISE_SEGMENT_TYPE_BACK_EXTENSION,
                 EXERCISE_SEGMENT_TYPE_BALL_SLAM,
+                EXERCISE_SEGMENT_TYPE_BARBELL_SHOULDER_PRESS,
                 EXERCISE_SEGMENT_TYPE_BENCH_PRESS,
+                EXERCISE_SEGMENT_TYPE_BENCH_SIT_UP,
                 EXERCISE_SEGMENT_TYPE_BURPEE,
                 EXERCISE_SEGMENT_TYPE_CRUNCH,
                 EXERCISE_SEGMENT_TYPE_DEADLIFT,
                 EXERCISE_SEGMENT_TYPE_DOUBLE_ARM_TRICEPS_EXTENSION,
+                EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_LEFT_ARM,
+                EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_RIGHT_ARM,
+                EXERCISE_SEGMENT_TYPE_DUMBBELL_FRONT_RAISE,
+                EXERCISE_SEGMENT_TYPE_DUMBBELL_LATERAL_RAISE,
                 EXERCISE_SEGMENT_TYPE_DUMBBELL_ROW,
+                EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM,
+                EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM,
+                EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM,
+                EXERCISE_SEGMENT_TYPE_FORWARD_TWIST,
                 EXERCISE_SEGMENT_TYPE_FRONT_RAISE,
                 EXERCISE_SEGMENT_TYPE_HIP_THRUST,
                 EXERCISE_SEGMENT_TYPE_HULA_HOOP,
-                EXERCISE_SEGMENT_TYPE_JUMPING_JACK,
                 EXERCISE_SEGMENT_TYPE_JUMP_ROPE,
+                EXERCISE_SEGMENT_TYPE_JUMPING_JACK,
                 EXERCISE_SEGMENT_TYPE_KETTLEBELL_SWING,
                 EXERCISE_SEGMENT_TYPE_LATERAL_RAISE,
                 EXERCISE_SEGMENT_TYPE_LAT_PULL_DOWN,
@@ -469,16 +334,146 @@
                 EXERCISE_SEGMENT_TYPE_SINGLE_ARM_TRICEPS_EXTENSION,
                 EXERCISE_SEGMENT_TYPE_SIT_UP,
                 EXERCISE_SEGMENT_TYPE_SQUAT,
-                EXERCISE_SEGMENT_TYPE_SWIMMING_FREESTYLE,
+                EXERCISE_SEGMENT_TYPE_UPPER_TWIST,
+                EXERCISE_SEGMENT_TYPE_WEIGHTLIFTING
+            )
+        internal val SWIMMING_SEGMENTS =
+            setOf(
                 EXERCISE_SEGMENT_TYPE_SWIMMING_BACKSTROKE,
                 EXERCISE_SEGMENT_TYPE_SWIMMING_BREASTSTROKE,
+                EXERCISE_SEGMENT_TYPE_SWIMMING_FREESTYLE,
                 EXERCISE_SEGMENT_TYPE_SWIMMING_BUTTERFLY,
                 EXERCISE_SEGMENT_TYPE_SWIMMING_MIXED,
-                EXERCISE_SEGMENT_TYPE_SWIMMING_OTHER,
-                EXERCISE_SEGMENT_TYPE_REST,
-                EXERCISE_SEGMENT_TYPE_PAUSE,
-            ]
+                EXERCISE_SEGMENT_TYPE_SWIMMING_OTHER
+            )
+
+        private val SESSION_TO_SEGMENTS_MAPPING =
+            mapOf(
+                ExerciseSessionRecord.EXERCISE_TYPE_BIKING to setOf(EXERCISE_SEGMENT_TYPE_BIKING),
+                ExerciseSessionRecord.EXERCISE_TYPE_BIKING_STATIONARY to
+                    setOf(EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY),
+                ExerciseSessionRecord.EXERCISE_TYPE_CALISTHENICS to EXERCISE_SEGMENTS,
+                ExerciseSessionRecord.EXERCISE_TYPE_ELLIPTICAL to
+                    setOf(EXERCISE_SEGMENT_TYPE_ELLIPTICAL),
+                ExerciseSessionRecord.EXERCISE_TYPE_EXERCISE_CLASS to
+                    setOf(
+                        EXERCISE_SEGMENT_TYPE_YOGA,
+                        EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY,
+                        EXERCISE_SEGMENT_TYPE_PILATES,
+                        EXERCISE_SEGMENT_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
+                    ),
+                ExerciseSessionRecord.EXERCISE_TYPE_GYMNASTICS to EXERCISE_SEGMENTS,
+                ExerciseSessionRecord.EXERCISE_TYPE_HIKING to
+                    setOf(EXERCISE_SEGMENT_TYPE_WALKING, EXERCISE_SEGMENT_TYPE_WHEELCHAIR),
+                ExerciseSessionRecord.EXERCISE_TYPE_PILATES to setOf(EXERCISE_SEGMENT_TYPE_PILATES),
+                ExerciseSessionRecord.EXERCISE_TYPE_ROWING_MACHINE to
+                    setOf(EXERCISE_SEGMENT_TYPE_ROWING_MACHINE),
+                ExerciseSessionRecord.EXERCISE_TYPE_RUNNING to
+                    setOf(EXERCISE_SEGMENT_TYPE_RUNNING, EXERCISE_SEGMENT_TYPE_WALKING),
+                ExerciseSessionRecord.EXERCISE_TYPE_RUNNING_TREADMILL to
+                    setOf(EXERCISE_SEGMENT_TYPE_RUNNING_TREADMILL),
+                ExerciseSessionRecord.EXERCISE_TYPE_STRENGTH_TRAINING to EXERCISE_SEGMENTS,
+                ExerciseSessionRecord.EXERCISE_TYPE_STAIR_CLIMBING to
+                    setOf(EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING),
+                ExerciseSessionRecord.EXERCISE_TYPE_STAIR_CLIMBING_MACHINE to
+                    setOf(EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING_MACHINE),
+                ExerciseSessionRecord.EXERCISE_TYPE_SWIMMING_OPEN_WATER to
+                    buildSet {
+                        add(EXERCISE_SEGMENT_TYPE_SWIMMING_OPEN_WATER)
+                        addAll(SWIMMING_SEGMENTS)
+                    },
+                ExerciseSessionRecord.EXERCISE_TYPE_SWIMMING_POOL to
+                    buildSet {
+                        add(EXERCISE_SEGMENT_TYPE_SWIMMING_POOL)
+                        addAll(SWIMMING_SEGMENTS)
+                    },
+                ExerciseSessionRecord.EXERCISE_TYPE_WALKING to setOf(EXERCISE_SEGMENT_TYPE_WALKING),
+                ExerciseSessionRecord.EXERCISE_TYPE_WHEELCHAIR to
+                    setOf(EXERCISE_SEGMENT_TYPE_WHEELCHAIR),
+                ExerciseSessionRecord.EXERCISE_TYPE_WEIGHTLIFTING to EXERCISE_SEGMENTS,
+                ExerciseSessionRecord.EXERCISE_TYPE_YOGA to setOf(EXERCISE_SEGMENT_TYPE_YOGA),
+            )
+
+        /**
+         * List of supported segment types on Health Platform.
+         *
+         * @suppress
+         */
+        @Retention(AnnotationRetention.SOURCE)
+        @RestrictTo(RestrictTo.Scope.LIBRARY)
+        @IntDef(
+            value =
+                [
+                    EXERCISE_SEGMENT_TYPE_UNKNOWN,
+                    EXERCISE_SEGMENT_TYPE_BARBELL_SHOULDER_PRESS,
+                    EXERCISE_SEGMENT_TYPE_BENCH_SIT_UP,
+                    EXERCISE_SEGMENT_TYPE_BIKING,
+                    EXERCISE_SEGMENT_TYPE_BIKING_STATIONARY,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_LEFT_ARM,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_CURL_RIGHT_ARM,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_FRONT_RAISE,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_LATERAL_RAISE,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM,
+                    EXERCISE_SEGMENT_TYPE_FORWARD_TWIST,
+                    EXERCISE_SEGMENT_TYPE_ELLIPTICAL,
+                    EXERCISE_SEGMENT_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING,
+                    EXERCISE_SEGMENT_TYPE_PILATES,
+                    EXERCISE_SEGMENT_TYPE_ROWING_MACHINE,
+                    EXERCISE_SEGMENT_TYPE_RUNNING,
+                    EXERCISE_SEGMENT_TYPE_RUNNING_TREADMILL,
+                    EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING,
+                    EXERCISE_SEGMENT_TYPE_STAIR_CLIMBING_MACHINE,
+                    EXERCISE_SEGMENT_TYPE_STRETCHING,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_OPEN_WATER,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_POOL,
+                    EXERCISE_SEGMENT_TYPE_UPPER_TWIST,
+                    EXERCISE_SEGMENT_TYPE_WALKING,
+                    EXERCISE_SEGMENT_TYPE_WEIGHTLIFTING,
+                    EXERCISE_SEGMENT_TYPE_WHEELCHAIR,
+                    EXERCISE_SEGMENT_TYPE_OTHER_WORKOUT,
+                    EXERCISE_SEGMENT_TYPE_YOGA,
+                    EXERCISE_SEGMENT_TYPE_ARM_CURL,
+                    EXERCISE_SEGMENT_TYPE_BACK_EXTENSION,
+                    EXERCISE_SEGMENT_TYPE_BALL_SLAM,
+                    EXERCISE_SEGMENT_TYPE_BENCH_PRESS,
+                    EXERCISE_SEGMENT_TYPE_BURPEE,
+                    EXERCISE_SEGMENT_TYPE_CRUNCH,
+                    EXERCISE_SEGMENT_TYPE_DEADLIFT,
+                    EXERCISE_SEGMENT_TYPE_DOUBLE_ARM_TRICEPS_EXTENSION,
+                    EXERCISE_SEGMENT_TYPE_DUMBBELL_ROW,
+                    EXERCISE_SEGMENT_TYPE_FRONT_RAISE,
+                    EXERCISE_SEGMENT_TYPE_HIP_THRUST,
+                    EXERCISE_SEGMENT_TYPE_HULA_HOOP,
+                    EXERCISE_SEGMENT_TYPE_JUMPING_JACK,
+                    EXERCISE_SEGMENT_TYPE_JUMP_ROPE,
+                    EXERCISE_SEGMENT_TYPE_KETTLEBELL_SWING,
+                    EXERCISE_SEGMENT_TYPE_LATERAL_RAISE,
+                    EXERCISE_SEGMENT_TYPE_LAT_PULL_DOWN,
+                    EXERCISE_SEGMENT_TYPE_LEG_CURL,
+                    EXERCISE_SEGMENT_TYPE_LEG_EXTENSION,
+                    EXERCISE_SEGMENT_TYPE_LEG_PRESS,
+                    EXERCISE_SEGMENT_TYPE_LEG_RAISE,
+                    EXERCISE_SEGMENT_TYPE_LUNGE,
+                    EXERCISE_SEGMENT_TYPE_MOUNTAIN_CLIMBER,
+                    EXERCISE_SEGMENT_TYPE_PLANK,
+                    EXERCISE_SEGMENT_TYPE_PULL_UP,
+                    EXERCISE_SEGMENT_TYPE_PUNCH,
+                    EXERCISE_SEGMENT_TYPE_SHOULDER_PRESS,
+                    EXERCISE_SEGMENT_TYPE_SINGLE_ARM_TRICEPS_EXTENSION,
+                    EXERCISE_SEGMENT_TYPE_SIT_UP,
+                    EXERCISE_SEGMENT_TYPE_SQUAT,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_FREESTYLE,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_BACKSTROKE,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_BREASTSTROKE,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_BUTTERFLY,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_MIXED,
+                    EXERCISE_SEGMENT_TYPE_SWIMMING_OTHER,
+                    EXERCISE_SEGMENT_TYPE_REST,
+                    EXERCISE_SEGMENT_TYPE_PAUSE,
+                ]
         )
         annotation class ExerciseSegmentTypes
     }
-}
\ No newline at end of file
+}
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSessionRecord.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSessionRecord.kt
index 4c9cb06..1709165 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSessionRecord.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/ExerciseSessionRecord.kt
@@ -34,7 +34,9 @@
  *
  * @sample androidx.health.connect.client.samples.ReadExerciseSessions
  */
-public class ExerciseSessionRecord @RestrictTo(RestrictTo.Scope.LIBRARY) constructor(
+public class ExerciseSessionRecord
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+constructor(
     override val startTime: Instant,
     override val startZoneOffset: ZoneOffset?,
     override val endTime: Instant,
@@ -46,22 +48,23 @@
     /** Additional notes for the session. Optional field. */
     public val notes: String? = null,
     override val metadata: Metadata = Metadata.EMPTY,
-    @get:RestrictTo(RestrictTo.Scope.LIBRARY)
-    /** [ExerciseSegment]s of the session. Optional field.
-     * Time in segments should be within the parent session, and should not overlap with each other.
+    /**
+     * [ExerciseSegment]s of the session. Optional field. Time in segments should be within the
+     * parent session, and should not overlap with each other.
      */
     public val segments: List<ExerciseSegment> = emptyList(),
-    @get:RestrictTo(RestrictTo.Scope.LIBRARY)
-    /** [ExerciseLap]s of the session. Optional field.
-     * Time in laps should be within the parent session, and should not overlap with each other.
+    /**
+     * [ExerciseLap]s of the session. Optional field. Time in laps should be within the parent
+     * session, and should not overlap with each other.
      */
     public val laps: List<ExerciseLap> = emptyList(),
     @get:RestrictTo(RestrictTo.Scope.LIBRARY)
     /** [ExerciseRoute]s of the session. Optional field. */
     public val route: ExerciseRoute? = null,
     @get:RestrictTo(RestrictTo.Scope.LIBRARY)
-    /** Indicates whether or not the underlying [ExerciseSessionRecord] has a route, even it's not
-     *  present because lack of permission.
+    /**
+     * Indicates whether or not the underlying [ExerciseSessionRecord] has a route, even it's not
+     * present because lack of permission.
      */
     public val hasRoute: Boolean = false,
 ) : IntervalRecord {
@@ -78,6 +81,8 @@
         /** Additional notes for the session. Optional field. */
         notes: String? = null,
         metadata: Metadata = Metadata.EMPTY,
+        segments: List<ExerciseSegment> = emptyList(),
+        laps: List<ExerciseLap> = emptyList(),
     ) : this(
         startTime,
         startZoneOffset,
@@ -87,10 +92,9 @@
         title,
         notes,
         metadata,
-        emptyList(),
-        emptyList(),
-        null,
-        false
+        segments,
+        laps,
+        null
     )
 
     @RestrictTo(RestrictTo.Scope.LIBRARY)
@@ -163,12 +167,9 @@
         }
         require(route == null || hasRoute) { "hasRoute must be true if the route is not null" }
         if (route != null) {
-            require(
-                route.isWithin(
-                    startTime,
-                    endTime
-                )
-            ) { "route can not be out of parent time range." }
+            require(route.isWithin(startTime, endTime)) {
+                "route can not be out of parent time range."
+            }
         }
     }
 
@@ -396,69 +397,69 @@
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef(
         value =
-        [
-            EXERCISE_TYPE_BADMINTON,
-            EXERCISE_TYPE_BASEBALL,
-            EXERCISE_TYPE_BASKETBALL,
-            EXERCISE_TYPE_BIKING,
-            EXERCISE_TYPE_BIKING_STATIONARY,
-            EXERCISE_TYPE_BOOT_CAMP,
-            EXERCISE_TYPE_BOXING,
-            EXERCISE_TYPE_CALISTHENICS,
-            EXERCISE_TYPE_CRICKET,
-            EXERCISE_TYPE_DANCING,
-            EXERCISE_TYPE_ELLIPTICAL,
-            EXERCISE_TYPE_EXERCISE_CLASS,
-            EXERCISE_TYPE_FENCING,
-            EXERCISE_TYPE_FOOTBALL_AMERICAN,
-            EXERCISE_TYPE_FOOTBALL_AUSTRALIAN,
-            EXERCISE_TYPE_FRISBEE_DISC,
-            EXERCISE_TYPE_GOLF,
-            EXERCISE_TYPE_GUIDED_BREATHING,
-            EXERCISE_TYPE_GYMNASTICS,
-            EXERCISE_TYPE_HANDBALL,
-            EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING,
-            EXERCISE_TYPE_HIKING,
-            EXERCISE_TYPE_ICE_HOCKEY,
-            EXERCISE_TYPE_ICE_SKATING,
-            EXERCISE_TYPE_MARTIAL_ARTS,
-            EXERCISE_TYPE_PADDLING,
-            EXERCISE_TYPE_PARAGLIDING,
-            EXERCISE_TYPE_PILATES,
-            EXERCISE_TYPE_RACQUETBALL,
-            EXERCISE_TYPE_ROCK_CLIMBING,
-            EXERCISE_TYPE_ROLLER_HOCKEY,
-            EXERCISE_TYPE_ROWING,
-            EXERCISE_TYPE_ROWING_MACHINE,
-            EXERCISE_TYPE_RUGBY,
-            EXERCISE_TYPE_RUNNING,
-            EXERCISE_TYPE_RUNNING_TREADMILL,
-            EXERCISE_TYPE_SAILING,
-            EXERCISE_TYPE_SCUBA_DIVING,
-            EXERCISE_TYPE_SKATING,
-            EXERCISE_TYPE_SKIING,
-            EXERCISE_TYPE_SNOWBOARDING,
-            EXERCISE_TYPE_SNOWSHOEING,
-            EXERCISE_TYPE_SOCCER,
-            EXERCISE_TYPE_SOFTBALL,
-            EXERCISE_TYPE_SQUASH,
-            EXERCISE_TYPE_STAIR_CLIMBING,
-            EXERCISE_TYPE_STAIR_CLIMBING_MACHINE,
-            EXERCISE_TYPE_STRENGTH_TRAINING,
-            EXERCISE_TYPE_STRETCHING,
-            EXERCISE_TYPE_SURFING,
-            EXERCISE_TYPE_SWIMMING_OPEN_WATER,
-            EXERCISE_TYPE_SWIMMING_POOL,
-            EXERCISE_TYPE_TABLE_TENNIS,
-            EXERCISE_TYPE_TENNIS,
-            EXERCISE_TYPE_VOLLEYBALL,
-            EXERCISE_TYPE_WALKING,
-            EXERCISE_TYPE_WATER_POLO,
-            EXERCISE_TYPE_WEIGHTLIFTING,
-            EXERCISE_TYPE_WHEELCHAIR,
-            EXERCISE_TYPE_OTHER_WORKOUT,
-            EXERCISE_TYPE_YOGA,
-        ]
+            [
+                EXERCISE_TYPE_BADMINTON,
+                EXERCISE_TYPE_BASEBALL,
+                EXERCISE_TYPE_BASKETBALL,
+                EXERCISE_TYPE_BIKING,
+                EXERCISE_TYPE_BIKING_STATIONARY,
+                EXERCISE_TYPE_BOOT_CAMP,
+                EXERCISE_TYPE_BOXING,
+                EXERCISE_TYPE_CALISTHENICS,
+                EXERCISE_TYPE_CRICKET,
+                EXERCISE_TYPE_DANCING,
+                EXERCISE_TYPE_ELLIPTICAL,
+                EXERCISE_TYPE_EXERCISE_CLASS,
+                EXERCISE_TYPE_FENCING,
+                EXERCISE_TYPE_FOOTBALL_AMERICAN,
+                EXERCISE_TYPE_FOOTBALL_AUSTRALIAN,
+                EXERCISE_TYPE_FRISBEE_DISC,
+                EXERCISE_TYPE_GOLF,
+                EXERCISE_TYPE_GUIDED_BREATHING,
+                EXERCISE_TYPE_GYMNASTICS,
+                EXERCISE_TYPE_HANDBALL,
+                EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING,
+                EXERCISE_TYPE_HIKING,
+                EXERCISE_TYPE_ICE_HOCKEY,
+                EXERCISE_TYPE_ICE_SKATING,
+                EXERCISE_TYPE_MARTIAL_ARTS,
+                EXERCISE_TYPE_PADDLING,
+                EXERCISE_TYPE_PARAGLIDING,
+                EXERCISE_TYPE_PILATES,
+                EXERCISE_TYPE_RACQUETBALL,
+                EXERCISE_TYPE_ROCK_CLIMBING,
+                EXERCISE_TYPE_ROLLER_HOCKEY,
+                EXERCISE_TYPE_ROWING,
+                EXERCISE_TYPE_ROWING_MACHINE,
+                EXERCISE_TYPE_RUGBY,
+                EXERCISE_TYPE_RUNNING,
+                EXERCISE_TYPE_RUNNING_TREADMILL,
+                EXERCISE_TYPE_SAILING,
+                EXERCISE_TYPE_SCUBA_DIVING,
+                EXERCISE_TYPE_SKATING,
+                EXERCISE_TYPE_SKIING,
+                EXERCISE_TYPE_SNOWBOARDING,
+                EXERCISE_TYPE_SNOWSHOEING,
+                EXERCISE_TYPE_SOCCER,
+                EXERCISE_TYPE_SOFTBALL,
+                EXERCISE_TYPE_SQUASH,
+                EXERCISE_TYPE_STAIR_CLIMBING,
+                EXERCISE_TYPE_STAIR_CLIMBING_MACHINE,
+                EXERCISE_TYPE_STRENGTH_TRAINING,
+                EXERCISE_TYPE_STRETCHING,
+                EXERCISE_TYPE_SURFING,
+                EXERCISE_TYPE_SWIMMING_OPEN_WATER,
+                EXERCISE_TYPE_SWIMMING_POOL,
+                EXERCISE_TYPE_TABLE_TENNIS,
+                EXERCISE_TYPE_TENNIS,
+                EXERCISE_TYPE_VOLLEYBALL,
+                EXERCISE_TYPE_WALKING,
+                EXERCISE_TYPE_WATER_POLO,
+                EXERCISE_TYPE_WEIGHTLIFTING,
+                EXERCISE_TYPE_WHEELCHAIR,
+                EXERCISE_TYPE_OTHER_WORKOUT,
+                EXERCISE_TYPE_YOGA,
+            ]
     )
     annotation class ExerciseTypes
 }
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepSessionRecord.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepSessionRecord.kt
index 2337212..4aafec9 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepSessionRecord.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepSessionRecord.kt
@@ -32,14 +32,15 @@
  * continuous but shouldn't overlap.
  *
  * Example code demonstrate how to read sleep session with stages:
+ *
  * @sample androidx.health.connect.client.samples.ReadSleepSessions
  *
  * When deleting a session, associated sleep stage records need to be deleted separately:
- * @sample androidx.health.connect.client.samples.DeleteSleepSession
  *
+ * @sample androidx.health.connect.client.samples.DeleteSleepSession
  * @see SleepStageRecord
  */
-public class SleepSessionRecord @RestrictTo(RestrictTo.Scope.LIBRARY) constructor(
+public class SleepSessionRecord(
     override val startTime: Instant,
     override val startZoneOffset: ZoneOffset?,
     override val endTime: Instant,
@@ -48,30 +49,9 @@
     public val title: String? = null,
     /** Additional notes for the session. Optional field. */
     public val notes: String? = null,
-    @get:RestrictTo(RestrictTo.Scope.LIBRARY)
     public val stages: List<Stage> = emptyList(),
     override val metadata: Metadata = Metadata.EMPTY,
 ) : IntervalRecord {
-    public constructor(
-        startTime: Instant,
-        startZoneOffset: ZoneOffset?,
-        endTime: Instant,
-        endZoneOffset: ZoneOffset?,
-        /** Title of the session. Optional field. */
-        title: String? = null,
-        /** Additional notes for the session. Optional field. */
-        notes: String? = null,
-        metadata: Metadata = Metadata.EMPTY,
-    ) : this(
-        startTime,
-        startZoneOffset,
-        endTime,
-        endZoneOffset,
-        title,
-        notes,
-        emptyList(),
-        metadata
-    )
 
     init {
         require(startTime.isBefore(endTime)) { "startTime must be before endTime." }
@@ -124,38 +104,30 @@
             AggregateMetric.durationMetric("SleepSession")
 
         /** Use this type if the stage of sleep is unknown. */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_UNKNOWN = 0
 
         /**
          * The user is awake and either known to be in bed, or it is unknown whether they are in bed
          * or not.
          */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_AWAKE = 1
 
         /** The user is asleep but the particular stage of sleep (light, deep or REM) is unknown. */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_SLEEPING = 2
 
         /** The user is out of bed and assumed to be awake. */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_OUT_OF_BED = 3
 
         /** The user is in a light sleep stage. */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_LIGHT = 4
 
         /** The user is in a deep sleep stage. */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_DEEP = 5
 
         /** The user is in a REM sleep stage. */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_REM = 6
 
         /** The user is awake and in bed. */
-        @RestrictTo(RestrictTo.Scope.LIBRARY)
         const val STAGE_TYPE_AWAKE_IN_BED = 7
 
         @RestrictTo(RestrictTo.Scope.LIBRARY)
@@ -180,21 +152,22 @@
 
     /**
      * Type of sleep stage.
+     *
      * @suppress
      */
     @Retention(AnnotationRetention.SOURCE)
     @IntDef(
         value =
-        [
-            STAGE_TYPE_UNKNOWN,
-            STAGE_TYPE_AWAKE,
-            STAGE_TYPE_SLEEPING,
-            STAGE_TYPE_OUT_OF_BED,
-            STAGE_TYPE_LIGHT,
-            STAGE_TYPE_DEEP,
-            STAGE_TYPE_REM,
-            STAGE_TYPE_AWAKE_IN_BED,
-        ]
+            [
+                STAGE_TYPE_UNKNOWN,
+                STAGE_TYPE_AWAKE,
+                STAGE_TYPE_SLEEPING,
+                STAGE_TYPE_OUT_OF_BED,
+                STAGE_TYPE_LIGHT,
+                STAGE_TYPE_DEEP,
+                STAGE_TYPE_REM,
+                STAGE_TYPE_AWAKE_IN_BED,
+            ]
     )
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     annotation class StageTypes
@@ -204,7 +177,6 @@
      *
      * @see SleepSessionRecord
      */
-    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public class Stage(
         val startTime: Instant,
         val endTime: Instant,
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepStageRecord.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepStageRecord.kt
index 1a566d9..f1af1da 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepStageRecord.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/SleepStageRecord.kt
@@ -26,6 +26,7 @@
  *
  * @see SleepSessionRecord
  */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
 public class SleepStageRecord(
     override val startTime: Instant,
     override val startZoneOffset: ZoneOffset?,
@@ -94,6 +95,7 @@
 
     /**
      * Type of sleep stage.
+     *
      * @suppress
      */
     @Retention(AnnotationRetention.SOURCE)
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/request/AggregateRequest.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/request/AggregateRequest.kt
index a8984a6..e6d96bb 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/request/AggregateRequest.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/request/AggregateRequest.kt
@@ -15,10 +15,10 @@
  */
 package androidx.health.connect.client.request
 
+import androidx.health.connect.client.HealthConnectClient
 import androidx.health.connect.client.aggregate.AggregateMetric
 import androidx.health.connect.client.records.metadata.DataOrigin
 import androidx.health.connect.client.time.TimeRangeFilter
-import androidx.health.connect.client.HealthConnectClient
 
 /**
  * Request object to read aggregations for given [AggregateMetric]s in Android Health Platform.
diff --git a/health/connect/connect-client/src/main/java/androidx/health/platform/client/service/HealthDataServiceConstants.java b/health/connect/connect-client/src/main/java/androidx/health/platform/client/service/HealthDataServiceConstants.java
index b1922e6..0f531f9 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/platform/client/service/HealthDataServiceConstants.java
+++ b/health/connect/connect-client/src/main/java/androidx/health/platform/client/service/HealthDataServiceConstants.java
@@ -31,7 +31,10 @@
     public static final String KEY_GRANTED_PERMISSIONS_STRING = "granted_permissions_string";
     public static final String KEY_REQUESTED_PERMISSIONS_JETPACK = "requested_permissions_jetpack";
     public static final String KEY_REQUESTED_PERMISSIONS_STRING = "requested_permissions_string";
-
+    public static final String ACTION_REQUEST_ROUTE =
+            "androidx.health.action.REQUEST_EXERCISE_ROUTE";
+    public static final String EXTRA_SESSION_ID = "androidx.health.connect.extra.SESSION_ID";
+    public static final String EXTRA_EXERCISE_ROUTE = "android.health.connect.extra.EXERCISE_ROUTE";
 
     private HealthDataServiceConstants() {}
 }
diff --git a/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/RequestExerciseRouteInternalTest.kt b/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/RequestExerciseRouteInternalTest.kt
new file mode 100644
index 0000000..b650485
--- /dev/null
+++ b/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/RequestExerciseRouteInternalTest.kt
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.health.connect.client.permission
+
+import android.content.Context
+import android.content.Intent
+import androidx.health.connect.client.records.ExerciseRoute
+import androidx.health.connect.client.units.Length
+import androidx.health.platform.client.proto.DataProto
+import androidx.health.platform.client.service.HealthDataServiceConstants
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.common.truth.Truth.assertThat
+import java.time.Instant
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class RequestExerciseRouteInternalTest {
+
+    private lateinit var context: Context
+
+    @Before
+    fun setUp() {
+        context = ApplicationProvider.getApplicationContext()
+    }
+
+    @Test
+    fun createIntentTest() {
+        val requestRouteContract = RequestExerciseRouteInternal()
+        val intent = requestRouteContract.createIntent(context, "someUid")
+        assertThat(intent.action).isEqualTo("androidx.health.action.REQUEST_EXERCISE_ROUTE")
+        assertThat(intent.getStringExtra(HealthDataServiceConstants.EXTRA_SESSION_ID))
+            .isEqualTo("someUid")
+    }
+
+    @Test
+    fun parseIntent_null() {
+        val requestRouteContract = RequestExerciseRouteInternal()
+        val result = requestRouteContract.parseResult(0, null)
+        assertThat(result).isNull()
+    }
+
+    @Test
+    fun parseIntent_emptyIntent() {
+        val requestRouteContract = RequestExerciseRouteInternal()
+        val result = requestRouteContract.parseResult(0, Intent())
+        assertThat(result).isNull()
+    }
+
+    @Test
+    fun parseIntent_emptyRoute() {
+        val requestRouteContract = RequestExerciseRouteInternal()
+        val intent = Intent()
+        intent.putExtra(
+            HealthDataServiceConstants.EXTRA_EXERCISE_ROUTE,
+            androidx.health.platform.client.exerciseroute.ExerciseRoute(
+                DataProto.DataPoint.SubTypeDataList.newBuilder().build()
+            )
+        )
+        val result = requestRouteContract.parseResult(0, intent)
+        assertThat(result).isEqualTo(ExerciseRoute(listOf()))
+    }
+
+    @Test
+    fun parseIntent() {
+        val requestRouteContract = RequestExerciseRouteInternal()
+        val intent = Intent()
+        val protoLocation1 =
+            DataProto.SubTypeDataValue.newBuilder()
+                .setStartTimeMillis(1234L)
+                .setEndTimeMillis(2345L)
+                .putValues("latitude", DataProto.Value.newBuilder().setDoubleVal(23.4).build())
+                .putValues("longitude", DataProto.Value.newBuilder().setDoubleVal(-23.4).build())
+                .putValues("altitude", DataProto.Value.newBuilder().setDoubleVal(12.3).build())
+                .putValues(
+                    "horizontal_accuracy",
+                    DataProto.Value.newBuilder().setDoubleVal(0.9).build()
+                )
+                .putValues(
+                    "vertical_accuracy",
+                    DataProto.Value.newBuilder().setDoubleVal(0.3).build()
+                )
+                .build()
+        val protoLocation2 =
+            DataProto.SubTypeDataValue.newBuilder()
+                .setStartTimeMillis(3456L)
+                .setEndTimeMillis(4567L)
+                .putValues("latitude", DataProto.Value.newBuilder().setDoubleVal(23.45).build())
+                .putValues("longitude", DataProto.Value.newBuilder().setDoubleVal(-23.45).build())
+                .build()
+        intent.putExtra(
+            HealthDataServiceConstants.EXTRA_EXERCISE_ROUTE,
+            androidx.health.platform.client.exerciseroute.ExerciseRoute(
+                DataProto.DataPoint.SubTypeDataList.newBuilder()
+                    .addAllValues(listOf(protoLocation1, protoLocation2))
+                    .build()
+            )
+        )
+        val result = requestRouteContract.parseResult(0, intent)
+        assertThat(result)
+            .isEqualTo(
+                ExerciseRoute(
+                    listOf(
+                        ExerciseRoute.Location(
+                            time = Instant.ofEpochMilli(1234L),
+                            latitude = 23.4,
+                            longitude = -23.4,
+                            horizontalAccuracy = Length.meters(0.9),
+                            verticalAccuracy = Length.meters(0.3),
+                            altitude = Length.meters(12.3)
+                        ),
+                        ExerciseRoute.Location(
+                            time = Instant.ofEpochMilli(3456L),
+                            latitude = 23.45,
+                            longitude = -23.45,
+                        )
+                    )
+                )
+            )
+    }
+}
diff --git a/health/health-services-client/build.gradle b/health/health-services-client/build.gradle
index 65a44a0..a0df417 100644
--- a/health/health-services-client/build.gradle
+++ b/health/health-services-client/build.gradle
@@ -79,7 +79,7 @@
 }
 
 androidx {
-    name = "AndroidX Health Services Client Library"
+    name = "Health Services Client"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.HEALTH_SERVICES_CLIENT
     inceptionYear = "2021"
diff --git a/health/health-services-client/src/main/java/androidx/health/services/client/ExerciseClient.kt b/health/health-services-client/src/main/java/androidx/health/services/client/ExerciseClient.kt
index e1b58d7..080b83a 100644
--- a/health/health-services-client/src/main/java/androidx/health/services/client/ExerciseClient.kt
+++ b/health/health-services-client/src/main/java/androidx/health/services/client/ExerciseClient.kt
@@ -21,10 +21,10 @@
 import androidx.health.services.client.data.DataType
 import androidx.health.services.client.data.ExerciseCapabilities
 import androidx.health.services.client.data.ExerciseConfig
+import androidx.health.services.client.data.ExerciseEndReason
 import androidx.health.services.client.data.ExerciseGoal
 import androidx.health.services.client.data.ExerciseInfo
 import androidx.health.services.client.data.ExerciseState
-import androidx.health.services.client.data.ExerciseEndReason
 import androidx.health.services.client.data.ExerciseType
 import androidx.health.services.client.data.ExerciseTypeConfig
 import androidx.health.services.client.data.ExerciseUpdate
diff --git a/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseEndReason.kt b/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseEndReason.kt
index b0ac3ad..6072b1d9 100644
--- a/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseEndReason.kt
+++ b/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseEndReason.kt
@@ -18,8 +18,8 @@
 
 import androidx.annotation.IntDef
 import androidx.annotation.RestrictTo
-import androidx.health.services.client.proto.DataProto
 import androidx.health.services.client.ExerciseClient
+import androidx.health.services.client.proto.DataProto
 import kotlin.annotation.AnnotationRetention.SOURCE
 
 /**
diff --git a/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseUpdate.kt b/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseUpdate.kt
index 456443a..bf9b12f 100644
--- a/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseUpdate.kt
+++ b/health/health-services-client/src/main/java/androidx/health/services/client/data/ExerciseUpdate.kt
@@ -16,13 +16,13 @@
 
 package androidx.health.services.client.data
 
-import androidx.health.services.client.proto.DataProto.ExerciseUpdate.LatestMetricsEntry as LatestMetricsEntryProto
 import androidx.annotation.RestrictTo
 import androidx.annotation.RestrictTo.Scope
 import androidx.health.services.client.data.ExerciseEndReason.Companion.toProto
 import androidx.health.services.client.data.ExerciseUpdate.ActiveDurationCheckpoint
 import androidx.health.services.client.proto.DataProto
 import androidx.health.services.client.proto.DataProto.AchievedExerciseGoal
+import androidx.health.services.client.proto.DataProto.ExerciseUpdate.LatestMetricsEntry as LatestMetricsEntryProto
 import java.time.Duration
 import java.time.Instant
 
diff --git a/health/health-services-client/src/main/java/androidx/health/services/client/data/LocationAccuracy.kt b/health/health-services-client/src/main/java/androidx/health/services/client/data/LocationAccuracy.kt
index 25aa2a8..4d5edbf 100644
--- a/health/health-services-client/src/main/java/androidx/health/services/client/data/LocationAccuracy.kt
+++ b/health/health-services-client/src/main/java/androidx/health/services/client/data/LocationAccuracy.kt
@@ -16,10 +16,10 @@
 
 package androidx.health.services.client.data
 
-import androidx.health.services.client.proto.DataProto
-import androidx.health.services.client.proto.DataProto.DataPointAccuracy.LocationAccuracy as LocationAccuracyProto
 import android.util.Log
 import androidx.annotation.FloatRange
+import androidx.health.services.client.proto.DataProto
+import androidx.health.services.client.proto.DataProto.DataPointAccuracy.LocationAccuracy as LocationAccuracyProto
 
 /** Accuracy for a [DataType.LOCATION] data point. */
 @Suppress("ParcelCreator")
diff --git a/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveGoal.kt b/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveGoal.kt
index bfb1d9a..71c64a0 100644
--- a/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveGoal.kt
+++ b/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveGoal.kt
@@ -16,10 +16,10 @@
 
 package androidx.health.services.client.data
 
-import androidx.health.services.client.proto.DataProto.PassiveGoal as PassiveGoalProto
 import androidx.annotation.IntDef
 import androidx.annotation.RestrictTo
 import androidx.health.services.client.data.PassiveGoal.TriggerFrequency.Companion.toProto
+import androidx.health.services.client.proto.DataProto.PassiveGoal as PassiveGoalProto
 
 /**
  * Defines a passive goal that will be triggered when the specified condition is met which will
diff --git a/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveMonitoringUpdate.kt b/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveMonitoringUpdate.kt
index 61b74cb..1f262f7 100644
--- a/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveMonitoringUpdate.kt
+++ b/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveMonitoringUpdate.kt
@@ -16,8 +16,8 @@
 
 package androidx.health.services.client.data
 
-import androidx.health.services.client.proto.DataProto.PassiveMonitoringUpdate as PassiveMonitoringUpdateProto
 import androidx.health.services.client.proto.DataProto
+import androidx.health.services.client.proto.DataProto.PassiveMonitoringUpdate as PassiveMonitoringUpdateProto
 
 /**
  * Represents an update from Passive tracking.
diff --git a/health/health-services-client/src/test/java/androidx/health/services/client/data/DataTypeTest.kt b/health/health-services-client/src/test/java/androidx/health/services/client/data/DataTypeTest.kt
index 3d9858c..6ab8729 100644
--- a/health/health-services-client/src/test/java/androidx/health/services/client/data/DataTypeTest.kt
+++ b/health/health-services-client/src/test/java/androidx/health/services/client/data/DataTypeTest.kt
@@ -20,14 +20,14 @@
 import androidx.health.services.client.data.DataType.Companion.ABSOLUTE_ELEVATION_STATS
 import androidx.health.services.client.data.DataType.Companion.ACTIVE_EXERCISE_DURATION_TOTAL
 import androidx.health.services.client.data.DataType.Companion.CALORIES
-import androidx.health.services.client.data.DataType.Companion.CALORIES_TOTAL
 import androidx.health.services.client.data.DataType.Companion.CALORIES_DAILY
+import androidx.health.services.client.data.DataType.Companion.CALORIES_TOTAL
 import androidx.health.services.client.data.DataType.Companion.DISTANCE_DAILY
 import androidx.health.services.client.data.DataType.Companion.FLOORS_DAILY
-import androidx.health.services.client.data.DataType.Companion.STEPS_DAILY
 import androidx.health.services.client.data.DataType.Companion.FORMAT_BYTE_ARRAY
 import androidx.health.services.client.data.DataType.Companion.LOCATION
 import androidx.health.services.client.data.DataType.Companion.STEPS
+import androidx.health.services.client.data.DataType.Companion.STEPS_DAILY
 import androidx.health.services.client.data.DataType.Companion.SWIMMING_LAP_COUNT
 import androidx.health.services.client.data.DataType.TimeType.Companion.INTERVAL
 import androidx.health.services.client.data.DataType.TimeType.Companion.UNKNOWN
@@ -36,11 +36,11 @@
 import androidx.health.services.client.proto.DataProto.DataType.TimeType.TIME_TYPE_UNKNOWN
 import com.google.common.truth.Truth.assertThat
 import kotlin.reflect.KVisibility
+import kotlin.reflect.full.declaredMemberProperties
+import kotlin.reflect.jvm.javaField
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.RobolectricTestRunner
-import kotlin.reflect.full.declaredMemberProperties
-import kotlin.reflect.jvm.javaField
 
 @RunWith(RobolectricTestRunner::class)
 internal class DataTypeTest {
diff --git a/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedExerciseClientTest.kt b/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedExerciseClientTest.kt
index 1164cbf..c918351 100644
--- a/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedExerciseClientTest.kt
+++ b/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedExerciseClientTest.kt
@@ -31,8 +31,8 @@
 import androidx.health.services.client.data.ExerciseLapSummary
 import androidx.health.services.client.data.ExerciseType
 import androidx.health.services.client.data.ExerciseUpdate
-import androidx.health.services.client.data.WarmUpConfig
 import androidx.health.services.client.data.GolfExerciseTypeConfig
+import androidx.health.services.client.data.WarmUpConfig
 import androidx.health.services.client.impl.event.ExerciseUpdateListenerEvent
 import androidx.health.services.client.impl.internal.IExerciseInfoCallback
 import androidx.health.services.client.impl.internal.IStatusCallback
diff --git a/heifwriter/heifwriter/build.gradle b/heifwriter/heifwriter/build.gradle
index 7bffa1a..3e8ff02 100644
--- a/heifwriter/heifwriter/build.gradle
+++ b/heifwriter/heifwriter/build.gradle
@@ -23,7 +23,7 @@
 }
 
 androidx {
-    name = "Android Support HeifWriter"
+    name = "HeifWriter"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Support HeifWriter for writing HEIF still images"
diff --git a/hilt/hilt-common/build.gradle b/hilt/hilt-common/build.gradle
index 24537d9..4737307 100644
--- a/hilt/hilt-common/build.gradle
+++ b/hilt/hilt-common/build.gradle
@@ -27,7 +27,7 @@
 }
 
 androidx {
-    name = "AndroidX Hilt Extension Annotations"
+    name = "Hilt Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.HILT
     inceptionYear = "2020"
diff --git a/hilt/hilt-compiler/build.gradle b/hilt/hilt-compiler/build.gradle
index eb22d1c..e6b2f0e 100644
--- a/hilt/hilt-compiler/build.gradle
+++ b/hilt/hilt-compiler/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "AndroidX Hilt Extension Compiler"
+    name = "Hilt Extension Compiler"
     type = LibraryType.ANNOTATION_PROCESSOR
     mavenVersion = LibraryVersions.HILT
     inceptionYear = "2020"
diff --git a/hilt/hilt-compiler/src/main/kotlin/androidx/hilt/AndroidXHiltProcessor.kt b/hilt/hilt-compiler/src/main/kotlin/androidx/hilt/AndroidXHiltProcessor.kt
index 668af93..277140b 100644
--- a/hilt/hilt-compiler/src/main/kotlin/androidx/hilt/AndroidXHiltProcessor.kt
+++ b/hilt/hilt-compiler/src/main/kotlin/androidx/hilt/AndroidXHiltProcessor.kt
@@ -18,14 +18,14 @@
 
 import androidx.hilt.work.WorkerStep
 import com.google.auto.service.AutoService
-import net.ltgt.gradle.incap.IncrementalAnnotationProcessor
-import net.ltgt.gradle.incap.IncrementalAnnotationProcessorType.ISOLATING
 import javax.annotation.processing.AbstractProcessor
 import javax.annotation.processing.Processor
 import javax.annotation.processing.RoundEnvironment
 import javax.lang.model.SourceVersion
 import javax.lang.model.element.Element
 import javax.lang.model.element.TypeElement
+import net.ltgt.gradle.incap.IncrementalAnnotationProcessor
+import net.ltgt.gradle.incap.IncrementalAnnotationProcessorType.ISOLATING
 
 /**
  * Annotation processor for the various AndroidX Hilt extensions.
diff --git a/hilt/hilt-navigation-compose/src/androidTest/java/androidx/hilt/navigation/compose/HiltViewModelComposeTest.kt b/hilt/hilt-navigation-compose/src/androidTest/java/androidx/hilt/navigation/compose/HiltViewModelComposeTest.kt
index 9ca7c4d..ad8f010 100644
--- a/hilt/hilt-navigation-compose/src/androidTest/java/androidx/hilt/navigation/compose/HiltViewModelComposeTest.kt
+++ b/hilt/hilt-navigation-compose/src/androidTest/java/androidx/hilt/navigation/compose/HiltViewModelComposeTest.kt
@@ -48,10 +48,10 @@
 import dagger.hilt.android.qualifiers.ApplicationContext
 import dagger.hilt.android.testing.HiltAndroidRule
 import dagger.hilt.android.testing.HiltAndroidTest
+import javax.inject.Inject
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import javax.inject.Inject
 
 @LargeTest
 @HiltAndroidTest
diff --git a/hilt/hilt-navigation-fragment/build.gradle b/hilt/hilt-navigation-fragment/build.gradle
index 22eea96..814229f 100644
--- a/hilt/hilt-navigation-fragment/build.gradle
+++ b/hilt/hilt-navigation-fragment/build.gradle
@@ -56,7 +56,7 @@
 }
 
 androidx {
-    name = "Android Navigation Fragment Hilt Extension"
+    name = "Navigation Fragment Hilt Extension"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.HILT
     inceptionYear = "2021"
diff --git a/hilt/hilt-navigation-fragment/src/androidTest/java/androidx/hilt/navigation/fragment/HiltNavGraphViewModelLazyTest.kt b/hilt/hilt-navigation-fragment/src/androidTest/java/androidx/hilt/navigation/fragment/HiltNavGraphViewModelLazyTest.kt
index 06352ae..6cc6dc8 100644
--- a/hilt/hilt-navigation-fragment/src/androidTest/java/androidx/hilt/navigation/fragment/HiltNavGraphViewModelLazyTest.kt
+++ b/hilt/hilt-navigation-fragment/src/androidTest/java/androidx/hilt/navigation/fragment/HiltNavGraphViewModelLazyTest.kt
@@ -38,10 +38,10 @@
 import dagger.hilt.android.qualifiers.ApplicationContext
 import dagger.hilt.android.testing.HiltAndroidRule
 import dagger.hilt.android.testing.HiltAndroidTest
+import javax.inject.Inject
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import javax.inject.Inject
 
 /*
  * Copyright 2021 The Android Open Source Project
diff --git a/hilt/hilt-navigation/build.gradle b/hilt/hilt-navigation/build.gradle
index ad4e41a..6539c86 100644
--- a/hilt/hilt-navigation/build.gradle
+++ b/hilt/hilt-navigation/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android Navigation Hilt Extension"
+    name = "Navigation Hilt Extension"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.HILT
     inceptionYear = "2021"
diff --git a/hilt/hilt-work/build.gradle b/hilt/hilt-work/build.gradle
index 46f258b..abe1186 100644
--- a/hilt/hilt-work/build.gradle
+++ b/hilt/hilt-work/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle WorkManager Hilt Extension"
+    name = "WorkManager Hilt Extension"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.HILT
     inceptionYear = "2020"
diff --git a/hilt/integration-tests/workerapp/src/androidTest/java/androidx/hilt/integration/workerapp/SimpleTest.kt b/hilt/integration-tests/workerapp/src/androidTest/java/androidx/hilt/integration/workerapp/SimpleTest.kt
index 477c46b..46cc51c 100644
--- a/hilt/integration-tests/workerapp/src/androidTest/java/androidx/hilt/integration/workerapp/SimpleTest.kt
+++ b/hilt/integration-tests/workerapp/src/androidTest/java/androidx/hilt/integration/workerapp/SimpleTest.kt
@@ -27,12 +27,12 @@
 import com.google.common.truth.Truth.assertThat
 import dagger.hilt.android.testing.HiltAndroidRule
 import dagger.hilt.android.testing.HiltAndroidTest
+import javax.inject.Inject
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import javax.inject.Inject
 
 @SmallTest
 @HiltAndroidTest
diff --git a/input/input-motionprediction/build.gradle b/input/input-motionprediction/build.gradle
index c630796..e5e6f105 100644
--- a/input/input-motionprediction/build.gradle
+++ b/input/input-motionprediction/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "Android Motion Prediction"
+    name = "Motion Prediction"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.INPUT_MOTIONPREDICTION
     inceptionYear = "2022"
diff --git a/inspection/inspection-gradle-plugin/build.gradle b/inspection/inspection-gradle-plugin/build.gradle
index 4589093..bddd9ff 100644
--- a/inspection/inspection-gradle-plugin/build.gradle
+++ b/inspection/inspection-gradle-plugin/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "Android Inspection Gradle Plugin"
+    name = "Inspection Gradle Plugin"
     type = LibraryType.GRADLE_PLUGIN
     publish = Publish.NONE
     inceptionYear = "2019"
diff --git a/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateInspectionPlatformVersionTask.kt b/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateInspectionPlatformVersionTask.kt
index 84a7b25..97c3fc0 100644
--- a/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateInspectionPlatformVersionTask.kt
+++ b/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateInspectionPlatformVersionTask.kt
@@ -17,6 +17,7 @@
 package androidx.inspection.gradle
 
 import com.android.build.api.variant.Variant
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
 import org.gradle.api.Project
@@ -36,7 +37,6 @@
 import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
 
 /**
  * Generates a file into META-INF/ folder that has version of androidx.inspection used
diff --git a/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateProguardDetectionFileTask.kt b/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateProguardDetectionFileTask.kt
index 9801f3c..aa6d722 100644
--- a/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateProguardDetectionFileTask.kt
+++ b/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/GenerateProguardDetectionFileTask.kt
@@ -16,6 +16,7 @@
 
 package androidx.inspection.gradle
 
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
 import org.gradle.api.Project
@@ -25,7 +26,6 @@
 import org.gradle.api.tasks.OutputDirectory
 import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
 /**
  * Task purposely empty, unused class that would be removed by proguard. See javadoc below for more
  * information.
diff --git a/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/InspectionPlugin.kt b/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/InspectionPlugin.kt
index 8a3832e..48c5da5 100644
--- a/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/InspectionPlugin.kt
+++ b/inspection/inspection-gradle-plugin/src/main/kotlin/androidx/inspection/gradle/InspectionPlugin.kt
@@ -22,19 +22,19 @@
 import com.google.protobuf.gradle.GenerateProtoTask
 import com.google.protobuf.gradle.ProtobufExtension
 import com.google.protobuf.gradle.ProtobufPlugin
+import java.io.File
+import org.gradle.api.GradleException
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.artifacts.Configuration
+import org.gradle.api.artifacts.MinimalExternalModuleDependency
+import org.gradle.api.artifacts.VersionCatalogsExtension
 import org.gradle.api.artifacts.type.ArtifactTypeDefinition
 import org.gradle.api.attributes.Attribute
 import org.gradle.api.tasks.StopExecutionException
 import org.gradle.kotlin.dsl.apply
 import org.gradle.kotlin.dsl.create
 import org.gradle.kotlin.dsl.dependencies
-import java.io.File
-import org.gradle.api.GradleException
-import org.gradle.api.artifacts.MinimalExternalModuleDependency
-import org.gradle.api.artifacts.VersionCatalogsExtension
 
 /**
  * A plugin which, when present, ensures that intermediate inspector
diff --git a/inspection/inspection-gradle-plugin/src/test/kotlin/androidx/inspection/gradle/InspectionPluginTest.kt b/inspection/inspection-gradle-plugin/src/test/kotlin/androidx/inspection/gradle/InspectionPluginTest.kt
index 0ed2418..00b6f06 100644
--- a/inspection/inspection-gradle-plugin/src/test/kotlin/androidx/inspection/gradle/InspectionPluginTest.kt
+++ b/inspection/inspection-gradle-plugin/src/test/kotlin/androidx/inspection/gradle/InspectionPluginTest.kt
@@ -17,6 +17,11 @@
 package androidx.inspection.gradle
 
 import androidx.testutils.gradle.ProjectSetupRule
+import java.io.BufferedReader
+import java.io.File
+import java.io.InputStreamReader
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
 import org.gradle.testkit.runner.GradleRunner
 import org.gradle.testkit.runner.TaskOutcome
 import org.junit.Before
@@ -25,11 +30,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.io.BufferedReader
-import java.io.File
-import java.io.InputStreamReader
-import kotlin.test.assertEquals
-import kotlin.test.assertTrue
 
 @RunWith(JUnit4::class)
 class InspectionPluginTest {
diff --git a/inspection/inspection-testing/build.gradle b/inspection/inspection-testing/build.gradle
index 7f51b57..f7b000e 100644
--- a/inspection/inspection-testing/build.gradle
+++ b/inspection/inspection-testing/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "AndroidX Inspection Testing"
+    name = "Inspection Testing"
     type = LibraryType.INTERNAL_TEST_LIBRARY
     publish = Publish.NONE
     inceptionYear = "2019"
diff --git a/inspection/inspection-testing/src/androidTest/java/androidx/inspection/testing/echo/EchoInspector.kt b/inspection/inspection-testing/src/androidTest/java/androidx/inspection/testing/echo/EchoInspector.kt
index 0af1c8d..a1d4bb3 100644
--- a/inspection/inspection-testing/src/androidTest/java/androidx/inspection/testing/echo/EchoInspector.kt
+++ b/inspection/inspection-testing/src/androidTest/java/androidx/inspection/testing/echo/EchoInspector.kt
@@ -20,12 +20,12 @@
 import androidx.inspection.Inspector
 import androidx.inspection.InspectorEnvironment
 import androidx.inspection.InspectorFactory
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
-import java.util.concurrent.Executor
 
 /**
  * An inspector for test purposes, it echoes on commands and sends events once
diff --git a/inspection/inspection-testing/src/main/java/androidx/inspection/testing/InspectorTester.kt b/inspection/inspection-testing/src/main/java/androidx/inspection/testing/InspectorTester.kt
index 0ee526c..ee96110 100644
--- a/inspection/inspection-testing/src/main/java/androidx/inspection/testing/InspectorTester.kt
+++ b/inspection/inspection-testing/src/main/java/androidx/inspection/testing/InspectorTester.kt
@@ -23,6 +23,11 @@
 import androidx.inspection.InspectorEnvironment
 import androidx.inspection.InspectorExecutors
 import androidx.inspection.InspectorFactory
+import java.util.ServiceLoader
+import java.util.concurrent.CancellationException
+import java.util.concurrent.Executor
+import kotlin.coroutines.coroutineContext
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
@@ -35,11 +40,6 @@
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.withContext
-import java.util.ServiceLoader
-import java.util.concurrent.CancellationException
-import java.util.concurrent.Executor
-import kotlin.coroutines.coroutineContext
-import kotlin.coroutines.resume
 
 // TODO: should be non suspend function with CoroutineScope receiver, that would automatically
 // dispose inspector;
diff --git a/inspection/inspection-testing/src/main/java/androidx/inspection/testing/TestInspectorExecutors.kt b/inspection/inspection-testing/src/main/java/androidx/inspection/testing/TestInspectorExecutors.kt
index 96adc63..645cea9 100644
--- a/inspection/inspection-testing/src/main/java/androidx/inspection/testing/TestInspectorExecutors.kt
+++ b/inspection/inspection-testing/src/main/java/androidx/inspection/testing/TestInspectorExecutors.kt
@@ -19,10 +19,10 @@
 import android.os.Handler
 import android.os.HandlerThread
 import androidx.inspection.InspectorExecutors
-import kotlinx.coroutines.Job
 import java.util.concurrent.Executor
 import java.util.concurrent.Executors
 import java.util.concurrent.RejectedExecutionException
+import kotlinx.coroutines.Job
 
 /**
  * Test Inspector Executors.
diff --git a/inspection/inspection/build.gradle b/inspection/inspection/build.gradle
index 5c35b71..a142722 100644
--- a/inspection/inspection/build.gradle
+++ b/inspection/inspection/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Inspection"
+    name = "Inspection"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Experimental AndroidX Inspection Project"
diff --git a/inspection/inspection/src/androidTest/java/androidx/inspection/rules/JvmtiRule.kt b/inspection/inspection/src/androidTest/java/androidx/inspection/rules/JvmtiRule.kt
index cccfd9a..3a93a310 100644
--- a/inspection/inspection/src/androidTest/java/androidx/inspection/rules/JvmtiRule.kt
+++ b/inspection/inspection/src/androidTest/java/androidx/inspection/rules/JvmtiRule.kt
@@ -18,8 +18,8 @@
 
 import android.os.Debug
 import androidx.annotation.RequiresApi
-import org.junit.rules.ExternalResource
 import java.io.IOException
+import org.junit.rules.ExternalResource
 
 @RequiresApi(28)
 class JvmtiRule : ExternalResource() {
diff --git a/interpolator/interpolator/build.gradle b/interpolator/interpolator/build.gradle
index 524e14e..00cd919 100644
--- a/interpolator/interpolator/build.gradle
+++ b/interpolator/interpolator/build.gradle
@@ -10,7 +10,7 @@
 }
 
 androidx {
-    name = "Android Support Library Interpolators"
+    name = "Interpolators"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/javascriptengine/javascriptengine/lint-baseline.xml b/javascriptengine/javascriptengine/lint-baseline.xml
index 4202c21..c449e3c 100644
--- a/javascriptengine/javascriptengine/lint-baseline.xml
+++ b/javascriptengine/javascriptengine/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
+<issues format="6" by="lint 8.1.0-beta01" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta01)" variant="all" version="8.1.0-beta01">
 
     <issue
         id="BanHideAnnotation"
@@ -13,73 +13,10 @@
     <issue
         id="BanThreadSleep"
         message="Uses Thread.sleep()"
-        errorLine1="            Thread.sleep(1000);"
-        errorLine2="                   ~~~~~">
-        <location
-            file="src/androidTest/java/androidx/javascriptengine/WebViewJavaScriptSandboxTest.java"/>
-    </issue>
-
-    <issue
-        id="BanThreadSleep"
-        message="Uses Thread.sleep()"
         errorLine1="                Thread.sleep(1000);"
         errorLine2="                       ~~~~~">
         <location
             file="src/androidTest/java/androidx/javascriptengine/WebViewJavaScriptSandboxTest.java"/>
     </issue>
 
-    <issue
-        id="PrivateConstructorForUtilityClass"
-        message="Utility class is missing private constructor"
-        errorLine1="public class Utils {"
-        errorLine2="             ~~~~~">
-        <location
-            file="src/main/java/androidx/javascriptengine/common/Utils.java"/>
-    </issue>
-
-    <issue
-        id="RequireUnstableAidlAnnotation"
-        message="Unstable AIDL files must be annotated with `@RequiresOptIn` marker"
-        errorLine1="interface IJsSandboxConsoleCallback {"
-        errorLine2="^">
-        <location
-            file="src/main/aidl/org/chromium/android_webview/js_sandbox/common/IJsSandboxConsoleCallback.aidl"/>
-    </issue>
-
-    <issue
-        id="RequireUnstableAidlAnnotation"
-        message="Unstable AIDL files must be annotated with `@RequiresOptIn` marker"
-        errorLine1="interface IJsSandboxIsolate {"
-        errorLine2="^">
-        <location
-            file="src/main/aidl/org/chromium/android_webview/js_sandbox/common/IJsSandboxIsolate.aidl"/>
-    </issue>
-
-    <issue
-        id="RequireUnstableAidlAnnotation"
-        message="Unstable AIDL files must be annotated with `@RequiresOptIn` marker"
-        errorLine1="oneway interface IJsSandboxIsolateCallback {"
-        errorLine2="^">
-        <location
-            file="src/main/aidl/org/chromium/android_webview/js_sandbox/common/IJsSandboxIsolateCallback.aidl"/>
-    </issue>
-
-    <issue
-        id="RequireUnstableAidlAnnotation"
-        message="Unstable AIDL files must be annotated with `@RequiresOptIn` marker"
-        errorLine1="interface IJsSandboxIsolateSyncCallback {"
-        errorLine2="^">
-        <location
-            file="src/main/aidl/org/chromium/android_webview/js_sandbox/common/IJsSandboxIsolateSyncCallback.aidl"/>
-    </issue>
-
-    <issue
-        id="RequireUnstableAidlAnnotation"
-        message="Unstable AIDL files must be annotated with `@RequiresOptIn` marker"
-        errorLine1="interface IJsSandboxService {"
-        errorLine2="^">
-        <location
-            file="src/main/aidl/org/chromium/android_webview/js_sandbox/common/IJsSandboxService.aidl"/>
-    </issue>
-
 </issues>
diff --git a/javascriptengine/javascriptengine/src/androidTest/java/androidx/javascriptengine/WebViewJavaScriptSandboxTest.java b/javascriptengine/javascriptengine/src/androidTest/java/androidx/javascriptengine/WebViewJavaScriptSandboxTest.java
index 1619734..112cbb3 100644
--- a/javascriptengine/javascriptengine/src/androidTest/java/androidx/javascriptengine/WebViewJavaScriptSandboxTest.java
+++ b/javascriptengine/javascriptengine/src/androidTest/java/androidx/javascriptengine/WebViewJavaScriptSandboxTest.java
@@ -28,6 +28,8 @@
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 
+// Used for avoiding Java 11+ API java.lang.String.repeat
+import com.google.common.base.Strings;
 import com.google.common.util.concurrent.ListenableFuture;
 
 import org.junit.Assert;
@@ -53,7 +55,7 @@
     private static final long REASONABLE_HEAP_SIZE = 100 * 1024 * 1024;
 
     @Before
-    public void setUp() throws Throwable {
+    public void setUp() {
         Assume.assumeTrue(JavaScriptSandbox.isSupported());
     }
 
@@ -250,7 +252,7 @@
             Assume.assumeTrue(
                     jsSandbox.isFeatureSupported(JavaScriptSandbox.JS_FEATURE_ISOLATE_TERMINATION));
 
-            Vector<ListenableFuture<String>> resultFutures = new Vector<ListenableFuture<String>>();
+            Vector<ListenableFuture<String>> resultFutures = new Vector<>();
             try (JavaScriptIsolate jsIsolate = jsSandbox.createIsolate()) {
                 for (int i = 0; i < num_of_evaluations; i++) {
                     ListenableFuture<String> resultFuture = jsIsolate.evaluateJavaScriptAsync(code);
@@ -379,7 +381,7 @@
                     jsSandbox.isFeatureSupported(JavaScriptSandbox.JS_FEATURE_PROMISE_RETURN));
 
             ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavaScriptAsync(code1);
-            ListenableFuture<String> resultFuture2 = jsIsolate.evaluateJavaScriptAsync(code2);
+            jsIsolate.evaluateJavaScriptAsync(code2);
             String result = resultFuture1.get(5, TimeUnit.SECONDS);
 
             Assert.assertEquals(expected, result);
@@ -422,7 +424,6 @@
             jsIsolate.provideNamedData("id-3", bytes);
             jsIsolate.provideNamedData("id-4", bytes);
             jsIsolate.provideNamedData("id-5", bytes);
-            Thread.sleep(1000);
             ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavaScriptAsync(code);
             String result = resultFuture1.get(5, TimeUnit.SECONDS);
 
@@ -434,8 +435,6 @@
     @MediumTest
     @Ignore("b/268212217")
     public void testPromiseEvaluationThrow() throws Throwable {
-        final String provideString = "Hello World";
-        final byte[] bytes = provideString.getBytes(StandardCharsets.US_ASCII);
         final String code = ""
                 + "android.consumeNamedDataAsArrayBuffer(\"id-1\").catch((error) => {"
                 + " throw new WebAssembly.LinkError('RandomLinkError');"
@@ -500,8 +499,7 @@
             // thrown instead.
             jsIsolate.close();
             try {
-                ListenableFuture<String> postCloseResultFuture =
-                        jsIsolate.evaluateJavaScriptAsync(code);
+                jsIsolate.evaluateJavaScriptAsync(code);
                 Assert.fail("Should have thrown.");
             } catch (IllegalStateException e) {
                 // Expected
@@ -516,11 +514,11 @@
         final String contains = "already bound";
         ListenableFuture<JavaScriptSandbox> jsSandboxFuture1 =
                 JavaScriptSandbox.createConnectedInstanceAsync(context);
-        try (JavaScriptSandbox jsSandbox1 = jsSandboxFuture1.get(5, TimeUnit.SECONDS)) {
+        try (JavaScriptSandbox ignored1 = jsSandboxFuture1.get(5, TimeUnit.SECONDS)) {
             ListenableFuture<JavaScriptSandbox> jsSandboxFuture2 =
                     JavaScriptSandbox.createConnectedInstanceAsync(context);
             try {
-                try (JavaScriptSandbox jsSandbox2 = jsSandboxFuture2.get(5, TimeUnit.SECONDS)) {
+                try (JavaScriptSandbox ignored2 = jsSandboxFuture2.get(5, TimeUnit.SECONDS)) {
                     Assert.fail("Should have thrown.");
                 }
             } catch (ExecutionException e) {
@@ -826,7 +824,7 @@
 
                 // Check reject
                 try {
-                    String badPromiseResult = badPromiseFuture.get(5, TimeUnit.SECONDS);
+                    badPromiseFuture.get(5, TimeUnit.SECONDS);
                     Assert.fail("Should have thrown");
                 } catch (ExecutionException e) {
                     if (!(e.getCause() instanceof EvaluationFailedException)) {
@@ -842,7 +840,7 @@
     @LargeTest
     @Ignore("b/268212217")
     public void testLargeScriptJsEvaluation() throws Throwable {
-        String longString = "a".repeat(2000000);
+        String longString = Strings.repeat("a", 2000000);
         final String code = ""
                 + "let " + longString + " = 0;"
                 + "\"PASS\"";
@@ -867,7 +865,7 @@
     @LargeTest
     @Ignore("b/268212217")
     public void testLargeScriptByteArrayJsEvaluation() throws Throwable {
-        final String longString = "a".repeat(2000000);
+        final String longString = Strings.repeat("a", 2000000);
         final String codeString = ""
                 + "let " + longString + " = 0;"
                 + "\"PASS\"";
@@ -893,9 +891,8 @@
     @LargeTest
     @Ignore("b/268212217")
     public void testLargeReturn() throws Throwable {
-        final String longString = "a".repeat(2000000);
         final String code = "'a'.repeat(2000000);";
-        final String expected = longString;
+        final String expected = Strings.repeat("a", 2000000);
         Context context = ApplicationProvider.getApplicationContext();
 
         ListenableFuture<JavaScriptSandbox> jsSandboxFuture =
@@ -916,7 +913,7 @@
     @LargeTest
     @Ignore("b/268212217")
     public void testLargeError() throws Throwable {
-        final String longString = "a".repeat(2000000);
+        final String longString = Strings.repeat("a", 2000000);
         final String code = "throw \"" + longString + "\");";
         Context context = ApplicationProvider.getApplicationContext();
 
@@ -931,8 +928,7 @@
                     resultFuture.get(5, TimeUnit.SECONDS);
                     Assert.fail("Should have thrown.");
                 } catch (ExecutionException e) {
-                    Assert.assertTrue(e.getCause().getClass().equals(
-                            EvaluationFailedException.class));
+                    Assert.assertEquals(e.getCause().getClass(), EvaluationFailedException.class);
                     Assert.assertTrue(e.getCause().getMessage().contains(longString));
                 }
             }
@@ -971,7 +967,7 @@
                 // Running code that returns `maxSize` number of bytes should not throw.
                 final String maxSizeCode = ""
                         + "'a'.repeat(" + maxSize + ");";
-                final String maxSizeExpected = "a".repeat(maxSize);
+                final String maxSizeExpected = Strings.repeat("a", maxSize);
                 ListenableFuture<String> maxSizeResultFuture =
                         jsIsolate.evaluateJavaScriptAsync(maxSizeCode);
                 String maxSizeResult = maxSizeResultFuture.get(5, TimeUnit.SECONDS);
@@ -980,7 +976,7 @@
                 // Running code that returns less than `maxSize` number of bytes should not throw.
                 final String lessThanMaxSizeCode = ""
                         + "'a'.repeat(" + (maxSize - 1) + ");";
-                final String lessThanMaxSizeExpected = "a".repeat(maxSize - 1);
+                final String lessThanMaxSizeExpected = Strings.repeat("a", maxSize - 1);
                 ListenableFuture<String> lessThanMaxSizeResultFuture =
                         jsIsolate.evaluateJavaScriptAsync(lessThanMaxSizeCode);
                 String lessThanMaxSizeResult = lessThanMaxSizeResultFuture.get(5,
@@ -1012,7 +1008,7 @@
             public void onConsoleMessage(
                     @NonNull JavaScriptConsoleCallback.ConsoleMessage message) {
                 synchronized (mLock) {
-                    mMessages.append(message.toString()).append("\n");
+                    mMessages.append(message).append("\n");
                 }
                 latch.countDown();
             }
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/EvaluationResultSizeLimitExceededException.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/EvaluationResultSizeLimitExceededException.java
index df56049..e0f04ef 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/EvaluationResultSizeLimitExceededException.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/EvaluationResultSizeLimitExceededException.java
@@ -20,7 +20,7 @@
 
 /**
  * Indicates that a JavaScriptIsolate's evaluation failed due to it returning a oversized result.
- *
+ * <p>
  * This exception is thrown when exceeding the size limit configured for the isolate via
  * {@link IsolateStartupParameters}, or the default limit.
  * <p>
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateStartupParameters.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateStartupParameters.java
index 75655f4..a1f5013 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateStartupParameters.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateStartupParameters.java
@@ -24,7 +24,7 @@
  */
 public final class IsolateStartupParameters {
     private long mMaxHeapSizeBytes;
-    private int mMaxEvalutationReturnSizeBytes = DEFAULT_MAX_EVALUATION_RETURN_SIZE_BYTES;
+    private int mMaxEvaluationReturnSizeBytes = DEFAULT_MAX_EVALUATION_RETURN_SIZE_BYTES;
     public static final long DEFAULT_ISOLATE_HEAP_SIZE = 0;
     /**
      * Default maximum size in bytes for evaluation returns/errors.
@@ -36,7 +36,7 @@
 
     /**
      * Sets the max heap size used by the {@link JavaScriptIsolate}.
-     *
+     * <p>
      * A heap size of {@link IsolateStartupParameters#DEFAULT_ISOLATE_HEAP_SIZE} indicates no
      * limit.
      * <p>
@@ -64,10 +64,10 @@
 
     /**
      * Sets the max size for evaluation return values and errors in the {@link JavaScriptIsolate}.
-     *
+     * <p>
      * The default value is
      * {@link IsolateStartupParameters#DEFAULT_MAX_EVALUATION_RETURN_SIZE_BYTES}.
-     *
+     * <p>
      * If an evaluation exceeds this limit, {@link EvaluationResultSizeLimitExceededException}
      * is thrown. Errors will be truncated to adhere to this limit.
      *
@@ -80,12 +80,12 @@
         if (size < 0) {
             throw new IllegalArgumentException("maxEvaluationReturnSizeBytes must be >= 0");
         }
-        mMaxEvalutationReturnSizeBytes = size;
+        mMaxEvaluationReturnSizeBytes = size;
     }
 
     /**
      * Gets the max heap size used by the {@link JavaScriptIsolate}.
-     *
+     * <p>
      * If not set using {@link IsolateStartupParameters#setMaxHeapSizeBytes(long)}, the default
      * value is {@link IsolateStartupParameters#DEFAULT_ISOLATE_HEAP_SIZE} which indicates no
      * heap size limit.
@@ -98,13 +98,13 @@
 
     /**
      * Gets the max size for evaluation return values and errors in the {@link JavaScriptIsolate}.
-     *
+     * <p>
      * If not set using {@link IsolateStartupParameters#setMaxEvaluationReturnSizeBytes(int)}, the
      * default value is {@link IsolateStartupParameters#DEFAULT_MAX_EVALUATION_RETURN_SIZE_BYTES}.
      *
      * @return max size in bytes
      */
     public @IntRange(from = 0) int getMaxEvaluationReturnSizeBytes() {
-        return mMaxEvalutationReturnSizeBytes;
+        return mMaxEvaluationReturnSizeBytes;
     }
 }
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateTerminatedException.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateTerminatedException.java
index 1438941..b7547ecb 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateTerminatedException.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/IsolateTerminatedException.java
@@ -19,7 +19,7 @@
 /**
  * Exception thrown when evaluation is terminated due to the {@link JavaScriptIsolate} being closed
  * or crashing.
- *
+ * <p>
  * Calling {@link JavaScriptIsolate#close()} will cause this exception to be thrown for all
  * previously requested but pending evaluations.
  * <p>
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptConsoleCallback.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptConsoleCallback.java
index b7acd25..0faad5f 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptConsoleCallback.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptConsoleCallback.java
@@ -114,7 +114,7 @@
                 default:
                     return "?";
             }
-        };
+        }
 
         /**
          * Return the log level.
@@ -165,17 +165,8 @@
         @NonNull
         @Override
         public String toString() {
-            return new StringBuilder()
-                    .append(getLevelInitial())
-                    .append(" ")
-                    .append(mSource)
-                    .append(":")
-                    .append(mLine)
-                    .append(":")
-                    .append(mColumn)
-                    .append(": ")
-                    .append(mMessage)
-                    .toString();
+            return getLevelInitial() + " " + mSource + ":" + mLine + ":" + mColumn + ": "
+                    + mMessage;
         }
     }
 
@@ -193,4 +184,4 @@
      * The default implementation does nothing.
      */
     default void onConsoleClear() {}
-};
+}
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptIsolate.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptIsolate.java
index a4432f0..f03a32d 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptIsolate.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptIsolate.java
@@ -71,13 +71,13 @@
      */
     @Nullable
     private IJsSandboxIsolate mJsIsolateStub;
-    private CloseGuardHelper mGuard = CloseGuardHelper.create();
+    private final CloseGuardHelper mGuard = CloseGuardHelper.create();
     final JavaScriptSandbox mJsSandbox;
 
     @Nullable
     @GuardedBy("mSetLock")
     private HashSet<CallbackToFutureAdapter.Completer<String>> mPendingCompleterSet =
-            new HashSet<CallbackToFutureAdapter.Completer<String>>();
+            new HashSet<>();
     /**
      * If mSandboxClosed is true, new evaluations will throw this exception asynchronously.
      * <p>
@@ -85,13 +85,13 @@
      */
     @Nullable
     private Exception mExceptionForNewEvaluations;
-    private AtomicBoolean mSandboxClosed = new AtomicBoolean(false);
-    IsolateStartupParameters mStartupParameters;
+    private final AtomicBoolean mSandboxClosed = new AtomicBoolean(false);
+    final IsolateStartupParameters mStartupParameters;
 
     private class IJsSandboxIsolateSyncCallbackStubWrapper extends
             IJsSandboxIsolateSyncCallback.Stub {
         @NonNull
-        private CallbackToFutureAdapter.Completer<String> mCompleter;
+        private final CallbackToFutureAdapter.Completer<String> mCompleter;
 
         IJsSandboxIsolateSyncCallbackStubWrapper(
                 @NonNull CallbackToFutureAdapter.Completer<String> completer) {
@@ -152,7 +152,7 @@
 
     private class IJsSandboxIsolateCallbackStubWrapper extends IJsSandboxIsolateCallback.Stub {
         @NonNull
-        private CallbackToFutureAdapter.Completer<String> mCompleter;
+        private final CallbackToFutureAdapter.Completer<String> mCompleter;
 
         IJsSandboxIsolateCallbackStubWrapper(
                 @NonNull CallbackToFutureAdapter.Completer<String> completer) {
@@ -223,7 +223,7 @@
         public void consoleClear(int contextGroupId) {
             final long identity = Binder.clearCallingIdentity();
             try {
-                mExecutor.execute(() -> mCallback.onConsoleClear());
+                mExecutor.execute(mCallback::onConsoleClear);
             } catch (RejectedExecutionException e) {
                 Log.e(TAG, "Console clear dropped", e);
             } finally {
@@ -256,8 +256,8 @@
      *   <li><strong>If the JS expression returns another data type</strong>, then Java Future
      * resolves to empty Java String.</li>
      * </ul>
-     * The environment uses a single JS global object for all the calls to {@link
-     * #evaluateJavaScriptAsync(String)} and {@link #provideNamedData(String, byte[])} methods.
+     * The environment uses a single JS global object for all the calls to
+     * evaluateJavaScriptAsync(String) and {@link #provideNamedData(String, byte[])} methods.
      * These calls are queued up and are run one at a time in sequence, using the single JS
      * environment for the isolate. The global variables set by one evaluation are visible for
      * later evaluations. This is similar to adding multiple {@code <script>} tags in HTML. The
@@ -273,12 +273,14 @@
      * transaction limit but are bound by
      * {@link IsolateStartupParameters#setMaxEvaluationReturnSizeBytes(int)} with a default size
      * of {@link IsolateStartupParameters#DEFAULT_MAX_EVALUATION_RETURN_SIZE_BYTES}.
-     *
-     * @param code JavaScript code that is evaluated, it should return a JavaScript String or a
-     *             Promise of a String in case {@link JavaScriptSandbox#JS_FEATURE_PROMISE_RETURN}
-     *             is supported
+     * <p>
+     * Do not use this method to transfer raw binary data. Scripts or results containing unpaired
+     * surrogate code units are not supported.
+     * @param code JavaScript code to evaluate. The script should return a JavaScript String or,
+     *             alternatively, a Promise that will resolve to a String if
+     *             {@link JavaScriptSandbox#JS_FEATURE_PROMISE_RETURN} is supported.
      * @return Future that evaluates to the result String of the evaluation or exceptions (see
-     * {@link JavaScriptException} and subclasses) if there is an error
+     * {@link JavaScriptException} and subclasses) if there is an error.
      */
     @SuppressWarnings("NullAway")
     @NonNull
@@ -300,6 +302,7 @@
             IJsSandboxIsolateCallbackStubWrapper callbackStub;
             synchronized (mSetLock) {
                 if (mPendingCompleterSet == null) {
+                    assert mExceptionForNewEvaluations != null;
                     completer.setException(mExceptionForNewEvaluations);
                     return futureDebugMessage;
                 }
@@ -330,10 +333,10 @@
      * This overload is provided for clients to pass in a UTF-8 encoded {@code byte[]} directly
      * instead of having to convert it into a {@code String} to use
      * {@link #evaluateJavaScriptAsync(String)}.
-     *
-     * @param code UTF-8 encoded JavaScript code that is evaluated, it should return a JavaScript
-     *             String or a Promise of a String in case
-     *             {@link JavaScriptSandbox#JS_FEATURE_PROMISE_RETURN} is supported
+     * @param code UTF-8 encoded JavaScript code to evaluate. The script should return a
+     *             JavaScript String or, alternatively, a Promise that will resolve to a String if
+     *             {@link JavaScriptSandbox#JS_FEATURE_PROMISE_RETURN} is supported. The byte
+     *             array must not be modified until the evaluation has completed.
      * @return Future that evaluates to the result String of the evaluation or exceptions (see
      * {@link JavaScriptException} and subclasses) if there is an error
      */
@@ -352,6 +355,7 @@
             IJsSandboxIsolateSyncCallbackStubWrapper callbackStub;
             synchronized (mSetLock) {
                 if (mPendingCompleterSet == null) {
+                    assert mExceptionForNewEvaluations != null;
                     completer.setException(mExceptionForNewEvaluations);
                     return futureDebugMessage;
                 }
@@ -359,19 +363,18 @@
             }
             callbackStub = new IJsSandboxIsolateSyncCallbackStubWrapper(completer);
             try {
-                AssetFileDescriptor codeAfd = Utils.writeBytesIntoPipeAsync(code,
-                        mJsSandbox.mThreadPoolTaskExecutor);
-                try {
+                // We pass the codeAfd to the separate sandbox process but we still need to
+                // close it on our end to avoid file descriptor leaks.
+                try (AssetFileDescriptor codeAfd = Utils.writeBytesIntoPipeAsync(code,
+                        mJsSandbox.mThreadPoolTaskExecutor)) {
                     mJsIsolateStub.evaluateJavascriptWithFd(codeAfd, callbackStub);
-                } finally {
-                    // We pass the codeAfd to the separate sandbox process but we still need to
-                    // close it on our end to avoid file descriptor leaks.
-                    codeAfd.close();
                 }
             } catch (RemoteException | IOException e) {
                 completer.setException(new RuntimeException(e));
                 synchronized (mSetLock) {
-                    mPendingCompleterSet.remove(completer);
+                    if (mPendingCompleterSet != null) {
+                        mPendingCompleterSet.remove(completer);
+                    }
                 }
             }
             // Debug string.
@@ -443,7 +446,7 @@
      * </pre>
      * <p>
      * The environment uses a single JS global object for all the calls to {@link
-     * #evaluateJavaScriptAsync(String)} and {@link #provideNamedData(String, byte[])} methods.
+     * #evaluateJavaScriptAsync(String)} and provideNamedData(String, byte[]) methods.
      * <p>
      * This method should only be called if
      * {@link JavaScriptSandbox#isFeatureSupported(String)}
@@ -466,14 +469,11 @@
             throw new IllegalStateException("Calling provideNamedData() after closing the Isolate");
         }
         try {
-            AssetFileDescriptor codeAfd = Utils.writeBytesIntoPipeAsync(inputBytes,
-                    mJsSandbox.mThreadPoolTaskExecutor);
-            try {
+            // We pass the codeAfd to the separate sandbox process but we still need to close
+            // it on our end to avoid file descriptor leaks.
+            try (AssetFileDescriptor codeAfd = Utils.writeBytesIntoPipeAsync(inputBytes,
+                    mJsSandbox.mThreadPoolTaskExecutor)) {
                 return mJsIsolateStub.provideNamedData(name, codeAfd);
-            } finally {
-                // We pass the codeAfd to the separate sandbox process but we still need to close
-                // it on our end to avoid file descriptor leaks.
-                codeAfd.close();
             }
         } catch (RemoteException e) {
             Log.e(TAG, "RemoteException was thrown during provideNamedData()", e);
@@ -548,9 +548,7 @@
     @SuppressWarnings("GenericException") // super.finalize() throws Throwable
     protected void finalize() throws Throwable {
         try {
-            if (mGuard != null) {
-                mGuard.warnIfOpen();
-            }
+            mGuard.warnIfOpen();
             if (mJsIsolateStub != null) {
                 close();
             }
@@ -603,9 +601,8 @@
     /**
      * Set a JavaScriptConsoleCallback to process console messages from the isolate.
      * <p>
-     * This is the same as calling {@link #setConsoleCallback(Executor, JavaScriptConsoleCallback}
-     * using the main executor ({@link Context.getMainExecutor()}) of the context used to create the
-     * {@link JavaScriptSandbox} object.
+     * This is the same as calling {@link #setConsoleCallback(Executor, JavaScriptConsoleCallback)}
+     * using the main executor of the context used to create the {@link JavaScriptSandbox} object.
      * @param callback Callback implementing console logging behaviour.
      */
     @RequiresFeature(name = JavaScriptSandbox.JS_FEATURE_CONSOLE_MESSAGING,
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptSandbox.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptSandbox.java
index f7541ce..adc15f3 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptSandbox.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/JavaScriptSandbox.java
@@ -81,13 +81,12 @@
     // different processes as needed. This might require that we have a static
     // variable in here that tracks the existing services we are connected to and
     // connect to a different one when creating a new object.
-    private static final String TAG = "JavaScriptSandbox";
     private static final String JS_SANDBOX_SERVICE_NAME =
             "org.chromium.android_webview.js_sandbox.service.JsSandboxService0";
 
-    static AtomicBoolean sIsReadyToConnect = new AtomicBoolean(true);
+    static final AtomicBoolean sIsReadyToConnect = new AtomicBoolean(true);
     private final Object mLock = new Object();
-    private CloseGuardHelper mGuard = CloseGuardHelper.create();
+    private final CloseGuardHelper mGuard = CloseGuardHelper.create();
 
     @Nullable
     @GuardedBy("mLock")
@@ -95,9 +94,8 @@
 
     private final ConnectionSetup mConnection;
 
-    @Nullable
     @GuardedBy("mLock")
-    private HashSet<JavaScriptIsolate> mActiveIsolateSet = new HashSet<JavaScriptIsolate>();
+    private final HashSet<JavaScriptIsolate> mActiveIsolateSet = new HashSet<>();
 
     final ExecutorService mThreadPoolTaskExecutor =
             Executors.newCachedThreadPool(new ThreadFactory() {
@@ -209,7 +207,7 @@
         private CallbackToFutureAdapter.Completer<JavaScriptSandbox> mCompleter;
         @Nullable
         private JavaScriptSandbox mJsSandbox;
-        Context mContext;
+        final Context mContext;
 
         @Override
         @SuppressWarnings("NullAway")
@@ -288,10 +286,12 @@
     public static ListenableFuture<JavaScriptSandbox> createConnectedInstanceAsync(
             @NonNull Context context) {
         Objects.requireNonNull(context);
-        if (!isSupported()) {
+        PackageInfo systemWebViewPackage = WebView.getCurrentWebViewPackage();
+        // Technically, there could be a few race conditions before/after isSupport() where the
+        // availability changes, which may result in a bind failure.
+        if (systemWebViewPackage == null || !isSupported()) {
             throw new SandboxUnsupportedException("The system does not support JavaScriptSandbox");
         }
-        PackageInfo systemWebViewPackage = WebView.getCurrentWebViewPackage();
         ComponentName compName =
                 new ComponentName(systemWebViewPackage.packageName, JS_SANDBOX_SERVICE_NAME);
         int flag = Context.BIND_AUTO_CREATE | Context.BIND_EXTERNAL_SERVICE;
@@ -357,9 +357,7 @@
                         Executor mainExecutor;
                         mainExecutor = ContextCompat.getMainExecutor(context);
                         completer.addCancellationListener(
-                                () -> {
-                                    context.unbindService(connectionSetup);
-                                }, mainExecutor);
+                                () -> context.unbindService(connectionSetup), mainExecutor);
                     } else {
                         context.unbindService(connectionSetup);
                         sIsReadyToConnect.set(true);
@@ -439,13 +437,14 @@
     @GuardedBy("mLock")
     @SuppressWarnings("NullAway")
     private void populateClientFeatureSet() {
+        assert mJsSandboxService != null;
         List<String> features;
         try {
             features = mJsSandboxService.getSupportedFeatures();
         } catch (RemoteException e) {
             throw new RuntimeException(e);
         }
-        mClientSideFeatureSet = new HashSet<String>();
+        mClientSideFeatureSet = new HashSet<>();
         if (features.contains(IJsSandboxService.ISOLATE_TERMINATION)) {
             mClientSideFeatureSet.add(JS_FEATURE_ISOLATE_TERMINATION);
         }
@@ -504,9 +503,7 @@
 
     void removeFromIsolateSet(@NonNull JavaScriptIsolate isolate) {
         synchronized (mLock) {
-            if (mActiveIsolateSet != null) {
-                mActiveIsolateSet.remove(isolate);
-            }
+            mActiveIsolateSet.remove(isolate);
         }
     }
 
@@ -548,16 +545,14 @@
         for (JavaScriptIsolate ele : mActiveIsolateSet) {
             ele.notifySandboxClosed();
         }
-        mActiveIsolateSet = null;
+        mActiveIsolateSet.clear();
     }
 
     @Override
     @SuppressWarnings("GenericException") // super.finalize() throws Throwable
     protected void finalize() throws Throwable {
         try {
-            if (mGuard != null) {
-                mGuard.warnIfOpen();
-            }
+            mGuard.warnIfOpen();
             synchronized (mLock) {
                 if (mJsSandboxService != null) {
                     close();
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/MemoryLimitExceededException.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/MemoryLimitExceededException.java
index a0eee81..f4330cc 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/MemoryLimitExceededException.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/MemoryLimitExceededException.java
@@ -27,7 +27,7 @@
  * its configured heap limit.
  * <p>
  * The isolate may not continue to be used after this exception has been thrown, and other pending
- * evalutions for the isolate will fail. The isolate may continue to hold onto resources (even if
+ * evaluations for the isolate will fail. The isolate may continue to hold onto resources (even if
  * explicitly closed) until the sandbox has been shutdown. Therefore, it is recommended that the
  * sandbox be restarted at the earliest opportunity in order to reclaim these resources.
  * <p>
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/SandboxUnsupportedException.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/SandboxUnsupportedException.java
index 7d40525..1bb459a 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/SandboxUnsupportedException.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/SandboxUnsupportedException.java
@@ -20,7 +20,8 @@
 
 /**
  * Exception thrown when attempting to create a {@link JavaScriptSandbox} via
- * {@link JavaScriptSandbox#createConnectedInstanceAsync(Context)} when doing so is not supported.
+ * {@link JavaScriptSandbox#createConnectedInstanceAsync(android.content.Context)} when doing so is
+ * not supported.
  * <p>
  * This can occur when the WebView package is too old to provide a sandbox implementation.
  */
diff --git a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/common/Utils.java b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/common/Utils.java
index 4d59cf6..59c3d03 100644
--- a/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/common/Utils.java
+++ b/javascriptengine/javascriptengine/src/main/java/androidx/javascriptengine/common/Utils.java
@@ -32,13 +32,16 @@
 import java.util.concurrent.ExecutorService;
 
 /**
- * Utility methods for use in both service and client side of JavaScriptEngine
+ * Utility methods for use in both service and client side of JavaScriptEngine.
  */
 public class Utils {
     private static final String TAG = "JavaScriptEngineUtils";
 
+    private Utils() {
+        throw new AssertionError();
+    }
     /**
-     * Utility method to write a byte array into a stream
+     * Utility method to write a byte array into a stream.
      */
     public static void writeByteArrayToStream(@NonNull byte[] inputBytes,
             @NonNull OutputStream outputStream) {
@@ -53,7 +56,7 @@
     }
 
     /**
-     * Close ignoring exception
+     * Close, ignoring exception.
      */
     public static void closeQuietly(@Nullable Closeable closeable) {
         if (closeable == null) return;
@@ -76,14 +79,12 @@
         OutputStream outputStream =
                 new ParcelFileDescriptor.AutoCloseOutputStream(writeSide);
         executorService.execute(
-                () -> {
-                    Utils.writeByteArrayToStream(inputBytes, outputStream);
-                });
+                () -> Utils.writeByteArrayToStream(inputBytes, outputStream));
         return new AssetFileDescriptor(readSide, 0, inputBytes.length);
     }
 
     /**
-     * Checks if the given AssetFileDescriptor passes certain conditions
+     * Checks if the given AssetFileDescriptor passes certain conditions.
      */
     public static void checkAssetFileDescriptor(@NonNull AssetFileDescriptor afd,
             int maxLength) {
@@ -97,13 +98,13 @@
         }
         if (afd.getLength() > maxLength) {
             throw new IllegalArgumentException(
-                    "AssetFileDescriptor.getLength() should be <= " + Integer.toString(maxLength));
+                    "AssetFileDescriptor.getLength() should be <= " + maxLength);
         }
     }
 
     /**
-     * Read a given number of bytes from a given stream into a byte array
-     *
+     * Read a given number of bytes from a given stream into a byte array.
+     * <p>
      * This allows us to use
      * <a href=https://developer.android.com/reference/java/io/InputStream#readNBytes(byte[],%20int,%20int)">
      * this </a>
@@ -136,7 +137,7 @@
 
     /**
      * Returns the index of right-most UTF-8 starting byte.
-     *
+     * <p>
      * The input must be valid (or truncated) UTF-8 encoded bytes.
      * Returns -1 if there is no starting byte.
      */
diff --git a/leanback/leanback-grid/build.gradle b/leanback/leanback-grid/build.gradle
index 36a1965..b6171c8 100644
--- a/leanback/leanback-grid/build.gradle
+++ b/leanback/leanback-grid/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "AndroidX Leanback Grid"
+    name = "Leanback Grid"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.LEANBACK_GRID
     inceptionYear = "2021"
diff --git a/leanback/leanback-paging/build.gradle b/leanback/leanback-paging/build.gradle
index 6c51eec..0b19679 100644
--- a/leanback/leanback-paging/build.gradle
+++ b/leanback/leanback-paging/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "AndroidX Leanback Paging"
+    name = "Leanback Paging"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.LEANBACK_PAGING
     inceptionYear = "2020"
diff --git a/leanback/leanback-paging/src/androidTest/java/androidx/leanback/paging/PagingDataAdapterTest.kt b/leanback/leanback-paging/src/androidTest/java/androidx/leanback/paging/PagingDataAdapterTest.kt
index 9b2d05e..2cda1ef 100644
--- a/leanback/leanback-paging/src/androidTest/java/androidx/leanback/paging/PagingDataAdapterTest.kt
+++ b/leanback/leanback-paging/src/androidTest/java/androidx/leanback/paging/PagingDataAdapterTest.kt
@@ -28,6 +28,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.testutils.MainDispatcherRule
+import kotlin.coroutines.ContinuationInterceptor
+import kotlin.test.assertEquals
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -40,8 +42,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.coroutines.ContinuationInterceptor
-import kotlin.test.assertEquals
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @MediumTest
diff --git a/leanback/leanback-preference/build.gradle b/leanback/leanback-preference/build.gradle
index d64a337..8af0e9d 100644
--- a/leanback/leanback-preference/build.gradle
+++ b/leanback/leanback-preference/build.gradle
@@ -28,7 +28,7 @@
 }
 
 androidx {
-    name = "AndroidX Leanback Preference"
+    name = "Leanback Preference"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.LEANBACK_PREFERENCE
     inceptionYear = "2015"
diff --git a/leanback/leanback-tab/build.gradle b/leanback/leanback-tab/build.gradle
index 1c0b1cb..b38819a 100644
--- a/leanback/leanback-tab/build.gradle
+++ b/leanback/leanback-tab/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "AndroidX Leanback Tab"
+    name = "Leanback Tab"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.LEANBACK_TAB
     inceptionYear = "2020"
diff --git a/leanback/leanback/build.gradle b/leanback/leanback/build.gradle
index 1a3152a..d22458a 100644
--- a/leanback/leanback/build.gradle
+++ b/leanback/leanback/build.gradle
@@ -55,7 +55,7 @@
 }
 
 androidx {
-    name = "Android Support Leanback v17"
+    name = "Leanback"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.LEANBACK
     inceptionYear = "2014"
diff --git a/leanback/leanback/src/main/res/values-or/strings.xml b/leanback/leanback/src/main/res/values-or/strings.xml
index d5269f5..a7f2365 100644
--- a/leanback/leanback/src/main/res/values-or/strings.xml
+++ b/leanback/leanback/src/main/res/values-or/strings.xml
@@ -26,7 +26,7 @@
     <string name="lb_control_display_fast_forward_multiplier" msgid="4657191930956702614">"%1$dX"</string>
     <string name="lb_control_display_rewind_multiplier" msgid="4597148235912710942">"%1$dX"</string>
     <string name="lb_playback_controls_play" msgid="7088090604803481121">"ଚଲାନ୍ତୁ"</string>
-    <string name="lb_playback_controls_pause" msgid="917331776961802657">"ପଜ୍‍ କରନ୍ତୁ"</string>
+    <string name="lb_playback_controls_pause" msgid="917331776961802657">"ବିରତ କରନ୍ତୁ"</string>
     <string name="lb_playback_controls_fast_forward" msgid="740570111678243493">"ଫାଷ୍ଟ ଫର୍‌ୱାର୍ଡ"</string>
     <string name="lb_playback_controls_fast_forward_multiplier" msgid="5734614175721471329">"%1$dX ବେଗରେ ଫାଷ୍ଟ ଫରୱାର୍ଡ"</string>
     <string name="lb_playback_controls_rewind" msgid="2866333981131020771">"ରିୱାଇଣ୍ଡ"</string>
diff --git a/libraryversions.toml b/libraryversions.toml
index 413f3f3..ea55416 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -1,5 +1,5 @@
 [versions]
-ACTIVITY = "1.8.0-alpha02"
+ACTIVITY = "1.8.0-alpha05"
 ANNOTATION = "1.7.0-alpha03"
 ANNOTATION_EXPERIMENTAL = "1.4.0-alpha01"
 APPACTIONS_BUILTINTYPES = "1.0.0-alpha01"
@@ -97,7 +97,7 @@
 PRINT = "1.1.0-beta01"
 PRIVACYSANDBOX_ADS = "1.0.0-beta04"
 PRIVACYSANDBOX_PLUGINS = "1.0.0-alpha02"
-PRIVACYSANDBOX_SDKRUNTIME = "1.0.0-alpha04"
+PRIVACYSANDBOX_SDKRUNTIME = "1.0.0-alpha05"
 PRIVACYSANDBOX_TOOLS = "1.0.0-alpha04"
 PRIVACYSANDBOX_UI = "1.0.0-alpha03"
 PROFILEINSTALLER = "1.4.0-alpha01"
diff --git a/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt b/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
index d23d266..b7f7648 100644
--- a/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
+++ b/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
@@ -18,15 +18,15 @@
 
 import androidx.testutils.gradle.ProjectSetupRule
 import com.google.common.truth.Truth.assertThat
+import java.io.File
+import java.nio.file.Files
+import java.nio.file.Path
 import org.gradle.testkit.runner.GradleRunner
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.io.File
-import java.nio.file.Files
-import java.nio.file.Path
 
 @RunWith(JUnit4::class)
 class IncrementalAnnotationProcessingTest {
diff --git a/lifecycle/integration-tests/kotlintestapp/src/test-common/java/androidx.lifecycle/LifecycleCoroutineScopeTestBase.kt b/lifecycle/integration-tests/kotlintestapp/src/test-common/java/androidx.lifecycle/LifecycleCoroutineScopeTestBase.kt
index 5b4d60d..61bece9 100644
--- a/lifecycle/integration-tests/kotlintestapp/src/test-common/java/androidx.lifecycle/LifecycleCoroutineScopeTestBase.kt
+++ b/lifecycle/integration-tests/kotlintestapp/src/test-common/java/androidx.lifecycle/LifecycleCoroutineScopeTestBase.kt
@@ -18,6 +18,7 @@
 
 import androidx.lifecycle.testing.TestLifecycleOwner
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CancellationException
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.async
@@ -25,10 +26,9 @@
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.sync.Mutex
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.withContext
 import org.junit.Test
-import java.util.concurrent.CancellationException
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
 
 @OptIn(ExperimentalCoroutinesApi::class)
 abstract class LifecycleCoroutineScopeTestBase {
diff --git a/lifecycle/integration-tests/kotlintestapp/src/test/java/androidx/lifecycle/LifecycleCoroutineScopeTest.kt b/lifecycle/integration-tests/kotlintestapp/src/test/java/androidx/lifecycle/LifecycleCoroutineScopeTest.kt
index a2af184..19d71e3 100644
--- a/lifecycle/integration-tests/kotlintestapp/src/test/java/androidx/lifecycle/LifecycleCoroutineScopeTest.kt
+++ b/lifecycle/integration-tests/kotlintestapp/src/test/java/androidx/lifecycle/LifecycleCoroutineScopeTest.kt
@@ -18,6 +18,8 @@
 
 package androidx.lifecycle
 
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.test.resetMain
@@ -26,8 +28,6 @@
 import org.junit.Before
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.concurrent.Executors
-import java.util.concurrent.TimeUnit
 
 /**
  * To ensure consistent behavior, we run these tests both on androidTest and test
diff --git a/lifecycle/lifecycle-common-java8/build.gradle b/lifecycle/lifecycle-common-java8/build.gradle
index cbab42e..88e4bc1 100644
--- a/lifecycle/lifecycle-common-java8/build.gradle
+++ b/lifecycle/lifecycle-common-java8/build.gradle
@@ -30,7 +30,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle-Common for Java 8 Language"
+    name = "Lifecycle-Common for Java 8"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Lifecycle-Common for Java 8 Language"
diff --git a/lifecycle/lifecycle-common/build.gradle b/lifecycle/lifecycle-common/build.gradle
index fcd8ba4..1aeacc3 100644
--- a/lifecycle/lifecycle-common/build.gradle
+++ b/lifecycle/lifecycle-common/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle-Common"
+    name = "Lifecycle-Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Lifecycle-Common"
diff --git a/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/DispatchQueue.kt b/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/DispatchQueue.kt
index 1f51438..13f6bd8 100644
--- a/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/DispatchQueue.kt
+++ b/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/DispatchQueue.kt
@@ -18,10 +18,10 @@
 
 import androidx.annotation.AnyThread
 import androidx.annotation.MainThread
-import kotlinx.coroutines.Dispatchers
 import java.util.ArrayDeque
 import java.util.Queue
 import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.Dispatchers
 
 /**
  * Helper class for [PausingDispatcher] that tracks runnables which are enqueued to the dispatcher
diff --git a/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/Lifecycle.kt b/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/Lifecycle.kt
index ac586d8..f69c624 100644
--- a/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/Lifecycle.kt
+++ b/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/Lifecycle.kt
@@ -25,7 +25,6 @@
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.cancel
-import kotlinx.coroutines.launch
 import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -33,6 +32,7 @@
 import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.callbackFlow
 import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.launch
 
 /**
  * Defines an object that has an Android Lifecycle. [Fragment][androidx.fragment.app.Fragment]
diff --git a/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/PausingDispatcher.kt b/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/PausingDispatcher.kt
index 70dc54d..7b388ed 100644
--- a/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/PausingDispatcher.kt
+++ b/lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/PausingDispatcher.kt
@@ -16,13 +16,13 @@
 
 package androidx.lifecycle
 
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Runnable
 import kotlinx.coroutines.withContext
-import kotlin.coroutines.CoroutineContext
 
 /**
  * Runs the given block when the [LifecycleOwner]'s [Lifecycle] is at least in
diff --git a/lifecycle/lifecycle-compiler/build.gradle b/lifecycle/lifecycle-compiler/build.gradle
index 60945b2..b5ac1f6 100644
--- a/lifecycle/lifecycle-compiler/build.gradle
+++ b/lifecycle/lifecycle-compiler/build.gradle
@@ -53,7 +53,7 @@
 }
 
 androidx {
-    name = "Android Lifecycles Compiler"
+    name = "Lifecycles Compiler"
     type = LibraryType.ANNOTATION_PROCESSOR
     inceptionYear = "2017"
     description = "Android Lifecycles annotation processor"
diff --git a/lifecycle/lifecycle-compiler/src/test/kotlin/androidx/lifecycle/ValidCasesTest.kt b/lifecycle/lifecycle-compiler/src/test/kotlin/androidx/lifecycle/ValidCasesTest.kt
index 4c36341..1889a41 100644
--- a/lifecycle/lifecycle-compiler/src/test/kotlin/androidx/lifecycle/ValidCasesTest.kt
+++ b/lifecycle/lifecycle-compiler/src/test/kotlin/androidx/lifecycle/ValidCasesTest.kt
@@ -20,11 +20,11 @@
 import androidx.lifecycle.utils.processClass
 import com.google.testing.compile.CompileTester
 import com.google.testing.compile.JavaSourcesSubject
+import java.io.File
+import javax.tools.StandardLocation
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.io.File
-import javax.tools.StandardLocation
 
 @RunWith(JUnit4::class)
 class ValidCasesTest {
diff --git a/lifecycle/lifecycle-extensions/build.gradle b/lifecycle/lifecycle-extensions/build.gradle
index b729d31..b8c4e04 100644
--- a/lifecycle/lifecycle-extensions/build.gradle
+++ b/lifecycle/lifecycle-extensions/build.gradle
@@ -51,7 +51,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle Extensions"
+    name = "Lifecycle Extensions"
     publish = Publish.NONE
     runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
     inceptionYear = "2017"
diff --git a/lifecycle/lifecycle-livedata-core-ktx-lint/build.gradle b/lifecycle/lifecycle-livedata-core-ktx-lint/build.gradle
index 6bb81f4..59c894a 100644
--- a/lifecycle/lifecycle-livedata-core-ktx-lint/build.gradle
+++ b/lifecycle/lifecycle-livedata-core-ktx-lint/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "Android LiveData Kotlin Lint Checks"
+    name = "LiveData Kotlin Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2019"
     description = "Lint Checks for LiveData Kotlin Extensions"
diff --git a/lifecycle/lifecycle-livedata-core/build.gradle b/lifecycle/lifecycle-livedata-core/build.gradle
index 1947720d..58101b7 100644
--- a/lifecycle/lifecycle-livedata-core/build.gradle
+++ b/lifecycle/lifecycle-livedata-core/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle LiveData Core"
+    name = "Lifecycle LiveData Core"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Lifecycle LiveData Core"
diff --git a/lifecycle/lifecycle-livedata/build.gradle b/lifecycle/lifecycle-livedata/build.gradle
index 824c7f0..898e7b1 100644
--- a/lifecycle/lifecycle-livedata/build.gradle
+++ b/lifecycle/lifecycle-livedata/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle LiveData"
+    name = "Lifecycle LiveData"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Lifecycle LiveData"
diff --git a/lifecycle/lifecycle-process/build.gradle b/lifecycle/lifecycle-process/build.gradle
index 09a4076..2c59ba1f5 100644
--- a/lifecycle/lifecycle-process/build.gradle
+++ b/lifecycle/lifecycle-process/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle Process"
+    name = "Lifecycle Process"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Lifecycle Process"
diff --git a/lifecycle/lifecycle-reactivestreams-ktx/build.gradle b/lifecycle/lifecycle-reactivestreams-ktx/build.gradle
index 79856f6..2fef830 100644
--- a/lifecycle/lifecycle-reactivestreams-ktx/build.gradle
+++ b/lifecycle/lifecycle-reactivestreams-ktx/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-  name = "Android Lifecycle ReactiveStreams KTX"
+  name = "Lifecycle ReactiveStreams KTX"
   publish = Publish.SNAPSHOT_AND_RELEASE
   inceptionYear = "2018"
   description = "Kotlin extensions for Lifecycle ReactiveStreams"
diff --git a/lifecycle/lifecycle-reactivestreams/build.gradle b/lifecycle/lifecycle-reactivestreams/build.gradle
index e47bb63..e73e520b 100644
--- a/lifecycle/lifecycle-reactivestreams/build.gradle
+++ b/lifecycle/lifecycle-reactivestreams/build.gradle
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle Reactivestreams"
+    name = "Lifecycle Reactivestreams"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Lifecycle Reactivestreams"
diff --git a/lifecycle/lifecycle-runtime-compose/samples/build.gradle b/lifecycle/lifecycle-runtime-compose/samples/build.gradle
index b1f8730..334768e 100644
--- a/lifecycle/lifecycle-runtime-compose/samples/build.gradle
+++ b/lifecycle/lifecycle-runtime-compose/samples/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "AndroidX Lifecycle Runtime Compose Integration Samples"
+    name = "Lifecycle Runtime Compose Integration Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Samples for Compose integration with Lifecycle Runtime"
diff --git a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/FlowExt.kt b/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/FlowExt.kt
index 7ee6398..f1b633c 100644
--- a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/FlowExt.kt
+++ b/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/FlowExt.kt
@@ -23,11 +23,11 @@
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.repeatOnLifecycle
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.EmptyCoroutineContext
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.withContext
-import kotlin.coroutines.CoroutineContext
-import kotlin.coroutines.EmptyCoroutineContext
 
 /**
  * Collects values from this [StateFlow] and represents its latest value via [State] in a
diff --git a/lifecycle/lifecycle-runtime-ktx-lint/build.gradle b/lifecycle/lifecycle-runtime-ktx-lint/build.gradle
index 3761f26..e10aea4 100644
--- a/lifecycle/lifecycle-runtime-ktx-lint/build.gradle
+++ b/lifecycle/lifecycle-runtime-ktx-lint/build.gradle
@@ -35,7 +35,7 @@
 }
 
 androidx {
-    name = "Android Lifecycles Lint Checks"
+    name = "Lifecycles Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2019"
     description = "Android Lifecycles Lint Checks"
diff --git a/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleWhenChecks.kt b/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleWhenChecks.kt
index f863f3c..dce48e7 100644
--- a/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleWhenChecks.kt
+++ b/lifecycle/lifecycle-runtime-ktx-lint/src/main/java/androidx/lifecycle/lint/LifecycleWhenChecks.kt
@@ -33,6 +33,7 @@
 import com.intellij.psi.PsiMethod
 import com.intellij.psi.PsiWildcardType
 import com.intellij.psi.util.PsiTypesUtil
+import java.util.ArrayDeque
 import org.jetbrains.kotlin.asJava.elements.KtLightModifierList
 import org.jetbrains.kotlin.lexer.KtTokens
 import org.jetbrains.uast.UCallExpression
@@ -49,7 +50,6 @@
 import org.jetbrains.uast.tryResolve
 import org.jetbrains.uast.visitor.AbstractUastVisitor
 import org.jetbrains.uast.visitor.UastVisitor
-import java.util.ArrayDeque
 
 // both old and new ones
 private val CONTINUATION_NAMES = setOf(
diff --git a/lifecycle/lifecycle-runtime-ktx/build.gradle b/lifecycle/lifecycle-runtime-ktx/build.gradle
index e394b0b..554d287 100644
--- a/lifecycle/lifecycle-runtime-ktx/build.gradle
+++ b/lifecycle/lifecycle-runtime-ktx/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle Kotlin Extensions"
+    name = "Lifecycle Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Kotlin extensions for 'lifecycle' artifact"
diff --git a/lifecycle/lifecycle-runtime-ktx/src/androidTest/java/androidx/lifecycle/PausingDispatcherTest.kt b/lifecycle/lifecycle-runtime-ktx/src/androidTest/java/androidx/lifecycle/PausingDispatcherTest.kt
index 4d2f2d6..4cadb0a 100644
--- a/lifecycle/lifecycle-runtime-ktx/src/androidTest/java/androidx/lifecycle/PausingDispatcherTest.kt
+++ b/lifecycle/lifecycle-runtime-ktx/src/androidTest/java/androidx/lifecycle/PausingDispatcherTest.kt
@@ -20,10 +20,15 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineExceptionHandler
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Delay
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.InternalCoroutinesApi
@@ -46,11 +51,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.Executors
-import java.util.concurrent.TimeUnit
-import kotlin.coroutines.CoroutineContext
-import kotlinx.coroutines.Delay
 
 @Suppress("DEPRECATION")
 @InternalCoroutinesApi
diff --git a/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/RepeatOnLifecycle.kt b/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/RepeatOnLifecycle.kt
index 45b0f53..a3b6d45b 100644
--- a/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/RepeatOnLifecycle.kt
+++ b/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/RepeatOnLifecycle.kt
@@ -16,6 +16,7 @@
 
 package androidx.lifecycle
 
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Job
@@ -25,7 +26,6 @@
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
 import kotlinx.coroutines.withContext
-import kotlin.coroutines.resume
 
 /**
  * Runs the given [block] in a new coroutine when `this` [Lifecycle] is at least at [state] and
diff --git a/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/WithLifecycleState.kt b/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/WithLifecycleState.kt
index 9f3dd21..e8f63d7 100644
--- a/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/WithLifecycleState.kt
+++ b/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/WithLifecycleState.kt
@@ -16,13 +16,13 @@
 
 package androidx.lifecycle
 
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.coroutines.coroutineContext
+import kotlin.coroutines.resumeWithException
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.suspendCancellableCoroutine
-import kotlin.coroutines.EmptyCoroutineContext
-import kotlin.coroutines.coroutineContext
-import kotlin.coroutines.resumeWithException
 
 /**
  * A [CancellationException] that indicates that the [Lifecycle] associated with an operation
diff --git a/lifecycle/lifecycle-runtime-testing/build.gradle b/lifecycle/lifecycle-runtime-testing/build.gradle
index 4e59db92..3c7aca3 100644
--- a/lifecycle/lifecycle-runtime-testing/build.gradle
+++ b/lifecycle/lifecycle-runtime-testing/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle Runtime Testing"
+    name = "Lifecycle Runtime Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Testing utilities for 'lifecycle' artifact"
diff --git a/lifecycle/lifecycle-runtime/build.gradle b/lifecycle/lifecycle-runtime/build.gradle
index 5199df9..3e06c78 100644
--- a/lifecycle/lifecycle-runtime/build.gradle
+++ b/lifecycle/lifecycle-runtime/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name "Android Lifecycle Runtime"
+    name = "Lifecycle Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear "2017"
     description "Android Lifecycle Runtime"
diff --git a/lifecycle/lifecycle-service/build.gradle b/lifecycle/lifecycle-service/build.gradle
index 690553f..7ab4fc2 100644
--- a/lifecycle/lifecycle-service/build.gradle
+++ b/lifecycle/lifecycle-service/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle Service"
+    name = "Lifecycle Service"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Lifecycle Service"
diff --git a/lifecycle/lifecycle-viewmodel-compose/samples/build.gradle b/lifecycle/lifecycle-viewmodel-compose/samples/build.gradle
index 195fb57..f812410 100644
--- a/lifecycle/lifecycle-viewmodel-compose/samples/build.gradle
+++ b/lifecycle/lifecycle-viewmodel-compose/samples/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "AndroidX Lifecycle ViewModel Compose Integration Samples"
+    name = "Lifecycle ViewModel Compose Integration Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Samples for Compose integration with Lifecycle ViewModel"
diff --git a/lifecycle/lifecycle-viewmodel-compose/samples/src/main/java/androidx/lifecycle/viewmodel/compose/samples/LifecycleViewModelSamples.kt b/lifecycle/lifecycle-viewmodel-compose/samples/src/main/java/androidx/lifecycle/viewmodel/compose/samples/LifecycleViewModelSamples.kt
index 750d2ff..126cd46 100644
--- a/lifecycle/lifecycle-viewmodel-compose/samples/src/main/java/androidx/lifecycle/viewmodel/compose/samples/LifecycleViewModelSamples.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/samples/src/main/java/androidx/lifecycle/viewmodel/compose/samples/LifecycleViewModelSamples.kt
@@ -18,13 +18,13 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateListOf
 import androidx.compose.runtime.mutableStateMapOf
 import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.setValue
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.saveable.listSaver
+import androidx.compose.runtime.setValue
 import androidx.compose.runtime.toMutableStateList
 import androidx.compose.runtime.toMutableStateMap
 import androidx.core.os.bundleOf
diff --git a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInAppCompatActivityTest.kt b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInAppCompatActivityTest.kt
index 7681326..e5ee149 100644
--- a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInAppCompatActivityTest.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInAppCompatActivityTest.kt
@@ -23,14 +23,14 @@
 import androidx.lifecycle.LifecycleOwner
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInComponentActivityTest.kt b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInComponentActivityTest.kt
index 594a2e2..50f06f9 100644
--- a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInComponentActivityTest.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInComponentActivityTest.kt
@@ -24,14 +24,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.FlakyTest
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInFragmentTest.kt b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInFragmentTest.kt
index a6ba005..cb4e6a5 100644
--- a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInFragmentTest.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelInFragmentTest.kt
@@ -25,14 +25,14 @@
 import androidx.fragment.app.FragmentContainerView
 import androidx.lifecycle.ViewModel
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(Parameterized::class)
diff --git a/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaver.kt b/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaver.kt
index 8c70d69..9620449 100644
--- a/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaver.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaver.kt
@@ -21,9 +21,9 @@
 import androidx.compose.runtime.SnapshotMutationPolicy
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.saveable.autoSaver
 import androidx.compose.runtime.saveable.Saver
 import androidx.compose.runtime.saveable.SaverScope
+import androidx.compose.runtime.saveable.autoSaver
 import androidx.compose.runtime.setValue
 import androidx.compose.runtime.snapshots.SnapshotMutableState
 import androidx.core.os.bundleOf
diff --git a/lifecycle/lifecycle-viewmodel-ktx/build.gradle b/lifecycle/lifecycle-viewmodel-ktx/build.gradle
index efaa638..dfb7838 100644
--- a/lifecycle/lifecycle-viewmodel-ktx/build.gradle
+++ b/lifecycle/lifecycle-viewmodel-ktx/build.gradle
@@ -35,7 +35,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle ViewModel Kotlin Extensions"
+    name = "Lifecycle ViewModel Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Kotlin extensions for 'viewmodel' artifact"
diff --git a/lifecycle/lifecycle-viewmodel-ktx/src/main/java/androidx/lifecycle/ViewModel.kt b/lifecycle/lifecycle-viewmodel-ktx/src/main/java/androidx/lifecycle/ViewModel.kt
index 2078226..ffc77f9 100644
--- a/lifecycle/lifecycle-viewmodel-ktx/src/main/java/androidx/lifecycle/ViewModel.kt
+++ b/lifecycle/lifecycle-viewmodel-ktx/src/main/java/androidx/lifecycle/ViewModel.kt
@@ -16,12 +16,12 @@
 
 package androidx.lifecycle
 
+import java.io.Closeable
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.cancel
-import java.io.Closeable
-import kotlin.coroutines.CoroutineContext
 
 private const val JOB_KEY = "androidx.lifecycle.ViewModelCoroutineScope.JOB_KEY"
 
diff --git a/lifecycle/lifecycle-viewmodel-savedstate/build.gradle b/lifecycle/lifecycle-viewmodel-savedstate/build.gradle
index ec45470..c2144f0 100644
--- a/lifecycle/lifecycle-viewmodel-savedstate/build.gradle
+++ b/lifecycle/lifecycle-viewmodel-savedstate/build.gradle
@@ -51,7 +51,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle ViewModel with SavedState"
+    name = "Lifecycle ViewModel with SavedState"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Lifecycle ViewModel"
diff --git a/lifecycle/lifecycle-viewmodel/build.gradle b/lifecycle/lifecycle-viewmodel/build.gradle
index 125c988..4c2db52 100644
--- a/lifecycle/lifecycle-viewmodel/build.gradle
+++ b/lifecycle/lifecycle-viewmodel/build.gradle
@@ -48,7 +48,7 @@
 }
 
 androidx {
-    name = "Android Lifecycle ViewModel"
+    name = "Lifecycle ViewModel"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Lifecycle ViewModel"
diff --git a/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt b/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt
index ba62b11..7beaf03 100644
--- a/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt
+++ b/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt
@@ -22,9 +22,9 @@
 import androidx.annotation.RestrictTo
 import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.DEFAULT_KEY
 import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.defaultFactory
-import androidx.lifecycle.viewmodel.CreationExtras.Key
 import androidx.lifecycle.ViewModelProvider.NewInstanceFactory.Companion.VIEW_MODEL_KEY
 import androidx.lifecycle.viewmodel.CreationExtras
+import androidx.lifecycle.viewmodel.CreationExtras.Key
 import androidx.lifecycle.viewmodel.InitializerViewModelFactory
 import androidx.lifecycle.viewmodel.MutableCreationExtras
 import androidx.lifecycle.viewmodel.ViewModelInitializer
diff --git a/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt b/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
index 7de1624..9df77d7 100644
--- a/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/AndroidXIssueRegistry.kt
@@ -71,7 +71,8 @@
                 IgnoreClassLevelDetector.ISSUE,
                 ExperimentalPropertyAnnotationDetector.ISSUE,
                 BanRestrictToTestsScope.ISSUE,
-                UnstableAidlAnnotationDetector.ISSUE,
+                // AIDL check is temporarily disabled due to race conditions (b/280346978).
+                // UnstableAidlAnnotationDetector.ISSUE,
                 // MissingJvmDefaultWithCompatibilityDetector is intentionally left out of the
                 // registry, see comments on the class for more details.
                 BanVisibleForTestingParams.ISSUE,
diff --git a/lint-checks/src/main/java/androidx/build/lint/BanKeepAnnotation.kt b/lint-checks/src/main/java/androidx/build/lint/BanKeepAnnotation.kt
index 8bcfd3a..6c5d65d 100644
--- a/lint-checks/src/main/java/androidx/build/lint/BanKeepAnnotation.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/BanKeepAnnotation.kt
@@ -19,7 +19,6 @@
 package androidx.build.lint
 
 import com.android.tools.lint.client.api.UElementHandler
-
 import com.android.tools.lint.detector.api.Category
 import com.android.tools.lint.detector.api.Detector
 import com.android.tools.lint.detector.api.Implementation
diff --git a/lint-checks/src/main/java/androidx/build/lint/BanParcelableUsage.kt b/lint-checks/src/main/java/androidx/build/lint/BanParcelableUsage.kt
index ff4de6a..b2253c69 100644
--- a/lint-checks/src/main/java/androidx/build/lint/BanParcelableUsage.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/BanParcelableUsage.kt
@@ -27,9 +27,9 @@
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
 import com.intellij.psi.PsiModifier
+import java.util.Collections
 import org.jetbrains.uast.UAnonymousClass
 import org.jetbrains.uast.UClass
-import java.util.Collections
 
 const val PARCELABLE_INTERFACE_CANONICAL_NAME = "android.os.Parcelable"
 
diff --git a/lint-checks/src/main/java/androidx/build/lint/MetadataTagInsideApplicationTagDetector.kt b/lint-checks/src/main/java/androidx/build/lint/MetadataTagInsideApplicationTagDetector.kt
index 3a13a9f..9bef39f 100644
--- a/lint-checks/src/main/java/androidx/build/lint/MetadataTagInsideApplicationTagDetector.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/MetadataTagInsideApplicationTagDetector.kt
@@ -27,7 +27,6 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.XmlContext
 import com.android.xml.AndroidManifest.NODE_APPLICATION
-
 import org.w3c.dom.Element
 
 class MetadataTagInsideApplicationTagDetector : Detector(), Detector.XmlScanner {
diff --git a/lint-checks/src/main/java/androidx/build/lint/TargetApiAnnotationUsageDetector.kt b/lint-checks/src/main/java/androidx/build/lint/TargetApiAnnotationUsageDetector.kt
index e96d19d9..048054d 100644
--- a/lint-checks/src/main/java/androidx/build/lint/TargetApiAnnotationUsageDetector.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/TargetApiAnnotationUsageDetector.kt
@@ -19,7 +19,6 @@
 package androidx.build.lint
 
 import com.android.tools.lint.client.api.UElementHandler
-
 import com.android.tools.lint.detector.api.Category
 import com.android.tools.lint.detector.api.Detector
 import com.android.tools.lint.detector.api.Implementation
diff --git a/lint-checks/src/main/java/androidx/build/lint/TestSizeAnnotationEnforcer.kt b/lint-checks/src/main/java/androidx/build/lint/TestSizeAnnotationEnforcer.kt
index a6b34e6..0777c76 100644
--- a/lint-checks/src/main/java/androidx/build/lint/TestSizeAnnotationEnforcer.kt
+++ b/lint-checks/src/main/java/androidx/build/lint/TestSizeAnnotationEnforcer.kt
@@ -28,11 +28,11 @@
 import com.android.tools.lint.detector.api.Scope
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
+import java.util.Collections
+import java.util.EnumSet
 import org.jetbrains.uast.UClass
 import org.jetbrains.uast.UClassLiteralExpression
 import org.jetbrains.uast.UElement
-import java.util.Collections
-import java.util.EnumSet
 
 /**
  * Lint check to enforce that every device side test (tests in the androidTest dir) has correct
diff --git a/lint-checks/src/test/java/androidx/build/lint/ClassVerificationFailureDetectorTest.kt b/lint-checks/src/test/java/androidx/build/lint/ClassVerificationFailureDetectorTest.kt
index 706cd32..781c1fd5 100644
--- a/lint-checks/src/test/java/androidx/build/lint/ClassVerificationFailureDetectorTest.kt
+++ b/lint-checks/src/test/java/androidx/build/lint/ClassVerificationFailureDetectorTest.kt
@@ -19,8 +19,8 @@
 package androidx.build.lint
 
 import androidx.build.lint.Stubs.Companion.DoNotInline
-import androidx.build.lint.Stubs.Companion.RequiresApi
 import androidx.build.lint.Stubs.Companion.IntRange
+import androidx.build.lint.Stubs.Companion.RequiresApi
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
diff --git a/loader/loader-ktx/src/androidTest/java/androidx/loader/app/LoaderManagerTest.kt b/loader/loader-ktx/src/androidTest/java/androidx/loader/app/LoaderManagerTest.kt
index 809d8b8..e83c552 100644
--- a/loader/loader-ktx/src/androidTest/java/androidx/loader/app/LoaderManagerTest.kt
+++ b/loader/loader-ktx/src/androidTest/java/androidx/loader/app/LoaderManagerTest.kt
@@ -24,12 +24,12 @@
 import androidx.test.filters.LargeTest
 import androidx.test.platform.app.InstrumentationRegistry
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito.mock
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/loader/loader/build.gradle b/loader/loader/build.gradle
index e9ff426..5b46db6 100644
--- a/loader/loader/build.gradle
+++ b/loader/loader/build.gradle
@@ -23,7 +23,7 @@
 }
 
 androidx {
-    name = "Android Support Library loader"
+    name = "loader"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2011"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren\'t a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/media/media/build.gradle b/media/media/build.gradle
index 91a6177..783d543 100644
--- a/media/media/build.gradle
+++ b/media/media/build.gradle
@@ -51,7 +51,7 @@
 }
 
 androidx {
-    name = "Android Support Library media compat"
+    name = "Media"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.MEDIA
     inceptionYear = "2011"
diff --git a/media2/media2-common/build.gradle b/media2/media2-common/build.gradle
index 8c0570f..46c5577 100644
--- a/media2/media2-common/build.gradle
+++ b/media2/media2-common/build.gradle
@@ -62,7 +62,7 @@
 }
 
 androidx {
-    name = "AndroidX media2 common library"
+    name = "Media2 Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Media2 Common"
diff --git a/media2/media2-exoplayer/build.gradle b/media2/media2-exoplayer/build.gradle
index 291a8bc..c7873df 100644
--- a/media2/media2-exoplayer/build.gradle
+++ b/media2/media2-exoplayer/build.gradle
@@ -35,7 +35,7 @@
 }
 
 androidx {
-    name = "Media2 repackaged ExoPlayer dependency"
+    name = "Media2 ExoPlayer"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Repackaged ExoPlayer for 'media2' artifact"
diff --git a/media2/media2-player/build.gradle b/media2/media2-player/build.gradle
index c11da0f..ca8a752 100644
--- a/media2/media2-player/build.gradle
+++ b/media2/media2-player/build.gradle
@@ -49,7 +49,7 @@
 }
 
 androidx {
-    name = "AndroidX media2 player library"
+    name = "Media2 Player"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Media2 Player"
diff --git a/media2/media2-session/build.gradle b/media2/media2-session/build.gradle
index 8830b4f..66b502d 100644
--- a/media2/media2-session/build.gradle
+++ b/media2/media2-session/build.gradle
@@ -56,7 +56,7 @@
 }
 
 androidx {
-    name = "AndroidX media2 session library"
+    name = "Media2 Session"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Media2 Session"
diff --git a/media2/media2-widget/build.gradle b/media2/media2-widget/build.gradle
index d4452b3..ceee35f 100644
--- a/media2/media2-widget/build.gradle
+++ b/media2/media2-widget/build.gradle
@@ -56,7 +56,7 @@
 }
 
 androidx {
-    name = "AndroidX media2 widget library"
+    name = "Media2 Widget"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "AndroidX Media2 Widget"
diff --git a/mediarouter/mediarouter-testing/build.gradle b/mediarouter/mediarouter-testing/build.gradle
index 5d2fbf6..0e39af2 100644
--- a/mediarouter/mediarouter-testing/build.gradle
+++ b/mediarouter/mediarouter-testing/build.gradle
@@ -27,7 +27,7 @@
 }
 
 androidx {
-    name = "AndroidX MediaRouter Testing"
+    name = "MediaRouter Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2021"
     description = "Test utilities for AndroidX MediaRouter"
diff --git a/mediarouter/mediarouter/build.gradle b/mediarouter/mediarouter/build.gradle
index 2cb2454..46de044 100644
--- a/mediarouter/mediarouter/build.gradle
+++ b/mediarouter/mediarouter/build.gradle
@@ -57,7 +57,7 @@
 }
 
 androidx {
-    name = "Android MediaRouter Support Library"
+    name = "MediaRouter"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2013"
     description = "Android MediaRouter Support Library"
diff --git a/mediarouter/mediarouter/src/main/res/values-af/strings.xml b/mediarouter/mediarouter/src/main/res/values-af/strings.xml
index adcb678..d92200d 100644
--- a/mediarouter/mediarouter/src/main/res/values-af/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-af/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Voeg \'n toestel by"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Speel op \'n groep"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Geen inligting beskikbaar nie"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-am/strings.xml b/mediarouter/mediarouter/src/main/res/values-am/strings.xml
index a0ca4d46..b68b906 100644
--- a/mediarouter/mediarouter/src/main/res/values-am/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-am/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"መሣሪያ ያክሉ"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"በቡድን ላይ ያጫውቱ"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"ምንም መረጃ አይገኝም"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ar/strings.xml b/mediarouter/mediarouter/src/main/res/values-ar/strings.xml
index 49d12dc..360dd7b 100644
--- a/mediarouter/mediarouter/src/main/res/values-ar/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ar/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"إضافة جهاز"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"تشغيل على مجموعة من الأجهزة"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"لا تتوفر أي معلومات"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-as/strings.xml b/mediarouter/mediarouter/src/main/res/values-as/strings.xml
index 37a0be4..ed65579 100644
--- a/mediarouter/mediarouter/src/main/res/values-as/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-as/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"কোনো এটা ডিভাইচ যোগ কৰক"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"কোনো এটা গোটত প্লে’ কৰক"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"কোনো তথ্য নাই"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-az/strings.xml b/mediarouter/mediarouter/src/main/res/values-az/strings.xml
index 62cadf4..f178a7ee 100644
--- a/mediarouter/mediarouter/src/main/res/values-az/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-az/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Cihaz əlavə edin"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Qrupda oxudun"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Əlçatan məlumat yoxdur"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-b+sr+Latn/strings.xml b/mediarouter/mediarouter/src/main/res/values-b+sr+Latn/strings.xml
index 18bcd14..482284d 100644
--- a/mediarouter/mediarouter/src/main/res/values-b+sr+Latn/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-b+sr+Latn/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Dodajte uređaj"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Puštajte u grupi"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nema dostupnih informacija"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-be/strings.xml b/mediarouter/mediarouter/src/main/res/values-be/strings.xml
index 1801a8c..9edfde2 100644
--- a/mediarouter/mediarouter/src/main/res/values-be/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-be/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Дадаць прыладу"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Прайграць на групе прылад"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Інфармацыя адсутнічае"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-bg/strings.xml b/mediarouter/mediarouter/src/main/res/values-bg/strings.xml
index 1afa5c6..497a794 100644
--- a/mediarouter/mediarouter/src/main/res/values-bg/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-bg/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Добавяне на устройство"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Възпроизвеждане в група"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Няма налична информация"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-bn/strings.xml b/mediarouter/mediarouter/src/main/res/values-bn/strings.xml
index 3f4883fe..7966f96 100644
--- a/mediarouter/mediarouter/src/main/res/values-bn/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-bn/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"একটি ডিভাইস যোগ করুন"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"গ্রুপে প্লে করুন"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"কোনও তথ্য নেই"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-bs/strings.xml b/mediarouter/mediarouter/src/main/res/values-bs/strings.xml
index 458cce8..3182fd5 100644
--- a/mediarouter/mediarouter/src/main/res/values-bs/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-bs/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Dodajte uređaj"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reproduciranje u grupi"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nema dostupnih informacija"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ca/strings.xml b/mediarouter/mediarouter/src/main/res/values-ca/strings.xml
index 5b56248..d0641a2 100644
--- a/mediarouter/mediarouter/src/main/res/values-ca/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ca/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Afegeix un dispositiu"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reprodueix en un grup"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"No hi ha informació disponible"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-cs/strings.xml b/mediarouter/mediarouter/src/main/res/values-cs/strings.xml
index c8bb66e..1385da1 100644
--- a/mediarouter/mediarouter/src/main/res/values-cs/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-cs/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Přidání zařízení"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Přehrávání ve skupině"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nejsou k dispozici žádné informace"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-da/strings.xml b/mediarouter/mediarouter/src/main/res/values-da/strings.xml
index a11ce83..b385462 100644
--- a/mediarouter/mediarouter/src/main/res/values-da/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-da/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Tilføj en enhed"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Afspil på en gruppe"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Der er ingen tilgængelige oplysninger"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-de/strings.xml b/mediarouter/mediarouter/src/main/res/values-de/strings.xml
index 16e64fd..65cdfe6 100644
--- a/mediarouter/mediarouter/src/main/res/values-de/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-de/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Gerät hinzufügen"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Auf einem Gruppengerät abspielen"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Keine Informationen verfügbar"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-el/strings.xml b/mediarouter/mediarouter/src/main/res/values-el/strings.xml
index b44c8351..6d2abc3 100644
--- a/mediarouter/mediarouter/src/main/res/values-el/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-el/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Προσθήκη συσκευής"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Αναπαραγωγή σε κάποια ομάδα"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Δεν υπάρχουν διαθέσιμες πληροφορίες"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-en-rAU/strings.xml b/mediarouter/mediarouter/src/main/res/values-en-rAU/strings.xml
index 9de7198..0af3fbc 100644
--- a/mediarouter/mediarouter/src/main/res/values-en-rAU/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-en-rAU/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Add a device"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Play on a group"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"No info available"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-en-rCA/strings.xml b/mediarouter/mediarouter/src/main/res/values-en-rCA/strings.xml
index 9de7198..68cb38b 100644
--- a/mediarouter/mediarouter/src/main/res/values-en-rCA/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-en-rCA/strings.xml
@@ -41,4 +41,8 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Add a device"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Play on a group"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"No info available"</string>
+    <string name="mr_chooser_zero_routes_found_title" msgid="5213435473397442608">"No devices available"</string>
+    <string name="mr_chooser_zero_routes_description" msgid="5123320430013505927">"Unable to find devices, make sure your device and the Cast device are on the same Wi-Fi network and try again."</string>
+    <string name="mr_chooser_wifi_warning_description" msgid="337903053432238985">"Make sure your device and the Cast device are on the same Wi-Fi network."</string>
+    <string name="mr_chooser_done_button_label" msgid="7897288652928484627">"Done"</string>
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-en-rGB/strings.xml b/mediarouter/mediarouter/src/main/res/values-en-rGB/strings.xml
index 9de7198..0af3fbc 100644
--- a/mediarouter/mediarouter/src/main/res/values-en-rGB/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-en-rGB/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Add a device"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Play on a group"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"No info available"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-en-rIN/strings.xml b/mediarouter/mediarouter/src/main/res/values-en-rIN/strings.xml
index 9de7198..0af3fbc 100644
--- a/mediarouter/mediarouter/src/main/res/values-en-rIN/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-en-rIN/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Add a device"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Play on a group"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"No info available"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-en-rXC/strings.xml b/mediarouter/mediarouter/src/main/res/values-en-rXC/strings.xml
index 974ce7b..4d254b2 100644
--- a/mediarouter/mediarouter/src/main/res/values-en-rXC/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-en-rXC/strings.xml
@@ -41,4 +41,8 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‏‏‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎Add a device‎‏‎‎‏‎"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‎‎Play on a group‎‏‎‎‏‎"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‏‎‎‎‎‏‎‏‏‎No info available‎‏‎‎‏‎"</string>
+    <string name="mr_chooser_zero_routes_found_title" msgid="5213435473397442608">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‏‏‎‏‎‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎No devices available‎‏‎‎‏‎"</string>
+    <string name="mr_chooser_zero_routes_description" msgid="5123320430013505927">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‏‎Unable to find devices, make sure your device and the Cast device are on the same Wi-Fi network and try again.‎‏‎‎‏‎"</string>
+    <string name="mr_chooser_wifi_warning_description" msgid="337903053432238985">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‏‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‎‏‏‎‎‏‏‏‎‎‎‏‎‎‏‎Make sure your device and the Cast device are on the same Wi-Fi network.‎‏‎‎‏‎"</string>
+    <string name="mr_chooser_done_button_label" msgid="7897288652928484627">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‏‏‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‎‏‎‎‎‎‏‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‏‏‎Done‎‏‎‎‏‎"</string>
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-es-rUS/strings.xml b/mediarouter/mediarouter/src/main/res/values-es-rUS/strings.xml
index d55c633..1aad2e0 100644
--- a/mediarouter/mediarouter/src/main/res/values-es-rUS/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-es-rUS/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Agregar un dispositivo"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reproducir en un grupo"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Sin información disponible"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-es/strings.xml b/mediarouter/mediarouter/src/main/res/values-es/strings.xml
index 4986046..1352bcd 100644
--- a/mediarouter/mediarouter/src/main/res/values-es/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-es/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Añadir un dispositivo"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reproducir en un grupo"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"No hay información disponible"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-et/strings.xml b/mediarouter/mediarouter/src/main/res/values-et/strings.xml
index fe2d2c8..e616867 100644
--- a/mediarouter/mediarouter/src/main/res/values-et/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-et/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Seadme lisamine"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Grupis esitamine"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Teave puudub"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-eu/strings.xml b/mediarouter/mediarouter/src/main/res/values-eu/strings.xml
index d58c241..5a8f9ee 100644
--- a/mediarouter/mediarouter/src/main/res/values-eu/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-eu/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Gehitu gailu bat"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Erreproduzitu talde batean"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Ez dago informaziorik"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-fa/strings.xml b/mediarouter/mediarouter/src/main/res/values-fa/strings.xml
index cfeb662..a89fa74 100644
--- a/mediarouter/mediarouter/src/main/res/values-fa/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-fa/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"افزودن دستگاه"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"بازی در گروه"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"اطلاعاتی در دسترس نیست"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-fi/strings.xml b/mediarouter/mediarouter/src/main/res/values-fi/strings.xml
index 168a5b3..16ecc20 100644
--- a/mediarouter/mediarouter/src/main/res/values-fi/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-fi/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Lisää laite"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Toista ryhmässä"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Ei tietoja saatavilla"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-fr-rCA/strings.xml b/mediarouter/mediarouter/src/main/res/values-fr-rCA/strings.xml
index 28c763a9..738aae0 100644
--- a/mediarouter/mediarouter/src/main/res/values-fr-rCA/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-fr-rCA/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Ajouter un appareil"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Faire jouer sur un groupe d\'appareils"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Aucune donnée trouvée"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-fr/strings.xml b/mediarouter/mediarouter/src/main/res/values-fr/strings.xml
index cb9d9a0..6646d65 100644
--- a/mediarouter/mediarouter/src/main/res/values-fr/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-fr/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Ajouter un appareil"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Lire sur un groupe d\'appareils"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Aucune information disponible"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-gl/strings.xml b/mediarouter/mediarouter/src/main/res/values-gl/strings.xml
index e91bed7..6117f73 100644
--- a/mediarouter/mediarouter/src/main/res/values-gl/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-gl/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Engadir un dispositivo"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reproducir nun grupo"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Non hai información dispoñible"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-gu/strings.xml b/mediarouter/mediarouter/src/main/res/values-gu/strings.xml
index 0067904..5d12ade 100644
--- a/mediarouter/mediarouter/src/main/res/values-gu/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-gu/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"ડિવાઇસ ઉમેરો"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"જૂથમાં રમો"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"કોઈ માહિતી ઉપલબ્ધ નથી"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-hi/strings.xml b/mediarouter/mediarouter/src/main/res/values-hi/strings.xml
index b179584..edd8c71 100644
--- a/mediarouter/mediarouter/src/main/res/values-hi/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-hi/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"कोई डिवाइस जोड़ें"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"समूह में खेलें"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"कोई जानकारी मौजूद नहीं है"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-hr/strings.xml b/mediarouter/mediarouter/src/main/res/values-hr/strings.xml
index 1f63f98..a5d9a4a 100644
--- a/mediarouter/mediarouter/src/main/res/values-hr/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-hr/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Dodavanje uređaja"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reprodukcija u grupi"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Informacije nisu dostupne"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-hu/strings.xml b/mediarouter/mediarouter/src/main/res/values-hu/strings.xml
index 3b525c0..e71a892 100644
--- a/mediarouter/mediarouter/src/main/res/values-hu/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-hu/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Eszköz hozzáadása"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Lejátszás eszközcsoportban"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nincs információ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-hy/strings.xml b/mediarouter/mediarouter/src/main/res/values-hy/strings.xml
index 1800c00..609fc37 100644
--- a/mediarouter/mediarouter/src/main/res/values-hy/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-hy/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Ավելացրեք սարք"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Նվագարկեք սարքերի խմբում"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Հասանելի տեղեկություններ չկան"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-in/strings.xml b/mediarouter/mediarouter/src/main/res/values-in/strings.xml
index 3aa6597..7c89622 100644
--- a/mediarouter/mediarouter/src/main/res/values-in/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-in/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Tambahkan perangkat"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Putar di grup"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Info tidak tersedia"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-is/strings.xml b/mediarouter/mediarouter/src/main/res/values-is/strings.xml
index 64217f3..8e7c465 100644
--- a/mediarouter/mediarouter/src/main/res/values-is/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-is/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Bæta tæki við"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Spila í hóp"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Engar upplýsingar í boði"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-it/strings.xml b/mediarouter/mediarouter/src/main/res/values-it/strings.xml
index b86336a..61fab4b 100644
--- a/mediarouter/mediarouter/src/main/res/values-it/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-it/strings.xml
@@ -33,7 +33,7 @@
     <string name="mr_controller_expand_group" msgid="4521419834052044261">"Espandi"</string>
     <string name="mr_controller_collapse_group" msgid="2585048604188129749">"Comprimi"</string>
     <string name="mr_controller_album_art" msgid="3330502667672708728">"Copertina dell\'album"</string>
-    <string name="mr_controller_volume_slider" msgid="2955862765169128170">"Dispositivo di scorrimento del volume"</string>
+    <string name="mr_controller_volume_slider" msgid="2955862765169128170">"Cursore del volume"</string>
     <string name="mr_controller_no_media_selected" msgid="5495452265246139458">"Nessun contenuto multimediale selezionato"</string>
     <string name="mr_controller_no_info_available" msgid="855271725131981086">"Nessuna informazione disponibile"</string>
     <string name="mr_controller_casting_screen" msgid="9171231064758955152">"Trasmissione dello schermo attiva"</string>
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Aggiungi un dispositivo"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Riproduci su un gruppo"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nessuna informazione disponibile"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-iw/strings.xml b/mediarouter/mediarouter/src/main/res/values-iw/strings.xml
index eda57a80..57e4a8b 100644
--- a/mediarouter/mediarouter/src/main/res/values-iw/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-iw/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"הוספת מכשיר"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"הפעלה בקבוצה"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"אין מידע זמין"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ja/strings.xml b/mediarouter/mediarouter/src/main/res/values-ja/strings.xml
index 61a726c..2b81561 100644
--- a/mediarouter/mediarouter/src/main/res/values-ja/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ja/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"デバイスの追加"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"グループで再生"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"情報がありません"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ka/strings.xml b/mediarouter/mediarouter/src/main/res/values-ka/strings.xml
index 315aa64e..27f748c 100644
--- a/mediarouter/mediarouter/src/main/res/values-ka/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ka/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"მოწყობილობის დამატება"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"ჯგუფში დაკვრა"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"ინფორმაცია მიუწვდომელია"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-kk/strings.xml b/mediarouter/mediarouter/src/main/res/values-kk/strings.xml
index 7a7907a..8cc0255 100644
--- a/mediarouter/mediarouter/src/main/res/values-kk/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-kk/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Құрылғы енгізу"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Топта ойнату"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Ешқандай ақпарат жоқ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-km/strings.xml b/mediarouter/mediarouter/src/main/res/values-km/strings.xml
index 8b9d27f..5c7cc84 100644
--- a/mediarouter/mediarouter/src/main/res/values-km/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-km/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"បញ្ចូលឧបករណ៍"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"លេងនៅ​លើក្រុម"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"មិនមានព័ត៌មានទេ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-kn/strings.xml b/mediarouter/mediarouter/src/main/res/values-kn/strings.xml
index b6933ee..152904b 100644
--- a/mediarouter/mediarouter/src/main/res/values-kn/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-kn/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"ಸಾಧನವನ್ನು ಸೇರಿಸಿ"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"ಗುಂಪಿನಲ್ಲಿ ಪ್ಲೇ ಮಾಡಿ"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"ಯಾವುದೇ ಮಾಹಿತಿ ಲಭ್ಯವಿಲ್ಲ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ko/strings.xml b/mediarouter/mediarouter/src/main/res/values-ko/strings.xml
index f5fe7b9..a3a9163 100644
--- a/mediarouter/mediarouter/src/main/res/values-ko/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ko/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"기기 추가"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"그룹에서 재생"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"사용할 수 있는 정보 없음"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ky/strings.xml b/mediarouter/mediarouter/src/main/res/values-ky/strings.xml
index 33e6806..e51e3d0 100644
--- a/mediarouter/mediarouter/src/main/res/values-ky/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ky/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="mr_system_route_name" msgid="7449553026175453403">"Тутум"</string>
+    <string name="mr_system_route_name" msgid="7449553026175453403">"Система"</string>
     <string name="mr_user_route_category_name" msgid="4088331695424166162">"Түзмөктөр"</string>
     <string name="mr_button_content_description" msgid="2939063992730535343">"Тышкы экранга чыгаруу"</string>
     <string name="mr_cast_button_disconnected" msgid="8071109333469380363">"Тышкы экранга чыгаруу. Ажыратылды"</string>
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Түзмөк кошуу"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Топто ойнотуу"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Эч маалымат жок"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-lo/strings.xml b/mediarouter/mediarouter/src/main/res/values-lo/strings.xml
index 889ff75..9fad7af 100644
--- a/mediarouter/mediarouter/src/main/res/values-lo/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-lo/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"ເພີ່ມ​ອຸ​ປະ​ກອນ"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"ຫຼິ້ນຢູ່ກຸ່ມ"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"ບໍ່ມີຂໍ້ມູນ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-lt/strings.xml b/mediarouter/mediarouter/src/main/res/values-lt/strings.xml
index 91f6e5b..aca94fe 100644
--- a/mediarouter/mediarouter/src/main/res/values-lt/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-lt/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Įrenginio pridėjimas"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Leidimas grupėje"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nėra jokios informacijos"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-lv/strings.xml b/mediarouter/mediarouter/src/main/res/values-lv/strings.xml
index 468cdeb..c3bbe2c 100644
--- a/mediarouter/mediarouter/src/main/res/values-lv/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-lv/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Pievienot ierīci"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Atskaņošana grupā"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nav informācijas"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-mk/strings.xml b/mediarouter/mediarouter/src/main/res/values-mk/strings.xml
index 73e2bb9..aa622b2 100644
--- a/mediarouter/mediarouter/src/main/res/values-mk/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-mk/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Додајте уред"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Пуштете на група"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Нема достапни информации"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ml/strings.xml b/mediarouter/mediarouter/src/main/res/values-ml/strings.xml
index 9721e13..225af4b 100644
--- a/mediarouter/mediarouter/src/main/res/values-ml/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ml/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"ഒരു ഉപകരണം ചേർക്കുക"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"ഒരു ഗ്രൂപ്പിൽ പ്ലേ ചെയ്യുക"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"വിവരങ്ങളൊന്നും ലഭ്യമല്ല"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-mn/strings.xml b/mediarouter/mediarouter/src/main/res/values-mn/strings.xml
index 4d15aa8..17670e2 100644
--- a/mediarouter/mediarouter/src/main/res/values-mn/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-mn/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Төхөөрөмж нэмэх"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Бүлэгт тоглуулах"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Мэдээлэл алга"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-mr/strings.xml b/mediarouter/mediarouter/src/main/res/values-mr/strings.xml
index 895b020..69cae09 100644
--- a/mediarouter/mediarouter/src/main/res/values-mr/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-mr/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"डिव्हाइस जोडा"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"गटावर प्ले करा"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"कोणतीही माहिती उपलब्ध नाही"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ms/strings.xml b/mediarouter/mediarouter/src/main/res/values-ms/strings.xml
index bdbe265..a6a76ee 100644
--- a/mediarouter/mediarouter/src/main/res/values-ms/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ms/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Tambah peranti"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Mainkan pada kumpulan"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Maklumat tidak tersedia"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-my/strings.xml b/mediarouter/mediarouter/src/main/res/values-my/strings.xml
index 43a59ac..1f00f1a 100644
--- a/mediarouter/mediarouter/src/main/res/values-my/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-my/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"စက်ပစ္စည်း ထည့်ခြင်း"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"အုပ်စုလိုက် ဖွင့်ခြင်း"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"အချက်အလက် မရရှိနိုင်ပါ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-nb/strings.xml b/mediarouter/mediarouter/src/main/res/values-nb/strings.xml
index 311a537..43be34f 100644
--- a/mediarouter/mediarouter/src/main/res/values-nb/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-nb/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Legg til en enhet"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Spill i en gruppe"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Ingen informasjon er tilgjengelig"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ne/strings.xml b/mediarouter/mediarouter/src/main/res/values-ne/strings.xml
index 8f025d1..aef78a2 100644
--- a/mediarouter/mediarouter/src/main/res/values-ne/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ne/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"डिभाइस थप्नुहोस्"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"कुनै समूहमा प्ले गर्नुहोस्"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"कुनै पनि जानकारी उपलब्ध छैन"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-nl/strings.xml b/mediarouter/mediarouter/src/main/res/values-nl/strings.xml
index 4a3ad87..41e6dec 100644
--- a/mediarouter/mediarouter/src/main/res/values-nl/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-nl/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Een apparaat toevoegen"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Afspelen in een groep"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Geen informatie beschikbaar"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-or/strings.xml b/mediarouter/mediarouter/src/main/res/values-or/strings.xml
index f02c6fc..dcef71d 100644
--- a/mediarouter/mediarouter/src/main/res/values-or/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-or/strings.xml
@@ -28,7 +28,7 @@
     <string name="mr_controller_stop_casting" msgid="804210341192624074">"କାଷ୍ଟ କରିବା ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="mr_controller_close_description" msgid="5684434439232634509">"ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="mr_controller_play" msgid="1253345086594430054">"ଚଲାନ୍ତୁ"</string>
-    <string name="mr_controller_pause" msgid="747801650871398383">"ପଜ୍‍ କରନ୍ତୁ"</string>
+    <string name="mr_controller_pause" msgid="747801650871398383">"ବିରତ କରନ୍ତୁ"</string>
     <string name="mr_controller_stop" msgid="5497722768305745508">"ରୋକନ୍ତୁ"</string>
     <string name="mr_controller_expand_group" msgid="4521419834052044261">"ବିସ୍ତାର କରନ୍ତୁ"</string>
     <string name="mr_controller_collapse_group" msgid="2585048604188129749">"ସଂକୁଚିତ କରନ୍ତୁ"</string>
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"ଏକ ଡିଭାଇସ୍‍ ଯୋଗ କରନ୍ତୁ"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"ଏକ ଗ୍ରୁପ୍‌ରେ ପ୍ଲେ କରନ୍ତୁ"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"କୌଣସି ସୂଚନା ଉପଲବ୍ଧ ନାହିଁ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-pa/strings.xml b/mediarouter/mediarouter/src/main/res/values-pa/strings.xml
index e0c2c29..8396b1f 100644
--- a/mediarouter/mediarouter/src/main/res/values-pa/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-pa/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"ਕੋਈ ਡੀਵਾਈਸ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"ਕਿਸੇ ਗਰੁੱਪ ਵਿੱਚ ਖੇਡੋ"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"ਕੋਈ ਜਾਣਕਾਰੀ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-pl/strings.xml b/mediarouter/mediarouter/src/main/res/values-pl/strings.xml
index 1f552eb..fd06cce 100644
--- a/mediarouter/mediarouter/src/main/res/values-pl/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-pl/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Dodaj urządzenie"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Odtwórz w grupie"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Brak informacji"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-pt-rBR/strings.xml b/mediarouter/mediarouter/src/main/res/values-pt-rBR/strings.xml
index 20c5ae5..1c15e96 100644
--- a/mediarouter/mediarouter/src/main/res/values-pt-rBR/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-pt-rBR/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Adicionar um dispositivo"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reproduzir em um grupo"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nenhuma informação disponível"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-pt-rPT/strings.xml b/mediarouter/mediarouter/src/main/res/values-pt-rPT/strings.xml
index f9c5870..c4a9b98 100644
--- a/mediarouter/mediarouter/src/main/res/values-pt-rPT/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-pt-rPT/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Adicionar um dispositivo"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reproduzir num grupo"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nenhuma informação disponível"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-pt/strings.xml b/mediarouter/mediarouter/src/main/res/values-pt/strings.xml
index 20c5ae5..1c15e96 100644
--- a/mediarouter/mediarouter/src/main/res/values-pt/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-pt/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Adicionar um dispositivo"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Reproduzir em um grupo"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nenhuma informação disponível"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ro/strings.xml b/mediarouter/mediarouter/src/main/res/values-ro/strings.xml
index c8e5f3c..bf4841e 100644
--- a/mediarouter/mediarouter/src/main/res/values-ro/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ro/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Adaugă un dispozitiv"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Redă într-un grup"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nu sunt informații disponibile"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ru/strings.xml b/mediarouter/mediarouter/src/main/res/values-ru/strings.xml
index beca097..99c5462 100644
--- a/mediarouter/mediarouter/src/main/res/values-ru/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ru/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Добавление устройства"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Воспроизведение в группе"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Данных нет"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-si/strings.xml b/mediarouter/mediarouter/src/main/res/values-si/strings.xml
index e2e473a..d9054f7 100644
--- a/mediarouter/mediarouter/src/main/res/values-si/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-si/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"උපාංගයක් එක් කරන්න"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"සමූහයක ධාවනය කරන්න"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"ලබා ගත හැකි තොරතුරු නොමැත"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-sk/strings.xml b/mediarouter/mediarouter/src/main/res/values-sk/strings.xml
index 449e9a9..0283410 100644
--- a/mediarouter/mediarouter/src/main/res/values-sk/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-sk/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Pridanie zariadenia"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Prehrávanie v skupine"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nie sú k dispozícii žiadne informácie"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-sl/strings.xml b/mediarouter/mediarouter/src/main/res/values-sl/strings.xml
index 33a4f9e..5889dfb 100644
--- a/mediarouter/mediarouter/src/main/res/values-sl/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-sl/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Dodajanje naprave"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Predvajanje v skupini"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Ni podatkov"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-sq/strings.xml b/mediarouter/mediarouter/src/main/res/values-sq/strings.xml
index 3fa9667..8b7c925 100644
--- a/mediarouter/mediarouter/src/main/res/values-sq/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-sq/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Shto një pajisje"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Luaj në një grup"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Nuk jepet asnjë informacion"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-sr/strings.xml b/mediarouter/mediarouter/src/main/res/values-sr/strings.xml
index 6bd1e34..ad33c85 100644
--- a/mediarouter/mediarouter/src/main/res/values-sr/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-sr/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Додајте уређај"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Пуштајте у групи"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Нема доступних информација"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-sv/strings.xml b/mediarouter/mediarouter/src/main/res/values-sv/strings.xml
index de428a1..f1716ad 100644
--- a/mediarouter/mediarouter/src/main/res/values-sv/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-sv/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Lägga till en enhet"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Spela upp på en grupp enheter"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Det finns ingen tillgänglig information"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-sw/strings.xml b/mediarouter/mediarouter/src/main/res/values-sw/strings.xml
index db3915f..6c73e06 100644
--- a/mediarouter/mediarouter/src/main/res/values-sw/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-sw/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Ongeza kifaa"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Cheza kwenye kikundi"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Hakuna maelezo yaliyopatikana"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ta/strings.xml b/mediarouter/mediarouter/src/main/res/values-ta/strings.xml
index 5f0dcc3..61fdf59 100644
--- a/mediarouter/mediarouter/src/main/res/values-ta/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ta/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"சாதனத்தைச் சேர்த்தல்"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"குழுவில் இயக்கு"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"தகவல் எதுவுமில்லை"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-te/strings.xml b/mediarouter/mediarouter/src/main/res/values-te/strings.xml
index 81f0b97..e3a416b 100644
--- a/mediarouter/mediarouter/src/main/res/values-te/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-te/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"పరికరాన్ని జోడించండి"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"గ్రూప్‌లో ప్లే చేయండి"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"సమాచారం అందుబాటులో లేదు"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-th/strings.xml b/mediarouter/mediarouter/src/main/res/values-th/strings.xml
index 36971c5..6128c15 100644
--- a/mediarouter/mediarouter/src/main/res/values-th/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-th/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"เพิ่มอุปกรณ์"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"เล่นในกลุ่ม"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"ไม่มีข้อมูล"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-tl/strings.xml b/mediarouter/mediarouter/src/main/res/values-tl/strings.xml
index bbc61d1..09d27ab 100644
--- a/mediarouter/mediarouter/src/main/res/values-tl/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-tl/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Magdagdag ng device"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"I-play sa isang pangkat"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Walang available na impormasyon"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-tr/strings.xml b/mediarouter/mediarouter/src/main/res/values-tr/strings.xml
index 5d4b340..a2848f8 100644
--- a/mediarouter/mediarouter/src/main/res/values-tr/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-tr/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Cihaz ekleyin"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Bir grupta oynatın"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Bilgi yok"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-uk/strings.xml b/mediarouter/mediarouter/src/main/res/values-uk/strings.xml
index cd76c28..c52083d 100644
--- a/mediarouter/mediarouter/src/main/res/values-uk/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-uk/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Додати пристрій"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Увімкнути на групі пристроїв"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Немає інформації"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-ur/strings.xml b/mediarouter/mediarouter/src/main/res/values-ur/strings.xml
index 322a94a..4491aec 100644
--- a/mediarouter/mediarouter/src/main/res/values-ur/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-ur/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"کوئی آلہ شامل کریں"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"گروپ پر چلائیں"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"کوئی معلومات دستیاب نہیں"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-uz/strings.xml b/mediarouter/mediarouter/src/main/res/values-uz/strings.xml
index a2b411e..6bd6c65 100644
--- a/mediarouter/mediarouter/src/main/res/values-uz/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-uz/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Qurilma qo‘shish"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Guruhda ijro qilish"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Hech narsa topilmadi"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-vi/strings.xml b/mediarouter/mediarouter/src/main/res/values-vi/strings.xml
index 28b6e62..01c6a1c 100644
--- a/mediarouter/mediarouter/src/main/res/values-vi/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-vi/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Thêm thiết bị"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Phát trên nhóm"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Không có thông tin nào"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-zh-rCN/strings.xml b/mediarouter/mediarouter/src/main/res/values-zh-rCN/strings.xml
index bae9baf..912d9ea 100644
--- a/mediarouter/mediarouter/src/main/res/values-zh-rCN/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-zh-rCN/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"添加设备"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"在一组设备上播放"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"没有任何相关信息"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-zh-rHK/strings.xml b/mediarouter/mediarouter/src/main/res/values-zh-rHK/strings.xml
index c641c28..90d792c 100644
--- a/mediarouter/mediarouter/src/main/res/values-zh-rHK/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-zh-rHK/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"新增裝置"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"在群組裝置中播放"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"沒有資料可以提供"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-zh-rTW/strings.xml b/mediarouter/mediarouter/src/main/res/values-zh-rTW/strings.xml
index c7588a4..36e2645 100644
--- a/mediarouter/mediarouter/src/main/res/values-zh-rTW/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-zh-rTW/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"新增裝置"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"在群組上播放"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"沒有可用的資訊"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/mediarouter/mediarouter/src/main/res/values-zu/strings.xml b/mediarouter/mediarouter/src/main/res/values-zu/strings.xml
index 5335450..c8774f2 100644
--- a/mediarouter/mediarouter/src/main/res/values-zu/strings.xml
+++ b/mediarouter/mediarouter/src/main/res/values-zu/strings.xml
@@ -41,4 +41,12 @@
     <string name="mr_dialog_groupable_header" msgid="4307018456678388936">"Engeza idivayisi"</string>
     <string name="mr_dialog_transferable_header" msgid="6068257520605505468">"Dlala eqenjini"</string>
     <string name="mr_cast_dialog_title_view_placeholder" msgid="2175930138959078155">"Alukho ulwazi olutholakalayo"</string>
+    <!-- no translation found for mr_chooser_zero_routes_found_title (5213435473397442608) -->
+    <skip />
+    <!-- no translation found for mr_chooser_zero_routes_description (5123320430013505927) -->
+    <skip />
+    <!-- no translation found for mr_chooser_wifi_warning_description (337903053432238985) -->
+    <skip />
+    <!-- no translation found for mr_chooser_done_button_label (7897288652928484627) -->
+    <skip />
 </resources>
diff --git a/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankAggregatorActivity.kt b/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankAggregatorActivity.kt
index e293c37..d280f43 100644
--- a/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankAggregatorActivity.kt
+++ b/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankAggregatorActivity.kt
@@ -20,8 +20,8 @@
 import android.view.Menu
 import android.view.MenuItem
 import androidx.appcompat.app.AppCompatActivity
-import androidx.metrics.performance.PerformanceMetricsState
 import androidx.metrics.performance.FrameData
+import androidx.metrics.performance.PerformanceMetricsState
 import androidx.metrics.performance.janktest.databinding.ActivityMainBinding
 import androidx.navigation.findNavController
 import androidx.navigation.ui.AppBarConfiguration
diff --git a/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankLoggingActivity.kt b/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankLoggingActivity.kt
index e3c0087..08826f4 100644
--- a/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankLoggingActivity.kt
+++ b/metrics/integration-tests/janktest/src/main/java/androidx/metrics/performance/janktest/JankLoggingActivity.kt
@@ -20,9 +20,9 @@
 import android.view.Menu
 import android.view.MenuItem
 import androidx.appcompat.app.AppCompatActivity
-import androidx.metrics.performance.PerformanceMetricsState
 import androidx.metrics.performance.FrameData
 import androidx.metrics.performance.JankStats
+import androidx.metrics.performance.PerformanceMetricsState
 import androidx.metrics.performance.janktest.databinding.ActivityMainBinding
 import androidx.navigation.findNavController
 import androidx.navigation.ui.AppBarConfiguration
diff --git a/metrics/metrics-performance/build.gradle b/metrics/metrics-performance/build.gradle
index 94fcacb..8c474b0 100644
--- a/metrics/metrics-performance/build.gradle
+++ b/metrics/metrics-performance/build.gradle
@@ -59,7 +59,7 @@
 
 androidx {
 
-    name = "AndroidX Metrics"
+    name = "Metrics"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2021"
     description = "Library for tracking and reporting various runtime metrics for applications"
diff --git a/metrics/metrics-performance/src/androidTest/java/androidx/metrics/performance/test/JankStatsTest.kt b/metrics/metrics-performance/src/androidTest/java/androidx/metrics/performance/test/JankStatsTest.kt
index 5bb3c0d..a933cfc 100644
--- a/metrics/metrics-performance/src/androidTest/java/androidx/metrics/performance/test/JankStatsTest.kt
+++ b/metrics/metrics-performance/src/androidTest/java/androidx/metrics/performance/test/JankStatsTest.kt
@@ -35,8 +35,8 @@
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import kotlin.math.max
-import org.hamcrest.Matchers
 import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertNotEquals
diff --git a/navigation/CHANGELOG.md b/navigation/CHANGELOG.md
index e80842d..35936ff 100644
--- a/navigation/CHANGELOG.md
+++ b/navigation/CHANGELOG.md
@@ -16,6 +16,18 @@
 
 ## Unreleased
 
+### New Features
+
+- NavHost and NavController now supports navigating in compose with Animations.
+
+### Bug Fixes
+
+- Fixed an issue with Navigation in Fragments where navigating
+with popUpTo and popping a fragment off the back stack without
+recreating its view would cause system back to stop working.
+
+## Version 2.6.0-rc01
+
 ### Bug Fixes
 
 - Updated the error message and exception type when navigating on a NavController with no
diff --git a/navigation/navigation-common-ktx/build.gradle b/navigation/navigation-common-ktx/build.gradle
index 03904c3..b2f94223 100644
--- a/navigation/navigation-common-ktx/build.gradle
+++ b/navigation/navigation-common-ktx/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android Navigation Common Kotlin Extensions"
+    name = "Navigation Common Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Navigation-Common-Ktx"
diff --git a/navigation/navigation-common/build.gradle b/navigation/navigation-common/build.gradle
index 954e0da..91a97ad3 100644
--- a/navigation/navigation-common/build.gradle
+++ b/navigation/navigation-common/build.gradle
@@ -67,7 +67,7 @@
 }
 
 androidx {
-    name = "Android Navigation Common"
+    name = "Navigation Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Navigation-Common"
diff --git a/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDeepLinkTest.kt b/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDeepLinkTest.kt
index a4da5ed..c893818 100644
--- a/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDeepLinkTest.kt
+++ b/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDeepLinkTest.kt
@@ -24,9 +24,9 @@
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.io.UnsupportedEncodingException
 import kotlin.test.assertFailsWith
 import org.junit.Test
-import java.io.UnsupportedEncodingException
 
 @SmallTest
 class NavDeepLinkTest {
diff --git a/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavTypeTest.kt b/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavTypeTest.kt
index 91be8b2..457e530 100644
--- a/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavTypeTest.kt
+++ b/navigation/navigation-common/src/androidTest/java/androidx/navigation/NavTypeTest.kt
@@ -23,8 +23,8 @@
 import androidx.navigation.common.test.R
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
 import java.io.Serializable
+import org.junit.Test
 
 @SmallTest
 class NavTypeTest {
diff --git a/navigation/navigation-common/src/main/java/androidx/navigation/NavigatorState.kt b/navigation/navigation-common/src/main/java/androidx/navigation/NavigatorState.kt
index 5577ac2..9cbe30e 100644
--- a/navigation/navigation-common/src/main/java/androidx/navigation/NavigatorState.kt
+++ b/navigation/navigation-common/src/main/java/androidx/navigation/NavigatorState.kt
@@ -20,11 +20,11 @@
 import androidx.annotation.CallSuper
 import androidx.annotation.RestrictTo
 import androidx.lifecycle.Lifecycle
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.concurrent.withLock
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.asStateFlow
-import java.util.concurrent.locks.ReentrantLock
-import kotlin.concurrent.withLock
 
 /**
  * The NavigatorState encapsulates the state shared between the [Navigator] and the
diff --git a/navigation/navigation-common/src/test/java/androidx/navigation/NavDestinationTest.kt b/navigation/navigation-common/src/test/java/androidx/navigation/NavDestinationTest.kt
index 97ceb0f..c422999 100644
--- a/navigation/navigation-common/src/test/java/androidx/navigation/NavDestinationTest.kt
+++ b/navigation/navigation-common/src/test/java/androidx/navigation/NavDestinationTest.kt
@@ -24,8 +24,8 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
+import org.mockito.Mockito.`when`
 
 @RunWith(JUnit4::class)
 class NavDestinationTest {
diff --git a/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/ComposableDestinationInComposeScopeDetector.kt b/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/ComposableDestinationInComposeScopeDetector.kt
index 5bba39e..0978c5b 100644
--- a/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/ComposableDestinationInComposeScopeDetector.kt
+++ b/navigation/navigation-compose-lint/src/main/java/androidx/navigation/compose/lint/ComposableDestinationInComposeScopeDetector.kt
@@ -31,8 +31,8 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
-import org.jetbrains.uast.UCallExpression
 import java.util.EnumSet
+import org.jetbrains.uast.UCallExpression
 
 /**
  * [Detector] that checks `composable` calls to make sure that they are not called inside a
diff --git a/navigation/navigation-compose/api/current.txt b/navigation/navigation-compose/api/current.txt
index 73c5c5d..2343a908 100644
--- a/navigation/navigation-compose/api/current.txt
+++ b/navigation/navigation-compose/api/current.txt
@@ -10,7 +10,8 @@
   }
 
   @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
-    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor @Deprecated public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
   }
 
   public final class DialogHostKt {
@@ -31,9 +32,11 @@
   }
 
   public final class NavGraphBuilderKt {
-    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<? extends androidx.navigation.NamedNavArgument> arguments, optional java.util.List<? extends androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,? extends kotlin.Unit> content);
     method public static void dialog(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
-    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<? extends androidx.navigation.NamedNavArgument> arguments, optional java.util.List<? extends androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,? extends kotlin.Unit> builder);
   }
 
   public final class NavHostControllerKt {
@@ -42,8 +45,10 @@
   }
 
   public final class NavHostKt {
-    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
-    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,? extends kotlin.Unit> builder);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
   }
 
 }
diff --git a/navigation/navigation-compose/api/public_plus_experimental_current.txt b/navigation/navigation-compose/api/public_plus_experimental_current.txt
index 73c5c5d..2343a908 100644
--- a/navigation/navigation-compose/api/public_plus_experimental_current.txt
+++ b/navigation/navigation-compose/api/public_plus_experimental_current.txt
@@ -10,7 +10,8 @@
   }
 
   @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
-    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor @Deprecated public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
   }
 
   public final class DialogHostKt {
@@ -31,9 +32,11 @@
   }
 
   public final class NavGraphBuilderKt {
-    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<? extends androidx.navigation.NamedNavArgument> arguments, optional java.util.List<? extends androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,? extends kotlin.Unit> content);
     method public static void dialog(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
-    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<? extends androidx.navigation.NamedNavArgument> arguments, optional java.util.List<? extends androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,? extends kotlin.Unit> builder);
   }
 
   public final class NavHostControllerKt {
@@ -42,8 +45,10 @@
   }
 
   public final class NavHostKt {
-    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
-    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,? extends kotlin.Unit> builder);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
   }
 
 }
diff --git a/navigation/navigation-compose/api/restricted_current.txt b/navigation/navigation-compose/api/restricted_current.txt
index 73c5c5d..2343a908 100644
--- a/navigation/navigation-compose/api/restricted_current.txt
+++ b/navigation/navigation-compose/api/restricted_current.txt
@@ -10,7 +10,8 @@
   }
 
   @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
-    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor @Deprecated public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
   }
 
   public final class DialogHostKt {
@@ -31,9 +32,11 @@
   }
 
   public final class NavGraphBuilderKt {
-    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<? extends androidx.navigation.NamedNavArgument> arguments, optional java.util.List<? extends androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,? extends kotlin.Unit> content);
     method public static void dialog(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
-    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<? extends androidx.navigation.NamedNavArgument> arguments, optional java.util.List<? extends androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,? extends kotlin.Unit> builder);
   }
 
   public final class NavHostControllerKt {
@@ -42,8 +45,10 @@
   }
 
   public final class NavHostKt {
-    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
-    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,? extends kotlin.Unit> builder);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
   }
 
 }
diff --git a/navigation/navigation-compose/build.gradle b/navigation/navigation-compose/build.gradle
index 09a4d08..1b0b02e 100644
--- a/navigation/navigation-compose/build.gradle
+++ b/navigation/navigation-compose/build.gradle
@@ -27,12 +27,12 @@
 dependencies {
 
     implementation(libs.kotlinStdlib)
-    implementation("androidx.compose.foundation:foundation-layout:1.0.1")
+    implementation(projectOrArtifact(":compose:foundation:foundation-layout"))
     api("androidx.activity:activity-compose:1.7.0")
-    api("androidx.compose.animation:animation:1.0.1")
-    api("androidx.compose.runtime:runtime:1.0.1")
-    api("androidx.compose.runtime:runtime-saveable:1.0.1")
-    api("androidx.compose.ui:ui:1.0.1")
+    api(projectOrArtifact(":compose:animation:animation"))
+    api(projectOrArtifact(":compose:runtime:runtime"))
+    api(projectOrArtifact(":compose:runtime:runtime-saveable"))
+    api(projectOrArtifact(":compose:ui:ui"))
     api("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
     api(projectOrArtifact(":navigation:navigation-runtime-ktx"))
 
diff --git a/navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BasicNavDemo.kt b/navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BasicNavDemo.kt
index aef7393..105717b 100644
--- a/navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BasicNavDemo.kt
+++ b/navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BasicNavDemo.kt
@@ -16,8 +16,8 @@
 
 package androidx.navigation.compose.demos
 
-import androidx.navigation.compose.samples.BasicNav
 import androidx.compose.runtime.Composable
+import androidx.navigation.compose.samples.BasicNav
 
 @Composable
 fun BasicNavDemo() {
diff --git a/navigation/navigation-compose/samples/build.gradle b/navigation/navigation-compose/samples/build.gradle
index b71e29c..b229762 100644
--- a/navigation/navigation-compose/samples/build.gradle
+++ b/navigation/navigation-compose/samples/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "AndroidX Compose UI Navigation Integration Samples"
+    name = "Compose UI Navigation Integration Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2020"
     description = "Samples for Compose integration with Navigation"
diff --git a/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavGraphBuilderTest.kt b/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavGraphBuilderTest.kt
index 3634fee..619b7db 100644
--- a/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavGraphBuilderTest.kt
+++ b/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavGraphBuilderTest.kt
@@ -20,8 +20,8 @@
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.core.net.toUri
-import androidx.navigation.contains
 import androidx.navigation.NavDeepLinkRequest
+import androidx.navigation.contains
 import androidx.navigation.navArgument
 import androidx.navigation.navDeepLink
 import androidx.navigation.navigation
diff --git a/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostControllerTest.kt b/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostControllerTest.kt
index f51b862..e1418cf 100644
--- a/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostControllerTest.kt
+++ b/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostControllerTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.navigation.compose
 
+import androidx.compose.foundation.text.BasicText
 import androidx.compose.runtime.State
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
@@ -23,6 +24,7 @@
 import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavController
 import androidx.navigation.NavHostController
+import androidx.navigation.NoOpNavigator
 import androidx.navigation.createGraph
 import androidx.navigation.get
 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -42,6 +44,65 @@
     val composeTestRule = createComposeRule()
 
     @Test
+    fun testRememberNavController() {
+        lateinit var navController: NavHostController
+
+        composeTestRule.setContent {
+            navController = rememberNavController()
+            // get state to trigger recompose on navigate
+            navController.currentBackStackEntryAsState().value
+            NavHost(navController, startDestination = "first") {
+                composable("first") { BasicText("first") }
+                composable("second") { BasicText("second") }
+            }
+        }
+
+        val navigator = composeTestRule.runOnIdle {
+            navController.navigatorProvider[ComposeNavigator::class]
+        }
+
+        // trigger recompose
+        composeTestRule.runOnIdle {
+            navController.navigate("second")
+        }
+
+        composeTestRule.runOnIdle {
+            assertThat(navController.navigatorProvider[ComposeNavigator::class])
+                .isEqualTo(navigator)
+        }
+    }
+
+    @Test
+    fun testRememberNavControllerAddsCustomNavigator() {
+        lateinit var navController: NavHostController
+
+        composeTestRule.setContent {
+            val customNavigator = remember { NoOpNavigator() }
+            navController = rememberNavController(customNavigator)
+            // get state to trigger recompose on navigate
+            navController.currentBackStackEntryAsState().value
+            NavHost(navController, startDestination = "first") {
+                composable("first") { BasicText("first") }
+                composable("second") { BasicText("second") }
+            }
+        }
+
+        val navigator = composeTestRule.runOnIdle {
+            navController.navigatorProvider[NoOpNavigator::class]
+        }
+
+        // trigger recompose
+        composeTestRule.runOnIdle {
+            navController.navigate("second")
+        }
+
+        composeTestRule.runOnIdle {
+            assertThat(navController.navigatorProvider[NoOpNavigator::class])
+                .isEqualTo(navigator)
+        }
+    }
+
+    @Test
     fun testCurrentBackStackEntrySetGraph() {
         var currentBackStackEntry: State<NavBackStackEntry?> = mutableStateOf(null)
         composeTestRule.setContent {
diff --git a/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt b/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt
index f9f8d4a..57ffee0 100644
--- a/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt
+++ b/navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt
@@ -827,7 +827,7 @@
     }
 
     @Test
-    fun testNavHostCrossFade() {
+    fun testNavHostAnimations() {
         lateinit var navController: NavHostController
 
         composeTestRule.mainClock.autoAdvance = false
@@ -860,7 +860,7 @@
         assertThat(navController.currentBackStackEntry?.lifecycle?.currentState)
             .isEqualTo(Lifecycle.State.STARTED)
 
-        // advance half way between the crossfade
+        // advance half way between animations
         composeTestRule.mainClock.advanceTimeBy(DefaultDurationMillis.toLong() / 2)
 
         assertThat(firstEntry?.lifecycle?.currentState)
@@ -900,7 +900,7 @@
         assertThat(secondEntry?.lifecycle?.currentState)
             .isEqualTo(Lifecycle.State.CREATED)
 
-        // advance half way between the crossfade
+        // advance half way between animations
         composeTestRule.mainClock.advanceTimeBy(DefaultDurationMillis.toLong() / 2)
 
         assertThat(navController.currentBackStackEntry?.lifecycle?.currentState)
@@ -922,7 +922,7 @@
     }
 
     @Test
-    fun testNavHostCrossFadeDeeplink() {
+    fun testNavHostDeeplink() {
         lateinit var navController: NavHostController
 
         composeTestRule.mainClock.autoAdvance = false
@@ -961,7 +961,7 @@
     }
 
     @Test
-    fun testStateSavedByCrossFade() {
+    fun testStateSaved() {
         lateinit var navController: NavHostController
         lateinit var text: MutableState<String>
 
@@ -1109,6 +1109,25 @@
     }
 
     @Test
+    fun testNestedNavHostNullLambda() {
+        lateinit var navController: NavHostController
+
+        composeTestRule.setContent {
+            navController = rememberNavController()
+            NavHost(navController, startDestination = first) {
+                composable(first) { BasicText(first) }
+                navigation(second, "subGraph", enterTransition = { null }) {
+                    composable(second) { BasicText(second) }
+                }
+            }
+        }
+
+        composeTestRule.runOnIdle {
+            navController.navigate(second)
+        }
+    }
+
+    @Test
     fun testNestedNavHostOnBackPressed() {
         var innerLifecycleOwner = TestLifecycleOwner(Lifecycle.State.RESUMED)
         val onBackPressedDispatcher = OnBackPressedDispatcher()
diff --git a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt
index 34f9dcf..9603330 100644
--- a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt
+++ b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt
@@ -16,7 +16,9 @@
 
 package androidx.navigation.compose
 
+import androidx.compose.animation.AnimatedContentScope
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.mutableStateOf
 import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavDestination
 import androidx.navigation.NavOptions
@@ -41,6 +43,8 @@
      */
     public val backStack get() = state.backStack
 
+    internal val isPop = mutableStateOf(false)
+
     override fun navigate(
         entries: List<NavBackStackEntry>,
         navOptions: NavOptions?,
@@ -49,6 +53,7 @@
         entries.forEach { entry ->
             state.pushWithTransition(entry)
         }
+        isPop.value = false
     }
 
     override fun createDestination(): Destination {
@@ -57,6 +62,7 @@
 
     override fun popBackStack(popUpTo: NavBackStackEntry, savedState: Boolean) {
         state.popWithTransition(popUpTo, savedState)
+        isPop.value = true
     }
 
     /**
@@ -79,8 +85,19 @@
     @NavDestination.ClassType(Composable::class)
     public class Destination(
         navigator: ComposeNavigator,
-        internal val content: @Composable (NavBackStackEntry) -> Unit
-    ) : NavDestination(navigator)
+        internal val content:
+            @Composable AnimatedContentScope.(@JvmSuppressWildcards NavBackStackEntry) -> Unit
+    ) : NavDestination(navigator) {
+
+        @Deprecated(
+            message = "Deprecated in favor of Destination that supports AnimatedContent",
+            level = DeprecationLevel.HIDDEN,
+        )
+        constructor(
+            navigator: ComposeNavigator,
+            content: @Composable (NavBackStackEntry) -> @JvmSuppressWildcards Unit
+        ) : this(navigator, content = { entry -> content(entry) })
+    }
 
     internal companion object {
         internal const val NAME = "composable"
diff --git a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavGraphBuilder.kt b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavGraphBuilder.kt
index 4674b26..52e53bf 100644
--- a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavGraphBuilder.kt
+++ b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavGraphBuilder.kt
@@ -16,11 +16,16 @@
 
 package androidx.navigation.compose
 
+import androidx.compose.animation.AnimatedContentScope
+import androidx.compose.animation.AnimatedContentTransitionScope
+import androidx.compose.animation.EnterTransition
+import androidx.compose.animation.ExitTransition
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.window.DialogProperties
 import androidx.navigation.NamedNavArgument
 import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavDeepLink
+import androidx.navigation.NavGraph
 import androidx.navigation.NavGraphBuilder
 import androidx.navigation.get
 
@@ -32,6 +37,10 @@
  * @param deepLinks list of deep links to associate with the destinations
  * @param content composable for the destination
  */
+@Deprecated(
+    message = "Deprecated in favor of composable builder that supports AnimatedContent",
+    level = DeprecationLevel.HIDDEN
+)
 public fun NavGraphBuilder.composable(
     route: String,
     arguments: List<NamedNavArgument> = emptyList(),
@@ -39,7 +48,10 @@
     content: @Composable (NavBackStackEntry) -> Unit
 ) {
     addDestination(
-        ComposeNavigator.Destination(provider[ComposeNavigator::class], content).apply {
+        ComposeNavigator.Destination(provider[ComposeNavigator::class]) {
+                entry ->
+            content(entry)
+        }.apply {
             this.route = route
             arguments.forEach { (argumentName, argument) ->
                 addArgument(argumentName, argument)
@@ -52,6 +64,54 @@
 }
 
 /**
+ * Add the [Composable] to the [NavGraphBuilder]
+ *
+ * @param route route for the destination
+ * @param arguments list of arguments to associate with destination
+ * @param deepLinks list of deep links to associate with the destinations
+ * @param enterTransition callback to determine the destination's enter transition
+ * @param exitTransition callback to determine the destination's exit transition
+ * @param popEnterTransition callback to determine the destination's popEnter transition
+ * @param popExitTransition callback to determine the destination's popExit transition
+ * @param content composable for the destination
+ */
+public fun NavGraphBuilder.composable(
+    route: String,
+    arguments: List<NamedNavArgument> = emptyList(),
+    deepLinks: List<NavDeepLink> = emptyList(),
+    enterTransition: (@JvmSuppressWildcards
+        AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?)? = null,
+    exitTransition: (@JvmSuppressWildcards
+        AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?)? = null,
+    popEnterTransition: (@JvmSuppressWildcards
+        AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?)? =
+            enterTransition,
+    popExitTransition: (@JvmSuppressWildcards
+        AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?)? =
+            exitTransition,
+    content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit
+) {
+    addDestination(
+        ComposeNavigator.Destination(
+            provider[ComposeNavigator::class],
+            content
+        ).apply {
+            this.route = route
+            arguments.forEach { (argumentName, argument) ->
+                addArgument(argumentName, argument)
+            }
+            deepLinks.forEach { deepLink ->
+                addDeepLink(deepLink)
+            }
+            enterTransition?.let { enterTransitions[route] = enterTransition }
+            exitTransition?.let { exitTransitions[route] = exitTransition }
+            popEnterTransition?.let { popEnterTransitions[route] = popEnterTransition }
+            popExitTransition?.let { popExitTransitions[route] = popExitTransition }
+        }
+    )
+}
+
+/**
  * Construct a nested [NavGraph]
  *
  * @sample androidx.navigation.compose.samples.NestedNavInGraphWithArgs
@@ -62,6 +122,10 @@
  * @param deepLinks list of deep links to associate with the destinations
  * @param builder the builder used to construct the graph
  */
+@Deprecated(
+    message = "Deprecated in favor of navigation builder that supports AnimatedContent",
+    level = DeprecationLevel.HIDDEN
+)
 public fun NavGraphBuilder.navigation(
     startDestination: String,
     route: String,
@@ -82,6 +146,55 @@
 }
 
 /**
+ * Construct a nested [NavGraph]
+ *
+ * @param startDestination the starting destination's route for this NavGraph
+ * @param route the destination's unique route
+ * @param arguments list of arguments to associate with destination
+ * @param deepLinks list of deep links to associate with the destinations
+ * @param enterTransition callback to define enter transitions for destination in this NavGraph
+ * @param exitTransition callback to define exit transitions for destination in this NavGraph
+ * @param popEnterTransition callback to define pop enter transitions for destination in this
+ * NavGraph
+ * @param popExitTransition callback to define pop exit transitions for destination in this NavGraph
+ * @param builder the builder used to construct the graph
+ *
+ * @return the newly constructed nested NavGraph
+ */
+public fun NavGraphBuilder.navigation(
+    startDestination: String,
+    route: String,
+    arguments: List<NamedNavArgument> = emptyList(),
+    deepLinks: List<NavDeepLink> = emptyList(),
+    enterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?)? =
+        null,
+    exitTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?)? =
+        null,
+    popEnterTransition: (
+    AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?
+    )? = enterTransition,
+    popExitTransition: (
+    AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?
+    )? = exitTransition,
+    builder: NavGraphBuilder.() -> Unit
+) {
+    addDestination(
+        NavGraphBuilder(provider, startDestination, route).apply(builder).build().apply {
+            arguments.forEach { (argumentName, argument) ->
+                addArgument(argumentName, argument)
+            }
+            deepLinks.forEach { deepLink ->
+                addDeepLink(deepLink)
+            }
+            enterTransition?.let { enterTransitions[route] = enterTransition }
+            exitTransition?.let { exitTransitions[route] = exitTransition }
+            popEnterTransition?.let { popEnterTransitions[route] = popEnterTransition }
+            popExitTransition?.let { popExitTransitions[route] = popExitTransition }
+        }
+    )
+}
+
+/**
  * Add the [Composable] to the [NavGraphBuilder] that will be hosted within a
  * [androidx.compose.ui.window.Dialog]. This is suitable only when this dialog represents
  * a separate screen in your app that needs its own lifecycle and saved state, independent
diff --git a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavHost.kt b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavHost.kt
index bcd0f6a..210dd46 100644
--- a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavHost.kt
+++ b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavHost.kt
@@ -16,22 +16,32 @@
 
 package androidx.navigation.compose
 
+import android.annotation.SuppressLint
 import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
-import androidx.compose.animation.Crossfade
+import androidx.compose.animation.AnimatedContent
+import androidx.compose.animation.AnimatedContentTransitionScope
+import androidx.compose.animation.ContentTransform
+import androidx.compose.animation.EnterTransition
+import androidx.compose.animation.ExitTransition
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.core.updateTransition
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
+import androidx.compose.animation.togetherWith
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.saveable.rememberSaveableStateHolder
-import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalInspectionMode
 import androidx.compose.ui.platform.LocalLifecycleOwner
 import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
 import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavDestination
+import androidx.navigation.NavDestination.Companion.hierarchy
 import androidx.navigation.NavGraph
 import androidx.navigation.NavGraphBuilder
 import androidx.navigation.NavHostController
@@ -57,6 +67,10 @@
  * @param route the route for the graph
  * @param builder the builder used to construct the graph
  */
+@Deprecated(
+    message = "Deprecated in favor of NavHost that supports AnimatedContent",
+    level = DeprecationLevel.HIDDEN
+)
 @Composable
 public fun NavHost(
     navController: NavHostController,
@@ -80,6 +94,57 @@
  * Once this is called, any Composable within the given [NavGraphBuilder] can be navigated to from
  * the provided [navController].
  *
+ * The builder passed into this method is [remember]ed. This means that for this NavHost, the
+ * contents of the builder cannot be changed.
+ *
+ * @param navController the navController for this host
+ * @param startDestination the route for the start destination
+ * @param modifier The modifier to be applied to the layout.
+ * @param contentAlignment The [Alignment] of the [AnimatedContent]
+ * @param route the route for the graph
+ * @param enterTransition callback to define enter transitions for destination in this host
+ * @param exitTransition callback to define exit transitions for destination in this host
+ * @param popEnterTransition callback to define popEnter transitions for destination in this host
+ * @param popExitTransition callback to define popExit transitions for destination in this host
+ * @param builder the builder used to construct the graph
+ */
+@Composable
+public fun NavHost(
+    navController: NavHostController,
+    startDestination: String,
+    modifier: Modifier = Modifier,
+    contentAlignment: Alignment = Alignment.Center,
+    route: String? = null,
+    enterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition) =
+        { fadeIn(animationSpec = tween(700)) },
+    exitTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition) =
+        { fadeOut(animationSpec = tween(700)) },
+    popEnterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition) =
+        enterTransition,
+    popExitTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition) =
+        exitTransition,
+    builder: NavGraphBuilder.() -> Unit
+) {
+    NavHost(
+        navController,
+        remember(route, startDestination, builder) {
+            navController.createGraph(startDestination, route, builder)
+        },
+        modifier,
+        contentAlignment,
+        enterTransition,
+        exitTransition,
+        popEnterTransition,
+        popExitTransition
+    )
+}
+
+/**
+ * Provides in place in the Compose hierarchy for self contained navigation to occur.
+ *
+ * Once this is called, any Composable within the given [NavGraphBuilder] can be navigated to from
+ * the provided [navController].
+ *
  * The graph passed into this method is [remember]ed. This means that for this NavHost, the graph
  * cannot be changed.
  *
@@ -87,12 +152,49 @@
  * @param graph the graph for this host
  * @param modifier The modifier to be applied to the layout.
  */
+@Deprecated(
+    message = "Deprecated in favor of NavHost that supports AnimatedContent",
+    level = DeprecationLevel.HIDDEN
+)
 @Composable
 public fun NavHost(
     navController: NavHostController,
     graph: NavGraph,
     modifier: Modifier = Modifier
+) = NavHost(navController, graph, modifier)
+
+/**
+ * Provides in place in the Compose hierarchy for self contained navigation to occur.
+ *
+ * Once this is called, any Composable within the given [NavGraphBuilder] can be navigated to from
+ * the provided [navController].
+ *
+ * @param navController the navController for this host
+ * @param graph the graph for this host
+ * @param modifier The modifier to be applied to the layout.
+ * @param contentAlignment The [Alignment] of the [AnimatedContent]
+ * @param enterTransition callback to define enter transitions for destination in this host
+ * @param exitTransition callback to define exit transitions for destination in this host
+ * @param popEnterTransition callback to define popEnter transitions for destination in this host
+ * @param popExitTransition callback to define popExit transitions for destination in this host
+ */
+@SuppressLint("StateFlowValueCalledInComposition")
+@Composable
+public fun NavHost(
+    navController: NavHostController,
+    graph: NavGraph,
+    modifier: Modifier = Modifier,
+    contentAlignment: Alignment = Alignment.Center,
+    enterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition) =
+        { fadeIn(animationSpec = tween(700)) },
+    exitTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition) =
+        { fadeOut(animationSpec = tween(700)) },
+    popEnterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition) =
+        enterTransition,
+    popExitTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition) =
+        exitTransition,
 ) {
+
     val lifecycleOwner = LocalLifecycleOwner.current
     val viewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
         "NavHost requires a ViewModelStoreOwner to be provided via LocalViewModelStoreOwner"
@@ -127,8 +229,8 @@
     ) as? ComposeNavigator ?: return
     val visibleEntries by remember(navController.visibleEntries) {
         navController.visibleEntries.map {
-            it.filter {
-                    entry -> entry.destination.navigatorName == ComposeNavigator.NAME
+            it.filter { entry ->
+                entry.destination.navigatorName == ComposeNavigator.NAME
             }
         }
     }.collectAsState(emptyList())
@@ -139,38 +241,75 @@
         visibleEntries.lastOrNull()
     }
 
-    var initialCrossfade by remember { mutableStateOf(true) }
     if (backStackEntry != null) {
-        // while in the scope of the composable, we provide the navBackStackEntry as the
-        // ViewModelStoreOwner and LifecycleOwner
-        Crossfade(backStackEntry.id, modifier) {
-            val lastEntry = if (LocalInspectionMode.current) {
+        val finalEnter: AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition = {
+            val targetDestination = targetState.destination as ComposeNavigator.Destination
+
+            if (composeNavigator.isPop.value) {
+                targetDestination.hierarchy.firstNotNullOfOrNull { destination ->
+                    popEnterTransitions[destination.route]?.invoke(this)
+                } ?: popEnterTransition.invoke(this)
+            } else {
+                targetDestination.hierarchy.firstNotNullOfOrNull { destination ->
+                    enterTransitions[destination.route]?.invoke(this)
+                } ?: enterTransition.invoke(this)
+            }
+        }
+
+        val finalExit: AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition = {
+            val initialDestination = initialState.destination as ComposeNavigator.Destination
+
+            if (composeNavigator.isPop.value) {
+                initialDestination.hierarchy.firstNotNullOfOrNull { destination ->
+                    popExitTransitions[destination.route]?.invoke(this)
+                } ?: popExitTransition.invoke(this)
+            } else {
+                initialDestination.hierarchy.firstNotNullOfOrNull { destination ->
+                    exitTransitions[destination.route]?.invoke(this)
+                } ?: exitTransition.invoke(this)
+            }
+        }
+
+        val transition = updateTransition(backStackEntry, label = "entry")
+        transition.AnimatedContent(
+            modifier,
+            transitionSpec = {
+                val zIndex = composeNavigator.backStack.value.size.toFloat()
+                // If the initialState of the AnimatedContent is not in visibleEntries, we are in
+                // a case where visible has cleared the old state for some reason, so instead of
+                // attempting to animate away from the initialState, we skip the animation.
+                if (initialState in visibleEntries) {
+                    ContentTransform(finalEnter(this), finalExit(this), zIndex)
+                } else {
+                    EnterTransition.None togetherWith ExitTransition.None
+                }
+            },
+            contentAlignment,
+            contentKey = { it.id }
+        ) {
+            // In some specific cases, such as clearing your back stack by changing your
+            // start destination, AnimatedContent can contain an entry that is no longer
+            // part of visible entries since it was cleared from the back stack and is not
+            // animating. In these cases the currentEntry will be null, and in those cases,
+            // AnimatedContent will just skip attempting to transition the old entry.
+            // See https://issuetracker.google.com/238686802
+            val currentEntry = if (LocalInspectionMode.current) {
                 // show startDestination if inspecting (preview)
                 composeNavigator.backStack.value
             } else {
                 visibleEntries
-            }.lastOrNull { entry ->
-                it == entry.id
-            }
-            // We are disposing on a Unit as we only want to dispose when the CrossFade completes
-            DisposableEffect(Unit) {
-                if (initialCrossfade) {
-                    // There's no animation for the initial crossfade,
-                    // so we can instantly mark the transition as complete
-                    visibleEntries.forEach { entry ->
-                        composeNavigator.onTransitionComplete(entry)
-                    }
-                    initialCrossfade = false
-                }
-                onDispose {
-                    visibleEntries.forEach { entry ->
-                        composeNavigator.onTransitionComplete(entry)
-                    }
-                }
-            }
+            }.lastOrNull { entry -> it == entry }
 
-            lastEntry?.LocalOwnersProvider(saveableStateHolder) {
-                (lastEntry.destination as ComposeNavigator.Destination).content(lastEntry)
+            // while in the scope of the composable, we provide the navBackStackEntry as the
+            // ViewModelStoreOwner and LifecycleOwner
+            currentEntry?.LocalOwnersProvider(saveableStateHolder) {
+                (currentEntry.destination as ComposeNavigator.Destination)
+                    .content(this, currentEntry)
+            }
+        }
+        if (transition.currentState == transition.targetState) {
+            visibleEntries.forEach { entry ->
+                composeNavigator.onTransitionComplete(entry)
             }
         }
     }
@@ -182,3 +321,19 @@
     // Show any dialog destinations
     DialogHost(dialogNavigator)
 }
+
+internal val enterTransitions =
+    mutableMapOf<String?,
+        (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?)?>()
+
+internal val exitTransitions =
+    mutableMapOf<String?,
+        (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?)?>()
+
+internal val popEnterTransitions =
+    mutableMapOf<String?,
+        (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?)?>()
+
+internal val popExitTransitions =
+    mutableMapOf<String?,
+        (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?)?>()
\ No newline at end of file
diff --git a/navigation/navigation-dynamic-features-fragment/build.gradle b/navigation/navigation-dynamic-features-fragment/build.gradle
index 80119e7..931ddb1 100644
--- a/navigation/navigation-dynamic-features-fragment/build.gradle
+++ b/navigation/navigation-dynamic-features-fragment/build.gradle
@@ -64,7 +64,7 @@
 }
 
 androidx {
-    name = "Android Dynamic Feature Navigation Fragment"
+    name = "Dynamic Feature Navigation Fragment"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Android Dynamic Feature Navigation Fragment"
diff --git a/navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/ui/DefaultProgressFragmentTest.kt b/navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/ui/DefaultProgressFragmentTest.kt
index 99c67e7..b05a6cc 100644
--- a/navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/ui/DefaultProgressFragmentTest.kt
+++ b/navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/ui/DefaultProgressFragmentTest.kt
@@ -16,13 +16,13 @@
 
 package androidx.navigation.dynamicfeatures.fragment.ui
 
-import androidx.navigation.dynamicfeatures.fragment.R as mainR
-import androidx.navigation.dynamicfeatures.fragment.test.R as testR
 import android.widget.TextView
 import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProvider
 import androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment
 import androidx.navigation.dynamicfeatures.fragment.NavigationActivity
+import androidx.navigation.dynamicfeatures.fragment.R as mainR
+import androidx.navigation.dynamicfeatures.fragment.test.R as testR
 import androidx.navigation.fragment.findNavController
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.runners.AndroidJUnit4
diff --git a/navigation/navigation-dynamic-features-runtime/build.gradle b/navigation/navigation-dynamic-features-runtime/build.gradle
index e722e52..497c5ea 100644
--- a/navigation/navigation-dynamic-features-runtime/build.gradle
+++ b/navigation/navigation-dynamic-features-runtime/build.gradle
@@ -60,7 +60,7 @@
 }
 
 androidx {
-    name = "Android Dynamic Feature Navigation Runtime"
+    name = "Dynamic Feature Navigation Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Android Dynamic Feature Navigation Runtime"
diff --git a/navigation/navigation-fragment-ktx/build.gradle b/navigation/navigation-fragment-ktx/build.gradle
index 2cb0659..bd96b86 100644
--- a/navigation/navigation-fragment-ktx/build.gradle
+++ b/navigation/navigation-fragment-ktx/build.gradle
@@ -30,7 +30,7 @@
 }
 
 androidx {
-    name = "Android Navigation Fragment Kotlin Extensions"
+    name = "Navigation Fragment Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Navigation-Fragment-Ktx"
diff --git a/navigation/navigation-fragment/build.gradle b/navigation/navigation-fragment/build.gradle
index f8284f5..7d08548 100644
--- a/navigation/navigation-fragment/build.gradle
+++ b/navigation/navigation-fragment/build.gradle
@@ -23,12 +23,12 @@
 }
 
 dependencies {
-    api(projectOrArtifact(":fragment:fragment-ktx"))
+    api("androidx.fragment:fragment-ktx:1.6.0-rc01")
     api(project(":navigation:navigation-runtime"))
     api("androidx.slidingpanelayout:slidingpanelayout:1.2.0")
     api(libs.kotlinStdlib)
     androidTestImplementation(project(":navigation:navigation-testing"))
-    androidTestImplementation(projectOrArtifact(":fragment:fragment-testing"))
+    androidTestImplementation("androidx.fragment:fragment-testing:1.6.0-rc01")
     androidTestImplementation(libs.testExtJunit)
     androidTestImplementation(libs.testCore)
     androidTestImplementation(libs.testRunner)
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "Android Navigation Fragment"
+    name = "Navigation Fragment"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Navigation-Fragment"
diff --git a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/DialogFragmentNavigatorTest.kt b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/DialogFragmentNavigatorTest.kt
index 22cded3..b434bcf 100644
--- a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/DialogFragmentNavigatorTest.kt
+++ b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/DialogFragmentNavigatorTest.kt
@@ -35,11 +35,11 @@
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import kotlin.reflect.KClass
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.reflect.KClass
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/ImmediateNavigationTest.kt b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/ImmediateNavigationTest.kt
index 8d3b01b10..fdad624 100644
--- a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/ImmediateNavigationTest.kt
+++ b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/ImmediateNavigationTest.kt
@@ -27,11 +27,11 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.testutils.withActivity
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/MultiNavHostFragmentTest.kt b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/MultiNavHostFragmentTest.kt
index 1a72855..eb54237 100644
--- a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/MultiNavHostFragmentTest.kt
+++ b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/MultiNavHostFragmentTest.kt
@@ -26,10 +26,10 @@
 import androidx.testutils.withActivity
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavControllerWithFragmentTest.kt b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavControllerWithFragmentTest.kt
index 15a2734..d000958 100644
--- a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavControllerWithFragmentTest.kt
+++ b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavControllerWithFragmentTest.kt
@@ -300,6 +300,60 @@
         assertThat(navController.currentBackStackEntry?.destination?.route).isEqualTo("first")
     }
 
+    @LargeTest
+    @Test
+    fun testSystemBackPressAfterPopUpToStartDestinationOffBackStack() = withNavigationActivity {
+        navController.graph = navController.createGraph("first") {
+            fragment<EmptyFragment>("first")
+            fragment<EmptyFragment>("second")
+            fragment<EmptyFragment>("third")
+        }
+        navController.navigate("second")
+        val fm = supportFragmentManager.findFragmentById(R.id.nav_host)?.childFragmentManager
+        fm?.executePendingTransactions()
+
+        navController.navigate("third", navOptions {
+            popUpTo("first") { inclusive = true }
+        })
+        fm?.executePendingTransactions()
+
+        navController.navigate("first")
+        fm?.executePendingTransactions()
+
+        onBackPressedDispatcher.onBackPressed()
+
+        assertThat(navController.currentBackStackEntry?.destination?.route).isEqualTo("third")
+    }
+
+    @LargeTest
+    @Test
+    fun testSystemBackPressAfterPopUpToOffBackStack() = withNavigationActivity {
+        navController.graph = navController.createGraph("first") {
+            fragment<EmptyFragment>("first")
+            fragment<EmptyFragment>("second")
+            fragment<EmptyFragment>("third")
+            fragment<EmptyFragment>("fourth")
+        }
+        navController.navigate("second")
+        val fm = supportFragmentManager.findFragmentById(R.id.nav_host)?.childFragmentManager
+        fm?.executePendingTransactions()
+
+        navController.navigate("third")
+        fm?.executePendingTransactions()
+
+        navController.navigate("fourth", navOptions {
+            popUpTo("second") { inclusive = true }
+        })
+        fm?.executePendingTransactions()
+
+        navController.navigate("second")
+        fm?.executePendingTransactions()
+
+        onBackPressedDispatcher.onBackPressed()
+
+        assertThat(navController.currentBackStackEntry?.destination?.route).isEqualTo("fourth")
+    }
+
     private fun withNavigationActivity(
         block: NavigationActivity.() -> Unit
     ) {
diff --git a/navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt b/navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
index f92e322..8bb7b8c 100644
--- a/navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
+++ b/navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
@@ -67,7 +67,10 @@
     /**
      * List of entries that were popped by direct calls to popBackStack (i.e. from NavController)
      */
-    private val entriesToPop = mutableSetOf<String>()
+    internal val entriesToPop: Set<String>
+        get() = (state.transitionsInProgress.value - state.backStack.value.toSet())
+            .map { it.id }
+            .toSet()
 
     /**
      * Get the back stack from the [state].
@@ -81,7 +84,6 @@
                 entry.id == fragment.tag
             }
             if (entry != null) {
-                entriesToPop.remove(entry.id)
                 if (!state.backStack.value.contains(entry)) {
                     state.markTransitionComplete(entry)
                 }
@@ -99,7 +101,6 @@
             // Once the lifecycle reaches DESTROYED, if the entry is not in the back stack, we can
             // mark the transition complete
             if (event == Lifecycle.Event.ON_DESTROY) {
-                entriesToPop.remove(entry.id)
                 if (!state.backStack.value.contains(entry)) {
                     state.markTransitionComplete(entry)
                 }
@@ -150,16 +151,10 @@
                     // we need to make sure we still return the entries to their proper final state.
                     attachClearViewModel(fragment, entry, state)
                     if (pop) {
-                        // The entry has already been removed from the back stack so just remove it
-                        // from the list
-                        if (!state.backStack.value.contains(entry)) {
-                            // remove it so we don't falsely identify a direct call to popBackStack
-                            entriesToPop.remove(entry.id)
-                        }
                         // This is the case of system back where we will need to make the call to
                         // popBackStack. Otherwise, popBackStack was called directly and this should
                         // end up being a no-op.
-                        else if (entriesToPop.isEmpty() && fragment.isRemoving) {
+                        if (entriesToPop.isEmpty() && fragment.isRemoving) {
                             state.popWithTransition(entry, false)
                         }
                     }
@@ -249,10 +244,6 @@
                 FragmentManager.POP_BACK_STACK_INCLUSIVE
             )
         }
-        // Add all of the entries that are going to be popped to our set of entries to pop
-        poppedList.forEach {
-            entriesToPop.add(it.id)
-        }
         state.popWithTransition(popUpTo, savedState)
     }
 
diff --git a/navigation/navigation-runtime-ktx/build.gradle b/navigation/navigation-runtime-ktx/build.gradle
index 1b497c7..4663086 100644
--- a/navigation/navigation-runtime-ktx/build.gradle
+++ b/navigation/navigation-runtime-ktx/build.gradle
@@ -30,7 +30,7 @@
 }
 
 androidx {
-    name = "Android Navigation Runtime Kotlin Extensions"
+    name = "Navigation Runtime Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Navigation-Runtime-Ktx"
diff --git a/navigation/navigation-runtime-truth/build.gradle b/navigation/navigation-runtime-truth/build.gradle
index dfc5054..4ff4554f 100644
--- a/navigation/navigation-runtime-truth/build.gradle
+++ b/navigation/navigation-runtime-truth/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "Android Navigation Runtime Truth"
+    name = "Navigation Runtime Truth"
     publish = Publish.NONE
     inceptionYear = "2019"
     description = "Android Navigation-Runtime-Truth"
diff --git a/navigation/navigation-runtime-truth/src/androidTest/java/androidx/navigation/truth/NavControllerSubjectTest.kt b/navigation/navigation-runtime-truth/src/androidTest/java/androidx/navigation/truth/NavControllerSubjectTest.kt
index 15499c8..10caf31 100644
--- a/navigation/navigation-runtime-truth/src/androidTest/java/androidx/navigation/truth/NavControllerSubjectTest.kt
+++ b/navigation/navigation-runtime-truth/src/androidTest/java/androidx/navigation/truth/NavControllerSubjectTest.kt
@@ -18,8 +18,8 @@
 
 import androidx.navigation.NavController
 import androidx.navigation.plusAssign
-import androidx.navigation.truth.test.R
 import androidx.navigation.truth.NavControllerSubject.Companion.assertThat
+import androidx.navigation.truth.test.R
 import androidx.test.annotation.UiThreadTest
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.SmallTest
diff --git a/navigation/navigation-runtime/build.gradle b/navigation/navigation-runtime/build.gradle
index c7ebc80..ff856e6 100644
--- a/navigation/navigation-runtime/build.gradle
+++ b/navigation/navigation-runtime/build.gradle
@@ -60,7 +60,7 @@
 }
 
 androidx {
-    name = "Android Navigation Runtime"
+    name = "Navigation Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Navigation-Runtime"
diff --git a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
index 8b35f7b..3b662ee 100644
--- a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
+++ b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
@@ -54,8 +54,8 @@
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.TestNavigator
-import androidx.testutils.withActivity
 import androidx.testutils.test
+import androidx.testutils.withActivity
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
 import kotlin.test.assertFailsWith
diff --git a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerViewModelTest.kt b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerViewModelTest.kt
index d786d7a..2ff68ee9 100644
--- a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerViewModelTest.kt
+++ b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerViewModelTest.kt
@@ -20,9 +20,9 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import java.util.UUID
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.UUID
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavDeepLinkBuilderTest.kt b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavDeepLinkBuilderTest.kt
index 7d97f4e..18a7e32 100644
--- a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavDeepLinkBuilderTest.kt
+++ b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavDeepLinkBuilderTest.kt
@@ -16,16 +16,16 @@
 
 package androidx.navigation
 
-import androidx.navigation.test.R
 import android.content.Context
 import android.os.Bundle
+import androidx.core.os.bundleOf
+import androidx.navigation.test.R
 import androidx.test.annotation.UiThreadTest
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.testutils.TestNavigator
 import androidx.testutils.test
-import androidx.core.os.bundleOf
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
 import org.junit.Test
diff --git a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
index fc7b988e..4176c33 100644
--- a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
+++ b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
@@ -42,6 +42,8 @@
 import androidx.navigation.NavDestination.Companion.createRoute
 import androidx.navigation.NavDestination.Companion.hierarchy
 import androidx.navigation.NavGraph.Companion.findStartDestination
+import java.util.concurrent.CopyOnWriteArrayList
+import java.util.concurrent.atomic.AtomicInteger
 import kotlinx.coroutines.channels.BufferOverflow
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableSharedFlow
@@ -49,8 +51,6 @@
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.asSharedFlow
 import kotlinx.coroutines.flow.asStateFlow
-import java.util.concurrent.CopyOnWriteArrayList
-import java.util.concurrent.atomic.AtomicInteger
 
 /**
  * NavController manages app navigation within a [NavHost].
diff --git a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavDeepLinkBuilder.kt b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavDeepLinkBuilder.kt
index 4c8f16b..2b624ea 100644
--- a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavDeepLinkBuilder.kt
+++ b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavDeepLinkBuilder.kt
@@ -16,10 +16,10 @@
 package androidx.navigation
 
 import android.app.Activity
-import android.content.Intent
-import android.content.ComponentName
 import android.app.PendingIntent
+import android.content.ComponentName
 import android.content.Context
+import android.content.Intent
 import android.os.Bundle
 import androidx.annotation.IdRes
 import androidx.annotation.NavigationRes
diff --git a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavInflater.kt b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavInflater.kt
index 4754d62..7722bba 100644
--- a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavInflater.kt
+++ b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavInflater.kt
@@ -29,9 +29,9 @@
 import androidx.core.content.res.use
 import androidx.core.content.withStyledAttributes
 import androidx.navigation.common.R
+import java.io.IOException
 import org.xmlpull.v1.XmlPullParser
 import org.xmlpull.v1.XmlPullParserException
-import java.io.IOException
 
 /**
  * Class which translates a navigation XML file into a [NavGraph]
diff --git a/navigation/navigation-safe-args-generator/build.gradle b/navigation/navigation-safe-args-generator/build.gradle
index 4b4c91f..988bc00 100644
--- a/navigation/navigation-safe-args-generator/build.gradle
+++ b/navigation/navigation-safe-args-generator/build.gradle
@@ -60,7 +60,7 @@
 
 
 androidx {
-    name = "Android Navigation TypeSafe Arguments Generator"
+    name = "Navigation TypeSafe Arguments Generator"
     type = LibraryType.OTHER_CODE_PROCESSOR
     inceptionYear = "2017"
     description = "Android Navigation TypeSafe Arguments Generator"
diff --git a/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/XmlPositionParser.kt b/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/XmlPositionParser.kt
index 305c54f..d0e29bc 100644
--- a/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/XmlPositionParser.kt
+++ b/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/XmlPositionParser.kt
@@ -16,9 +16,9 @@
 
 package androidx.navigation.safe.args.generator
 
+import java.io.Reader
 import org.xmlpull.v1.XmlPullParser
 import org.xmlpull.v1.XmlPullParserFactory
-import java.io.Reader
 
 internal class XmlPositionParser(private val name: String, reader: Reader, val logger: NavLogger) {
     private var startLine = 0
diff --git a/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/java/JavaTypes.kt b/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/java/JavaTypes.kt
index fb886bb..0ec5e48 100644
--- a/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/java/JavaTypes.kt
+++ b/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/java/JavaTypes.kt
@@ -35,13 +35,13 @@
 import androidx.navigation.safe.args.generator.ObjectType
 import androidx.navigation.safe.args.generator.ReferenceArrayType
 import androidx.navigation.safe.args.generator.ReferenceType
+import androidx.navigation.safe.args.generator.ReferenceValue
 import androidx.navigation.safe.args.generator.StringArrayType
 import androidx.navigation.safe.args.generator.StringType
-import androidx.navigation.safe.args.generator.models.Argument
-import androidx.navigation.safe.args.generator.ReferenceValue
 import androidx.navigation.safe.args.generator.StringValue
 import androidx.navigation.safe.args.generator.WritableValue
 import androidx.navigation.safe.args.generator.ext.toClassNameParts
+import androidx.navigation.safe.args.generator.models.Argument
 import androidx.navigation.safe.args.generator.models.ResReference
 import com.squareup.javapoet.ArrayTypeName
 import com.squareup.javapoet.ClassName
diff --git a/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/kotlin/KotlinTypes.kt b/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/kotlin/KotlinTypes.kt
index 5a42e74..4a3a9dd 100644
--- a/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/kotlin/KotlinTypes.kt
+++ b/navigation/navigation-safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/kotlin/KotlinTypes.kt
@@ -52,8 +52,8 @@
 import com.squareup.kotlinpoet.INT
 import com.squareup.kotlinpoet.LONG
 import com.squareup.kotlinpoet.ParameterizedTypeName
-import com.squareup.kotlinpoet.TypeName
 import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
+import com.squareup.kotlinpoet.TypeName
 import com.squareup.kotlinpoet.asTypeName
 import java.lang.UnsupportedOperationException
 
diff --git a/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/JavaNavWriterTest.kt b/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/JavaNavWriterTest.kt
index bcd9829..9723d49 100644
--- a/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/JavaNavWriterTest.kt
+++ b/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/JavaNavWriterTest.kt
@@ -29,13 +29,13 @@
 import com.squareup.javapoet.ClassName
 import com.squareup.javapoet.JavaFile
 import com.squareup.javapoet.TypeSpec
+import javax.tools.JavaFileObject
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.not
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import javax.tools.JavaFileObject
 
 @RunWith(JUnit4::class)
 class JavaNavWriterTest {
diff --git a/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavArgumentResolverTest.kt b/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavArgumentResolverTest.kt
index 915faaf..29c9fbf 100644
--- a/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavArgumentResolverTest.kt
+++ b/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavArgumentResolverTest.kt
@@ -16,19 +16,19 @@
 
 package androidx.navigation.safe.args.generator
 
+import androidx.navigation.safe.args.generator.ext.capitalize
 import androidx.navigation.safe.args.generator.models.Action
 import androidx.navigation.safe.args.generator.models.Argument
 import androidx.navigation.safe.args.generator.models.Destination
 import androidx.navigation.safe.args.generator.models.ResReference
-import androidx.navigation.safe.args.generator.ext.capitalize
 import com.squareup.javapoet.ClassName
+import java.util.Locale
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.Locale
 
 @RunWith(JUnit4::class)
 class NavArgumentResolverTest {
diff --git a/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavGeneratorTest.kt b/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavGeneratorTest.kt
index 7f29cd0..cb2cb9f 100644
--- a/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavGeneratorTest.kt
+++ b/navigation/navigation-safe-args-generator/src/test/kotlin/androidx/navigation/safe/args/generator/NavGeneratorTest.kt
@@ -20,6 +20,8 @@
 import androidx.navigation.safe.args.generator.kotlin.KotlinCodeFile
 import com.google.common.truth.Truth
 import com.google.testing.compile.JavaSourcesSubject
+import java.io.File
+import java.lang.IllegalStateException
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Rule
@@ -27,8 +29,6 @@
 import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.io.File
-import java.lang.IllegalStateException
 
 @RunWith(Parameterized::class)
 class NavGeneratorTest(private val generateKotlin: Boolean) {
diff --git a/navigation/navigation-safe-args-gradle-plugin/build.gradle b/navigation/navigation-safe-args-gradle-plugin/build.gradle
index 1d740b2..08697dc 100644
--- a/navigation/navigation-safe-args-gradle-plugin/build.gradle
+++ b/navigation/navigation-safe-args-gradle-plugin/build.gradle
@@ -50,7 +50,7 @@
 }
 
 androidx {
-    name = "Android Navigation TypeSafe Arguments Gradle Plugin"
+    name = "Navigation TypeSafe Arguments Gradle Plugin"
     type = LibraryType.GRADLE_PLUGIN
     inceptionYear = "2017"
     description = "Android Navigation TypeSafe Arguments Gradle Plugin"
diff --git a/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/ArgumentsGenerationTask.kt b/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/ArgumentsGenerationTask.kt
index 279f78a..b08f9fd 100644
--- a/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/ArgumentsGenerationTask.kt
+++ b/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/ArgumentsGenerationTask.kt
@@ -20,6 +20,8 @@
 import androidx.navigation.safe.args.generator.SafeArgsGenerator
 import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
+import java.io.File
+import javax.inject.Inject
 import org.gradle.api.DefaultTask
 import org.gradle.api.GradleException
 import org.gradle.api.file.ConfigurableFileCollection
@@ -36,8 +38,6 @@
 import org.gradle.work.ChangeType
 import org.gradle.work.Incremental
 import org.gradle.work.InputChanges
-import java.io.File
-import javax.inject.Inject
 
 private const val MAPPING_FILE = "file_mappings.json"
 
diff --git a/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt b/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt
index a50222b..47edf23 100644
--- a/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt
+++ b/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt
@@ -23,6 +23,9 @@
 import com.android.build.gradle.AppExtension
 import com.android.build.gradle.BaseExtension
 import com.android.build.gradle.LibraryExtension
+import java.io.File
+import java.util.Locale
+import javax.inject.Inject
 import org.gradle.api.GradleException
 import org.gradle.api.Plugin
 import org.gradle.api.Project
@@ -30,9 +33,6 @@
 import org.gradle.api.provider.Provider
 import org.gradle.api.provider.ProviderFactory
 import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
-import java.io.File
-import java.util.Locale
-import javax.inject.Inject
 
 private const val PLUGIN_DIRNAME = "navigation-args"
 internal const val GENERATED_PATH = "generated/source/$PLUGIN_DIRNAME"
diff --git a/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt b/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt
index c3e20c9..5f0e351 100644
--- a/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt
+++ b/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt
@@ -17,13 +17,13 @@
 package androidx.navigation.safeargs.gradle
 
 import androidx.testutils.gradle.ProjectSetupRule
+import java.io.File
 import org.gradle.testkit.runner.BuildResult
 import org.gradle.testkit.runner.GradleRunner
 import org.gradle.testkit.runner.TaskOutcome
 import org.hamcrest.CoreMatchers
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Rule
-import java.io.File
 
 internal const val MAIN_DIR = "androidx/navigation/testapp"
 
diff --git a/navigation/navigation-testing/build.gradle b/navigation/navigation-testing/build.gradle
index d30a3fc..4008f8e 100644
--- a/navigation/navigation-testing/build.gradle
+++ b/navigation/navigation-testing/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "Android Navigation Testing"
+    name = "Navigation Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Navigation-Testing"
diff --git a/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt b/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt
index 76aa369..3d9ca21 100644
--- a/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt
+++ b/navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavHostControllerTest.kt
@@ -17,7 +17,6 @@
 package androidx.navigation.testing
 
 import android.os.Bundle
-import androidx.test.annotation.UiThreadTest
 import androidx.navigation.ActivityNavigator
 import androidx.navigation.NavOptions
 import androidx.navigation.Navigator
@@ -25,6 +24,7 @@
 import androidx.navigation.createGraph
 import androidx.navigation.plusAssign
 import androidx.navigation.testing.test.R
+import androidx.test.annotation.UiThreadTest
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.ext.truth.os.BundleSubject.assertThat
diff --git a/navigation/navigation-ui-ktx/build.gradle b/navigation/navigation-ui-ktx/build.gradle
index 3cbe68b..23f6129 100644
--- a/navigation/navigation-ui-ktx/build.gradle
+++ b/navigation/navigation-ui-ktx/build.gradle
@@ -30,7 +30,7 @@
 }
 
 androidx {
-    name = "Android Navigation UI Kotlin Extensions"
+    name = "Navigation UI Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Navigation-UI-Ktx"
diff --git a/navigation/navigation-ui/build.gradle b/navigation/navigation-ui/build.gradle
index 5dd6cca..4877297 100644
--- a/navigation/navigation-ui/build.gradle
+++ b/navigation/navigation-ui/build.gradle
@@ -55,7 +55,7 @@
 }
 
 androidx {
-    name = "Android Navigation UI"
+    name = "Navigation UI"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Navigation-UI"
diff --git a/paging/integration-tests/testapp/src/androidTest/kotlin/androidx/paging/integration/testapp/v3/OnPagesUpdatedTest.kt b/paging/integration-tests/testapp/src/androidTest/kotlin/androidx/paging/integration/testapp/v3/OnPagesUpdatedTest.kt
index fe5a24b..2a9c625 100644
--- a/paging/integration-tests/testapp/src/androidTest/kotlin/androidx/paging/integration/testapp/v3/OnPagesUpdatedTest.kt
+++ b/paging/integration-tests/testapp/src/androidTest/kotlin/androidx/paging/integration/testapp/v3/OnPagesUpdatedTest.kt
@@ -22,6 +22,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -40,8 +42,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.coroutines.EmptyCoroutineContext
-import kotlin.test.assertTrue
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/custom/ItemDataSource.kt b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/custom/ItemDataSource.kt
index a107d6e..cbefb66 100644
--- a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/custom/ItemDataSource.kt
+++ b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/custom/ItemDataSource.kt
@@ -20,8 +20,8 @@
 import androidx.annotation.ColorInt
 import androidx.paging.PagingSource
 import androidx.paging.PagingState
-import kotlinx.coroutines.delay
 import java.util.concurrent.atomic.AtomicBoolean
+import kotlinx.coroutines.delay
 
 val dataSourceError = AtomicBoolean(false)
 
diff --git a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt
index e7f4e4a..fd4b1bf 100644
--- a/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt
+++ b/paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3/ItemPagingSource.kt
@@ -20,8 +20,8 @@
 import androidx.annotation.ColorInt
 import androidx.paging.PagingSource
 import androidx.paging.PagingState
-import kotlinx.coroutines.delay
 import java.util.concurrent.atomic.AtomicBoolean
+import kotlinx.coroutines.delay
 
 val dataSourceError = AtomicBoolean(false)
 
diff --git a/paging/paging-common-ktx/build.gradle b/paging/paging-common-ktx/build.gradle
index bab41ca..f5a7a7e 100644
--- a/paging/paging-common-ktx/build.gradle
+++ b/paging/paging-common-ktx/build.gradle
@@ -26,7 +26,7 @@
 }
 
 androidx {
-    name = "Android Paging-Common Kotlin Extensions"
+    name = "Paging-Common Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Kotlin extensions for 'paging-common' artifact"
diff --git a/paging/paging-common/build.gradle b/paging/paging-common/build.gradle
index 00ad658..bbc62bf 100644
--- a/paging/paging-common/build.gradle
+++ b/paging/paging-common/build.gradle
@@ -51,7 +51,7 @@
 }
 
 androidx {
-    name = "Android Paging-Common"
+    name = "Paging-Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Paging-Common"
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/FlowExt.kt b/paging/paging-common/src/main/kotlin/androidx/paging/FlowExt.kt
index 9cd5e14..d6b55b8 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/FlowExt.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/FlowExt.kt
@@ -22,6 +22,7 @@
 import androidx.paging.CombineSource.INITIAL
 import androidx.paging.CombineSource.OTHER
 import androidx.paging.CombineSource.RECEIVER
+import java.util.concurrent.atomic.AtomicInteger
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.channels.SendChannel
@@ -35,7 +36,6 @@
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
 import kotlinx.coroutines.yield
-import java.util.concurrent.atomic.AtomicInteger
 
 /**
  * This File includes custom flow operators that we implement to avoid using experimental APIs
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/HintHandler.kt b/paging/paging-common/src/main/kotlin/androidx/paging/HintHandler.kt
index cefabc2..8c81e2e 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/HintHandler.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/HintHandler.kt
@@ -21,11 +21,11 @@
 import androidx.annotation.RestrictTo
 import androidx.paging.LoadType.APPEND
 import androidx.paging.LoadType.PREPEND
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.concurrent.withLock
 import kotlinx.coroutines.channels.BufferOverflow
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableSharedFlow
-import java.util.concurrent.locks.ReentrantLock
-import kotlin.concurrent.withLock
 
 /**
  * Helper class to handle UI hints.
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/ItemKeyedDataSource.kt b/paging/paging-common/src/main/kotlin/androidx/paging/ItemKeyedDataSource.kt
index 68a85be..8aeb85a 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/ItemKeyedDataSource.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/ItemKeyedDataSource.kt
@@ -19,9 +19,9 @@
 import androidx.annotation.VisibleForTesting
 import androidx.arch.core.util.Function
 import androidx.paging.DataSource.KeyType.ITEM_KEYED
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.suspendCancellableCoroutine
-import kotlin.coroutines.resume
 
 /**
  * Incremental data loader for paging keyed content, where loaded content uses previously loaded
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/LegacyPageFetcher.kt b/paging/paging-common/src/main/kotlin/androidx/paging/LegacyPageFetcher.kt
index 868af5e..d923015 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/LegacyPageFetcher.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/LegacyPageFetcher.kt
@@ -19,10 +19,10 @@
 import androidx.paging.LoadState.Loading
 import androidx.paging.LoadState.NotLoading
 import androidx.paging.PagingSource.LoadParams
+import java.util.concurrent.atomic.AtomicBoolean
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
-import java.util.concurrent.atomic.AtomicBoolean
 
 internal class LegacyPageFetcher<K : Any, V : Any>(
     private val pagedListScope: CoroutineScope,
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/MutableCombinedLoadStateCollection.kt b/paging/paging-common/src/main/kotlin/androidx/paging/MutableCombinedLoadStateCollection.kt
index 964433b..0b12735 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/MutableCombinedLoadStateCollection.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/MutableCombinedLoadStateCollection.kt
@@ -19,8 +19,8 @@
 import androidx.paging.LoadState.Error
 import androidx.paging.LoadState.Loading
 import androidx.paging.LoadState.NotLoading
-import kotlinx.coroutines.flow.MutableStateFlow
 import java.util.concurrent.CopyOnWriteArrayList
+import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.update
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshotState.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshotState.kt
index 209142b..e72df74 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshotState.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PageFetcherSnapshotState.kt
@@ -17,8 +17,8 @@
 package androidx.paging
 
 import androidx.annotation.CheckResult
-import androidx.paging.LoadState.NotLoading
 import androidx.paging.LoadState.Loading
+import androidx.paging.LoadState.NotLoading
 import androidx.paging.LoadType.APPEND
 import androidx.paging.LoadType.PREPEND
 import androidx.paging.LoadType.REFRESH
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PageKeyedDataSource.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PageKeyedDataSource.kt
index e3d0fd8..5c98360 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PageKeyedDataSource.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PageKeyedDataSource.kt
@@ -18,9 +18,9 @@
 
 import androidx.arch.core.util.Function
 import androidx.paging.DataSource.KeyType.PAGE_KEYED
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.suspendCancellableCoroutine
-import kotlin.coroutines.resume
 
 /**
  * Incremental data loader for page-keyed content, where requests return keys for next/previous
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PagedList.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PagedList.kt
index ac60b3d..23f7ebe 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PagedList.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PagedList.kt
@@ -19,6 +19,9 @@
 import androidx.annotation.IntRange
 import androidx.annotation.MainThread
 import androidx.annotation.RestrictTo
+import java.lang.ref.WeakReference
+import java.util.AbstractList
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.DelicateCoroutinesApi
@@ -27,9 +30,6 @@
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
-import java.lang.ref.WeakReference
-import java.util.AbstractList
-import java.util.concurrent.Executor
 
 /**
  * Lazy loading list that pages in immutable content from a [PagingSource].
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataTransforms.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataTransforms.kt
index 9fcf71a..0a31f4e 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataTransforms.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PagingDataTransforms.kt
@@ -20,10 +20,10 @@
 
 import androidx.annotation.CheckResult
 import androidx.paging.TerminalSeparatorType.FULLY_COMPLETE
+import java.util.concurrent.Executor
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.withContext
-import java.util.concurrent.Executor
 
 private inline fun <T : Any, R : Any> PagingData<T>.transform(
     crossinline transform: suspend (PageEvent<T>) -> PageEvent<R>
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PositionalDataSource.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PositionalDataSource.kt
index 1b84ad3..134a223 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PositionalDataSource.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PositionalDataSource.kt
@@ -22,8 +22,8 @@
 import androidx.arch.core.util.Function
 import androidx.paging.DataSource.KeyType.POSITIONAL
 import androidx.paging.PagingSource.LoadResult.Page.Companion.COUNT_UNDEFINED
-import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlin.coroutines.resume
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Position-based data loader for a fixed-size, countable data set, supporting fixed-size loads at
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/RemoteMediatorAccessor.kt b/paging/paging-common/src/main/kotlin/androidx/paging/RemoteMediatorAccessor.kt
index 358f194..17b923c 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/RemoteMediatorAccessor.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/RemoteMediatorAccessor.kt
@@ -20,12 +20,12 @@
 import androidx.paging.AccessorState.BlockState.REQUIRES_REFRESH
 import androidx.paging.AccessorState.BlockState.UNBLOCKED
 import androidx.paging.RemoteMediator.MediatorResult
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.concurrent.withLock
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.launch
-import java.util.concurrent.locks.ReentrantLock
-import kotlin.concurrent.withLock
 
 /**
  * Interface provided to the snapshot to trigger load events.
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/SimpleChannelFlow.kt b/paging/paging-common/src/main/kotlin/androidx/paging/SimpleChannelFlow.kt
index 75ab293..1c8ae24 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/SimpleChannelFlow.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/SimpleChannelFlow.kt
@@ -19,6 +19,7 @@
 package androidx.paging
 
 import androidx.annotation.RestrictTo
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.channels.Channel
@@ -30,7 +31,6 @@
 import kotlinx.coroutines.flow.internal.FusibleFlow
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.suspendCancellableCoroutine
-import kotlin.coroutines.resume
 
 /**
  * This is a simplified channelFlow implementation as a temporary measure until channel flow
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/multicast/StoreRealActor.kt b/paging/paging-common/src/main/kotlin/androidx/paging/multicast/StoreRealActor.kt
index 74c7fc1..60c962a 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/multicast/StoreRealActor.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/multicast/StoreRealActor.kt
@@ -15,6 +15,7 @@
  */
 package androidx.paging.multicast
 
+import java.util.concurrent.atomic.AtomicBoolean
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.channels.Channel
@@ -22,7 +23,6 @@
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onCompletion
 import kotlinx.coroutines.flow.onEach
-import java.util.concurrent.atomic.AtomicBoolean
 
 /**
  * Simple actor implementation abstracting away Coroutine.actor since it is deprecated.
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowLeakTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowLeakTest.kt
index 1948415..cffc528 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowLeakTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowLeakTest.kt
@@ -16,6 +16,9 @@
 
 package androidx.paging
 
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.test.Ignore
+import kotlin.test.Test
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.cancel
@@ -25,11 +28,8 @@
 import kotlinx.coroutines.flow.takeWhile
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
-import org.junit.Ignore
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.coroutines.EmptyCoroutineContext
 
 /**
  * reproduces b/203594733
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowTest.kt
index 77e0ce1..1f3cda9 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/CachedPageEventFlowTest.kt
@@ -17,6 +17,7 @@
 package androidx.paging
 
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
@@ -32,7 +33,6 @@
 import kotlinx.coroutines.test.advanceUntilIdle
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/CachingTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/CachingTest.kt
index 5eb154c..977255e 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/CachingTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/CachingTest.kt
@@ -19,6 +19,8 @@
 import androidx.paging.ActiveFlowTracker.FlowType.PAGED_DATA_FLOW
 import androidx.paging.ActiveFlowTracker.FlowType.PAGE_EVENT_FLOW
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.atomic.AtomicInteger
+import kotlin.test.Test
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -36,15 +38,13 @@
 import kotlinx.coroutines.flow.toList
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
-import kotlinx.coroutines.yield
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-import java.util.concurrent.atomic.AtomicInteger
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
+import kotlinx.coroutines.yield
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/ConflatedEventBusTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/ConflatedEventBusTest.kt
index c5bde13..174df10 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/ConflatedEventBusTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/ConflatedEventBusTest.kt
@@ -17,12 +17,12 @@
 package androidx.paging
 
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runCurrent
-import org.junit.Test
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class ConflatedEventBusTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/ContiguousPagedListTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/ContiguousPagedListTest.kt
index 1a4637b..79c02d1 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/ContiguousPagedListTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/ContiguousPagedListTest.kt
@@ -29,18 +29,18 @@
 import androidx.paging.PagedList.Config
 import androidx.paging.PagingSource.LoadResult.Page
 import androidx.testutils.TestDispatcher
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertSame
+import kotlin.test.assertTrue
+import kotlinx.coroutines.runBlocking
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.reset
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.verifyNoMoreInteractions
-import kotlinx.coroutines.runBlocking
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertSame
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import kotlin.test.assertFailsWith
-import kotlin.test.assertTrue
 
 @RunWith(Parameterized::class)
 class ContiguousPagedListTest(private val placeholdersEnabled: Boolean) {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/DataSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/DataSourceTest.kt
index bd2a9fb..b5635bb 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/DataSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/DataSourceTest.kt
@@ -17,7 +17,7 @@
 package androidx.paging
 
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
+import kotlin.test.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/FailDispatcher.kt b/paging/paging-common/src/test/kotlin/androidx/paging/FailDispatcher.kt
index 9e41203..0642f31 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/FailDispatcher.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/FailDispatcher.kt
@@ -16,10 +16,10 @@
 
 package androidx.paging
 
+import kotlin.coroutines.CoroutineContext
+import kotlin.test.fail
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Runnable
-import org.junit.Assert.fail
-import kotlin.coroutines.CoroutineContext
 
 class FailDispatcher(
     val string: String = "Executor expected to be unused"
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/FlattenedPageEventStorageTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/FlattenedPageEventStorageTest.kt
index 35cf04d..44bd3bb 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/FlattenedPageEventStorageTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/FlattenedPageEventStorageTest.kt
@@ -25,7 +25,7 @@
 import androidx.paging.PageEvent.Drop
 import androidx.paging.PageEvent.StaticList
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
+import kotlin.test.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/FlowExtTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/FlowExtTest.kt
index 5073e746..b298a75 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/FlowExtTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/FlowExtTest.kt
@@ -20,6 +20,8 @@
 import androidx.paging.CombineSource.OTHER
 import androidx.paging.CombineSource.RECEIVER
 import com.google.common.truth.Truth.assertThat
+import kotlin.random.Random
+import kotlin.test.Test
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.channels.Channel.Factory.BUFFERED
@@ -38,8 +40,6 @@
 import kotlinx.coroutines.test.advanceUntilIdle
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.yield
-import org.junit.Test
-import kotlin.random.Random
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class FlowExtTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/HeaderFooterTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/HeaderFooterTest.kt
index 4af5089..44e227c 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/HeaderFooterTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/HeaderFooterTest.kt
@@ -18,15 +18,15 @@
 
 import androidx.paging.LoadState.NotLoading
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.single
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
 
 /**
  * Prepend and append are both Done, so that headers will appear
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/HintHandlerTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/HintHandlerTest.kt
index 6ab268b..16bc08f 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/HintHandlerTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/HintHandlerTest.kt
@@ -20,6 +20,7 @@
 import androidx.paging.LoadType.PREPEND
 import androidx.paging.LoadType.REFRESH
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
@@ -30,7 +31,6 @@
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/InvalidatingPagingSourceFactoryTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/InvalidatingPagingSourceFactoryTest.kt
index a3b431a..28b9cb4 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/InvalidatingPagingSourceFactoryTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/InvalidatingPagingSourceFactoryTest.kt
@@ -16,7 +16,7 @@
 
 package androidx.paging
 
-import org.junit.Test
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertTrue
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/ItemKeyedDataSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/ItemKeyedDataSourceTest.kt
index dc2c9fb..786c4c6 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/ItemKeyedDataSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/ItemKeyedDataSourceTest.kt
@@ -17,21 +17,21 @@
 package androidx.paging
 
 import androidx.paging.PagingSource.LoadResult.Page.Companion.COUNT_UNDEFINED
-import org.mockito.kotlin.capture
-import org.mockito.kotlin.mock
+import kotlin.random.Random
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertTrue
+import kotlin.test.fail
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.runBlocking
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
-import org.junit.Assert.fail
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.ArgumentCaptor
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
-import kotlin.random.Random
-import kotlin.test.assertFailsWith
+import org.mockito.kotlin.capture
+import org.mockito.kotlin.mock
 
 @Suppress("DEPRECATION")
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/ItemSnapshotListTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/ItemSnapshotListTest.kt
index 7b6d6f9..4688ad0 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/ItemSnapshotListTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/ItemSnapshotListTest.kt
@@ -16,7 +16,7 @@
 
 package androidx.paging
 
-import org.junit.Test
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPageFetcherTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPageFetcherTest.kt
index 78598f9..536e5d4 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPageFetcherTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPageFetcherTest.kt
@@ -28,14 +28,14 @@
 import androidx.paging.PagingSource.LoadResult
 import androidx.paging.PagingSource.LoadResult.Page
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.StandardTestDispatcher
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPagingSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPagingSourceTest.kt
index 1ffe862..6123476 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPagingSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/LegacyPagingSourceTest.kt
@@ -18,8 +18,15 @@
 
 import androidx.paging.PagingSource.LoadResult.Page
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.Executors
 import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
+import kotlin.test.fail
 import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.filter
@@ -27,15 +34,8 @@
 import kotlinx.coroutines.flow.take
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.StandardTestDispatcher
-import org.junit.Assert
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.concurrent.Executors
-import kotlin.test.assertEquals
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
-import kotlinx.coroutines.ExperimentalCoroutinesApi
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(JUnit4::class)
@@ -93,21 +93,21 @@
                 params: LoadInitialParams<Int>,
                 callback: LoadInitialCallback<String>
             ) {
-                Assert.fail("loadInitial not expected")
+                fail("loadInitial not expected")
             }
 
             override fun loadAfter(
                 params: LoadParams<Int>,
                 callback: LoadCallback<String>
             ) {
-                Assert.fail("loadAfter not expected")
+                fail("loadAfter not expected")
             }
 
             override fun loadBefore(
                 params: LoadParams<Int>,
                 callback: LoadCallback<String>
             ) {
-                Assert.fail("loadBefore not expected")
+                fail("loadBefore not expected")
             }
 
             override fun getKey(item: String) = item.hashCode()
@@ -141,21 +141,21 @@
                 params: LoadInitialParams<Int>,
                 callback: LoadInitialCallback<Int, String>
             ) {
-                Assert.fail("loadInitial not expected")
+                fail("loadInitial not expected")
             }
 
             override fun loadBefore(
                 params: LoadParams<Int>,
                 callback: LoadCallback<Int, String>
             ) {
-                Assert.fail("loadBefore not expected")
+                fail("loadBefore not expected")
             }
 
             override fun loadAfter(
                 params: LoadParams<Int>,
                 callback: LoadCallback<Int, String>
             ) {
-                Assert.fail("loadAfter not expected")
+                fail("loadAfter not expected")
             }
         }
         val pagingSource = LegacyPagingSource(
@@ -391,14 +391,14 @@
                 callback: LoadInitialCallback<String>
             ) {
                 if (!expectInitialLoad) {
-                    Assert.fail("loadInitial not expected")
+                    fail("loadInitial not expected")
                 } else {
                     callback.onResult(listOf(), 0)
                 }
             }
 
             override fun loadRange(params: LoadRangeParams, callback: LoadRangeCallback<String>) {
-                Assert.fail("loadRange not expected")
+                fail("loadRange not expected")
             }
         }
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PageEventTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PageEventTest.kt
index 20a1116..414824a 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PageEventTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PageEventTest.kt
@@ -20,17 +20,17 @@
 import androidx.paging.LoadType.REFRESH
 import androidx.paging.PageEvent.Drop
 import kotlin.coroutines.EmptyCoroutineContext
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import kotlinx.coroutines.test.runTest
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-import org.junit.runners.Parameterized
+import kotlin.test.BeforeTest
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertSame
-import org.junit.Before
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runTest
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.runners.Parameterized
 
 internal fun <T : Any> adjacentInsertEvent(
     isPrepend: Boolean,
@@ -293,7 +293,7 @@
         private val differ = TestPagingDataDiffer<String>(EmptyCoroutineContext)
         private lateinit var pagingData: PagingData<String>
 
-        @Before
+        @BeforeTest
         fun init() {
             pagingData = if (data.isNotEmpty()) {
                 PagingData.from(data)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotStateTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotStateTest.kt
index 5006894..ffd9a01 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotStateTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotStateTest.kt
@@ -24,13 +24,13 @@
 import androidx.paging.PagingSource.LoadResult.Page
 import androidx.paging.PagingSource.LoadResult.Page.Companion.COUNT_UNDEFINED
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt
index 62ffbb6..f02de71 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt
@@ -29,6 +29,7 @@
 import androidx.paging.RemoteMediatorMock.LoadEvent
 import androidx.paging.TestPagingSource.Companion.LOAD_ERROR
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertFalse
@@ -66,7 +67,6 @@
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.withContext
 import kotlinx.coroutines.yield
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherTest.kt
index 1a3a4c4..5f75646 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PageFetcherTest.kt
@@ -26,6 +26,7 @@
 import androidx.paging.RemoteMediator.InitializeAction.LAUNCH_INITIAL_REFRESH
 import androidx.paging.RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertNotEquals
@@ -51,7 +52,6 @@
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.withContext
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PageKeyedDataSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PageKeyedDataSourceTest.kt
index 6f89ef0..9c044ef 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PageKeyedDataSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PageKeyedDataSourceTest.kt
@@ -16,23 +16,23 @@
 
 package androidx.paging
 
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
+import kotlin.test.fail
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertFalse
-import org.junit.Assert.assertTrue
-import org.junit.Assert.fail
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
-import kotlin.coroutines.EmptyCoroutineContext
-import kotlin.test.assertFailsWith
-import kotlinx.coroutines.test.StandardTestDispatcher
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagePresenterTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagePresenterTest.kt
index e979bcc..13d0b94 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagePresenterTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagePresenterTest.kt
@@ -22,12 +22,12 @@
 import androidx.paging.PagePresenter.ProcessPageEventCallback
 import androidx.paging.PagingSource.LoadResult.Page.Companion.COUNT_UNDEFINED
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.fail
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @Suppress("TestFunctionName")
 internal fun <T : Any> PagePresenter(
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigBuilderTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigBuilderTest.kt
index ad107b9..c830172 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigBuilderTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigBuilderTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.paging
 
-import org.junit.Assert
-import org.junit.Test
+import kotlin.test.Test
+import kotlin.test.assertEquals
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
@@ -29,12 +29,12 @@
         val config = PagedList.Config.Builder()
             .setPageSize(10)
             .build()
-        Assert.assertEquals(10, config.pageSize)
-        Assert.assertEquals(30, config.initialLoadSizeHint)
-        Assert.assertEquals(true, config.enablePlaceholders)
-        Assert.assertEquals(10, config.prefetchDistance)
+        assertEquals(10, config.pageSize)
+        assertEquals(30, config.initialLoadSizeHint)
+        assertEquals(true, config.enablePlaceholders)
+        assertEquals(10, config.prefetchDistance)
         @Suppress("DEPRECATION")
-        Assert.assertEquals(PagedList.Config.MAX_SIZE_UNBOUNDED, config.maxSize)
+        assertEquals(PagedList.Config.MAX_SIZE_UNBOUNDED, config.maxSize)
     }
 
     @Test(expected = IllegalArgumentException::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigTest.kt
index 6746965..c34f7bf 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagedListConfigTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.paging
 
-import org.junit.Assert.assertEquals
-import org.junit.Test
+import kotlin.test.Test
+import kotlin.test.assertEquals
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagedListTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagedListTest.kt
index 3d7479b..b053726 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagedListTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagedListTest.kt
@@ -21,19 +21,19 @@
 import androidx.testutils.TestDispatcher
 import androidx.testutils.TestExecutor
 import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.runBlocking
-import org.junit.Assert.assertEquals
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import java.util.concurrent.Executor
 import kotlin.concurrent.thread
 import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertTrue
 import kotlin.test.fail
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.runBlocking
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class PagedListTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagedStorageTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagedStorageTest.kt
index 88d8315..5bc9b07 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagedStorageTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagedStorageTest.kt
@@ -17,17 +17,17 @@
 package androidx.paging
 
 import androidx.paging.PagingSource.LoadResult.Page
-import org.junit.Assert.assertArrayEquals
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertFalse
-import org.junit.Assert.assertTrue
-import org.junit.Test
+import kotlin.test.Test
+import kotlin.test.assertContentEquals
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertNotNull
+import kotlin.test.assertTrue
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
-import kotlin.test.assertNotNull
 
 @RunWith(JUnit4::class)
 class PagedStorageTest {
@@ -41,7 +41,7 @@
     fun construct() {
         val storage = PagedStorage(2, pageOf("a", "b"), 2)
 
-        assertArrayEquals(arrayOf(null, null, "a", "b", null, null), storage.toArray())
+        assertContentEquals(arrayOf(null, null, "a", "b", null, null), storage.toArray())
         assertEquals(6, storage.size)
     }
 
@@ -52,7 +52,7 @@
         val storage = PagedStorage(2, pageOf("a", "b"), 2)
         storage.appendPage(pageOf("c", "d"), callback)
 
-        assertArrayEquals(arrayOf(null, null, "a", "b", "c", "d"), storage.toArray())
+        assertContentEquals(arrayOf(null, null, "a", "b", "c", "d"), storage.toArray())
         verify(callback).onPageAppended(4, 2, 0)
         verifyNoMoreInteractions(callback)
     }
@@ -64,7 +64,7 @@
         val storage = PagedStorage(2, pageOf("a", "b"), 0)
         storage.appendPage(pageOf("c", "d"), callback)
 
-        assertArrayEquals(arrayOf(null, null, "a", "b", "c", "d"), storage.toArray())
+        assertContentEquals(arrayOf(null, null, "a", "b", "c", "d"), storage.toArray())
         verify(callback).onPageAppended(4, 0, 2)
         verifyNoMoreInteractions(callback)
     }
@@ -78,14 +78,14 @@
         // change 2 nulls into c, d
         storage.appendPage(pageOf("c", "d"), callback)
 
-        assertArrayEquals(arrayOf(null, null, "a", "b", "c", "d"), storage.toArray())
+        assertContentEquals(arrayOf(null, null, "a", "b", "c", "d"), storage.toArray())
         verify(callback).onPageAppended(4, 2, 0)
         verifyNoMoreInteractions(callback)
 
         // append e, f
         storage.appendPage(pageOf("e", "f"), callback)
 
-        assertArrayEquals(arrayOf(null, null, "a", "b", "c", "d", "e", "f"), storage.toArray())
+        assertContentEquals(arrayOf(null, null, "a", "b", "c", "d", "e", "f"), storage.toArray())
         verify(callback).onPageAppended(6, 0, 2)
         verifyNoMoreInteractions(callback)
     }
@@ -97,7 +97,7 @@
         val storage = PagedStorage(2, pageOf("c", "d"), 2)
         storage.prependPage(pageOf("a", "b"), callback)
 
-        assertArrayEquals(arrayOf("a", "b", "c", "d", null, null), storage.toArray())
+        assertContentEquals(arrayOf("a", "b", "c", "d", null, null), storage.toArray())
         verify(callback).onPagePrepended(0, 2, 0)
         verifyNoMoreInteractions(callback)
     }
@@ -109,7 +109,7 @@
         val storage = PagedStorage(0, pageOf("c", "d"), 2)
         storage.prependPage(pageOf("a", "b"), callback)
 
-        assertArrayEquals(arrayOf("a", "b", "c", "d", null, null), storage.toArray())
+        assertContentEquals(arrayOf("a", "b", "c", "d", null, null), storage.toArray())
         verify(callback).onPagePrepended(0, 0, 2)
         verifyNoMoreInteractions(callback)
     }
@@ -123,14 +123,14 @@
         // change 2 nulls into c, d
         storage.prependPage(pageOf("c", "d"), callback)
 
-        assertArrayEquals(arrayOf("c", "d", "e", "f", null, null), storage.toArray())
+        assertContentEquals(arrayOf("c", "d", "e", "f", null, null), storage.toArray())
         verify(callback).onPagePrepended(0, 2, 0)
         verifyNoMoreInteractions(callback)
 
         // prepend a, b
         storage.prependPage(pageOf("a", "b"), callback)
 
-        assertArrayEquals(arrayOf("a", "b", "c", "d", "e", "f", null, null), storage.toArray())
+        assertContentEquals(arrayOf("a", "b", "c", "d", "e", "f", null, null), storage.toArray())
         verify(callback).onPagePrepended(0, 0, 2)
         verifyNoMoreInteractions(callback)
     }
@@ -141,7 +141,7 @@
         val storage = PagedStorage(1, pageOf("a"), 6)
         storage.appendPage(pageOf("b", "c"), callback)
         storage.appendPage(pageOf("d", "e", "f"), callback)
-        assertArrayEquals(arrayOf(null, "a", "b", "c", "d", "e", "f", null), storage.toArray())
+        assertContentEquals(arrayOf(null, "a", "b", "c", "d", "e", "f", null), storage.toArray())
     }
 
     @Test
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagingConfigTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagingConfigTest.kt
index fa70f64..e8eb9179 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagingConfigTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagingConfigTest.kt
@@ -17,11 +17,11 @@
 package androidx.paging
 
 import androidx.paging.PagingConfig.Companion.MAX_SIZE_UNBOUNDED
-import org.junit.Assert.assertEquals
-import org.junit.Test
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertFailsWith
 
 @RunWith(JUnit4::class)
 class PagingConfigTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagingDataDifferTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagingDataDifferTest.kt
index 893b89c..1ee318c 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagingDataDifferTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagingDataDifferTest.kt
@@ -24,6 +24,7 @@
 import androidx.testutils.MainDispatcherRule
 import com.google.common.truth.Truth.assertThat
 import kotlin.coroutines.ContinuationInterceptor
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFailsWith
 import kotlin.test.assertFalse
@@ -56,7 +57,6 @@
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.withContext
 import org.junit.Rule
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagingSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagingSourceTest.kt
index bf9b097..7effb00 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagingSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagingSourceTest.kt
@@ -20,14 +20,14 @@
 import androidx.paging.PagingSource.LoadResult
 import androidx.paging.PagingSource.LoadResult.Page.Companion.COUNT_UNDEFINED
 import com.google.common.truth.Truth.assertThat
+import kotlin.random.Random
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertTrue
 import kotlinx.coroutines.runBlocking
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.random.Random
-import kotlin.test.assertFailsWith
 
 @RunWith(JUnit4::class)
 class PagingSourceTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PagingStateTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PagingStateTest.kt
index 23a69fc..c2a4bff 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PagingStateTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PagingStateTest.kt
@@ -17,12 +17,12 @@
 package androidx.paging
 
 import androidx.paging.PagingSource.LoadResult.Page
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
+import kotlin.test.Test
 import kotlin.test.assertEquals
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class PagingStateTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/PositionalDataSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/PositionalDataSourceTest.kt
index 3c428c1..036e255 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/PositionalDataSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/PositionalDataSourceTest.kt
@@ -16,21 +16,21 @@
 
 package androidx.paging
 
+import java.util.concurrent.Executor
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
+import kotlin.test.fail
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
-import org.junit.Assert.fail
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
-import java.util.concurrent.Executor
 
 @Suppress("DEPRECATION")
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/RemoteMediatorAccessorTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/RemoteMediatorAccessorTest.kt
index c59ebc0..5e27e87 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/RemoteMediatorAccessorTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/RemoteMediatorAccessorTest.kt
@@ -25,22 +25,22 @@
 import androidx.paging.RemoteMediatorMock.LoadEvent
 import androidx.paging.TestPagingSource.Companion.LOAD_ERROR
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.atomic.AtomicBoolean
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.fail
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.advanceTimeBy
 import kotlinx.coroutines.test.advanceUntilIdle
 import kotlinx.coroutines.test.runCurrent
-import org.junit.Test
+import kotlinx.coroutines.test.runTest
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.concurrent.atomic.AtomicBoolean
-import kotlin.test.assertEquals
-import kotlin.test.fail
 
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalPagingApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsTest.kt
index 88e807e..bff6c35 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsTest.kt
@@ -16,22 +16,22 @@
 
 package androidx.paging
 
-import androidx.paging.LoadState.NotLoading
 import androidx.paging.LoadState.Loading
+import androidx.paging.LoadState.NotLoading
 import androidx.paging.LoadType.APPEND
 import androidx.paging.LoadType.PREPEND
 import androidx.paging.PageEvent.Drop
 import androidx.paging.TerminalSeparatorType.FULLY_COMPLETE
 import androidx.paging.TerminalSeparatorType.SOURCE_COMPLETE
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
+import kotlin.test.assertEquals
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.toList
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
 
 private fun <T : Any> List<PageEvent<T>>.getItems() = mapNotNull { event ->
     when (event) {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsWithRemoteMediatorTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsWithRemoteMediatorTest.kt
index ec78e09..15c3097 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsWithRemoteMediatorTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/SeparatorsWithRemoteMediatorTest.kt
@@ -21,14 +21,14 @@
 import androidx.paging.TerminalSeparatorType.FULLY_COMPLETE
 import androidx.paging.TerminalSeparatorType.SOURCE_COMPLETE
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.toList
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertFailsWith
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/SimpleChannelFlowTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/SimpleChannelFlowTest.kt
index 237e540..4971df3 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/SimpleChannelFlowTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/SimpleChannelFlowTest.kt
@@ -17,9 +17,12 @@
 package androidx.paging
 
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
+import kotlin.test.fail
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.awaitCancellation
 import kotlinx.coroutines.channels.ProducerScope
@@ -35,15 +38,12 @@
 import kotlinx.coroutines.flow.takeWhile
 import kotlinx.coroutines.flow.toList
 import kotlinx.coroutines.launch
-import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.advanceTimeBy
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.test.fail
 
 @RunWith(Parameterized::class)
 @OptIn(ExperimentalCoroutinesApi::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/SimpleTransformLatestTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/SimpleTransformLatestTest.kt
index 7cc311e..624b8c4 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/SimpleTransformLatestTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/SimpleTransformLatestTest.kt
@@ -17,6 +17,7 @@
 package androidx.paging
 
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.awaitCancellation
 import kotlinx.coroutines.delay
@@ -28,7 +29,6 @@
 import kotlinx.coroutines.flow.transformLatest
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/SingleRunnerTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/SingleRunnerTest.kt
index 9e80ac8..1e29a83c 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/SingleRunnerTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/SingleRunnerTest.kt
@@ -17,6 +17,13 @@
 package androidx.paging
 
 import com.google.common.truth.Truth.assertThat
+import java.util.Collections
+import java.util.concurrent.CountDownLatch
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
+import kotlin.time.Duration.Companion.seconds
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.Dispatchers
@@ -32,15 +39,8 @@
 import kotlinx.coroutines.test.runTest
 import kotlinx.coroutines.withContext
 import kotlinx.coroutines.withTimeout
-import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.Collections
-import java.util.concurrent.CountDownLatch
-import kotlin.test.assertEquals
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
-import kotlin.time.Duration.Companion.seconds
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/WrappedItemKeyedDataSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/WrappedItemKeyedDataSourceTest.kt
index f642d6c..e794949 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/WrappedItemKeyedDataSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/WrappedItemKeyedDataSourceTest.kt
@@ -16,10 +16,10 @@
 
 package androidx.paging
 
-import org.junit.Test
+import kotlin.test.Test
+import kotlin.test.assertTrue
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertTrue
 
 @RunWith(JUnit4::class)
 class WrappedItemKeyedDataSourceTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPageKeyedDataSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPageKeyedDataSourceTest.kt
index cf4ef24..4202070 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPageKeyedDataSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPageKeyedDataSourceTest.kt
@@ -16,10 +16,10 @@
 
 package androidx.paging
 
-import org.junit.Test
+import kotlin.test.Test
+import kotlin.test.assertTrue
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertTrue
 
 @RunWith(JUnit4::class)
 class WrappedPageKeyedDataSourceTest {
diff --git a/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPositionalDataSourceTest.kt b/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPositionalDataSourceTest.kt
index b56fe139..d3a54237 100644
--- a/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPositionalDataSourceTest.kt
+++ b/paging/paging-common/src/test/kotlin/androidx/paging/WrappedPositionalDataSourceTest.kt
@@ -16,10 +16,10 @@
 
 package androidx.paging
 
-import org.junit.Test
+import kotlin.test.Test
+import kotlin.test.assertTrue
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertTrue
 
 @RunWith(JUnit4::class)
 class WrappedPositionalDataSourceTest {
diff --git a/paging/paging-compose/build.gradle b/paging/paging-compose/build.gradle
index d31e914..8affe5a 100644
--- a/paging/paging-compose/build.gradle
+++ b/paging/paging-compose/build.gradle
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "Android Paging-Compose"
+    name = "Paging-Compose"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.PAGING_COMPOSE
     inceptionYear = "2020"
diff --git a/paging/paging-compose/integration-tests/paging-demos/src/main/java/androidx/paging/compose/demos/room/PagingRoomSample.kt b/paging/paging-compose/integration-tests/paging-demos/src/main/java/androidx/paging/compose/demos/room/PagingRoomSample.kt
index cdcd575..868b4b3 100644
--- a/paging/paging-compose/integration-tests/paging-demos/src/main/java/androidx/paging/compose/demos/room/PagingRoomSample.kt
+++ b/paging/paging-compose/integration-tests/paging-demos/src/main/java/androidx/paging/compose/demos/room/PagingRoomSample.kt
@@ -35,9 +35,9 @@
 import androidx.paging.PagingConfig
 import androidx.paging.compose.collectAsLazyPagingItems
 import androidx.paging.compose.itemKey
+import kotlin.random.Random
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
-import kotlin.random.Random
 
 @Composable
 fun PagingRoomDemo() {
diff --git a/paging/paging-compose/samples/build.gradle b/paging/paging-compose/samples/build.gradle
index 6fd15b4..753063b 100644
--- a/paging/paging-compose/samples/build.gradle
+++ b/paging/paging-compose/samples/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Paging Compose Samples"
+    name = "Paging Compose Samples"
     type = LibraryType.SAMPLES
     mavenVersion = LibraryVersions.PAGING_COMPOSE
     inceptionYear = "2020"
diff --git a/paging/paging-compose/src/androidTest/java/androidx/paging/compose/LazyPagingItemsTest.kt b/paging/paging-compose/src/androidTest/java/androidx/paging/compose/LazyPagingItemsTest.kt
index f3ae0ae..f112c3f 100644
--- a/paging/paging-compose/src/androidTest/java/androidx/paging/compose/LazyPagingItemsTest.kt
+++ b/paging/paging-compose/src/androidTest/java/androidx/paging/compose/LazyPagingItemsTest.kt
@@ -51,9 +51,9 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.isActive
 import kotlinx.coroutines.runBlocking
-import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
diff --git a/paging/paging-compose/src/main/java/androidx/paging/compose/LazyFoundationExtensions.kt b/paging/paging-compose/src/main/java/androidx/paging/compose/LazyFoundationExtensions.kt
index 5b28b9f..bb24cb0 100644
--- a/paging/paging-compose/src/main/java/androidx/paging/compose/LazyFoundationExtensions.kt
+++ b/paging/paging-compose/src/main/java/androidx/paging/compose/LazyFoundationExtensions.kt
@@ -16,8 +16,8 @@
 
 package androidx.paging.compose
 
-import androidx.paging.PagingConfig
 import androidx.compose.foundation.lazy.grid.LazyGridScope
+import androidx.paging.PagingConfig
 
 /**
  * Returns a factory of stable and unique keys representing the item.
diff --git a/paging/paging-guava/build.gradle b/paging/paging-guava/build.gradle
index 041702f..f0151c2 100644
--- a/paging/paging-guava/build.gradle
+++ b/paging/paging-guava/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "Android Paging Guava"
+    name = "Paging Guava"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Android Paging Guava"
diff --git a/paging/paging-guava/src/main/java/androidx/paging/ListenableFuturePagingData.kt b/paging/paging-guava/src/main/java/androidx/paging/ListenableFuturePagingData.kt
index 9a0d0bd..4ce7253 100644
--- a/paging/paging-guava/src/main/java/androidx/paging/ListenableFuturePagingData.kt
+++ b/paging/paging-guava/src/main/java/androidx/paging/ListenableFuturePagingData.kt
@@ -20,10 +20,10 @@
 
 import androidx.annotation.CheckResult
 import com.google.common.util.concurrent.AsyncFunction
+import java.util.concurrent.Executor
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.guava.await
 import kotlinx.coroutines.withContext
-import java.util.concurrent.Executor
 
 /**
  * Returns a [PagingData] containing the result of applying the given [transform] to each
diff --git a/paging/paging-guava/src/test/java/androidx/paging/ListenableFuturePagingSourceTest.kt b/paging/paging-guava/src/test/java/androidx/paging/ListenableFuturePagingSourceTest.kt
index 747310e..ae8a63a 100644
--- a/paging/paging-guava/src/test/java/androidx/paging/ListenableFuturePagingSourceTest.kt
+++ b/paging/paging-guava/src/test/java/androidx/paging/ListenableFuturePagingSourceTest.kt
@@ -20,12 +20,12 @@
 import androidx.paging.PagingSource.LoadResult.Page
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.SettableFuture
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
 
 @RunWith(JUnit4::class)
 class ListenableFuturePagingSourceTest {
diff --git a/paging/paging-guava/src/test/java/androidx/paging/ListenableFutureRemoteMediatorTest.kt b/paging/paging-guava/src/test/java/androidx/paging/ListenableFutureRemoteMediatorTest.kt
index e062eb5..2bf2473 100644
--- a/paging/paging-guava/src/test/java/androidx/paging/ListenableFutureRemoteMediatorTest.kt
+++ b/paging/paging-guava/src/test/java/androidx/paging/ListenableFutureRemoteMediatorTest.kt
@@ -20,13 +20,13 @@
 import androidx.paging.RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH
 import com.google.common.util.concurrent.Futures
 import com.google.common.util.concurrent.ListenableFuture
+import kotlin.test.assertEquals
+import kotlin.test.fail
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.runTest
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
-import kotlin.test.fail
 
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalPagingApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-runtime-ktx/build.gradle b/paging/paging-runtime-ktx/build.gradle
index 3f2e05d..f674b7e 100644
--- a/paging/paging-runtime-ktx/build.gradle
+++ b/paging/paging-runtime-ktx/build.gradle
@@ -29,7 +29,7 @@
 }
 
 androidx {
-    name = "Android Paging-Runtime Kotlin Extensions"
+    name = "Paging-Runtime Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Kotlin extensions for 'paging-runtime' artifact"
diff --git a/paging/paging-runtime/build.gradle b/paging/paging-runtime/build.gradle
index 47fdac8..de64d71 100644
--- a/paging/paging-runtime/build.gradle
+++ b/paging/paging-runtime/build.gradle
@@ -61,7 +61,7 @@
 }
 
 androidx {
-    name = "Android Paging-Runtime"
+    name = "Paging-Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Paging-Runtime"
diff --git a/paging/paging-runtime/src/androidTest/java/androidx/paging/AsyncPagedListDifferTest.kt b/paging/paging-runtime/src/androidTest/java/androidx/paging/AsyncPagedListDifferTest.kt
index 65537a6..23de20f 100644
--- a/paging/paging-runtime/src/androidTest/java/androidx/paging/AsyncPagedListDifferTest.kt
+++ b/paging/paging-runtime/src/androidTest/java/androidx/paging/AsyncPagedListDifferTest.kt
@@ -31,6 +31,9 @@
 import androidx.test.filters.SmallTest
 import androidx.testutils.TestExecutor
 import com.google.common.truth.Truth.assertThat
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.asCoroutineDispatcher
 import org.junit.Assert.assertEquals
@@ -39,9 +42,6 @@
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.coroutines.EmptyCoroutineContext
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/paging/paging-runtime/src/androidTest/java/androidx/paging/LivePagedListTest.kt b/paging/paging-runtime/src/androidTest/java/androidx/paging/LivePagedListTest.kt
index 5affe1c..7d0442c 100644
--- a/paging/paging-runtime/src/androidTest/java/androidx/paging/LivePagedListTest.kt
+++ b/paging/paging-runtime/src/androidTest/java/androidx/paging/LivePagedListTest.kt
@@ -28,6 +28,8 @@
 import androidx.test.filters.SmallTest
 import androidx.testutils.TestDispatcher
 import com.google.common.truth.Truth.assertThat
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.Dispatchers
@@ -35,14 +37,12 @@
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.test.TestCoroutineScope
+import kotlinx.coroutines.test.advanceUntilIdle
 import kotlinx.coroutines.test.runBlockingTest
 import org.junit.Assert.assertNotNull
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.test.assertEquals
-import kotlin.test.assertTrue
-import kotlinx.coroutines.test.advanceUntilIdle
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/paging/paging-runtime/src/androidTest/java/androidx/paging/LoadFullListTest.kt b/paging/paging-runtime/src/androidTest/java/androidx/paging/LoadFullListTest.kt
index 9c9c120..5bce270 100644
--- a/paging/paging-runtime/src/androidTest/java/androidx/paging/LoadFullListTest.kt
+++ b/paging/paging-runtime/src/androidTest/java/androidx/paging/LoadFullListTest.kt
@@ -20,6 +20,7 @@
 import androidx.test.filters.MediumTest
 import androidx.testutils.MainDispatcherRule
 import com.google.common.truth.Truth.assertThat
+import kotlin.coroutines.ContinuationInterceptor
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -33,7 +34,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import kotlin.coroutines.ContinuationInterceptor
 
 @OptIn(ExperimentalCoroutinesApi::class)
 @MediumTest
diff --git a/paging/paging-runtime/src/androidTest/java/androidx/paging/NullPaddedListDiffWithRecyclerViewTest.kt b/paging/paging-runtime/src/androidTest/java/androidx/paging/NullPaddedListDiffWithRecyclerViewTest.kt
index a1093bf..edfa92a 100644
--- a/paging/paging-runtime/src/androidTest/java/androidx/paging/NullPaddedListDiffWithRecyclerViewTest.kt
+++ b/paging/paging-runtime/src/androidTest/java/androidx/paging/NullPaddedListDiffWithRecyclerViewTest.kt
@@ -30,10 +30,10 @@
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import kotlin.random.Random
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.random.Random
 
 /**
  * For some tests, this test uses a real recyclerview with a real adapter to serve as an
diff --git a/paging/paging-runtime/src/androidTest/java/androidx/paging/StateRestorationTest.kt b/paging/paging-runtime/src/androidTest/java/androidx/paging/StateRestorationTest.kt
index 338644c..f608c44 100644
--- a/paging/paging-runtime/src/androidTest/java/androidx/paging/StateRestorationTest.kt
+++ b/paging/paging-runtime/src/androidTest/java/androidx/paging/StateRestorationTest.kt
@@ -35,6 +35,9 @@
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import kotlin.coroutines.ContinuationInterceptor
+import kotlin.coroutines.CoroutineContext
+import kotlin.time.ExperimentalTime
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.InternalCoroutinesApi
 import kotlinx.coroutines.Job
@@ -45,17 +48,14 @@
 import kotlinx.coroutines.internal.ThreadSafeHeap
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.TestCoroutineDispatcher
+import kotlinx.coroutines.test.TestCoroutineScheduler
 import kotlinx.coroutines.test.TestCoroutineScope
 import kotlinx.coroutines.test.runBlockingTest
 import kotlinx.coroutines.withContext
 import org.junit.Before
+import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.coroutines.ContinuationInterceptor
-import kotlin.coroutines.CoroutineContext
-import kotlin.time.ExperimentalTime
-import kotlinx.coroutines.test.TestCoroutineScheduler
-import org.junit.Ignore
 
 /**
  * We are only capable of restoring state if one the two is valid:
diff --git a/paging/paging-runtime/src/main/java/androidx/paging/AsyncPagedListDiffer.kt b/paging/paging-runtime/src/main/java/androidx/paging/AsyncPagedListDiffer.kt
index 031e056..5ed8435 100644
--- a/paging/paging-runtime/src/main/java/androidx/paging/AsyncPagedListDiffer.kt
+++ b/paging/paging-runtime/src/main/java/androidx/paging/AsyncPagedListDiffer.kt
@@ -19,9 +19,9 @@
 import androidx.annotation.VisibleForTesting
 import androidx.arch.core.executor.ArchTaskExecutor
 import androidx.lifecycle.LiveData
-import androidx.paging.LoadType.REFRESH
-import androidx.paging.LoadType.PREPEND
 import androidx.paging.LoadType.APPEND
+import androidx.paging.LoadType.PREPEND
+import androidx.paging.LoadType.REFRESH
 import androidx.recyclerview.widget.AdapterListUpdateCallback
 import androidx.recyclerview.widget.AsyncDifferConfig
 import androidx.recyclerview.widget.DiffUtil
diff --git a/paging/paging-runtime/src/main/java/androidx/paging/LivePagedList.kt b/paging/paging-runtime/src/main/java/androidx/paging/LivePagedList.kt
index ea2f8d1f..f4826a1 100644
--- a/paging/paging-runtime/src/main/java/androidx/paging/LivePagedList.kt
+++ b/paging/paging-runtime/src/main/java/androidx/paging/LivePagedList.kt
@@ -21,6 +21,7 @@
 import androidx.paging.LoadState.Error
 import androidx.paging.LoadState.Loading
 import androidx.paging.LoadType.REFRESH
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.DelicateCoroutinesApi
@@ -29,7 +30,6 @@
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
-import java.util.concurrent.Executor
 
 @Suppress("DEPRECATION")
 internal class LivePagedList<Key : Any, Value : Any>(
diff --git a/paging/paging-runtime/src/main/java/androidx/paging/LivePagedListBuilder.kt b/paging/paging-runtime/src/main/java/androidx/paging/LivePagedListBuilder.kt
index c770466..34a64c7 100644
--- a/paging/paging-runtime/src/main/java/androidx/paging/LivePagedListBuilder.kt
+++ b/paging/paging-runtime/src/main/java/androidx/paging/LivePagedListBuilder.kt
@@ -18,11 +18,11 @@
 
 import androidx.arch.core.executor.ArchTaskExecutor
 import androidx.lifecycle.LiveData
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.asCoroutineDispatcher
-import java.util.concurrent.Executor
 
 /**
  * Builder for `LiveData<PagedList>` for Java users, given a [androidx.paging.DataSource.Factory]
diff --git a/paging/paging-runtime/src/main/java/androidx/paging/PagedListAdapter.kt b/paging/paging-runtime/src/main/java/androidx/paging/PagedListAdapter.kt
index ba7fec9..b0dbec5 100644
--- a/paging/paging-runtime/src/main/java/androidx/paging/PagedListAdapter.kt
+++ b/paging/paging-runtime/src/main/java/androidx/paging/PagedListAdapter.kt
@@ -18,8 +18,8 @@
 
 import androidx.recyclerview.widget.AdapterListUpdateCallback
 import androidx.recyclerview.widget.AsyncDifferConfig
-import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.ConcatAdapter
+import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.RecyclerView
 
 /**
diff --git a/paging/paging-rxjava2-ktx/build.gradle b/paging/paging-rxjava2-ktx/build.gradle
index a355219..b53bd80 100644
--- a/paging/paging-rxjava2-ktx/build.gradle
+++ b/paging/paging-rxjava2-ktx/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "Android Paging RxJava2 Kotlin Extensions"
+    name = "Paging RxJava2 Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Kotlin extensions for 'paging-rxjava2' artifact"
diff --git a/paging/paging-rxjava2/build.gradle b/paging/paging-rxjava2/build.gradle
index c830a91..5f779d0 100644
--- a/paging/paging-rxjava2/build.gradle
+++ b/paging/paging-rxjava2/build.gradle
@@ -47,7 +47,7 @@
 }
 
 androidx {
-    name = "Android Paging-RXJava2"
+    name = "Paging-RXJava2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Paging-RXJava2"
diff --git a/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagedListBuilderTest.kt b/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagedListBuilderTest.kt
index b28a8b4..0c02a18 100644
--- a/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagedListBuilderTest.kt
+++ b/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagedListBuilderTest.kt
@@ -22,20 +22,20 @@
 import androidx.paging.LoadType.REFRESH
 import androidx.testutils.DirectDispatcher
 import androidx.testutils.TestDispatcher
+import com.google.common.truth.Truth.assertThat
 import io.reactivex.Observable
 import io.reactivex.observers.TestObserver
 import io.reactivex.schedulers.Schedulers
 import io.reactivex.schedulers.TestScheduler
+import kotlin.test.assertTrue
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.DelicateCoroutinesApi
+import kotlinx.coroutines.asExecutor
+import kotlinx.coroutines.withContext
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertTrue
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.asExecutor
-import kotlinx.coroutines.withContext
 
 @Suppress("DEPRECATION")
 @RunWith(JUnit4::class)
diff --git a/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagingSourceTest.kt b/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagingSourceTest.kt
index d64a55f..ca231a9 100644
--- a/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagingSourceTest.kt
+++ b/paging/paging-rxjava2/src/test/java/androidx/paging/RxPagingSourceTest.kt
@@ -19,12 +19,12 @@
 import androidx.paging.PagingSource.LoadResult.Page
 import androidx.paging.rxjava2.RxPagingSource
 import io.reactivex.Single
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
 
 @RunWith(JUnit4::class)
 class RxPagingSourceTest {
diff --git a/paging/paging-rxjava2/src/test/java/androidx/paging/RxRemoteMediatorTest.kt b/paging/paging-rxjava2/src/test/java/androidx/paging/RxRemoteMediatorTest.kt
index 7ef9953..4816060 100644
--- a/paging/paging-rxjava2/src/test/java/androidx/paging/RxRemoteMediatorTest.kt
+++ b/paging/paging-rxjava2/src/test/java/androidx/paging/RxRemoteMediatorTest.kt
@@ -20,13 +20,13 @@
 import androidx.paging.RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH
 import androidx.paging.rxjava2.RxRemoteMediator
 import io.reactivex.Single
+import kotlin.test.assertEquals
+import kotlin.test.fail
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.runTest
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
-import kotlin.test.fail
 
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalPagingApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-rxjava3/build.gradle b/paging/paging-rxjava3/build.gradle
index dc27213..05d795c 100644
--- a/paging/paging-rxjava3/build.gradle
+++ b/paging/paging-rxjava3/build.gradle
@@ -45,7 +45,7 @@
 }
 
 androidx {
-    name = "Android Paging-RxJava3"
+    name = "Paging-RxJava3"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android Paging-RxJava3"
diff --git a/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagedListBuilderTest.kt b/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagedListBuilderTest.kt
index 06a869e..3bd051e 100644
--- a/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagedListBuilderTest.kt
+++ b/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagedListBuilderTest.kt
@@ -25,20 +25,20 @@
 import androidx.paging.rxjava3.RxPagedListBuilder
 import androidx.testutils.DirectDispatcher
 import androidx.testutils.TestDispatcher
+import com.google.common.truth.Truth.assertThat
 import io.reactivex.rxjava3.core.Observable
 import io.reactivex.rxjava3.observers.TestObserver
 import io.reactivex.rxjava3.schedulers.Schedulers
 import io.reactivex.rxjava3.schedulers.TestScheduler
+import kotlin.test.assertTrue
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.DelicateCoroutinesApi
+import kotlinx.coroutines.asExecutor
+import kotlinx.coroutines.withContext
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertTrue
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.asExecutor
-import kotlinx.coroutines.withContext
 
 @RunWith(JUnit4::class)
 class RxPagedListBuilderTest {
diff --git a/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagingSourceTest.kt b/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagingSourceTest.kt
index 15bc792..9d40b9d 100644
--- a/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagingSourceTest.kt
+++ b/paging/paging-rxjava3/src/test/java/androidx/paging/RxPagingSourceTest.kt
@@ -19,12 +19,12 @@
 import androidx.paging.PagingSource.LoadResult.Page
 import androidx.paging.rxjava3.RxPagingSource
 import io.reactivex.rxjava3.core.Single
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
-import kotlin.test.assertFailsWith
 
 @RunWith(JUnit4::class)
 class RxPagingSourceTest {
diff --git a/paging/paging-rxjava3/src/test/java/androidx/paging/RxRemoteMediatorTest.kt b/paging/paging-rxjava3/src/test/java/androidx/paging/RxRemoteMediatorTest.kt
index 9cd7890..1861c8f 100644
--- a/paging/paging-rxjava3/src/test/java/androidx/paging/RxRemoteMediatorTest.kt
+++ b/paging/paging-rxjava3/src/test/java/androidx/paging/RxRemoteMediatorTest.kt
@@ -20,13 +20,13 @@
 import androidx.paging.RemoteMediator.InitializeAction.SKIP_INITIAL_REFRESH
 import androidx.paging.rxjava3.RxRemoteMediator
 import io.reactivex.rxjava3.core.Single
+import kotlin.test.assertEquals
+import kotlin.test.fail
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.runTest
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.test.assertEquals
-import kotlin.test.fail
 
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalPagingApi::class)
 @RunWith(JUnit4::class)
diff --git a/paging/paging-testing/build.gradle b/paging/paging-testing/build.gradle
index 18e00f6..9557e62 100644
--- a/paging/paging-testing/build.gradle
+++ b/paging/paging-testing/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "androidx.paging:paging-testing"
+    name = "Paging Testing Extensions"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Test artifact for Paging implementation"
diff --git a/paging/paging-testing/src/main/java/androidx/paging/testing/LoadErrorHandler.kt b/paging/paging-testing/src/main/java/androidx/paging/testing/LoadErrorHandler.kt
index 4651e95..2e8df82 100644
--- a/paging/paging-testing/src/main/java/androidx/paging/testing/LoadErrorHandler.kt
+++ b/paging/paging-testing/src/main/java/androidx/paging/testing/LoadErrorHandler.kt
@@ -17,10 +17,10 @@
 package androidx.paging.testing
 
 import androidx.paging.CombinedLoadStates
+import androidx.paging.LoadState
 import androidx.paging.PagingDataDiffer
 import androidx.paging.PagingSource
 import androidx.paging.PagingSource.LoadResult
-import androidx.paging.LoadState
 
 /**
  * An interface to implement the error recovery strategy when [PagingSource]
diff --git a/paging/paging-testing/src/main/java/androidx/paging/testing/PagerFlowSnapshot.kt b/paging/paging-testing/src/main/java/androidx/paging/testing/PagerFlowSnapshot.kt
index 64c8ece..8a85c09 100644
--- a/paging/paging-testing/src/main/java/androidx/paging/testing/PagerFlowSnapshot.kt
+++ b/paging/paging-testing/src/main/java/androidx/paging/testing/PagerFlowSnapshot.kt
@@ -25,9 +25,9 @@
 import androidx.paging.Pager
 import androidx.paging.PagingData
 import androidx.paging.PagingDataDiffer
-import androidx.paging.testing.ErrorRecovery.THROW
 import androidx.paging.testing.ErrorRecovery.RETRY
 import androidx.paging.testing.ErrorRecovery.RETURN_CURRENT_SNAPSHOT
+import androidx.paging.testing.ErrorRecovery.THROW
 import androidx.paging.testing.LoaderCallback.CallbackType.ON_CHANGED
 import androidx.paging.testing.LoaderCallback.CallbackType.ON_INSERTED
 import androidx.paging.testing.LoaderCallback.CallbackType.ON_REMOVED
@@ -84,7 +84,7 @@
     }
 
     // PagingDataDiffer automatically switches to Dispatchers.Main to call presentNewList
-    val differ = object : PagingDataDiffer<Value>(callback) {
+    val differ = object : PagingDataDiffer<Value>(callback, coroutineScope.coroutineContext) {
         override suspend fun presentNewList(
             previousList: NullPaddedList<Value>,
             newList: NullPaddedList<Value>,
diff --git a/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSource.kt b/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSource.kt
index 5e28a95..89bca0e 100644
--- a/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSource.kt
+++ b/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSource.kt
@@ -17,11 +17,11 @@
 package androidx.paging.testing
 
 import androidx.paging.Pager
+import androidx.paging.PagingSource
 import androidx.paging.PagingSource.LoadParams
 import androidx.paging.PagingSource.LoadParams.Append
 import androidx.paging.PagingSource.LoadParams.Prepend
 import androidx.paging.PagingSource.LoadParams.Refresh
-import androidx.paging.PagingSource
 import androidx.paging.PagingState
 
 /**
diff --git a/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSourceFactory.kt b/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSourceFactory.kt
index 2a719a6..6744b5e 100644
--- a/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSourceFactory.kt
+++ b/paging/paging-testing/src/main/java/androidx/paging/testing/StaticListPagingSourceFactory.kt
@@ -18,8 +18,8 @@
 
 import androidx.paging.InvalidatingPagingSourceFactory
 import androidx.paging.LoadType.REFRESH
-import androidx.paging.PagingSource
 import androidx.paging.Pager
+import androidx.paging.PagingSource
 import androidx.paging.PagingSourceFactory
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.Flow
diff --git a/paging/paging-testing/src/main/java/androidx/paging/testing/TestPager.kt b/paging/paging-testing/src/main/java/androidx/paging/testing/TestPager.kt
index e650e77..bcd13ec 100644
--- a/paging/paging-testing/src/main/java/androidx/paging/testing/TestPager.kt
+++ b/paging/paging-testing/src/main/java/androidx/paging/testing/TestPager.kt
@@ -20,11 +20,11 @@
 import androidx.paging.LoadType.APPEND
 import androidx.paging.LoadType.PREPEND
 import androidx.paging.LoadType.REFRESH
+import androidx.paging.Pager
 import androidx.paging.PagingConfig
 import androidx.paging.PagingSource
 import androidx.paging.PagingSource.LoadParams
 import androidx.paging.PagingSource.LoadResult
-import androidx.paging.Pager
 import androidx.paging.PagingSource.LoadResult.Page.Companion.COUNT_UNDEFINED
 import androidx.paging.PagingState
 import java.util.concurrent.atomic.AtomicBoolean
diff --git a/paging/paging-testing/src/test/kotlin/androidx/paging/testing/PagerFlowSnapshotTest.kt b/paging/paging-testing/src/test/kotlin/androidx/paging/testing/PagerFlowSnapshotTest.kt
index ca7351a..cb7350a 100644
--- a/paging/paging-testing/src/test/kotlin/androidx/paging/testing/PagerFlowSnapshotTest.kt
+++ b/paging/paging-testing/src/test/kotlin/androidx/paging/testing/PagerFlowSnapshotTest.kt
@@ -26,7 +26,6 @@
 import androidx.paging.insertSeparators
 import com.google.common.truth.Truth.assertThat
 import kotlin.test.assertFailsWith
-import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableSharedFlow
@@ -37,8 +36,6 @@
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
-import kotlinx.coroutines.test.setMain
-import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
@@ -68,11 +65,6 @@
         loadDelay
     )
 
-    @Before
-    fun init() {
-        Dispatchers.setMain(UnconfinedTestDispatcher())
-    }
-
     @Test
     fun initialRefresh() {
         val dataFlow = flowOf(List(30) { it })
diff --git a/paging/samples/build.gradle b/paging/samples/build.gradle
index 4a7e36a..9e5516a 100644
--- a/paging/samples/build.gradle
+++ b/paging/samples/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "AndroidX Paging Samples"
+    name = "Paging Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2019"
     description = "Contains the sample code for the Androidx Paging library"
diff --git a/paging/samples/src/main/java/androidx/paging/samples/BaseViewModel.kt b/paging/samples/src/main/java/androidx/paging/samples/BaseViewModel.kt
index fa93e32..9de9423 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/BaseViewModel.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/BaseViewModel.kt
@@ -22,9 +22,9 @@
 import androidx.paging.PagingConfig
 import androidx.paging.PagingSource
 import androidx.paging.cachedIn
+import androidx.paging.liveData
 import androidx.paging.rxjava2.cachedIn
 import androidx.paging.rxjava2.flowable
-import androidx.paging.liveData
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 
 /**
diff --git a/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsSample.kt b/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsSample.kt
index 71a5a41..da92c7b 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsSample.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsSample.kt
@@ -28,10 +28,10 @@
 import com.google.common.util.concurrent.Futures
 import io.reactivex.Maybe
 import io.reactivex.schedulers.Schedulers
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.map
 import java.util.concurrent.Callable
 import java.util.concurrent.Executors
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
 
 private lateinit var pagingDataStream: Flow<PagingData<String>>
 
diff --git a/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsUiModelSample.kt b/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsUiModelSample.kt
index 040f6f3..9a2bd7f 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsUiModelSample.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/InsertSeparatorsUiModelSample.kt
@@ -29,10 +29,10 @@
 import com.google.common.util.concurrent.Futures
 import io.reactivex.Maybe
 import io.reactivex.schedulers.Schedulers
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.map
 import java.util.concurrent.Callable
 import java.util.concurrent.Executors
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
 
 class Item(
     @JvmField
diff --git a/paging/samples/src/main/java/androidx/paging/samples/ListenableFuturePagingSourceSample.kt b/paging/samples/src/main/java/androidx/paging/samples/ListenableFuturePagingSourceSample.kt
index 21718c3..ca2df59f 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/ListenableFuturePagingSourceSample.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/ListenableFuturePagingSourceSample.kt
@@ -23,9 +23,9 @@
 import androidx.paging.PagingState
 import com.google.common.util.concurrent.FluentFuture
 import com.google.common.util.concurrent.ListenableFuture
-import retrofit2.HttpException
 import java.io.IOException
 import java.util.concurrent.Executor
+import retrofit2.HttpException
 
 data class RemoteResult(
     val items: List<Item>,
diff --git a/paging/samples/src/main/java/androidx/paging/samples/PagingSourceSample.kt b/paging/samples/src/main/java/androidx/paging/samples/PagingSourceSample.kt
index bd894fc..efaee82 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/PagingSourceSample.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/PagingSourceSample.kt
@@ -22,8 +22,8 @@
 import androidx.paging.PagingSource
 import androidx.paging.PagingSource.LoadResult
 import androidx.paging.PagingState
-import retrofit2.HttpException
 import java.io.IOException
+import retrofit2.HttpException
 
 internal class MyBackendService {
     data class RemoteResult(
diff --git a/paging/samples/src/main/java/androidx/paging/samples/RemoteMediatorSample.kt b/paging/samples/src/main/java/androidx/paging/samples/RemoteMediatorSample.kt
index 0b40372..6cbefcb 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/RemoteMediatorSample.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/RemoteMediatorSample.kt
@@ -28,9 +28,9 @@
 import androidx.paging.samples.shared.RoomDb
 import androidx.paging.samples.shared.User
 import androidx.room.withTransaction
-import retrofit2.HttpException
 import java.io.IOException
 import java.util.concurrent.TimeUnit
+import retrofit2.HttpException
 
 private interface ItemDao {
     fun withTransaction(block: () -> Any)
diff --git a/paging/samples/src/main/java/androidx/paging/samples/RxPagingSourceSample.kt b/paging/samples/src/main/java/androidx/paging/samples/RxPagingSourceSample.kt
index 0ec0ec4..2e6ce22 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/RxPagingSourceSample.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/RxPagingSourceSample.kt
@@ -23,8 +23,8 @@
 import androidx.paging.rxjava2.RxPagingSource
 import io.reactivex.Single
 import io.reactivex.schedulers.Schedulers
-import retrofit2.HttpException
 import java.io.IOException
+import retrofit2.HttpException
 
 private class RxBackendService {
     data class RemoteResult(
diff --git a/palette/palette/build.gradle b/palette/palette/build.gradle
index 90bdee7..df6b451 100644
--- a/palette/palette/build.gradle
+++ b/palette/palette/build.gradle
@@ -17,7 +17,7 @@
 }
 
 androidx {
-    name = "Android Support Palette"
+    name = "Palette"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2014"
     description = "Android Support Palette"
diff --git a/percentlayout/percentlayout/build.gradle b/percentlayout/percentlayout/build.gradle
index a28d3b0..737f4d4 100644
--- a/percentlayout/percentlayout/build.gradle
+++ b/percentlayout/percentlayout/build.gradle
@@ -24,7 +24,7 @@
 }
 
 androidx {
-    name = "Android Percent Support Library"
+    name = "Percent"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2015"
     description = "Android Percent Support Library"
diff --git a/playground-common/androidx-shared.properties b/playground-common/androidx-shared.properties
index f223dc1..73f9236 100644
--- a/playground-common/androidx-shared.properties
+++ b/playground-common/androidx-shared.properties
@@ -46,6 +46,11 @@
 # Generate versioned API files
 androidx.writeVersionedApiFiles=true
 
+# Comma-delimited lists of project path prefixes which have been opted-out of or opted-in to the
+# Suppress Compatibility migration. Opt-out is matched first.
+androidx.suppress.compatibility.optout=core/core/,core/core-telecom/
+androidx.suppress.compatibility.optin=core
+
 # Disable features we do not use
 android.defaults.buildfeatures.aidl=false
 android.defaults.buildfeatures.buildconfig=false
diff --git a/playground-common/playground.properties b/playground-common/playground.properties
index 68b1459..b57386a 100644
--- a/playground-common/playground.properties
+++ b/playground-common/playground.properties
@@ -25,6 +25,6 @@
 kotlin.code.style=official
 # Disable docs
 androidx.enableDocumentation=false
-androidx.playground.snapshotBuildId=10041883
+androidx.playground.snapshotBuildId=10059712
 androidx.playground.metalavaBuildId=10074764
 androidx.studio.type=playground
diff --git a/preference/preference-ktx/build.gradle b/preference/preference-ktx/build.gradle
index ebef733..e6e8c4f 100644
--- a/preference/preference-ktx/build.gradle
+++ b/preference/preference-ktx/build.gradle
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "Android Preferences KTX"
+    name = "Preferences KTX"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Kotlin extensions for preferences"
diff --git a/preference/preference/build.gradle b/preference/preference/build.gradle
index 366ccdc..0e7815d 100644
--- a/preference/preference/build.gradle
+++ b/preference/preference/build.gradle
@@ -64,7 +64,7 @@
 }
 
 androidx {
-    name = "AndroidX Preference"
+    name = "Preference"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2015"
     description = "AndroidX Preference"
diff --git a/preference/preference/src/androidTest/java/androidx/preference/tests/helpers/PreferenceTestHelperActivity.kt b/preference/preference/src/androidTest/java/androidx/preference/tests/helpers/PreferenceTestHelperActivity.kt
index 037659f..7f87518 100644
--- a/preference/preference/src/androidTest/java/androidx/preference/tests/helpers/PreferenceTestHelperActivity.kt
+++ b/preference/preference/src/androidTest/java/androidx/preference/tests/helpers/PreferenceTestHelperActivity.kt
@@ -17,7 +17,6 @@
 package androidx.preference.tests.helpers
 
 import android.os.Bundle
-
 import androidx.annotation.LayoutRes
 import androidx.appcompat.app.AppCompatActivity
 import androidx.preference.PreferenceFragmentCompat
diff --git a/print/print/build.gradle b/print/print/build.gradle
index 3b8be7c..6e9dc83 100644
--- a/print/print/build.gradle
+++ b/print/print/build.gradle
@@ -10,7 +10,7 @@
 }
 
 androidx {
-    name = "Android Support Library Print"
+    name = "Print"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFuturesTest.kt b/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFuturesTest.kt
index ff87882..e0c2574 100644
--- a/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFuturesTest.kt
+++ b/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFuturesTest.kt
@@ -24,10 +24,10 @@
 import androidx.privacysandbox.ads.adservices.adselection.AdSelectionConfig
 import androidx.privacysandbox.ads.adservices.adselection.AdSelectionOutcome
 import androidx.privacysandbox.ads.adservices.adselection.ReportImpressionRequest
-import androidx.test.core.app.ApplicationProvider
 import androidx.privacysandbox.ads.adservices.common.AdSelectionSignals
 import androidx.privacysandbox.ads.adservices.common.AdTechIdentifier
 import androidx.privacysandbox.ads.adservices.java.adselection.AdSelectionManagerFutures.Companion.from
+import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
diff --git a/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFuturesTest.kt b/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFuturesTest.kt
index 1ebf7e7..d2f5802 100644
--- a/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFuturesTest.kt
+++ b/privacysandbox/ads/ads-adservices-java/src/androidTest/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFuturesTest.kt
@@ -26,10 +26,10 @@
 import androidx.privacysandbox.ads.adservices.common.AdSelectionSignals
 import androidx.privacysandbox.ads.adservices.common.AdTechIdentifier
 import androidx.privacysandbox.ads.adservices.customaudience.CustomAudience
-import androidx.privacysandbox.ads.adservices.java.customaudience.CustomAudienceManagerFutures.Companion.from
 import androidx.privacysandbox.ads.adservices.customaudience.JoinCustomAudienceRequest
 import androidx.privacysandbox.ads.adservices.customaudience.LeaveCustomAudienceRequest
 import androidx.privacysandbox.ads.adservices.customaudience.TrustedBiddingData
+import androidx.privacysandbox.ads.adservices.java.customaudience.CustomAudienceManagerFutures.Companion.from
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
diff --git a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adid/AdIdManagerFutures.kt b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adid/AdIdManagerFutures.kt
index 8ffa244..860cccf 100644
--- a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adid/AdIdManagerFutures.kt
+++ b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adid/AdIdManagerFutures.kt
@@ -16,7 +16,6 @@
 
 package androidx.privacysandbox.ads.adservices.java.adid
 
-import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
 import android.adservices.common.AdServicesPermissions
 import android.content.Context
 import android.os.LimitExceededException
@@ -24,6 +23,7 @@
 import androidx.annotation.RequiresPermission
 import androidx.privacysandbox.ads.adservices.adid.AdId
 import androidx.privacysandbox.ads.adservices.adid.AdIdManager
+import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
 import com.google.common.util.concurrent.ListenableFuture
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
diff --git a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFutures.kt b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFutures.kt
index 4726167..0dc0c4c 100644
--- a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFutures.kt
+++ b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/adselection/AdSelectionManagerFutures.kt
@@ -16,9 +16,6 @@
 
 package androidx.privacysandbox.ads.adservices.java.adselection
 
-import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
-import androidx.privacysandbox.ads.adservices.adselection.AdSelectionManager
-import androidx.privacysandbox.ads.adservices.adselection.AdSelectionManager.Companion.obtain
 import android.adservices.common.AdServicesPermissions
 import android.content.Context
 import android.os.LimitExceededException
@@ -26,8 +23,11 @@
 import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresPermission
 import androidx.privacysandbox.ads.adservices.adselection.AdSelectionConfig
+import androidx.privacysandbox.ads.adservices.adselection.AdSelectionManager
+import androidx.privacysandbox.ads.adservices.adselection.AdSelectionManager.Companion.obtain
 import androidx.privacysandbox.ads.adservices.adselection.AdSelectionOutcome
 import androidx.privacysandbox.ads.adservices.adselection.ReportImpressionRequest
+import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
 import com.google.common.util.concurrent.ListenableFuture
 import java.util.concurrent.TimeoutException
 import kotlinx.coroutines.CoroutineScope
diff --git a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/appsetid/AppSetIdManagerFutures.kt b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/appsetid/AppSetIdManagerFutures.kt
index fcae8d8..5c003dd 100644
--- a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/appsetid/AppSetIdManagerFutures.kt
+++ b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/appsetid/AppSetIdManagerFutures.kt
@@ -16,12 +16,12 @@
 
 package androidx.privacysandbox.ads.adservices.java.appsetid
 
-import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
 import android.content.Context
 import android.os.LimitExceededException
 import androidx.annotation.DoNotInline
 import androidx.privacysandbox.ads.adservices.appsetid.AppSetId
 import androidx.privacysandbox.ads.adservices.appsetid.AppSetIdManager
+import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
 import com.google.common.util.concurrent.ListenableFuture
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
diff --git a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFutures.kt b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFutures.kt
index cb43cf4..f74372d 100644
--- a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFutures.kt
+++ b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/customaudience/CustomAudienceManagerFutures.kt
@@ -16,17 +16,17 @@
 
 package androidx.privacysandbox.ads.adservices.java.customaudience
 
-import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
-import androidx.privacysandbox.ads.adservices.customaudience.CustomAudience
-import androidx.privacysandbox.ads.adservices.customaudience.CustomAudienceManager
-import androidx.privacysandbox.ads.adservices.customaudience.CustomAudienceManager.Companion.obtain
 import android.adservices.common.AdServicesPermissions
 import android.content.Context
 import android.os.LimitExceededException
 import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresPermission
+import androidx.privacysandbox.ads.adservices.customaudience.CustomAudience
+import androidx.privacysandbox.ads.adservices.customaudience.CustomAudienceManager
+import androidx.privacysandbox.ads.adservices.customaudience.CustomAudienceManager.Companion.obtain
 import androidx.privacysandbox.ads.adservices.customaudience.JoinCustomAudienceRequest
 import androidx.privacysandbox.ads.adservices.customaudience.LeaveCustomAudienceRequest
+import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
 import com.google.common.util.concurrent.ListenableFuture
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
diff --git a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/topics/TopicsManagerFutures.kt b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/topics/TopicsManagerFutures.kt
index 5f80cd7..00fa709 100644
--- a/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/topics/TopicsManagerFutures.kt
+++ b/privacysandbox/ads/ads-adservices-java/src/main/java/androidx/privacysandbox/ads/adservices/java/topics/TopicsManagerFutures.kt
@@ -16,15 +16,15 @@
 
 package androidx.privacysandbox.ads.adservices.java.topics
 
-import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
-import androidx.privacysandbox.ads.adservices.topics.TopicsManager
-import androidx.privacysandbox.ads.adservices.topics.TopicsManager.Companion.obtain
-import androidx.privacysandbox.ads.adservices.topics.GetTopicsRequest
-import androidx.privacysandbox.ads.adservices.topics.GetTopicsResponse
 import android.adservices.common.AdServicesPermissions
 import android.content.Context
 import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresPermission
+import androidx.privacysandbox.ads.adservices.java.internal.asListenableFuture
+import androidx.privacysandbox.ads.adservices.topics.GetTopicsRequest
+import androidx.privacysandbox.ads.adservices.topics.GetTopicsResponse
+import androidx.privacysandbox.ads.adservices.topics.TopicsManager
+import androidx.privacysandbox.ads.adservices.topics.TopicsManager.Companion.obtain
 import com.google.common.util.concurrent.ListenableFuture
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
diff --git a/privacysandbox/ads/ads-adservices/build.gradle b/privacysandbox/ads/ads-adservices/build.gradle
index 70c6da1..13284aa 100644
--- a/privacysandbox/ads/ads-adservices/build.gradle
+++ b/privacysandbox/ads/ads-adservices/build.gradle
@@ -50,7 +50,7 @@
 }
 
 androidx {
-    name = "Androidx library for Privacy Preserving APIs."
+    name = "Privacy Sandbox for Ad Services"
     type = LibraryType.PUBLISHED_LIBRARY
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2022"
diff --git a/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManagerTest.kt b/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManagerTest.kt
index 7ce3d77..5c658d3 100644
--- a/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManagerTest.kt
+++ b/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManagerTest.kt
@@ -22,10 +22,10 @@
 import android.os.OutcomeReceiver
 import android.os.ext.SdkExtensions
 import androidx.annotation.RequiresExtension
-import androidx.test.core.app.ApplicationProvider
 import androidx.privacysandbox.ads.adservices.adselection.AdSelectionManager.Companion.obtain
 import androidx.privacysandbox.ads.adservices.common.AdSelectionSignals
 import androidx.privacysandbox.ads.adservices.common.AdTechIdentifier
+import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
diff --git a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adid/AdIdManager.kt b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adid/AdIdManager.kt
index eaaae29..129d17b 100644
--- a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adid/AdIdManager.kt
+++ b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adid/AdIdManager.kt
@@ -19,8 +19,8 @@
 import android.adservices.common.AdServicesPermissions
 import android.annotation.SuppressLint
 import android.content.Context
-import android.os.ext.SdkExtensions
 import android.os.LimitExceededException
+import android.os.ext.SdkExtensions
 import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresExtension
 import androidx.annotation.RequiresPermission
diff --git a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManager.kt b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManager.kt
index 454a7cb..7e280c4 100644
--- a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManager.kt
+++ b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/adselection/AdSelectionManager.kt
@@ -27,8 +27,8 @@
 import androidx.annotation.RequiresPermission
 import androidx.core.os.asOutcomeReceiver
 import androidx.privacysandbox.ads.adservices.common.AdSelectionSignals
-import androidx.privacysandbox.ads.adservices.internal.AdServicesInfo
 import androidx.privacysandbox.ads.adservices.common.AdTechIdentifier
+import androidx.privacysandbox.ads.adservices.internal.AdServicesInfo
 import java.util.concurrent.TimeoutException
 import kotlinx.coroutines.suspendCancellableCoroutine
 
diff --git a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/CustomAudienceManager.kt b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/CustomAudienceManager.kt
index f41199b..981aeaa 100644
--- a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/CustomAudienceManager.kt
+++ b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/CustomAudienceManager.kt
@@ -27,8 +27,8 @@
 import androidx.core.os.asOutcomeReceiver
 import androidx.privacysandbox.ads.adservices.common.AdData
 import androidx.privacysandbox.ads.adservices.common.AdSelectionSignals
-import androidx.privacysandbox.ads.adservices.internal.AdServicesInfo
 import androidx.privacysandbox.ads.adservices.common.AdTechIdentifier
+import androidx.privacysandbox.ads.adservices.internal.AdServicesInfo
 import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
diff --git a/privacysandbox/plugins/plugins-privacysandbox-library/src/test/java/androidx/privacysandboxlibraryplugin/PrivacySandboxLibraryPluginTest.kt b/privacysandbox/plugins/plugins-privacysandbox-library/src/test/java/androidx/privacysandboxlibraryplugin/PrivacySandboxLibraryPluginTest.kt
index e623e74..ac1f28b 100644
--- a/privacysandbox/plugins/plugins-privacysandbox-library/src/test/java/androidx/privacysandboxlibraryplugin/PrivacySandboxLibraryPluginTest.kt
+++ b/privacysandbox/plugins/plugins-privacysandbox-library/src/test/java/androidx/privacysandboxlibraryplugin/PrivacySandboxLibraryPluginTest.kt
@@ -23,10 +23,9 @@
 import org.gradle.testkit.runner.TaskOutcome
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
-import org.junit.Test
-
 import org.junit.Before
 import org.junit.Rule
+import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 
diff --git a/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/FileClassLoaderFactoryTest.kt b/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/FileClassLoaderFactoryTest.kt
index 31fee55..22d795b 100644
--- a/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/FileClassLoaderFactoryTest.kt
+++ b/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/FileClassLoaderFactoryTest.kt
@@ -18,8 +18,8 @@
 
 import android.content.Context
 import androidx.privacysandbox.sdkruntime.client.config.LocalSdkConfig
-import androidx.privacysandbox.sdkruntime.client.loader.storage.LocalSdkStorage
 import androidx.privacysandbox.sdkruntime.client.loader.storage.LocalSdkDexFiles
+import androidx.privacysandbox.sdkruntime.client.loader.storage.LocalSdkStorage
 import androidx.privacysandbox.sdkruntime.client.loader.storage.TestLocalSdkStorage
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
diff --git a/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/LocalSdkTestUtils.kt b/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/LocalSdkTestUtils.kt
index def9887..40aee3a 100644
--- a/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/LocalSdkTestUtils.kt
+++ b/privacysandbox/sdkruntime/sdkruntime-client/src/androidTest/java/androidx/privacysandbox/sdkruntime/client/loader/LocalSdkTestUtils.kt
@@ -20,8 +20,8 @@
 import android.os.Bundle
 import android.os.IBinder
 import androidx.privacysandbox.sdkruntime.core.SandboxedSdkCompat
-import androidx.privacysandbox.sdkruntime.core.Versions
 import androidx.privacysandbox.sdkruntime.core.SandboxedSdkProviderCompat
+import androidx.privacysandbox.sdkruntime.core.Versions
 import kotlin.reflect.cast
 
 /**
diff --git a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/InterfaceParserTest.kt b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/InterfaceParserTest.kt
index d43d7fc..598b368 100644
--- a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/InterfaceParserTest.kt
+++ b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/InterfaceParserTest.kt
@@ -22,8 +22,8 @@
 import androidx.privacysandbox.tools.core.model.Method
 import androidx.privacysandbox.tools.core.model.Parameter
 import androidx.privacysandbox.tools.core.model.ParsedApi
-import androidx.privacysandbox.tools.core.model.Types
 import androidx.privacysandbox.tools.core.model.Type
+import androidx.privacysandbox.tools.core.model.Types
 import androidx.privacysandbox.tools.core.model.Types.asNullable
 import androidx.room.compiler.processing.util.Source
 import com.google.common.truth.Truth.assertThat
diff --git a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/InterfaceFileGenerator.kt b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/InterfaceFileGenerator.kt
index e7e87a0..19d9baf 100644
--- a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/InterfaceFileGenerator.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/InterfaceFileGenerator.kt
@@ -17,12 +17,12 @@
 package androidx.privacysandbox.tools.apigenerator
 
 import androidx.privacysandbox.tools.core.generator.addCommonSettings
-import androidx.privacysandbox.tools.core.model.AnnotatedInterface
-import androidx.privacysandbox.tools.core.model.Method
 import androidx.privacysandbox.tools.core.generator.build
 import androidx.privacysandbox.tools.core.generator.poetClassName
 import androidx.privacysandbox.tools.core.generator.poetSpec
 import androidx.privacysandbox.tools.core.generator.poetTypeName
+import androidx.privacysandbox.tools.core.model.AnnotatedInterface
+import androidx.privacysandbox.tools.core.model.Method
 import com.squareup.kotlinpoet.FileSpec
 import com.squareup.kotlinpoet.FunSpec
 import com.squareup.kotlinpoet.KModifier
diff --git a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt
index e43ec79..1e13499 100644
--- a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt
@@ -25,8 +25,8 @@
 import androidx.privacysandbox.tools.core.generator.ClientProxyTypeGenerator
 import androidx.privacysandbox.tools.core.generator.CoreLibInfoAndBinderWrapperConverterGenerator
 import androidx.privacysandbox.tools.core.generator.GenerationTarget
-import androidx.privacysandbox.tools.core.generator.PrivacySandboxExceptionFileGenerator
 import androidx.privacysandbox.tools.core.generator.PrivacySandboxCancellationExceptionFileGenerator
+import androidx.privacysandbox.tools.core.generator.PrivacySandboxExceptionFileGenerator
 import androidx.privacysandbox.tools.core.generator.ServiceFactoryFileGenerator
 import androidx.privacysandbox.tools.core.generator.StubDelegatesGenerator
 import androidx.privacysandbox.tools.core.generator.ThrowableParcelConverterFileGenerator
diff --git a/privacysandbox/tools/tools-apipackager/src/main/java/androidx/privacysandbox/tools/apipackager/PrivacySandboxApiPackager.kt b/privacysandbox/tools/tools-apipackager/src/main/java/androidx/privacysandbox/tools/apipackager/PrivacySandboxApiPackager.kt
index 382927c..8471190 100644
--- a/privacysandbox/tools/tools-apipackager/src/main/java/androidx/privacysandbox/tools/apipackager/PrivacySandboxApiPackager.kt
+++ b/privacysandbox/tools/tools-apipackager/src/main/java/androidx/privacysandbox/tools/apipackager/PrivacySandboxApiPackager.kt
@@ -17,15 +17,15 @@
 package androidx.privacysandbox.tools.apipackager
 
 import androidx.privacysandbox.tools.apipackager.AnnotationInspector.hasPrivacySandboxAnnotation
+import androidx.privacysandbox.tools.core.Metadata
 import java.nio.file.Path
 import java.util.zip.ZipEntry
 import java.util.zip.ZipOutputStream
 import kotlin.io.path.exists
-import kotlin.io.path.isDirectory
-import kotlin.io.path.notExists
-import androidx.privacysandbox.tools.core.Metadata
 import kotlin.io.path.extension
 import kotlin.io.path.inputStream
+import kotlin.io.path.isDirectory
+import kotlin.io.path.notExists
 
 class PrivacySandboxApiPackager {
 
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ServiceFactoryFileGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ServiceFactoryFileGenerator.kt
index ffc5941..99979ab 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ServiceFactoryFileGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ServiceFactoryFileGenerator.kt
@@ -16,8 +16,8 @@
 
 package androidx.privacysandbox.tools.core.generator
 
-import androidx.privacysandbox.tools.internal.GeneratedPublicApi
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
+import androidx.privacysandbox.tools.internal.GeneratedPublicApi
 import com.squareup.kotlinpoet.AnnotationSpec
 import com.squareup.kotlinpoet.ClassName
 import com.squareup.kotlinpoet.FileSpec
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt
index e5e0ba2..e2d5768 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt
@@ -16,9 +16,9 @@
 
 package androidx.privacysandbox.tools.core.generator
 
+import androidx.privacysandbox.tools.core.generator.GenerationTarget.SERVER
 import androidx.privacysandbox.tools.core.generator.SpecNames.contextClass
 import androidx.privacysandbox.tools.core.generator.SpecNames.contextPropertyName
-import androidx.privacysandbox.tools.core.generator.GenerationTarget.SERVER
 import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.ValueProperty
 import com.squareup.kotlinpoet.CodeBlock
diff --git a/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt b/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt
index 4e15e86..9373477 100644
--- a/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt
+++ b/privacysandbox/ui/integration-tests/testapp/src/main/java/androidx/privacysandbox/ui/integration/testapp/MainActivity.kt
@@ -20,7 +20,6 @@
 import android.app.sdksandbox.SandboxedSdk
 import android.app.sdksandbox.SdkSandboxManager
 import android.content.res.Configuration
-import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
 import android.os.OutcomeReceiver
 import android.os.ext.SdkExtensions
@@ -29,6 +28,7 @@
 import android.widget.LinearLayout
 import android.widget.TextView
 import androidx.annotation.RequiresExtension
+import androidx.appcompat.app.AppCompatActivity
 import androidx.privacysandbox.ui.client.SandboxedUiAdapterFactory
 import androidx.privacysandbox.ui.client.view.SandboxedSdkUiSessionState
 import androidx.privacysandbox.ui.client.view.SandboxedSdkUiSessionStateChangedListener
diff --git a/profileinstaller/profileinstaller-benchmark/src/androidTest/java/androidx/profileinstaller/benchmark/ProfileInstallerTranscodeBenchmark.kt b/profileinstaller/profileinstaller-benchmark/src/androidTest/java/androidx/profileinstaller/benchmark/ProfileInstallerTranscodeBenchmark.kt
index 597baf4..b85813e 100644
--- a/profileinstaller/profileinstaller-benchmark/src/androidTest/java/androidx/profileinstaller/benchmark/ProfileInstallerTranscodeBenchmark.kt
+++ b/profileinstaller/profileinstaller-benchmark/src/androidTest/java/androidx/profileinstaller/benchmark/ProfileInstallerTranscodeBenchmark.kt
@@ -25,13 +25,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.platform.app.InstrumentationRegistry
+import java.io.File
 import org.junit.After
 import org.junit.Assume.assumeTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.File
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/profileinstaller/profileinstaller/build.gradle b/profileinstaller/profileinstaller/build.gradle
index ba3d60d..793c5e5 100644
--- a/profileinstaller/profileinstaller/build.gradle
+++ b/profileinstaller/profileinstaller/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "androidx.profileinstaller:profileinstaller"
+    name = "Profile Installer"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Allows libraries to prepopulate ahead of time compilation traces to be read by" +
diff --git a/recommendation/recommendation/build.gradle b/recommendation/recommendation/build.gradle
index 25a96bf..50c69b0 100644
--- a/recommendation/recommendation/build.gradle
+++ b/recommendation/recommendation/build.gradle
@@ -17,7 +17,7 @@
 }
 
 androidx {
-    name = "Android Support Recommendation"
+    name = "Recommendation"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2015"
     description = "Android Support Recommendation"
diff --git a/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/InvalidSetHasFixedSizeDetector.kt b/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/InvalidSetHasFixedSizeDetector.kt
index addc95f..6b24503 100644
--- a/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/InvalidSetHasFixedSizeDetector.kt
+++ b/recyclerview/recyclerview-lint/src/main/java/androidx/recyclerview/lint/InvalidSetHasFixedSizeDetector.kt
@@ -36,12 +36,12 @@
 import com.android.tools.lint.detector.api.XmlContext
 import com.android.tools.lint.detector.api.XmlScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.toUElement
 import org.jetbrains.uast.visitor.AbstractUastVisitor
 import org.w3c.dom.Element
-import java.util.EnumSet
 
 class InvalidSetHasFixedSizeDetector : Detector(), XmlScanner, SourceCodeScanner {
 
diff --git a/recyclerview/recyclerview-selection/build.gradle b/recyclerview/recyclerview-selection/build.gradle
index 49f9cfd..12c9e66 100644
--- a/recyclerview/recyclerview-selection/build.gradle
+++ b/recyclerview/recyclerview-selection/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android RecyclerView Selection"
+    name = "RecyclerView Selection"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.RECYCLERVIEW_SELECTION
     inceptionYear = "2017"
diff --git a/recyclerview/recyclerview/build.gradle b/recyclerview/recyclerview/build.gradle
index aecfc856..8c7e013 100644
--- a/recyclerview/recyclerview/build.gradle
+++ b/recyclerview/recyclerview/build.gradle
@@ -58,7 +58,7 @@
 }
 
 androidx {
-    name = "Android Support RecyclerView"
+    name = "RecyclerView"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.RECYCLERVIEW
     inceptionYear = "2014"
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/AsyncListDifferTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/AsyncListDifferTest.kt
index 2b4ec9a..c3da7a7 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/AsyncListDifferTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/AsyncListDifferTest.kt
@@ -19,6 +19,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.testutils.TestExecutor
+import java.util.Collections.emptyList
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotSame
 import org.junit.Assert.assertSame
@@ -30,7 +31,6 @@
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
 import org.mockito.Mockito.verifyZeroInteractions
-import java.util.Collections.emptyList
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/BaseSnapHelperCenterTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/BaseSnapHelperCenterTest.kt
index 2d8f2e1..eac39fc 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/BaseSnapHelperCenterTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/BaseSnapHelperCenterTest.kt
@@ -16,22 +16,19 @@
 
 package androidx.recyclerview.widget
 
-import org.hamcrest.CoreMatchers.`is`
-import org.hamcrest.MatcherAssert.assertThat
-
 import android.content.Context
 import android.view.View
 import android.view.ViewGroup
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.filters.LargeTest
-
+import java.util.ArrayList
+import org.hamcrest.CoreMatchers.`is`
+import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
-import java.util.ArrayList
-
 /**
  * Small integration test base that helps verify that [SnapHelper]s that implement "center"
  * snapping define "center" correctly.
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ConcatAdapterTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ConcatAdapterTest.kt
index be28ecd..89330ac 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ConcatAdapterTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ConcatAdapterTest.kt
@@ -44,12 +44,12 @@
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.lang.reflect.Method
+import java.lang.reflect.Modifier
 import org.junit.Assert.fail
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.lang.reflect.Method
-import java.lang.reflect.Modifier
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LazyStateRestorationTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LazyStateRestorationTest.kt
index b9265e5..841555c 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LazyStateRestorationTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LazyStateRestorationTest.kt
@@ -33,12 +33,12 @@
 import androidx.test.core.app.ApplicationProvider.getApplicationContext
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import java.util.LinkedHashMap
+import java.util.UUID
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.LinkedHashMap
-import java.util.UUID
 
 @RunWith(Parameterized::class)
 @SmallTest
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindReferenceChildTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindReferenceChildTest.kt
index 12a8a44..987a3f9 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindReferenceChildTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindReferenceChildTest.kt
@@ -21,11 +21,11 @@
 import androidx.recyclerview.widget.RecyclerView.HORIZONTAL
 import androidx.recyclerview.widget.RecyclerView.VERTICAL
 import androidx.test.filters.MediumTest
+import java.util.ArrayList
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.ArrayList
 
 // Size of both the width and height of both RecyclerView and it's children
 private const val size = 500
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindZeroPxReferenceChildTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindZeroPxReferenceChildTest.kt
index 5476284..da4e121 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindZeroPxReferenceChildTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearLayoutManagerFindZeroPxReferenceChildTest.kt
@@ -21,11 +21,11 @@
 import androidx.recyclerview.widget.RecyclerView.HORIZONTAL
 import androidx.recyclerview.widget.RecyclerView.VERTICAL
 import androidx.test.filters.MediumTest
+import java.util.ArrayList
 import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.ArrayList
 
 // Number of items that fit in RecyclerView's viewport
 private const val n = 4
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearSnapHelperCenterTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearSnapHelperCenterTest.kt
index ac974a6..e05e6c0 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearSnapHelperCenterTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/LinearSnapHelperCenterTest.kt
@@ -17,7 +17,6 @@
 package androidx.recyclerview.widget
 
 import androidx.test.filters.LargeTest
-
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ListAdapterTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ListAdapterTest.kt
index 5e811b7..5411f39 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ListAdapterTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/ListAdapterTest.kt
@@ -20,6 +20,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.testutils.TestExecutor
+import java.util.Collections.emptyList
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -28,7 +29,6 @@
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
 import org.mockito.Mockito.verifyZeroInteractions
-import java.util.Collections.emptyList
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/PagerSnapHelperCenterTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/PagerSnapHelperCenterTest.kt
index 017572a..1d62973 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/PagerSnapHelperCenterTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/PagerSnapHelperCenterTest.kt
@@ -17,7 +17,6 @@
 package androidx.recyclerview.widget
 
 import androidx.test.filters.LargeTest
-
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrollingFlingTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrollingFlingTest.kt
index 6954bc2..201394a 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrollingFlingTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewNestedScrollingFlingTest.kt
@@ -28,6 +28,8 @@
 import androidx.test.filters.LargeTest
 import androidx.testutils.ActivityScenarioResetRule
 import androidx.testutils.ResettableActivityScenarioRule
+import java.util.ArrayList
+import java.util.Arrays
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.closeTo
 import org.junit.Before
@@ -36,8 +38,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.ArrayList
-import java.util.Arrays
 
 /**
  * This test verifies that the velocity that RecyclerView flings with in response to finger input
diff --git a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewSmoothScrollToPositionTest.kt b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewSmoothScrollToPositionTest.kt
index 6fdbaf7..fcfce45 100644
--- a/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewSmoothScrollToPositionTest.kt
+++ b/recyclerview/recyclerview/src/androidTest/java/androidx/recyclerview/widget/RecyclerViewSmoothScrollToPositionTest.kt
@@ -22,14 +22,14 @@
 import android.widget.TextView
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.hamcrest.CoreMatchers.`is`
-import org.junit.Assert
 import org.hamcrest.MatcherAssert.assertThat
+import org.junit.Assert
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/recyclerview/recyclerview/src/test/java/androidx/recyclerview/widget/DiffUtilTest.kt b/recyclerview/recyclerview/src/test/java/androidx/recyclerview/widget/DiffUtilTest.kt
index 8aa135a..7146b50 100644
--- a/recyclerview/recyclerview/src/test/java/androidx/recyclerview/widget/DiffUtilTest.kt
+++ b/recyclerview/recyclerview/src/test/java/androidx/recyclerview/widget/DiffUtilTest.kt
@@ -15,8 +15,10 @@
  */
 package androidx.recyclerview.widget
 
-import org.hamcrest.CoreMatchers.`is`
+import java.util.Random
+import java.util.UUID
 import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.not
 import org.hamcrest.CoreMatchers.nullValue
 import org.hamcrest.MatcherAssert.assertThat
@@ -29,8 +31,6 @@
 import org.junit.runner.Description
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.Random
-import java.util.UUID
 
 @RunWith(JUnit4::class)
 class DiffUtilTest {
diff --git a/resourceinspection/resourceinspection-annotation/build.gradle b/resourceinspection/resourceinspection-annotation/build.gradle
index 86bb07a..a5b9ce9 100644
--- a/resourceinspection/resourceinspection-annotation/build.gradle
+++ b/resourceinspection/resourceinspection-annotation/build.gradle
@@ -26,7 +26,7 @@
 }
 
 androidx {
-    name = "Android Resource Inspection - Annotations"
+    name = "Resource Inspection - Annotations"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Annotation processors for Android resource and layout inspection"
diff --git a/resourceinspection/resourceinspection-processor/build.gradle b/resourceinspection/resourceinspection-processor/build.gradle
index a633319..959ea3d 100644
--- a/resourceinspection/resourceinspection-processor/build.gradle
+++ b/resourceinspection/resourceinspection-processor/build.gradle
@@ -50,7 +50,7 @@
 }
 
 androidx {
-    name = "Android Resource Inspection - Annotation Processor"
+    name = "Resource Inspection - Annotation Processor"
     type = LibraryType.ANNOTATION_PROCESSOR
     inceptionYear = "2021"
     description = "Annotation processors for Android resource and layout inspection"
diff --git a/resourceinspection/resourceinspection-processor/src/main/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessor.kt b/resourceinspection/resourceinspection-processor/src/main/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessor.kt
index 4611436..41a9564 100644
--- a/resourceinspection/resourceinspection-processor/src/main/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessor.kt
+++ b/resourceinspection/resourceinspection-processor/src/main/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessor.kt
@@ -18,10 +18,10 @@
 
 import com.google.auto.common.BasicAnnotationProcessor
 import com.google.auto.service.AutoService
-import net.ltgt.gradle.incap.IncrementalAnnotationProcessor
-import net.ltgt.gradle.incap.IncrementalAnnotationProcessorType.ISOLATING
 import javax.annotation.processing.Processor
 import javax.lang.model.SourceVersion
+import net.ltgt.gradle.incap.IncrementalAnnotationProcessor
+import net.ltgt.gradle.incap.IncrementalAnnotationProcessorType.ISOLATING
 
 /** Annotation processor for resource inspection tools. */
 @AutoService(Processor::class)
diff --git a/resourceinspection/resourceinspection-processor/src/test/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessorTest.kt b/resourceinspection/resourceinspection-processor/src/test/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessorTest.kt
index 0395f1c..87c1746 100644
--- a/resourceinspection/resourceinspection-processor/src/test/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessorTest.kt
+++ b/resourceinspection/resourceinspection-processor/src/test/kotlin/androidx/resourceinspection/processor/ResourceInspectionProcessorTest.kt
@@ -21,11 +21,11 @@
 import com.google.testing.compile.CompilationSubject.assertThat
 import com.google.testing.compile.Compiler.javac
 import com.google.testing.compile.JavaFileObjects
-import org.intellij.lang.annotations.Language
-import org.junit.Test
 import java.io.File
 import javax.lang.model.SourceVersion
 import javax.tools.JavaFileObject
+import org.intellij.lang.annotations.Language
+import org.junit.Test
 
 /** Integration and unit tests for [ResourceInspectionProcessor]. */
 class ResourceInspectionProcessorTest {
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/NewThreadDispatcher.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/NewThreadDispatcher.kt
index 376823b..e61991e 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/NewThreadDispatcher.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/NewThreadDispatcher.kt
@@ -16,12 +16,12 @@
 
 package androidx.room.integration.kotlintestapp
 
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.InternalCoroutinesApi
-import kotlinx.coroutines.Runnable
 import java.util.concurrent.atomic.AtomicInteger
 import kotlin.concurrent.thread
 import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.InternalCoroutinesApi
+import kotlinx.coroutines.Runnable
 
 /**
  * A CoroutineDispatcher that dispatches every block into a new thread
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/TestDatabase.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/TestDatabase.kt
index 5ecead7..2d4cb03 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/TestDatabase.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/TestDatabase.kt
@@ -47,11 +47,11 @@
 import androidx.room.integration.kotlintestapp.vo.PlaylistSongXRef
 import androidx.room.integration.kotlintestapp.vo.Publisher
 import androidx.room.integration.kotlintestapp.vo.Song
+import androidx.room.integration.kotlintestapp.vo.Toy
+import androidx.room.integration.kotlintestapp.vo.User
 import java.nio.ByteBuffer
 import java.util.Date
 import java.util.UUID
-import androidx.room.integration.kotlintestapp.vo.Toy
-import androidx.room.integration.kotlintestapp.vo.User
 
 @Database(
     entities = [
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/migration/MigrationKotlinTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/migration/MigrationKotlinTest.kt
index d5bc9e5..625d44f 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/migration/MigrationKotlinTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/migration/MigrationKotlinTest.kt
@@ -24,15 +24,15 @@
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.test.filters.MediumTest
 import androidx.test.platform.app.InstrumentationRegistry
-import org.hamcrest.CoreMatchers.`is`
+import java.io.FileNotFoundException
+import java.io.IOException
 import org.hamcrest.CoreMatchers.containsString
 import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.nullValue
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Rule
 import org.junit.Test
-import java.io.FileNotFoundException
-import java.io.IOException
 
 @MediumTest
 class MigrationKotlinTest {
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BoxedNonNullTypesTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BoxedNonNullTypesTest.kt
index 005da89..9679239 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BoxedNonNullTypesTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/BoxedNonNullTypesTest.kt
@@ -37,13 +37,13 @@
 import com.google.common.util.concurrent.ListenableFuture
 import io.reactivex.Flowable
 import io.reactivex.Observable
+import java.util.Optional
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.Optional
 
 /**
  * This test matters in KSP specifically where we might use primitive adapter for non-null java
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ConstructorInheritanceTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ConstructorInheritanceTest.kt
index f5af52b..64f21a7 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ConstructorInheritanceTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ConstructorInheritanceTest.kt
@@ -30,9 +30,9 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.CoreMatchers.hasItems
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.hasSize
 import org.junit.Test
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/FlowQueryTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/FlowQueryTest.kt
index 31b33dc..6653b7f 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/FlowQueryTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/FlowQueryTest.kt
@@ -21,6 +21,8 @@
 import androidx.room.withTransaction
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.FlowPreview
@@ -38,8 +40,6 @@
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @OptIn(ExperimentalCoroutinesApi::class, FlowPreview::class)
 @MediumTest
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt
index 909eabb..4f6a445 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt
@@ -32,6 +32,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.util.concurrent.MoreExecutors
+import java.util.concurrent.CopyOnWriteArrayList
 import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
@@ -39,7 +40,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CopyOnWriteArrayList
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt
index 1423d98..cef0319 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt
@@ -16,10 +16,10 @@
 
 package androidx.room.integration.kotlintestapp.test
 
+import androidx.kruth.assertThat
 import androidx.paging.Pager
 import androidx.paging.PagingState
 import androidx.paging.rxjava3.RxPagingSource
-import androidx.kruth.assertThat
 import androidx.room.Room
 import androidx.room.RoomDatabase
 import androidx.room.integration.kotlintestapp.testutil.ItemStore
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SneakyThrowTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SneakyThrowTest.kt
index 2fee4f7..977ba54 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SneakyThrowTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SneakyThrowTest.kt
@@ -18,12 +18,12 @@
 
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import java.util.concurrent.Callable
 import org.json.JSONException
 import org.json.JSONObject
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.Callable
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendRoomDispatcherTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendRoomDispatcherTest.kt
index 744283c..10770bc 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendRoomDispatcherTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendRoomDispatcherTest.kt
@@ -19,13 +19,13 @@
 import androidx.arch.core.executor.ArchTaskExecutor
 import androidx.arch.core.executor.DefaultTaskExecutor
 import androidx.test.filters.SmallTest
+import java.util.concurrent.atomic.AtomicInteger
 import kotlinx.coroutines.runBlocking
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
-import java.util.concurrent.atomic.AtomicInteger
 
 /**
  * A small test to verify Room's executor is used as dispatcher for DAO suspend functions.
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingTransactionCancellationTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingTransactionCancellationTest.kt
index 3bf3982..f92825f 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingTransactionCancellationTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingTransactionCancellationTest.kt
@@ -16,14 +16,15 @@
 
 package androidx.room.integration.kotlintestapp.test
 
+import androidx.kruth.assertThat
 import androidx.room.integration.kotlintestapp.vo.Book
 import androidx.room.withTransaction
-import androidx.kruth.assertThat
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
@@ -40,7 +41,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 // see b/148181325
 @RunWith(AndroidJUnit4::class)
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/UuidColumnTypeAdapterTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/UuidColumnTypeAdapterTest.kt
index f7d3dc9..4bd0c4f 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/UuidColumnTypeAdapterTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/UuidColumnTypeAdapterTest.kt
@@ -30,11 +30,11 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.nio.ByteBuffer
 import java.util.UUID
 import kotlin.reflect.KClass
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/room/room-common/build.gradle b/room/room-common/build.gradle
index 151639e..bd514ec 100644
--- a/room/room-common/build.gradle
+++ b/room/room-common/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android Room-Common"
+    name = "Room-Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Room-Common"
diff --git a/room/room-common/src/main/java/androidx/room/Fts4.kt b/room/room-common/src/main/java/androidx/room/Fts4.kt
index 7255265..f9ed6e1 100644
--- a/room/room-common/src/main/java/androidx/room/Fts4.kt
+++ b/room/room-common/src/main/java/androidx/room/Fts4.kt
@@ -16,12 +16,11 @@
 
 package androidx.room
 
-import kotlin.reflect.KClass
-
 import androidx.annotation.RequiresApi
-import androidx.room.FtsOptions.TOKENIZER_SIMPLE
 import androidx.room.FtsOptions.MatchInfo
 import androidx.room.FtsOptions.Order
+import androidx.room.FtsOptions.TOKENIZER_SIMPLE
+import kotlin.reflect.KClass
 
 /**
  * Marks an [Entity] annotated class as a FTS4 entity. This class will have a mapping SQLite
diff --git a/room/room-common/src/test/java/androidx/room/AmbiguousColumnResolverTest.kt b/room/room-common/src/test/java/androidx/room/AmbiguousColumnResolverTest.kt
index 80885a53..65dc715 100644
--- a/room/room-common/src/test/java/androidx/room/AmbiguousColumnResolverTest.kt
+++ b/room/room-common/src/test/java/androidx/room/AmbiguousColumnResolverTest.kt
@@ -18,8 +18,8 @@
 
 import androidx.kruth.assertThat
 import java.util.Locale
-import org.junit.Test
 import org.junit.Ignore
+import org.junit.Test
 
 class AmbiguousColumnResolverTest {
 
diff --git a/room/room-common/src/test/java/androidx/room/AnnotationRetentionPolicyTest.kt b/room/room-common/src/test/java/androidx/room/AnnotationRetentionPolicyTest.kt
index 43a60e5..025fe3b 100644
--- a/room/room-common/src/test/java/androidx/room/AnnotationRetentionPolicyTest.kt
+++ b/room/room-common/src/test/java/androidx/room/AnnotationRetentionPolicyTest.kt
@@ -18,9 +18,9 @@
 
 import androidx.kruth.assertThat
 import com.google.common.reflect.ClassPath
-import org.junit.Test
 import java.lang.annotation.Retention
 import java.lang.annotation.RetentionPolicy
+import org.junit.Test
 
 /** Test to make sure annotations have the correct retention policy. */
 class AnnotationRetentionPolicyTest {
diff --git a/room/room-compiler-processing-testing/build.gradle b/room/room-compiler-processing-testing/build.gradle
index 2d1f1e7c..abc8872 100644
--- a/room/room-compiler-processing-testing/build.gradle
+++ b/room/room-compiler-processing-testing/build.gradle
@@ -72,7 +72,7 @@
 }
 
 androidx {
-    name = "AndroidX Room XProcessor Testing"
+    name = "Room XProcessor Testing"
     type = LibraryType.ANNOTATION_PROCESSOR_UTILS
     inceptionYear = "2020"
     description = "Testing helpers for Room XProcessing APIs"
diff --git a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt
index d611ef2..ba27129 100644
--- a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt
+++ b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt
@@ -16,8 +16,8 @@
 
 package androidx.room.compiler.processing.util
 
-import org.junit.AssumptionViolatedException
 import java.util.Properties
+import org.junit.AssumptionViolatedException
 
 /**
  * Provides the information about compilation test capabilities.
diff --git a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt
index 4860763..4e97a26 100644
--- a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt
+++ b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt
@@ -17,9 +17,9 @@
 package androidx.room.compiler.processing.util
 
 import com.google.testing.compile.JavaFileObjects
-import org.intellij.lang.annotations.Language
 import java.io.File
 import javax.tools.JavaFileObject
+import org.intellij.lang.annotations.Language
 
 /**
  * Common abstraction for test sources in kotlin and java
diff --git a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/steps/KotlinSourceCompilationStep.kt b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/steps/KotlinSourceCompilationStep.kt
index aa80eaf..940b4e6 100644
--- a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/steps/KotlinSourceCompilationStep.kt
+++ b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/steps/KotlinSourceCompilationStep.kt
@@ -17,9 +17,9 @@
 package androidx.room.compiler.processing.util.compiler.steps
 
 import androidx.room.compiler.processing.util.compiler.KotlinCliRunner
-import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
-import org.jetbrains.kotlin.cli.common.ExitCode
 import java.io.File
+import org.jetbrains.kotlin.cli.common.ExitCode
+import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
 
 /**
  * Compiles kotlin sources.
diff --git a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt
index cf0ef44..dda1356 100644
--- a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt
+++ b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt
@@ -18,10 +18,10 @@
 
 import androidx.room.compiler.processing.ExperimentalProcessingApi
 import com.google.common.truth.Truth.assertThat
+import javax.tools.Diagnostic
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import javax.tools.Diagnostic
 
 @RunWith(Parameterized::class)
 @OptIn(ExperimentalProcessingApi::class)
diff --git a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/GeneratedCodeMatchTest.kt b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/GeneratedCodeMatchTest.kt
index fc964f9..ba43888 100644
--- a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/GeneratedCodeMatchTest.kt
+++ b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/GeneratedCodeMatchTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.room.compiler.processing.util
 
-import com.squareup.kotlinpoet.TypeSpec as KTypeSpec
 import androidx.room.compiler.processing.ExperimentalProcessingApi
 import androidx.room.compiler.processing.XElement
 import androidx.room.compiler.processing.compat.XConverters.toXProcessing
@@ -26,6 +25,7 @@
 import com.squareup.javapoet.TypeSpec
 import com.squareup.kotlinpoet.BOOLEAN
 import com.squareup.kotlinpoet.FileSpec
+import com.squareup.kotlinpoet.TypeSpec as KTypeSpec
 import java.io.File
 import org.junit.AssumptionViolatedException
 import org.junit.Test
@@ -93,6 +93,38 @@
     }
 
     @Test
+    fun successfulGeneratedJavaCodeMatchWithWriteSourceNoPackage() {
+        val file = JavaFile.builder(
+            "",
+            TypeSpec.classBuilder("Baz").build()
+        ).build()
+        runTest { invocation ->
+            if (invocation.processingEnv.findTypeElement("Baz") == null) {
+                val originatingElements: List<XElement> =
+                    file.typeSpec.originatingElements.map {
+                        it.toXProcessing(invocation.processingEnv)
+                    }
+                invocation.processingEnv.filer.writeSource(
+                    file.packageName,
+                    file.typeSpec.name,
+                    "java",
+                    originatingElements
+                ).bufferedWriter().use {
+                    it.write(file.toString())
+                }
+            }
+            invocation.assertCompilationResult {
+                generatedSource(
+                    Source.java(
+                        "Baz",
+                        file.toString()
+                    )
+                )
+            }
+        }
+    }
+
+    @Test
     fun missingGeneratedCode() {
         val result = runCatching {
             runTest { invocation ->
@@ -186,6 +218,38 @@
     }
 
     @Test
+    fun successfulGeneratedKotlinCodeMatchWithWriteSourceNoPackage() {
+        // java environment will not generate kotlin files
+        runTest.assumeCanCompileKotlin()
+
+        val type = KTypeSpec.classBuilder("Baz").build()
+        val file = FileSpec.builder("", "Baz")
+            .addType(type)
+            .build()
+        runTest { invocation ->
+            if (invocation.processingEnv.findTypeElement("Baz") == null) {
+                val originatingElements: List<XElement> =
+                    type.originatingElements.map {
+                        it.toXProcessing(invocation.processingEnv)
+                    }
+                invocation.processingEnv.filer.writeSource(
+                    file.packageName,
+                    file.name,
+                    "kt",
+                    originatingElements
+                ).bufferedWriter().use {
+                    it.write(file.toString())
+                }
+            }
+            invocation.assertCompilationResult {
+                generatedSource(
+                    Source.kotlin("Baz.kt", file.toString())
+                )
+            }
+        }
+    }
+
+    @Test
     fun successfulGeneratedKotlinCodeMatch() {
         // java environment will not generate kotlin files
         runTest.assumeCanCompileKotlin()
diff --git a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/MultiRoundProcessingTest.kt b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/MultiRoundProcessingTest.kt
index 0313f36..b6e62b6 100644
--- a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/MultiRoundProcessingTest.kt
+++ b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/MultiRoundProcessingTest.kt
@@ -20,10 +20,10 @@
 import com.squareup.javapoet.ClassName
 import com.squareup.javapoet.JavaFile
 import com.squareup.javapoet.TypeSpec
+import javax.tools.Diagnostic
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import javax.tools.Diagnostic
 
 @RunWith(Parameterized::class)
 class MultiRoundProcessingTest(
diff --git a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestRunnerTest.kt b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestRunnerTest.kt
index 3ad0d31..f13460d 100644
--- a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestRunnerTest.kt
+++ b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestRunnerTest.kt
@@ -38,11 +38,11 @@
 import com.squareup.javapoet.TypeSpec
 import com.squareup.kotlinpoet.FileSpec
 import com.squareup.kotlinpoet.KModifier
-import org.junit.Test
 import java.net.URLClassLoader
 import java.nio.file.Files
 import javax.lang.model.element.Modifier
 import javax.tools.Diagnostic
+import org.junit.Test
 
 @OptIn(ExperimentalProcessingApi::class)
 class TestRunnerTest {
diff --git a/room/room-compiler-processing/build.gradle b/room/room-compiler-processing/build.gradle
index 345e56b..f8d3190 100644
--- a/room/room-compiler-processing/build.gradle
+++ b/room/room-compiler-processing/build.gradle
@@ -20,6 +20,42 @@
 plugins {
     id("AndroidXPlugin")
     id("kotlin")
+    id("com.github.johnrengelman.shadow")
+}
+
+configurations {
+    // For shadowed / jarjared deps
+    shadowed
+    // shadowed deps are compile only deps
+    compileOnly.extendsFrom(shadowed)
+    // compiler tests don't use shadowed, so include them
+    testCompile.extendsFrom(shadowed)
+    // for downstream tests
+    shadowAndImplementation.extendsFrom(shadow)
+    shadowAndImplementation.extendsFrom(implementation)
+}
+
+shadowJar {
+    archiveClassifier = ""
+    configurations = [project.configurations.shadowed]
+    relocate("kotlinx.metadata", "androidx.room.jarjarred.kotlinx.metadata")
+    mergeServiceFiles() // kotlinx-metadata-jvm has a service descriptor that needs transformation
+}
+
+jar {
+    archiveClassifier = "before-jarjar"
+}
+
+configurations {
+    // replace the standard jar with the one built by 'shadowJar' in both api and runtime variants
+    apiElements.outgoing.artifacts.clear()
+    apiElements.outgoing.artifact(shadowJar) {
+        builtBy shadowJar
+    }
+    runtimeElements.outgoing.artifacts.clear()
+    runtimeElements.outgoing.artifact(shadowJar) {
+        builtBy shadowJar
+    }
 }
 
 dependencies {
@@ -30,8 +66,9 @@
     implementation(libs.guava)
     implementation(libs.autoCommon)
     implementation(libs.autoValueAnnotations)
-
-    implementation(libs.kotlinMetadataJvm)
+    shadowed(libs.kotlinMetadataJvm) {
+        exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib"
+    }
     implementation(libs.intellijAnnotations)
     implementation(libs.kspApi)
     implementation(libs.kotlinStdlibJdk8) // KSP defines older version as dependency, force update.
@@ -41,6 +78,7 @@
     testImplementation(libs.junit)
     testImplementation(libs.jsr250)
     testImplementation(libs.ksp)
+    testImplementation(libs.kotlinMetadataJvm)
     testImplementation(project(":room:room-compiler-processing-testing"))
     testImplementation(project(":internal-testutils-common"))
 }
@@ -60,7 +98,7 @@
 }
 
 androidx {
-    name = "AndroidX Room XProcessor"
+    name = "Room XProcessor"
     type = LibraryType.ANNOTATION_PROCESSOR_UTILS
     inceptionYear = "2020"
     description = "Processing Environment Abstraction for AndroidX Room"
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
index df2a0b3..522d97d 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
@@ -16,8 +16,6 @@
 
 package androidx.room.compiler.codegen
 
-import com.squareup.kotlinpoet.asClassName as asKClassName
-import com.squareup.kotlinpoet.asTypeName as asKTypeName
 import androidx.room.compiler.processing.XNullability
 import com.squareup.kotlinpoet.ARRAY
 import com.squareup.kotlinpoet.BOOLEAN_ARRAY
@@ -35,6 +33,8 @@
 import com.squareup.kotlinpoet.MUTABLE_SET
 import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
 import com.squareup.kotlinpoet.SHORT_ARRAY
+import com.squareup.kotlinpoet.asClassName as asKClassName
+import com.squareup.kotlinpoet.asTypeName as asKTypeName
 import com.squareup.kotlinpoet.javapoet.JClassName
 import com.squareup.kotlinpoet.javapoet.JParameterizedTypeName
 import com.squareup.kotlinpoet.javapoet.JTypeName
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XElement.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XElement.kt
index 7dec0bc..9dee083 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XElement.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XElement.kt
@@ -20,8 +20,8 @@
 import androidx.room.compiler.processing.ksp.KSFileAsOriginatingElement
 import androidx.room.compiler.processing.ksp.KspElement
 import androidx.room.compiler.processing.ksp.KspMemberContainer
-import androidx.room.compiler.processing.ksp.wrapAsOriginatingElement
 import androidx.room.compiler.processing.ksp.synthetic.KspSyntheticPropertyMethodElement
+import androidx.room.compiler.processing.ksp.wrapAsOriginatingElement
 import javax.lang.model.element.Element
 import kotlin.contracts.contract
 
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacAnnotation.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacAnnotation.kt
index 7f45596..2e532d3 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacAnnotation.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacAnnotation.kt
@@ -18,9 +18,9 @@
 
 import androidx.room.compiler.processing.InternalXAnnotation
 import androidx.room.compiler.processing.XAnnotationBox
+import androidx.room.compiler.processing.XAnnotationValue
 import androidx.room.compiler.processing.XNullability
 import androidx.room.compiler.processing.XType
-import androidx.room.compiler.processing.XAnnotationValue
 import androidx.room.compiler.processing.compat.XConverters.toXProcessing
 import com.google.auto.common.AnnotationMirrors
 import com.google.auto.common.MoreTypes
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacFiler.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacFiler.kt
index 2043d41..779539c 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacFiler.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacFiler.kt
@@ -60,8 +60,13 @@
             originatingElements.filterIsInstance<JavacElement>().map { it.element }.toTypedArray()
         return when (extension) {
             "java" -> {
+                val name = if (packageName.isEmpty()) {
+                    fileNameWithoutExtension
+                } else {
+                    "$packageName.$fileNameWithoutExtension"
+                }
                 delegate.createSourceFile(
-                    "$packageName.$fileNameWithoutExtension",
+                    name,
                     *javaOriginatingElements
                 ).openOutputStream()
             }
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspAnnotation.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspAnnotation.kt
index 4e48afc..dbfb091 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspAnnotation.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspAnnotation.kt
@@ -18,8 +18,8 @@
 
 import androidx.room.compiler.processing.InternalXAnnotation
 import androidx.room.compiler.processing.XAnnotationBox
-import androidx.room.compiler.processing.XType
 import androidx.room.compiler.processing.XAnnotationValue
+import androidx.room.compiler.processing.XType
 import com.google.devtools.ksp.symbol.KSAnnotation
 import com.google.devtools.ksp.symbol.KSType
 
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/MethodSpecHelperTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/MethodSpecHelperTest.kt
index f9e64b5..d408755 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/MethodSpecHelperTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/MethodSpecHelperTest.kt
@@ -21,22 +21,22 @@
 import androidx.room.compiler.processing.util.Source
 import androidx.room.compiler.processing.util.XTestInvocation
 import androidx.room.compiler.processing.util.compileFiles
-import androidx.testutils.generateAllEnumerations
 import androidx.room.compiler.processing.util.javaTypeUtils
 import androidx.room.compiler.processing.util.runKaptTest
 import androidx.room.compiler.processing.util.runProcessorTest
+import androidx.testutils.generateAllEnumerations
 import com.google.auto.common.MoreTypes
 import com.google.common.truth.Truth.assertThat
 import com.squareup.javapoet.MethodSpec
 import com.squareup.javapoet.ParameterSpec
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import java.io.File
 import javax.lang.model.element.ExecutableElement
 import javax.lang.model.element.Modifier
 import javax.lang.model.type.DeclaredType
 import javax.lang.model.util.Types
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @RunWith(Parameterized::class)
 class MethodSpecHelperTest(
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/OriginatingElementsTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/OriginatingElementsTest.kt
index 1c18366..800f064 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/OriginatingElementsTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/OriginatingElementsTest.kt
@@ -24,11 +24,11 @@
 import androidx.room.compiler.processing.util.runProcessorTest
 import com.google.common.truth.Truth.assertThat
 import com.squareup.javapoet.TypeSpec
+import javax.lang.model.element.ExecutableElement
+import javax.lang.model.element.TypeElement
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import javax.lang.model.element.ExecutableElement
-import javax.lang.model.element.TypeElement
 
 @RunWith(JUnit4::class)
 class OriginatingElementsTest {
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt
index c540af4..7574266 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt
@@ -19,10 +19,10 @@
 import androidx.room.compiler.processing.util.Source
 import androidx.room.compiler.processing.util.runProcessorTest
 import com.google.common.truth.Truth.assertThat
+import javax.tools.Diagnostic
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import javax.tools.Diagnostic
 
 @RunWith(JUnit4::class)
 class XMessagerTest {
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtilsTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtilsTest.kt
index 2c297e0..f83d2f4 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtilsTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/javac/kotlin/JvmDescriptorUtilsTest.kt
@@ -24,9 +24,6 @@
 import com.squareup.javapoet.ArrayTypeName
 import com.squareup.javapoet.ClassName
 import com.squareup.javapoet.TypeName
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import javax.annotation.processing.AbstractProcessor
 import javax.annotation.processing.RoundEnvironment
 import javax.lang.model.element.ElementKind.CONSTRUCTOR
@@ -34,6 +31,9 @@
 import javax.lang.model.element.ElementKind.METHOD
 import javax.lang.model.element.TypeElement
 import javax.tools.JavaFileObject
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class JvmDescriptorUtilsTest {
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspFieldElementTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspFieldElementTest.kt
index b753598..688c746 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspFieldElementTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspFieldElementTest.kt
@@ -17,10 +17,10 @@
 package androidx.room.compiler.processing.ksp
 
 import androidx.room.compiler.processing.XFieldElement
+import androidx.room.compiler.processing.ksp.KspFieldElementTest.TestModifier.FINAL
 import androidx.room.compiler.processing.ksp.KspFieldElementTest.TestModifier.PRIVATE
 import androidx.room.compiler.processing.ksp.KspFieldElementTest.TestModifier.PROTECTED
 import androidx.room.compiler.processing.ksp.KspFieldElementTest.TestModifier.PUBLIC
-import androidx.room.compiler.processing.ksp.KspFieldElementTest.TestModifier.FINAL
 import androidx.room.compiler.processing.util.Source
 import androidx.room.compiler.processing.util.XTestInvocation
 import androidx.room.compiler.processing.util.className
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspReflectiveAnnotationBoxTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspReflectiveAnnotationBoxTest.kt
index 8c694265..cc3a950 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspReflectiveAnnotationBoxTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspReflectiveAnnotationBoxTest.kt
@@ -20,8 +20,8 @@
 import com.google.common.truth.Truth.assertThat
 import com.squareup.javapoet.ClassName
 import com.squareup.javapoet.TypeName
-import org.junit.Test
 import kotlin.reflect.KClass
+import org.junit.Test
 
 class KspReflectiveAnnotationBoxTest {
     enum class TestEnum {
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/profiling/ProfileRule.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/profiling/ProfileRule.kt
index 03bc13c..b14ba17 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/profiling/ProfileRule.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/profiling/ProfileRule.kt
@@ -16,14 +16,14 @@
 
 package androidx.room.compiler.processing.profiling
 
-import org.junit.AssumptionViolatedException
-import org.junit.rules.TestRule
-import org.junit.runner.Description
-import org.junit.runners.model.Statement
 import kotlin.time.Duration
 import kotlin.time.Duration.Companion.nanoseconds
 import kotlin.time.DurationUnit
 import kotlin.time.ExperimentalTime
+import org.junit.AssumptionViolatedException
+import org.junit.rules.TestRule
+import org.junit.runner.Description
+import org.junit.runners.model.Statement
 
 /**
  * Helper rule to run profiling tests.
diff --git a/room/room-compiler/build.gradle b/room/room-compiler/build.gradle
index 6b7096e..98470ed 100644
--- a/room/room-compiler/build.gradle
+++ b/room/room-compiler/build.gradle
@@ -299,7 +299,7 @@
 }
 
 androidx {
-    name = "Android Room Compiler"
+    name = "Room Compiler"
     type = LibraryType.ANNOTATION_PROCESSOR
     inceptionYear = "2017"
     description = "Android Room annotation processor"
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/ext/xelement_ext.kt b/room/room-compiler/src/main/kotlin/androidx/room/ext/xelement_ext.kt
index 5c36768..42a63d5 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/ext/xelement_ext.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/ext/xelement_ext.kt
@@ -16,10 +16,10 @@
 
 package androidx.room.ext
 
-import kotlin.contracts.contract
 import androidx.room.compiler.processing.XElement
 import androidx.room.compiler.processing.XFieldElement
 import androidx.room.compiler.processing.XTypeElement
+import kotlin.contracts.contract
 
 fun XElement.isEntityElement(): Boolean {
     contract {
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseViewProcessor.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseViewProcessor.kt
index 67aecd0..44f349e 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseViewProcessor.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseViewProcessor.kt
@@ -16,10 +16,10 @@
 
 package androidx.room.processor
 
+import androidx.room.compiler.processing.XTypeElement
 import androidx.room.parser.ParsedQuery
 import androidx.room.parser.QueryType
 import androidx.room.parser.SqlParser
-import androidx.room.compiler.processing.XTypeElement
 import androidx.room.vo.DatabaseView
 
 class DatabaseViewProcessor(
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/binderprovider/LiveDataQueryResultBinderProvider.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/binderprovider/LiveDataQueryResultBinderProvider.kt
index 042b24a..3bd2cda 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/binderprovider/LiveDataQueryResultBinderProvider.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/binderprovider/LiveDataQueryResultBinderProvider.kt
@@ -16,9 +16,9 @@
 
 package androidx.room.solver.binderprovider
 
-import androidx.room.ext.LifecyclesTypeNames
 import androidx.room.compiler.processing.XRawType
 import androidx.room.compiler.processing.XType
+import androidx.room.ext.LifecyclesTypeNames
 import androidx.room.processor.Context
 import androidx.room.solver.ObservableQueryResultBinderProvider
 import androidx.room.solver.query.result.LiveDataQueryResultBinder
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/solver/types/CursorValueReader.kt b/room/room-compiler/src/main/kotlin/androidx/room/solver/types/CursorValueReader.kt
index 2e560af..6771c01 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/solver/types/CursorValueReader.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/solver/types/CursorValueReader.kt
@@ -16,8 +16,8 @@
 
 package androidx.room.solver.types
 
-import androidx.room.parser.SQLTypeAffinity
 import androidx.room.compiler.processing.XType
+import androidx.room.parser.SQLTypeAffinity
 import androidx.room.solver.CodeGenScope
 
 /**
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/util/SchemaDiffer.kt b/room/room-compiler/src/main/kotlin/androidx/room/util/SchemaDiffer.kt
index ceb7f64..9d59d4d 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/util/SchemaDiffer.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/util/SchemaDiffer.kt
@@ -23,12 +23,12 @@
 import androidx.room.migration.bundle.ForeignKeyBundle
 import androidx.room.migration.bundle.FtsEntityBundle
 import androidx.room.migration.bundle.IndexBundle
-import androidx.room.processor.ProcessorErrors.deletedOrRenamedTableFound
-import androidx.room.processor.ProcessorErrors.tableRenameError
 import androidx.room.processor.ProcessorErrors.conflictingRenameColumnAnnotationsFound
 import androidx.room.processor.ProcessorErrors.conflictingRenameTableAnnotationsFound
-import androidx.room.processor.ProcessorErrors.newNotNullColumnMustHaveDefaultValue
 import androidx.room.processor.ProcessorErrors.deletedOrRenamedColumnFound
+import androidx.room.processor.ProcessorErrors.deletedOrRenamedTableFound
+import androidx.room.processor.ProcessorErrors.newNotNullColumnMustHaveDefaultValue
+import androidx.room.processor.ProcessorErrors.tableRenameError
 import androidx.room.processor.ProcessorErrors.tableWithConflictingPrefixFound
 import androidx.room.vo.AutoMigration
 
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/DatabaseView.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/DatabaseView.kt
index 142cdf8..acdf443 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/DatabaseView.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/DatabaseView.kt
@@ -17,10 +17,10 @@
 package androidx.room.vo
 
 import androidx.room.compiler.processing.XType
-import androidx.room.migration.bundle.DatabaseViewBundle
-import androidx.room.parser.ParsedQuery
 import androidx.room.compiler.processing.XTypeElement
+import androidx.room.migration.bundle.DatabaseViewBundle
 import androidx.room.migration.bundle.VIEW_NAME_PLACEHOLDER
+import androidx.room.parser.ParsedQuery
 
 class DatabaseView(
     element: XTypeElement,
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/Entity.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/Entity.kt
index a565c5f..6f4b932 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/Entity.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/Entity.kt
@@ -17,8 +17,8 @@
 package androidx.room.vo
 
 import androidx.room.compiler.processing.XType
-import androidx.room.migration.bundle.EntityBundle
 import androidx.room.compiler.processing.XTypeElement
+import androidx.room.migration.bundle.EntityBundle
 import androidx.room.migration.bundle.TABLE_NAME_PLACEHOLDER
 
 /**
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/FtsEntity.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/FtsEntity.kt
index 0a33965..7295095 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/FtsEntity.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/FtsEntity.kt
@@ -17,10 +17,10 @@
 package androidx.room.vo
 
 import androidx.room.compiler.processing.XType
-import androidx.room.migration.bundle.FtsEntityBundle
-import androidx.room.parser.FtsVersion
 import androidx.room.compiler.processing.XTypeElement
+import androidx.room.migration.bundle.FtsEntityBundle
 import androidx.room.migration.bundle.TABLE_NAME_PLACEHOLDER
+import androidx.room.parser.FtsVersion
 
 /**
  * An Entity with a mapping FTS table.
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/PrimaryKey.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/PrimaryKey.kt
index fde1bf8..69816b4 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/PrimaryKey.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/PrimaryKey.kt
@@ -15,8 +15,8 @@
  */
 package androidx.room.vo
 
-import androidx.room.migration.bundle.PrimaryKeyBundle
 import androidx.room.compiler.processing.XElement
+import androidx.room.migration.bundle.PrimaryKeyBundle
 
 /**
  * Represents a PrimaryKey for an Entity.
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/QueryMethod.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/QueryMethod.kt
index 2a87a34..81d260c 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/QueryMethod.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/QueryMethod.kt
@@ -16,9 +16,9 @@
 
 package androidx.room.vo
 
-import androidx.room.parser.ParsedQuery
 import androidx.room.compiler.processing.XMethodElement
 import androidx.room.compiler.processing.XType
+import androidx.room.parser.ParsedQuery
 import androidx.room.solver.prepared.binder.PreparedQueryResultBinder
 import androidx.room.solver.query.result.QueryResultBinder
 
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/vo/SchemaIdentityKey.kt b/room/room-compiler/src/main/kotlin/androidx/room/vo/SchemaIdentityKey.kt
index 007ea5d..75e5117 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/vo/SchemaIdentityKey.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/vo/SchemaIdentityKey.kt
@@ -16,8 +16,8 @@
 
 package androidx.room.vo
 
-import org.apache.commons.codec.digest.DigestUtils
 import java.util.Locale
+import org.apache.commons.codec.digest.DigestUtils
 
 interface HasSchemaIdentity {
     fun getIdKey(): String
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/log/RLogTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/log/RLogTest.kt
index 0e39b5a..a45785d 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/log/RLogTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/log/RLogTest.kt
@@ -21,10 +21,10 @@
 import androidx.room.compiler.processing.XElement
 import androidx.room.compiler.processing.XMessager
 import androidx.room.vo.Warning
+import javax.tools.Diagnostic
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import javax.tools.Diagnostic
 
 @RunWith(JUnit4::class)
 class RLogTest {
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/parser/ExpandableSqlParserTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/parser/ExpandableSqlParserTest.kt
index 0a030e4..61d54d2 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/parser/ExpandableSqlParserTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/parser/ExpandableSqlParserTest.kt
@@ -18,9 +18,9 @@
 
 import androidx.room.parser.expansion.ExpandableSection
 import androidx.room.parser.expansion.ExpandableSqlParser
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.not
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
index f8e5603..076ccf0 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
@@ -24,8 +24,8 @@
 import androidx.room.compiler.processing.util.runKspTest
 import androidx.room.compiler.processing.util.runProcessorTest
 import androidx.room.ext.RoomTypeNames.ROOM_DB
-import androidx.room.processor.ProcessorErrors.nullableComponentInDaoMethodReturnType
 import androidx.room.processor.ProcessorErrors.nullableCollectionOrArrayReturnTypeInDaoMethod
+import androidx.room.processor.ProcessorErrors.nullableComponentInDaoMethodReturnType
 import androidx.room.testing.context
 import androidx.room.vo.Dao
 import androidx.room.vo.ReadQueryMethod
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
index 1806453c..55f7026 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
@@ -20,8 +20,8 @@
 import androidx.room.OnConflictStrategy
 import androidx.room.compiler.processing.XMethodElement
 import androidx.room.compiler.processing.XType
-import androidx.room.processor.ProcessorErrors.INSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_INSERT
 import androidx.room.processor.ProcessorErrors.CANNOT_FIND_INSERT_RESULT_ADAPTER
+import androidx.room.processor.ProcessorErrors.INSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_INSERT
 import androidx.room.processor.ProcessorErrors.INSERT_MULTI_PARAM_SINGLE_RETURN_MISMATCH
 import androidx.room.processor.ProcessorErrors.INSERT_SINGLE_PARAM_MULTI_RETURN_MISMATCH
 import androidx.room.vo.InsertionMethod
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/ProjectionExpanderTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/ProjectionExpanderTest.kt
index 3a136ab..2b5edd13 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/ProjectionExpanderTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/ProjectionExpanderTest.kt
@@ -25,8 +25,8 @@
 import androidx.room.parser.expansion.ProjectionExpander
 import androidx.room.testing.context
 import createVerifierFromEntitiesAndViews
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/UpsertionMethodProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/UpsertionMethodProcessorTest.kt
index 49832fb..0dea532 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/UpsertionMethodProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/UpsertionMethodProcessorTest.kt
@@ -19,8 +19,8 @@
 import androidx.room.Upsert
 import androidx.room.compiler.processing.XMethodElement
 import androidx.room.compiler.processing.XType
-import androidx.room.processor.ProcessorErrors.UPSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_UPSERT
 import androidx.room.processor.ProcessorErrors.CANNOT_FIND_UPSERT_RESULT_ADAPTER
+import androidx.room.processor.ProcessorErrors.UPSERTION_DOES_NOT_HAVE_ANY_PARAMETERS_TO_UPSERT
 import androidx.room.processor.ProcessorErrors.UPSERT_MULTI_PARAM_SINGLE_RETURN_MISMATCH
 import androidx.room.processor.ProcessorErrors.UPSERT_SINGLE_PARAM_MULTI_RETURN_MISMATCH
 import androidx.room.vo.UpsertionMethod
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/vo/FtsEntityTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/vo/FtsEntityTest.kt
index fcca115..c589003 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/vo/FtsEntityTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/vo/FtsEntityTest.kt
@@ -16,10 +16,10 @@
 
 package androidx.room.vo
 
-import androidx.room.parser.FtsVersion
 import androidx.room.compiler.processing.XElement
 import androidx.room.compiler.processing.XType
 import androidx.room.compiler.processing.XTypeElement
+import androidx.room.parser.FtsVersion
 import mockElementAndType
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
diff --git a/room/room-gradle-plugin/build.gradle b/room/room-gradle-plugin/build.gradle
index 8b12c66..e9dfec6 100644
--- a/room/room-gradle-plugin/build.gradle
+++ b/room/room-gradle-plugin/build.gradle
@@ -81,7 +81,7 @@
 }
 
 androidx {
-    name = "Android Room Gradle Plugin"
+    name = "Room Gradle Plugin"
     type = LibraryType.GRADLE_PLUGIN
     inceptionYear = "2023"
     description = "Android Room Gradle Plugin"
diff --git a/room/room-guava/build.gradle b/room/room-guava/build.gradle
index 99c5ad7..572953f 100644
--- a/room/room-guava/build.gradle
+++ b/room/room-guava/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "Android Room Guava"
+    name = "Room Guava"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android Room Guava"
diff --git a/room/room-ktx/build.gradle b/room/room-ktx/build.gradle
index 5e4a868..3dfa666 100644
--- a/room/room-ktx/build.gradle
+++ b/room/room-ktx/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = "Android Room Kotlin Extensions"
+    name = "Room Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Android Room Kotlin Extensions"
diff --git a/room/room-ktx/src/androidTest/java/androidx/room/CoroutineRoomCancellationTest.kt b/room/room-ktx/src/androidTest/java/androidx/room/CoroutineRoomCancellationTest.kt
index 97dcc0d..c3e1e03 100644
--- a/room/room-ktx/src/androidTest/java/androidx/room/CoroutineRoomCancellationTest.kt
+++ b/room/room-ktx/src/androidTest/java/androidx/room/CoroutineRoomCancellationTest.kt
@@ -22,6 +22,8 @@
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
+import java.util.concurrent.Callable
+import java.util.concurrent.CountDownLatch
 import kotlinx.coroutines.DelicateCoroutinesApi
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -34,8 +36,6 @@
 import kotlinx.coroutines.test.runCurrent
 import org.junit.Assert.fail
 import org.junit.Test
-import java.util.concurrent.Callable
-import java.util.concurrent.CountDownLatch
 
 @SmallTest
 @SdkSuppress(minSdkVersion = 16)
diff --git a/room/room-ktx/src/test/java/androidx/room/CoroutinesRoomTest.kt b/room/room-ktx/src/test/java/androidx/room/CoroutinesRoomTest.kt
index 08dc8c5..af8d5a7 100644
--- a/room/room-ktx/src/test/java/androidx/room/CoroutinesRoomTest.kt
+++ b/room/room-ktx/src/test/java/androidx/room/CoroutinesRoomTest.kt
@@ -18,6 +18,7 @@
 
 import androidx.kruth.assertThat
 import androidx.sqlite.db.SupportSQLiteOpenHelper
+import kotlin.coroutines.ContinuationInterceptor
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.async
 import kotlinx.coroutines.flow.first
@@ -26,7 +27,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import kotlin.coroutines.ContinuationInterceptor
 
 @RunWith(JUnit4::class)
 class CoroutinesRoomTest {
diff --git a/room/room-ktx/src/test/java/androidx/room/MigrationTest.kt b/room/room-ktx/src/test/java/androidx/room/MigrationTest.kt
index f49e8ce..bf24923 100644
--- a/room/room-ktx/src/test/java/androidx/room/MigrationTest.kt
+++ b/room/room-ktx/src/test/java/androidx/room/MigrationTest.kt
@@ -26,10 +26,10 @@
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteQuery
 import androidx.sqlite.db.SupportSQLiteStatement
+import java.util.Locale
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.Locale
 
 @RunWith(JUnit4::class)
 class MigrationTest {
diff --git a/room/room-migration/build.gradle b/room/room-migration/build.gradle
index 20954b0..3eb7477 100644
--- a/room/room-migration/build.gradle
+++ b/room/room-migration/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android Room Migration"
+    name = "Room Migration"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Room Migration"
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/DatabaseViewBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/DatabaseViewBundle.kt
index 247ec91a..4d8d0d4 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/DatabaseViewBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/DatabaseViewBundle.kt
@@ -17,7 +17,6 @@
 package androidx.room.migration.bundle
 
 import androidx.annotation.RestrictTo
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/EntityBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/EntityBundle.kt
index 515574b..ca445ae 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/EntityBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/EntityBundle.kt
@@ -18,7 +18,6 @@
 
 import androidx.annotation.RestrictTo
 import androidx.room.migration.bundle.SchemaEqualityUtil.checkSchemaEquality
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/FieldBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/FieldBundle.kt
index 4b3e07e..c13f17f 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/FieldBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/FieldBundle.kt
@@ -17,7 +17,6 @@
 package androidx.room.migration.bundle
 
 import androidx.annotation.RestrictTo
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/ForeignKeyBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/ForeignKeyBundle.kt
index 5420167..3939331 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/ForeignKeyBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/ForeignKeyBundle.kt
@@ -17,7 +17,6 @@
 package androidx.room.migration.bundle
 
 import androidx.annotation.RestrictTo
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsEntityBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsEntityBundle.kt
index a66911b..0653167 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsEntityBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsEntityBundle.kt
@@ -18,7 +18,6 @@
 
 import androidx.annotation.RestrictTo
 import androidx.room.migration.bundle.SchemaEqualityUtil.checkSchemaEquality
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsOptionsBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsOptionsBundle.kt
index da62796..1040374 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsOptionsBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/FtsOptionsBundle.kt
@@ -17,7 +17,6 @@
 package androidx.room.migration.bundle
 
 import androidx.annotation.RestrictTo
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/IndexBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/IndexBundle.kt
index a54c633..c245c78 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/IndexBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/IndexBundle.kt
@@ -18,7 +18,6 @@
 
 import androidx.annotation.RestrictTo
 import androidx.room.Index
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/main/java/androidx/room/migration/bundle/PrimaryKeyBundle.kt b/room/room-migration/src/main/java/androidx/room/migration/bundle/PrimaryKeyBundle.kt
index b8f2406..1fd0e00 100644
--- a/room/room-migration/src/main/java/androidx/room/migration/bundle/PrimaryKeyBundle.kt
+++ b/room/room-migration/src/main/java/androidx/room/migration/bundle/PrimaryKeyBundle.kt
@@ -17,7 +17,6 @@
 package androidx.room.migration.bundle
 
 import androidx.annotation.RestrictTo
-
 import com.google.gson.annotations.SerializedName
 
 /**
diff --git a/room/room-migration/src/test/java/androidx/room/migration/bundle/DatabaseViewBundleTest.kt b/room/room-migration/src/test/java/androidx/room/migration/bundle/DatabaseViewBundleTest.kt
index 3f37dba..75fb554 100644
--- a/room/room-migration/src/test/java/androidx/room/migration/bundle/DatabaseViewBundleTest.kt
+++ b/room/room-migration/src/test/java/androidx/room/migration/bundle/DatabaseViewBundleTest.kt
@@ -18,7 +18,6 @@
 
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
-
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
diff --git a/room/room-migration/src/test/java/androidx/room/migration/bundle/PrimaryKeyBundleTest.kt b/room/room-migration/src/test/java/androidx/room/migration/bundle/PrimaryKeyBundleTest.kt
index 9a42f55..8b43988 100644
--- a/room/room-migration/src/test/java/androidx/room/migration/bundle/PrimaryKeyBundleTest.kt
+++ b/room/room-migration/src/test/java/androidx/room/migration/bundle/PrimaryKeyBundleTest.kt
@@ -18,7 +18,6 @@
 
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
-
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
diff --git a/room/room-paging/src/androidTest/kotlin/androidx/room/InvalidationTrackerExtRoomPaging.kt b/room/room-paging/src/androidTest/kotlin/androidx/room/InvalidationTrackerExtRoomPaging.kt
index 654a96e..fe1df3e6 100644
--- a/room/room-paging/src/androidTest/kotlin/androidx/room/InvalidationTrackerExtRoomPaging.kt
+++ b/room/room-paging/src/androidTest/kotlin/androidx/room/InvalidationTrackerExtRoomPaging.kt
@@ -15,9 +15,9 @@
  */
 package androidx.room
 
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.withTimeout
-import java.util.concurrent.TimeUnit
 
 /**
  * True if invalidation tracker is pending a refresh event to get database changes.
diff --git a/room/room-paging/src/androidTest/kotlin/androidx/room/paging/LimitOffsetPagingSourceTest.kt b/room/room-paging/src/androidTest/kotlin/androidx/room/paging/LimitOffsetPagingSourceTest.kt
index e4bcd8b..8231cf1 100644
--- a/room/room-paging/src/androidTest/kotlin/androidx/room/paging/LimitOffsetPagingSourceTest.kt
+++ b/room/room-paging/src/androidTest/kotlin/androidx/room/paging/LimitOffsetPagingSourceTest.kt
@@ -34,23 +34,23 @@
 import androidx.testutils.FilteringExecutor
 import androidx.testutils.TestExecutor
 import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
-import kotlinx.coroutines.test.advanceUntilIdle
-import org.junit.After
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
 import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
 import kotlin.test.assertFailsWith
 import kotlin.test.assertFalse
 import kotlin.test.assertTrue
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.test.advanceUntilIdle
 import kotlinx.coroutines.test.runTest
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
 
 private const val tableName: String = "TestItem"
 
diff --git a/room/room-paging/src/main/java/androidx/room/paging/LimitOffsetPagingSource.kt b/room/room-paging/src/main/java/androidx/room/paging/LimitOffsetPagingSource.kt
index 6634131..bca76d1 100644
--- a/room/room-paging/src/main/java/androidx/room/paging/LimitOffsetPagingSource.kt
+++ b/room/room-paging/src/main/java/androidx/room/paging/LimitOffsetPagingSource.kt
@@ -32,8 +32,8 @@
 import androidx.room.paging.util.queryItemCount
 import androidx.room.withTransaction
 import androidx.sqlite.db.SupportSQLiteQuery
-import kotlinx.coroutines.withContext
 import java.util.concurrent.atomic.AtomicInteger
+import kotlinx.coroutines.withContext
 
 /**
  * An implementation of [PagingSource] to perform a LIMIT OFFSET query
diff --git a/room/room-paging/src/main/java/androidx/room/paging/util/RoomPagingUtil.kt b/room/room-paging/src/main/java/androidx/room/paging/util/RoomPagingUtil.kt
index 1722c11..e51ceb0 100644
--- a/room/room-paging/src/main/java/androidx/room/paging/util/RoomPagingUtil.kt
+++ b/room/room-paging/src/main/java/androidx/room/paging/util/RoomPagingUtil.kt
@@ -22,8 +22,8 @@
 import androidx.annotation.RestrictTo
 import androidx.paging.PagingSource
 import androidx.paging.PagingSource.LoadParams
-import androidx.paging.PagingSource.LoadParams.Prepend
 import androidx.paging.PagingSource.LoadParams.Append
+import androidx.paging.PagingSource.LoadParams.Prepend
 import androidx.paging.PagingSource.LoadParams.Refresh
 import androidx.paging.PagingSource.LoadResult
 import androidx.paging.PagingState
diff --git a/room/room-runtime-lint/build.gradle b/room/room-runtime-lint/build.gradle
index ea43587..52cc23c 100644
--- a/room/room-runtime-lint/build.gradle
+++ b/room/room-runtime-lint/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "Android Room-Runtime Lint Checks"
+    name = "Room-Runtime Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2022"
     description = "Android Room-Runtime Lint Checks"
diff --git a/room/room-runtime/build.gradle b/room/room-runtime/build.gradle
index 5859784..f5a047d 100644
--- a/room/room-runtime/build.gradle
+++ b/room/room-runtime/build.gradle
@@ -73,7 +73,7 @@
 }
 
 androidx {
-    name = "Android Room-Runtime"
+    name = "Room-Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Room-Runtime"
diff --git a/room/room-runtime/src/androidTest/java/androidx/room/AutoCloserTest.kt b/room/room-runtime/src/androidTest/java/androidx/room/AutoCloserTest.kt
index ceaacd1..6a3fc94 100644
--- a/room/room-runtime/src/androidTest/java/androidx/room/AutoCloserTest.kt
+++ b/room/room-runtime/src/androidTest/java/androidx/room/AutoCloserTest.kt
@@ -27,14 +27,14 @@
 import androidx.test.filters.MediumTest
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
+import java.io.IOException
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.IOException
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
diff --git a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt
index 5b2fc1d..2efa582 100644
--- a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt
+++ b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperFactoryTest.kt
@@ -24,13 +24,13 @@
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
 import androidx.test.core.app.ApplicationProvider
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.atomic.AtomicInteger
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
-import java.util.concurrent.Executors
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.atomic.AtomicInteger
 
 public class AutoClosingRoomOpenHelperFactoryTest {
     private val DB_NAME = "name"
diff --git a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt
index d8f36a4a..0a22c62 100644
--- a/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt
+++ b/room/room-runtime/src/androidTest/java/androidx/room/AutoClosingRoomOpenHelperTest.kt
@@ -29,12 +29,12 @@
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.assertThrows
 import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Ignore
-import org.junit.Test
 import java.io.IOException
 import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Test
 
 class AutoClosingRoomOpenHelperTest {
 
diff --git a/room/room-runtime/src/main/java/androidx/room/EntityUpsertionAdapter.kt b/room/room-runtime/src/main/java/androidx/room/EntityUpsertionAdapter.kt
index 89fb70a..b1c65a8 100644
--- a/room/room-runtime/src/main/java/androidx/room/EntityUpsertionAdapter.kt
+++ b/room/room-runtime/src/main/java/androidx/room/EntityUpsertionAdapter.kt
@@ -17,8 +17,8 @@
 package androidx.room
 
 import android.database.sqlite.SQLiteConstraintException
-import androidx.annotation.RestrictTo
 import android.os.Build
+import androidx.annotation.RestrictTo
 
 /**
  * The ErrorCode defined by SQLite Library for SQLITE_CONSTRAINT_PRIMARYKEY error
diff --git a/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.kt b/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.kt
index 0659f92..bbf6f8e 100644
--- a/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.kt
+++ b/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.kt
@@ -15,10 +15,10 @@
  */
 package androidx.room
 
-import android.content.Intent
-import android.content.ServiceConnection
 import android.content.ComponentName
 import android.content.Context
+import android.content.Intent
+import android.content.ServiceConnection
 import android.os.IBinder
 import android.os.RemoteException
 import android.util.Log
diff --git a/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.kt b/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.kt
index 761541d..06ecd35 100644
--- a/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.kt
+++ b/room/room-runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.kt
@@ -16,9 +16,9 @@
 package androidx.room
 
 import android.app.Service
-import android.os.RemoteCallbackList
 import android.content.Intent
 import android.os.IBinder
+import android.os.RemoteCallbackList
 import android.os.RemoteException
 import android.util.Log
 import androidx.room.Room.LOG_TAG
diff --git a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorDatabase.kt b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorDatabase.kt
index 4fb5661..d6a4107 100644
--- a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorDatabase.kt
+++ b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorDatabase.kt
@@ -19,7 +19,6 @@
 import android.database.Cursor
 import android.database.sqlite.SQLiteTransactionListener
 import android.os.CancellationSignal
-
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteQuery
 import androidx.sqlite.db.SupportSQLiteStatement
diff --git a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelper.kt b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelper.kt
index 4f36a1f..c15672f 100644
--- a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelper.kt
+++ b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelper.kt
@@ -18,7 +18,6 @@
 
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
-
 import java.util.concurrent.Executor
 
 internal class QueryInterceptorOpenHelper(
diff --git a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelperFactory.kt b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelperFactory.kt
index d0fab60..1d86465 100644
--- a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelperFactory.kt
+++ b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorOpenHelperFactory.kt
@@ -17,7 +17,6 @@
 package androidx.room
 
 import androidx.sqlite.db.SupportSQLiteOpenHelper
-
 import java.util.concurrent.Executor
 
 /**
diff --git a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorStatement.kt b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorStatement.kt
index 2ec9508..50cf02c 100644
--- a/room/room-runtime/src/main/java/androidx/room/QueryInterceptorStatement.kt
+++ b/room/room-runtime/src/main/java/androidx/room/QueryInterceptorStatement.kt
@@ -17,7 +17,6 @@
 package androidx.room
 
 import androidx.sqlite.db.SupportSQLiteStatement
-
 import java.util.concurrent.Executor
 
 /**
diff --git a/room/room-runtime/src/main/java/androidx/room/SQLiteCopyOpenHelper.kt b/room/room-runtime/src/main/java/androidx/room/SQLiteCopyOpenHelper.kt
index dceaab0..37d3ebd 100644
--- a/room/room-runtime/src/main/java/androidx/room/SQLiteCopyOpenHelper.kt
+++ b/room/room-runtime/src/main/java/androidx/room/SQLiteCopyOpenHelper.kt
@@ -20,8 +20,8 @@
 import android.util.Log
 import androidx.annotation.RequiresApi
 import androidx.room.Room.LOG_TAG
-import androidx.room.util.readVersion
 import androidx.room.util.copy
+import androidx.room.util.readVersion
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
diff --git a/room/room-runtime/src/test/java/androidx/room/InvalidationLiveDataContainerTest.kt b/room/room-runtime/src/test/java/androidx/room/InvalidationLiveDataContainerTest.kt
index 62d6ecd..b63bfa0 100644
--- a/room/room-runtime/src/test/java/androidx/room/InvalidationLiveDataContainerTest.kt
+++ b/room/room-runtime/src/test/java/androidx/room/InvalidationLiveDataContainerTest.kt
@@ -17,6 +17,7 @@
 package androidx.room
 
 import androidx.lifecycle.LiveData
+import java.util.concurrent.Callable
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Before
@@ -24,7 +25,6 @@
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito
-import java.util.concurrent.Callable
 
 @RunWith(JUnit4::class)
 class InvalidationLiveDataContainerTest {
diff --git a/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt b/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
index b1b2124..be50aa4 100644
--- a/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
+++ b/room/room-runtime/src/test/java/androidx/room/SQLiteCopyOpenHelperTest.kt
@@ -22,19 +22,6 @@
 import androidx.annotation.RequiresApi
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertSame
-import org.junit.Ignore
-import org.junit.Rule
-import org.junit.Test
-import org.junit.rules.TemporaryFolder
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-import org.mockito.Mockito.`when`
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.times
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoMoreInteractions
 import java.io.File
 import java.io.FileInputStream
 import java.io.IOException
@@ -45,6 +32,19 @@
 import java.util.concurrent.TimeoutException
 import java.util.concurrent.atomic.AtomicInteger
 import kotlin.concurrent.thread
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertSame
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TemporaryFolder
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.mockito.Mockito.mock
+import org.mockito.Mockito.times
+import org.mockito.Mockito.verify
+import org.mockito.Mockito.verifyNoMoreInteractions
+import org.mockito.Mockito.`when`
 
 @RunWith(JUnit4::class)
 class SQLiteCopyOpenHelperTest {
diff --git a/room/room-runtime/src/test/java/androidx/room/TransactionExecutorTest.kt b/room/room-runtime/src/test/java/androidx/room/TransactionExecutorTest.kt
index edda059..9163232 100644
--- a/room/room-runtime/src/test/java/androidx/room/TransactionExecutorTest.kt
+++ b/room/room-runtime/src/test/java/androidx/room/TransactionExecutorTest.kt
@@ -17,13 +17,13 @@
 package androidx.room
 
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.Executors
-import java.util.concurrent.TimeUnit
 
 @RunWith(JUnit4::class)
 class TransactionExecutorTest {
diff --git a/room/room-runtime/src/test/java/androidx/room/util/UUIDUtilTest.kt b/room/room-runtime/src/test/java/androidx/room/util/UUIDUtilTest.kt
index 19ec25d..aafd7cd 100644
--- a/room/room-runtime/src/test/java/androidx/room/util/UUIDUtilTest.kt
+++ b/room/room-runtime/src/test/java/androidx/room/util/UUIDUtilTest.kt
@@ -17,12 +17,12 @@
 package androidx.room.util
 
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 import java.nio.ByteBuffer
 import java.util.UUID
 import kotlin.random.Random
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
 class UUIDUtilTest {
diff --git a/room/room-rxjava2/build.gradle b/room/room-rxjava2/build.gradle
index 6cc2e1e..c802802 100644
--- a/room/room-rxjava2/build.gradle
+++ b/room/room-rxjava2/build.gradle
@@ -39,7 +39,7 @@
 }
 
 androidx {
-    name = "Android Room RXJava2"
+    name = "Room RXJava2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Room RXJava2"
diff --git a/room/room-rxjava2/src/test/java/androidx/room/RxRoomTest.kt b/room/room-rxjava2/src/test/java/androidx/room/RxRoomTest.kt
index bea3aa5..a5d9af9 100644
--- a/room/room-rxjava2/src/test/java/androidx/room/RxRoomTest.kt
+++ b/room/room-rxjava2/src/test/java/androidx/room/RxRoomTest.kt
@@ -17,25 +17,24 @@
 
 import androidx.arch.core.executor.ArchTaskExecutor
 import androidx.arch.core.executor.testing.CountingTaskExecutorRule
+import com.google.common.truth.Truth.assertThat
 import io.reactivex.functions.Consumer
 import io.reactivex.observers.TestObserver
 import io.reactivex.subscribers.TestSubscriber
-
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.atomic.AtomicReference
-import com.google.common.truth.Truth.assertThat
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.kotlin.any
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.whenever
 import org.mockito.kotlin.doAnswer
-import org.mockito.kotlin.verify
+import org.mockito.kotlin.mock
 import org.mockito.kotlin.never
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
 
 @RunWith(JUnit4::class)
 class RxRoomTest {
diff --git a/room/room-rxjava3/build.gradle b/room/room-rxjava3/build.gradle
index fee4abe..3533c33 100644
--- a/room/room-rxjava3/build.gradle
+++ b/room/room-rxjava3/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "Android Room RXJava3"
+    name = "Room RXJava3"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android Room RXJava3"
diff --git a/room/room-rxjava3/src/test/java/androidx/room/rxjava3/RxRoomTest.kt b/room/room-rxjava3/src/test/java/androidx/room/rxjava3/RxRoomTest.kt
index cb5b547..e63839a 100644
--- a/room/room-rxjava3/src/test/java/androidx/room/rxjava3/RxRoomTest.kt
+++ b/room/room-rxjava3/src/test/java/androidx/room/rxjava3/RxRoomTest.kt
@@ -30,14 +30,14 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import org.mockito.kotlin.any
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.whenever
-import org.mockito.kotlin.doAnswer
-import org.mockito.kotlin.verify
-import org.mockito.kotlin.never
 import org.mockito.invocation.InvocationOnMock
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doAnswer
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
 
 @RunWith(JUnit4::class)
 class RxRoomTest {
diff --git a/room/room-testing/build.gradle b/room/room-testing/build.gradle
index 1471e49..e8970dc 100644
--- a/room/room-testing/build.gradle
+++ b/room/room-testing/build.gradle
@@ -54,7 +54,7 @@
 }
 
 androidx {
-    name = "Android Room Testing"
+    name = "Room Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Room Testing"
diff --git a/samples/AndroidXDemos/src/main/java/com/example/androidx/widget/RecyclerViewCoordinatorLayoutAppBarActivity.kt b/samples/AndroidXDemos/src/main/java/com/example/androidx/widget/RecyclerViewCoordinatorLayoutAppBarActivity.kt
index 163843d..ce8e561 100644
--- a/samples/AndroidXDemos/src/main/java/com/example/androidx/widget/RecyclerViewCoordinatorLayoutAppBarActivity.kt
+++ b/samples/AndroidXDemos/src/main/java/com/example/androidx/widget/RecyclerViewCoordinatorLayoutAppBarActivity.kt
@@ -21,11 +21,9 @@
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
-
 import androidx.appcompat.app.AppCompatActivity
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
-
 import com.example.androidx.R
 
 class RecyclerViewCoordinatorLayoutAppBarActivity : AppCompatActivity() {
diff --git a/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistryOwner.kt b/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistryOwner.kt
index dc63d7f..4d8667a 100644
--- a/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistryOwner.kt
+++ b/savedstate/savedstate/src/main/java/androidx/savedstate/SavedStateRegistryOwner.kt
@@ -16,8 +16,8 @@
 package androidx.savedstate
 
 import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.LifecycleObserver
+import androidx.lifecycle.LifecycleOwner
 /**
  * A scope that owns [SavedStateRegistry]
  *
diff --git a/security/security-app-authenticator-testing/build.gradle b/security/security-app-authenticator-testing/build.gradle
index 7f3ed40..e0e8856 100644
--- a/security/security-app-authenticator-testing/build.gradle
+++ b/security/security-app-authenticator-testing/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "Android Security App Package Authenticator Testing"
+    name = "Security App Authenticator Testing Extensions"
     type = LibraryType.PUBLISHED_TEST_LIBRARY
     mavenVersion = LibraryVersions.SECURITY_APP_AUTHENTICATOR_TESTING
     inceptionYear = "2021"
diff --git a/security/security-app-authenticator/build.gradle b/security/security-app-authenticator/build.gradle
index cb80735..de6d420 100644
--- a/security/security-app-authenticator/build.gradle
+++ b/security/security-app-authenticator/build.gradle
@@ -48,7 +48,7 @@
 }
 
 androidx {
-    name = "Android Security App Package Authenitcator Library"
+    name = "Security App Authenitcator"
     type = LibraryType.PUBLISHED_LIBRARY
     mavenVersion = LibraryVersions.SECURITY_APP_AUTHENTICATOR
     inceptionYear = "2020"
diff --git a/security/security-biometric/build.gradle b/security/security-biometric/build.gradle
index c8204ad..c48792f 100644
--- a/security/security-biometric/build.gradle
+++ b/security/security-biometric/build.gradle
@@ -43,7 +43,7 @@
 }
 
 androidx {
-    name = "AndroidX Security Biometric"
+    name = "Security Biometric"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.SECURITY_BIOMETRIC
     inceptionYear = "2020"
diff --git a/security/security-crypto-ktx/build.gradle b/security/security-crypto-ktx/build.gradle
index adf0c8b..6717a1f 100644
--- a/security/security-crypto-ktx/build.gradle
+++ b/security/security-crypto-ktx/build.gradle
@@ -42,7 +42,7 @@
 }
 
 androidx {
-    name = "AndroidX Security Kotlin Extensions"
+    name = "Security Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.SECURITY
     inceptionYear = "2020"
diff --git a/security/security-crypto-ktx/src/androidTest/java/androidx/security/crypto/KtxTests.kt b/security/security-crypto-ktx/src/androidTest/java/androidx/security/crypto/KtxTests.kt
index d91fc08..5e2e079 100644
--- a/security/security-crypto-ktx/src/androidTest/java/androidx/security/crypto/KtxTests.kt
+++ b/security/security-crypto-ktx/src/androidTest/java/androidx/security/crypto/KtxTests.kt
@@ -20,13 +20,13 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import java.io.File
+import java.nio.charset.StandardCharsets
+import java.security.KeyStore
 import org.junit.Assert
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.File
-import java.nio.charset.StandardCharsets
-import java.security.KeyStore
 
 private const val PREFS_FILE = "test_shared_prefs"
 
diff --git a/security/security-crypto/build.gradle b/security/security-crypto/build.gradle
index 4b86de9..f33cc83 100644
--- a/security/security-crypto/build.gradle
+++ b/security/security-crypto/build.gradle
@@ -46,7 +46,7 @@
 }
 
 androidx {
-    name = "AndroidX Security"
+    name = "Security"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.SECURITY
     inceptionYear = "2019"
diff --git a/security/security-identity-credential/build.gradle b/security/security-identity-credential/build.gradle
index d6b322a..b81043e 100644
--- a/security/security-identity-credential/build.gradle
+++ b/security/security-identity-credential/build.gradle
@@ -45,7 +45,7 @@
 }
 
 androidx {
-    name = "AndroidX Security"
+    name = "Security"
     publish = Publish.SNAPSHOT_AND_RELEASE
     runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
     mavenVersion = LibraryVersions.SECURITY_IDENTITY_CREDENTIAL
diff --git a/sharetarget/sharetarget/build.gradle b/sharetarget/sharetarget/build.gradle
index 233ff32..4c1c02f 100644
--- a/sharetarget/sharetarget/build.gradle
+++ b/sharetarget/sharetarget/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "AndroidX Share Target Support Library"
+    name = "Share Target"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "ShareTarget"
diff --git a/slice/slice-benchmark/build.gradle b/slice/slice-benchmark/build.gradle
index 1e151d0..6cfa1f1 100644
--- a/slice/slice-benchmark/build.gradle
+++ b/slice/slice-benchmark/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "Slices Benchmarks"
+    name = "Slice Benchmarks"
     publish = Publish.NONE // Library is deprecated pending removal.
     mavenVersion = LibraryVersions.SLICE_BENCHMARK
     inceptionYear = "2018"
diff --git a/slice/slice-builders-ktx/build.gradle b/slice/slice-builders-ktx/build.gradle
index cbd1af6..c67b6c7 100644
--- a/slice/slice-builders-ktx/build.gradle
+++ b/slice/slice-builders-ktx/build.gradle
@@ -45,7 +45,7 @@
 }
 
 androidx {
-    name = "Slice builders KTX"
+    name = "Slice Builders Kotlin Extensions"
     publish = Publish.SNAPSHOT_ONLY // Library is deprecated pending removal.
     runApiTasks = new RunApiTasks.Yes() // Pending removal, but keep API files for now.
     mavenVersion = LibraryVersions.SLICE_BUILDERS_KTX
diff --git a/slice/slice-builders/build.gradle b/slice/slice-builders/build.gradle
index a8c0dbb..06f184e 100644
--- a/slice/slice-builders/build.gradle
+++ b/slice/slice-builders/build.gradle
@@ -31,7 +31,7 @@
 }
 
 androidx {
-    name = "Slice builders"
+    name = "Slice Builders"
     publish = Publish.SNAPSHOT_ONLY // Library is deprecated pending removal.
     runApiTasks = new RunApiTasks.Yes() // Pending removal, but keep API files for now.
     mavenVersion = LibraryVersions.SLICE
diff --git a/slice/slice-core/build.gradle b/slice/slice-core/build.gradle
index 03a0441..33028b2 100644
--- a/slice/slice-core/build.gradle
+++ b/slice/slice-core/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Common utilities for slices"
+    name = "Slice Core"
     publish = Publish.SNAPSHOT_ONLY // Library is deprecated pending removal.
     runApiTasks = new RunApiTasks.Yes() // Pending removal, but keep API files for now.
     mavenVersion = LibraryVersions.SLICE
diff --git a/slice/slice-test/build.gradle b/slice/slice-test/build.gradle
index a7330d5..6913178 100644
--- a/slice/slice-test/build.gradle
+++ b/slice/slice-test/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "Slice test code"
+    name = "Slice Test Extensions"
     type = LibraryType.INTERNAL_TEST_LIBRARY
     publish = Publish.NONE // Library is deprecated pending removal.
     mavenVersion = LibraryVersions.SLICE
diff --git a/slice/slice-view/build.gradle b/slice/slice-view/build.gradle
index 8f8c858..14f019d 100644
--- a/slice/slice-view/build.gradle
+++ b/slice/slice-view/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = "Slice views"
+    name = "Slice Views"
     publish = Publish.SNAPSHOT_ONLY // Library is deprecated pending removal.
     runApiTasks = new RunApiTasks.Yes() // Pending removal, but keep API files for now.
     mavenVersion = LibraryVersions.SLICE
diff --git a/slidingpanelayout/slidingpanelayout/api/current.txt b/slidingpanelayout/slidingpanelayout/api/current.txt
index 9340904..eecf512 100644
--- a/slidingpanelayout/slidingpanelayout/api/current.txt
+++ b/slidingpanelayout/slidingpanelayout/api/current.txt
@@ -6,6 +6,7 @@
     ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?);
     ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?, int);
     method public void addPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener);
+    method public void addSlideableStateListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.SlideableStateListener);
     method protected boolean canScroll(android.view.View, boolean, int, int, int);
     method @Deprecated public boolean canSlide();
     method public void close();
@@ -19,6 +20,7 @@
     method public void open();
     method public boolean openPane();
     method public void removePanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener);
+    method public void removeSlideableStateListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.SlideableStateListener);
     method @Deprecated public void setCoveredFadeColor(@ColorInt int);
     method public final void setLockMode(int);
     method @Deprecated public void setPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener?);
@@ -61,5 +63,9 @@
     method public void onPanelSlide(android.view.View, float);
   }
 
+  public static interface SlidingPaneLayout.SlideableStateListener {
+    method public void onSlideableStateChanged(boolean);
+  }
+
 }
 
diff --git a/slidingpanelayout/slidingpanelayout/api/public_plus_experimental_current.txt b/slidingpanelayout/slidingpanelayout/api/public_plus_experimental_current.txt
index 9340904..eecf512 100644
--- a/slidingpanelayout/slidingpanelayout/api/public_plus_experimental_current.txt
+++ b/slidingpanelayout/slidingpanelayout/api/public_plus_experimental_current.txt
@@ -6,6 +6,7 @@
     ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?);
     ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?, int);
     method public void addPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener);
+    method public void addSlideableStateListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.SlideableStateListener);
     method protected boolean canScroll(android.view.View, boolean, int, int, int);
     method @Deprecated public boolean canSlide();
     method public void close();
@@ -19,6 +20,7 @@
     method public void open();
     method public boolean openPane();
     method public void removePanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener);
+    method public void removeSlideableStateListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.SlideableStateListener);
     method @Deprecated public void setCoveredFadeColor(@ColorInt int);
     method public final void setLockMode(int);
     method @Deprecated public void setPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener?);
@@ -61,5 +63,9 @@
     method public void onPanelSlide(android.view.View, float);
   }
 
+  public static interface SlidingPaneLayout.SlideableStateListener {
+    method public void onSlideableStateChanged(boolean);
+  }
+
 }
 
diff --git a/slidingpanelayout/slidingpanelayout/api/restricted_current.txt b/slidingpanelayout/slidingpanelayout/api/restricted_current.txt
index 9340904..eecf512 100644
--- a/slidingpanelayout/slidingpanelayout/api/restricted_current.txt
+++ b/slidingpanelayout/slidingpanelayout/api/restricted_current.txt
@@ -6,6 +6,7 @@
     ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?);
     ctor public SlidingPaneLayout(android.content.Context, android.util.AttributeSet?, int);
     method public void addPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener);
+    method public void addSlideableStateListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.SlideableStateListener);
     method protected boolean canScroll(android.view.View, boolean, int, int, int);
     method @Deprecated public boolean canSlide();
     method public void close();
@@ -19,6 +20,7 @@
     method public void open();
     method public boolean openPane();
     method public void removePanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener);
+    method public void removeSlideableStateListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.SlideableStateListener);
     method @Deprecated public void setCoveredFadeColor(@ColorInt int);
     method public final void setLockMode(int);
     method @Deprecated public void setPanelSlideListener(androidx.slidingpanelayout.widget.SlidingPaneLayout.PanelSlideListener?);
@@ -61,5 +63,9 @@
     method public void onPanelSlide(android.view.View, float);
   }
 
+  public static interface SlidingPaneLayout.SlideableStateListener {
+    method public void onSlideableStateChanged(boolean);
+  }
+
 }
 
diff --git a/slidingpanelayout/slidingpanelayout/build.gradle b/slidingpanelayout/slidingpanelayout/build.gradle
index 6a29dca..58cbeb8 100644
--- a/slidingpanelayout/slidingpanelayout/build.gradle
+++ b/slidingpanelayout/slidingpanelayout/build.gradle
@@ -23,7 +23,7 @@
 }
 
 androidx {
-    name = "Android Support Library Sliding Pane Layout"
+    name = "Sliding Pane Layout"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "SlidingPaneLayout offers a responsive, two pane layout that automatically switches between overlapping panes on smaller devices to a side by side view on larger devices."
diff --git a/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/LockModeTest.kt b/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/LockModeTest.kt
index faf82fa..fe2cdae 100644
--- a/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/LockModeTest.kt
+++ b/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/LockModeTest.kt
@@ -17,9 +17,9 @@
 package androidx.slidingpanelayout.widget
 
 import androidx.slidingpanelayout.test.R
+import androidx.slidingpanelayout.widget.SlidingPaneLayout.LOCK_MODE_LOCKED
 import androidx.slidingpanelayout.widget.SlidingPaneLayout.LOCK_MODE_LOCKED_CLOSED
 import androidx.slidingpanelayout.widget.SlidingPaneLayout.LOCK_MODE_LOCKED_OPEN
-import androidx.slidingpanelayout.widget.SlidingPaneLayout.LOCK_MODE_LOCKED
 import androidx.slidingpanelayout.widget.SlidingPaneLayout.LOCK_MODE_UNLOCKED
 import androidx.slidingpanelayout.widget.helpers.TestActivity
 import androidx.slidingpanelayout.widget.helpers.addWaitForCloseLatch
@@ -39,10 +39,10 @@
 import androidx.test.filters.SdkSuppress
 import androidx.testutils.withActivity
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 /**
  * Tests [SlidingPaneLayout.setLockMode] and [SlidingPaneLayout.getLockMode]
diff --git a/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/PanelSlideListenerTest.kt b/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/PanelSlideListenerTest.kt
index 027b5cd..a98a7d9 100644
--- a/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/PanelSlideListenerTest.kt
+++ b/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/PanelSlideListenerTest.kt
@@ -30,11 +30,11 @@
 import androidx.testutils.withActivity
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 /**
  * Tests [SlidingPaneLayout.PanelSlideListener]
diff --git a/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/SlideableStateListenerTest.kt b/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/SlideableStateListenerTest.kt
new file mode 100644
index 0000000..490a911
--- /dev/null
+++ b/slidingpanelayout/slidingpanelayout/src/androidTest/java/androidx/slidingpanelayout/widget/SlideableStateListenerTest.kt
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.slidingpanelayout.widget
+
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import androidx.slidingpanelayout.test.R
+import androidx.slidingpanelayout.widget.SlidingPaneLayout.SlideableStateListener
+import androidx.slidingpanelayout.widget.helpers.TestActivity
+import androidx.test.core.app.ActivityScenario
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.LargeTest
+import com.google.common.truth.Truth.assertWithMessage
+import org.junit.After
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+@LargeTest
+class SlideableStateListenerTest {
+
+    @After
+    public fun tearDown() {
+        TestActivity.onActivityCreated = {}
+    }
+
+    @Test
+    fun testAddSlideableStateListener() {
+        var isSlideableCalled = false
+        TestActivity.onActivityCreated = { activity ->
+            val container = FrameLayout(activity)
+            val layout = activity.layoutInflater.inflate(
+                R.layout.activity_test_layout, null, false
+            )
+            container.addView(
+                layout,
+                ViewGroup.LayoutParams(
+                    ViewGroup.LayoutParams.MATCH_PARENT,
+                    ViewGroup.LayoutParams.WRAP_CONTENT
+                )
+            )
+            val slidingPaneLayout = container
+                .findViewById<SlidingPaneLayout>(R.id.sliding_pane_layout)
+            slidingPaneLayout.addSlideableStateListener { _ ->
+                isSlideableCalled = true
+            }
+
+            activity.setContentView(container)
+        }
+
+        with(ActivityScenario.launch(TestActivity::class.java)) {
+            assertWithMessage(
+                "isSlideable should be called when measuring the layout has completed")
+                .that(isSlideableCalled)
+                .isTrue()
+        }
+    }
+
+    @Test
+    fun testRemoveSlideableStateListener() {
+        var isSlideableCalled: Boolean? = null
+
+        TestActivity.onActivityCreated = { activity ->
+            val container = FrameLayout(activity)
+            val layout = activity.layoutInflater.inflate(
+                R.layout.activity_test_layout, null, false
+            )
+            container.addView(
+                layout,
+                ViewGroup.LayoutParams(
+                    ViewGroup.LayoutParams.MATCH_PARENT,
+                    ViewGroup.LayoutParams.WRAP_CONTENT
+                )
+            )
+            val slideableStateListener = SlideableStateListener {
+                isSlideableCalled = true
+            }
+
+            val slidingPaneLayout = container
+                .findViewById<SlidingPaneLayout>(R.id.sliding_pane_layout)
+            slidingPaneLayout.addSlideableStateListener(slideableStateListener)
+
+            activity.setContentView(container)
+            slidingPaneLayout.removeSlideableStateListener(slideableStateListener)
+        }
+
+        with(ActivityScenario.launch(TestActivity::class.java)) {
+            assertWithMessage("isSlideable should not be called if the listener has been removed")
+                .that(isSlideableCalled)
+                .isNull()
+        }
+    }
+}
\ No newline at end of file
diff --git a/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/FoldingFeatureObserver.kt b/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/FoldingFeatureObserver.kt
index b3119aa..d4ae2e7 100644
--- a/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/FoldingFeatureObserver.kt
+++ b/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/FoldingFeatureObserver.kt
@@ -20,6 +20,7 @@
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.WindowInfoTracker
 import androidx.window.layout.WindowLayoutInfo
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.asCoroutineDispatcher
@@ -27,7 +28,6 @@
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.mapNotNull
 import kotlinx.coroutines.launch
-import java.util.concurrent.Executor
 
 /**
  * A device folding feature observer is used to notify listener when there is a folding feature
diff --git a/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/SlidingPaneLayout.java b/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/SlidingPaneLayout.java
index 27478c9..4c826d2 100644
--- a/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/SlidingPaneLayout.java
+++ b/slidingpanelayout/slidingpanelayout/src/main/java/androidx/slidingpanelayout/widget/SlidingPaneLayout.java
@@ -178,6 +178,9 @@
     private float mInitialMotionX;
     private float mInitialMotionY;
 
+    private final List<SlideableStateListener> mSlideableStateListeners =
+            new CopyOnWriteArrayList<>();
+
     private final List<PanelSlideListener> mPanelSlideListeners = new CopyOnWriteArrayList<>();
     private @Nullable PanelSlideListener mPanelSlideListener;
 
@@ -249,6 +252,20 @@
     }
 
     /**
+     * Listener to whether the SlidingPaneLayout is slideable or is a fixed width.
+     */
+    public interface SlideableStateListener {
+
+        /**
+         * Called when onMeasure has measured out the total width of the added layouts
+         * within SlidingPaneLayout
+         * @param isSlideable  Returns true if the current SlidingPaneLayout has the ability to
+         *                     slide, returns false if the SlidingPaneLayout is a fixed width.
+         */
+        void onSlideableStateChanged(boolean isSlideable);
+    }
+
+    /**
      * Listener for monitoring events about sliding panes.
      */
     public interface PanelSlideListener {
@@ -436,6 +453,25 @@
     }
 
     /**
+     * Adds the specified listener to the list of listeners that will be notified of sliding
+     * state events.
+     * @param listener  Listener to notify when sliding state events occur.
+     * @see #removeSlideableStateListener(SlideableStateListener)
+     */
+    public void addSlideableStateListener(@NonNull SlideableStateListener listener) {
+        mSlideableStateListeners.add(listener);
+    }
+
+    /**
+     * Removes the specified listener from the list of listeners that will be notified of sliding
+     * state events.
+     * @param listener Listener to notify when sliding state events occur
+     */
+    public void removeSlideableStateListener(@NonNull SlideableStateListener listener) {
+        mSlideableStateListeners.remove(listener);
+    }
+
+    /**
      * Adds the specified listener to the list of listeners that will be notified of
      * panel slide events.
      *
@@ -777,7 +813,12 @@
         final int measuredHeight = layoutHeight + getPaddingTop() + getPaddingBottom();
 
         setMeasuredDimension(measuredWidth, measuredHeight);
-        mCanSlide = canSlide;
+        if (canSlide != mCanSlide) {
+            mCanSlide = canSlide;
+            for (SlideableStateListener listener : mSlideableStateListeners) {
+                listener.onSlideableStateChanged(mCanSlide);
+            }
+        }
 
         if (mDragHelper.getViewDragState() != ViewDragHelper.STATE_IDLE && !canSlide) {
             // Cancel scrolling in progress, it's no longer relevant.
@@ -1056,6 +1097,15 @@
     }
 
     /**
+     * @return true if content in this layout can be slid open and closed
+     * @deprecated Renamed to {@link #isSlideable()} - this method is going away soon!
+     */
+    @Deprecated
+    public boolean canSlide() {
+        return mCanSlide;
+    }
+
+    /**
      * @deprecated Renamed to {@link #closePane()} - this method is going away soon!
      */
     @Deprecated
@@ -1094,15 +1144,6 @@
     }
 
     /**
-     * @return true if content in this layout can be slid open and closed
-     * @deprecated Renamed to {@link #isSlideable()} - this method is going away soon!
-     */
-    @Deprecated
-    public boolean canSlide() {
-        return mCanSlide;
-    }
-
-    /**
      * Check if both the list and detail view panes in this layout can fully fit side-by-side. If
      * not, the content pane has the capability to slide back and forth. Note that the lock mode
      * is not taken into account in this method. This method is typically used to determine
diff --git a/sqlite/integration-tests/inspection-room-testapp/src/androidTest/java/androidx/sqlite/inspection/RoomInvalidationHookTest.kt b/sqlite/integration-tests/inspection-room-testapp/src/androidTest/java/androidx/sqlite/inspection/RoomInvalidationHookTest.kt
index 57ef857..d69eee1 100644
--- a/sqlite/integration-tests/inspection-room-testapp/src/androidTest/java/androidx/sqlite/inspection/RoomInvalidationHookTest.kt
+++ b/sqlite/integration-tests/inspection-room-testapp/src/androidTest/java/androidx/sqlite/inspection/RoomInvalidationHookTest.kt
@@ -30,6 +30,8 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth.assertWithMessage
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.runBlocking
@@ -37,8 +39,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.Executors
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 class RoomInvalidationHookTest {
diff --git a/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/Database.kt b/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/Database.kt
index bebc2ab..ca2c993 100644
--- a/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/Database.kt
+++ b/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/Database.kt
@@ -16,9 +16,9 @@
 
 package androidx.sqlite.inspection.sqldeligttestapp
 
-import androidx.sqlite.inspection.test.TestEntityQueries
 import androidx.sqlite.inspection.sqldeligttestapp.app.newInstance
 import androidx.sqlite.inspection.sqldeligttestapp.app.schema
+import androidx.sqlite.inspection.test.TestEntityQueries
 import com.squareup.sqldelight.Transacter
 import com.squareup.sqldelight.db.SqlDriver
 
diff --git a/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/app/DatabaseImpl.kt b/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/app/DatabaseImpl.kt
index cb63403..675a5a1 100644
--- a/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/app/DatabaseImpl.kt
+++ b/sqlite/integration-tests/inspection-sqldelight-testapp/src/main/generated/androidx/sqlite/inspection/sqldeligttestapp/app/DatabaseImpl.kt
@@ -16,9 +16,9 @@
 
 package androidx.sqlite.inspection.sqldeligttestapp.app
 
+import androidx.sqlite.inspection.sqldeligttestapp.Database
 import androidx.sqlite.inspection.test.TestEntity
 import androidx.sqlite.inspection.test.TestEntityQueries
-import androidx.sqlite.inspection.sqldeligttestapp.Database
 import com.squareup.sqldelight.Query
 import com.squareup.sqldelight.TransacterImpl
 import com.squareup.sqldelight.db.SqlDriver
diff --git a/sqlite/sqlite-framework/build.gradle b/sqlite/sqlite-framework/build.gradle
index 0169f43..65eb1e4 100644
--- a/sqlite/sqlite-framework/build.gradle
+++ b/sqlite/sqlite-framework/build.gradle
@@ -37,7 +37,7 @@
 }
 
 androidx {
-    name = "Android Support SQLite - Framework Implementation"
+    name = "SQLite Framework Integration"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "The implementation of Support SQLite library using the framework code."
diff --git a/sqlite/sqlite-inspection/build.gradle b/sqlite/sqlite-inspection/build.gradle
index da58266..3210e2c 100644
--- a/sqlite/sqlite-inspection/build.gradle
+++ b/sqlite/sqlite-inspection/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "Android SQLite Inspector"
+    name = "SQLite Inspector"
     type = LibraryType.IDE_PLUGIN
     // Decouple SQLITE_INSPECTOR because it depends on
     // the inspection protocol, which is alpha
diff --git a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/CancellationQueryTest.kt b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/CancellationQueryTest.kt
index 997730a..642fa58 100644
--- a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/CancellationQueryTest.kt
+++ b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/CancellationQueryTest.kt
@@ -22,6 +22,8 @@
 import androidx.test.filters.MediumTest
 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.Executor
+import java.util.concurrent.Executors.newCachedThreadPool
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.cancelAndJoin
 import kotlinx.coroutines.channels.Channel
@@ -32,8 +34,6 @@
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
-import java.util.concurrent.Executor
-import java.util.concurrent.Executors.newCachedThreadPool
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseExtensions.kt b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseExtensions.kt
index d72b712..d8ace8b 100644
--- a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseExtensions.kt
+++ b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseExtensions.kt
@@ -20,8 +20,8 @@
 import android.database.sqlite.SQLiteOpenHelper
 import androidx.test.core.app.ApplicationProvider
 import com.google.common.truth.Truth.assertThat
-import org.junit.rules.TemporaryFolder
 import java.io.File
+import org.junit.rules.TemporaryFolder
 
 fun SQLiteDatabase.addTable(table: Table) = execSQL(table.toCreateString())
 
diff --git a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseLockingTest.kt b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseLockingTest.kt
index 67e4214..492b7b2 100644
--- a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseLockingTest.kt
+++ b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/DatabaseLockingTest.kt
@@ -32,6 +32,13 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.Callable
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.Executors.newSingleThreadExecutor
+import java.util.concurrent.TimeUnit.SECONDS
+import java.util.concurrent.atomic.AtomicBoolean
+import java.util.concurrent.atomic.AtomicInteger
+import java.util.regex.Pattern.CASE_INSENSITIVE
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.ensureActive
 import kotlinx.coroutines.launch
@@ -40,13 +47,6 @@
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
-import java.util.concurrent.Callable
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.Executors.newSingleThreadExecutor
-import java.util.concurrent.TimeUnit.SECONDS
-import java.util.concurrent.atomic.AtomicBoolean
-import java.util.concurrent.atomic.AtomicInteger
-import java.util.regex.Pattern.CASE_INSENSITIVE
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/SqliteInspectorTestEnvironment.kt b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/SqliteInspectorTestEnvironment.kt
index 706dced..92a93bf 100644
--- a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/SqliteInspectorTestEnvironment.kt
+++ b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/SqliteInspectorTestEnvironment.kt
@@ -28,12 +28,12 @@
 import androidx.sqlite.inspection.SqliteInspectorProtocol.Event
 import androidx.sqlite.inspection.SqliteInspectorProtocol.Response
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.Executor
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.cancelAndJoin
 import kotlinx.coroutines.runBlocking
 import org.junit.rules.ExternalResource
-import java.util.concurrent.Executor
 
 private const val SQLITE_INSPECTOR_ID = "androidx.sqlite.inspection"
 
diff --git a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/TrackDatabasesTest.kt b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/TrackDatabasesTest.kt
index 4efe8d8..cf8da8b 100644
--- a/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/TrackDatabasesTest.kt
+++ b/sqlite/sqlite-inspection/src/androidTest/java/androidx/sqlite/inspection/test/TrackDatabasesTest.kt
@@ -31,12 +31,12 @@
 import androidx.test.filters.LargeTest
 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import com.google.common.truth.Truth.assertThat
+import java.io.File
 import kotlinx.coroutines.runBlocking
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
 import org.junit.runner.RunWith
-import java.io.File
 
 private const val OPEN_DATABASE_COMMAND_SIGNATURE_API11: String = "openDatabase" +
     "(" +
diff --git a/sqlite/sqlite-ktx/build.gradle b/sqlite/sqlite-ktx/build.gradle
index a793599..5698d49 100644
--- a/sqlite/sqlite-ktx/build.gradle
+++ b/sqlite/sqlite-ktx/build.gradle
@@ -31,7 +31,7 @@
 }
 
 androidx {
-    name = "Android DB KTX"
+    name = "SQLite Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Kotlin extensions for DB"
diff --git a/sqlite/sqlite/build.gradle b/sqlite/sqlite/build.gradle
index 580912e..5d64abf 100644
--- a/sqlite/sqlite/build.gradle
+++ b/sqlite/sqlite/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "Android DB"
+    name = "SQLite"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android DB"
diff --git a/stableaidl/stableaidl-gradle-plugin/src/main/java/androidx/stableaidl/tasks/UpdateStableAidlApiTask.kt b/stableaidl/stableaidl-gradle-plugin/src/main/java/androidx/stableaidl/tasks/UpdateStableAidlApiTask.kt
index c12b84b..8a1bf84 100644
--- a/stableaidl/stableaidl-gradle-plugin/src/main/java/androidx/stableaidl/tasks/UpdateStableAidlApiTask.kt
+++ b/stableaidl/stableaidl-gradle-plugin/src/main/java/androidx/stableaidl/tasks/UpdateStableAidlApiTask.kt
@@ -16,22 +16,22 @@
 
 package androidx.stableaidl.tasks
 
+import java.io.File
+import java.security.MessageDigest
+import org.apache.commons.io.FileUtils
 import org.gradle.api.DefaultTask
+import org.gradle.api.GradleException
+import org.gradle.api.file.DirectoryProperty
+import org.gradle.api.logging.Logger
 import org.gradle.api.provider.ListProperty
 import org.gradle.api.provider.Property
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputDirectory
+import org.gradle.api.tasks.OutputDirectories
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
-import java.io.File
-import java.security.MessageDigest
-import org.gradle.api.GradleException
-import org.gradle.api.logging.Logger
-import org.gradle.api.tasks.InputDirectory
-import org.gradle.api.tasks.OutputDirectories
-import org.apache.commons.io.FileUtils
-import org.gradle.api.file.DirectoryProperty
 
 /**
  * Task for updating the public Android resource surface, e.g. `public.xml`.
diff --git a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleExecOperations.kt b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleExecOperations.kt
index a65ad83..80859ab 100644
--- a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleExecOperations.kt
+++ b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleExecOperations.kt
@@ -16,6 +16,9 @@
 
 package com.android.build.gradle.internal.fixtures
 
+import java.io.File
+import java.io.InputStream
+import java.io.OutputStream
 import org.gradle.api.Action
 import org.gradle.process.BaseExecSpec
 import org.gradle.process.CommandLineArgumentProvider
@@ -24,9 +27,6 @@
 import org.gradle.process.ExecSpec
 import org.gradle.process.JavaExecSpec
 import org.gradle.process.ProcessForkOptions
-import java.io.File
-import java.io.InputStream
-import java.io.OutputStream
 
 /** This implementation only captures arguments used to launch process, it does not run it. */
 class FakeGradleExecOperations : ExecOperations {
diff --git a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleProperty.kt b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleProperty.kt
index f64e355..bd198da 100644
--- a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleProperty.kt
+++ b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleProperty.kt
@@ -16,10 +16,10 @@
 
 package com.android.build.gradle.internal.fixtures
 
+import java.util.function.BiFunction
 import org.gradle.api.Transformer
 import org.gradle.api.provider.Property
 import org.gradle.api.provider.Provider
-import java.util.function.BiFunction
 
 class FakeGradleProperty<T>(private var value: T? = null) : Property<T> {
 
diff --git a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleWorkExecutor.kt b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleWorkExecutor.kt
index 678696b..7a17b63 100644
--- a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleWorkExecutor.kt
+++ b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeGradleWorkExecutor.kt
@@ -16,6 +16,10 @@
 
 package com.android.build.gradle.internal.fixtures
 
+import java.io.File
+import java.lang.reflect.Method
+import java.lang.reflect.ParameterizedType
+import java.net.URLClassLoader
 import org.gradle.api.Action
 import org.gradle.api.model.ObjectFactory
 import org.gradle.workers.ClassLoaderWorkerSpec
@@ -32,10 +36,6 @@
 import org.objectweb.asm.FieldVisitor
 import org.objectweb.asm.MethodVisitor
 import org.objectweb.asm.Opcodes
-import java.io.File
-import java.lang.reflect.Method
-import java.lang.reflect.ParameterizedType
-import java.net.URLClassLoader
 
 /**
  * Fake implementation of [WorkerExecutor]. [ObjectFactory] is used to instantiate parameters,
diff --git a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeNoOpAnalyticsService.kt b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeNoOpAnalyticsService.kt
index 9de1d23..4bd73b8 100644
--- a/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeNoOpAnalyticsService.kt
+++ b/stableaidl/stableaidl-gradle-plugin/src/test/java/com/android/build/gradle/internal/fixtures/FakeNoOpAnalyticsService.kt
@@ -29,13 +29,13 @@
 import com.google.wireless.android.sdk.stats.GradleBuildProject
 import com.google.wireless.android.sdk.stats.GradleBuildVariant
 import com.google.wireless.android.sdk.stats.GradleTransformExecution
+import java.io.File
+import java.util.Base64
+import java.util.concurrent.ConcurrentLinkedQueue
 import org.gradle.api.provider.MapProperty
 import org.gradle.api.provider.Property
 import org.gradle.api.provider.SetProperty
 import org.gradle.tooling.events.FinishEvent
-import java.io.File
-import java.util.Base64
-import java.util.concurrent.ConcurrentLinkedQueue
 
 /**
  * A no-operation implementation of [AnalyticsService] for unit tests.
diff --git a/startup/startup-runtime-lint/build.gradle b/startup/startup-runtime-lint/build.gradle
index 0a10bc6..2ca037c 100644
--- a/startup/startup-runtime-lint/build.gradle
+++ b/startup/startup-runtime-lint/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android App Startup Runtime Lint Checks"
+    name = "Startup Runtime Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2020"
     description = "Android App Startup Runtime"
diff --git a/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/EnsureInitializerMetadataDetector.kt b/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/EnsureInitializerMetadataDetector.kt
index 4da10fc..824b5fe 100644
--- a/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/EnsureInitializerMetadataDetector.kt
+++ b/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/EnsureInitializerMetadataDetector.kt
@@ -34,11 +34,11 @@
 import com.android.tools.lint.detector.api.XmlContext
 import com.android.tools.lint.detector.api.XmlScanner
 import com.intellij.psi.impl.source.PsiClassReferenceType
+import java.util.EnumSet
 import org.jetbrains.uast.UClass
 import org.jetbrains.uast.UClassLiteralExpression
 import org.jetbrains.uast.visitor.AbstractUastVisitor
 import org.w3c.dom.Element
-import java.util.EnumSet
 
 /**
  * A [Detector] which ensures that every `ComponentInitializer` is accompanied by a corresponding
diff --git a/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/InitializerConstructorDetector.kt b/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/InitializerConstructorDetector.kt
index c99826d..87b8615 100644
--- a/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/InitializerConstructorDetector.kt
+++ b/startup/startup-runtime-lint/src/main/java/androidx/startup/lint/InitializerConstructorDetector.kt
@@ -27,8 +27,8 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.lang.java.JavaLanguage
-import org.jetbrains.uast.UClass
 import java.util.EnumSet
+import org.jetbrains.uast.UClass
 
 /**
  * A [Detector] which ensures that every `ComponentInitializer` has a no argument constructor.
diff --git a/startup/startup-runtime-lint/src/test/java/androidx/startup/lint/EnsureInitializerMetadataTest.kt b/startup/startup-runtime-lint/src/test/java/androidx/startup/lint/EnsureInitializerMetadataTest.kt
index 23b8e36..8e5f981 100644
--- a/startup/startup-runtime-lint/src/test/java/androidx/startup/lint/EnsureInitializerMetadataTest.kt
+++ b/startup/startup-runtime-lint/src/test/java/androidx/startup/lint/EnsureInitializerMetadataTest.kt
@@ -18,8 +18,8 @@
 
 package androidx.startup.lint
 
-import androidx.startup.lint.Stubs.TEST_INITIALIZER
 import androidx.startup.lint.Stubs.INITIALIZER
+import androidx.startup.lint.Stubs.TEST_INITIALIZER
 import androidx.startup.lint.Stubs.TEST_INITIALIZER_2
 import androidx.startup.lint.Stubs.TEST_INITIALIZER_WITH_DEPENDENCIES
 import com.android.tools.lint.checks.infrastructure.TestFiles.manifest
diff --git a/startup/startup-runtime/build.gradle b/startup/startup-runtime/build.gradle
index 9cfaac9..d4f9766 100644
--- a/startup/startup-runtime/build.gradle
+++ b/startup/startup-runtime/build.gradle
@@ -49,7 +49,7 @@
 }
 
 androidx {
-    name = "Android App Startup Runtime"
+    name = "Startup Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android App Startup Runtime"
diff --git a/startup/startup-runtime/src/androidTest/java/androidx/startup/AppInitializerTest.kt b/startup/startup-runtime/src/androidTest/java/androidx/startup/AppInitializerTest.kt
index 7b54f14..d9501e8 100644
--- a/startup/startup-runtime/src/androidTest/java/androidx/startup/AppInitializerTest.kt
+++ b/startup/startup-runtime/src/androidTest/java/androidx/startup/AppInitializerTest.kt
@@ -20,8 +20,8 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.containsString
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Assert.assertTrue
 import org.junit.Assert.fail
diff --git a/swiperefreshlayout/swiperefreshlayout/build.gradle b/swiperefreshlayout/swiperefreshlayout/build.gradle
index 8450677..a80a5e5 100644
--- a/swiperefreshlayout/swiperefreshlayout/build.gradle
+++ b/swiperefreshlayout/swiperefreshlayout/build.gradle
@@ -30,7 +30,7 @@
 }
 
 androidx {
-    name = "Android Support Library Custom View"
+    name = "Swipe Refresh Layout"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/test/ext/junit-gtest/build.gradle b/test/ext/junit-gtest/build.gradle
index be6c1fd..868ab98 100644
--- a/test/ext/junit-gtest/build.gradle
+++ b/test/ext/junit-gtest/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX JUnit GTest"
+    name = "JUnit GTest"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Run GTest tests on Android devices"
diff --git a/test/screenshot/screenshot/build.gradle b/test/screenshot/screenshot/build.gradle
index 7147d25..69303c3 100644
--- a/test/screenshot/screenshot/build.gradle
+++ b/test/screenshot/screenshot/build.gradle
@@ -46,7 +46,7 @@
 }
 
 androidx {
-    name = "AndroidX Library Screenshot Test"
+    name = "Screenshot Test"
     type = LibraryType.INTERNAL_TEST_LIBRARY
 }
 
diff --git a/test/screenshot/screenshot/src/androidTest/java/androidx/test/screenshot/ScreenshotTestRuleTest.kt b/test/screenshot/screenshot/src/androidTest/java/androidx/test/screenshot/ScreenshotTestRuleTest.kt
index 0275075..3dc6acb 100644
--- a/test/screenshot/screenshot/src/androidTest/java/androidx/test/screenshot/ScreenshotTestRuleTest.kt
+++ b/test/screenshot/screenshot/src/androidTest/java/androidx/test/screenshot/ScreenshotTestRuleTest.kt
@@ -25,12 +25,12 @@
 import androidx.test.screenshot.matchers.PixelPerfectMatcher
 import androidx.test.screenshot.utils.loadBitmap
 import com.google.common.truth.Truth.assertThat
+import java.lang.AssertionError
 import org.junit.After
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.lang.AssertionError
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
diff --git a/test/screenshot/screenshot/src/main/java/androidx/test/screenshot/ScreenshotTestRule.kt b/test/screenshot/screenshot/src/main/java/androidx/test/screenshot/ScreenshotTestRule.kt
index 132b215..7cbd8db 100644
--- a/test/screenshot/screenshot/src/main/java/androidx/test/screenshot/ScreenshotTestRule.kt
+++ b/test/screenshot/screenshot/src/main/java/androidx/test/screenshot/ScreenshotTestRule.kt
@@ -28,15 +28,15 @@
 import androidx.test.screenshot.matchers.PixelPerfectMatcher
 import androidx.test.screenshot.proto.ScreenshotResultProto
 import androidx.test.screenshot.proto.ScreenshotResultProto.ScreenshotResult.Status
+import java.io.File
+import java.io.FileNotFoundException
+import java.io.FileOutputStream
+import java.io.IOException
 import org.junit.Assume
 import org.junit.rules.TestRule
 import org.junit.rules.TestWatcher
 import org.junit.runner.Description
 import org.junit.runners.model.Statement
-import java.io.File
-import java.io.FileNotFoundException
-import java.io.FileOutputStream
-import java.io.IOException
 
 /**
  * Config for [ScreenshotTestRule].
diff --git a/test/uiautomator/uiautomator/build.gradle b/test/uiautomator/uiautomator/build.gradle
index ef6ca7c..b1dd210 100644
--- a/test/uiautomator/uiautomator/build.gradle
+++ b/test/uiautomator/uiautomator/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "Android UIAutomator"
+    name = "UIAutomator"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2012"
     description = "UI testing framework suitable for cross-app functional UI testing"
diff --git a/testutils/testutils-appcompat/src/main/java/androidx/testutils/RecreatedAppCompatActivity.kt b/testutils/testutils-appcompat/src/main/java/androidx/testutils/RecreatedAppCompatActivity.kt
index ea23c83..5d5694e 100644
--- a/testutils/testutils-appcompat/src/main/java/androidx/testutils/RecreatedAppCompatActivity.kt
+++ b/testutils/testutils-appcompat/src/main/java/androidx/testutils/RecreatedAppCompatActivity.kt
@@ -19,9 +19,9 @@
 import android.os.Bundle
 import androidx.annotation.LayoutRes
 import androidx.appcompat.app.AppCompatActivity
-import org.junit.Assert.assertTrue
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Assert.assertTrue
 
 /**
  * Extension of [AppCompatActivity] that keeps track of when it is recreated.
diff --git a/testutils/testutils-common/src/main/java/androidx/testutils/FilteringExecutor.kt b/testutils/testutils-common/src/main/java/androidx/testutils/FilteringExecutor.kt
index e981829..3d5618a1 100644
--- a/testutils/testutils-common/src/main/java/androidx/testutils/FilteringExecutor.kt
+++ b/testutils/testutils-common/src/main/java/androidx/testutils/FilteringExecutor.kt
@@ -15,17 +15,17 @@
  */
 package androidx.testutils
 
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.flow.mapLatest
-import kotlinx.coroutines.withTimeout
 import java.util.concurrent.Executor
 import java.util.concurrent.ExecutorService
 import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.locks.ReentrantLock
 import kotlin.concurrent.withLock
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.flow.mapLatest
+import kotlinx.coroutines.withTimeout
 
 /**
  * An executor that can block some known runnables. We use it to slow down database
diff --git a/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/OkioTestIO.kt b/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/OkioTestIO.kt
index 733d614..84705fc 100644
--- a/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/OkioTestIO.kt
+++ b/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/OkioTestIO.kt
@@ -22,8 +22,8 @@
 import kotlin.random.Random
 import kotlin.reflect.KClass
 import okio.FileSystem
-import okio.Path
 import okio.IOException
+import okio.Path
 import okio.Path.Companion.toPath
 
 open class OkioTestIO(dirName: String = "test-dir") : TestIO<OkioPath, IOException>(dirName) {
diff --git a/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/TestIO.kt b/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/TestIO.kt
index bddb036..021e629 100644
--- a/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/TestIO.kt
+++ b/testutils/testutils-datastore/src/commonMain/kotlin/androidx/datastore/TestIO.kt
@@ -17,9 +17,9 @@
 package androidx.datastore
 
 import androidx.datastore.core.DataStore
-import androidx.datastore.core.Storage
 import androidx.datastore.core.DataStoreFactory.create
 import androidx.datastore.core.InterProcessCoordinator
+import androidx.datastore.core.Storage
 import kotlin.reflect.KClass
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
diff --git a/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/Kruth.kt b/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/Kruth.kt
index f842714..89114369 100644
--- a/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/Kruth.kt
+++ b/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/Kruth.kt
@@ -42,3 +42,6 @@
 
 fun <T> assertThat(actual: Iterable<T>?): IterableSubject<T> =
     IterableSubject(actual)
+
+fun <K, V> assertThat(actual: Map<K, V>?): MapSubject<K, V> =
+    MapSubject(actual)
diff --git a/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/KruthExt.kt b/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/KruthExt.kt
index a55d4e0..e44dc61 100644
--- a/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/KruthExt.kt
+++ b/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/KruthExt.kt
@@ -16,8 +16,8 @@
 
 package androidx.kruth
 
-import kotlin.test.assertFailsWith
 import kotlin.reflect.KClass
+import kotlin.test.assertFailsWith
 
 // Commonized extensions on top of Truth. These are kept separate for book-keeping in case we end up
 // promoting Kruth.
diff --git a/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/MapSubject.kt b/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/MapSubject.kt
new file mode 100644
index 0000000..c24141c
--- /dev/null
+++ b/testutils/testutils-kmp/src/commonMain/kotlin/androidx/kruth/MapSubject.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.kruth
+
+import kotlin.test.fail
+
+class MapSubject<K, V>(actual: Map<K, V>?) : Subject<Map<K, V>>(actual) {
+
+    /** Fails if the map is not empty. */
+    fun isEmpty() {
+        requireNonNull(actual) { "Expected to be empty, but was null" }
+
+        if (actual.isNotEmpty()) {
+            fail("Expected to be empty, but was $actual")
+        }
+    }
+}
diff --git a/testutils/testutils-kmp/src/commonTest/kotlin/androidx/kruth/MapSubjectTest.kt b/testutils/testutils-kmp/src/commonTest/kotlin/androidx/kruth/MapSubjectTest.kt
new file mode 100644
index 0000000..586efc9
--- /dev/null
+++ b/testutils/testutils-kmp/src/commonTest/kotlin/androidx/kruth/MapSubjectTest.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.kruth
+
+import kotlin.test.Test
+import kotlin.test.assertFailsWith
+
+class MapSubjectTest {
+
+    @Test
+    fun isEmpty() {
+        assertThat(mapOf<Any, Any>()).isEmpty()
+    }
+
+    @Test
+    fun isEmptyWithFailure() {
+        assertFailsWith<AssertionError> {
+            assertThat(mapOf(1 to 5)).isEmpty()
+        }
+    }
+}
diff --git a/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/DirectDispatcher.kt b/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/DirectDispatcher.kt
index 5942228..150d68a 100644
--- a/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/DirectDispatcher.kt
+++ b/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/DirectDispatcher.kt
@@ -16,9 +16,9 @@
 
 package androidx.testutils
 
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Runnable
-import kotlin.coroutines.CoroutineContext
 
 object DirectDispatcher : CoroutineDispatcher() {
     override fun dispatch(context: CoroutineContext, block: Runnable) {
diff --git a/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/TestDispatcher.kt b/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/TestDispatcher.kt
index 9769c3a..5c84e3c 100644
--- a/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/TestDispatcher.kt
+++ b/testutils/testutils-ktx/src/commonMain/kotlin/androidx/testutils/TestDispatcher.kt
@@ -16,9 +16,9 @@
 
 package androidx.testutils
 
+import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Runnable
-import kotlin.coroutines.CoroutineContext
 
 /**
  * [CoroutineDispatcher] which keeps track of all its queued jobs.
diff --git a/testutils/testutils-macrobenchmark/src/main/java/androidx/testutils/MacrobenchUtils.kt b/testutils/testutils-macrobenchmark/src/main/java/androidx/testutils/MacrobenchUtils.kt
index 6c85c25..5af1c28 100644
--- a/testutils/testutils-macrobenchmark/src/main/java/androidx/testutils/MacrobenchUtils.kt
+++ b/testutils/testutils-macrobenchmark/src/main/java/androidx/testutils/MacrobenchUtils.kt
@@ -20,9 +20,10 @@
 import android.os.Build
 import androidx.benchmark.macro.BaselineProfileMode
 import androidx.benchmark.macro.CompilationMode
+import androidx.benchmark.macro.ExperimentalMetricApi
+import androidx.benchmark.macro.MemoryUsageMetric
 import androidx.benchmark.macro.Metric
 import androidx.benchmark.macro.StartupMode
-import androidx.benchmark.macro.StartupTimingLegacyMetric
 import androidx.benchmark.macro.StartupTimingMetric
 import androidx.benchmark.macro.isSupportedWithVmSettings
 import androidx.benchmark.macro.junit4.MacrobenchmarkRule
@@ -64,11 +65,9 @@
 /**
  * Temporary, while transitioning to new metrics
  */
-fun getStartupMetrics() = if (Build.VERSION.SDK_INT >= 29) {
-    listOf(StartupTimingMetric(), StartupTimingLegacyMetric())
-} else {
-    listOf(StartupTimingMetric())
-}
+@OptIn(ExperimentalMetricApi::class)
+fun getStartupMetrics() =
+    listOf(StartupTimingMetric(), MemoryUsageMetric(MemoryUsageMetric.Mode.Last))
 
 fun MacrobenchmarkRule.measureStartup(
     compilationMode: CompilationMode,
diff --git a/testutils/testutils-runtime/src/androidTest/java/androidx/testutils/LocaleTestUtilsTest.kt b/testutils/testutils-runtime/src/androidTest/java/androidx/testutils/LocaleTestUtilsTest.kt
index ab49a11..5dbff64 100644
--- a/testutils/testutils-runtime/src/androidTest/java/androidx/testutils/LocaleTestUtilsTest.kt
+++ b/testutils/testutils-runtime/src/androidTest/java/androidx/testutils/LocaleTestUtilsTest.kt
@@ -25,13 +25,13 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import java.util.Locale
 import org.hamcrest.CoreMatchers
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.Locale
 
 // Fetch default locale as early as possible (e.g., before initializing LocaleTestUtilsTest class)
 private val DEFAULT_LANGUAGE = Locale.getDefault().toString()
diff --git a/testutils/testutils-runtime/src/main/java/androidx/testutils/AnimationActivityTestRule.kt b/testutils/testutils-runtime/src/main/java/androidx/testutils/AnimationActivityTestRule.kt
index ee33b44..02a1cd5 100644
--- a/testutils/testutils-runtime/src/main/java/androidx/testutils/AnimationActivityTestRule.kt
+++ b/testutils/testutils-runtime/src/main/java/androidx/testutils/AnimationActivityTestRule.kt
@@ -16,16 +16,15 @@
 
 package androidx.testutils
 
-import android.app.Activity
 import android.animation.ValueAnimator
 import android.annotation.SuppressLint
+import android.app.Activity
 import android.os.Build
 import androidx.test.runner.intercepting.SingleActivityFactory
-
-import org.junit.runner.Description
-import org.junit.runners.model.Statement
 import java.lang.RuntimeException
 import java.lang.reflect.Method
+import org.junit.runner.Description
+import org.junit.runners.model.Statement
 
 /**
  * To solve the issue that androidx changes system settings to make animation duration to 0:
diff --git a/testutils/testutils-runtime/src/main/java/androidx/testutils/RecreatedActivity.kt b/testutils/testutils-runtime/src/main/java/androidx/testutils/RecreatedActivity.kt
index 8ddecfe..2296e75 100644
--- a/testutils/testutils-runtime/src/main/java/androidx/testutils/RecreatedActivity.kt
+++ b/testutils/testutils-runtime/src/main/java/androidx/testutils/RecreatedActivity.kt
@@ -19,9 +19,9 @@
 import android.os.Bundle
 import androidx.annotation.LayoutRes
 import androidx.fragment.app.FragmentActivity
-import org.junit.Assert
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
+import org.junit.Assert
 
 /**
  * Extension of [FragmentActivity] that keeps track of when it is recreated.
diff --git a/testutils/testutils-truth/src/test/java/androidx/testutils/AssertionsTest.kt b/testutils/testutils-truth/src/test/java/androidx/testutils/AssertionsTest.kt
index b65e977..f517604 100644
--- a/testutils/testutils-truth/src/test/java/androidx/testutils/AssertionsTest.kt
+++ b/testutils/testutils-truth/src/test/java/androidx/testutils/AssertionsTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.testutils
 
-import org.junit.Test
 import java.io.IOException
+import org.junit.Test
 
 class AssertionsTest {
     @Test
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/BoringLayoutFactoryTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/BoringLayoutFactoryTest.kt
index fba9e8f..cfae5f2 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/BoringLayoutFactoryTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/BoringLayoutFactoryTest.kt
@@ -27,11 +27,11 @@
 import android.text.style.LeadingMarginSpan
 import androidx.compose.ui.text.android.BoringLayoutFactory.create
 import androidx.compose.ui.text.android.BoringLayoutFactory.measure
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/FontPaddingWithCustomFallbackTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/FontPaddingWithCustomFallbackTest.kt
index c5c6cee..edef78c 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/FontPaddingWithCustomFallbackTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/FontPaddingWithCustomFallbackTest.kt
@@ -12,12 +12,12 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.spy
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutCompatTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutCompatTest.kt
index 9355f82..21af3cf 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutCompatTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutCompatTest.kt
@@ -20,11 +20,11 @@
 import android.text.Layout
 import android.text.StaticLayout
 import android.text.TextPaint
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @OptIn(InternalPlatformTextApi::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalMultiLineTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalMultiLineTest.kt
index 22f1976..212c5e4 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalMultiLineTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalMultiLineTest.kt
@@ -18,13 +18,13 @@
 
 import android.text.TextPaint
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @OptIn(InternalPlatformTextApi::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalTest.kt
index 023c89a..4108cbf 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutGetHorizontalTest.kt
@@ -20,13 +20,13 @@
 import android.text.TextDirectionHeuristics
 import android.text.TextPaint
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 /**
  * In this test cases, use following notations:
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutHelperParagraphTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutHelperParagraphTest.kt
index d8d1305..4c53a41 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutHelperParagraphTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutHelperParagraphTest.kt
@@ -20,11 +20,11 @@
 import android.text.Layout
 import android.text.StaticLayout
 import android.text.TextPaint
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @SmallTest
 @OptIn(InternalPlatformTextApi::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutIntrinsicsTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutIntrinsicsTest.kt
index 733de18..3e47f8f 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutIntrinsicsTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/LayoutIntrinsicsTest.kt
@@ -22,13 +22,13 @@
 import android.text.TextPaint
 import android.text.style.BulletSpan
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/SegmentBreakerTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/SegmentBreakerTest.kt
index e8eb3b8..ae9f92f 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/SegmentBreakerTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/SegmentBreakerTest.kt
@@ -22,13 +22,13 @@
 import androidx.compose.ui.text.android.animation.SegmentBreaker
 import androidx.compose.ui.text.android.animation.SegmentType
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 /**
  * In this test cases, use following notations:
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/StaticLayoutFactoryTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/StaticLayoutFactoryTest.kt
index e67a9d2..6324d42 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/StaticLayoutFactoryTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/StaticLayoutFactoryTest.kt
@@ -22,16 +22,16 @@
 import android.text.TextPaint
 import android.text.TextUtils
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.floor
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import kotlin.math.floor
 
 @RunWith(AndroidJUnit4::class)
 @OptIn(InternalPlatformTextApi::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextAndroidCanvasTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextAndroidCanvasTest.kt
index c12d1a3..fb80db9 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextAndroidCanvasTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextAndroidCanvasTest.kt
@@ -19,10 +19,10 @@
 import android.graphics.Canvas
 import android.graphics.Rect
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
 import org.mockito.kotlin.any
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.whenever
-import org.junit.Test
 
 class TextAndroidCanvasTest {
 
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutFillBoundingBoxesTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutFillBoundingBoxesTest.kt
index 5bacbb2..0af5ddc 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutFillBoundingBoxesTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutFillBoundingBoxesTest.kt
@@ -22,15 +22,15 @@
 import android.text.TextPaint
 import android.text.style.AbsoluteSizeSpan
 import androidx.core.content.res.ResourcesCompat
-import androidx.test.filters.SmallTest
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SdkSuppress
+import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
+import com.google.common.truth.Truth.assertThat
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.google.common.truth.Truth.assertThat
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutIsLineEllipsizedTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutIsLineEllipsizedTest.kt
index 42f6f2f..26f1373 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutIsLineEllipsizedTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutIsLineEllipsizedTest.kt
@@ -19,13 +19,13 @@
 import android.text.TextPaint
 import android.text.TextUtils.TruncateAt
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutSpanTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutSpanTest.kt
index 8a8387f..9945d9a 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutSpanTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutSpanTest.kt
@@ -29,12 +29,12 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.any
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito.doAnswer
 import org.mockito.Mockito.spy
+import org.mockito.kotlin.any
 import org.mockito.stubbing.Answer
 
 @OptIn(InternalPlatformTextApi::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutTest.kt
index 4de574f..945d772 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/TextLayoutTest.kt
@@ -26,6 +26,7 @@
 import androidx.compose.ui.text.android.style.BaselineShiftSpan
 import androidx.compose.ui.text.android.style.LineHeightStyleSpan
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
@@ -33,7 +34,6 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/animation/SegmentBreakerBreakSegmentTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/animation/SegmentBreakerBreakSegmentTest.kt
index 424b8d0..9c9b2ad 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/animation/SegmentBreakerBreakSegmentTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/animation/SegmentBreakerBreakSegmentTest.kt
@@ -23,13 +23,13 @@
 import androidx.compose.ui.text.android.LayoutHelper
 import androidx.compose.ui.text.android.StaticLayoutFactory
 import androidx.core.content.res.ResourcesCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.testutils.fonts.R
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 /**
  * In this test cases, use following notations:
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordBoundaryTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordBoundaryTest.kt
index 21dac62..a7794c2 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordBoundaryTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordBoundaryTest.kt
@@ -16,13 +16,13 @@
 package androidx.compose.ui.text.android.selection
 
 import androidx.compose.ui.text.android.InternalPlatformTextApi
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 import java.text.BreakIterator
 import java.util.Locale
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @OptIn(InternalPlatformTextApi::class)
 @SmallTest
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordIteratorTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordIteratorTest.kt
index d75f35e..c18022b 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordIteratorTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/selection/WordIteratorTest.kt
@@ -16,13 +16,13 @@
 
 package androidx.compose.ui.text.android.selection
 
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 import java.text.BreakIterator
 import java.util.Locale
+import org.junit.Test
+import org.junit.runner.RunWith
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/BaselineShiftSpanTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/BaselineShiftSpanTest.kt
index 0affcc1..87e6cbc 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/BaselineShiftSpanTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/BaselineShiftSpanTest.kt
@@ -18,11 +18,11 @@
 
 import android.text.TextPaint
 import androidx.compose.ui.text.android.InternalPlatformTextApi
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/FontFeatureSpanTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/FontFeatureSpanTest.kt
index c32713b..03d1202 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/FontFeatureSpanTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/FontFeatureSpanTest.kt
@@ -17,11 +17,11 @@
 
 import android.text.TextPaint
 import androidx.compose.ui.text.android.InternalPlatformTextApi
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanEmTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanEmTest.kt
index 4791812..5cfe34d 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanEmTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanEmTest.kt
@@ -17,11 +17,11 @@
 
 import android.text.TextPaint
 import androidx.compose.ui.text.android.InternalPlatformTextApi
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanPxTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanPxTest.kt
index e40871d..bd98830 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanPxTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/LetterSpacingSpanPxTest.kt
@@ -20,13 +20,13 @@
 import androidx.compose.ui.text.android.InternalPlatformTextApi
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.doReturn
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.never
 import org.mockito.kotlin.verify
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @OptIn(InternalPlatformTextApi::class)
 @MediumTest
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/PlaceholderSpanTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/PlaceholderSpanTest.kt
index 944a467..9069271 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/PlaceholderSpanTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/PlaceholderSpanTest.kt
@@ -19,12 +19,12 @@
 import android.graphics.Paint
 import android.text.TextPaint
 import androidx.compose.ui.text.android.InternalPlatformTextApi
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.abs
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import kotlin.math.abs
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/SkewXSpanTest.kt b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/SkewXSpanTest.kt
index dedb532..3d8eb63 100644
--- a/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/SkewXSpanTest.kt
+++ b/text/text/src/androidTest/java/androidx/compose/ui/text/android/style/SkewXSpanTest.kt
@@ -17,11 +17,11 @@
 
 import android.text.TextPaint
 import androidx.compose.ui.text.android.InternalPlatformTextApi
+import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
 import org.junit.Test
 import org.junit.runner.RunWith
-import androidx.test.ext.junit.runners.AndroidJUnit4
 
 @OptIn(InternalPlatformTextApi::class)
 @RunWith(AndroidJUnit4::class)
diff --git a/text/text/src/main/java/androidx/compose/ui/text/android/LayoutHelper.kt b/text/text/src/main/java/androidx/compose/ui/text/android/LayoutHelper.kt
index e2b2cdc..62e7978 100644
--- a/text/text/src/main/java/androidx/compose/ui/text/android/LayoutHelper.kt
+++ b/text/text/src/main/java/androidx/compose/ui/text/android/LayoutHelper.kt
@@ -349,10 +349,23 @@
         }
     }
 
-    private fun getDownstreamHorizontal(offset: Int, primary: Boolean) = if (primary) {
-        layout.getPrimaryHorizontal(offset)
-    } else {
-        layout.getSecondaryHorizontal(offset)
+    private fun getDownstreamHorizontal(offset: Int, primary: Boolean): Float {
+        val lineNo = layout.getLineForOffset(offset)
+        val lineEnd = layout.getLineEnd(lineNo)
+
+        // [android.text.Layout#getHorizontal] has a bug that causes a crash if requested offset
+        // is in an ellipsized region and comes after a line feed character. We coerce at most to
+        // lineEnd of the line this offset belongs to. getLineEnd respects line feed characters.
+        // Any ellipsized character should already return the visible end value, which they do until
+        // a line feed character. We can safely assume rest of the characters can also return the
+        // same result as the reported line end.
+        val targetOffset = offset.coerceAtMost(lineEnd)
+
+        return if (primary) {
+            layout.getPrimaryHorizontal(targetOffset)
+        } else {
+            layout.getSecondaryHorizontal(targetOffset)
+        }
     }
 
     private data class BidiRun(val start: Int, val end: Int, val isRtl: Boolean)
diff --git a/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt b/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt
index 20c751f..3944f11 100644
--- a/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt
+++ b/text/text/src/main/java/androidx/compose/ui/text/android/TextLayout.kt
@@ -38,8 +38,6 @@
 import androidx.compose.ui.text.android.LayoutCompat.ALIGN_OPPOSITE
 import androidx.compose.ui.text.android.LayoutCompat.ALIGN_RIGHT
 import androidx.compose.ui.text.android.LayoutCompat.BreakStrategy
-import androidx.compose.ui.text.android.LayoutCompat.LineBreakStyle
-import androidx.compose.ui.text.android.LayoutCompat.LineBreakWordStyle
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_ALIGNMENT
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_BREAK_STRATEGY
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_HYPHENATION_FREQUENCY
@@ -52,6 +50,8 @@
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_TEXT_DIRECTION
 import androidx.compose.ui.text.android.LayoutCompat.HyphenationFrequency
 import androidx.compose.ui.text.android.LayoutCompat.JustificationMode
+import androidx.compose.ui.text.android.LayoutCompat.LineBreakStyle
+import androidx.compose.ui.text.android.LayoutCompat.LineBreakWordStyle
 import androidx.compose.ui.text.android.LayoutCompat.TEXT_DIRECTION_ANY_RTL_LTR
 import androidx.compose.ui.text.android.LayoutCompat.TEXT_DIRECTION_FIRST_STRONG_LTR
 import androidx.compose.ui.text.android.LayoutCompat.TEXT_DIRECTION_FIRST_STRONG_RTL
@@ -292,6 +292,8 @@
           always returned.
          */
         lineCount = min(layout.lineCount, maxLines)
+        val lastLine = lineCount - 1
+
         didExceedMaxLines =
             /* When lineCount is less than maxLines, actual line count is guaranteed not to exceed
             the maxLines.
@@ -312,8 +314,8 @@
                   handled by truncating.
                   So we have to check both cases, no matter what ellipsis parameter is passed.
                  */
-                layout.getEllipsisCount(lineCount - 1) > 0 ||
-                    layout.getLineEnd(lineCount - 1) != charSequence.length
+                layout.getEllipsisCount(lastLine) > 0 ||
+                    layout.getLineEnd(lastLine) != charSequence.length
             }
 
         val verticalPaddings = getVerticalPaddings()
@@ -323,12 +325,18 @@
         topPadding = max(verticalPaddings.topPadding, lineHeightPaddings.topPadding)
         bottomPadding = max(verticalPaddings.bottomPadding, lineHeightPaddings.bottomPadding)
 
-        val lastLineMetricsPair = getLastLineMetrics(textPaint, frameworkTextDir, lineHeightSpans)
-        lastLineFontMetrics = lastLineMetricsPair.first
-        lastLineExtra = lastLineMetricsPair.second
+        val fontMetrics = getLastLineMetrics(textPaint, frameworkTextDir, lineHeightSpans)
+        lastLineExtra = if (fontMetrics != null) {
+            fontMetrics.bottom - getLineHeight(lastLine).toInt()
+        } else {
+            0
+        }
+        // Set lastLineFontMetrics after calling getLineHeight() above, as the metrics
+        // are different when lastLineFontMetrics is null
+        lastLineFontMetrics = fontMetrics
 
-        leftPadding = layout.getEllipsizedLeftPadding(lineCount - 1)
-        rightPadding = layout.getEllipsizedRightPadding(lineCount - 1)
+        leftPadding = layout.getEllipsizedLeftPadding(lastLine)
+        rightPadding = layout.getEllipsizedRightPadding(lastLine)
     }
 
     private val layoutHelper by lazy(LazyThreadSafetyMode.NONE) { LayoutHelper(layout) }
@@ -963,7 +971,7 @@
     textPaint: TextPaint,
     frameworkTextDir: TextDirectionHeuristic,
     lineHeightSpans: Array<LineHeightStyleSpan>
-): Pair<FontMetricsInt?, Int> {
+): FontMetricsInt? {
     val lastLine = lineCount - 1
     // did not check for "\n" since the last line might include zero width characters
     if (layout.getLineStart(lastLine) == layout.getLineEnd(lastLine) &&
@@ -1006,10 +1014,9 @@
             bottom = tmpLayout.getLineBottom(0)
         }
 
-        val lastLineExtra = lastLineFontMetrics.bottom - getLineHeight(lastLine).toInt()
-        return Pair(lastLineFontMetrics, lastLineExtra)
+        return lastLineFontMetrics
     }
-    return Pair(null, 0)
+    return null
 }
 
 @OptIn(InternalPlatformTextApi::class)
diff --git a/tracing/tracing-ktx/build.gradle b/tracing/tracing-ktx/build.gradle
index 9cfe63d..a40116c 100644
--- a/tracing/tracing-ktx/build.gradle
+++ b/tracing/tracing-ktx/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "Android Tracing Runtime Kotlin Extensions"
+    name = "Tracing Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android Tracing"
diff --git a/tracing/tracing-perfetto-binary/build.gradle b/tracing/tracing-perfetto-binary/build.gradle
index 6a2f998..c663488 100644
--- a/tracing/tracing-perfetto-binary/build.gradle
+++ b/tracing/tracing-perfetto-binary/build.gradle
@@ -82,7 +82,7 @@
 }
 
 androidx {
-    name = "AndroidX Tracing: Perfetto SDK Native Dependencies"
+    name = "Tracing Perfetto Binary"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.TRACING_PERFETTO
     inceptionYear = "2022"
diff --git a/tracing/tracing-perfetto-common/build.gradle b/tracing/tracing-perfetto-common/build.gradle
index 4d9548c..ac22d616 100644
--- a/tracing/tracing-perfetto-common/build.gradle
+++ b/tracing/tracing-perfetto-common/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "AndroidX Tracing: Perfetto Common"
+    name = "Tracing Perfetto Common"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.TRACING_PERFETTO
     inceptionYear = "2022"
diff --git a/tracing/tracing-perfetto/build.gradle b/tracing/tracing-perfetto/build.gradle
index 9e6c8fb..5632eb7 100644
--- a/tracing/tracing-perfetto/build.gradle
+++ b/tracing/tracing-perfetto/build.gradle
@@ -58,7 +58,7 @@
 }
 
 androidx {
-    name = "AndroidX Tracing: Perfetto SDK"
+    name = "Tracing Perfetto"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.TRACING_PERFETTO
     inceptionYear = "2022"
diff --git a/tracing/tracing-perfetto/src/androidTest/java/androidx/tracing/perfetto/test/TracingTest.kt b/tracing/tracing-perfetto/src/androidTest/java/androidx/tracing/perfetto/test/TracingTest.kt
index d6f95cd..1dce783 100644
--- a/tracing/tracing-perfetto/src/androidTest/java/androidx/tracing/perfetto/test/TracingTest.kt
+++ b/tracing/tracing-perfetto/src/androidTest/java/androidx/tracing/perfetto/test/TracingTest.kt
@@ -20,9 +20,9 @@
 import androidx.annotation.RequiresApi
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
+import androidx.tracing.perfetto.PerfettoHandshake.RequestKeys.RECEIVER_CLASS_NAME
 import androidx.tracing.perfetto.Tracing
 import androidx.tracing.perfetto.TracingReceiver
-import androidx.tracing.perfetto.PerfettoHandshake.RequestKeys.RECEIVER_CLASS_NAME
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/tracing/tracing-perfetto/src/main/java/androidx/tracing/perfetto/TracingReceiver.kt b/tracing/tracing-perfetto/src/main/java/androidx/tracing/perfetto/TracingReceiver.kt
index 0ca316b..bca33d3 100644
--- a/tracing/tracing-perfetto/src/main/java/androidx/tracing/perfetto/TracingReceiver.kt
+++ b/tracing/tracing-perfetto/src/main/java/androidx/tracing/perfetto/TracingReceiver.kt
@@ -23,12 +23,12 @@
 import android.util.JsonWriter
 import androidx.annotation.RestrictTo
 import androidx.annotation.RestrictTo.Scope.LIBRARY
-import androidx.tracing.perfetto.Tracing.EnableTracingResponse
 import androidx.tracing.perfetto.PerfettoHandshake.EnableTracingResponse
 import androidx.tracing.perfetto.PerfettoHandshake.RequestKeys.ACTION_ENABLE_TRACING
 import androidx.tracing.perfetto.PerfettoHandshake.RequestKeys.KEY_PATH
 import androidx.tracing.perfetto.PerfettoHandshake.ResponseExitCodes.RESULT_CODE_ERROR_OTHER
 import androidx.tracing.perfetto.PerfettoHandshake.ResponseKeys
+import androidx.tracing.perfetto.Tracing.EnableTracingResponse
 import java.io.File
 import java.io.StringWriter
 import java.util.concurrent.LinkedBlockingQueue
diff --git a/tracing/tracing/build.gradle b/tracing/tracing/build.gradle
index 032edf2..1f0851b 100644
--- a/tracing/tracing/build.gradle
+++ b/tracing/tracing/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android Tracing"
+    name = "Tracing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android Tracing"
diff --git a/transition/transition-ktx/src/androidTest/java/androidx/transition/TransitionTest.kt b/transition/transition-ktx/src/androidTest/java/androidx/transition/TransitionTest.kt
index 915ecb6..0f42fdc 100644
--- a/transition/transition-ktx/src/androidTest/java/androidx/transition/TransitionTest.kt
+++ b/transition/transition-ktx/src/androidTest/java/androidx/transition/TransitionTest.kt
@@ -24,13 +24,13 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.transition.ktx.test.R
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.atomic.AtomicBoolean
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.atomic.AtomicBoolean
 
 @SdkSuppress(minSdkVersion = 19)
 @MediumTest
diff --git a/transition/transition/build.gradle b/transition/transition/build.gradle
index e1080ed..1518fbe 100644
--- a/transition/transition/build.gradle
+++ b/transition/transition/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "Android Transition Support Library"
+    name = "Transition"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2016"
     description = "Android Transition Support Library"
diff --git a/transition/transition/src/androidTest/java/androidx/transition/FragmentTransitionTest.kt b/transition/transition/src/androidTest/java/androidx/transition/FragmentTransitionTest.kt
index db5d385..245fde8 100644
--- a/transition/transition/src/androidTest/java/androidx/transition/FragmentTransitionTest.kt
+++ b/transition/transition/src/androidTest/java/androidx/transition/FragmentTransitionTest.kt
@@ -31,6 +31,8 @@
 import androidx.transition.test.R
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.After
 import org.junit.Assert.fail
 import org.junit.Before
@@ -42,8 +44,6 @@
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.reset
 import org.mockito.Mockito.verify
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @MediumTest
 @RunWith(Parameterized::class)
diff --git a/tv/tv-foundation/build.gradle b/tv/tv-foundation/build.gradle
index a53a44ee..eace93c 100644
--- a/tv/tv-foundation/build.gradle
+++ b/tv/tv-foundation/build.gradle
@@ -67,7 +67,7 @@
 }
 
 androidx {
-    name = "androidx.tv:tv-foundation"
+    name = "TV Foundation"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "This library makes it easier for developers" +
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsIndexedTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsIndexedTest.kt
index 7bc39fb..1376532 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsIndexedTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsIndexedTest.kt
@@ -17,8 +17,8 @@
 package androidx.tv.foundation.lazy.grid
 
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.text.BasicText
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.testTag
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsReverseLayoutTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsReverseLayoutTest.kt
index 5cf5c36..4d8ad86 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsReverseLayoutTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridsReverseLayoutTest.kt
@@ -22,7 +22,6 @@
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
-import androidx.tv.foundation.lazy.list.setContentWithTestViewConfiguration
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
@@ -35,6 +34,7 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
+import androidx.tv.foundation.lazy.list.setContentWithTestViewConfiguration
 import com.google.common.truth.Truth.assertThat
 import org.junit.Before
 import org.junit.Rule
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyNestedScrollingTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyNestedScrollingTest.kt
index ed9df04..f988a2d2 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyNestedScrollingTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyNestedScrollingTest.kt
@@ -17,18 +17,16 @@
 package androidx.tv.foundation.lazy.grid
 
 import androidx.compose.foundation.focusable
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.ScrollableState
 import androidx.compose.foundation.gestures.scrollable
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.ui.input.key.NativeKeyEvent
-import androidx.tv.foundation.lazy.list.TestTouchSlop
-import androidx.tv.foundation.lazy.list.setContentWithTestViewConfiguration
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
@@ -36,6 +34,8 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import androidx.tv.foundation.lazy.list.TestTouchSlop
+import androidx.tv.foundation.lazy.list.setContentWithTestViewConfiguration
 import com.google.common.truth.Truth
 import kotlinx.coroutines.runBlocking
 import org.junit.Rule
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyScrollTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyScrollTest.kt
index fc4e60f..57639cd 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyScrollTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyScrollTest.kt
@@ -22,8 +22,8 @@
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.width
 import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.unit.Dp
 import androidx.test.filters.MediumTest
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/TvLazyGridLayoutInfoTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/TvLazyGridLayoutInfoTest.kt
index c1ef2fb9e..55b2cef 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/TvLazyGridLayoutInfoTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/TvLazyGridLayoutInfoTest.kt
@@ -21,7 +21,6 @@
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
-import androidx.tv.foundation.lazy.list.LayoutInfoTestParam
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.getValue
@@ -32,6 +31,7 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.dp
 import androidx.test.filters.MediumTest
+import androidx.tv.foundation.lazy.list.LayoutInfoTestParam
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
 import kotlinx.coroutines.runBlocking
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyColumnTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyColumnTest.kt
index db1f1eb..f26d36e 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyColumnTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyColumnTest.kt
@@ -17,7 +17,6 @@
 package androidx.tv.foundation.lazy.list
 
 import android.os.Build
-import androidx.tv.foundation.lazy.AutoTestFrameClock
 import androidx.compose.foundation.background
 import androidx.compose.foundation.focusable
 import androidx.compose.foundation.gestures.scrollBy
@@ -58,6 +57,7 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.tv.foundation.PivotOffsets
+import androidx.tv.foundation.lazy.AutoTestFrameClock
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
 import kotlinx.coroutines.runBlocking
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
index fb1bf65..2e9e5c9 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
@@ -59,14 +59,14 @@
 import androidx.tv.foundation.ExperimentalTvFoundationApi
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import kotlin.math.roundToInt
 import kotlinx.coroutines.runBlocking
 import org.junit.Assume.assumeTrue
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
-import org.junit.runners.Parameterized
-import kotlin.math.roundToInt
 import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @LargeTest
 @RunWith(Parameterized::class)
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListPrefetcherTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListPrefetcherTest.kt
index 13f31cf..688fe7f 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListPrefetcherTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListPrefetcherTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.tv.foundation.lazy.list
 
-import androidx.tv.foundation.lazy.AutoTestFrameClock
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.scrollBy
 import androidx.compose.foundation.layout.PaddingValues
@@ -32,6 +31,7 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.unit.dp
 import androidx.test.filters.LargeTest
+import androidx.tv.foundation.lazy.AutoTestFrameClock
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListsIndexedTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListsIndexedTest.kt
index 9eab54b..2faff75 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListsIndexedTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListsIndexedTest.kt
@@ -18,10 +18,10 @@
 
 import androidx.compose.foundation.focusable
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.requiredHeight
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.text.BasicText
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.testTag
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyNestedScrollingTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyNestedScrollingTest.kt
index 02ba39f..1a6000df 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyNestedScrollingTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyNestedScrollingTest.kt
@@ -17,6 +17,7 @@
 package androidx.tv.foundation.lazy.list
 
 import androidx.compose.foundation.focusable
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.ScrollableState
 import androidx.compose.foundation.gestures.scrollable
 import androidx.compose.foundation.layout.Box
@@ -24,7 +25,6 @@
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.ui.input.key.NativeKeyEvent
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.junit4.createComposeRule
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyScrollTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyScrollTest.kt
index 638985f..6ed7d6c 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyScrollTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyScrollTest.kt
@@ -17,21 +17,23 @@
 package androidx.tv.foundation.lazy.list
 
 import androidx.compose.animation.core.FloatSpringSpec
-import androidx.tv.foundation.lazy.AutoTestFrameClock
+import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.animateScrollBy
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.width
 import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Modifier
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.unit.Dp
 import androidx.test.filters.MediumTest
 import androidx.tv.foundation.PivotOffsets
+import androidx.tv.foundation.lazy.AutoTestFrameClock
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
+import java.util.concurrent.TimeUnit
+import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
@@ -42,8 +44,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(Parameterized::class)
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt
index 4e5c1df..4e1cabc 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt
@@ -17,10 +17,10 @@
 package androidx.tv.foundation.lazy.grid
 
 import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 import androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScope
 import androidx.compose.ui.layout.Placeable
 import androidx.compose.ui.unit.Constraints
+import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 
 /**
  * Abstracts away the subcomposition from the measuring logic.
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt
index 1d8433df..6b68329 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt
@@ -17,8 +17,8 @@
 package androidx.tv.foundation.lazy.grid
 
 import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 import androidx.compose.ui.unit.Constraints
+import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 
 /**
  * Abstracts away subcomposition and span calculation from the measuring logic of entire lines.
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyListItemPlacementAnimator.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyListItemPlacementAnimator.kt
index 6cde370..431d51a 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyListItemPlacementAnimator.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyListItemPlacementAnimator.kt
@@ -23,7 +23,6 @@
 import androidx.compose.animation.core.VisibilityThreshold
 import androidx.compose.animation.core.spring
 import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
@@ -31,6 +30,7 @@
 import androidx.compose.ui.util.fastAny
 import androidx.compose.ui.util.fastForEach
 import androidx.compose.ui.util.fastForEachIndexed
+import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt
index cd3a131..a291b8a 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt
@@ -17,10 +17,10 @@
 package androidx.tv.foundation.lazy.list
 
 import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 import androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScope
 import androidx.compose.ui.layout.Placeable
 import androidx.compose.ui.unit.Constraints
+import androidx.tv.foundation.lazy.layout.LazyLayoutKeyIndexMap
 
 /**
  * Abstracts away the subcomposition from the measuring logic.
diff --git a/tv/tv-material/build.gradle b/tv/tv-material/build.gradle
index 334a3f1..760e574 100644
--- a/tv/tv-material/build.gradle
+++ b/tv/tv-material/build.gradle
@@ -57,7 +57,7 @@
 }
 
 androidx {
-    name = "androidx.tv:tv-material"
+    name = "TV Material"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "build TV applications using controls that adhere to Material Design Language."
diff --git a/tv/tv-material/src/main/java/androidx/tv/material3/IconButton.kt b/tv/tv-material/src/main/java/androidx/tv/material3/IconButton.kt
index 408ab4f..bc0b098 100644
--- a/tv/tv-material/src/main/java/androidx/tv/material3/IconButton.kt
+++ b/tv/tv-material/src/main/java/androidx/tv/material3/IconButton.kt
@@ -16,8 +16,8 @@
 
 package androidx.tv.material3
 
-import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.interaction.Interaction
+import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
 import androidx.compose.foundation.layout.fillMaxSize
diff --git a/tv/tv-material/src/main/java/androidx/tv/material3/IconButtonDefaults.kt b/tv/tv-material/src/main/java/androidx/tv/material3/IconButtonDefaults.kt
index c56fd82..d2a3f17 100644
--- a/tv/tv-material/src/main/java/androidx/tv/material3/IconButtonDefaults.kt
+++ b/tv/tv-material/src/main/java/androidx/tv/material3/IconButtonDefaults.kt
@@ -16,9 +16,9 @@
 
 package androidx.tv.material3
 
-import androidx.compose.foundation.interaction.Interaction
 import androidx.annotation.FloatRange
 import androidx.compose.foundation.BorderStroke
+import androidx.compose.foundation.interaction.Interaction
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ReadOnlyComposable
diff --git a/tv/tv-material/src/main/java/androidx/tv/material3/Surface.kt b/tv/tv-material/src/main/java/androidx/tv/material3/Surface.kt
index 2b563e7..f21b2bf 100644
--- a/tv/tv-material/src/main/java/androidx/tv/material3/Surface.kt
+++ b/tv/tv-material/src/main/java/androidx/tv/material3/Surface.kt
@@ -333,7 +333,8 @@
         LocalAbsoluteTonalElevation provides absoluteElevation
     ) {
         val zIndex by animateFloatAsState(
-            targetValue = if (focused) FocusedZIndex else NonFocusedZIndex
+            targetValue = if (focused) FocusedZIndex else NonFocusedZIndex,
+            label = "zIndex"
         )
 
         val backgroundColorByState = surfaceColorAtElevation(
@@ -414,12 +415,14 @@
     enabled: Boolean,
     onClick: (() -> Unit)?,
     interactionSource: MutableInteractionSource
-) = this
-    .handleDPadEnter(
-        enabled = enabled,
-        interactionSource = interactionSource,
-        onClick = onClick
-    )
+) = handleDPadEnter(
+    enabled = enabled,
+    interactionSource = interactionSource,
+    onClick = onClick
+)
+    // We are not using "clickable" modifier here because if we set "enabled" to false
+    // then the Surface won't be focusable as well. But, in TV use case, a disabled surface
+    // should be focusable
     .focusable(interactionSource = interactionSource)
     .semantics(mergeDescendants = true) {
         onClick {
@@ -447,11 +450,14 @@
     onCheckedChange: (Boolean) -> Unit,
     interactionSource: MutableInteractionSource,
 ) = handleDPadEnter(
-        enabled = enabled,
-        interactionSource = interactionSource,
-        checked = checked,
-        onCheckedChanged = onCheckedChange
-    )
+    enabled = enabled,
+    interactionSource = interactionSource,
+    checked = checked,
+    onCheckedChanged = onCheckedChange
+)
+    // We are not using "toggleable" modifier here because if we set "enabled" to false
+    // then the Surface won't be focusable as well. But, in TV use case, a disabled surface
+    // should be focusable
     .focusable(enabled = enabled, interactionSource = interactionSource)
     .semantics(mergeDescendants = true) {
         onClick {
@@ -492,35 +498,33 @@
     val coroutineScope = rememberCoroutineScope()
     val pressInteraction = remember { PressInteraction.Press(Offset.Zero) }
     var isPressed by remember { mutableStateOf(false) }
-    this.then(
-        onKeyEvent { keyEvent ->
-            if (AcceptableKeys.any { keyEvent.nativeKeyEvent.keyCode == it } && enabled) {
-                when (keyEvent.nativeKeyEvent.action) {
-                    NativeKeyEvent.ACTION_DOWN -> {
-                        if (!isPressed) {
-                            isPressed = true
-                            coroutineScope.launch {
-                                interactionSource.emit(pressInteraction)
-                            }
-                        }
-                    }
-
-                    NativeKeyEvent.ACTION_UP -> {
-                        if (isPressed) {
-                            isPressed = false
-                            coroutineScope.launch {
-                                interactionSource.emit(PressInteraction.Release(pressInteraction))
-                            }
-                            onClick?.invoke()
-                            onCheckedChanged?.invoke(!checked)
+    onKeyEvent { keyEvent ->
+        if (AcceptableKeys.any { keyEvent.nativeKeyEvent.keyCode == it } && enabled) {
+            when (keyEvent.nativeKeyEvent.action) {
+                NativeKeyEvent.ACTION_DOWN -> {
+                    if (!isPressed) {
+                        isPressed = true
+                        coroutineScope.launch {
+                            interactionSource.emit(pressInteraction)
                         }
                     }
                 }
-                return@onKeyEvent KeyEventPropagation.StopPropagation
+
+                NativeKeyEvent.ACTION_UP -> {
+                    if (isPressed) {
+                        isPressed = false
+                        coroutineScope.launch {
+                            interactionSource.emit(PressInteraction.Release(pressInteraction))
+                        }
+                        onClick?.invoke()
+                        onCheckedChanged?.invoke(!checked)
+                    }
+                }
             }
-            KeyEventPropagation.ContinuePropagation
+            return@onKeyEvent KeyEventPropagation.StopPropagation
         }
-    )
+        KeyEventPropagation.ContinuePropagation
+    }
 }
 
 @Composable
diff --git a/tvprovider/tvprovider/build.gradle b/tvprovider/tvprovider/build.gradle
index 3ca9e91..4c19140 100644
--- a/tvprovider/tvprovider/build.gradle
+++ b/tvprovider/tvprovider/build.gradle
@@ -24,7 +24,7 @@
 }
 
 androidx {
-    name = "Android Support TV Provider"
+    name = "TV Provider"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "Android Support Library for TV Provider"
diff --git a/vectordrawable/vectordrawable-animated/build.gradle b/vectordrawable/vectordrawable-animated/build.gradle
index 2217ba2..8fd4fa3 100644
--- a/vectordrawable/vectordrawable-animated/build.gradle
+++ b/vectordrawable/vectordrawable-animated/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "Android Support AnimatedVectorDrawable"
+    name = "AnimatedVectorDrawable"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.VECTORDRAWABLE_ANIMATED
     inceptionYear = "2015"
diff --git a/vectordrawable/vectordrawable-seekable/build.gradle b/vectordrawable/vectordrawable-seekable/build.gradle
index aac1763..fa14340 100644
--- a/vectordrawable/vectordrawable-seekable/build.gradle
+++ b/vectordrawable/vectordrawable-seekable/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "Android SeekableAnimatedVectorDrawable"
+    name = "SeekableAnimatedVectorDrawable"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.VECTORDRAWABLE_SEEKABLE
     inceptionYear = "2020"
diff --git a/vectordrawable/vectordrawable/build.gradle b/vectordrawable/vectordrawable/build.gradle
index 9a818af..1d61639 100644
--- a/vectordrawable/vectordrawable/build.gradle
+++ b/vectordrawable/vectordrawable/build.gradle
@@ -28,7 +28,7 @@
 }
 
 androidx {
-    name = "Android Support VectorDrawable"
+    name = "VectorDrawable"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.VECTORDRAWABLE
     inceptionYear = "2015"
diff --git a/viewpager/viewpager/build.gradle b/viewpager/viewpager/build.gradle
index 583c085..0bf2230 100644
--- a/viewpager/viewpager/build.gradle
+++ b/viewpager/viewpager/build.gradle
@@ -21,7 +21,7 @@
 }
 
 androidx {
-    name = "Android Support Library View Pager"
+    name = "ViewPager"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 14 or later."
diff --git a/viewpager2/integration-tests/targetsdk-tests/src/androidTest/kotlin/androidx/viewpager2/integration/targetsdktests/OnApplyWindowInsetsListenerTest.kt b/viewpager2/integration-tests/targetsdk-tests/src/androidTest/kotlin/androidx/viewpager2/integration/targetsdktests/OnApplyWindowInsetsListenerTest.kt
index 6e8f5e1..1a6f6cb 100644
--- a/viewpager2/integration-tests/targetsdk-tests/src/androidTest/kotlin/androidx/viewpager2/integration/targetsdktests/OnApplyWindowInsetsListenerTest.kt
+++ b/viewpager2/integration-tests/targetsdk-tests/src/androidTest/kotlin/androidx/viewpager2/integration/targetsdktests/OnApplyWindowInsetsListenerTest.kt
@@ -38,14 +38,14 @@
 import androidx.viewpager2.widget.ViewPager2
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.WindowInsetsApplier
+import java.lang.reflect.Field
 import org.hamcrest.CoreMatchers.equalTo
-import org.junit.Assert.assertNotNull
 import org.hamcrest.MatcherAssert.assertThat
+import org.junit.Assert.assertNotNull
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.lang.reflect.Field
 
 @LargeTest
 @SdkSuppress(minSdkVersion = 30) // TODO(b/273945673): fix test on API 21..30
diff --git a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt
index 04b9043..b211aef 100644
--- a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt
+++ b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt
@@ -40,12 +40,12 @@
 import androidx.viewpager2.widget.ViewPager2
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
+import java.util.Locale
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.Matcher
 import org.junit.After
 import org.junit.Before
 import org.junit.Rule
-import java.util.Locale
 
 /**
  * Base class for all tests. Contains common functionality, like finding the [ViewPager2] under
diff --git a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/FakeDragTest.kt b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/FakeDragTest.kt
index 95aee13..f94204a 100644
--- a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/FakeDragTest.kt
+++ b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/FakeDragTest.kt
@@ -42,14 +42,14 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING
+import java.lang.reflect.Field
+import kotlin.math.sign
 import org.hamcrest.CoreMatchers.equalTo
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.lang.reflect.Field
-import kotlin.math.sign
 
 @LargeTest
 @RunWith(Parameterized::class)
diff --git a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/MarginPageTransformerTest.kt b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/MarginPageTransformerTest.kt
index aba8db8..44c7c81 100644
--- a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/MarginPageTransformerTest.kt
+++ b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/MarginPageTransformerTest.kt
@@ -30,16 +30,16 @@
 import androidx.viewpager2.widget.ViewPager2
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.hamcrest.CoreMatchers
+import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.closeTo
 import org.hamcrest.Matchers.equalTo
 import org.hamcrest.Matchers.greaterThan
-import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 private const val LABEL_NONE = "None"
 private const val LABEL_50_PX = "Margin 50px"
diff --git a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/util/AnimationVerifier.kt b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/util/AnimationVerifier.kt
index 920657f..6884e9e 100644
--- a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/util/AnimationVerifier.kt
+++ b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/util/AnimationVerifier.kt
@@ -21,10 +21,10 @@
 import androidx.recyclerview.widget.RecyclerView
 import androidx.test.espresso.matcher.ViewMatchers.assertThat
 import androidx.viewpager2.widget.ViewPager2
-import org.hamcrest.CoreMatchers.equalTo
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import kotlin.math.abs
+import org.hamcrest.CoreMatchers.equalTo
 
 /**
  * Verifies if animation happened in the given [ViewPager2]. It listens to
diff --git a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/CardFragmentActivity.kt b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/CardFragmentActivity.kt
index cc02c2f..843322b 100644
--- a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/CardFragmentActivity.kt
+++ b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/CardFragmentActivity.kt
@@ -22,7 +22,6 @@
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import androidx.viewpager2.adapter.FragmentStateAdapter
-
 import androidx.viewpager2.integration.testapp.cards.Card
 import androidx.viewpager2.integration.testapp.cards.CardView
 
diff --git a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/PageTransformerActivity.kt b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/PageTransformerActivity.kt
index e01899c..fe0c4ed 100644
--- a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/PageTransformerActivity.kt
+++ b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/PageTransformerActivity.kt
@@ -19,8 +19,8 @@
 import android.os.Bundle
 import androidx.fragment.app.FragmentActivity
 import androidx.viewpager2.integration.testapp.cards.CardViewAdapter
-import androidx.viewpager2.widget.ViewPager2
 import androidx.viewpager2.widget.MarginPageTransformer
+import androidx.viewpager2.widget.ViewPager2
 
 /**
  * Shows examples of [ViewPager2.PageTransformer], e.g. [MarginPageTransformer].
diff --git a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt
index a079f44..2ad388f 100644
--- a/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt
+++ b/viewpager2/integration-tests/testapp/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt
@@ -20,9 +20,7 @@
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
-
 import androidx.annotation.ColorRes
-
 import androidx.viewpager2.integration.testapp.R
 
 /** Inflates and populates a [View] representing a [Card]  */
diff --git a/viewpager2/viewpager2/build.gradle b/viewpager2/viewpager2/build.gradle
index 7397c66..fcba271 100644
--- a/viewpager2/viewpager2/build.gradle
+++ b/viewpager2/viewpager2/build.gradle
@@ -52,7 +52,7 @@
 }
 
 androidx {
-    name = "AndroidX Widget ViewPager2"
+    name = "ViewPager2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
     description = "AndroidX Widget ViewPager2"
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AccessibilityTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AccessibilityTest.kt
index afd41feb..f3ba3a4 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AccessibilityTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AccessibilityTest.kt
@@ -27,12 +27,12 @@
 import androidx.testutils.LocaleTestUtils
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
+import java.util.concurrent.TimeUnit
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit
 
 @RunWith(Parameterized::class)
 @LargeTest
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeTest.kt
index 24b8bf3..d5f29f4 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeTest.kt
@@ -27,14 +27,14 @@
 import androidx.viewpager2.widget.AdapterDataSetChangeTest.Action.ReplaceWith
 import androidx.viewpager2.widget.AdapterDataSetChangeTest.TestConfig
 import androidx.viewpager2.widget.swipe.ViewAdapter
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.equalTo
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit.SECONDS
 
 @RunWith(Parameterized::class)
 @LargeTest
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeWhileSmoothScrollTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeWhileSmoothScrollTest.kt
index 227a1f0..3f7aa14 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeWhileSmoothScrollTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterDataSetChangeWhileSmoothScrollTest.kt
@@ -33,16 +33,16 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_SETTLING
+import java.util.concurrent.TimeUnit.SECONDS
+import kotlin.math.roundToInt
+import kotlin.math.sign
 import org.hamcrest.CoreMatchers.equalTo
-import org.hamcrest.Matchers.greaterThan
 import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.greaterThan
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit.SECONDS
-import kotlin.math.roundToInt
-import kotlin.math.sign
 
 /** Number of pages */
 private const val pageCount = 25
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterTest.kt
index 45aca4c..2625d59 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/AdapterTest.kt
@@ -24,14 +24,14 @@
 import androidx.viewpager2.widget.BaseTest.Context.SwipeMethod
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.CoreMatchers.notNullValue
 import org.hamcrest.CoreMatchers.nullValue
-import org.hamcrest.Matchers.greaterThan
 import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.greaterThan
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit.SECONDS
 
 @LargeTest
 @RunWith(AndroidJUnit4::class)
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt
index 1ac998c..aaa96c9 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt
@@ -62,20 +62,20 @@
 import androidx.viewpager2.widget.swipe.TestActivity
 import androidx.viewpager2.widget.swipe.ViewAdapter
 import androidx.viewpager2.widget.swipe.WaitForInjectMotionEventsAction.Companion.waitForInjectMotionEvents
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import kotlin.math.abs
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.Matcher
+import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.allOf
 import org.hamcrest.Matchers.greaterThanOrEqualTo
 import org.hamcrest.Matchers.lessThan
 import org.hamcrest.Matchers.lessThanOrEqualTo
 import org.junit.After
-import org.hamcrest.MatcherAssert.assertThat
+import org.junit.Assert.fail
 import org.junit.Before
 import org.junit.Rule
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import kotlin.math.abs
-import org.junit.Assert.fail
 
 open class BaseTest {
     companion object {
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/CanScrollTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/CanScrollTest.kt
index 045de41..f4df49a 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/CanScrollTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/CanScrollTest.kt
@@ -22,11 +22,11 @@
 import androidx.testutils.LocaleTestUtils
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit.SECONDS
 
 /**
  * Tests [ViewPager2.canScrollHorizontally] and [ViewPager2.canScrollVertically]
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DisableUserInputTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DisableUserInputTest.kt
index 1be5e31..887553a 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DisableUserInputTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DisableUserInputTest.kt
@@ -28,13 +28,13 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
 import androidx.viewpager2.widget.swipe.ViewAdapter
+import java.util.concurrent.TimeUnit.SECONDS
+import kotlin.math.roundToInt
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit.SECONDS
-import kotlin.math.roundToInt
 
 /**
  * Tests what happens when a smooth scroll is interrupted by a drag
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DragWhileSmoothScrollTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DragWhileSmoothScrollTest.kt
index 1879ee12..40f6183 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DragWhileSmoothScrollTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/DragWhileSmoothScrollTest.kt
@@ -30,6 +30,10 @@
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_SETTLING
+import java.util.concurrent.TimeUnit.SECONDS
+import kotlin.math.ceil
+import kotlin.math.floor
+import kotlin.math.max
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.CoreMatchers.not
 import org.hamcrest.MatcherAssert.assertThat
@@ -39,10 +43,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit.SECONDS
-import kotlin.math.ceil
-import kotlin.math.floor
-import kotlin.math.max
 
 /**
  * Tests what happens when a smooth scroll is interrupted by a drag
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/EditTextFocusTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/EditTextFocusTest.kt
index 882aa67..18c63e4 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/EditTextFocusTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/EditTextFocusTest.kt
@@ -34,11 +34,11 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.CoreMatchers.allOf
 import org.junit.Assert.assertFalse
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit.SECONDS
 
 /** Regression test for an issue when focusing on an EditText would cause a scroll to page 0. */
 @RunWith(AndroidJUnit4::class)
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FakeDragTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FakeDragTest.kt
index b3e2d09..10dbbd5 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FakeDragTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FakeDragTest.kt
@@ -35,17 +35,11 @@
 import androidx.viewpager2.widget.FakeDragTest.TestConfig
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
+import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING as DRAGGING
+import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE as IDLE
+import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_SETTLING as SETTLING
 import androidx.viewpager2.widget.swipe.PageSwiperFakeDrag
 import androidx.viewpager2.widget.swipe.PageSwiperManual
-import org.hamcrest.CoreMatchers.equalTo
-import org.hamcrest.CoreMatchers.notNullValue
-import org.hamcrest.Matchers.greaterThan
-import org.hamcrest.MatcherAssert.assertThat
-import org.junit.Assume.assumeThat
-import org.junit.Ignore
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import java.lang.reflect.Field
 import java.lang.reflect.Method
 import java.util.concurrent.CountDownLatch
@@ -54,9 +48,15 @@
 import java.util.concurrent.TimeUnit.SECONDS
 import kotlin.math.min
 import kotlin.math.roundToInt
-import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING as DRAGGING
-import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE as IDLE
-import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_SETTLING as SETTLING
+import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.notNullValue
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.greaterThan
+import org.junit.Assume.assumeThat
+import org.junit.Ignore
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @RunWith(Parameterized::class)
 @LargeTest
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentLifecycleTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentLifecycleTest.kt
index 3e6ff55..9d271f9 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentLifecycleTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentLifecycleTest.kt
@@ -22,13 +22,13 @@
 import androidx.test.filters.LargeTest
 import androidx.viewpager2.widget.ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit.MILLISECONDS
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit.MILLISECONDS
 
 private const val STATE_RESUMED = "RESUMED"
 private const val STATE_STARTED = "STARTED"
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentTransactionCallbackTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentTransactionCallbackTest.kt
index 7bc0900..737b33f 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentTransactionCallbackTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/FragmentTransactionCallbackTest.kt
@@ -30,13 +30,13 @@
 import androidx.viewpager2.adapter.FragmentStateAdapter.FragmentTransactionCallback
 import androidx.viewpager2.adapter.FragmentStateAdapter.FragmentTransactionCallback.OnPostEventListener
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.equalTo
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit.SECONDS
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/HostFragmentBackStackTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/HostFragmentBackStackTest.kt
index 2d17809..4ca8cf5 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/HostFragmentBackStackTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/HostFragmentBackStackTest.kt
@@ -36,11 +36,11 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.swipe.FragmentAdapter
 import androidx.viewpager2.widget.swipe.PageFragment
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit.SECONDS
 
 /**
  * Regression test for an issue when recreating a [ViewPager2]'s host [Fragment]'s [View] causes
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/ItemDecorationTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/ItemDecorationTest.kt
index ebfc7b0..ccf9bbb 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/ItemDecorationTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/ItemDecorationTest.kt
@@ -24,14 +24,14 @@
 import androidx.test.filters.LargeTest
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.CoreMatchers.equalTo
-import org.hamcrest.Matchers.greaterThan
 import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.greaterThan
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit.SECONDS
 
 private const val operationTimeoutSeconds = 5L
 
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/MutableCollectionsTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/MutableCollectionsTest.kt
index 6eb2463..e39d5e7 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/MutableCollectionsTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/MutableCollectionsTest.kt
@@ -30,15 +30,15 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
 import androidx.viewpager2.widget.swipe.PageView
 import androidx.viewpager2.widget.swipe.SelfChecking
-import org.hamcrest.Matchers.equalTo
-import org.hamcrest.MatcherAssert.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import java.util.Random
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.atomic.AtomicInteger
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.equalTo
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 private const val RANDOM_TESTS_PER_CONFIG = 0 // increase to have random tests generated
 
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/OffscreenPageLimitTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/OffscreenPageLimitTest.kt
index b4b3c85..2a05ec3 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/OffscreenPageLimitTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/OffscreenPageLimitTest.kt
@@ -29,21 +29,21 @@
 import androidx.viewpager2.widget.OffscreenPageLimitTest.TestConfig
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
-import org.hamcrest.CoreMatchers.equalTo
-import org.hamcrest.CoreMatchers.hasItem
-import org.hamcrest.Matchers.greaterThanOrEqualTo
-import org.hamcrest.Matchers.lessThan
-import org.hamcrest.Matchers.lessThanOrEqualTo
-import org.hamcrest.MatcherAssert.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import java.util.concurrent.TimeUnit.SECONDS
 import kotlin.math.ceil
 import kotlin.math.floor
 import kotlin.math.max
 import kotlin.math.min
 import kotlin.math.roundToInt
+import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.hasItem
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.greaterThanOrEqualTo
+import org.hamcrest.Matchers.lessThan
+import org.hamcrest.Matchers.lessThanOrEqualTo
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @RunWith(Parameterized::class)
 class OffscreenPageLimitTest(private val config: TestConfig) : BaseTest() {
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PaddingMarginDecorationTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PaddingMarginDecorationTest.kt
index 40fb085..fee2599 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PaddingMarginDecorationTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PaddingMarginDecorationTest.kt
@@ -33,13 +33,13 @@
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_SETTLING
 import androidx.viewpager2.widget.swipe.ViewAdapter
+import java.util.concurrent.TimeUnit.SECONDS
+import kotlin.math.roundToInt
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit.SECONDS
-import kotlin.math.roundToInt
 
 @RunWith(Parameterized::class)
 @LargeTest
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageChangeCallbackTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageChangeCallbackTest.kt
index 355402c..ec95b53 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageChangeCallbackTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageChangeCallbackTest.kt
@@ -40,20 +40,20 @@
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_SETTLING
 import androidx.viewpager2.widget.swipe.PageSwiperManual
-import org.hamcrest.CoreMatchers.equalTo
-import org.hamcrest.CoreMatchers.not
-import org.hamcrest.Matchers.allOf
-import org.hamcrest.Matchers.greaterThan
-import org.hamcrest.Matchers.greaterThanOrEqualTo
-import org.hamcrest.MatcherAssert.assertThat
-import org.junit.Ignore
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.Executors.newSingleThreadExecutor
 import java.util.concurrent.TimeUnit.SECONDS
 import kotlin.math.roundToInt
+import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.not
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.allOf
+import org.hamcrest.Matchers.greaterThan
+import org.hamcrest.Matchers.greaterThanOrEqualTo
+import org.junit.Ignore
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 @RunWith(Parameterized::class)
 @LargeTest
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageFillTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageFillTest.kt
index adeff10..63bfb25 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageFillTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageFillTest.kt
@@ -25,8 +25,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
-import org.hamcrest.Matchers.containsString
 import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.containsString
 import org.junit.Assert.fail
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageTransformerTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageTransformerTest.kt
index 5fbbc06..0909f67 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageTransformerTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/PageTransformerTest.kt
@@ -30,17 +30,17 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
 import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
 import androidx.viewpager2.widget.ViewPager2.PageTransformer
+import java.util.concurrent.TimeUnit.SECONDS
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.CoreMatchers.not
+import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.greaterThan
 import org.hamcrest.Matchers.lessThan
 import org.junit.Assert.assertFalse
-import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit.SECONDS
 
 @RunWith(Parameterized::class)
 @LargeTest
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SetItemWhileScrollInProgressTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SetItemWhileScrollInProgressTest.kt
index fc0b05d1..c505b33 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SetItemWhileScrollInProgressTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SetItemWhileScrollInProgressTest.kt
@@ -26,6 +26,7 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
 import androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING
+import java.util.Random
 import org.hamcrest.CoreMatchers.anyOf
 import org.hamcrest.CoreMatchers.equalTo
 import org.hamcrest.CoreMatchers.instanceOf
@@ -36,7 +37,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.Random
 
 private const val RANDOM_TESTS_PER_CONFIG = 0 // increase to have random tests generated
 
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SwipeTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SwipeTest.kt
index d669298..0bfdab5 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SwipeTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/SwipeTest.kt
@@ -23,11 +23,11 @@
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL
 import androidx.viewpager2.widget.ViewPager2.Orientation
 import androidx.viewpager2.widget.swipe.PageView
+import java.util.Random
+import java.util.concurrent.TimeUnit
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.Random
-import java.util.concurrent.TimeUnit
 
 // region test
 
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/TransientStateFragmentTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/TransientStateFragmentTest.kt
index ec89330..f9e4951 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/TransientStateFragmentTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/TransientStateFragmentTest.kt
@@ -24,9 +24,9 @@
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
+import java.util.concurrent.TimeUnit.MILLISECONDS
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit.MILLISECONDS
 
 /**
  * Verifies that [androidx.viewpager2.adapter.FragmentStateAdapter] can handle [Fragment]s
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/swipe/FragmentAdapter.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/swipe/FragmentAdapter.kt
index 6cfa14f..da365fc 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/swipe/FragmentAdapter.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/swipe/FragmentAdapter.kt
@@ -25,11 +25,11 @@
 import androidx.fragment.app.FragmentManager
 import androidx.lifecycle.Lifecycle
 import androidx.viewpager2.adapter.FragmentStateAdapter
+import java.util.concurrent.atomic.AtomicInteger
+import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.allOf
 import org.hamcrest.Matchers.greaterThanOrEqualTo
 import org.hamcrest.Matchers.lessThanOrEqualTo
-import org.hamcrest.MatcherAssert.assertThat
-import java.util.concurrent.atomic.AtomicInteger
 
 private const val ARG_KEY = "key"
 
diff --git a/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyColumnTest.kt b/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyColumnTest.kt
index bee6208..a13ef30 100644
--- a/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyColumnTest.kt
+++ b/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyColumnTest.kt
@@ -52,13 +52,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.wear.compose.foundation.TEST_TAG
+import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
+import kotlinx.coroutines.runBlocking
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import com.google.common.truth.Truth.assertThat
-import kotlin.math.roundToInt
-import kotlinx.coroutines.runBlocking
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt b/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt
index 9f42158..1b894ff 100644
--- a/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt
+++ b/wear/compose/compose-foundation/src/androidAndroidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt
@@ -41,6 +41,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
@@ -48,7 +49,6 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
 
 @MediumTest
 @RunWith(AndroidJUnit4::class)
diff --git a/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/CurvedTextStyleTest.kt b/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/CurvedTextStyleTest.kt
index 53d704d..3c9dab3 100644
--- a/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/CurvedTextStyleTest.kt
+++ b/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/CurvedTextStyleTest.kt
@@ -25,8 +25,8 @@
 import androidx.compose.ui.unit.isUnspecified
 import androidx.compose.ui.unit.sp
 import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
 import org.junit.Assert.assertNull
+import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
diff --git a/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/ChipTest.kt b/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/ChipTest.kt
index 81ec14c..756d558 100644
--- a/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/ChipTest.kt
+++ b/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/ChipTest.kt
@@ -32,14 +32,14 @@
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.State
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
-import androidx.compose.runtime.State
 import androidx.compose.runtime.rememberUpdatedState
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.platform.testTag
diff --git a/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/IconTest.kt b/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/IconTest.kt
index ce31b5d..1c76ba7 100644
--- a/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/IconTest.kt
+++ b/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/IconTest.kt
@@ -29,8 +29,8 @@
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.graphics.drawscope.CanvasDrawScope
-import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.Painter
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.graphics.vector.rememberVectorPainter
diff --git a/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/TextTest.kt b/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/TextTest.kt
index 7215c15..d1c8fad 100644
--- a/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/TextTest.kt
+++ b/wear/compose/compose-material-core/src/androidAndroidTest/kotlin/androidx/wear/compose/materialcore/TextTest.kt
@@ -43,10 +43,10 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
+import java.lang.IllegalArgumentException
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.lang.IllegalArgumentException
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CircularProgressIndicatorSample.kt b/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CircularProgressIndicatorSample.kt
index ac90813..e70e08c 100644
--- a/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CircularProgressIndicatorSample.kt
+++ b/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CircularProgressIndicatorSample.kt
@@ -32,8 +32,8 @@
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
-import androidx.wear.compose.material.CompactChip
 import androidx.wear.compose.material.CircularProgressIndicator
+import androidx.wear.compose.material.CompactChip
 import androidx.wear.compose.material.ProgressIndicatorDefaults
 import androidx.wear.compose.material.Text
 
diff --git a/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CurvedTextSample.kt b/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CurvedTextSample.kt
index 653eab7..aff1014 100644
--- a/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CurvedTextSample.kt
+++ b/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/CurvedTextSample.kt
@@ -33,11 +33,11 @@
 import androidx.wear.compose.foundation.curvedColumn
 import androidx.wear.compose.foundation.curvedRow
 import androidx.wear.compose.foundation.padding
-import androidx.wear.compose.material.curvedText
 import androidx.wear.compose.material.LocalContentAlpha
 import androidx.wear.compose.material.LocalContentColor
 import androidx.wear.compose.material.LocalTextStyle
 import androidx.wear.compose.material.ProvideTextStyle
+import androidx.wear.compose.material.curvedText
 
 @Sampled
 @Composable
diff --git a/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/ScaffoldSample.kt b/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/ScaffoldSample.kt
index 9aa2006..92c9d1f 100644
--- a/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/ScaffoldSample.kt
+++ b/wear/compose/compose-material/samples/src/main/java/androidx/wear/compose/material/samples/ScaffoldSample.kt
@@ -24,16 +24,16 @@
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
+import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
+import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState
 import androidx.wear.compose.material.Chip
 import androidx.wear.compose.material.ChipDefaults
 import androidx.wear.compose.material.PositionIndicator
 import androidx.wear.compose.material.Scaffold
-import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
 import androidx.wear.compose.material.Text
 import androidx.wear.compose.material.TimeText
 import androidx.wear.compose.material.Vignette
 import androidx.wear.compose.material.VignettePosition
-import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState
 
 @SuppressLint("UnrememberedMutableState")
 @Sampled
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ChipTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ChipTest.kt
index c0dfbe8..d2b7da4 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ChipTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ChipTest.kt
@@ -31,8 +31,8 @@
 import androidx.compose.testutils.assertShape
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.vector.rememberVectorPainter
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.platform.testTag
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/IconTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/IconTest.kt
index 0f1d9c4..50d241b 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/IconTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/IconTest.kt
@@ -26,8 +26,8 @@
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.graphics.drawscope.CanvasDrawScope
-import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.graphics.painter.ColorPainter
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.testTag
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PlaceholderTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PlaceholderTest.kt
index 37e074b..913b5b1 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PlaceholderTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PlaceholderTest.kt
@@ -34,10 +34,10 @@
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.unit.Dp
-import org.junit.Rule
-import org.junit.Test
 import com.google.common.truth.Truth.assertThat
 import kotlin.math.max
+import org.junit.Rule
+import org.junit.Test
 
 class PlaceholderTest {
     @get:Rule
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PositionIndicatorTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PositionIndicatorTest.kt
index 246fd6a..586cb58 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PositionIndicatorTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/PositionIndicatorTest.kt
@@ -16,13 +16,6 @@
 
 package androidx.wear.compose.material
 
-import androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo as ScalingLazyListLayoutInfo
-import androidx.wear.compose.foundation.lazy.ScalingLazyListState as ScalingLazyListState
-import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState as rememberScalingLazyListState
-import androidx.wear.compose.foundation.lazy.ScalingLazyColumn as ScalingLazyColumn
-import androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults as ScalingLazyColumnDefaults
-import androidx.wear.compose.foundation.lazy.AutoCenteringParams as AutoCenteringParams
-import androidx.wear.compose.foundation.lazy.ScalingLazyListScope as ScalingLazyListScope
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.ScrollState
 import androidx.compose.foundation.background
@@ -55,6 +48,13 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import androidx.wear.compose.foundation.lazy.AutoCenteringParams as AutoCenteringParams
+import androidx.wear.compose.foundation.lazy.ScalingLazyColumn as ScalingLazyColumn
+import androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults as ScalingLazyColumnDefaults
+import androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo as ScalingLazyListLayoutInfo
+import androidx.wear.compose.foundation.lazy.ScalingLazyListScope as ScalingLazyListScope
+import androidx.wear.compose.foundation.lazy.ScalingLazyListState as ScalingLazyListState
+import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState as rememberScalingLazyListState
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyColumnTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyColumnTest.kt
index a0ef0e1..d5dfb4c 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyColumnTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyColumnTest.kt
@@ -49,13 +49,13 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
+import kotlinx.coroutines.runBlocking
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import com.google.common.truth.Truth.assertThat
-import kotlin.math.roundToInt
-import kotlinx.coroutines.runBlocking
 
 @Suppress("DEPRECATION")
 @MediumTest
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
index 82dcfc3..7a88093 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
@@ -40,15 +40,15 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
+import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import kotlin.math.roundToInt
-import org.junit.Ignore
 
 @Suppress("DEPRECATION")
 @MediumTest
diff --git a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxTest.kt b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxTest.kt
index d5bd277..da64262 100644
--- a/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxTest.kt
+++ b/wear/compose/compose-material/src/androidAndroidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxTest.kt
@@ -47,9 +47,9 @@
 import androidx.compose.ui.test.swipe
 import androidx.compose.ui.test.swipeLeft
 import androidx.compose.ui.test.swipeRight
+import com.google.common.truth.Truth.assertThat
 import java.lang.Math.sin
 import org.junit.Assert.assertEquals
-import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
 import org.junit.Test
 
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/MaterialTextSelectionColors.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/MaterialTextSelectionColors.kt
index 2838258..fe1151e 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/MaterialTextSelectionColors.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/MaterialTextSelectionColors.kt
@@ -15,13 +15,13 @@
  */
 package androidx.wear.compose.material
 
+import androidx.compose.foundation.text.selection.TextSelectionColors
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.luminance
 import androidx.compose.ui.graphics.takeOrElse
-import androidx.compose.foundation.text.selection.TextSelectionColors
 import kotlin.math.max
 import kotlin.math.min
 
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/Picker.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/Picker.kt
index 1615159..2aaa04b 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/Picker.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/Picker.kt
@@ -15,11 +15,6 @@
  */
 package androidx.wear.compose.material
 
-import androidx.wear.compose.foundation.lazy.ScalingLazyColumn as ScalingLazyColumn
-import androidx.wear.compose.foundation.lazy.ScalingParams as ScalingParams
-import androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults as ScalingLazyColumnDefaults
-import androidx.wear.compose.foundation.lazy.AutoCenteringParams as AutoCenteringParams
-import androidx.wear.compose.foundation.lazy.ScalingLazyListState as ScalingLazyListState
 import androidx.compose.animation.core.CubicBezierEasing
 import androidx.compose.animation.core.DecayAnimationSpec
 import androidx.compose.animation.core.Easing
@@ -64,6 +59,11 @@
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
+import androidx.wear.compose.foundation.lazy.AutoCenteringParams as AutoCenteringParams
+import androidx.wear.compose.foundation.lazy.ScalingLazyColumn as ScalingLazyColumn
+import androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults as ScalingLazyColumnDefaults
+import androidx.wear.compose.foundation.lazy.ScalingLazyListState as ScalingLazyListState
+import androidx.wear.compose.foundation.lazy.ScalingParams as ScalingParams
 import kotlinx.coroutines.launch
 
 /**
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PickerGroup.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PickerGroup.kt
index 6ddae0d4..8588ee8 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PickerGroup.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PickerGroup.kt
@@ -16,12 +16,12 @@
 
 package androidx.wear.compose.material
 
+import androidx.compose.foundation.focusable
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.gestures.awaitEachGesture
 import androidx.compose.foundation.gestures.awaitFirstDown
 import androidx.compose.foundation.gestures.scrollable
 import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.focusable
 import androidx.compose.foundation.layout.BoxScope
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PositionIndicator.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PositionIndicator.kt
index 2daae1d..74be61a 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PositionIndicator.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/PositionIndicator.kt
@@ -16,10 +16,6 @@
 
 package androidx.wear.compose.material
 
-import androidx.wear.compose.foundation.lazy.ScalingLazyListState as ScalingLazyListState
-import androidx.wear.compose.foundation.lazy.ScalingLazyColumn as ScalingLazyColumn
-import androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo as ScalingLazyListItemInfo
-import androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType as ScalingLazyListAnchorType
 import androidx.compose.animation.core.Animatable
 import androidx.compose.animation.core.AnimationSpec
 import androidx.compose.animation.core.AnimationVector
@@ -74,6 +70,10 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.dp
+import androidx.wear.compose.foundation.lazy.ScalingLazyColumn as ScalingLazyColumn
+import androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType as ScalingLazyListAnchorType
+import androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo as ScalingLazyListItemInfo
+import androidx.wear.compose.foundation.lazy.ScalingLazyListState as ScalingLazyListState
 import kotlin.math.PI
 import kotlin.math.asin
 import kotlin.math.max
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ProgressIndicator.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ProgressIndicator.kt
index e784c13..9a1ffd1 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ProgressIndicator.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ProgressIndicator.kt
@@ -29,8 +29,8 @@
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.wear.compose.material.ProgressIndicatorDefaults.BaseRotationAngle
-import androidx.wear.compose.material.ProgressIndicatorDefaults.CircularEasing
 import androidx.wear.compose.material.ProgressIndicatorDefaults.ButtonCircularIndicatorDiameter
+import androidx.wear.compose.material.ProgressIndicatorDefaults.CircularEasing
 import androidx.wear.compose.material.ProgressIndicatorDefaults.HeadAndTailAnimationDuration
 import androidx.wear.compose.material.ProgressIndicatorDefaults.HeadAndTailDelayDuration
 import androidx.wear.compose.material.ProgressIndicatorDefaults.IndeterminateCircularIndicatorDiameter
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ScrollAway.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ScrollAway.kt
index d577f3e..c15fd01 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ScrollAway.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ScrollAway.kt
@@ -31,8 +31,8 @@
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.lerp
-import androidx.wear.compose.foundation.lazy.ScalingLazyListState
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
+import androidx.wear.compose.foundation.lazy.ScalingLazyListState
 
 /**
  * Scroll an item vertically in/out of view based on a [ScrollState].
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleControl.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleControl.kt
index d129aba..88c3b0de 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleControl.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/ToggleControl.kt
@@ -17,10 +17,10 @@
 
 import androidx.compose.animation.animateColorAsState
 import androidx.compose.animation.core.AnimationSpec
-import androidx.compose.animation.core.animateFloat
-import androidx.compose.animation.core.updateTransition
 import androidx.compose.animation.core.Transition
+import androidx.compose.animation.core.animateFloat
 import androidx.compose.animation.core.tween
+import androidx.compose.animation.core.updateTransition
 import androidx.compose.foundation.Canvas
 import androidx.compose.foundation.Indication
 import androidx.compose.foundation.interaction.Interaction
@@ -33,8 +33,8 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.Stable
-import androidx.compose.runtime.remember
 import androidx.compose.runtime.State
+import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.CornerRadius
@@ -42,12 +42,12 @@
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.graphics.BlendMode
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.drawscope.DrawScope
-import androidx.compose.ui.graphics.drawscope.Fill
-import androidx.compose.ui.graphics.drawscope.Stroke
 import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.StrokeCap
 import androidx.compose.ui.graphics.compositeOver
+import androidx.compose.ui.graphics.drawscope.DrawScope
+import androidx.compose.ui.graphics.drawscope.Fill
+import androidx.compose.ui.graphics.drawscope.Stroke
 import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.lerp
diff --git a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/TouchExplorationStateProvider.kt b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/TouchExplorationStateProvider.kt
index e8a261e..564b2df 100644
--- a/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/TouchExplorationStateProvider.kt
+++ b/wear/compose/compose-material/src/commonMain/kotlin/androidx/wear/compose/material/TouchExplorationStateProvider.kt
@@ -25,9 +25,9 @@
 import androidx.compose.runtime.State
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.setValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalLifecycleOwner
 import androidx.lifecycle.Lifecycle
diff --git a/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/Material3Test.kt b/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/Material3Test.kt
index 2c8d474..afa5a80 100644
--- a/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/Material3Test.kt
+++ b/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/Material3Test.kt
@@ -33,17 +33,17 @@
 import androidx.compose.testutils.assertContainsColor
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ImageBitmap
 import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.toPixelMap
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.SemanticsNode
 import androidx.compose.ui.test.SemanticsNodeInteraction
 import androidx.compose.ui.test.assertTouchHeightIsEqualTo
 import androidx.compose.ui.test.assertTouchWidthIsEqualTo
-import androidx.compose.ui.geometry.Rect
-import androidx.compose.ui.semantics.SemanticsNode
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.junit4.ComposeContentTestRule
 import androidx.compose.ui.test.onNodeWithTag
@@ -53,8 +53,8 @@
 import androidx.compose.ui.unit.height
 import androidx.compose.ui.unit.isUnspecified
 import androidx.compose.ui.unit.toSize
-import org.junit.Assert
 import kotlin.math.abs
+import org.junit.Assert
 
 /**
  * Constant to emulate very big but finite constraints
diff --git a/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/TextTest.kt b/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/TextTest.kt
index a61944f..2596530 100644
--- a/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/TextTest.kt
+++ b/wear/compose/compose-material3/src/androidAndroidTest/kotlin/androidx/wear/compose/material3/TextTest.kt
@@ -35,10 +35,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
+import java.lang.IllegalArgumentException
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.lang.IllegalArgumentException
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
diff --git a/wear/compose/compose-material3/src/commonMain/kotlin/androidx/wear/compose/material3/MaterialTextSelectionColors.kt b/wear/compose/compose-material3/src/commonMain/kotlin/androidx/wear/compose/material3/MaterialTextSelectionColors.kt
index 8939ee4..cfd8d63 100644
--- a/wear/compose/compose-material3/src/commonMain/kotlin/androidx/wear/compose/material3/MaterialTextSelectionColors.kt
+++ b/wear/compose/compose-material3/src/commonMain/kotlin/androidx/wear/compose/material3/MaterialTextSelectionColors.kt
@@ -15,13 +15,13 @@
  */
 package androidx.wear.compose.material3
 
+import androidx.compose.foundation.text.selection.TextSelectionColors
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.ui.graphics.luminance
 import androidx.compose.ui.graphics.takeOrElse
-import androidx.compose.foundation.text.selection.TextSelectionColors
 import kotlin.math.max
 import kotlin.math.min
 
diff --git a/wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt b/wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
index 68f68b5..655e7bc 100644
--- a/wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
+++ b/wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
@@ -25,8 +25,8 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.State
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.saveable.rememberSaveableStateHolder
 import androidx.compose.runtime.setValue
diff --git a/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt b/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
index 1a5e97a..95f6fbe 100644
--- a/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
+++ b/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
@@ -25,10 +25,10 @@
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.setValue
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.saveable.SaveableStateHolder
 import androidx.compose.runtime.saveable.rememberSaveableStateHolder
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalLifecycleOwner
 import androidx.lifecycle.Lifecycle
@@ -40,13 +40,13 @@
 import androidx.navigation.NavGraphBuilder
 import androidx.navigation.NavHostController
 import androidx.navigation.Navigator
-import androidx.navigation.createGraph
 import androidx.navigation.compose.LocalOwnersProvider
+import androidx.navigation.createGraph
 import androidx.navigation.get
-import androidx.wear.compose.material.SwipeToDismissValue
 import androidx.wear.compose.material.SwipeToDismissBox
 import androidx.wear.compose.material.SwipeToDismissBoxState
 import androidx.wear.compose.material.SwipeToDismissKeys
+import androidx.wear.compose.material.SwipeToDismissValue
 import androidx.wear.compose.material.edgeSwipeToDismiss
 import androidx.wear.compose.material.rememberSwipeToDismissBoxState
 
diff --git a/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt b/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt
index 6407471..42c64b5 100644
--- a/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt
+++ b/wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt
@@ -16,10 +16,10 @@
 
 package androidx.wear.compose.navigation
 
-import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
 import androidx.compose.runtime.State
+import androidx.compose.runtime.collectAsState
+import androidx.compose.runtime.remember
 import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavController
 import androidx.navigation.NavHostController
diff --git a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/FoundationDemos.kt b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/FoundationDemos.kt
index 00e8d98..c54950a 100644
--- a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/FoundationDemos.kt
+++ b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/FoundationDemos.kt
@@ -17,8 +17,8 @@
 package androidx.wear.compose.integration.demos
 
 import androidx.wear.compose.foundation.samples.CurvedAndNormalText
-import androidx.wear.compose.foundation.samples.CurvedBottomLayout
 import androidx.wear.compose.foundation.samples.CurvedBackground
+import androidx.wear.compose.foundation.samples.CurvedBottomLayout
 import androidx.wear.compose.foundation.samples.CurvedFixedSize
 import androidx.wear.compose.foundation.samples.CurvedFontWeight
 import androidx.wear.compose.foundation.samples.CurvedFonts
diff --git a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/MaterialDemos.kt b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/MaterialDemos.kt
index 45ecbf2..205da0d 100644
--- a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/MaterialDemos.kt
+++ b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/MaterialDemos.kt
@@ -36,9 +36,9 @@
 import androidx.wear.compose.material.samples.ButtonWithIcon
 import androidx.wear.compose.material.samples.ButtonWithText
 import androidx.wear.compose.material.samples.ChipWithIconAndLabel
-import androidx.wear.compose.material.samples.ChipWithIconAndLabelsAndOverlaidPlaceholder
 import androidx.wear.compose.material.samples.ChipWithIconAndLabelAndPlaceholders
 import androidx.wear.compose.material.samples.ChipWithIconAndLabels
+import androidx.wear.compose.material.samples.ChipWithIconAndLabelsAndOverlaidPlaceholder
 import androidx.wear.compose.material.samples.CircularProgressIndicatorFullscreenWithGap
 import androidx.wear.compose.material.samples.CircularProgressIndicatorWithAnimation
 import androidx.wear.compose.material.samples.CompactButtonWithIcon
diff --git a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToDismissDemoWithState.kt b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToDismissDemoWithState.kt
index 1f4bef8..2e61b3f 100644
--- a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToDismissDemoWithState.kt
+++ b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToDismissDemoWithState.kt
@@ -33,8 +33,8 @@
 import androidx.compose.ui.Modifier
 import androidx.wear.compose.material.Button
 import androidx.wear.compose.material.MaterialTheme
-import androidx.wear.compose.material.SwipeToDismissValue
 import androidx.wear.compose.material.SwipeToDismissBox
+import androidx.wear.compose.material.SwipeToDismissValue
 import androidx.wear.compose.material.Text
 import androidx.wear.compose.material.ToggleButton
 import androidx.wear.compose.material.rememberSwipeToDismissBoxState
diff --git a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToRevealDemo.kt b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToRevealDemo.kt
index e0f9d24..0d06716 100644
--- a/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToRevealDemo.kt
+++ b/wear/compose/integration-tests/demos/src/main/java/androidx/wear/compose/integration/demos/SwipeToRevealDemo.kt
@@ -47,21 +47,21 @@
 import androidx.wear.compose.foundation.ExpandableState
 import androidx.wear.compose.foundation.ExperimentalWearFoundationApi
 import androidx.wear.compose.foundation.RevealScope
+import androidx.wear.compose.foundation.RevealState
+import androidx.wear.compose.foundation.RevealValue
+import androidx.wear.compose.foundation.SwipeToReveal
+import androidx.wear.compose.foundation.createAnchors
 import androidx.wear.compose.foundation.expandableItem
 import androidx.wear.compose.foundation.fractionalPositionalThreshold
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
 import androidx.wear.compose.foundation.rememberExpandableState
+import androidx.wear.compose.foundation.rememberRevealState
 import androidx.wear.compose.material.AppCard
 import androidx.wear.compose.material.Chip
 import androidx.wear.compose.material.ChipDefaults
 import androidx.wear.compose.material.Icon
 import androidx.wear.compose.material.MaterialTheme
-import androidx.wear.compose.foundation.SwipeToReveal
-import androidx.wear.compose.foundation.RevealState
-import androidx.wear.compose.foundation.RevealValue
 import androidx.wear.compose.material.Text
-import androidx.wear.compose.foundation.createAnchors
-import androidx.wear.compose.foundation.rememberRevealState
 import kotlin.math.abs
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.delay
diff --git a/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/StartupActivity.kt b/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/StartupActivity.kt
index 315a00a..db764c8 100644
--- a/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/StartupActivity.kt
+++ b/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/StartupActivity.kt
@@ -16,8 +16,8 @@
 
 package androidx.wear.compose.integration.macrobenchmark.target
 
-import androidx.activity.ComponentActivity
 import android.os.Bundle
+import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.wear.compose.material.Text
 
diff --git a/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/SwipeActivity.kt b/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/SwipeActivity.kt
index 1b3ae2f..26990fc 100644
--- a/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/SwipeActivity.kt
+++ b/wear/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/wear/compose/integration/macrobenchmark/target/SwipeActivity.kt
@@ -16,8 +16,8 @@
 
 package androidx.wear.compose.integration.macrobenchmark.target
 
-import androidx.activity.ComponentActivity
 import android.os.Bundle
+import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Arrangement
@@ -29,8 +29,8 @@
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.semantics.contentDescription
 import androidx.compose.ui.semantics.semantics
-import androidx.wear.compose.material.SwipeToDismissValue
 import androidx.wear.compose.material.SwipeToDismissBox
+import androidx.wear.compose.material.SwipeToDismissValue
 import androidx.wear.compose.material.Text
 import androidx.wear.compose.material.rememberSwipeToDismissBoxState
 
diff --git a/wear/protolayout/protolayout-expression-pipeline/api/current.txt b/wear/protolayout/protolayout-expression-pipeline/api/current.txt
index 18e01b6..df7ffb0 100644
--- a/wear/protolayout/protolayout-expression-pipeline/api/current.txt
+++ b/wear/protolayout/protolayout-expression-pipeline/api/current.txt
@@ -24,17 +24,17 @@
   public static final class DynamicTypeEvaluator.Config {
     method public androidx.wear.protolayout.expression.pipeline.QuotaManager? getAnimationQuotaManager();
     method public androidx.wear.protolayout.expression.pipeline.QuotaManager? getDynamicTypesQuotaManager();
-    method public androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway? getSensorGateway();
+    method public java.util.Map<androidx.wear.protolayout.expression.PlatformDataKey<?>!,androidx.wear.protolayout.expression.pipeline.PlatformDataProvider!> getPlatformDataProviders();
     method public androidx.wear.protolayout.expression.pipeline.StateStore? getStateStore();
     method public androidx.wear.protolayout.expression.pipeline.TimeGateway? getTimeGateway();
   }
 
   public static final class DynamicTypeEvaluator.Config.Builder {
     ctor public DynamicTypeEvaluator.Config.Builder();
+    method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder addPlatformDataProvider(androidx.wear.protolayout.expression.pipeline.PlatformDataProvider, java.util.Set<androidx.wear.protolayout.expression.PlatformDataKey<?>!>);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config build();
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setAnimationQuotaManager(androidx.wear.protolayout.expression.pipeline.QuotaManager);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setDynamicTypesQuotaManager(androidx.wear.protolayout.expression.pipeline.QuotaManager);
-    method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setSensorGateway(androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setStateStore(androidx.wear.protolayout.expression.pipeline.StateStore);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setTimeGateway(androidx.wear.protolayout.expression.pipeline.TimeGateway);
   }
@@ -48,14 +48,24 @@
     method public void onInvalidated();
   }
 
+  public interface PlatformDataProvider {
+    method public void registerForData(java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.PlatformDataReceiver);
+    method public void unregisterForData();
+  }
+
+  public interface PlatformDataReceiver {
+    method public void onData(java.util.Map<androidx.wear.protolayout.expression.PlatformDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
+    method public void onInvalidated(java.util.Set<androidx.wear.protolayout.expression.PlatformDataKey<?>!>);
+  }
+
   public interface QuotaManager {
     method public void releaseQuota(int);
     method public boolean tryAcquireQuota(int);
   }
 
   public class StateStore {
-    method public static androidx.wear.protolayout.expression.pipeline.StateStore create(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!>);
-    method @UiThread public void setStateEntryValues(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!>);
+    method public static androidx.wear.protolayout.expression.pipeline.StateStore create(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
+    method @UiThread public void setAppStateEntryValues(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
     field public static final int MAX_STATE_ENTRY_COUNT = 100; // 0x64
   }
 
@@ -71,22 +81,3 @@
 
 }
 
-package androidx.wear.protolayout.expression.pipeline.sensor {
-
-  public interface SensorGateway {
-    method @UiThread public void registerSensorGatewayConsumer(int, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    method @UiThread public void registerSensorGatewayConsumer(int, java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    method @UiThread public void unregisterSensorGatewayConsumer(int, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    field @RequiresApi(android.os.Build.VERSION_CODES.Q) @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static final int SENSOR_DATA_TYPE_DAILY_STEP_COUNT = 1; // 0x1
-    field @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static final int SENSOR_DATA_TYPE_HEART_RATE = 0; // 0x0
-    field public static final int SENSOR_DATA_TYPE_INVALID = -1; // 0xffffffff
-  }
-
-  public static interface SensorGateway.Consumer {
-    method @AnyThread public void onData(double);
-    method @AnyThread public default void onInvalidated();
-    method @AnyThread public default void onPreUpdate();
-  }
-
-}
-
diff --git a/wear/protolayout/protolayout-expression-pipeline/api/public_plus_experimental_current.txt b/wear/protolayout/protolayout-expression-pipeline/api/public_plus_experimental_current.txt
index 18e01b6..df7ffb0 100644
--- a/wear/protolayout/protolayout-expression-pipeline/api/public_plus_experimental_current.txt
+++ b/wear/protolayout/protolayout-expression-pipeline/api/public_plus_experimental_current.txt
@@ -24,17 +24,17 @@
   public static final class DynamicTypeEvaluator.Config {
     method public androidx.wear.protolayout.expression.pipeline.QuotaManager? getAnimationQuotaManager();
     method public androidx.wear.protolayout.expression.pipeline.QuotaManager? getDynamicTypesQuotaManager();
-    method public androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway? getSensorGateway();
+    method public java.util.Map<androidx.wear.protolayout.expression.PlatformDataKey<?>!,androidx.wear.protolayout.expression.pipeline.PlatformDataProvider!> getPlatformDataProviders();
     method public androidx.wear.protolayout.expression.pipeline.StateStore? getStateStore();
     method public androidx.wear.protolayout.expression.pipeline.TimeGateway? getTimeGateway();
   }
 
   public static final class DynamicTypeEvaluator.Config.Builder {
     ctor public DynamicTypeEvaluator.Config.Builder();
+    method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder addPlatformDataProvider(androidx.wear.protolayout.expression.pipeline.PlatformDataProvider, java.util.Set<androidx.wear.protolayout.expression.PlatformDataKey<?>!>);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config build();
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setAnimationQuotaManager(androidx.wear.protolayout.expression.pipeline.QuotaManager);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setDynamicTypesQuotaManager(androidx.wear.protolayout.expression.pipeline.QuotaManager);
-    method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setSensorGateway(androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setStateStore(androidx.wear.protolayout.expression.pipeline.StateStore);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setTimeGateway(androidx.wear.protolayout.expression.pipeline.TimeGateway);
   }
@@ -48,14 +48,24 @@
     method public void onInvalidated();
   }
 
+  public interface PlatformDataProvider {
+    method public void registerForData(java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.PlatformDataReceiver);
+    method public void unregisterForData();
+  }
+
+  public interface PlatformDataReceiver {
+    method public void onData(java.util.Map<androidx.wear.protolayout.expression.PlatformDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
+    method public void onInvalidated(java.util.Set<androidx.wear.protolayout.expression.PlatformDataKey<?>!>);
+  }
+
   public interface QuotaManager {
     method public void releaseQuota(int);
     method public boolean tryAcquireQuota(int);
   }
 
   public class StateStore {
-    method public static androidx.wear.protolayout.expression.pipeline.StateStore create(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!>);
-    method @UiThread public void setStateEntryValues(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!>);
+    method public static androidx.wear.protolayout.expression.pipeline.StateStore create(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
+    method @UiThread public void setAppStateEntryValues(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
     field public static final int MAX_STATE_ENTRY_COUNT = 100; // 0x64
   }
 
@@ -71,22 +81,3 @@
 
 }
 
-package androidx.wear.protolayout.expression.pipeline.sensor {
-
-  public interface SensorGateway {
-    method @UiThread public void registerSensorGatewayConsumer(int, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    method @UiThread public void registerSensorGatewayConsumer(int, java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    method @UiThread public void unregisterSensorGatewayConsumer(int, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    field @RequiresApi(android.os.Build.VERSION_CODES.Q) @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static final int SENSOR_DATA_TYPE_DAILY_STEP_COUNT = 1; // 0x1
-    field @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static final int SENSOR_DATA_TYPE_HEART_RATE = 0; // 0x0
-    field public static final int SENSOR_DATA_TYPE_INVALID = -1; // 0xffffffff
-  }
-
-  public static interface SensorGateway.Consumer {
-    method @AnyThread public void onData(double);
-    method @AnyThread public default void onInvalidated();
-    method @AnyThread public default void onPreUpdate();
-  }
-
-}
-
diff --git a/wear/protolayout/protolayout-expression-pipeline/api/restricted_current.txt b/wear/protolayout/protolayout-expression-pipeline/api/restricted_current.txt
index 6dd8857..8d2f955 100644
--- a/wear/protolayout/protolayout-expression-pipeline/api/restricted_current.txt
+++ b/wear/protolayout/protolayout-expression-pipeline/api/restricted_current.txt
@@ -24,17 +24,17 @@
   public static final class DynamicTypeEvaluator.Config {
     method public androidx.wear.protolayout.expression.pipeline.QuotaManager? getAnimationQuotaManager();
     method public androidx.wear.protolayout.expression.pipeline.QuotaManager? getDynamicTypesQuotaManager();
-    method public androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway? getSensorGateway();
+    method public java.util.Map<androidx.wear.protolayout.expression.PlatformDataKey<?>!,androidx.wear.protolayout.expression.pipeline.PlatformDataProvider!> getPlatformDataProviders();
     method public androidx.wear.protolayout.expression.pipeline.StateStore? getStateStore();
     method public androidx.wear.protolayout.expression.pipeline.TimeGateway? getTimeGateway();
   }
 
   public static final class DynamicTypeEvaluator.Config.Builder {
     ctor public DynamicTypeEvaluator.Config.Builder();
+    method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder addPlatformDataProvider(androidx.wear.protolayout.expression.pipeline.PlatformDataProvider, java.util.Set<androidx.wear.protolayout.expression.PlatformDataKey<?>!>);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config build();
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setAnimationQuotaManager(androidx.wear.protolayout.expression.pipeline.QuotaManager);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setDynamicTypesQuotaManager(androidx.wear.protolayout.expression.pipeline.QuotaManager);
-    method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setSensorGateway(androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setStateStore(androidx.wear.protolayout.expression.pipeline.StateStore);
     method public androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator.Config.Builder setTimeGateway(androidx.wear.protolayout.expression.pipeline.TimeGateway);
   }
@@ -48,16 +48,32 @@
     method public void onInvalidated();
   }
 
+  public interface PlatformDataProvider {
+    method public void registerForData(java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.PlatformDataReceiver);
+    method public void unregisterForData();
+  }
+
+  public interface PlatformDataReceiver {
+    method public void onData(java.util.Map<androidx.wear.protolayout.expression.PlatformDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
+    method public void onInvalidated(java.util.Set<androidx.wear.protolayout.expression.PlatformDataKey<?>!>);
+  }
+
   public interface QuotaManager {
     method public void releaseQuota(int);
     method public boolean tryAcquireQuota(int);
   }
 
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SensorGatewaySingleDataProvider implements androidx.wear.protolayout.expression.pipeline.PlatformDataProvider {
+    ctor public SensorGatewaySingleDataProvider(androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway, androidx.wear.protolayout.expression.PlatformDataKey<?>);
+    method public void registerForData(java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.PlatformDataReceiver);
+    method public void unregisterForData();
+  }
+
   public class StateStore {
-    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public StateStore(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue!>);
-    method public static androidx.wear.protolayout.expression.pipeline.StateStore create(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!>);
-    method @UiThread public void setStateEntryValues(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!>);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @UiThread public void setStateEntryValuesProto(java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue!>);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public StateStore(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue!>);
+    method public static androidx.wear.protolayout.expression.pipeline.StateStore create(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
+    method @UiThread public void setAppStateEntryValues(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!>);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @UiThread public void setAppStateEntryValuesProto(java.util.Map<androidx.wear.protolayout.expression.AppDataKey<?>!,androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue!>);
     field public static final int MAX_STATE_ENTRY_COUNT = 100; // 0x64
   }
 
@@ -75,15 +91,12 @@
 
 package androidx.wear.protolayout.expression.pipeline.sensor {
 
-  public interface SensorGateway {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface SensorGateway {
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void disableUpdates();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void enableUpdates();
-    method @UiThread public void registerSensorGatewayConsumer(int, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    method @UiThread public void registerSensorGatewayConsumer(int, java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    method @UiThread public void unregisterSensorGatewayConsumer(int, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
-    field @RequiresApi(android.os.Build.VERSION_CODES.Q) @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static final int SENSOR_DATA_TYPE_DAILY_STEP_COUNT = 1; // 0x1
-    field @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static final int SENSOR_DATA_TYPE_HEART_RATE = 0; // 0x0
-    field public static final int SENSOR_DATA_TYPE_INVALID = -1; // 0xffffffff
+    method @UiThread public void registerSensorGatewayConsumer(androidx.wear.protolayout.expression.PlatformDataKey<?>, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
+    method @UiThread public void registerSensorGatewayConsumer(androidx.wear.protolayout.expression.PlatformDataKey<?>, java.util.concurrent.Executor, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
+    method @UiThread public void unregisterSensorGatewayConsumer(androidx.wear.protolayout.expression.PlatformDataKey<?>, androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.Consumer);
   }
 
   public static interface SensorGateway.Consumer {
diff --git a/wear/protolayout/protolayout-expression-pipeline/build.gradle b/wear/protolayout/protolayout-expression-pipeline/build.gradle
index d9db9ac..4f92627 100644
--- a/wear/protolayout/protolayout-expression-pipeline/build.gradle
+++ b/wear/protolayout/protolayout-expression-pipeline/build.gradle
@@ -50,7 +50,7 @@
 }
 
 androidx {
-    name = "ProtoLayout Dynamic Expression Evaluation Pipeline"
+    name = "ProtoLayout Expression Pipeline"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Evaluate dynamic expressions."
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java
index c95560c..1651688 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java
@@ -19,6 +19,7 @@
 import android.util.Log;
 
 import androidx.annotation.UiThread;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool;
 import androidx.wear.protolayout.expression.proto.DynamicProto;
 import androidx.wear.protolayout.expression.proto.DynamicProto.ComparisonFloatOp;
 import androidx.wear.protolayout.expression.proto.DynamicProto.ComparisonInt32Op;
@@ -65,7 +66,8 @@
                 DynamicTypeValueReceiverWithPreUpdate<Boolean> downstream) {
             super(
                     stateStore,
-                    protoNode.getSourceKey(),
+                    StateSourceNode.<DynamicBool>createKey(
+                            protoNode.getSourceNamespace(), protoNode.getSourceKey()),
                     se -> se.getBoolVal().getValue(),
                     downstream);
         }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/ColorNodes.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/ColorNodes.java
index 315eaf7..ed1d027 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/ColorNodes.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/ColorNodes.java
@@ -19,6 +19,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor;
 import androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec;
 import androidx.wear.protolayout.expression.proto.DynamicProto.AnimatableFixedColor;
 import androidx.wear.protolayout.expression.proto.DynamicProto.StateColorSource;
@@ -64,7 +65,8 @@
                 DynamicTypeValueReceiverWithPreUpdate<Integer> downstream) {
             super(
                     stateStore,
-                    protoNode.getSourceKey(),
+                    StateSourceNode.<DynamicColor>createKey(
+                            protoNode.getSourceNamespace(), protoNode.getSourceKey()),
                     se -> se.getColorVal().getArgb(),
                     downstream);
         }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/DynamicTypeEvaluator.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/DynamicTypeEvaluator.java
index 3deccea..a247482 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/DynamicTypeEvaluator.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/DynamicTypeEvaluator.java
@@ -18,6 +18,7 @@
 
 import static java.util.Collections.emptyMap;
 
+import android.annotation.SuppressLint;
 import android.icu.util.ULocale;
 import android.os.Handler;
 import android.os.Looper;
@@ -26,7 +27,9 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
+import androidx.collection.ArrayMap;
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.PlatformDataKey;
 import androidx.wear.protolayout.expression.pipeline.BoolNodes.ComparisonFloatNode;
 import androidx.wear.protolayout.expression.pipeline.BoolNodes.ComparisonInt32Node;
 import androidx.wear.protolayout.expression.pipeline.BoolNodes.FixedBoolNode;
@@ -53,7 +56,7 @@
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.FixedInt32Node;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.FloatToInt32Node;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.GetDurationPartOpNode;
-import androidx.wear.protolayout.expression.pipeline.Int32Nodes.PlatformInt32SourceNode;
+import androidx.wear.protolayout.expression.pipeline.Int32Nodes.LegacyPlatformInt32SourceNode;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.StateInt32SourceNode;
 import androidx.wear.protolayout.expression.pipeline.StringNodes.FixedStringNode;
 import androidx.wear.protolayout.expression.pipeline.StringNodes.FloatFormatNode;
@@ -82,6 +85,8 @@
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 /**
@@ -133,27 +138,28 @@
     @NonNull private final QuotaManager mAnimationQuotaManager;
     @NonNull private final QuotaManager mDynamicTypesQuotaManager;
     @NonNull private final EpochTimePlatformDataSource mTimeDataSource;
-    @Nullable private final SensorGatewayPlatformDataSource mSensorGatewayDataSource;
 
     /** Configuration for creating {@link DynamicTypeEvaluator}. */
     public static final class Config {
         @Nullable private final StateStore mStateStore;
         @Nullable private final QuotaManager mAnimationQuotaManager;
         @Nullable private final TimeGateway mTimeGateway;
-        @Nullable private final SensorGateway mSensorGateway;
         @Nullable private final QuotaManager mDynamicTypesQuotaManager;
+        @NonNull private final Map<PlatformDataKey<?>, PlatformDataProvider>
+                mSourceKeyToDataProviders = new ArrayMap<>();
 
         Config(
                 @Nullable StateStore stateStore,
                 @Nullable QuotaManager animationQuotaManager,
                 @Nullable QuotaManager dynamicTypesQuotaManager,
                 @Nullable TimeGateway timeGateway,
-                @Nullable SensorGateway sensorGateway) {
+                @NonNull Map<PlatformDataKey<?>, PlatformDataProvider>
+                        sourceKeyToDataProviders) {
             this.mStateStore = stateStore;
             this.mAnimationQuotaManager = animationQuotaManager;
             this.mTimeGateway = timeGateway;
-            this.mSensorGateway = sensorGateway;
             this.mDynamicTypesQuotaManager = dynamicTypesQuotaManager;
+            this.mSourceKeyToDataProviders.putAll(sourceKeyToDataProviders);
         }
 
         /** Builds a {@link DynamicTypeEvaluator.Config}. */
@@ -162,8 +168,8 @@
             @Nullable private QuotaManager mAnimationQuotaManager = null;
             @Nullable private QuotaManager mDynamicTypesQuotaManager;
             @Nullable private TimeGateway mTimeGateway = null;
-
-            @Nullable private SensorGateway mSensorGateway = null;
+            @NonNull private final Map<PlatformDataKey<?>, PlatformDataProvider>
+                    mSourceKeyToDataProviders = new ArrayMap<>();
 
             /**
              * Sets the state store that will be used for dereferencing the state keys in the
@@ -216,14 +222,34 @@
             }
 
             /**
-             * Sets the gateway used for sensor data.
+             * Add a platform data provider and specify the keys it can provide dynamic data for.
              *
-             * <p>If not set, sensor data will not be available (sensor bindings will trigger {@link
-             * DynamicTypeValueReceiver#onInvalidated()}).
+             * <p> The provider must support at least one key. If the provider supports multiple
+             * keys, they should not be independent, as their values should always update together.
+             * One data key must not have multiple providers, or an exception will be thrown.
+             *
+             * @throws IllegalArgumentException If a PlatformDataProvider supports an empty key
+             * set or if a key has multiple data providers.
              */
+            @SuppressLint("MissingGetterMatchingBuilder")
             @NonNull
-            public Builder setSensorGateway(@NonNull SensorGateway value) {
-                mSensorGateway = value;
+            public Builder addPlatformDataProvider(
+                    @NonNull PlatformDataProvider platformDataProvider,
+                    @NonNull Set<PlatformDataKey<?>> supportedDataKeys
+            ) {
+                if (supportedDataKeys.isEmpty()) {
+                    throw new IllegalArgumentException(
+                            "The PlatformDataProvider must support at least one key");
+                }
+                for (PlatformDataKey<?> dataKey : supportedDataKeys) {
+                    // Throws exception when one data key has multiple providers.
+                    if (mSourceKeyToDataProviders.containsKey(dataKey)) {
+                        throw new IllegalArgumentException(String.format(
+                                "Multiple data providers for PlatformDataKey (%s)", dataKey));
+                    }
+                    mSourceKeyToDataProviders.put(dataKey, platformDataProvider);
+                }
+
                 return this;
             }
 
@@ -234,7 +260,7 @@
                         mAnimationQuotaManager,
                         mDynamicTypesQuotaManager,
                         mTimeGateway,
-                        mSensorGateway);
+                        mSourceKeyToDataProviders);
             }
         }
 
@@ -269,15 +295,6 @@
         }
 
         /**
-         * Gets the gateway used for sensor data, or {@code null} if sensor data is unavailable
-         * (sensor bindings will trigger {@link DynamicTypeValueReceiver#onInvalidated()}).
-         */
-        @Nullable
-        public SensorGateway getSensorGateway() {
-            return mSensorGateway;
-        }
-
-        /**
          * Gets the gateway used for time data, or {@code null} if a default 1hz {@link TimeGateway}
          * that utilizes a main-thread {@code Handler} to trigger is used.
          */
@@ -285,6 +302,15 @@
         public TimeGateway getTimeGateway() {
             return mTimeGateway;
         }
+
+        /**
+         * Returns any available mapping between source key and its data provider.
+         */
+        @NonNull
+        public Map<PlatformDataKey<?>, PlatformDataProvider> getPlatformDataProviders() {
+            return new ArrayMap<>(
+                    (ArrayMap<PlatformDataKey<?>, PlatformDataProvider>) mSourceKeyToDataProviders);
+        }
     }
 
     /** Constructs a {@link DynamicTypeEvaluator}. */
@@ -307,12 +333,8 @@
             ((TimeGatewayImpl) timeGateway).enableUpdates();
         }
         this.mTimeDataSource = new EpochTimePlatformDataSource(uiExecutor, timeGateway);
-        if (config.getSensorGateway() != null) {
-            this.mSensorGatewayDataSource =
-                    new SensorGatewayPlatformDataSource(uiExecutor, config.getSensorGateway());
-        } else {
-            this.mSensorGatewayDataSource = null;
-        }
+
+        this.mStateStore.putAllPlatformProviders(config.getPlatformDataProviders());
     }
 
     /**
@@ -528,10 +550,8 @@
                 }
             case STATE_SOURCE:
                 {
-                    node =
-                            new StateStringNode(
-                                    mStateStore, stringSource.getStateSource(), consumer);
-                    break;
+                   node = new StateStringNode(mStateStore, stringSource.getStateSource(), consumer);
+                   break;
                 }
             case CONDITIONAL_OP:
                 {
@@ -595,13 +615,13 @@
             case FIXED:
                 node = new FixedInt32Node(int32Source.getFixed(), consumer);
                 break;
-            case PLATFORM_SOURCE:
-                node =
-                        new PlatformInt32SourceNode(
-                                int32Source.getPlatformSource(),
-                                mSensorGatewayDataSource,
-                                consumer);
+            case PLATFORM_SOURCE: {
+                node = new LegacyPlatformInt32SourceNode(
+                        mStateStore,
+                        int32Source.getPlatformSource(),
+                        consumer);
                 break;
+            }
             case ARITHMETIC_OPERATION:
                 {
                     ArithmeticInt32Node arithmeticNode =
@@ -621,9 +641,8 @@
                 }
             case STATE_SOURCE:
                 {
-                    node =
-                            new StateInt32SourceNode(
-                                    mStateStore, int32Source.getStateSource(), consumer);
+                    node = new StateInt32SourceNode(
+                            mStateStore, int32Source.getStateSource(), consumer);
                     break;
                 }
             case CONDITIONAL_OP:
@@ -819,9 +838,8 @@
                 node = new FixedFloatNode(floatSource.getFixed(), consumer);
                 break;
             case STATE_SOURCE:
-                node =
-                        new StateFloatSourceNode(
-                                mStateStore, floatSource.getStateSource(), consumer);
+                node = new StateFloatSourceNode(
+                        mStateStore, floatSource.getStateSource(), consumer);
                 break;
             case ARITHMETIC_OPERATION:
                 {
@@ -920,9 +938,8 @@
                 node = new FixedColorNode(colorSource.getFixed(), consumer);
                 break;
             case STATE_SOURCE:
-                node =
-                        new StateColorSourceNode(
-                                mStateStore, colorSource.getStateSource(), consumer);
+                node = new StateColorSourceNode(
+                        mStateStore, colorSource.getStateSource(), consumer);
                 break;
             case ANIMATABLE_FIXED:
                 // We don't have to check if enableAnimations is true, because if it's false and
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/FloatNodes.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/FloatNodes.java
index 71ddbd09..9ebd1b1 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/FloatNodes.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/FloatNodes.java
@@ -21,6 +21,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat;
 import androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec;
 import androidx.wear.protolayout.expression.proto.DynamicProto.AnimatableFixedFloat;
 import androidx.wear.protolayout.expression.proto.DynamicProto.ArithmeticFloatOp;
@@ -72,7 +73,8 @@
                 DynamicTypeValueReceiverWithPreUpdate<Float> downstream) {
             super(
                     stateStore,
-                    protoNode.getSourceKey(),
+                    StateSourceNode.<DynamicFloat>createKey(
+                            protoNode.getSourceNamespace(), protoNode.getSourceKey()),
                     se -> se.getFloatVal().getValue(),
                     downstream);
         }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/Int32Nodes.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/Int32Nodes.java
index d542928..5893701 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/Int32Nodes.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/Int32Nodes.java
@@ -23,6 +23,10 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32;
+import androidx.wear.protolayout.expression.DynamicDataKey;
+import androidx.wear.protolayout.expression.PlatformHealthSources;
+import androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway;
 import androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec;
 import androidx.wear.protolayout.expression.proto.DynamicProto.AnimatableFixedInt32;
 import androidx.wear.protolayout.expression.proto.DynamicProto.ArithmeticInt32Op;
@@ -70,61 +74,31 @@
     }
 
     /** Dynamic integer node that gets value from the platform source. */
-    static class PlatformInt32SourceNode implements DynamicDataSourceNode<Integer> {
-        private static final String TAG = "PlatformInt32SourceNode";
+    static class LegacyPlatformInt32SourceNode extends StateSourceNode<Integer> {
 
-        @Nullable private final SensorGatewayPlatformDataSource mSensorGatewaySource;
-        private final PlatformInt32SourceType mPlatformSourceType;
-        private final DynamicTypeValueReceiverWithPreUpdate<Integer> mDownstream;
-
-        PlatformInt32SourceNode(
+        LegacyPlatformInt32SourceNode(
+                StateStore stateStore,
                 PlatformInt32Source protoNode,
-                @Nullable SensorGatewayPlatformDataSource sensorGatewaySource,
                 DynamicTypeValueReceiverWithPreUpdate<Integer> downstream) {
-            this.mPlatformSourceType = protoNode.getSourceType();
-            if (mPlatformSourceType
-                            == PlatformInt32SourceType.PLATFORM_INT32_SOURCE_TYPE_CURRENT_HEART_RATE
-                    || mPlatformSourceType
-                            == PlatformInt32SourceType
-                                    .PLATFORM_INT32_SOURCE_TYPE_DAILY_STEP_COUNT) {
-                this.mSensorGatewaySource = sensorGatewaySource;
-            } else {
-                this.mSensorGatewaySource = null;
-                Log.w(TAG, "Unknown PlatformInt32SourceType: " + mPlatformSourceType);
-            }
-            this.mDownstream = downstream;
+            super(
+                    stateStore,
+                    getDataKey(protoNode.getSourceType()),
+                    se -> se.getInt32Val().getValue(),
+                    downstream);
         }
 
-        @Override
-        @UiThread
-        public void preInit() {
-            if (mSensorGatewaySource != null) {
-                mDownstream.onPreUpdate();
+        @NonNull
+        private static DynamicDataKey<?> getDataKey(PlatformInt32SourceType type) {
+            if (type == PlatformInt32SourceType.PLATFORM_INT32_SOURCE_TYPE_CURRENT_HEART_RATE) {
+                return PlatformHealthSources.HEART_RATE_BPM;
             }
-        }
 
-        @Override
-        @UiThread
-        public void init() {
-            if (mSensorGatewaySource != null) {
-                try {
-                    mSensorGatewaySource.registerForData(mPlatformSourceType, mDownstream);
-                } catch (SecurityException e) {
-                    // Package does not have the permission to request the health data.
-                    Log.w(TAG, e.getMessage(), e);
-                    mDownstream.onInvalidated();
-                }
-            } else {
-                mDownstream.onInvalidated();
+            if (type == PlatformInt32SourceType.PLATFORM_INT32_SOURCE_TYPE_DAILY_STEP_COUNT) {
+                return PlatformHealthSources.DAILY_STEPS;
             }
-        }
 
-        @Override
-        @UiThread
-        public void destroy() {
-            if (mSensorGatewaySource != null) {
-                mSensorGatewaySource.unregisterForData(mPlatformSourceType, mDownstream);
-            }
+            throw new IllegalArgumentException(
+                    "Unknown DynamicInt32 platform source type: " + type);
         }
     }
 
@@ -175,7 +149,8 @@
                 DynamicTypeValueReceiverWithPreUpdate<Integer> downstream) {
             super(
                     stateStore,
-                    protoNode.getSourceKey(),
+                    StateSourceNode.<DynamicInt32>createKey(
+                            protoNode.getSourceNamespace(), protoNode.getSourceKey()),
                     se -> se.getInt32Val().getValue(),
                     downstream);
         }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/PlatformDataProvider.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/PlatformDataProvider.java
new file mode 100644
index 0000000..6380561
--- /dev/null
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/PlatformDataProvider.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression.pipeline;
+
+import androidx.annotation.NonNull;
+import androidx.wear.protolayout.expression.PlatformDataKey;
+
+import java.util.Map;
+import java.util.concurrent.Executor;
+
+/**
+ * This interface is used by platform data providers to yield dynamic data for their supported data
+ * keys.
+ *
+ * <p> It's up to the implementations to check if the expression provider has the required
+ * permission before sending data with {@link PlatformDataReceiver#onData(Map)} )}. If a required
+ * permission is not granted or is revoked they should stop sending more data and call
+ * {@link DynamicTypeValueReceiver#onInvalidated()} instead.
+ */
+public interface PlatformDataProvider {
+    /**
+     * Registers a callback for receiving the platform data from this provider.
+     *
+     * <p> The implementation should periodically send the dynamic data values for the set of
+     * {@link PlatformDataKey}s specified when registering this {@link PlatformDataProvider} in
+     * {@link DynamicTypeEvaluator.Config.Builder#addPlatformDataProvider}
+     */
+    void registerForData(@NonNull Executor executor, @NonNull PlatformDataReceiver callback);
+
+    /**
+     * Unregister from the provider.
+     */
+    void unregisterForData();
+}
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/PlatformDataReceiver.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/PlatformDataReceiver.java
new file mode 100644
index 0000000..f50e2a2
--- /dev/null
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/PlatformDataReceiver.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression.pipeline;
+
+import androidx.annotation.NonNull;
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue;
+import androidx.wear.protolayout.expression.PlatformDataKey;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Callback for receiving a PlatformDataProvider's new data.
+ */
+public interface PlatformDataReceiver {
+    /**
+     * Called when the registered data provider is sending new values.
+     */
+    void onData(@NonNull Map<PlatformDataKey<?>, DynamicDataValue> newData);
+
+    /** Called when the data provider has an invalid result. */
+    void onInvalidated(@NonNull Set<PlatformDataKey<?>> keys);
+}
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/SensorGatewayPlatformDataSource.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/SensorGatewayPlatformDataSource.java
deleted file mode 100644
index 9297ea7..0000000
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/SensorGatewayPlatformDataSource.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.wear.protolayout.expression.pipeline;
-
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-
-import androidx.annotation.DoNotInline;
-import androidx.annotation.RequiresApi;
-import androidx.collection.ArrayMap;
-import androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway;
-import androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway.SensorDataType;
-import androidx.wear.protolayout.expression.proto.DynamicProto.PlatformInt32SourceType;
-
-import java.util.Map;
-import java.util.concurrent.Executor;
-
-/** Utility for sensor data source. */
-class SensorGatewayPlatformDataSource {
-    private static final String TAG = "SensorGtwPltDataSource";
-    final Executor mUiExecutor;
-    private final SensorGateway mSensorGateway;
-    private final Map<
-            DynamicTypeValueReceiverWithPreUpdate<Integer>, SensorGateway.Consumer>
-            mCallbackToRegisteredSensorConsumer = new ArrayMap<>();
-
-    SensorGatewayPlatformDataSource(Executor uiExecutor, SensorGateway sensorGateway) {
-        this.mUiExecutor = uiExecutor;
-        this.mSensorGateway = sensorGateway;
-    }
-
-    @SensorDataType
-    private static int mapSensorPlatformSource(PlatformInt32SourceType platformSource) {
-        switch (platformSource) {
-            case PLATFORM_INT32_SOURCE_TYPE_CURRENT_HEART_RATE:
-                return SensorGateway.SENSOR_DATA_TYPE_HEART_RATE;
-            case PLATFORM_INT32_SOURCE_TYPE_DAILY_STEP_COUNT:
-                if (VERSION.SDK_INT >= VERSION_CODES.Q) {
-                    return Api29Impl.getSensorDataTypeDailyStepCount();
-                } else {
-                    return SensorGateway.SENSOR_DATA_TYPE_INVALID;
-                }
-            default:
-                throw new IllegalArgumentException("Unknown PlatformSourceType");
-        }
-    }
-
-    @SuppressWarnings("ExecutorTaskName")
-    public void registerForData(
-            PlatformInt32SourceType sourceType,
-            DynamicTypeValueReceiverWithPreUpdate<Integer> callback) {
-        @SensorDataType int sensorDataType = mapSensorPlatformSource(sourceType);
-        SensorGateway.Consumer sensorConsumer =
-                new SensorGateway.Consumer() {
-                    @Override
-                    public void onPreUpdate() {
-                        mUiExecutor.execute(callback::onPreUpdate);
-                    }
-
-                    @Override
-                    public void onData(double value) {
-                        mUiExecutor.execute(() -> callback.onData((int) value));
-                    }
-
-                    @Override
-                    public void onInvalidated() {
-                        mUiExecutor.execute(callback::onInvalidated);
-                    }
-                };
-        mCallbackToRegisteredSensorConsumer.put(callback, sensorConsumer);
-        mSensorGateway.registerSensorGatewayConsumer(sensorDataType, sensorConsumer);
-    }
-
-    public void unregisterForData(
-            PlatformInt32SourceType sourceType,
-            DynamicTypeValueReceiverWithPreUpdate<Integer> consumer) {
-        @SensorDataType int sensorDataType = mapSensorPlatformSource(sourceType);
-        SensorGateway.Consumer sensorConsumer = mCallbackToRegisteredSensorConsumer.get(consumer);
-        if (sensorConsumer != null) {
-            mSensorGateway.unregisterSensorGatewayConsumer(sensorDataType, sensorConsumer);
-        }
-    }
-
-    @RequiresApi(VERSION_CODES.Q)
-    private static class Api29Impl {
-        @DoNotInline
-        static int getSensorDataTypeDailyStepCount() {
-            return SensorGateway.SENSOR_DATA_TYPE_DAILY_STEP_COUNT;
-        }
-    }
-}
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/SensorGatewaySingleDataProvider.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/SensorGatewaySingleDataProvider.java
new file mode 100644
index 0000000..ee1671e
--- /dev/null
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/SensorGatewaySingleDataProvider.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression.pipeline;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.RestrictTo.Scope;
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue;
+import androidx.wear.protolayout.expression.PlatformDataKey;
+import androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.Executor;
+
+/** This provider provides sensor data as state value. */
+@RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
+public class SensorGatewaySingleDataProvider implements PlatformDataProvider {
+    @NonNull private final SensorGateway mSensorGateway;
+    @NonNull final PlatformDataKey<?> mSupportedKey;
+    @Nullable private SensorGateway.Consumer mSensorGatewayConsumer = null;
+
+    public SensorGatewaySingleDataProvider(
+            @NonNull SensorGateway sensorGateway,
+            @NonNull PlatformDataKey<?> supportedKey
+    ) {
+        this.mSensorGateway = sensorGateway;
+        this.mSupportedKey = supportedKey;
+    }
+
+    @Override
+    @SuppressWarnings("HiddenTypeParameters")
+    public void registerForData(
+            @NonNull Executor executor, @NonNull PlatformDataReceiver callback) {
+        SensorGateway.Consumer sensorConsumer =
+                new SensorGateway.Consumer() {
+                    @Override
+                    public void onData(double value) {
+                        executor.execute(() -> callback.onData(
+                                Map.of(mSupportedKey, DynamicDataValue.fromFloat((float) value)))
+                        );
+                    }
+
+                    @Override
+                    public void onInvalidated() {
+                        executor.execute(() -> callback.onInvalidated(
+                                Collections.singleton(mSupportedKey)));
+                    }
+                };
+        mSensorGatewayConsumer = sensorConsumer;
+        mSensorGateway.registerSensorGatewayConsumer(mSupportedKey, sensorConsumer);
+    }
+
+    @Override
+    public void unregisterForData() {
+        if (mSensorGatewayConsumer != null) {
+            mSensorGateway.unregisterSensorGatewayConsumer(mSupportedKey, mSensorGatewayConsumer);
+            mSensorGatewayConsumer = null;
+        }
+    }
+}
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateSourceNode.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateSourceNode.java
index 3645fef..1cd0634 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateSourceNode.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateSourceNode.java
@@ -18,25 +18,29 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.UiThread;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicType;
+import androidx.wear.protolayout.expression.DynamicDataKey;
+import androidx.wear.protolayout.expression.PlatformDataKey;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 
 import java.util.function.Function;
 
 class StateSourceNode<T>
         implements DynamicDataSourceNode<T>,
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> {
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> {
     private final StateStore mStateStore;
-    private final String mBindKey;
-    private final Function<StateEntryValue, T> mStateExtractor;
+    private final DynamicDataKey<?> mKey;
+    private final Function<DynamicDataValue, T> mStateExtractor;
     private final DynamicTypeValueReceiverWithPreUpdate<T> mDownstream;
 
     StateSourceNode(
             StateStore stateStore,
-            String bindKey,
-            Function<StateEntryValue, T> stateExtractor,
+            DynamicDataKey<?> key,
+            Function<DynamicDataValue, T> stateExtractor,
             DynamicTypeValueReceiverWithPreUpdate<T> downstream) {
         this.mStateStore = stateStore;
-        this.mBindKey = bindKey;
+        this.mKey = key;
         this.mStateExtractor = stateExtractor;
         this.mDownstream = downstream;
     }
@@ -50,8 +54,8 @@
     @Override
     @UiThread
     public void init() {
-        mStateStore.registerCallback(mBindKey, this);
-        StateEntryValue item = mStateStore.getStateEntryValuesProto(mBindKey);
+        mStateStore.registerCallback(mKey, this);
+        DynamicDataValue item = mStateStore.getDynamicDataValuesProto(mKey);
 
         if (item != null) {
             this.onData(item);
@@ -63,7 +67,7 @@
     @Override
     @UiThread
     public void destroy() {
-        mStateStore.unregisterCallback(mBindKey, this);
+        mStateStore.unregisterCallback(mKey, this);
     }
 
     @Override
@@ -72,7 +76,7 @@
     }
 
     @Override
-    public void onData(@NonNull StateEntryValue newData) {
+    public void onData(@NonNull DynamicDataValue newData) {
         T actualValue = mStateExtractor.apply(newData);
         mDownstream.onData(actualValue);
     }
@@ -81,4 +85,13 @@
     public void onInvalidated() {
         mDownstream.onInvalidated();
     }
+
+    @NonNull
+    static <T extends DynamicType> DynamicDataKey<T> createKey(
+           @NonNull String namespace, @NonNull String key) {
+        if (namespace.isEmpty()) {
+            return new AppDataKey<T>(key);
+        }
+        return new PlatformDataKey<T>(namespace, key);
+    }
 }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateStore.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateStore.java
index f722bbb..c42ba8f 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateStore.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StateStore.java
@@ -19,6 +19,8 @@
 import static java.util.stream.Collectors.toMap;
 
 import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Looper;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -26,13 +28,17 @@
 import androidx.annotation.UiThread;
 import androidx.collection.ArrayMap;
 import androidx.collection.ArraySet;
-import androidx.wear.protolayout.expression.StateEntryBuilders;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicDataBuilders;
+import androidx.wear.protolayout.expression.DynamicDataKey;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
+import androidx.wear.protolayout.expression.PlatformDataKey;
 
 import java.util.Collections;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.concurrent.Executor;
 import java.util.stream.Stream;
 
 /**
@@ -52,12 +58,29 @@
      */
     @SuppressLint("MinMaxConstant")
     public static final int MAX_STATE_ENTRY_COUNT = 100;
-    @NonNull private final Map<String, StateEntryValue> mCurrentState = new ArrayMap<>();
+
+    private final Executor mUiExecutor;
+    @NonNull private final Map<AppDataKey<?>, DynamicDataValue> mCurrentAppState
+            = new ArrayMap<>();
 
     @NonNull
-    private final Map<String, Set<DynamicTypeValueReceiverWithPreUpdate<StateEntryValue>>>
+    private final Map<PlatformDataKey<?>, DynamicDataValue> mCurrentPlatformData
+            = new ArrayMap<>();
+
+    @NonNull
+    private final
+    Map<DynamicDataKey<?>,
+            Set<DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue>>>
             mRegisteredCallbacks = new ArrayMap<>();
 
+    @NonNull
+    private final Map<PlatformDataKey<?>, PlatformDataProvider>
+            mSourceKeyToDataProviders = new ArrayMap<>();
+
+    @NonNull
+    private final Map<PlatformDataProvider, Integer> mProviderToRegisteredKeyCount
+            = new ArrayMap<>();
+
     /**
      * Creates a {@link StateStore}.
      *
@@ -66,20 +89,28 @@
      */
     @NonNull
     public static StateStore create(
-            @NonNull Map<String, StateEntryBuilders.StateEntryValue> initialState) {
+            @NonNull Map<AppDataKey<?>, DynamicDataBuilders.DynamicDataValue>
+                    initialState) {
         return new StateStore(toProto(initialState));
     }
 
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
-    public StateStore(@NonNull Map<String, StateEntryValue> initialState) {
+    public StateStore(
+            @NonNull Map<AppDataKey<?>, DynamicDataValue> initialState) {
         if (initialState.size() > MAX_STATE_ENTRY_COUNT) {
             throw stateTooLargeException(initialState.size());
         }
-        mCurrentState.putAll(initialState);
+        mCurrentAppState.putAll(initialState);
+        mUiExecutor = new MainThreadExecutor(new Handler(Looper.getMainLooper()));
+    }
+
+    void putAllPlatformProviders(
+            @NonNull Map<PlatformDataKey<?>, PlatformDataProvider> sourceKeyToDataProviders) {
+        mSourceKeyToDataProviders.putAll(sourceKeyToDataProviders);
     }
 
     /**
-     * Sets the given state, replacing the current state.
+     * Sets the given app state, replacing the current app state.
      *
      * <p>Informs registered listeners of changed values, invalidates removed values.
      *
@@ -88,13 +119,13 @@
      * will stay in place.
      */
     @UiThread
-    public void setStateEntryValues(
-            @NonNull Map<String, StateEntryBuilders.StateEntryValue> newState) {
-        setStateEntryValuesProto(toProto(newState));
+    public void setAppStateEntryValues(
+            @NonNull Map<AppDataKey<?>, DynamicDataBuilders.DynamicDataValue> newState) {
+        setAppStateEntryValuesProto(toProto(newState));
     }
 
     /**
-     * Sets the given state, replacing the current state.
+     * Sets the given app state, replacing the current app state.
      *
      * <p>Informs registered listeners of changed values, invalidates removed values.
      *
@@ -104,94 +135,230 @@
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     @UiThread
-    public void setStateEntryValuesProto(@NonNull Map<String, StateEntryValue> newState) {
+    public void setAppStateEntryValuesProto(
+            @NonNull Map<AppDataKey<?>, DynamicDataValue> newState) {
         if (newState.size() > MAX_STATE_ENTRY_COUNT) {
             throw stateTooLargeException(newState.size());
         }
 
         // Figure out which nodes have actually changed.
-        Set<String> removedKeys = getRemovedKeys(newState);
-        Map<String, StateEntryValue> changedEntries = getChangedEntries(newState);
+        Set<AppDataKey<?>> removedKeys = getRemovedAppKeys(newState);
+        Map<AppDataKey<?>, DynamicDataValue> changedEntries = getChangedAppEntries(newState);
 
         Stream.concat(removedKeys.stream(), changedEntries.keySet().stream())
                 .forEach(
                         key -> {
-                            for (DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> callback :
+                            for (DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback :
                                     mRegisteredCallbacks.getOrDefault(
                                             key, Collections.emptySet())) {
                                 callback.onPreUpdate();
                             }
                         });
 
-        mCurrentState.clear();
-        mCurrentState.putAll(newState);
+        mCurrentAppState.clear();
+        mCurrentAppState.putAll(newState);
 
-        for (String key : removedKeys) {
-            for (DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> callback :
+        for (AppDataKey<?> key : removedKeys) {
+            for (DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback :
                     mRegisteredCallbacks.getOrDefault(key, Collections.emptySet())) {
                 callback.onInvalidated();
             }
         }
-        for (Entry<String, StateEntryValue> entry : changedEntries.entrySet()) {
-            for (DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> callback :
+        for (Entry<AppDataKey<?>, DynamicDataValue> entry
+                : changedEntries.entrySet()) {
+            for (DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback :
                     mRegisteredCallbacks.getOrDefault(entry.getKey(), Collections.emptySet())) {
                 callback.onData(entry.getValue());
             }
         }
     }
 
-    /** Gets state with the given key. */
-    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-    @UiThread
-    @Nullable
-    public StateEntryValue getStateEntryValuesProto(@NonNull String key) {
-        return mCurrentState.get(key);
+    /**
+     * Update the given platform data item.
+     *
+     * <p>Informs registered listeners of changed values.
+     */
+    void updatePlatformDataEntries(
+            @NonNull Map<PlatformDataKey<?>, DynamicDataBuilders.DynamicDataValue> newData) {
+        updatePlatformDataEntryProto(
+                newData.entrySet().stream().collect(
+                        toMap(Entry::getKey, entry -> entry.getValue().toDynamicDataValueProto()))
+        );
     }
 
     /**
-     * Registers the given callback for updates to the state for the given key.
+     * Update the given platform data item.
+     *
+     * <p>Informs registered listeners of changed values.
+     */
+    void updatePlatformDataEntryProto(
+            @NonNull Map<PlatformDataKey<?>, DynamicDataValue> newData) {
+        Map<PlatformDataKey<?>, DynamicDataValue> changedEntries = new ArrayMap<>();
+        for (Entry<PlatformDataKey<?>, DynamicDataValue> newEntry : newData.entrySet()) {
+            DynamicDataValue currentEntry = mCurrentPlatformData.get(newEntry.getKey());
+            if (currentEntry == null || !currentEntry.equals(newEntry.getValue())) {
+                changedEntries.put(newEntry.getKey(), newEntry.getValue());
+            }
+        }
+
+        for (Entry<PlatformDataKey<?>, DynamicDataValue> entry : changedEntries.entrySet()) {
+            for (DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback :
+                    mRegisteredCallbacks.getOrDefault(entry.getKey(), Collections.emptySet())) {
+                callback.onPreUpdate();
+            }
+        }
+
+        for (Entry<PlatformDataKey<?>, DynamicDataValue> entry : changedEntries.entrySet()) {
+            for (DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback :
+                    mRegisteredCallbacks.getOrDefault(entry.getKey(), Collections.emptySet())) {
+                callback.onData(entry.getValue());
+            }
+            mCurrentPlatformData.put(entry.getKey(), entry.getValue());
+        }
+    }
+
+    /**
+     * Remove the platform data item with the given key.
+     *
+     * <p>Informs registered listeners by invalidating removed values.
+     */
+    void removePlatformDataEntry(@NonNull Set<PlatformDataKey<?>> keys) {
+        for (PlatformDataKey<?> key : keys) {
+            if (mCurrentPlatformData.get(key) != null) {
+                for (DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback :
+                        mRegisteredCallbacks.getOrDefault(key, Collections.emptySet())) {
+                    callback.onPreUpdate();
+                }
+            }
+        }
+
+        for (PlatformDataKey<?> key : keys) {
+            if (mCurrentPlatformData.get(key) != null) {
+                for (DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback :
+                        mRegisteredCallbacks.getOrDefault(key, Collections.emptySet())) {
+                    callback.onInvalidated();
+                }
+                mCurrentPlatformData.remove(key);
+            }
+        }
+    }
+
+    /** Gets dynamic value with the given {@code key}. */
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    @UiThread
+    @Nullable
+    public DynamicDataValue getDynamicDataValuesProto(@NonNull DynamicDataKey<?> key) {
+        if (key instanceof AppDataKey) {
+            return mCurrentAppState.get(key);
+        }
+
+        if (key instanceof PlatformDataKey) {
+            return mCurrentPlatformData.get(key);
+        }
+
+        return null;
+    }
+
+    /**
+     * Registers the given callback for updates to the data item for the given {@code key}.
      *
      * <p>Note that the callback will be executed on the UI thread.
      */
     @UiThread
     void registerCallback(
-            @NonNull String key,
-            @NonNull DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> callback) {
+            @NonNull DynamicDataKey<?> key,
+            @NonNull DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback) {
         mRegisteredCallbacks.computeIfAbsent(key, k -> new ArraySet<>()).add(callback);
+
+        if (!(key instanceof PlatformDataKey) ||
+                (mRegisteredCallbacks.containsKey(key) && mRegisteredCallbacks.get(key).size() > 1)
+        ) {
+            return;
+        }
+
+        PlatformDataProvider platformDataProvider = mSourceKeyToDataProviders.get(key);
+        if (platformDataProvider != null) {
+            int registeredKeyCount =
+                    mProviderToRegisteredKeyCount.getOrDefault(platformDataProvider, 0);
+
+            if (registeredKeyCount == 0) {
+                platformDataProvider.registerForData(
+                        mUiExecutor,
+                        new PlatformDataReceiver() {
+                            @Override
+                            public void onData(
+                                    @NonNull
+                                    Map<PlatformDataKey<?>, DynamicDataBuilders.DynamicDataValue>
+                                            newData) {
+                                updatePlatformDataEntries(newData);
+                            }
+
+                            @Override
+                            public void onInvalidated(@NonNull Set<PlatformDataKey<?>> keys) {
+                                removePlatformDataEntry(keys);
+                            }
+                        });
+            }
+
+            mProviderToRegisteredKeyCount.put(platformDataProvider, registeredKeyCount + 1);
+        } else {
+            throw new IllegalArgumentException(
+                    String.format("No platform data provider for %s", key));
+        }
     }
 
-    /** Unregisters from receiving the updates. */
+    /** Unregisters the callback for the given {@code key} from receiving the updates. */
     @UiThread
     void unregisterCallback(
-            @NonNull String key,
-            @NonNull DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> callback) {
-        Set<DynamicTypeValueReceiverWithPreUpdate<StateEntryValue>> callbackSet =
+            @NonNull DynamicDataKey<?> key,
+            @NonNull DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> callback) {
+
+        Set<DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue>> callbackSet =
                 mRegisteredCallbacks.get(key);
         if (callbackSet != null) {
             callbackSet.remove(callback);
+
+            if (!(key instanceof PlatformDataKey) || !callbackSet.isEmpty()) {
+                return;
+            }
+
+            PlatformDataProvider platformDataProvider = mSourceKeyToDataProviders.get(key);
+            if (platformDataProvider != null) {
+                int registeredKeyCount =
+                        mProviderToRegisteredKeyCount.getOrDefault(platformDataProvider, 0);
+                if (registeredKeyCount == 1) {
+                    platformDataProvider.unregisterForData();
+                }
+                mProviderToRegisteredKeyCount.put(platformDataProvider, registeredKeyCount - 1);
+            } else {
+                throw new IllegalArgumentException(
+                        String.format("No platform data provider for %s", key));
+            }
         }
     }
 
     @NonNull
-    private static Map<String, StateEntryValue> toProto(
-            @NonNull Map<String, StateEntryBuilders.StateEntryValue> value) {
+    private static Map<AppDataKey<?>, DynamicDataValue> toProto(
+            @NonNull Map<AppDataKey<?>, DynamicDataBuilders.DynamicDataValue> value) {
         return value.entrySet().stream()
-                .collect(toMap(Entry::getKey, entry -> entry.getValue().toStateEntryValueProto()));
+                .collect(toMap(Entry::getKey, entry -> entry.getValue().toDynamicDataValueProto()));
     }
 
     @NonNull
-    private Set<String> getRemovedKeys(@NonNull Map<String, StateEntryValue> newState) {
-        Set<String> result = new ArraySet<>(mCurrentState.keySet());
+    private Set<AppDataKey<?>> getRemovedAppKeys(
+            @NonNull Map<AppDataKey<?>, DynamicDataValue> newState) {
+        Set<AppDataKey<?>> result = new ArraySet<>(mCurrentAppState.keySet());
         result.removeAll(newState.keySet());
         return result;
     }
 
     @NonNull
-    private Map<String, StateEntryValue> getChangedEntries(
-            @NonNull Map<String, StateEntryValue> newState) {
-        Map<String, StateEntryValue> result = new ArrayMap<>();
-        for (Entry<String, StateEntryValue> newEntry : newState.entrySet()) {
-            StateEntryValue currentEntry = mCurrentState.get(newEntry.getKey());
+    private Map<AppDataKey<?>, DynamicDataValue> getChangedAppEntries(
+            @NonNull Map<AppDataKey<?>, DynamicDataValue> newState) {
+        Map<AppDataKey<?>, DynamicDataValue> result = new ArrayMap<>();
+        for (Entry<AppDataKey<?>, DynamicDataValue> newEntry
+                : newState.entrySet()) {
+            DynamicDataValue currentEntry = mCurrentAppState.get(newEntry.getKey());
             if (currentEntry == null || !currentEntry.equals(newEntry.getValue())) {
                 result.put(newEntry.getKey(), newEntry.getValue());
             }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StringNodes.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StringNodes.java
index e168776..77dcfc4 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StringNodes.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/StringNodes.java
@@ -19,6 +19,7 @@
 import static java.lang.Math.min;
 
 import androidx.annotation.UiThread;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicString;
 import androidx.wear.protolayout.expression.proto.DynamicProto.StateStringSource;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedString;
 
@@ -104,7 +105,8 @@
                 DynamicTypeValueReceiverWithPreUpdate<String> downstream) {
             super(
                     stateStore,
-                    protoNode.getSourceKey(),
+                    StateSourceNode.<DynamicString>createKey(
+                            protoNode.getSourceNamespace(), protoNode.getSourceKey()),
                     se -> truncate(se.getStringVal().getValue()),
                     downstream);
         }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/sensor/SensorGateway.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/sensor/SensorGateway.java
index d6f656d..b6eef40 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/sensor/SensorGateway.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/sensor/SensorGateway.java
@@ -16,58 +16,23 @@
 
 package androidx.wear.protolayout.expression.pipeline.sensor;
 
-import android.Manifest;
-import android.os.Build.VERSION_CODES;
-
 import androidx.annotation.AnyThread;
-import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
-import androidx.annotation.RequiresPermission;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
 import androidx.annotation.UiThread;
+import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.PlatformDataKey;
+import androidx.wear.protolayout.expression.PlatformHealthSources;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
 import java.util.concurrent.Executor;
 
 /**
  * Gateway for proto layout expression library to be able to access sensor data, e.g. health data.
  */
+@RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
 public interface SensorGateway {
 
-    /** Sensor data types that can be subscribed to from {@link SensorGateway}. */
-    @RestrictTo(Scope.LIBRARY_GROUP)
-    @Retention(RetentionPolicy.SOURCE)
-    @RequiresApi(VERSION_CODES.Q)
-    @IntDef({
-        SENSOR_DATA_TYPE_INVALID,
-        SENSOR_DATA_TYPE_HEART_RATE,
-        SENSOR_DATA_TYPE_DAILY_STEP_COUNT
-    })
-    public @interface SensorDataType {};
-
-    /** Invalid data type. Used to return error states. */
-    int SENSOR_DATA_TYPE_INVALID = -1;
-
-    /**
-     * The user's current heart rate. This is an instantaneous reading from the last time it was
-     * sampled. Note that this means that apps which subscribe to passive heart rate data may not
-     * receive exact heart rate data; it will be batched to a given period.
-     */
-    @RequiresPermission(Manifest.permission.BODY_SENSORS)
-    int SENSOR_DATA_TYPE_HEART_RATE = 0;
-
-    /**
-     * The user's current daily step count. Note that this data type will reset to zero at midnight.
-     * each day, and any subscriptions to this data type will log the number of steps the user has
-     * done since 12:00AM local time.
-     */
-    @RequiresApi(VERSION_CODES.Q)
-    @RequiresPermission(Manifest.permission.ACTIVITY_RECOGNITION)
-    int SENSOR_DATA_TYPE_DAILY_STEP_COUNT = 1;
-
     /**
      * Consumer for sensor data.
      *
@@ -147,15 +112,15 @@
      * type.
      *
      * <p>Note that the callback will be executed on the single background thread (implementation
-     * dependent). To specify the execution thread, use {@link #registerSensorGatewayConsumer(int,
-     * Executor, Consumer)}.
+     * dependent). To specify the execution thread, use {@link #registerSensorGatewayConsumer(
+     * PlatformDataKey, Executor, Consumer)}.
      *
      * @throws SecurityException if the provider does not have permission to provide requested data
      *     type.
      */
     @UiThread
     void registerSensorGatewayConsumer(
-            @SensorDataType int requestedDataType, @NonNull Consumer consumer);
+            @NonNull PlatformDataKey<?> key, @NonNull Consumer consumer);
 
     /**
      * Register for updates for the given data type. This may cause {@link Consumer} to immediately
@@ -172,12 +137,12 @@
      */
     @UiThread
     void registerSensorGatewayConsumer(
-            @SensorDataType int requestedDataType,
+            @NonNull PlatformDataKey<?> key,
             @NonNull /* @CallbackExecutor */ Executor executor,
             @NonNull Consumer consumer);
 
     /** Unregister for updates for the given data type. */
     @UiThread
     void unregisterSensorGatewayConsumer(
-            @SensorDataType int requestedDataType, @NonNull Consumer consumer);
+            @NonNull PlatformDataKey<?> key, @NonNull Consumer consumer);
 }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/BoolNodesTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/BoolNodesTest.java
index e5f987c..bf04b5e 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/BoolNodesTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/BoolNodesTest.java
@@ -23,13 +23,15 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool;
 import androidx.wear.protolayout.expression.pipeline.BoolNodes.FixedBoolNode;
 import androidx.wear.protolayout.expression.pipeline.BoolNodes.StateBoolNode;
 import androidx.wear.protolayout.expression.proto.DynamicProto;
 import androidx.wear.protolayout.expression.proto.DynamicProto.LogicalBoolOp;
 import androidx.wear.protolayout.expression.proto.DynamicProto.StateBoolSource;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedBool;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 import com.google.common.collect.ImmutableMap;
 import java.util.ArrayList;
 import java.util.List;
@@ -57,8 +59,8 @@
     StateStore oss =
         new StateStore(
             ImmutableMap.of(
-                "foo",
-                StateEntryValue.newBuilder()
+                new AppDataKey<DynamicBool>("foo"),
+                DynamicDataValue.newBuilder()
                     .setBoolVal(FixedBool.newBuilder().setValue(true))
                     .build()));
 
@@ -77,8 +79,8 @@
     StateStore oss =
         new StateStore(
             ImmutableMap.of(
-                "foo",
-                StateEntryValue.newBuilder()
+                new AppDataKey<DynamicBool>("foo"),
+                DynamicDataValue.newBuilder()
                     .setBoolVal(FixedBool.newBuilder().setValue(true))
                     .build()));
 
@@ -90,10 +92,10 @@
 
     results.clear();
 
-    oss.setStateEntryValuesProto(
+    oss.setAppStateEntryValuesProto(
         ImmutableMap.of(
-            "foo",
-            StateEntryValue.newBuilder()
+            new AppDataKey<DynamicBool>("foo"),
+            DynamicDataValue.newBuilder()
                 .setBoolVal(FixedBool.newBuilder().setValue(false))
                 .build()));
 
@@ -103,11 +105,12 @@
   @Test
   public void stateBoolNoUpdatesAfterDestroy() {
     List<Boolean> results = new ArrayList<>();
+    AppDataKey<DynamicBool> keyFoo = new AppDataKey<>("foo");
     StateStore oss =
         new StateStore(
             ImmutableMap.of(
-                "foo",
-                StateEntryValue.newBuilder()
+                keyFoo,
+                DynamicDataValue.newBuilder()
                     .setBoolVal(FixedBool.newBuilder().setValue(false))
                     .build()));
 
@@ -120,10 +123,10 @@
 
     results.clear();
     node.destroy();
-    oss.setStateEntryValuesProto(
+    oss.setAppStateEntryValuesProto(
         ImmutableMap.of(
-            "foo",
-            StateEntryValue.newBuilder()
+                keyFoo,
+                DynamicDataValue.newBuilder()
                 .setBoolVal(FixedBool.newBuilder().setValue(true))
                 .build()));
     assertThat(results).isEmpty();
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ColorNodesTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ColorNodesTest.java
index 20e1177..cbf06ed 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ColorNodesTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ColorNodesTest.java
@@ -25,6 +25,8 @@
 import android.os.Looper;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.expression.pipeline.ColorNodes.AnimatableFixedColorNode;
 import androidx.wear.protolayout.expression.pipeline.ColorNodes.DynamicAnimatedColorNode;
 import androidx.wear.protolayout.expression.pipeline.ColorNodes.FixedColorNode;
@@ -33,7 +35,7 @@
 import androidx.wear.protolayout.expression.proto.DynamicProto.AnimatableFixedColor;
 import androidx.wear.protolayout.expression.proto.DynamicProto.StateColorSource;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedColor;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
@@ -49,6 +51,7 @@
 
     private static final int FROM_COLOR = 0xFF00FF00;
     private static final int TO_COLOR = 0xFFFF00FF;
+    private static final AppDataKey<DynamicColor> KEY_FOO = new AppDataKey<>("foo");
 
     @Test
     public void fixedColorNode() {
@@ -69,8 +72,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setColorVal(FixedColor.newBuilder().setArgb(FROM_COLOR))
                                         .build()));
 
@@ -90,8 +93,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setColorVal(FixedColor.newBuilder().setArgb(FROM_COLOR))
                                         .build()));
         StateColorSource protoNode = StateColorSource.newBuilder().setSourceKey("foo").build();
@@ -100,10 +103,10 @@
 
         node.preInit();
         node.init();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(TO_COLOR))
                                 .build()));
 
@@ -116,8 +119,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setColorVal(FixedColor.newBuilder().setArgb(FROM_COLOR))
                                         .build()));
         StateColorSource protoNode = StateColorSource.newBuilder().setSourceKey("foo").build();
@@ -130,10 +133,10 @@
 
         results.clear();
         node.destroy();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(TO_COLOR))
                                 .build()));
         assertThat(results).isEmpty();
@@ -213,8 +216,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setColorVal(
                                                 FixedColor.newBuilder().setArgb(FROM_COLOR).build())
                                         .build()));
@@ -233,10 +236,10 @@
         stateNode.preInit();
         stateNode.init();
 
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(TO_COLOR))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -256,8 +259,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setColorVal(
                                                 FixedColor.newBuilder().setArgb(color1).build())
                                         .build()));
@@ -277,10 +280,10 @@
         stateNode.init();
 
         results.clear();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(color2))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -291,10 +294,10 @@
 
         colorNode.setVisibility(true);
         results.clear();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(color3))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -316,8 +319,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setColorVal(
                                                 FixedColor.newBuilder().setArgb(color1).build())
                                         .build()));
@@ -339,10 +342,10 @@
         stateNode.init();
 
         results.clear();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(color2))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -352,10 +355,10 @@
         // Release the only quota
         quotaManager.releaseQuota(1);
 
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(color3))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/FloatNodeTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/FloatNodeTest.java
index 9a466a2..a1acb98 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/FloatNodeTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/FloatNodeTest.java
@@ -25,6 +25,8 @@
 import android.os.Looper;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.expression.pipeline.FloatNodes.AnimatableFixedFloatNode;
 import androidx.wear.protolayout.expression.pipeline.FloatNodes.ArithmeticFloatNode;
 import androidx.wear.protolayout.expression.pipeline.FloatNodes.DynamicAnimatedFloatNode;
@@ -40,7 +42,7 @@
 import androidx.wear.protolayout.expression.proto.DynamicProto.StateInt32Source;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedFloat;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedInt32;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
@@ -54,6 +56,8 @@
 @RunWith(AndroidJUnit4.class)
 public class FloatNodeTest {
 
+    private static final AppDataKey<DynamicFloat> KEY_FOO = new AppDataKey<>("foo");
+
     @Test
     public void fixedFloatNodesTest() {
         List<Float> results = new ArrayList<>();
@@ -75,8 +79,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setFloatVal(FixedFloat.newBuilder().setValue(testValue))
                                         .build()));
 
@@ -99,8 +103,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setFloatVal(FixedFloat.newBuilder().setValue(oldValue))
                                         .build()));
 
@@ -112,10 +116,10 @@
         node.init();
         assertThat(results).containsExactly(oldValue);
 
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setFloatVal(FixedFloat.newBuilder().setValue(newValue))
                                 .build()));
 
@@ -131,8 +135,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setFloatVal(FixedFloat.newBuilder().setValue(oldValue))
                                         .build()));
 
@@ -147,10 +151,10 @@
         results.clear();
         node.destroy();
 
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setFloatVal(FixedFloat.newBuilder().setValue(newValue))
                                 .build()));
 
@@ -177,8 +181,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setFloatVal(FixedFloat.newBuilder().setValue(oldRhsValue))
                                         .build()));
         StateFloatSource rhsProtoNode = StateFloatSource.newBuilder().setSourceKey("foo").build();
@@ -191,10 +195,10 @@
         assertThat(results).containsExactly(lhsValue + oldRhsValue);
 
         float newRhsValue = 7.8f;
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setFloatVal(FixedFloat.newBuilder().setValue(newRhsValue))
                                 .build()));
         assertThat(results)
@@ -211,8 +215,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setInt32Val(FixedInt32.newBuilder().setValue(oldIntValue))
                                         .build()));
 
@@ -226,10 +230,10 @@
         assertThat(results).containsExactly((float) oldIntValue);
 
         int newIntValue = 12;
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setInt32Val(FixedInt32.newBuilder().setValue(newIntValue))
                                 .build()));
 
@@ -319,8 +323,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setFloatVal(
                                                 FixedFloat.newBuilder().setValue(value1).build())
                                         .build()));
@@ -340,10 +344,10 @@
         stateNode.init();
 
         results.clear();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setFloatVal(FixedFloat.newBuilder().setValue(value2))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -354,10 +358,10 @@
 
         floatNode.setVisibility(true);
         results.clear();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setFloatVal(FixedFloat.newBuilder().setValue(value3))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/Int32NodesTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/Int32NodesTest.java
index 58f8fd6..2738f50 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/Int32NodesTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/Int32NodesTest.java
@@ -26,12 +26,17 @@
 import android.os.Looper;
 
 import androidx.annotation.NonNull;
+import androidx.collection.ArrayMap;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32;
+import androidx.wear.protolayout.expression.PlatformDataKey;
+import androidx.wear.protolayout.expression.PlatformHealthSources;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.AnimatableFixedInt32Node;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.DynamicAnimatedInt32Node;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.FixedInt32Node;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.GetDurationPartOpNode;
-import androidx.wear.protolayout.expression.pipeline.Int32Nodes.PlatformInt32SourceNode;
+import androidx.wear.protolayout.expression.pipeline.Int32Nodes.LegacyPlatformInt32SourceNode;
 import androidx.wear.protolayout.expression.pipeline.Int32Nodes.StateInt32SourceNode;
 import androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway;
 import androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec;
@@ -42,7 +47,7 @@
 import androidx.wear.protolayout.expression.proto.DynamicProto.PlatformInt32SourceType;
 import androidx.wear.protolayout.expression.proto.DynamicProto.StateInt32Source;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedInt32;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
@@ -56,14 +61,19 @@
 
 import java.time.Duration;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Executor;
 
 @RunWith(AndroidJUnit4.class)
 public class Int32NodesTest {
-    @Rule public final MockitoRule mockito = MockitoJUnit.rule();
+    @Rule
+    public final MockitoRule mockito = MockitoJUnit.rule();
 
-    @Mock private DynamicTypeValueReceiverWithPreUpdate<Integer> mMockValueReceiver;
+    @Mock
+    private DynamicTypeValueReceiverWithPreUpdate<Integer> mMockValueReceiver;
+
+    private static final AppDataKey<DynamicInt32> KEY_FOO = new AppDataKey<>("foo");
 
     @Test
     public void testFixedInt32Node() {
@@ -85,36 +95,36 @@
         Duration duration = Duration.ofSeconds(123456);
 
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_DAYS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_DAYS))
                 .isEqualTo(1);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_HOURS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_HOURS))
                 .isEqualTo(10);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_MINUTES))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_MINUTES))
                 .isEqualTo(17);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_SECONDS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_SECONDS))
                 .isEqualTo(36);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_DAYS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_DAYS))
                 .isEqualTo(1);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_HOURS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_HOURS))
                 .isEqualTo(34);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_MINUTES))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_MINUTES))
                 .isEqualTo(2057);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_SECONDS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_SECONDS))
                 .isEqualTo(123456);
     }
 
@@ -125,36 +135,36 @@
         Duration duration = Duration.ofSeconds(-123456);
 
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_DAYS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_DAYS))
                 .isEqualTo(1);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_HOURS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_HOURS))
                 .isEqualTo(10);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_MINUTES))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_MINUTES))
                 .isEqualTo(17);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_SECONDS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_SECONDS))
                 .isEqualTo(36);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_DAYS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_DAYS))
                 .isEqualTo(-1);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_HOURS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_HOURS))
                 .isEqualTo(-34);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_MINUTES))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_MINUTES))
                 .isEqualTo(-2057);
         assertThat(
-                        createGetDurationPartOpNodeAndGetPart(
-                                duration, DurationPartType.DURATION_PART_TYPE_TOTAL_SECONDS))
+                createGetDurationPartOpNodeAndGetPart(
+                        duration, DurationPartType.DURATION_PART_TYPE_TOTAL_SECONDS))
                 .isEqualTo(-123456);
     }
 
@@ -174,8 +184,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setInt32Val(FixedInt32.newBuilder().setValue(65))
                                         .build()));
 
@@ -195,8 +205,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setInt32Val(FixedInt32.newBuilder().setValue(65))
                                         .build()));
 
@@ -209,10 +219,10 @@
 
         results.clear();
 
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setInt32Val(FixedInt32.newBuilder().setValue(12))
                                 .build()));
 
@@ -302,8 +312,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setInt32Val(
                                                 FixedInt32.newBuilder().setValue(value1).build())
                                         .build()));
@@ -323,10 +333,10 @@
         stateNode.init();
 
         results.clear();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setInt32Val(FixedInt32.newBuilder().setValue(value2))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -337,10 +347,10 @@
 
         int32Node.setVisibility(true);
         results.clear();
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setInt32Val(FixedInt32.newBuilder().setValue(value3))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -355,16 +365,22 @@
     @Test
     public void platformInt32Source_propagatesInvalidatedSignal() {
         FakeSensorGateway fakeSensorGateway = new FakeSensorGateway();
+        StateStore stateStore = new StateStore(new ArrayMap<>());
+        stateStore.putAllPlatformProviders(
+                Collections.singletonMap(
+                        PlatformHealthSources.HEART_RATE_BPM,
+                        new SensorGatewaySingleDataProvider(
+                                fakeSensorGateway, PlatformHealthSources.HEART_RATE_BPM)));
         PlatformInt32Source platformSource =
                 PlatformInt32Source.newBuilder()
                         .setSourceType(
                                 PlatformInt32SourceType
                                         .PLATFORM_INT32_SOURCE_TYPE_CURRENT_HEART_RATE)
                         .build();
-        PlatformInt32SourceNode platformSourceNode =
-                new PlatformInt32SourceNode(
+        LegacyPlatformInt32SourceNode platformSourceNode =
+                new LegacyPlatformInt32SourceNode(
+                        stateStore,
                         platformSource,
-                        new SensorGatewayPlatformDataSource(Runnable::run, fakeSensorGateway),
                         mMockValueReceiver);
 
         platformSourceNode.preInit();
@@ -381,28 +397,30 @@
         final List<Consumer> registeredConsumers = new ArrayList<>();
 
         @Override
-        public void enableUpdates() {}
+        public void enableUpdates() {
+        }
 
         @Override
-        public void disableUpdates() {}
+        public void disableUpdates() {
+        }
 
         @Override
         public void registerSensorGatewayConsumer(
-                @SensorDataType int requestedDataType, @NonNull Consumer consumer) {
+                @NonNull PlatformDataKey<?> key, @NonNull Consumer consumer) {
             registeredConsumers.add(consumer);
         }
 
         @Override
         public void registerSensorGatewayConsumer(
-                @SensorDataType int requestedDataType,
+                @NonNull PlatformDataKey<?> key,
                 @NonNull Executor executor,
                 @NonNull Consumer consumer) {
-            registerSensorGatewayConsumer(requestedDataType, consumer);
+            registerSensorGatewayConsumer(key, consumer);
         }
 
         @Override
         public void unregisterSensorGatewayConsumer(
-                @SensorDataType int requestedDataType, @NonNull Consumer consumer) {
+                @NonNull PlatformDataKey<?> key, @NonNull Consumer consumer) {
             registeredConsumers.remove(consumer);
         }
     }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java
index 2f62ea9..4480847 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java
@@ -38,11 +38,12 @@
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32;
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32.IntFormatter;
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicString;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedBool;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedFloat;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedInt32;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedString;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -63,36 +64,38 @@
 public class ParametrizedDynamicTypeEvaluatorTest {
     @ParameterizedRobolectricTestRunner.Parameters(name = "{0}")
     public static ImmutableList<Object[]> params() {
+        AppDataKey<DynamicInt32> int32Source = new AppDataKey<>("state_int_15");
         ParametrizedDynamicTypeEvaluatorTest.TestCase<?>[] testCases = {
             test(constant("hello"), "hello"),
-            test(DynamicString.fromState("state_hello_world"), "hello_world"),
+            test(DynamicString.from(new AppDataKey<>("state_hello_world")), "hello_world"),
             test(DynamicInt32.constant(5).format(), "5"),
             test(DynamicInt32.constant(10), 10),
-            test(DynamicInt32.fromState("state_int_15"), 15),
-            test(DynamicInt32.fromState("state_int_15").plus(DynamicInt32.constant(2)), 17),
-            test(DynamicInt32.fromState("state_int_15").minus(DynamicInt32.constant(5)), 10),
-            test(DynamicInt32.fromState("state_int_15").times(DynamicInt32.constant(2)), 30),
-            test(DynamicInt32.fromState("state_int_15").div(DynamicInt32.constant(3)), 5),
-            test(DynamicInt32.fromState("state_int_15").rem(DynamicInt32.constant(2)), 1),
-            test(DynamicInt32.fromState("state_int_15").plus(2), 17),
-            test(DynamicInt32.fromState("state_int_15").minus(5), 10),
-            test(DynamicInt32.fromState("state_int_15").times(2), 30),
-            test(DynamicInt32.fromState("state_int_15").div(3), 5),
-            test(DynamicInt32.fromState("state_int_15").rem(2), 1),
-            test(DynamicInt32.fromState("state_int_15").plus(2.5f), 17.5f),
-            test(DynamicInt32.fromState("state_int_15").minus(5.5f), 9.5f),
-            test(DynamicInt32.fromState("state_int_15").times(2.5f), 37.5f),
-            test(DynamicInt32.fromState("state_int_15").div(2.0f), 7.5f),
-            test(DynamicInt32.fromState("state_int_15").rem(4.5f), 1.5f),
-            test(DynamicInt32.fromState("state_int_15").plus(DynamicFloat.constant(2.5f)), 17.5f),
-            test(DynamicInt32.fromState("state_int_15").minus(DynamicFloat.constant(5.5f)), 9.5f),
-            test(DynamicInt32.fromState("state_int_15").times(DynamicFloat.constant(2.5f)), 37.5f),
-            test(DynamicInt32.fromState("state_int_15").div(DynamicFloat.constant(2.0f)), 7.5f),
-            test(DynamicInt32.fromState("state_int_15").rem(DynamicFloat.constant(4.5f)), 1.5f),
+            test(DynamicInt32.from(int32Source), 15),
+            test(DynamicInt32.from(int32Source).plus(DynamicInt32.constant(2)), 17),
+            test(DynamicInt32.from(int32Source).minus(DynamicInt32.constant(5)), 10),
+            test(DynamicInt32.from(int32Source).times(DynamicInt32.constant(2)), 30),
+            test(DynamicInt32.from(int32Source).div(DynamicInt32.constant(3)), 5),
+            test(DynamicInt32.from(int32Source).rem(DynamicInt32.constant(2)), 1),
+            test(DynamicInt32.from(int32Source).plus(2), 17),
+            test(DynamicInt32.from(int32Source).minus(5), 10),
+            test(DynamicInt32.from(int32Source).times(2), 30),
+            test(DynamicInt32.from(int32Source).div(3), 5),
+            test(DynamicInt32.from(int32Source).rem(2), 1),
+            test(DynamicInt32.from(int32Source).plus(2.5f), 17.5f),
+            test(DynamicInt32.from(int32Source).minus(5.5f), 9.5f),
+            test(DynamicInt32.from(int32Source).times(2.5f), 37.5f),
+            test(DynamicInt32.from(int32Source).div(2.0f), 7.5f),
+            test(DynamicInt32.from(int32Source).rem(4.5f), 1.5f),
+            test(DynamicInt32.from(int32Source).plus(DynamicFloat.constant(2.5f)), 17.5f),
+            test(DynamicInt32.from(int32Source).minus(DynamicFloat.constant(5.5f)), 9.5f),
+            test(DynamicInt32.from(int32Source).times(DynamicFloat.constant(2.5f)), 37.5f),
+            test(DynamicInt32.from(int32Source).div(DynamicFloat.constant(2.0f)), 7.5f),
+            test(DynamicInt32.from(int32Source).rem(DynamicFloat.constant(4.5f)), 1.5f),
             test(DynamicFloat.constant(5.0f), 5.0f),
             testForInvalidValue(DynamicFloat.constant(Float.NaN)),
             testForInvalidValue(DynamicFloat.constant(Float.NaN).plus(5.0f)),
-            test(DynamicFloat.fromState("state_float_1.5"), 1.5f),
+            test(DynamicFloat.from(
+                    new AppDataKey<>("state_float_1.5")), 1.5f),
             test(DynamicFloat.constant(1234.567f).asInt(), 1234),
             test(DynamicFloat.constant(0.967f).asInt(), 0),
             test(DynamicFloat.constant(-1234.967f).asInt(), -1235),
@@ -146,9 +149,11 @@
             test(DynamicBool.constant(true).or(DynamicBool.constant(false)), true),
             test(DynamicBool.constant(false).or(DynamicBool.constant(true)), true),
             test(DynamicBool.constant(false).or(DynamicBool.constant(false)), false),
-            test(DynamicBool.fromState("state_bool_true"), true),
+            test(DynamicBool.from(
+                    new AppDataKey<>("state_bool_true")), true),
             test(DynamicBool.constant(false), false),
-            test(DynamicBool.fromState("state_bool_false"), false),
+            test(DynamicBool.from(
+                    new AppDataKey<>("state_bool_false")), false),
             test(DynamicInt32.constant(5).eq(DynamicInt32.constant(5)), true),
             test(DynamicInt32.constant(5).eq(DynamicInt32.constant(6)), false),
             test(DynamicInt32.constant(5).ne(DynamicInt32.constant(5)), false),
@@ -204,7 +209,8 @@
                             .elseUse(constant("World")),
                     "World"),
             test(
-                    DynamicString.fromState("state_hello_world")
+                    DynamicString.from(
+                            new AppDataKey<>("state_hello_world"))
                             .concat(DynamicString.constant("_test")),
                     "hello_world_test"),
             test(
@@ -504,26 +510,26 @@
         return DynamicDuration.withSecondsPrecision(Duration.ofSeconds(seconds));
     }
 
-    private static ImmutableMap<String, StateEntryValue> generateExampleState() {
+    private static ImmutableMap<AppDataKey<?>, DynamicDataValue> generateExampleState() {
         return ImmutableMap.of(
-                "state_hello_world",
-                StateEntryValue.newBuilder()
+                new AppDataKey<DynamicString>("state_hello_world"),
+                DynamicDataValue.newBuilder()
                         .setStringVal(FixedString.newBuilder().setValue("hello_world"))
                         .build(),
-                "state_int_15",
-                StateEntryValue.newBuilder()
+                new AppDataKey<DynamicInt32>("state_int_15"),
+                DynamicDataValue.newBuilder()
                         .setInt32Val(FixedInt32.newBuilder().setValue(15))
                         .build(),
-                "state_float_1.5",
-                StateEntryValue.newBuilder()
+                new AppDataKey<DynamicFloat>("state_float_1.5"),
+                DynamicDataValue.newBuilder()
                         .setFloatVal(FixedFloat.newBuilder().setValue(1.5f))
                         .build(),
-                "state_bool_true",
-                StateEntryValue.newBuilder()
+                new AppDataKey<DynamicBool>("state_bool_true"),
+                DynamicDataValue.newBuilder()
                         .setBoolVal(FixedBool.newBuilder().setValue(true))
                         .build(),
-                "state_bool_false",
-                StateEntryValue.newBuilder()
+                new AppDataKey<DynamicBool>("state_bool_false"),
+                DynamicDataValue.newBuilder()
                         .setBoolVal(FixedBool.newBuilder().setValue(false))
                         .build());
     }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StateStoreTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StateStoreTest.java
index ae1630d..3712441 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StateStoreTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StateStoreTest.java
@@ -25,10 +25,17 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoInteractions;
 
+import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.collection.ArraySet;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.wear.protolayout.expression.StateEntryBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicString;
+import androidx.wear.protolayout.expression.DynamicDataBuilders;
+import androidx.wear.protolayout.expression.PlatformDataKey;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedString;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.truth.Expect;
@@ -41,101 +48,206 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Executor;
 
 @RunWith(AndroidJUnit4.class)
 public class StateStoreTest {
     @Rule public Expect mExpect = Expect.create();
 
+    private static final AppDataKey<DynamicString> KEY_FOO = new AppDataKey<>("foo");
+    private static final AppDataKey<DynamicString> KEY_BAZ = new AppDataKey<>("baz");
+
+    private static final PlatformDataKey<DynamicString> KEY_FOO_PLATFORM
+            = new PlatformDataKey<>("platform", "foo");
+    private static final PlatformDataKey<DynamicString> KEY_BAZ_PLATFORM
+            = new PlatformDataKey<>("platform","baz");
+
     private final StateStore mStateStoreUnderTest =
             new StateStore(
                     ImmutableMap.of(
-                            "foo", buildStateEntry("bar"),
-                            "baz", buildStateEntry("foobar")));
+                            KEY_FOO, buildDynamicDataValue("bar"),
+                            KEY_BAZ, buildDynamicDataValue("foobar")));
 
     public StateStoreTest() {}
 
     @Test
     public void setBuilderApi() {
-        mStateStoreUnderTest.setStateEntryValues(
-                ImmutableMap.of("foo", StateEntryBuilders.StateEntryValue.fromString("baz")));
+        mStateStoreUnderTest.setAppStateEntryValues(
+                ImmutableMap.of(
+                        KEY_FOO, DynamicDataBuilders.DynamicDataValue.fromString("baz")));
 
-        mExpect.that(mStateStoreUnderTest.getStateEntryValuesProto("foo"))
-                .isEqualTo(buildStateEntry("baz"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO))
+                .isEqualTo(buildDynamicDataValue("baz"));
+
+        // This should have been cleared...
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_BAZ)).isNull();
     }
 
     @Test
     public void initState_largeNumberOfEntries_throws() {
-        Map<String, StateEntryBuilders.StateEntryValue> state = new HashMap<>();
+        Map<AppDataKey<?>, DynamicDataBuilders.DynamicDataValue> state = new HashMap<>();
         for (int i = 0; i < StateStore.MAX_STATE_ENTRY_COUNT + 10; i++) {
-            state.put(Integer.toString(i), StateEntryBuilders.StateEntryValue.fromString("baz"));
+            state.put(
+                    new AppDataKey<DynamicString>(Integer.toString(i)),
+                    DynamicDataBuilders.DynamicDataValue.fromString("baz"));
         }
         assertThrows(IllegalStateException.class, () -> StateStore.create(state));
     }
 
     @Test
     public void newState_largeNumberOfEntries_throws() {
-        Map<String, StateEntryBuilders.StateEntryValue> state = new HashMap<>();
+        Map<AppDataKey<?>, DynamicDataBuilders.DynamicDataValue> state = new HashMap<>();
         for (int i = 0; i < StateStore.MAX_STATE_ENTRY_COUNT + 10; i++) {
-            state.put(Integer.toString(i), StateEntryBuilders.StateEntryValue.fromString("baz"));
+            state.put(
+                    new AppDataKey<DynamicString>(Integer.toString(i)),
+                    DynamicDataBuilders.DynamicDataValue.fromString("baz"));
         }
         assertThrows(
-                IllegalStateException.class, () -> mStateStoreUnderTest.setStateEntryValues(state));
+                IllegalStateException.class,
+                () -> mStateStoreUnderTest.setAppStateEntryValues(state));
     }
 
     @Test
     public void canReadInitialState() {
-        mExpect.that(mStateStoreUnderTest.getStateEntryValuesProto("foo"))
-                .isEqualTo(buildStateEntry("bar"));
-        mExpect.that(mStateStoreUnderTest.getStateEntryValuesProto("baz"))
-                .isEqualTo(buildStateEntry("foobar"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO))
+                .isEqualTo(buildDynamicDataValue("bar"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_BAZ))
+                .isEqualTo(buildDynamicDataValue("foobar"));
     }
 
     @Test
     public void unsetStateReturnsNull() {
-        mExpect.that(mStateStoreUnderTest.getStateEntryValuesProto("AAAAAA")).isNull();
+        mExpect.that(
+                mStateStoreUnderTest.getDynamicDataValuesProto(new AppDataKey<>("AAAAAA"))
+                ).isNull();
     }
 
     @Test
     public void canSetNewState() {
-        mStateStoreUnderTest.setStateEntryValuesProto(
+        AppDataKey<DynamicString> keyNew = new AppDataKey<>("newKey");
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo", buildStateEntry("test"),
-                        "newKey", buildStateEntry("testNewKey")));
+                        KEY_FOO, buildDynamicDataValue("test"),
+                        keyNew, buildDynamicDataValue("testNewKey")));
 
-        mExpect.that(mStateStoreUnderTest.getStateEntryValuesProto("foo"))
-                .isEqualTo(buildStateEntry("test"));
-        mExpect.that(mStateStoreUnderTest.getStateEntryValuesProto("newKey"))
-                .isEqualTo(buildStateEntry("testNewKey"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO))
+                .isEqualTo(buildDynamicDataValue("test"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(keyNew))
+                .isEqualTo(buildDynamicDataValue("testNewKey"));
 
         // This should have been cleared...
-        mExpect.that(mStateStoreUnderTest.getStateEntryValuesProto("baz")).isNull();
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_BAZ)).isNull();
+    }
+
+    @Test
+    public void canUpdatePlatformData() {
+        mStateStoreUnderTest.updatePlatformDataEntryProto(
+                Map.of(KEY_FOO_PLATFORM, buildDynamicDataValue("valueFoo1")));
+
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO))
+                .isEqualTo(buildDynamicDataValue("bar"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_BAZ))
+                .isEqualTo(buildDynamicDataValue("foobar"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO_PLATFORM))
+                .isEqualTo(buildDynamicDataValue("valueFoo1"));
+
+        mStateStoreUnderTest.updatePlatformDataEntryProto(
+                Map.of(KEY_FOO_PLATFORM, buildDynamicDataValue("valueFoo2"),
+                        KEY_BAZ_PLATFORM, buildDynamicDataValue("valueBaz")));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO_PLATFORM))
+                .isEqualTo(buildDynamicDataValue("valueFoo2"));
+
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO))
+                .isEqualTo(buildDynamicDataValue("bar"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_BAZ))
+                .isEqualTo(buildDynamicDataValue("foobar"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_FOO_PLATFORM))
+                .isEqualTo(buildDynamicDataValue("valueFoo2"));
+        mExpect.that(mStateStoreUnderTest.getDynamicDataValuesProto(KEY_BAZ_PLATFORM))
+                .isEqualTo(buildDynamicDataValue("valueBaz"));
     }
 
     @Test
     public void setStateFiresListeners() {
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> cb = buildStateUpdateCallbackMock();
-        mStateStoreUnderTest.registerCallback("foo", cb);
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cb = buildStateUpdateCallbackMock();
+        mStateStoreUnderTest.registerCallback(KEY_FOO, cb);
 
-        mStateStoreUnderTest.setStateEntryValuesProto(
-                ImmutableMap.of("foo", buildStateEntry("test")));
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
+                ImmutableMap.of(KEY_FOO, buildDynamicDataValue("test")));
 
         verify(cb).onPreUpdate();
-        verify(cb).onData(buildStateEntry("test"));
+        verify(cb).onData(buildDynamicDataValue("test"));
+    }
+
+    @Test
+    public void platformDataProvider_register_updateData_unregister() {
+        PlatformDataProviderUnderTest dataProvider = new PlatformDataProviderUnderTest();
+        Map<PlatformDataKey<?>, PlatformDataProvider> sourceKeyToDataProvider = new ArrayMap<>();
+        sourceKeyToDataProvider.put(KEY_FOO_PLATFORM, dataProvider);
+        sourceKeyToDataProvider.put(KEY_BAZ_PLATFORM, dataProvider);
+        mStateStoreUnderTest.putAllPlatformProviders(sourceKeyToDataProvider);
+
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cbFoo =
+                buildStateUpdateCallbackMock();
+        mStateStoreUnderTest.registerCallback(KEY_FOO_PLATFORM, cbFoo);
+        verify(cbFoo).onPreUpdate();
+        verify(cbFoo).onData(buildDynamicDataValue("fooValue"));
+        mExpect.that(dataProvider.mRegisterCount).isEqualTo(1);
+
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cbBaz =
+                buildStateUpdateCallbackMock();
+        mStateStoreUnderTest.registerCallback(KEY_BAZ_PLATFORM, cbBaz);
+        mExpect.that(dataProvider.mRegisterCount).isEqualTo(1);
+
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cbFoo2 =
+                buildStateUpdateCallbackMock();
+        mStateStoreUnderTest.registerCallback(KEY_FOO_PLATFORM, cbFoo2);
+        mExpect.that(dataProvider.mRegisterCount).isEqualTo(1);
+
+        dataProvider.updateValues(
+                Map.of(KEY_FOO_PLATFORM,
+                        DynamicDataBuilders.DynamicDataValue.fromString("newFooValue"),
+                        KEY_BAZ_PLATFORM,
+                        DynamicDataBuilders.DynamicDataValue.fromString("newBazValue")
+                ));
+        verify(cbFoo, times(2)).onPreUpdate();
+        verify(cbFoo2).onPreUpdate();
+        verify(cbBaz).onPreUpdate();
+        verify(cbFoo).onData(buildDynamicDataValue("newFooValue"));
+        verify(cbFoo2).onData(buildDynamicDataValue("newFooValue"));
+        verify(cbBaz).onData(buildDynamicDataValue("newBazValue"));
+
+        dataProvider.updateValues(
+                Map.of(
+                        KEY_BAZ_PLATFORM,
+                        DynamicDataBuilders.DynamicDataValue.fromString("updatedBazValue")
+                ));
+        verify(cbFoo, times(1)).onData(buildDynamicDataValue("newFooValue"));
+        verify(cbFoo2, times(1)).onData(buildDynamicDataValue("newFooValue"));
+        verify(cbBaz).onData(buildDynamicDataValue("newBazValue"));
+
+        mStateStoreUnderTest.unregisterCallback(KEY_FOO_PLATFORM, cbFoo);
+        mExpect.that(dataProvider.mRegisterCount).isEqualTo(1);
+        mStateStoreUnderTest.unregisterCallback(KEY_FOO_PLATFORM, cbFoo2);
+        mExpect.that(dataProvider.mRegisterCount).isEqualTo(1);
+        mStateStoreUnderTest.unregisterCallback(KEY_BAZ_PLATFORM, cbBaz);
+        mExpect.that(dataProvider.mRegisterCount).isEqualTo(0);
     }
 
     @Test
     public void setStateFiresOnPreStateUpdateFirst() {
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> cb = buildStateUpdateCallbackMock();
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cb = buildStateUpdateCallbackMock();
 
         InOrder inOrder = Mockito.inOrder(cb);
 
-        mStateStoreUnderTest.registerCallback("foo", cb);
-        mStateStoreUnderTest.registerCallback("baz", cb);
+        mStateStoreUnderTest.registerCallback(KEY_FOO, cb);
+        mStateStoreUnderTest.registerCallback(KEY_BAZ, cb);
 
-        mStateStoreUnderTest.setStateEntryValuesProto(
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo", buildStateEntry("testFoo"),
-                        "baz", buildStateEntry("testBaz")));
+                        KEY_FOO, buildDynamicDataValue("testFoo"),
+                        KEY_BAZ, buildDynamicDataValue("testBaz")));
 
         inOrder.verify(cb, times(2)).onPreUpdate();
         inOrder.verify(cb, times(2)).onData(any());
@@ -144,41 +256,44 @@
 
     @Test
     public void setStateOnlyFiresListenersForChangedData() {
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> cbFoo =
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cbFoo =
                 buildStateUpdateCallbackMock();
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> cbBaz =
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cbBaz =
                 buildStateUpdateCallbackMock();
-        mStateStoreUnderTest.registerCallback("foo", cbFoo);
-        mStateStoreUnderTest.registerCallback("baz", cbBaz);
 
-        mStateStoreUnderTest.setStateEntryValuesProto(
+        mStateStoreUnderTest.registerCallback(KEY_FOO, cbFoo);
+        mStateStoreUnderTest.registerCallback(KEY_BAZ, cbBaz);
+
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo", buildStateEntry("test"),
-                        "baz", buildStateEntry("foobar")));
+                        KEY_FOO, buildDynamicDataValue("test"),
+                        KEY_BAZ, buildDynamicDataValue("foobar")));
 
         verify(cbFoo).onPreUpdate();
-        verify(cbFoo).onData(buildStateEntry("test"));
+        verify(cbFoo).onData(buildDynamicDataValue("test"));
         verify(cbBaz, never()).onPreUpdate();
-        verify(cbBaz, never()).onData(buildStateEntry("test"));
+        verify(cbBaz, never()).onData(buildDynamicDataValue("test"));
     }
 
     @Test
     public void removeStateFiresInvalidated() {
-        mStateStoreUnderTest.setStateEntryValuesProto(
+        AppDataKey<DynamicString> keyInvalidated = new AppDataKey<>("invalidated");
+        AppDataKey<DynamicString> keyNotInvalidated = new AppDataKey<>("notInvalidated");
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "invalidated",
-                        buildStateEntry("value"),
-                        "notInvalidated",
-                        buildStateEntry("value")));
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> invalidated =
+                        keyInvalidated,
+                        buildDynamicDataValue("value"),
+                        keyNotInvalidated,
+                        buildDynamicDataValue("value")));
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> invalidated =
                 buildStateUpdateCallbackMock();
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> notInvalidated =
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> notInvalidated =
                 buildStateUpdateCallbackMock();
-        mStateStoreUnderTest.registerCallback("invalidated", invalidated);
-        mStateStoreUnderTest.registerCallback("notInvalidated", notInvalidated);
+        mStateStoreUnderTest.registerCallback(keyInvalidated, invalidated);
+        mStateStoreUnderTest.registerCallback(keyNotInvalidated, notInvalidated);
 
-        mStateStoreUnderTest.setStateEntryValuesProto(
-                ImmutableMap.of("notInvalidated", buildStateEntry("value")));
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
+                ImmutableMap.of(keyNotInvalidated, buildDynamicDataValue("value")));
 
         verify(invalidated).onPreUpdate();
         verify(invalidated).onInvalidated();
@@ -189,31 +304,83 @@
     @SuppressWarnings("unchecked")
     @Test
     public void canUnregisterListeners() {
-        DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> cb = buildStateUpdateCallbackMock();
-        mStateStoreUnderTest.registerCallback("foo", cb);
+        DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> cb = buildStateUpdateCallbackMock();
+        mStateStoreUnderTest.registerCallback(KEY_FOO, cb);
 
-        mStateStoreUnderTest.setStateEntryValuesProto(
-                ImmutableMap.of("foo", buildStateEntry("test")));
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
+                ImmutableMap.of(KEY_FOO, buildDynamicDataValue("test")));
 
         reset(cb);
-        mStateStoreUnderTest.unregisterCallback("foo", cb);
 
-        mStateStoreUnderTest.setStateEntryValuesProto(
-                ImmutableMap.of("foo", buildStateEntry("testAgain")));
+        mStateStoreUnderTest.unregisterCallback(KEY_FOO, cb);
+
+        mStateStoreUnderTest.setAppStateEntryValuesProto(
+                ImmutableMap.of(KEY_FOO, buildDynamicDataValue("testAgain")));
 
         verifyNoInteractions(cb);
     }
 
     @SuppressWarnings("unchecked")
-    private DynamicTypeValueReceiverWithPreUpdate<StateEntryValue> buildStateUpdateCallbackMock() {
+    private DynamicTypeValueReceiverWithPreUpdate<DynamicDataValue> buildStateUpdateCallbackMock() {
         // This needs an unchecked cast because of the generic; this method just centralizes the
         // warning suppression.
         return mock(DynamicTypeValueReceiverWithPreUpdate.class);
     }
 
-    private StateEntryValue buildStateEntry(String value) {
-        return StateEntryValue.newBuilder()
+    private DynamicDataValue buildDynamicDataValue(String value) {
+        return DynamicDataValue.newBuilder()
                 .setStringVal(FixedString.newBuilder().setValue(value))
                 .build();
     }
+
+    private class PlatformDataProviderUnderTest implements PlatformDataProvider {
+
+        private PlatformDataReceiver mRegisteredCallback = null;
+
+        private final Map<PlatformDataKey<?>, DynamicDataBuilders.DynamicDataValue> mCurrentValue =
+                new ArrayMap<>();
+
+        private final Set<PlatformDataKey<?>> mSupportedKeys= new ArraySet<>();
+
+        int mRegisterCount = 0;
+
+        PlatformDataProviderUnderTest() {
+            mSupportedKeys.add(KEY_FOO_PLATFORM);
+            mSupportedKeys.add(KEY_BAZ_PLATFORM);
+            mCurrentValue.put(
+                    KEY_FOO_PLATFORM,
+                    DynamicDataBuilders.DynamicDataValue.fromString("fooValue")
+            );
+            mCurrentValue.put(
+                    KEY_BAZ_PLATFORM,
+                    DynamicDataBuilders.DynamicDataValue.fromString("bazValue")
+            );
+        }
+
+        public void updateValues(
+                @NonNull Map<PlatformDataKey<?> , DynamicDataBuilders.DynamicDataValue> newData) {
+            mCurrentValue.putAll(newData);
+            if (mRegisteredCallback != null) {
+                mRegisteredCallback.onData(mCurrentValue);
+            }
+        }
+
+        @Override
+        public void registerForData(
+                @NonNull Executor executor,
+                @NonNull PlatformDataReceiver callback) {
+                mRegisterCount++;
+                mRegisteredCallback = callback;
+                executor.execute(() -> callback.onData(mCurrentValue));
+        }
+
+        @Override
+        public void unregisterForData() {
+            if (mRegisteredCallback != null) {
+                mRegisteredCallback.onInvalidated(mSupportedKeys);
+                mRegisterCount--;
+                mRegisteredCallback = null;
+            }
+        }
+    }
 }
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StringNodesTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StringNodesTest.java
index 7b74e8ed..f9afae6 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StringNodesTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/StringNodesTest.java
@@ -23,6 +23,8 @@
 import android.icu.util.ULocale;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicString;
 import androidx.wear.protolayout.expression.pipeline.StringNodes.FixedStringNode;
 import androidx.wear.protolayout.expression.pipeline.StringNodes.Int32FormatNode;
 import androidx.wear.protolayout.expression.pipeline.StringNodes.StateStringNode;
@@ -30,7 +32,7 @@
 import androidx.wear.protolayout.expression.proto.DynamicProto.Int32FormatOp;
 import androidx.wear.protolayout.expression.proto.DynamicProto.StateStringSource;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedString;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 
 import com.google.common.collect.ImmutableMap;
 
@@ -43,6 +45,7 @@
 
 @RunWith(AndroidJUnit4.class)
 public class StringNodesTest {
+    private static final AppDataKey<DynamicString> KEY_FOO = new AppDataKey<>("foo");
     @Test
     public void fixedStringNodeTest() {
         List<String> results = new ArrayList<>();
@@ -106,8 +109,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setStringVal(FixedString.newBuilder().setValue("bar"))
                                         .build()));
 
@@ -129,8 +132,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setStringVal(
                                                 FixedString.newBuilder().setValue(string500chars))
                                         .build()));
@@ -152,8 +155,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setStringVal(FixedString.newBuilder().setValue("bar"))
                                         .build()));
 
@@ -166,10 +169,10 @@
 
         results.clear();
 
-        oss.setStateEntryValuesProto(
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setStringVal(FixedString.newBuilder().setValue("baz"))
                                 .build()));
 
@@ -208,8 +211,8 @@
         StateStore oss =
                 new StateStore(
                         ImmutableMap.of(
-                                "foo",
-                                StateEntryValue.newBuilder()
+                                KEY_FOO,
+                                DynamicDataValue.newBuilder()
                                         .setStringVal(FixedString.newBuilder().setValue("bar"))
                                         .build()));
 
@@ -223,10 +226,11 @@
 
         results.clear();
         node.destroy();
-        oss.setStateEntryValuesProto(
+
+        oss.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        KEY_FOO,
+                        DynamicDataValue.newBuilder()
                                 .setStringVal(FixedString.newBuilder().setValue("baz"))
                                 .build()));
         assertThat(results).isEmpty();
diff --git a/wear/protolayout/protolayout-expression/api/current.txt b/wear/protolayout/protolayout-expression/api/current.txt
index b4f26d0..7f2e9cb 100644
--- a/wear/protolayout/protolayout-expression/api/current.txt
+++ b/wear/protolayout/protolayout-expression/api/current.txt
@@ -78,6 +78,10 @@
     method public androidx.wear.protolayout.expression.AnimationParameterBuilders.Repeatable.Builder setReverseRepeatOverride(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationParameters);
   }
 
+  public final class AppDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+    ctor public AppDataKey(String);
+  }
+
   public class ConditionScopes {
   }
 
@@ -98,8 +102,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool and(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool constant(boolean);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool ne(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool negate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool or(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
@@ -109,13 +113,13 @@
   public static interface DynamicBuilders.DynamicColor extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(@ColorInt int, @ColorInt int);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(@ColorInt int, @ColorInt int, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate();
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor constant(@ColorInt int);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor fromState(String);
     method public static androidx.wear.protolayout.expression.ConditionScopes.ConditionScope<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!,java.lang.Integer!> onCondition(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicColorByteArray();
   }
@@ -138,8 +142,8 @@
   public static interface DynamicBuilders.DynamicFloat extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(float, float);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(float, float, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 asInt();
@@ -151,8 +155,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(float);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat.FloatFormatter);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(float);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gte(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
@@ -207,8 +211,8 @@
   public static interface DynamicBuilders.DynamicInt32 extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(int, int);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(int, int, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat asFloat();
@@ -221,8 +225,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(int);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32.IntFormatter);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(int);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gte(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32);
@@ -268,8 +272,8 @@
   public static interface DynamicBuilders.DynamicString extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString concat(androidx.wear.protolayout.expression.DynamicBuilders.DynamicString);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString constant(String);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicString!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString fromState(String);
     method public static androidx.wear.protolayout.expression.ConditionScopes.ConditionScope<androidx.wear.protolayout.expression.DynamicBuilders.DynamicString!,java.lang.String!> onCondition(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicStringByteArray();
   }
@@ -277,15 +281,31 @@
   public static interface DynamicBuilders.DynamicType {
   }
 
-  public final class StateEntryBuilders {
+  public final class DynamicDataBuilders {
   }
 
-  public static interface StateEntryBuilders.StateEntryValue {
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromBool(boolean);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromColor(@ColorInt int);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromFloat(float);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromInt(int);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromString(String);
+  public static interface DynamicDataBuilders.DynamicDataValue {
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromBool(boolean);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromColor(@ColorInt int);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromFloat(float);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromInt(int);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromString(String);
+  }
+
+  public abstract class DynamicDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> {
+    method public String getKey();
+    method public String getNamespace();
+  }
+
+  public final class PlatformDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+    ctor public PlatformDataKey(String, String);
+  }
+
+  public class PlatformHealthSources {
+    method @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 dailySteps();
+    method @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat heartRateBpm();
+    field @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static final androidx.wear.protolayout.expression.PlatformDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!> DAILY_STEPS;
+    field @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static final androidx.wear.protolayout.expression.PlatformDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!> HEART_RATE_BPM;
   }
 
   public final class VersionBuilders {
diff --git a/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt b/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt
index adf05da..ace5549 100644
--- a/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt
+++ b/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt
@@ -78,6 +78,10 @@
     method public androidx.wear.protolayout.expression.AnimationParameterBuilders.Repeatable.Builder setReverseRepeatOverride(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationParameters);
   }
 
+  public final class AppDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+    ctor public AppDataKey(String);
+  }
+
   public class ConditionScopes {
   }
 
@@ -98,8 +102,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool and(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool constant(boolean);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool ne(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool negate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool or(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
@@ -109,13 +113,13 @@
   public static interface DynamicBuilders.DynamicColor extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(@ColorInt int, @ColorInt int);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(@ColorInt int, @ColorInt int, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate();
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor constant(@ColorInt int);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor fromState(String);
     method public static androidx.wear.protolayout.expression.ConditionScopes.ConditionScope<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!,java.lang.Integer!> onCondition(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicColorByteArray();
   }
@@ -138,8 +142,8 @@
   public static interface DynamicBuilders.DynamicFloat extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(float, float);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(float, float, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 asInt();
@@ -151,8 +155,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(float);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat.FloatFormatter);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(float);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gte(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
@@ -207,8 +211,8 @@
   public static interface DynamicBuilders.DynamicInt32 extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(int, int);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(int, int, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat asFloat();
@@ -221,8 +225,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(int);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32.IntFormatter);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(int);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gte(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32);
@@ -268,8 +272,8 @@
   public static interface DynamicBuilders.DynamicString extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString concat(androidx.wear.protolayout.expression.DynamicBuilders.DynamicString);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString constant(String);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicString!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString fromState(String);
     method public static androidx.wear.protolayout.expression.ConditionScopes.ConditionScope<androidx.wear.protolayout.expression.DynamicBuilders.DynamicString!,java.lang.String!> onCondition(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicStringByteArray();
   }
@@ -277,28 +281,39 @@
   public static interface DynamicBuilders.DynamicType {
   }
 
+  public final class DynamicDataBuilders {
+  }
+
+  public static interface DynamicDataBuilders.DynamicDataValue {
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromBool(boolean);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromColor(@ColorInt int);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromFloat(float);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromInt(int);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromString(String);
+  }
+
+  public abstract class DynamicDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> {
+    method public String getKey();
+    method public String getNamespace();
+  }
+
   @RequiresOptIn(level=androidx.annotation.RequiresOptIn.Level.ERROR) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD}) public @interface ExperimentalProtoLayoutExtensionApi {
   }
 
-  @androidx.wear.protolayout.expression.ProtoLayoutExperimental public class PlatformHealthSources {
-    method @RequiresApi(android.os.Build.VERSION_CODES.Q) @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) @androidx.wear.protolayout.expression.ProtoLayoutExperimental public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 dailySteps();
-    method @RequiresPermission(android.Manifest.permission.BODY_SENSORS) @androidx.wear.protolayout.expression.ProtoLayoutExperimental public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 heartRateBpm();
+  public final class PlatformDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+    ctor public PlatformDataKey(String, String);
+  }
+
+  public class PlatformHealthSources {
+    method @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 dailySteps();
+    method @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat heartRateBpm();
+    field @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static final androidx.wear.protolayout.expression.PlatformDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!> DAILY_STEPS;
+    field @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static final androidx.wear.protolayout.expression.PlatformDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!> HEART_RATE_BPM;
   }
 
   @RequiresOptIn(level=androidx.annotation.RequiresOptIn.Level.ERROR) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD}) public @interface ProtoLayoutExperimental {
   }
 
-  public final class StateEntryBuilders {
-  }
-
-  public static interface StateEntryBuilders.StateEntryValue {
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromBool(boolean);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromColor(@ColorInt int);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromFloat(float);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromInt(int);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromString(String);
-  }
-
   public final class VersionBuilders {
   }
 
diff --git a/wear/protolayout/protolayout-expression/api/restricted_current.txt b/wear/protolayout/protolayout-expression/api/restricted_current.txt
index b4f26d0..7f2e9cb 100644
--- a/wear/protolayout/protolayout-expression/api/restricted_current.txt
+++ b/wear/protolayout/protolayout-expression/api/restricted_current.txt
@@ -78,6 +78,10 @@
     method public androidx.wear.protolayout.expression.AnimationParameterBuilders.Repeatable.Builder setReverseRepeatOverride(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationParameters);
   }
 
+  public final class AppDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+    ctor public AppDataKey(String);
+  }
+
   public class ConditionScopes {
   }
 
@@ -98,8 +102,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool and(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool constant(boolean);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool ne(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool negate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool or(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
@@ -109,13 +113,13 @@
   public static interface DynamicBuilders.DynamicColor extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(@ColorInt int, @ColorInt int);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(@ColorInt int, @ColorInt int, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor animate();
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor constant(@ColorInt int);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor fromState(String);
     method public static androidx.wear.protolayout.expression.ConditionScopes.ConditionScope<androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor!,java.lang.Integer!> onCondition(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicColorByteArray();
   }
@@ -138,8 +142,8 @@
   public static interface DynamicBuilders.DynamicFloat extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(float, float);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(float, float, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat animate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 asInt();
@@ -151,8 +155,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(float);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat.FloatFormatter);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(float);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gte(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
@@ -207,8 +211,8 @@
   public static interface DynamicBuilders.DynamicInt32 extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(int, int);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(int, int, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(String);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(String, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>, androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationSpec);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 animate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat asFloat();
@@ -221,8 +225,8 @@
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(int);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString format(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32.IntFormatter);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 fromState(String);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gt(int);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool gte(androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32);
@@ -268,8 +272,8 @@
   public static interface DynamicBuilders.DynamicString extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicString concat(androidx.wear.protolayout.expression.DynamicBuilders.DynamicString);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString constant(String);
+    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString from(androidx.wear.protolayout.expression.DynamicDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicString!>);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString fromByteArray(byte[]);
-    method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicString fromState(String);
     method public static androidx.wear.protolayout.expression.ConditionScopes.ConditionScope<androidx.wear.protolayout.expression.DynamicBuilders.DynamicString!,java.lang.String!> onCondition(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicStringByteArray();
   }
@@ -277,15 +281,31 @@
   public static interface DynamicBuilders.DynamicType {
   }
 
-  public final class StateEntryBuilders {
+  public final class DynamicDataBuilders {
   }
 
-  public static interface StateEntryBuilders.StateEntryValue {
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromBool(boolean);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromColor(@ColorInt int);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromFloat(float);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromInt(int);
-    method public static androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue fromString(String);
+  public static interface DynamicDataBuilders.DynamicDataValue {
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromBool(boolean);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromColor(@ColorInt int);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromFloat(float);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromInt(int);
+    method public static androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue fromString(String);
+  }
+
+  public abstract class DynamicDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> {
+    method public String getKey();
+    method public String getNamespace();
+  }
+
+  public final class PlatformDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+    ctor public PlatformDataKey(String, String);
+  }
+
+  public class PlatformHealthSources {
+    method @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32 dailySteps();
+    method @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat heartRateBpm();
+    field @RequiresPermission(android.Manifest.permission.ACTIVITY_RECOGNITION) public static final androidx.wear.protolayout.expression.PlatformDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32!> DAILY_STEPS;
+    field @RequiresPermission(android.Manifest.permission.BODY_SENSORS) public static final androidx.wear.protolayout.expression.PlatformDataKey<androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat!> HEART_RATE_BPM;
   }
 
   public final class VersionBuilders {
diff --git a/wear/protolayout/protolayout-expression/build.gradle b/wear/protolayout/protolayout-expression/build.gradle
index c9777d4..f0bf70b 100644
--- a/wear/protolayout/protolayout-expression/build.gradle
+++ b/wear/protolayout/protolayout-expression/build.gradle
@@ -49,7 +49,7 @@
 }
 
 androidx {
-    name = "ProtoLayout Dynamic Expression"
+    name = "ProtoLayout Expression"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "Create dynamic expressions (for late evaluation by a remote evaluator)."
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/AppDataKey.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/AppDataKey.java
new file mode 100644
index 0000000..e350a5f
--- /dev/null
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/AppDataKey.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Represent a {@link DynamicDataKey} that references app/tile pushed state data.
+ *
+ * @param <T> The data type of the dynamic values that this key is bound to.
+ */
+public final class AppDataKey<T extends DynamicBuilders.DynamicType> extends DynamicDataKey<T> {
+    @NonNull private static final String DEFAULT_NAMESPACE = "";
+
+    /**
+     * Create a {@link AppDataKey} with the specified key.
+     * @param key The key in the state to bind to.
+     */
+    public AppDataKey(@NonNull String key) {
+        super(DEFAULT_NAMESPACE, key);
+    }
+}
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java
index 9374277..162b840 100644
--- a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java
@@ -36,7 +36,7 @@
 import androidx.wear.protolayout.expression.FixedValueBuilders.FixedInstant;
 import androidx.wear.protolayout.expression.FixedValueBuilders.FixedInt32;
 import androidx.wear.protolayout.expression.FixedValueBuilders.FixedString;
-import androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue;
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue;
 import androidx.wear.protolayout.expression.proto.DynamicProto;
 import androidx.wear.protolayout.protobuf.ExtensionRegistryLite;
 import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException;
@@ -677,6 +677,16 @@
             return mImpl.getSourceKey();
         }
 
+        /**
+         * Gets the namespace for the state key.
+         *
+         * @since 1.2
+         */
+        @NonNull
+        public String getSourceNamespace() {
+            return mImpl.getSourceNamespace();
+        }
+
         @Override
         @RestrictTo(Scope.LIBRARY_GROUP)
         @Nullable
@@ -712,7 +722,12 @@
         @Override
         @NonNull
         public String toString() {
-            return "StateInt32Source{" + "sourceKey=" + getSourceKey() + "}";
+            return "StateInt32Source{"
+                    + "sourceKey="
+                    + getSourceKey()
+                    + ", sourceNamespace="
+                    + getSourceNamespace()
+                    + "}";
         }
 
         /** Builder for {@link StateInt32Source}. */
@@ -735,6 +750,18 @@
                 return this;
             }
 
+            /**
+             * Sets the name space for the state key.
+             *
+             * @since 1.2
+             */
+            @NonNull
+            public Builder setSourceNamespace(@NonNull String sourceNamespace) {
+                mImpl.setSourceNamespace(sourceNamespace);
+                mFingerprint.recordPropertyUpdate(2, sourceNamespace.hashCode());
+                return this;
+            }
+
             @Override
             @NonNull
             public StateInt32Source build() {
@@ -1507,12 +1534,14 @@
         /**
          * Creates a {@link DynamicInt32} that is bound to the value of an item of the State.
          *
-         * @param stateKey The key to a {@link StateEntryValue} with an int value from the
-         *     provider's state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with an int value.
          */
         @NonNull
-        static DynamicInt32 fromState(@NonNull String stateKey) {
-            return new StateInt32Source.Builder().setSourceKey(stateKey).build();
+        static DynamicInt32 from(@NonNull DynamicDataKey<DynamicInt32> dynamicDataKey) {
+            return new StateInt32Source.Builder()
+                    .setSourceKey(dynamicDataKey.getKey())
+                    .setSourceNamespace(dynamicDataKey.getNamespace())
+                    .build();
         }
 
         /**
@@ -1548,12 +1577,13 @@
          * time the state value changes, this {@link DynamicInt32} will animate from its current
          * value to the new value (from the state).
          *
-         * @param stateKey The key to a {@link StateEntryValue} with an int value from the
-         *     provider's state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with an int value.
          */
         @NonNull
-        static DynamicInt32 animate(@NonNull String stateKey) {
-            return new AnimatableDynamicInt32.Builder().setInput(fromState(stateKey)).build();
+        static DynamicInt32 animate(@NonNull DynamicDataKey<DynamicInt32> dynamicDataKey) {
+            return new AnimatableDynamicInt32.Builder()
+                    .setInput(from(dynamicDataKey))
+                    .build();
         }
 
         /**
@@ -1561,15 +1591,15 @@
          * time the state value changes, this {@link DynamicInt32} will animate from its current
          * value to the new value (from the state).
          *
-         * @param stateKey The key to a {@link StateEntryValue} with an int value from the
-         *     provider's state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with an int value
          * @param animationSpec The animation parameters.
          */
         @NonNull
         static DynamicInt32 animate(
-                @NonNull String stateKey, @NonNull AnimationSpec animationSpec) {
+                @NonNull DynamicDataKey<DynamicInt32> dynamicDataKey,
+                @NonNull AnimationSpec animationSpec) {
             return new AnimatableDynamicInt32.Builder()
-                    .setInput(fromState(stateKey))
+                    .setInput(from(dynamicDataKey))
                     .setAnimationSpec(animationSpec)
                     .build();
         }
@@ -2643,6 +2673,17 @@
             return mImpl.getSourceKey();
         }
 
+        /**
+         * Gets the namespace for the state key.
+         *
+         * @since 1.2
+         */
+        @NonNull
+        public String getSourceNamespace() {
+            return mImpl.getSourceNamespace();
+        }
+
+
         @Override
         @RestrictTo(Scope.LIBRARY_GROUP)
         @Nullable
@@ -2678,7 +2719,11 @@
         @Override
         @NonNull
         public String toString() {
-            return "StateStringSource{" + "sourceKey=" + getSourceKey() + "}";
+            return "StateStringSource{"+ "sourceKey="
+                    + getSourceKey()
+                    + ", sourceNamespace="
+                    + getSourceNamespace()
+                    + "}";
         }
 
         /** Builder for {@link StateStringSource}. */
@@ -2701,6 +2746,18 @@
                 return this;
             }
 
+            /**
+             * Sets the name space for the state key.
+             *
+             * @since 1.2
+             */
+            @NonNull
+            public Builder setSourceNamespace(@NonNull String sourceNamespace) {
+                mImpl.setSourceNamespace(sourceNamespace);
+                mFingerprint.recordPropertyUpdate(2, sourceNamespace.hashCode());
+                return this;
+            }
+
             @Override
             @NonNull
             public StateStringSource build() {
@@ -3258,12 +3315,14 @@
          * Creates a {@link DynamicString} that is bound to the value of an item of the State. The
          * resulted {@link DynamicString} is subject to being truncated if it's too long.
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a string value from the
-         *     provider's state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with a string value.
          */
         @NonNull
-        static DynamicString fromState(@NonNull String stateKey) {
-            return new StateStringSource.Builder().setSourceKey(stateKey).build();
+        static DynamicString from(@NonNull DynamicDataKey<DynamicString> dynamicDataKey) {
+            return new StateStringSource.Builder()
+                    .setSourceKey(dynamicDataKey.getKey())
+                    .setSourceNamespace(dynamicDataKey.getNamespace())
+                    .build();
         }
 
         /**
@@ -3520,6 +3579,17 @@
             return mImpl.getSourceKey();
         }
 
+        /**
+         * Gets the namespace for the state key.
+         *
+         * @since 1.2
+         */
+        @NonNull
+        public String getSourceNamespace() {
+            return mImpl.getSourceNamespace();
+        }
+
+
         @Override
         @RestrictTo(Scope.LIBRARY_GROUP)
         @Nullable
@@ -3555,7 +3625,11 @@
         @Override
         @NonNull
         public String toString() {
-            return "StateFloatSource{" + "sourceKey=" + getSourceKey() + "}";
+            return "StateFloatSource{"+ "sourceKey="
+                    + getSourceKey()
+                    + ", sourceNamespace="
+                    + getSourceNamespace()
+                    + "}";
         }
 
         /** Builder for {@link StateFloatSource}. */
@@ -3578,6 +3652,18 @@
                 return this;
             }
 
+            /**
+             * Sets the name space for the state key.
+             *
+             * @since 1.2
+             */
+            @NonNull
+            public Builder setSourceNamespace(@NonNull String sourceNamespace) {
+                mImpl.setSourceNamespace(sourceNamespace);
+                mFingerprint.recordPropertyUpdate(2, sourceNamespace.hashCode());
+                return this;
+            }
+
             @Override
             @NonNull
             public StateFloatSource build() {
@@ -4029,12 +4115,14 @@
         /**
          * Creates a {@link DynamicFloat} that is bound to the value of an item of the State.
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a float value from the
-         *     provider's state.
+         * @param dynamicDataKey The data source to a {@link DynamicDataValue} with a float value.
          */
         @NonNull
-        static DynamicFloat fromState(@NonNull String stateKey) {
-            return new StateFloatSource.Builder().setSourceKey(stateKey).build();
+        static DynamicFloat from(@NonNull DynamicDataKey<DynamicFloat> dynamicDataKey) {
+            return new StateFloatSource.Builder()
+                    .setSourceKey(dynamicDataKey.getKey())
+                    .setSourceNamespace(dynamicDataKey.getNamespace())
+                    .build();
         }
 
         /**
@@ -4071,12 +4159,13 @@
          * time the state value changes, this {@link DynamicFloat} will animate from its current
          * value to the new value (from the state).
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a float value from the
-         *     providers state.
+         * @param dynamicDataKey The data source to a {@link DynamicDataValue} with a float value.
          */
         @NonNull
-        static DynamicFloat animate(@NonNull String stateKey) {
-            return new AnimatableDynamicFloat.Builder().setInput(fromState(stateKey)).build();
+        static DynamicFloat animate(@NonNull DynamicDataKey<DynamicFloat> dynamicDataKey) {
+            return new AnimatableDynamicFloat.Builder()
+                    .setInput(from(dynamicDataKey))
+                    .build();
         }
 
         /**
@@ -4084,15 +4173,15 @@
          * time the state value changes, this {@link DynamicFloat} will animate from its current
          * value to the new value (from the state).
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a float value from the
-         *     providers state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with a float value.
          * @param animationSpec The animation parameters.
          */
         @NonNull
         static DynamicFloat animate(
-                @NonNull String stateKey, @NonNull AnimationSpec animationSpec) {
+                @NonNull DynamicDataKey<DynamicFloat> dynamicDataKey,
+                @NonNull AnimationSpec animationSpec) {
             return new AnimatableDynamicFloat.Builder()
-                    .setInput(fromState(stateKey))
+                    .setInput(from(dynamicDataKey))
                     .setAnimationSpec(animationSpec)
                     .build();
         }
@@ -4935,6 +5024,17 @@
             return mImpl.getSourceKey();
         }
 
+        /**
+         * Gets the namespace for the state key.
+         *
+         * @since 1.2
+         */
+        @NonNull
+        public String getSourceNamespace() {
+            return mImpl.getSourceNamespace();
+        }
+
+
         @Override
         @RestrictTo(Scope.LIBRARY_GROUP)
         @Nullable
@@ -4970,7 +5070,12 @@
         @Override
         @NonNull
         public String toString() {
-            return "StateBoolSource{" + "sourceKey=" + getSourceKey() + "}";
+            return "StateBoolSource{"
+                    + "sourceKey="
+                    + getSourceKey()
+                    + ", sourceNamespace="
+                    + getSourceNamespace()
+                    + "}";
         }
 
         /** Builder for {@link StateBoolSource}. */
@@ -4994,6 +5099,18 @@
                 return this;
             }
 
+            /**
+             * Sets the name space for the state key.
+             *
+             * @since 1.2
+             */
+            @NonNull
+            public Builder setSourceNamespace(@NonNull String sourceNamespace) {
+                mImpl.setSourceNamespace(sourceNamespace);
+                mFingerprint.recordPropertyUpdate(2, sourceNamespace.hashCode());
+                return this;
+            }
+
             @Override
             @NonNull
             public StateBoolSource build() {
@@ -5579,12 +5696,14 @@
         /**
          * Creates a {@link DynamicBool} that is bound to the value of an item of the State.
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a boolean value from the
-         *     provider's state.
+         * @param dynamicDataKey The key to a {@link DynamicDataValue} with a boolean value.
          */
         @NonNull
-        static DynamicBool fromState(@NonNull String stateKey) {
-            return new StateBoolSource.Builder().setSourceKey(stateKey).build();
+        static DynamicBool from(@NonNull DynamicDataKey<DynamicBool> dynamicDataKey) {
+            return new StateBoolSource.Builder()
+                    .setSourceKey(dynamicDataKey.getKey())
+                    .setSourceNamespace(dynamicDataKey.getNamespace())
+                    .build();
         }
 
         /**
@@ -5727,6 +5846,16 @@
             return mImpl.getSourceKey();
         }
 
+        /**
+         * Gets the namespace for the state key.
+         *
+         * @since 1.2
+         */
+        @NonNull
+        public String getSourceNamespace() {
+            return mImpl.getSourceNamespace();
+        }
+
         @Override
         @RestrictTo(Scope.LIBRARY_GROUP)
         @Nullable
@@ -5762,7 +5891,12 @@
         @Override
         @NonNull
         public String toString() {
-            return "StateColorSource{" + "sourceKey=" + getSourceKey() + "}";
+            return "StateColorSource{"
+                    + "sourceKey="
+                    + getSourceKey()
+                    + ", sourceNamespace="
+                    + getSourceNamespace()
+                    + "}";
         }
 
         /** Builder for {@link StateColorSource}. */
@@ -5785,6 +5919,18 @@
                 return this;
             }
 
+            /**
+             * Sets the name space for the state key.
+             *
+             * @since 1.2
+             */
+            @NonNull
+            public Builder setSourceNamespace(@NonNull String sourceNamespace) {
+                mImpl.setSourceNamespace(sourceNamespace);
+                mFingerprint.recordPropertyUpdate(2, sourceNamespace.hashCode());
+                return this;
+            }
+
             @Override
             @NonNull
             public StateColorSource build() {
@@ -6283,12 +6429,14 @@
         /**
          * Creates a {@link DynamicColor} that is bound to the value of an item of the State.
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a color value from the
-         *     provider's state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with a color value.
          */
         @NonNull
-        static DynamicColor fromState(@NonNull String stateKey) {
-            return new StateColorSource.Builder().setSourceKey(stateKey).build();
+        static DynamicColor from(@NonNull DynamicDataKey<DynamicColor> dynamicDataKey) {
+            return new StateColorSource.Builder()
+                    .setSourceKey(dynamicDataKey.getKey())
+                    .setSourceNamespace(dynamicDataKey.getNamespace())
+                    .build();
         }
 
         /**
@@ -6326,12 +6474,13 @@
          * time the state value changes, this {@link DynamicColor} will animate from its current
          * value to the new value (from the state).
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a color value from the
-         *     provider's state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with a color value.
          */
         @NonNull
-        static DynamicColor animate(@NonNull String stateKey) {
-            return new AnimatableDynamicColor.Builder().setInput(fromState(stateKey)).build();
+        static DynamicColor animate(@NonNull DynamicDataKey<DynamicColor> dynamicDataKey) {
+            return new AnimatableDynamicColor.Builder()
+                    .setInput(from(dynamicDataKey))
+                    .build();
         }
 
         /**
@@ -6339,15 +6488,15 @@
          * time the state value changes, this {@link DynamicColor} will animate from its current
          * value to the new value (from the state).
          *
-         * @param stateKey The key to a {@link StateEntryValue} with a color value from the
-         *     provider's state.
+         * @param dynamicDataKey The source key to a {@link DynamicDataValue} with a color value.
          * @param animationSpec The animation parameters.
          */
         @NonNull
         static DynamicColor animate(
-                @NonNull String stateKey, @NonNull AnimationSpec animationSpec) {
+                @NonNull DynamicDataKey<DynamicColor> dynamicDataKey,
+                @NonNull AnimationSpec animationSpec) {
             return new AnimatableDynamicColor.Builder()
-                    .setInput(fromState(stateKey))
+                    .setInput(from(dynamicDataKey))
                     .setAnimationSpec(animationSpec)
                     .build();
         }
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/StateEntryBuilders.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicDataBuilders.java
similarity index 71%
rename from wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/StateEntryBuilders.java
rename to wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicDataBuilders.java
index 304b9b8..7f4eddd 100644
--- a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/StateEntryBuilders.java
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicDataBuilders.java
@@ -16,7 +16,6 @@
 
 package androidx.wear.protolayout.expression;
 
-import android.annotation.SuppressLint;
 import androidx.annotation.ColorInt;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -27,53 +26,53 @@
 import androidx.wear.protolayout.expression.FixedValueBuilders.FixedFloat;
 import androidx.wear.protolayout.expression.FixedValueBuilders.FixedInt32;
 import androidx.wear.protolayout.expression.FixedValueBuilders.FixedString;
-import androidx.wear.protolayout.expression.proto.StateEntryProto;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto;
 
-/** Builders for state entries of a provider. */
-public final class StateEntryBuilders {
-  private StateEntryBuilders() {}
+/** Builders for dynamic data value of a provider. */
+public final class DynamicDataBuilders {
+  private DynamicDataBuilders() {}
 
   /**
-   * Interface defining a state entry value.
+   * Interface defining a dynamic data value.
    *
    * @since 1.2
    */
-  public interface StateEntryValue {
+  public interface DynamicDataValue {
     /**
      * Get the protocol buffer representation of this object.
      *
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
-    StateEntryProto.StateEntryValue toStateEntryValueProto();
+    DynamicDataProto.DynamicDataValue toDynamicDataValueProto();
 
-    /** Creates a boolean {@link StateEntryValue}. */
+    /** Creates a boolean {@link DynamicDataValue}. */
     @NonNull
-    static StateEntryValue fromBool(boolean constant) {
+    static DynamicDataValue fromBool(boolean constant) {
       return new FixedBool.Builder().setValue(constant).build();
     }
 
-    /** Creates a int {@link StateEntryValue}. */
+    /** Creates a int {@link DynamicDataValue}. */
     @NonNull
-    static StateEntryValue fromInt(int constant) {
+    static DynamicDataValue fromInt(int constant) {
       return new FixedInt32.Builder().setValue(constant).build();
     }
 
-    /** Creates a float {@link StateEntryValue}. */
+    /** Creates a float {@link DynamicDataValue}. */
     @NonNull
-    static StateEntryValue fromFloat(float constant) {
+    static DynamicDataValue fromFloat(float constant) {
       return new FixedFloat.Builder().setValue(constant).build();
     }
 
-    /** Creates a color {@link StateEntryValue}. */
+    /** Creates a color {@link DynamicDataValue}. */
     @NonNull
-    static StateEntryValue fromColor(@ColorInt int constant) {
+    static DynamicDataValue fromColor(@ColorInt int constant) {
       return new FixedColor.Builder().setArgb(constant).build();
     }
 
-    /** Creates a string {@link StateEntryValue}. */
+    /** Creates a string {@link DynamicDataValue}. */
     @NonNull
-    static StateEntryValue fromString(@NonNull String constant) {
+    static DynamicDataValue fromString(@NonNull String constant) {
       return new FixedString.Builder().setValue(constant).build();
     }
 
@@ -85,7 +84,7 @@
     @Nullable
     Fingerprint getFingerprint();
 
-    /** Builder to create {@link StateEntryValue} objects.
+    /** Builder to create {@link DynamicDataValue} objects.
      *
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
@@ -93,7 +92,7 @@
 
       /** Builds an instance with values accumulated in this Builder. */
       @NonNull
-      StateEntryValue build();
+      DynamicDataValue build();
     }
   }
 
@@ -104,8 +103,8 @@
    */
   @RestrictTo(Scope.LIBRARY_GROUP)
   @NonNull
-  public static StateEntryValue stateEntryValueFromProto(
-      @NonNull StateEntryProto.StateEntryValue proto) {
+  public static DynamicDataValue dynamicDataValueFromProto(
+      @NonNull DynamicDataProto.DynamicDataValue proto) {
     if (proto.hasStringVal()) {
       return FixedString.fromProto(proto.getStringVal());
     }
@@ -121,6 +120,6 @@
     if (proto.hasColorVal()) {
       return FixedColor.fromProto(proto.getColorVal());
     }
-    throw new IllegalStateException("Proto was not a recognised instance of StateEntryValue");
+    throw new IllegalStateException("Proto was not a recognised instance of DynamicDataValue");
   }
 }
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicDataKey.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicDataKey.java
new file mode 100644
index 0000000..29c060d
--- /dev/null
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicDataKey.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.Objects;
+
+/**
+ * Represent a key that references a dynamic value source, such as state pushed by app/tile or
+ * real-time data from the platform.
+ *
+ * @param <T> The data type of the dynamic values that this key is bound to.
+ */
+public abstract class DynamicDataKey<T extends DynamicBuilders.DynamicType> {
+    @NonNull private final String mKey;
+    @NonNull private final String mNamespace;
+
+    /**
+     * Create a {@link DynamicDataKey} with the specified key in the given namespace.
+     * @param namespace The namespace of the key for the dynamic data source.
+     * @param key The key that references the dynamic data source.
+     */
+    DynamicDataKey(@NonNull String namespace, @NonNull String key) {
+        mKey = key;
+        mNamespace = namespace;
+    }
+
+    /**
+     * Gets the key that references the dynamic data source
+     */
+    @NonNull public String getKey() {
+        return mKey;
+    }
+
+    /**
+     * Gets the namespace of the key for the dynamic data source.
+     */
+    @NonNull public String getNamespace() {
+        return mNamespace;
+    }
+
+    @Override
+    public boolean equals(@Nullable Object other) {
+        if (other == this) {
+            return true;
+        }
+
+        if (!(other instanceof DynamicDataKey)) {
+            return false;
+        }
+
+        DynamicDataKey<?> comp = (DynamicDataKey<?>) other;
+
+        return mKey.equals(comp.getKey()) && mNamespace.equals(comp.getNamespace());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mKey,mNamespace);
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        return String.format("namespace = %s, key = %s", mNamespace, mKey);
+    }
+}
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/FixedValueBuilders.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/FixedValueBuilders.java
index f4f2cb7..5d6d870 100644
--- a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/FixedValueBuilders.java
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/FixedValueBuilders.java
@@ -24,7 +24,7 @@
 import androidx.annotation.RestrictTo.Scope;
 import androidx.wear.protolayout.expression.proto.DynamicProto;
 import androidx.wear.protolayout.expression.proto.FixedProto;
-import androidx.wear.protolayout.expression.proto.StateEntryProto;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto;
 
 /**
  * Builders for fixed value primitive types that can be used in dynamic expressions and in for state
@@ -39,7 +39,7 @@
    * @since 1.2
    */
   static final class FixedInt32
-      implements DynamicBuilders.DynamicInt32, StateEntryBuilders.StateEntryValue {
+      implements DynamicBuilders.DynamicInt32, DynamicDataBuilders.DynamicDataValue {
     private final FixedProto.FixedInt32 mImpl;
     @Nullable private final Fingerprint mFingerprint;
 
@@ -92,8 +92,8 @@
     @Override
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
-    public StateEntryProto.StateEntryValue toStateEntryValueProto() {
-      return StateEntryProto.StateEntryValue.newBuilder().setInt32Val(mImpl).build();
+    public DynamicDataProto.DynamicDataValue toDynamicDataValueProto() {
+      return DynamicDataProto.DynamicDataValue.newBuilder().setInt32Val(mImpl).build();
     }
 
     @Override
@@ -105,7 +105,7 @@
     /** Builder for {@link FixedInt32}. */
     public static final class Builder
         implements DynamicBuilders.DynamicInt32.Builder,
-            StateEntryBuilders.StateEntryValue.Builder {
+            DynamicDataBuilders.DynamicDataValue.Builder {
       private final FixedProto.FixedInt32.Builder mImpl = FixedProto.FixedInt32.newBuilder();
       private final Fingerprint mFingerprint = new Fingerprint(974881783);
 
@@ -137,7 +137,7 @@
    * @since 1.2
    */
   static final class FixedString
-      implements DynamicBuilders.DynamicString, StateEntryBuilders.StateEntryValue {
+      implements DynamicBuilders.DynamicString, DynamicDataBuilders.DynamicDataValue {
     private final FixedProto.FixedString mImpl;
     @Nullable private final Fingerprint mFingerprint;
 
@@ -191,8 +191,8 @@
     @Override
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
-    public StateEntryProto.StateEntryValue toStateEntryValueProto() {
-      return StateEntryProto.StateEntryValue.newBuilder().setStringVal(mImpl).build();
+    public DynamicDataProto.DynamicDataValue toDynamicDataValueProto() {
+      return DynamicDataProto.DynamicDataValue.newBuilder().setStringVal(mImpl).build();
     }
 
     @Override
@@ -204,7 +204,7 @@
     /** Builder for {@link FixedString}. */
     public static final class Builder
         implements DynamicBuilders.DynamicString.Builder,
-            StateEntryBuilders.StateEntryValue.Builder {
+            DynamicDataBuilders.DynamicDataValue.Builder {
       private final FixedProto.FixedString.Builder mImpl = FixedProto.FixedString.newBuilder();
       private final Fingerprint mFingerprint = new Fingerprint(1963352072);
 
@@ -236,7 +236,7 @@
    * @since 1.2
    */
   static final class FixedFloat
-      implements DynamicBuilders.DynamicFloat, StateEntryBuilders.StateEntryValue {
+      implements DynamicBuilders.DynamicFloat, DynamicDataBuilders.DynamicDataValue {
     private final FixedProto.FixedFloat mImpl;
     @Nullable private final Fingerprint mFingerprint;
 
@@ -290,8 +290,8 @@
     @Override
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
-    public StateEntryProto.StateEntryValue toStateEntryValueProto() {
-      return StateEntryProto.StateEntryValue.newBuilder().setFloatVal(mImpl).build();
+    public DynamicDataProto.DynamicDataValue toDynamicDataValueProto() {
+      return DynamicDataProto.DynamicDataValue.newBuilder().setFloatVal(mImpl).build();
     }
 
     @Override
@@ -303,7 +303,7 @@
     /** Builder for {@link FixedFloat}. */
     public static final class Builder
         implements DynamicBuilders.DynamicFloat.Builder,
-            StateEntryBuilders.StateEntryValue.Builder {
+            DynamicDataBuilders.DynamicDataValue.Builder {
       private final FixedProto.FixedFloat.Builder mImpl = FixedProto.FixedFloat.newBuilder();
       private final Fingerprint mFingerprint = new Fingerprint(-144724541);
 
@@ -338,7 +338,7 @@
    * @since 1.2
    */
   static final class FixedBool
-      implements DynamicBuilders.DynamicBool, StateEntryBuilders.StateEntryValue {
+      implements DynamicBuilders.DynamicBool, DynamicDataBuilders.DynamicDataValue {
     private final FixedProto.FixedBool mImpl;
     @Nullable private final Fingerprint mFingerprint;
 
@@ -391,8 +391,8 @@
     @Override
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
-    public StateEntryProto.StateEntryValue toStateEntryValueProto() {
-      return StateEntryProto.StateEntryValue.newBuilder().setBoolVal(mImpl).build();
+    public DynamicDataProto.DynamicDataValue toDynamicDataValueProto() {
+      return DynamicDataProto.DynamicDataValue.newBuilder().setBoolVal(mImpl).build();
     }
 
     @Override
@@ -403,7 +403,8 @@
 
     /** Builder for {@link FixedBool}. */
     public static final class Builder
-        implements DynamicBuilders.DynamicBool.Builder, StateEntryBuilders.StateEntryValue.Builder {
+        implements DynamicBuilders.DynamicBool.Builder,
+            DynamicDataBuilders.DynamicDataValue.Builder {
       private final FixedProto.FixedBool.Builder mImpl = FixedProto.FixedBool.newBuilder();
       private final Fingerprint mFingerprint = new Fingerprint(-665116398);
 
@@ -436,7 +437,7 @@
    * @since 1.2
    */
   static final class FixedColor
-      implements DynamicBuilders.DynamicColor, StateEntryBuilders.StateEntryValue {
+      implements DynamicBuilders.DynamicColor, DynamicDataBuilders.DynamicDataValue {
     private final FixedProto.FixedColor mImpl;
     @Nullable private final Fingerprint mFingerprint;
 
@@ -490,8 +491,8 @@
     @Override
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
-    public StateEntryProto.StateEntryValue toStateEntryValueProto() {
-      return StateEntryProto.StateEntryValue.newBuilder().setColorVal(mImpl).build();
+    public DynamicDataProto.DynamicDataValue toDynamicDataValueProto() {
+      return DynamicDataProto.DynamicDataValue.newBuilder().setColorVal(mImpl).build();
     }
 
     @Override
@@ -503,7 +504,7 @@
     /** Builder for {@link FixedColor}. */
     public static final class Builder
         implements DynamicBuilders.DynamicColor.Builder,
-            StateEntryBuilders.StateEntryValue.Builder {
+            DynamicDataBuilders.DynamicDataValue.Builder {
       private final FixedProto.FixedColor.Builder mImpl = FixedProto.FixedColor.newBuilder();
       private final Fingerprint mFingerprint = new Fingerprint(-1895809356);
 
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/PlatformDataKey.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/PlatformDataKey.java
new file mode 100644
index 0000000..24ed21e
--- /dev/null
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/PlatformDataKey.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+
+/**
+ * Represent a {@link DynamicDataKey} that references real-time data from the platform.
+ *
+ * <p> The [namespace, key] tuple creates the actual reference, so that a single key can refer to
+ * two different sources in two different namespaces.
+ *
+ * <p> The namespace must not be empty. Additionally, the "protolayout" namespace (and its
+ * lowercase and uppercase variations) are reserved for the default platform data sources and
+ * should not be used for any custom OEM data source. To choose the namespace that does not
+ * conflict with an existing one, use a unique prefix for your namespace, for example, company
+ * name or product name.
+ *
+ * @param <T> The data type of the dynamic values that this key is bound to.
+ */
+public final class PlatformDataKey<T extends DynamicBuilders.DynamicType> extends DynamicDataKey<T>
+{
+    @NonNull private static final String RESERVED_NAMESPACE = "protolayout";
+
+    /**
+     * Create a {@link PlatformDataKey} with the specified key in the given namespace.
+     *
+     * @param namespace The namespace of the key for the platform data source.
+     * @param key The key that references the platform data source.
+     */
+    public PlatformDataKey(@NonNull String namespace, @NonNull String key) {
+        super(namespace, key);
+        if (namespace.isEmpty()) {
+            throw new IllegalArgumentException("Custom data source namespace must not be empty.");
+        }
+
+        if (RESERVED_NAMESPACE.equalsIgnoreCase(namespace)) {
+            throw new IllegalArgumentException(String.format(
+                    "Custom data source must not use the reserved namespace:%s",
+                    RESERVED_NAMESPACE));
+        }
+    }
+
+    /**
+     * Create a {@link PlatformDataKey} with the specified key in the reserved namespace.
+     * This should only be used by protolayout library internally for default platform data sources.
+     *
+     * @param key The key that references the platform data source
+     */
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    public PlatformDataKey(@NonNull String key) {
+        super(RESERVED_NAMESPACE, key);
+    }
+}
+
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/PlatformHealthSources.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/PlatformHealthSources.java
index 0974b70..8be1449 100644
--- a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/PlatformHealthSources.java
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/PlatformHealthSources.java
@@ -20,38 +20,57 @@
 import static androidx.wear.protolayout.expression.DynamicBuilders.PLATFORM_INT32_SOURCE_TYPE_DAILY_STEP_COUNT;
 
 import android.Manifest;
-import android.os.Build.VERSION_CODES;
 
 import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
 import androidx.annotation.RequiresPermission;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat;
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32;
 import androidx.wear.protolayout.expression.DynamicBuilders.PlatformInt32Source;
 
 /** Utility class provides utils to access health data. */
-@ProtoLayoutExperimental
 public class PlatformHealthSources {
     private PlatformHealthSources() {
     }
 
-    /** Creates a {@link DynamicInt32} which receives the current heat rate from the sensor. */
-    @RequiresPermission(Manifest.permission.BODY_SENSORS)
-    @ProtoLayoutExperimental
+    /**
+     * The data source key for heart rate bpm data from default platform health sources.
+     */
     @NonNull
-    public static DynamicInt32 heartRateBpm() {
+    @RequiresPermission(Manifest.permission.BODY_SENSORS)
+    public static final PlatformDataKey<DynamicFloat> HEART_RATE_BPM =
+            new PlatformDataKey<>("HeartRate");
+
+    /**
+     * The data source key for daily step count data from default platform health sources.
+     */
+    @NonNull
+    @RequiresPermission(Manifest.permission.ACTIVITY_RECOGNITION)
+    public static final PlatformDataKey<DynamicInt32> DAILY_STEPS =
+            new PlatformDataKey<>("Daily Steps");
+
+    /**
+     * Creates a {@link DynamicInt32} which receives the current heat rate from the sensor.
+     *
+     * <p> This method provides backward compatibility and is preferred over using {@code
+     * HEART_RATE_BPM} directly.
+     */
+    @RequiresPermission(Manifest.permission.BODY_SENSORS)
+    @NonNull
+    public static DynamicFloat heartRateBpm() {
         return new PlatformInt32Source.Builder()
                 .setSourceType(PLATFORM_INT32_SOURCE_TYPE_CURRENT_HEART_RATE)
-                .build();
+                .build().asFloat();
     }
 
     /**
      * Creates a {@link DynamicInt32} which receives the current daily steps from the sensor.
      * This is the total step count over a day, where the previous day ends and a new day begins at
      * 12:00 AM local time.
+     *
+     * <p> This method provides backward compatibility and is preferred over using {@code
+     * DAILY_STEPS} directly.
      */
-    @RequiresApi(VERSION_CODES.Q)
     @RequiresPermission(Manifest.permission.ACTIVITY_RECOGNITION)
-    @ProtoLayoutExperimental
     @NonNull
     public static DynamicInt32 dailySteps() {
         return new PlatformInt32Source.Builder()
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java
index beb1207..c7263ec 100644
--- a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java
+++ b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java
@@ -51,7 +51,7 @@
 
     @Test
     public void stateEntryValueBool() {
-        DynamicBool stateBool = DynamicBool.fromState(STATE_KEY);
+        DynamicBool stateBool = DynamicBool.from(new AppDataKey<>(STATE_KEY));
 
         assertThat(stateBool.toDynamicBoolProto().getStateSource().getSourceKey())
                 .isEqualTo(STATE_KEY);
@@ -59,8 +59,8 @@
 
     @Test
     public void stateToString() {
-        assertThat(DynamicBool.fromState("key").toString())
-                .isEqualTo("StateBoolSource{sourceKey=key}");
+        assertThat(DynamicBool.from(new AppDataKey<>("key")).toString())
+                .isEqualTo("StateBoolSource{sourceKey=key, sourceNamespace=}");
     }
 
     @Test
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicColorTest.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicColorTest.java
index 9f03379..2751e61 100644
--- a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicColorTest.java
+++ b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicColorTest.java
@@ -58,7 +58,7 @@
 
   @Test
   public void stateEntryValueColor() {
-    DynamicColor stateColor = DynamicColor.fromState(STATE_KEY);
+    DynamicColor stateColor = DynamicColor.from(new AppDataKey<>(STATE_KEY));
 
     assertThat(stateColor.toDynamicColorProto().getStateSource().getSourceKey())
         .isEqualTo(STATE_KEY);
@@ -66,8 +66,8 @@
 
   @Test
   public void stateToString() {
-    assertThat(DynamicColor.fromState("key").toString())
-        .isEqualTo("StateColorSource{sourceKey=key}");
+    assertThat(DynamicColor.from(new AppDataKey<>("key")).toString())
+        .isEqualTo("StateColorSource{sourceKey=key, sourceNamespace=}");
   }
 
   @Test
@@ -104,10 +104,11 @@
 
   @Test
   public void stateAnimatedColor() {
-    DynamicColor stateColor = DynamicColor.fromState(STATE_KEY);
+    AppDataKey<DynamicColor> source = new AppDataKey<>(STATE_KEY);
+    DynamicColor stateColor = DynamicColor.from(source);
 
-    DynamicColor animatedColor = DynamicColor.animate(STATE_KEY);
-    DynamicColor animatedColorWithSpec = DynamicColor.animate(STATE_KEY, SPEC);
+    DynamicColor animatedColor = DynamicColor.animate(source);
+    DynamicColor animatedColorWithSpec = DynamicColor.animate(source, SPEC);
 
     assertThat(animatedColor.toDynamicColorProto().getAnimatableDynamic().hasAnimationSpec())
         .isFalse();
@@ -124,7 +125,7 @@
   public void stateAnimatedToString() {
     assertThat(
             DynamicColor.animate(
-                    /* stateKey= */ "key",
+                    /* stateKey= */ new AppDataKey<>("key"),
                     new AnimationSpec.Builder()
                             .setAnimationParameters(
                                     new AnimationParameters.Builder().setDelayMillis(1).build())
@@ -132,7 +133,8 @@
                 .toString())
         .isEqualTo(
             "AnimatableDynamicColor{"
-                + "input=StateColorSource{sourceKey=key}, animationSpec=AnimationSpec{"
+                + "input=StateColorSource{sourceKey=key, sourceNamespace=}, "
+                + "animationSpec=AnimationSpec{"
                 + "animationParameters=AnimationParameters{durationMillis=0, easing=null, "
                 + "delayMillis=1}, repeatable=null}}");
   }
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicDataValueTest.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicDataValueTest.java
new file mode 100644
index 0000000..47237c4
--- /dev/null
+++ b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicDataValueTest.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public final class DynamicDataValueTest {
+  @Test
+  public void boolDynamicDataValue() {
+    DynamicDataValue boolDynamicDataValue = DynamicDataValue.fromBool(true);
+
+    assertThat(boolDynamicDataValue.toDynamicDataValueProto().getBoolVal().getValue()).isTrue();
+  }
+
+  @Test
+  public void colorDynamicDataValue() {
+    DynamicDataValue colorDynamicDataValue = DynamicDataValue.fromColor(0xff00ff00);
+
+    assertThat(colorDynamicDataValue.toDynamicDataValueProto().getColorVal().getArgb())
+        .isEqualTo(0xff00ff00);
+  }
+
+  @Test
+  public void floatDynamicDataValue() {
+    DynamicDataValue floatDynamicDataValue = DynamicDataValue.fromFloat(42.42f);
+
+    assertThat(floatDynamicDataValue.toDynamicDataValueProto().getFloatVal().getValue())
+        .isWithin(0.0001f)
+        .of(42.42f);
+  }
+
+  @Test
+  public void intDynamicDataValue() {
+    DynamicDataValue intDynamicDataValue = DynamicDataValue.fromInt(42);
+
+    assertThat(intDynamicDataValue.toDynamicDataValueProto().getInt32Val().getValue())
+            .isEqualTo(42);
+  }
+
+  @Test
+  public void stringDynamicDataValue() {
+    DynamicDataValue stringDynamicDataValue = DynamicDataValue.fromString("constant-value");
+
+    assertThat(stringDynamicDataValue.toDynamicDataValueProto().getStringVal().getValue())
+        .isEqualTo("constant-value");
+  }
+}
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicFloatTest.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicFloatTest.java
index d00b7f3..3036fbed 100644
--- a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicFloatTest.java
+++ b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicFloatTest.java
@@ -67,7 +67,7 @@
 
     @Test
     public void stateEntryValueFloat() {
-        DynamicFloat stateFloat = DynamicFloat.fromState(STATE_KEY);
+        DynamicFloat stateFloat = DynamicFloat.from(new AppDataKey<>(STATE_KEY));
 
         assertThat(stateFloat.toDynamicFloatProto().getStateSource().getSourceKey())
                 .isEqualTo(STATE_KEY);
@@ -75,8 +75,8 @@
 
     @Test
     public void stateToString() {
-        assertThat(DynamicFloat.fromState("key").toString())
-                .isEqualTo("StateFloatSource{sourceKey=key}");
+        assertThat(DynamicFloat.from(new AppDataKey<>("key")).toString())
+                .isEqualTo("StateFloatSource{sourceKey=key, sourceNamespace=}");
     }
 
     @Test
@@ -198,10 +198,10 @@
 
     @Test
     public void stateAnimatedFloat() {
-        DynamicFloat stateFloat = DynamicFloat.fromState(STATE_KEY);
-
-        DynamicFloat animatedFloat = DynamicFloat.animate(STATE_KEY);
-        DynamicFloat animatedFloatWithSpec = DynamicFloat.animate(STATE_KEY, SPEC);
+        AppDataKey<DynamicFloat> source = new AppDataKey<>(STATE_KEY);
+        DynamicFloat stateFloat = DynamicFloat.from(source);
+        DynamicFloat animatedFloat = DynamicFloat.animate(source);
+        DynamicFloat animatedFloatWithSpec = DynamicFloat.animate(source, SPEC);
 
         assertThat(animatedFloat.toDynamicFloatProto().getAnimatableDynamic().hasAnimationSpec())
                 .isFalse();
@@ -221,7 +221,7 @@
     public void stateAnimatedToString() {
         assertThat(
                         DynamicFloat.animate(
-                                        /* stateKey= */ "key",
+                                        new AppDataKey<>("key"),
                                         new AnimationSpec.Builder()
                                                 .setAnimationParameters(
                                                         new AnimationParameters.Builder()
@@ -230,7 +230,8 @@
                                                 .build())
                                 .toString())
                 .isEqualTo(
-                        "AnimatableDynamicFloat{input=StateFloatSource{sourceKey=key},"
+                        "AnimatableDynamicFloat{"
+                                + "input=StateFloatSource{sourceKey=key, sourceNamespace=},"
                                 + " animationSpec=AnimationSpec{animationParameters"
                                 + "=AnimationParameters{durationMillis=0,"
                                 + " easing=null, delayMillis=1}, repeatable=null}}");
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicInt32Test.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicInt32Test.java
index f87e5b5..a130199 100644
--- a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicInt32Test.java
+++ b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicInt32Test.java
@@ -48,7 +48,7 @@
 
     @Test
     public void stateEntryValueInt32() {
-        DynamicInt32 stateInt32 = DynamicInt32.fromState(STATE_KEY);
+        DynamicInt32 stateInt32 = DynamicInt32.from(new AppDataKey<>(STATE_KEY));
 
         assertThat(stateInt32.toDynamicInt32Proto().getStateSource().getSourceKey())
                 .isEqualTo(STATE_KEY);
@@ -56,8 +56,8 @@
 
     @Test
     public void stateToString() {
-        assertThat(DynamicInt32.fromState("key").toString())
-                .isEqualTo("StateInt32Source{sourceKey=key}");
+        assertThat(DynamicInt32.from(new AppDataKey<>("key")).toString())
+                .isEqualTo("StateInt32Source{sourceKey=key, sourceNamespace=}");
     }
 
     @Test
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicStringTest.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicStringTest.java
index b0f2be1..b33df22 100644
--- a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicStringTest.java
+++ b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicStringTest.java
@@ -46,7 +46,7 @@
 
   @Test
   public void stateEntryValueString() {
-    DynamicString stateString = DynamicString.fromState(STATE_KEY);
+    DynamicString stateString = DynamicString.from(new AppDataKey<>(STATE_KEY));
 
     assertThat(stateString.toDynamicStringProto().getStateSource().getSourceKey())
         .isEqualTo(STATE_KEY);
@@ -54,8 +54,8 @@
 
   @Test
   public void stateToString() {
-    assertThat(DynamicString.fromState("key").toString())
-        .isEqualTo("StateStringSource{sourceKey=key}");
+    assertThat(DynamicString.from(new AppDataKey<>("key")).toString())
+        .isEqualTo("StateStringSource{sourceKey=key, sourceNamespace=}");
   }
 
   @Test
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/StateEntryValueTest.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/StateEntryValueTest.java
deleted file mode 100644
index fae643d..0000000
--- a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/StateEntryValueTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.wear.protolayout.expression;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public final class StateEntryValueTest {
-  @Test
-  public void boolStateEntryValue() {
-    StateEntryValue boolStateEntryValue = StateEntryValue.fromBool(true);
-
-    assertThat(boolStateEntryValue.toStateEntryValueProto().getBoolVal().getValue()).isTrue();
-  }
-
-  @Test
-  public void colorStateEntryValue() {
-    StateEntryValue colorStateEntryValue = StateEntryValue.fromColor(0xff00ff00);
-
-    assertThat(colorStateEntryValue.toStateEntryValueProto().getColorVal().getArgb())
-        .isEqualTo(0xff00ff00);
-  }
-
-  @Test
-  public void floatStateEntryValue() {
-    StateEntryValue floatStateEntryValue = StateEntryValue.fromFloat(42.42f);
-
-    assertThat(floatStateEntryValue.toStateEntryValueProto().getFloatVal().getValue())
-        .isWithin(0.0001f)
-        .of(42.42f);
-  }
-
-  @Test
-  public void intStateEntryValue() {
-    StateEntryValue intStateEntryValue = StateEntryValue.fromInt(42);
-
-    assertThat(intStateEntryValue.toStateEntryValueProto().getInt32Val().getValue()).isEqualTo(42);
-  }
-
-  @Test
-  public void stringStateEntryValue() {
-    StateEntryValue stringStateEntryValue = StateEntryValue.fromString("constant-value");
-
-    assertThat(stringStateEntryValue.toStateEntryValueProto().getStringVal().getValue())
-        .isEqualTo("constant-value");
-  }
-}
diff --git a/wear/protolayout/protolayout-material/api/current.txt b/wear/protolayout/protolayout-material/api/current.txt
index 1437f29..f62121b 100644
--- a/wear/protolayout/protolayout-material/api/current.txt
+++ b/wear/protolayout/protolayout-material/api/current.txt
@@ -246,10 +246,17 @@
     field public static final androidx.wear.protolayout.DimensionBuilders.DpProp DEFAULT_VERTICAL_SPACER_HEIGHT;
     field public static final float EDGE_CONTENT_LAYOUT_PADDING_ABOVE_MAIN_CONTENT_DP = 6.0f;
     field public static final float EDGE_CONTENT_LAYOUT_PADDING_BELOW_MAIN_CONTENT_DP = 8.0f;
-    field public static final int MULTI_BUTTON_MAX_NUMBER = 7; // 0x7
+    field @Deprecated public static final int MULTI_BUTTON_MAX_NUMBER = 7; // 0x7
     field public static final androidx.wear.protolayout.DimensionBuilders.DpProp MULTI_SLOT_LAYOUT_HORIZONTAL_SPACER_WIDTH;
   }
 
+  public static final class LayoutDefaults.MultiButtonLayoutDefaults {
+    field public static final int BUTTON_MAX_NUMBER = 7; // 0x7
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_1_BUTTON;
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_2_BUTTONS;
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_3_PLUS_BUTTONS;
+  }
+
   public class MultiButtonLayout implements androidx.wear.protolayout.LayoutElementBuilders.LayoutElement {
     method public static androidx.wear.protolayout.material.layouts.MultiButtonLayout? fromLayoutElement(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement);
     method public java.util.List<androidx.wear.protolayout.LayoutElementBuilders.LayoutElement!> getButtonContents();
diff --git a/wear/protolayout/protolayout-material/api/public_plus_experimental_current.txt b/wear/protolayout/protolayout-material/api/public_plus_experimental_current.txt
index 24d20a6..86857e7 100644
--- a/wear/protolayout/protolayout-material/api/public_plus_experimental_current.txt
+++ b/wear/protolayout/protolayout-material/api/public_plus_experimental_current.txt
@@ -248,10 +248,17 @@
     field public static final androidx.wear.protolayout.DimensionBuilders.DpProp DEFAULT_VERTICAL_SPACER_HEIGHT;
     field public static final float EDGE_CONTENT_LAYOUT_PADDING_ABOVE_MAIN_CONTENT_DP = 6.0f;
     field public static final float EDGE_CONTENT_LAYOUT_PADDING_BELOW_MAIN_CONTENT_DP = 8.0f;
-    field public static final int MULTI_BUTTON_MAX_NUMBER = 7; // 0x7
+    field @Deprecated public static final int MULTI_BUTTON_MAX_NUMBER = 7; // 0x7
     field public static final androidx.wear.protolayout.DimensionBuilders.DpProp MULTI_SLOT_LAYOUT_HORIZONTAL_SPACER_WIDTH;
   }
 
+  public static final class LayoutDefaults.MultiButtonLayoutDefaults {
+    field public static final int BUTTON_MAX_NUMBER = 7; // 0x7
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_1_BUTTON;
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_2_BUTTONS;
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_3_PLUS_BUTTONS;
+  }
+
   public class MultiButtonLayout implements androidx.wear.protolayout.LayoutElementBuilders.LayoutElement {
     method public static androidx.wear.protolayout.material.layouts.MultiButtonLayout? fromLayoutElement(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement);
     method public java.util.List<androidx.wear.protolayout.LayoutElementBuilders.LayoutElement!> getButtonContents();
diff --git a/wear/protolayout/protolayout-material/api/restricted_current.txt b/wear/protolayout/protolayout-material/api/restricted_current.txt
index 1437f29..f62121b 100644
--- a/wear/protolayout/protolayout-material/api/restricted_current.txt
+++ b/wear/protolayout/protolayout-material/api/restricted_current.txt
@@ -246,10 +246,17 @@
     field public static final androidx.wear.protolayout.DimensionBuilders.DpProp DEFAULT_VERTICAL_SPACER_HEIGHT;
     field public static final float EDGE_CONTENT_LAYOUT_PADDING_ABOVE_MAIN_CONTENT_DP = 6.0f;
     field public static final float EDGE_CONTENT_LAYOUT_PADDING_BELOW_MAIN_CONTENT_DP = 8.0f;
-    field public static final int MULTI_BUTTON_MAX_NUMBER = 7; // 0x7
+    field @Deprecated public static final int MULTI_BUTTON_MAX_NUMBER = 7; // 0x7
     field public static final androidx.wear.protolayout.DimensionBuilders.DpProp MULTI_SLOT_LAYOUT_HORIZONTAL_SPACER_WIDTH;
   }
 
+  public static final class LayoutDefaults.MultiButtonLayoutDefaults {
+    field public static final int BUTTON_MAX_NUMBER = 7; // 0x7
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_1_BUTTON;
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_2_BUTTONS;
+    field public static final androidx.wear.protolayout.DimensionBuilders.DpProp BUTTON_SIZE_FOR_3_PLUS_BUTTONS;
+  }
+
   public class MultiButtonLayout implements androidx.wear.protolayout.LayoutElementBuilders.LayoutElement {
     method public static androidx.wear.protolayout.material.layouts.MultiButtonLayout? fromLayoutElement(androidx.wear.protolayout.LayoutElementBuilders.LayoutElement);
     method public java.util.List<androidx.wear.protolayout.LayoutElementBuilders.LayoutElement!> getButtonContents();
diff --git a/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/LayoutDefaults.java b/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/LayoutDefaults.java
index b43b43c..0f1d947 100644
--- a/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/LayoutDefaults.java
+++ b/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/LayoutDefaults.java
@@ -107,28 +107,47 @@
     /** The recommended space between the main content and additional labels in layouts. */
     public static final DpProp DEFAULT_VERTICAL_SPACER_HEIGHT = dp(8);
 
-    /** The maximum number of button that can be added to the {@link MultiButtonLayout}. */
-    public static final int MULTI_BUTTON_MAX_NUMBER = 7;
-
     /**
-     * The default size of button in case when there are 3 or more buttons in the {@link
-     * MultiButtonLayout}.
+     * The maximum number of button that can be added to the {@link MultiButtonLayout}.
+     *
+     * @deprecated Use {@link MultiButtonLayoutDefaults#BUTTON_MAX_NUMBER} instead.
      */
-    static final DpProp MULTI_BUTTON_3_PLUS_SIZE = ButtonDefaults.DEFAULT_SIZE;
+    @Deprecated public static final int MULTI_BUTTON_MAX_NUMBER = 7;
 
-    /** The default size of button in case when there 2 buttons in the {@link MultiButtonLayout}. */
-    static final DpProp MULTI_BUTTON_2_SIZE = ButtonDefaults.LARGE_SIZE;
+    /** Contains default values used for {@link MultiButtonLayout}. */
+    public static final class MultiButtonLayoutDefaults {
+        private MultiButtonLayoutDefaults() {
+        }
 
-    /**
-     * The default size of button in case when there is 1 button in the {@link MultiButtonLayout}.
-     */
-    static final DpProp MULTI_BUTTON_1_SIZE = ButtonDefaults.EXTRA_LARGE_SIZE;
+        /** The maximum number of button that can be added to the {@link MultiButtonLayout}. */
+        public static final int BUTTON_MAX_NUMBER = 7;
 
-    /** The default width for vertical spacer between buttons in the {@link MultiButtonLayout}. */
-    static final DpProp MULTI_BUTTON_SPACER_WIDTH = dp(6);
+        /**
+         * The default size of button in case when there are 3 or more buttons in the {@link
+         * MultiButtonLayout}.
+         */
+        public static final DpProp BUTTON_SIZE_FOR_3_PLUS_BUTTONS = ButtonDefaults.DEFAULT_SIZE;
 
-    /**
-     * The default height for horizontal spacer between buttons in the {@link MultiButtonLayout}.
-     */
-    static final DpProp MULTI_BUTTON_SPACER_HEIGHT = dp(4);
+        /**
+         * The default size of button in case when there are 2 buttons in the {@link MultiButtonLayout}.
+         */
+        public static final DpProp BUTTON_SIZE_FOR_2_BUTTONS = ButtonDefaults.LARGE_SIZE;
+
+        /**
+         * The default size of button in case when there is 1 button in the
+         * {@link MultiButtonLayout}.
+         */
+        public static final DpProp BUTTON_SIZE_FOR_1_BUTTON = ButtonDefaults.EXTRA_LARGE_SIZE;
+
+        /**
+         * The default width for vertical spacer between buttons in the {@link MultiButtonLayout}.
+         */
+        static final DpProp SPACER_WIDTH = dp(6);
+
+        /**
+         * The default height for horizontal spacer between buttons in the
+         * {@link MultiButtonLayout}.
+         */
+        static final DpProp SPACER_HEIGHT = dp(4);
+    }
 }
diff --git a/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/MultiButtonLayout.java b/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/MultiButtonLayout.java
index 2267c1a..28c88dc 100644
--- a/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/MultiButtonLayout.java
+++ b/wear/protolayout/protolayout-material/src/main/java/androidx/wear/protolayout/material/layouts/MultiButtonLayout.java
@@ -21,12 +21,12 @@
 import static androidx.wear.protolayout.material.Helper.checkTag;
 import static androidx.wear.protolayout.material.Helper.getMetadataTagName;
 import static androidx.wear.protolayout.material.Helper.getTagBytes;
-import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MULTI_BUTTON_1_SIZE;
-import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MULTI_BUTTON_2_SIZE;
-import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MULTI_BUTTON_3_PLUS_SIZE;
-import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MULTI_BUTTON_MAX_NUMBER;
-import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MULTI_BUTTON_SPACER_HEIGHT;
-import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MULTI_BUTTON_SPACER_WIDTH;
+import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MultiButtonLayoutDefaults.BUTTON_MAX_NUMBER;
+import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MultiButtonLayoutDefaults.BUTTON_SIZE_FOR_1_BUTTON;
+import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MultiButtonLayoutDefaults.BUTTON_SIZE_FOR_2_BUTTONS;
+import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MultiButtonLayoutDefaults.BUTTON_SIZE_FOR_3_PLUS_BUTTONS;
+import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MultiButtonLayoutDefaults.SPACER_HEIGHT;
+import static androidx.wear.protolayout.material.layouts.LayoutDefaults.MultiButtonLayoutDefaults.SPACER_WIDTH;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
@@ -52,9 +52,11 @@
 
 /**
  * Opinionated ProtoLayout layout, that can contain between 1 and {@link
- * LayoutDefaults#MULTI_BUTTON_MAX_NUMBER} number of buttons arranged inline with the Material
+ * LayoutDefaults.MultiButtonLayoutDefaults#BUTTON_MAX_NUMBER} number of buttons arranged
+ * inline with the Material
  * guidelines. Can be used as a content passed in to the {@link PrimaryLayout}, but if there is
- * {@link LayoutDefaults#MULTI_BUTTON_MAX_NUMBER} buttons it should be used on its own.
+ * {@link LayoutDefaults.MultiButtonLayoutDefaults#BUTTON_MAX_NUMBER} buttons it should be used
+ * on its own.
  *
  * <p>When accessing the contents of a container for testing, note that this element can't be simply
  * casted back to the original type, i.e.:
@@ -112,8 +114,9 @@
         /**
          * Add one new button to the layout. Note that it is accepted to pass in any {@link
          * LayoutElement}, but it is strongly recommended to add a {@link Button} as the layout is
-         * optimized for it. Any button added after {@link LayoutDefaults#MULTI_BUTTON_MAX_NUMBER}
-         * is reached will be discarded.
+         * optimized for it. Any button added after
+         * {@link LayoutDefaults.MultiButtonLayoutDefaults#BUTTON_MAX_NUMBER} is reached will be
+         * discarded.
          */
         @NonNull
         @SuppressWarnings("MissingGetterMatchingBuilder")
@@ -140,10 +143,10 @@
         @Override
         public MultiButtonLayout build() {
             int buttonNum = mButtonsContent.size();
-            if (buttonNum > MULTI_BUTTON_MAX_NUMBER) {
+            if (buttonNum > BUTTON_MAX_NUMBER) {
                 throw new IllegalArgumentException(
                         "Too many buttons are added. Maximum number is "
-                                + MULTI_BUTTON_MAX_NUMBER
+                                + BUTTON_MAX_NUMBER
                                 + ".");
             }
 
@@ -166,10 +169,11 @@
         private LayoutElement buildButtons(int buttonNum) {
             switch (buttonNum) {
                 case 1:
-                    return wrapButton(mButtonsContent.get(0), MULTI_BUTTON_1_SIZE);
+                    return wrapButton(mButtonsContent.get(0), BUTTON_SIZE_FOR_1_BUTTON);
                 case 2:
                     return build2ButtonRow(
-                            mButtonsContent.get(0), mButtonsContent.get(1), MULTI_BUTTON_2_SIZE);
+                            mButtonsContent.get(0), mButtonsContent.get(1),
+                            BUTTON_SIZE_FOR_2_BUTTONS);
                 case 3:
                     return build3ButtonRow(
                             mButtonsContent.get(0), mButtonsContent.get(1), mButtonsContent.get(2));
@@ -179,13 +183,13 @@
                                     build2ButtonRow(
                                             mButtonsContent.get(0),
                                             mButtonsContent.get(1),
-                                            MULTI_BUTTON_3_PLUS_SIZE))
+                                            BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                             .addContent(buildVerticalSpacer())
                             .addContent(
                                     build2ButtonRow(
                                             mButtonsContent.get(2),
                                             mButtonsContent.get(3),
-                                            MULTI_BUTTON_3_PLUS_SIZE))
+                                            BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                             .build();
                 case 5:
                     return new Column.Builder()
@@ -198,14 +202,14 @@
                                             : build2ButtonRow(
                                                     mButtonsContent.get(0),
                                                     mButtonsContent.get(1),
-                                                    MULTI_BUTTON_3_PLUS_SIZE))
+                                                    BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                             .addContent(buildVerticalSpacer())
                             .addContent(
                                     mFiveButtonDistribution == FIVE_BUTTON_DISTRIBUTION_TOP_HEAVY
                                             ? build2ButtonRow(
                                                     mButtonsContent.get(3),
                                                     mButtonsContent.get(4),
-                                                    MULTI_BUTTON_3_PLUS_SIZE)
+                                            BUTTON_SIZE_FOR_3_PLUS_BUTTONS)
                                             : build3ButtonRow(
                                                     mButtonsContent.get(2),
                                                     mButtonsContent.get(3),
@@ -231,7 +235,7 @@
                                     build2ButtonRow(
                                             mButtonsContent.get(0),
                                             mButtonsContent.get(1),
-                                            MULTI_BUTTON_3_PLUS_SIZE))
+                                            BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                             .addContent(buildVerticalSpacer())
                             .addContent(
                                     build3ButtonRow(
@@ -243,7 +247,7 @@
                                     build2ButtonRow(
                                             mButtonsContent.get(5),
                                             mButtonsContent.get(6),
-                                            MULTI_BUTTON_3_PLUS_SIZE))
+                                            BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                             .build();
             }
             // This shouldn't happen, but return an empty Box instead of having this method nullable
@@ -259,11 +263,11 @@
             return new Row.Builder()
                     .setWidth(wrap())
                     .setHeight(wrap())
-                    .addContent(wrapButton(button1, MULTI_BUTTON_3_PLUS_SIZE))
+                    .addContent(wrapButton(button1, BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                     .addContent(buildHorizontalSpacer())
-                    .addContent(wrapButton(button2, MULTI_BUTTON_3_PLUS_SIZE))
+                    .addContent(wrapButton(button2, BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                     .addContent(buildHorizontalSpacer())
-                    .addContent(wrapButton(button3, MULTI_BUTTON_3_PLUS_SIZE))
+                    .addContent(wrapButton(button3, BUTTON_SIZE_FOR_3_PLUS_BUTTONS))
                     .build();
         }
 
@@ -283,12 +287,12 @@
 
         @NonNull
         private Spacer buildHorizontalSpacer() {
-            return new Spacer.Builder().setWidth(MULTI_BUTTON_SPACER_WIDTH).build();
+            return new Spacer.Builder().setWidth(SPACER_WIDTH).build();
         }
 
         @NonNull
         private Spacer buildVerticalSpacer() {
-            return new Spacer.Builder().setHeight(MULTI_BUTTON_SPACER_HEIGHT).build();
+            return new Spacer.Builder().setHeight(SPACER_HEIGHT).build();
         }
 
         @NonNull
diff --git a/wear/protolayout/protolayout-material/src/test/java/androidx/wear/protolayout/material/layouts/MultiButtonLayoutTest.java b/wear/protolayout/protolayout-material/src/test/java/androidx/wear/protolayout/material/layouts/MultiButtonLayoutTest.java
index 085b61d..c90bb91 100644
--- a/wear/protolayout/protolayout-material/src/test/java/androidx/wear/protolayout/material/layouts/MultiButtonLayoutTest.java
+++ b/wear/protolayout/protolayout-material/src/test/java/androidx/wear/protolayout/material/layouts/MultiButtonLayoutTest.java
@@ -106,7 +106,7 @@
     public void test_too_many_button() {
         Button button = new Button.Builder(CONTEXT, CLICKABLE).setTextContent("1").build();
         MultiButtonLayout.Builder layoutBuilder = new MultiButtonLayout.Builder();
-        for (int i = 0; i < LayoutDefaults.MULTI_BUTTON_MAX_NUMBER + 1; i++) {
+        for (int i = 0; i < LayoutDefaults.MultiButtonLayoutDefaults.BUTTON_MAX_NUMBER + 1; i++) {
             layoutBuilder.addButtonContent(button);
         }
 
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/action.proto b/wear/protolayout/protolayout-proto/src/main/proto/action.proto
index 589a31c..944843d 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/action.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/action.proto
@@ -4,7 +4,7 @@
 package androidx.wear.protolayout.proto;
 
 import "state.proto";
-import "state_entry.proto";
+import "dynamic_data.proto";
 
 option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "ActionProto";
@@ -101,5 +101,5 @@
   // The target key of the state item for this action.
   string target_key = 1;
   // The value to set the state item to, when this action is executed.
-  androidx.wear.protolayout.expression.proto.StateEntryValue value = 2;
+  androidx.wear.protolayout.expression.proto.DynamicDataValue value = 2;
 }
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto b/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto
index b0729ce..bbb26b9 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto
@@ -75,6 +75,9 @@
 message StateInt32Source {
   // The key in the state to bind to.
   string source_key = 1;
+
+  // The namespace for the state key.
+  string source_namespace = 2;
 }
 
 // A conditional operator which yields an integer depending on the boolean
@@ -214,6 +217,9 @@
 message StateStringSource {
   // The key in the state to bind to.
   string source_key = 1;
+
+  // The namespace for the state key.
+  string source_namespace = 2;
 }
 
 // A conditional operator which yields an string depending on the boolean
@@ -299,6 +305,9 @@
 message StateFloatSource {
   // The key in the state to bind to.
   string source_key = 1;
+
+  // The namespace for the state key.
+  string source_namespace = 2;
 }
 
 // An operation to convert a Int32 value in the dynamic data pipeline to a Float
@@ -373,6 +382,9 @@
 message StateBoolSource {
   // The key in the state to bind to.
   string source_key = 1;
+
+  // The namespace for the state key.
+  string source_namespace = 2;
 }
 
 // The type of comparison used in ComparisonInt32Op and ComparisonFloatOp.
@@ -483,6 +495,9 @@
 message StateColorSource {
   // The key in the state to bind to.
   string source_key = 1;
+
+  // The namespace for the state key.
+  string source_namespace = 2;
 }
 
 // A static interpolation node, between two fixed color values.
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/state_entry.proto b/wear/protolayout/protolayout-proto/src/main/proto/dynamic_data.proto
similarity index 70%
rename from wear/protolayout/protolayout-proto/src/main/proto/state_entry.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/dynamic_data.proto
index 622043d..f373b86 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/state_entry.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/dynamic_data.proto
@@ -1,4 +1,4 @@
-// State entries of a provider.
+// Dynamic data entries of a provider.
 syntax = "proto3";
 
 package androidx.wear.protolayout.expression.proto;
@@ -6,10 +6,10 @@
 import "fixed.proto";
 
 option java_package = "androidx.wear.protolayout.expression.proto";
-option java_outer_classname = "StateEntryProto";
+option java_outer_classname = "DynamicDataProto";
 
-// A state entry value.
-message StateEntryValue {
+// A dynamic data value.
+message DynamicDataValue {
   oneof inner {
     FixedString string_val = 1;
     FixedInt32 int32_val = 2;
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/state.proto b/wear/protolayout/protolayout-proto/src/main/proto/state.proto
index 162077e..8929f1e 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/state.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/state.proto
@@ -3,7 +3,7 @@
 
 package androidx.wear.protolayout.proto;
 
-import "state_entry.proto";
+import "dynamic_data.proto";
 
 option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "StateProto";
@@ -14,6 +14,6 @@
   string last_clickable_id = 1;
 
   // Any shared state between the provider and renderer.
-  map<string, androidx.wear.protolayout.expression.proto.StateEntryValue>
+  map<string, androidx.wear.protolayout.expression.proto.DynamicDataValue>
       id_to_value = 2;
 }
diff --git a/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipeline.java b/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipeline.java
index 208c686..3b0a666 100644
--- a/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipeline.java
+++ b/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipeline.java
@@ -40,6 +40,7 @@
 import androidx.collection.ArrayMap;
 import androidx.collection.ArraySet;
 import androidx.vectordrawable.graphics.drawable.SeekableAnimatedVectorDrawable;
+import androidx.wear.protolayout.expression.PlatformHealthSources;
 import androidx.wear.protolayout.expression.pipeline.BoundDynamicType;
 import androidx.wear.protolayout.expression.pipeline.DynamicTypeBindingRequest;
 import androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator;
@@ -47,6 +48,7 @@
 import androidx.wear.protolayout.expression.pipeline.DynamicTypeValueReceiver;
 import androidx.wear.protolayout.expression.pipeline.FixedQuotaManagerImpl;
 import androidx.wear.protolayout.expression.pipeline.QuotaManager;
+import androidx.wear.protolayout.expression.pipeline.SensorGatewaySingleDataProvider;
 import androidx.wear.protolayout.expression.pipeline.StateStore;
 import androidx.wear.protolayout.expression.pipeline.TimeGatewayImpl;
 import androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway;
@@ -65,6 +67,7 @@
 import androidx.wear.protolayout.renderer.dynamicdata.NodeInfo.ResolvedAvd;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -145,7 +148,16 @@
                         .setStateStore(stateStore);
         evaluatorConfigBuilder.setDynamicTypesQuotaManager(dynamicNodeQuotaManager);
         if (sensorGateway != null) {
-            evaluatorConfigBuilder.setSensorGateway(sensorGateway);
+            evaluatorConfigBuilder.addPlatformDataProvider(
+                    new SensorGatewaySingleDataProvider(
+                            sensorGateway, PlatformHealthSources.HEART_RATE_BPM),
+                    Collections.singleton(PlatformHealthSources.HEART_RATE_BPM)
+            );
+            evaluatorConfigBuilder.addPlatformDataProvider(
+                    new SensorGatewaySingleDataProvider(
+                            sensorGateway, PlatformHealthSources.DAILY_STEPS),
+                    Collections.singleton(PlatformHealthSources.DAILY_STEPS)
+            );
         }
         if (enableAnimations) {
             evaluatorConfigBuilder.setAnimationQuotaManager(animationQuotaManager);
diff --git a/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java b/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java
index d89a564..12e7936 100644
--- a/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java
+++ b/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java
@@ -42,6 +42,8 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.vectordrawable.graphics.drawable.SeekableAnimatedVectorDrawable;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicBuilders;
 import androidx.wear.protolayout.expression.pipeline.FixedQuotaManagerImpl;
 import androidx.wear.protolayout.expression.pipeline.QuotaManager;
 import androidx.wear.protolayout.expression.pipeline.StateStore;
@@ -70,7 +72,7 @@
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedFloat;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedInt32;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedString;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 import androidx.wear.protolayout.proto.ColorProto.ColorProp;
 import androidx.wear.protolayout.proto.DimensionProto.DegreesProp;
 import androidx.wear.protolayout.proto.DimensionProto.DpProp;
@@ -1926,20 +1928,20 @@
     }
 
     private void setFloatStateVal(String key, float val) {
-        mStateStore.setStateEntryValuesProto(
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        key,
-                        StateEntryValue.newBuilder()
+                        new AppDataKey<DynamicBuilders.DynamicFloat>(key),
+                        DynamicDataValue.newBuilder()
                                 .setFloatVal(FixedFloat.newBuilder().setValue(val))
                                 .build()));
         shadowOf(getMainLooper()).idle();
     }
 
     private void setBoolStateVal(String key, boolean val) {
-        mStateStore.setStateEntryValuesProto(
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        key,
-                        StateEntryValue.newBuilder()
+                        new AppDataKey<DynamicBuilders.DynamicBool>(key),
+                        DynamicDataValue.newBuilder()
                                 .setBoolVal(FixedBool.newBuilder().setValue(val))
                                 .build()));
         shadowOf(getMainLooper()).idle();
diff --git a/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflaterTest.java b/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflaterTest.java
index 9a529c2..1eb0e31 100644
--- a/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflaterTest.java
+++ b/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflaterTest.java
@@ -75,6 +75,8 @@
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.vectordrawable.graphics.drawable.SeekableAnimatedVectorDrawable;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicBuilders;
 import androidx.wear.protolayout.expression.pipeline.FixedQuotaManagerImpl;
 import androidx.wear.protolayout.expression.pipeline.StateStore;
 import androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters;
@@ -94,7 +96,7 @@
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedFloat;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedInt32;
 import androidx.wear.protolayout.expression.proto.FixedProto.FixedString;
-import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto.DynamicDataValue;
 import androidx.wear.protolayout.proto.ActionProto.Action;
 import androidx.wear.protolayout.proto.ActionProto.AndroidActivity;
 import androidx.wear.protolayout.proto.ActionProto.AndroidBooleanExtra;
@@ -415,38 +417,40 @@
         assertThat(tv.isImportantForAccessibility()).isTrue();
         assertThat(info.isFocusable()).isTrue();
 
-        mStateStore.setStateEntryValuesProto(
+        AppDataKey<DynamicBuilders.DynamicString> keyContent = new AppDataKey<>("content");
+        AppDataKey<DynamicBuilders.DynamicString> keyState = new AppDataKey<>("state");
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "content",
-                        StateEntryValue.newBuilder()
+                        keyContent,
+                        DynamicDataValue.newBuilder()
                                 .setStringVal(
                                         FixedString.newBuilder()
                                                 .setValue(initialDynamicContentDescription))
                                 .build(),
-                        "state",
-                        StateEntryValue.newBuilder()
+                        keyState,
+                        DynamicDataValue.newBuilder()
                                 .setStringVal(
                                         FixedString.newBuilder()
                                                 .setValue(initialDynamicStateDescription))
                                 .build()));
 
         info = AccessibilityNodeInfoCompat.wrap(tv.createAccessibilityNodeInfo());
-        assertThat(mStateStore.getStateEntryValuesProto("content").getStringVal().getValue())
+        assertThat(mStateStore.getDynamicDataValuesProto(keyContent).getStringVal().getValue())
                 .isEqualTo(initialDynamicContentDescription);
         assertThat(info.getContentDescription().toString())
                 .isEqualTo(initialDynamicContentDescription);
         assertThat(info.getStateDescription().toString()).isEqualTo(initialDynamicStateDescription);
 
-        mStateStore.setStateEntryValuesProto(
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "content",
-                        StateEntryValue.newBuilder()
+                        keyContent,
+                        DynamicDataValue.newBuilder()
                                 .setStringVal(
                                         FixedString.newBuilder()
                                                 .setValue(targetDynamicContentDescription))
                                 .build(),
-                        "state",
-                        StateEntryValue.newBuilder()
+                        keyState,
+                        DynamicDataValue.newBuilder()
                                 .setStringVal(
                                         FixedString.newBuilder()
                                                 .setValue(targetDynamicStateDescription))
@@ -1675,10 +1679,10 @@
         Drawable drawableAVDSeekable = imageAVDSeekable.getDrawable();
         assertThat(drawableAVDSeekable).isInstanceOf(SeekableAnimatedVectorDrawable.class);
 
-        mStateStore.setStateEntryValuesProto(
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "anim_val",
-                        StateEntryValue.newBuilder()
+                        new AppDataKey<DynamicBuilders.DynamicFloat>("anim_val"),
+                        DynamicDataValue.newBuilder()
                                 .setFloatVal(FixedFloat.newBuilder().setValue(0.44f))
                                 .build()));
         shadowOf(getMainLooper()).idle();
@@ -2125,10 +2129,11 @@
 
     @Test
     public void inflate_arcLine_dynamicData_updatesArcLength() {
-        mStateStore.setStateEntryValuesProto(
+        AppDataKey<DynamicBuilders.DynamicInt32> keyFoo = new AppDataKey<>("foo");
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        keyFoo,
+                        DynamicDataValue.newBuilder()
                                 .setInt32Val(FixedInt32.newBuilder().setValue(10))
                                 .build()));
 
@@ -2173,10 +2178,10 @@
         WearCurvedLineView line = (WearCurvedLineView) sizedContainer.getChildAt(0);
         assertThat(line.getLineSweepAngleDegrees()).isEqualTo(10);
 
-        mStateStore.setStateEntryValuesProto(
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        keyFoo,
+                        DynamicDataValue.newBuilder()
                                 .setInt32Val(FixedInt32.newBuilder().setValue(20))
                                 .build()));
 
@@ -2270,10 +2275,11 @@
 
     @Test
     public void inflate_text_dynamicColor_updatesColor() {
-        mStateStore.setStateEntryValuesProto(
+        AppDataKey<DynamicBuilders.DynamicColor> keyFoo = new AppDataKey<>("foo");
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        keyFoo,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(0xFFFFFFFF))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
@@ -2301,10 +2307,10 @@
         TextView tv = (TextView) rootLayout.getChildAt(0);
         assertThat(tv.getCurrentTextColor()).isEqualTo(0xFFFFFFFF);
 
-        mStateStore.setStateEntryValuesProto(
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "foo",
-                        StateEntryValue.newBuilder()
+                        keyFoo,
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(0x11111111))
                                 .build()));
 
@@ -2316,10 +2322,10 @@
         // Must match a resource ID in buildResources
         String protoResId = "android";
 
-        mStateStore.setStateEntryValuesProto(
+        mStateStore.setAppStateEntryValuesProto(
                 ImmutableMap.of(
-                        "tint",
-                        StateEntryValue.newBuilder()
+                        new AppDataKey<DynamicBuilders.DynamicColor>("tint"),
+                        DynamicDataValue.newBuilder()
                                 .setColorVal(FixedColor.newBuilder().setArgb(0xFFFFFFFF))
                                 .build()));
         shadowOf(Looper.getMainLooper()).idle();
diff --git a/wear/protolayout/protolayout/api/current.txt b/wear/protolayout/protolayout/api/current.txt
index 506910e9..7b83100 100644
--- a/wear/protolayout/protolayout/api/current.txt
+++ b/wear/protolayout/protolayout/api/current.txt
@@ -117,15 +117,15 @@
   }
 
   public static final class ActionBuilders.SetStateAction implements androidx.wear.protolayout.ActionBuilders.LocalAction {
-    method public String getTargetKey();
-    method public androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue? getValue();
+    method public androidx.wear.protolayout.expression.AppDataKey<?> getTargetKey();
+    method public androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue? getValue();
   }
 
   public static final class ActionBuilders.SetStateAction.Builder implements androidx.wear.protolayout.ActionBuilders.LocalAction.Builder {
     ctor public ActionBuilders.SetStateAction.Builder();
     method public androidx.wear.protolayout.ActionBuilders.SetStateAction build();
-    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setTargetKey(String);
-    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setValue(androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue);
+    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setTargetKey(androidx.wear.protolayout.expression.AppDataKey<?>);
+    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setValue(androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue);
   }
 
   public final class ColorBuilders {
@@ -993,13 +993,13 @@
   }
 
   public static final class StateBuilders.State {
-    method public java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!> getIdToValueMapping();
+    method public java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!> getIdToValueMapping();
     method public String getLastClickableId();
   }
 
   public static final class StateBuilders.State.Builder {
     ctor public StateBuilders.State.Builder();
-    method public androidx.wear.protolayout.StateBuilders.State.Builder addIdToValueMapping(String, androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue);
+    method public androidx.wear.protolayout.StateBuilders.State.Builder addKeyToValueMapping(androidx.wear.protolayout.expression.AppDataKey<?>, androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue);
     method public androidx.wear.protolayout.StateBuilders.State build();
   }
 
diff --git a/wear/protolayout/protolayout/api/public_plus_experimental_current.txt b/wear/protolayout/protolayout/api/public_plus_experimental_current.txt
index ce4acaa..3c60bcf 100644
--- a/wear/protolayout/protolayout/api/public_plus_experimental_current.txt
+++ b/wear/protolayout/protolayout/api/public_plus_experimental_current.txt
@@ -117,15 +117,15 @@
   }
 
   public static final class ActionBuilders.SetStateAction implements androidx.wear.protolayout.ActionBuilders.LocalAction {
-    method public String getTargetKey();
-    method public androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue? getValue();
+    method public androidx.wear.protolayout.expression.AppDataKey<?> getTargetKey();
+    method public androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue? getValue();
   }
 
   public static final class ActionBuilders.SetStateAction.Builder implements androidx.wear.protolayout.ActionBuilders.LocalAction.Builder {
     ctor public ActionBuilders.SetStateAction.Builder();
     method public androidx.wear.protolayout.ActionBuilders.SetStateAction build();
-    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setTargetKey(String);
-    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setValue(androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue);
+    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setTargetKey(androidx.wear.protolayout.expression.AppDataKey<?>);
+    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setValue(androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue);
   }
 
   public final class ColorBuilders {
@@ -1211,13 +1211,13 @@
   }
 
   public static final class StateBuilders.State {
-    method public java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!> getIdToValueMapping();
+    method public java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!> getIdToValueMapping();
     method public String getLastClickableId();
   }
 
   public static final class StateBuilders.State.Builder {
     ctor public StateBuilders.State.Builder();
-    method public androidx.wear.protolayout.StateBuilders.State.Builder addIdToValueMapping(String, androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue);
+    method public androidx.wear.protolayout.StateBuilders.State.Builder addKeyToValueMapping(androidx.wear.protolayout.expression.AppDataKey<?>, androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue);
     method public androidx.wear.protolayout.StateBuilders.State build();
   }
 
diff --git a/wear/protolayout/protolayout/api/restricted_current.txt b/wear/protolayout/protolayout/api/restricted_current.txt
index 506910e9..7b83100 100644
--- a/wear/protolayout/protolayout/api/restricted_current.txt
+++ b/wear/protolayout/protolayout/api/restricted_current.txt
@@ -117,15 +117,15 @@
   }
 
   public static final class ActionBuilders.SetStateAction implements androidx.wear.protolayout.ActionBuilders.LocalAction {
-    method public String getTargetKey();
-    method public androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue? getValue();
+    method public androidx.wear.protolayout.expression.AppDataKey<?> getTargetKey();
+    method public androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue? getValue();
   }
 
   public static final class ActionBuilders.SetStateAction.Builder implements androidx.wear.protolayout.ActionBuilders.LocalAction.Builder {
     ctor public ActionBuilders.SetStateAction.Builder();
     method public androidx.wear.protolayout.ActionBuilders.SetStateAction build();
-    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setTargetKey(String);
-    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setValue(androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue);
+    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setTargetKey(androidx.wear.protolayout.expression.AppDataKey<?>);
+    method public androidx.wear.protolayout.ActionBuilders.SetStateAction.Builder setValue(androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue);
   }
 
   public final class ColorBuilders {
@@ -993,13 +993,13 @@
   }
 
   public static final class StateBuilders.State {
-    method public java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue!> getIdToValueMapping();
+    method public java.util.Map<java.lang.String!,androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue!> getIdToValueMapping();
     method public String getLastClickableId();
   }
 
   public static final class StateBuilders.State.Builder {
     ctor public StateBuilders.State.Builder();
-    method public androidx.wear.protolayout.StateBuilders.State.Builder addIdToValueMapping(String, androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue);
+    method public androidx.wear.protolayout.StateBuilders.State.Builder addKeyToValueMapping(androidx.wear.protolayout.expression.AppDataKey<?>, androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue);
     method public androidx.wear.protolayout.StateBuilders.State build();
   }
 
diff --git a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ActionBuilders.java b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ActionBuilders.java
index b0706de..b0ef69b 100644
--- a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ActionBuilders.java
+++ b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ActionBuilders.java
@@ -26,9 +26,10 @@
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
 import androidx.wear.protolayout.StateBuilders.State;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicDataBuilders;
 import androidx.wear.protolayout.expression.Fingerprint;
-import androidx.wear.protolayout.expression.StateEntryBuilders;
-import androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue;
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue;
 import androidx.wear.protolayout.proto.ActionProto;
 import java.util.Collections;
 import java.util.HashMap;
@@ -923,8 +924,9 @@
      * @since 1.2
      */
     @NonNull
-    public String getTargetKey() {
-      return mImpl.getTargetKey();
+    public AppDataKey<?> getTargetKey() {
+
+      return new AppDataKey<>(mImpl.getTargetKey());
     }
 
     /**
@@ -933,9 +935,9 @@
      * @since 1.2
      */
     @Nullable
-    public StateEntryValue getValue() {
+    public DynamicDataValue getValue() {
       if (mImpl.hasValue()) {
-        return StateEntryBuilders.stateEntryValueFromProto(mImpl.getValue());
+        return DynamicDataBuilders.dynamicDataValueFromProto(mImpl.getValue());
       } else {
         return null;
       }
@@ -979,8 +981,8 @@
        * @since 1.2
        */
       @NonNull
-      public Builder setTargetKey(@NonNull String targetKey) {
-        mImpl.setTargetKey(targetKey);
+      public Builder setTargetKey(@NonNull AppDataKey<?> targetKey) {
+        mImpl.setTargetKey(targetKey.getKey());
         mFingerprint.recordPropertyUpdate(1, targetKey.hashCode());
         return this;
       }
@@ -991,8 +993,8 @@
        * @since 1.2
        */
       @NonNull
-      public Builder setValue(@NonNull StateEntryValue value) {
-        mImpl.setValue(value.toStateEntryValueProto());
+      public Builder setValue(@NonNull DynamicDataValue value) {
+        mImpl.setValue(value.toDynamicDataValueProto());
         mFingerprint.recordPropertyUpdate(
             2, checkNotNull(value.getFingerprint()).aggregateValueAsInt());
         return this;
diff --git a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/StateBuilders.java b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/StateBuilders.java
index 0fb8101..a5a256b 100644
--- a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/StateBuilders.java
+++ b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/StateBuilders.java
@@ -23,10 +23,11 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
+import androidx.wear.protolayout.expression.DynamicDataBuilders;
 import androidx.wear.protolayout.expression.Fingerprint;
-import androidx.wear.protolayout.expression.StateEntryBuilders;
-import androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue;
-import androidx.wear.protolayout.expression.proto.StateEntryProto;
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto;
 import androidx.wear.protolayout.proto.StateProto;
 import java.util.Collections;
 import java.util.HashMap;
@@ -67,11 +68,13 @@
      * @since 1.2
      */
     @NonNull
-    public Map<String, StateEntryValue> getIdToValueMapping() {
-      Map<String, StateEntryValue> map = new HashMap<>();
-      for (Entry<String, StateEntryProto.StateEntryValue> entry :
+    public Map<String, DynamicDataValue> getIdToValueMapping() {
+      Map<String, DynamicDataValue> map = new HashMap<>();
+      for (Entry<String, DynamicDataProto.DynamicDataValue> entry :
           mImpl.getIdToValueMap().entrySet()) {
-        map.put(entry.getKey(), StateEntryBuilders.stateEntryValueFromProto(entry.getValue()));
+        map.put(
+                entry.getKey(),
+                DynamicDataBuilders.dynamicDataValueFromProto(entry.getValue()));
       }
       return Collections.unmodifiableMap(map);
     }
@@ -142,10 +145,13 @@
        */
       @SuppressLint("MissingGetterMatchingBuilder")
       @NonNull
-      public Builder addIdToValueMapping(@NonNull String id, @NonNull StateEntryValue value) {
-        mImpl.putIdToValue(id, value.toStateEntryValueProto());
+      public Builder addKeyToValueMapping(
+              @NonNull AppDataKey<?> sourceKey,
+              @NonNull DynamicDataValue value) {
+        mImpl.putIdToValue(sourceKey.getKey(), value.toDynamicDataValueProto());
         mFingerprint.recordPropertyUpdate(
-            id.hashCode(), checkNotNull(value.getFingerprint()).aggregateValueAsInt());
+                sourceKey.getKey().hashCode(),
+                checkNotNull(value.getFingerprint()).aggregateValueAsInt());
         return this;
       }
 
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ActionBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ActionBuildersTest.java
index 39aa11e..fa0d083 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ActionBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ActionBuildersTest.java
@@ -20,7 +20,9 @@
 
 import android.content.ComponentName;
 
-import androidx.wear.protolayout.expression.StateEntryBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
+import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.DynamicDataBuilders;
 import androidx.wear.protolayout.proto.ActionProto;
 
 import org.junit.Test;
@@ -36,15 +38,15 @@
 
     @Test
     public void setStateAction() {
-        String key = "key";
-        StateEntryBuilders.StateEntryValue value = StateEntryBuilders.StateEntryValue.fromString(
-                "value");
+        AppDataKey<DynamicBuilders.DynamicString> key = new AppDataKey<>("key");
+        DynamicDataBuilders.DynamicDataValue value =
+                DynamicDataBuilders.DynamicDataValue.fromString("value");
         ActionBuilders.SetStateAction setStateAction = new ActionBuilders.SetStateAction.Builder()
                 .setTargetKey(key).setValue(value).build();
 
         assertThat(setStateAction.getTargetKey()).isEqualTo(key);
-        assertThat(setStateAction.getValue().toStateEntryValueProto()).isEqualTo(
-                value.toStateEntryValueProto());
+        assertThat(setStateAction.getValue().toDynamicDataValueProto()).isEqualTo(
+                value.toDynamicDataValueProto());
     }
 
     @Test
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ColorBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ColorBuildersTest.java
index 078ae25..a37cb28 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ColorBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ColorBuildersTest.java
@@ -23,6 +23,7 @@
 import android.graphics.Color;
 
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.proto.ColorProto;
 
 import org.junit.Test;
@@ -34,13 +35,17 @@
     private static final String STATE_KEY = "state-key";
     private static final ColorBuilders.ColorProp COLOR =
             new ColorBuilders.ColorProp.Builder(Color.RED)
-                    .setDynamicValue(DynamicBuilders.DynamicColor.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicColor.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
 
     @SuppressWarnings("deprecation")
     private static final ColorBuilders.ColorProp.Builder COLOR_BUILDER_WITHOUT_STATIC_VALUE =
             new ColorBuilders.ColorProp.Builder()
-                    .setDynamicValue(DynamicBuilders.DynamicColor.fromState(STATE_KEY));
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicColor.from(
+                                    new AppDataKey<>(STATE_KEY)));
 
     @Test
     public void colorPropSupportsDynamicColor() {
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/DimensionBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/DimensionBuildersTest.java
index 81f3b67..cdee4a9 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/DimensionBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/DimensionBuildersTest.java
@@ -23,6 +23,7 @@
 import static org.junit.Assert.assertThrows;
 
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.proto.DimensionProto;
 
 import org.junit.Test;
@@ -34,23 +35,31 @@
     private static final String STATE_KEY = "state-key";
     private static final DimensionBuilders.DpProp DP_PROP =
             new DimensionBuilders.DpProp.Builder(3.14f)
-                    .setDynamicValue(DynamicBuilders.DynamicFloat.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicFloat.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
 
     @SuppressWarnings("deprecation")
     private static final DimensionBuilders.DpProp.Builder DP_PROP_WITHOUT_STATIC_VALUE =
             new DimensionBuilders.DpProp.Builder()
-                    .setDynamicValue(DynamicBuilders.DynamicFloat.fromState(STATE_KEY));
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicFloat.from(
+                                    new AppDataKey<>(STATE_KEY)));
 
     private static final DimensionBuilders.DegreesProp DEGREES_PROP =
             new DimensionBuilders.DegreesProp.Builder(3.14f)
-                    .setDynamicValue(DynamicBuilders.DynamicFloat.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicFloat.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
 
     @SuppressWarnings("deprecation")
     private static final DimensionBuilders.DegreesProp.Builder DEGREES_PROP_WITHOUT_STATIC_VALUE =
             new DimensionBuilders.DegreesProp.Builder()
-                    .setDynamicValue(DynamicBuilders.DynamicFloat.fromState(STATE_KEY));
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicFloat.from(
+                                    new AppDataKey<>(STATE_KEY)));
 
     @Test
     public void dpPropSupportsDynamicValue() {
@@ -113,7 +122,8 @@
     public void wrappedMinSize_throwsWhenSetToDynamicValue() {
         DimensionBuilders.DpProp minSizeDynamic =
                 new DimensionBuilders.DpProp.Builder(42)
-                        .setDynamicValue(DynamicBuilders.DynamicFloat.fromState("some-state"))
+                        .setDynamicValue(DynamicBuilders.DynamicFloat.from(
+                                new AppDataKey<>("some-state")))
                         .build();
         assertThrows(
                 IllegalArgumentException.class,
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/LayoutElementBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/LayoutElementBuildersTest.java
index 3b6107e..691b328 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/LayoutElementBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/LayoutElementBuildersTest.java
@@ -21,6 +21,7 @@
 import static org.junit.Assert.assertThrows;
 
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.proto.DimensionProto;
 import androidx.wear.protolayout.proto.LayoutElementProto;
 import androidx.wear.protolayout.proto.TypesProto;
@@ -34,7 +35,9 @@
     private static final String STATE_KEY = "state-key";
     private static final DimensionBuilders.DegreesProp DEGREES_PROP =
             new DimensionBuilders.DegreesProp.Builder(10)
-                    .setDynamicValue(DynamicBuilders.DynamicFloat.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicFloat.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
     private static final DimensionBuilders.AngularLayoutConstraint DEGREES_PROP_CONSTRAINT =
             new DimensionBuilders.AngularLayoutConstraint.Builder(20)
@@ -42,7 +45,9 @@
                     .build();
     private static final DimensionBuilders.DpProp DP_PROP =
             new DimensionBuilders.DpProp.Builder(10)
-                    .setDynamicValue(DynamicBuilders.DynamicFloat.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicFloat.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
     private static final DimensionBuilders.HorizontalLayoutConstraint HORIZONTAL_LAYOUT_CONSTRAINT =
             new DimensionBuilders.HorizontalLayoutConstraint.Builder(20)
@@ -54,7 +59,9 @@
                     .build();
     private static final TypeBuilders.StringProp STRING_PROP =
             new TypeBuilders.StringProp.Builder("string")
-                    .setDynamicValue(DynamicBuilders.DynamicString.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicString.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
     private static final TypeBuilders.StringLayoutConstraint STRING_LAYOUT_CONSTRAINT =
             new TypeBuilders.StringLayoutConstraint.Builder("pattern")
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ModifiersBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ModifiersBuildersTest.java
index fec2fb2..8cb5f79 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ModifiersBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ModifiersBuildersTest.java
@@ -22,6 +22,7 @@
 import android.graphics.Color;
 
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.proto.ModifiersProto;
 
 import org.junit.Test;
@@ -33,7 +34,9 @@
     private static final String STATE_KEY = "state-key";
     private static final ColorBuilders.ColorProp COLOR =
             new ColorBuilders.ColorProp.Builder(Color.RED)
-                    .setDynamicValue(DynamicBuilders.DynamicColor.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicColor.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
 
     @Test
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ResourceBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ResourceBuildersTest.java
index 2b6348d..5f6c5d87 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ResourceBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/ResourceBuildersTest.java
@@ -21,6 +21,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.proto.ResourceProto;
 
 import org.junit.Test;
@@ -55,7 +56,9 @@
                 new ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder()
                         .setResourceId(RESOURCE_ID)
                         .setAnimatedImageFormat(FORMAT)
-                        .setProgress(DynamicBuilders.DynamicFloat.fromState(stateKey))
+                        .setProgress(
+                                DynamicBuilders.DynamicFloat.from(
+                                        new AppDataKey<>(stateKey)))
                         .build();
 
         ResourceProto.AndroidSeekableAnimatedImageResourceByResId avdProto = avd.toProto();
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/StateBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/StateBuildersTest.java
index 3337f82..86d9ddb 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/StateBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/StateBuildersTest.java
@@ -18,7 +18,10 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import androidx.wear.protolayout.expression.StateEntryBuilders;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicString;
+import androidx.wear.protolayout.expression.DynamicDataBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -35,20 +38,21 @@
 
     @Test
     public void additionalState() {
-        StateEntryBuilders.StateEntryValue boolValue =
-                StateEntryBuilders.StateEntryValue.fromBool(true);
-        StateEntryBuilders.StateEntryValue stringValue =
-                StateEntryBuilders.StateEntryValue.fromString("string");
+        DynamicDataBuilders.DynamicDataValue boolValue =
+                DynamicDataBuilders.DynamicDataValue.fromBool(true);
+        DynamicDataBuilders.DynamicDataValue stringValue =
+                DynamicDataBuilders.DynamicDataValue.fromString("string");
         StateBuilders.State state = new StateBuilders.State.Builder()
-                .addIdToValueMapping("boolValue", boolValue)
-                .addIdToValueMapping("stringValue", stringValue)
+                .addKeyToValueMapping(
+                        new AppDataKey<DynamicBool>("boolValue"), boolValue)
+                .addKeyToValueMapping(
+                        new AppDataKey<DynamicString>("stringValue"), stringValue)
                 .build();
 
         assertThat(state.getIdToValueMapping()).hasSize(2);
-        assertThat(state.getIdToValueMapping().get("boolValue").toStateEntryValueProto()).isEqualTo(
-                boolValue.toStateEntryValueProto());
-        assertThat(
-                state.getIdToValueMapping().get("stringValue").toStateEntryValueProto()).isEqualTo(
-                stringValue.toStateEntryValueProto());
+        assertThat(state.getIdToValueMapping().get("boolValue").toDynamicDataValueProto())
+                .isEqualTo(boolValue.toDynamicDataValueProto());
+        assertThat(state.getIdToValueMapping().get("stringValue").toDynamicDataValueProto())
+                .isEqualTo(stringValue.toDynamicDataValueProto());
     }
 }
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java
index 6230a66..7cdffd5 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java
@@ -19,6 +19,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -37,7 +38,8 @@
 
     @Test
     public void onConditionTrigger() {
-        DynamicBuilders.DynamicBool condition = DynamicBuilders.DynamicBool.fromState("state");
+        DynamicBuilders.DynamicBool condition =
+                DynamicBuilders.DynamicBool.from(new AppDataKey<>("state"));
 
         TriggerBuilders.Trigger onConditionMetTrigger =
                 TriggerBuilders.createOnConditionMetTrigger(
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TypeBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TypeBuildersTest.java
index 4de0b0a..3245f32 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TypeBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TypeBuildersTest.java
@@ -21,6 +21,7 @@
 import static org.junit.Assert.assertThrows;
 
 import androidx.wear.protolayout.expression.DynamicBuilders;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.proto.TypesProto;
 
 import org.junit.Test;
@@ -29,13 +30,17 @@
     private static final String STATE_KEY = "state-key";
     private static final TypeBuilders.StringProp STRING_PROP =
             new TypeBuilders.StringProp.Builder("string")
-                    .setDynamicValue(DynamicBuilders.DynamicString.fromState(STATE_KEY))
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicString.from(
+                                    new AppDataKey<>(STATE_KEY)))
                     .build();
 
     @SuppressWarnings("deprecation")
     private static final TypeBuilders.StringProp.Builder STRING_PROP_BUILDER_WITHOUT_STATIC_VALUE =
             new TypeBuilders.StringProp.Builder()
-                    .setDynamicValue(DynamicBuilders.DynamicString.fromState(STATE_KEY));
+                    .setDynamicValue(
+                            DynamicBuilders.DynamicString.from(
+                                    new AppDataKey<>(STATE_KEY)));
 
     @Test
     public void stringPropSupportsDynamicString() {
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt
index 4edda94..324056c 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt
@@ -20,37 +20,37 @@
 import android.content.Context
 import androidx.annotation.VisibleForTesting
 import androidx.concurrent.futures.ResolvableFuture
+import androidx.wear.protolayout.proto.ResourceProto
+import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException
 import androidx.wear.tiles.EventBuilders
 import androidx.wear.tiles.RequestBuilders
 import androidx.wear.tiles.ResourcesCallback
 import androidx.wear.tiles.ResourcesData
 import androidx.wear.tiles.ResourcesRequestData
-import androidx.wear.tiles.TileCallback
-import androidx.wear.tiles.TileData
-import androidx.wear.tiles.TileRequestData
 import androidx.wear.tiles.TileAddEventData
 import androidx.wear.tiles.TileBuilders
+import androidx.wear.tiles.TileCallback
+import androidx.wear.tiles.TileData
 import androidx.wear.tiles.TileEnterEventData
 import androidx.wear.tiles.TileLeaveEventData
 import androidx.wear.tiles.TileProvider
-import androidx.wear.tiles.TileService
 import androidx.wear.tiles.TileRemoveEventData
+import androidx.wear.tiles.TileRequestData
+import androidx.wear.tiles.TileService
 import androidx.wear.tiles.client.TileClient
-import androidx.wear.protolayout.proto.ResourceProto
 import androidx.wear.tiles.proto.TileProto
-import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException
 import com.google.common.util.concurrent.ListenableFuture
+import java.lang.IllegalArgumentException
+import java.util.concurrent.Executor
+import kotlin.coroutines.Continuation
+import kotlin.coroutines.resume
+import kotlin.coroutines.resumeWithException
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.withTimeout
-import java.lang.IllegalArgumentException
-import java.util.concurrent.Executor
-import kotlin.coroutines.Continuation
-import kotlin.coroutines.resume
-import kotlin.coroutines.resumeWithException
 
 /**
  * Implementation of [TileClient] which can connect to a `TileService` in either the local
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/TilesConnectionBinder.kt b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/TilesConnectionBinder.kt
index cb797f6..c015756 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/TilesConnectionBinder.kt
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/TilesConnectionBinder.kt
@@ -23,6 +23,8 @@
 import android.os.IBinder
 import androidx.wear.tiles.TileProvider
 import androidx.wear.tiles.TileService
+import java.util.concurrent.TimeUnit.SECONDS
+import kotlin.coroutines.resume
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Deferred
@@ -36,8 +38,6 @@
 import kotlinx.coroutines.suspendCancellableCoroutine
 import kotlinx.coroutines.withContext
 import kotlinx.coroutines.withTimeout
-import java.util.concurrent.TimeUnit.SECONDS
-import kotlin.coroutines.resume
 
 /**
  * Connection binder for Tiles. This will connect to a {@link TileProvider} (with a timeout), and
diff --git a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/checkers/TimelineCheckerTest.kt b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/checkers/TimelineCheckerTest.kt
index be1d8a2..4222ae5 100644
--- a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/checkers/TimelineCheckerTest.kt
+++ b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/checkers/TimelineCheckerTest.kt
@@ -18,6 +18,8 @@
 
 import androidx.wear.tiles.TilesTestRunner
 import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.argumentCaptor
 import org.mockito.kotlin.doReturn
@@ -25,8 +27,6 @@
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
-import org.junit.Test
-import org.junit.runner.RunWith
 
 @RunWith(TilesTestRunner::class)
 class TimelineCheckerTest {
diff --git a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt
index 26f99dc..7e800c9 100644
--- a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt
+++ b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt
@@ -22,6 +22,7 @@
 import android.os.Looper
 import androidx.concurrent.futures.await
 import androidx.test.core.app.ApplicationProvider
+import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException
 import androidx.wear.tiles.RequestBuilders
 import androidx.wear.tiles.ResourcesCallback
 import androidx.wear.tiles.ResourcesData
@@ -37,13 +38,13 @@
 import androidx.wear.tiles.TileRequestData
 import androidx.wear.tiles.TilesTestRunner
 import androidx.wear.tiles.proto.TileProto
-import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException
 import com.google.common.truth.Truth.assertThat
+import java.lang.IllegalArgumentException
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.TimeoutCancellationException
 import kotlinx.coroutines.async
 import kotlinx.coroutines.launch
-import kotlinx.coroutines.Job
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.TestDispatcher
 import kotlinx.coroutines.test.TestScope
@@ -56,7 +57,6 @@
 import org.junit.runner.RunWith
 import org.robolectric.Shadows
 import org.robolectric.annotation.Config
-import java.lang.IllegalArgumentException
 
 @Config(manifest = Config.NONE)
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalStdlibApi::class)
diff --git a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/TilesConnectionBinderTest.kt b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/TilesConnectionBinderTest.kt
index 613fa1b..64ae254 100644
--- a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/TilesConnectionBinderTest.kt
+++ b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/TilesConnectionBinderTest.kt
@@ -32,11 +32,12 @@
 import androidx.wear.tiles.TileRequestData
 import androidx.wear.tiles.TilesTestRunner
 import com.google.common.truth.Truth.assertThat
+import java.lang.IllegalStateException
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.TimeoutCancellationException
 import kotlinx.coroutines.async
 import kotlinx.coroutines.delay
-import kotlinx.coroutines.Job
 import kotlinx.coroutines.test.TestDispatcher
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -49,7 +50,6 @@
 import org.junit.runner.RunWith
 import org.robolectric.Shadows.shadowOf
 import org.robolectric.annotation.Config
-import java.lang.IllegalStateException
 
 @Config(manifest = Config.NONE)
 @OptIn(ExperimentalCoroutinesApi::class)
diff --git a/wear/tiles/tiles-testing/src/main/java/androidx/wear/tiles/testing/TestTileClient.kt b/wear/tiles/tiles-testing/src/main/java/androidx/wear/tiles/testing/TestTileClient.kt
index 5d5858d..9b36360 100644
--- a/wear/tiles/tiles-testing/src/main/java/androidx/wear/tiles/testing/TestTileClient.kt
+++ b/wear/tiles/tiles-testing/src/main/java/androidx/wear/tiles/testing/TestTileClient.kt
@@ -27,11 +27,11 @@
 import androidx.wear.tiles.client.TileClient
 import androidx.wear.tiles.connection.DefaultTileClient
 import com.google.common.util.concurrent.ListenableFuture
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import org.robolectric.Shadows.shadowOf
 import org.robolectric.android.controller.ServiceController
-import java.util.concurrent.Executor
 
 /**
  * [TileClient] for testing purposes. This will pass calls through to the given instance of
diff --git a/wear/tiles/tiles-testing/src/test/java/androidx/wear/tiles/testing/TestTileClientTest.kt b/wear/tiles/tiles-testing/src/test/java/androidx/wear/tiles/testing/TestTileClientTest.kt
index e437cc6..ed539b0 100644
--- a/wear/tiles/tiles-testing/src/test/java/androidx/wear/tiles/testing/TestTileClientTest.kt
+++ b/wear/tiles/tiles-testing/src/test/java/androidx/wear/tiles/testing/TestTileClientTest.kt
@@ -18,12 +18,12 @@
 
 import android.os.Looper
 import androidx.concurrent.futures.ResolvableFuture
+import androidx.wear.protolayout.ResourceBuilders
 import androidx.wear.tiles.EventBuilders
 import androidx.wear.tiles.RequestBuilders
 import androidx.wear.tiles.TileBuilders
 import androidx.wear.tiles.TileProvider
 import androidx.wear.tiles.TileService
-import androidx.wear.protolayout.ResourceBuilders
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
 import org.junit.Before
diff --git a/wear/tiles/tiles-tooling/src/androidTest/java/androidx/wear/tiles/tooling/TileServiceViewAdapterTest.kt b/wear/tiles/tiles-tooling/src/androidTest/java/androidx/wear/tiles/tooling/TileServiceViewAdapterTest.kt
index 675e207..d197c38 100644
--- a/wear/tiles/tiles-tooling/src/androidTest/java/androidx/wear/tiles/tooling/TileServiceViewAdapterTest.kt
+++ b/wear/tiles/tiles-tooling/src/androidTest/java/androidx/wear/tiles/tooling/TileServiceViewAdapterTest.kt
@@ -16,11 +16,11 @@
 
 package androidx.wear.tiles.tooling
 
-import androidx.wear.tiles.tooling.test.R
 import android.app.Activity
 import android.os.Bundle
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.wear.tiles.tooling.test.R
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
 import org.junit.Before
diff --git a/wear/tiles/tiles-tooling/src/test/java/androidx/wear/tiles/tooling/FindMethodTest.kt b/wear/tiles/tiles-tooling/src/test/java/androidx/wear/tiles/tooling/FindMethodTest.kt
index 05337da..e84bbc5 100644
--- a/wear/tiles/tiles-tooling/src/test/java/androidx/wear/tiles/tooling/FindMethodTest.kt
+++ b/wear/tiles/tiles-tooling/src/test/java/androidx/wear/tiles/tooling/FindMethodTest.kt
@@ -16,10 +16,9 @@
 
 package androidx.wear.tiles.tooling
 
-import org.junit.Test
-
 import org.junit.Assert.assertEquals
 import org.junit.Assert.fail
+import org.junit.Test
 
 @Suppress("unused")
 open class A {
diff --git a/wear/tiles/tiles/src/test/java/androidx/wear/tiles/RequestBuildersTest.java b/wear/tiles/tiles/src/test/java/androidx/wear/tiles/RequestBuildersTest.java
index 0f105f3..93ea260 100644
--- a/wear/tiles/tiles/src/test/java/androidx/wear/tiles/RequestBuildersTest.java
+++ b/wear/tiles/tiles/src/test/java/androidx/wear/tiles/RequestBuildersTest.java
@@ -22,9 +22,11 @@
 import androidx.wear.protolayout.DeviceParametersBuilders;
 import androidx.wear.protolayout.DeviceParametersBuilders.DeviceParameters;
 import androidx.wear.protolayout.StateBuilders.State;
-import androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue;
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32;
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue;
+import androidx.wear.protolayout.expression.AppDataKey;
 import androidx.wear.protolayout.expression.proto.FixedProto;
-import androidx.wear.protolayout.expression.proto.StateEntryProto;
+import androidx.wear.protolayout.expression.proto.DynamicDataProto;
 import androidx.wear.protolayout.proto.DeviceParametersProto;
 import androidx.wear.protolayout.proto.StateProto;
 import androidx.wear.tiles.RequestBuilders.ResourcesRequest;
@@ -45,8 +47,9 @@
                 new TileRequest.Builder()
                         .setCurrentState(
                                 new State.Builder()
-                                        .addIdToValueMapping(
-                                                "entry_id", StateEntryValue.fromInt(13))
+                                        .addKeyToValueMapping(
+                                                new AppDataKey<DynamicInt32>("entry_id"),
+                                                DynamicDataValue.fromInt(13))
                                         .build())
                         .setDeviceConfiguration(
                                 new DeviceParameters.Builder()
@@ -132,7 +135,7 @@
                         StateProto.State.newBuilder()
                                 .putIdToValue(
                                         "entry_id",
-                                        StateEntryProto.StateEntryValue.newBuilder()
+                                        DynamicDataProto.DynamicDataValue.newBuilder()
                                                 .setInt32Val(
                                                         FixedProto.FixedInt32.newBuilder()
                                                                 .setValue(13))
diff --git a/wear/watchface/watchface-client-guava/build.gradle b/wear/watchface/watchface-client-guava/build.gradle
index 49dba28..45693e3 100644
--- a/wear/watchface/watchface-client-guava/build.gradle
+++ b/wear/watchface/watchface-client-guava/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "Android Wear Watchface Client Guava"
+    name = "Android Wear Watchface Client Guava Integration"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Guava wrappers for the Androidx Wear Watchface library"
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
index ddf43de..ca001fa 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
@@ -23,13 +23,17 @@
 import androidx.annotation.MainThread
 import androidx.annotation.RestrictTo
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat
+import androidx.wear.protolayout.expression.PlatformDataKey
+import androidx.wear.protolayout.expression.PlatformHealthSources
 import androidx.wear.protolayout.expression.pipeline.BoundDynamicType
 import androidx.wear.protolayout.expression.pipeline.DynamicTypeBindingRequest
 import androidx.wear.protolayout.expression.pipeline.DynamicTypeEvaluator
 import androidx.wear.protolayout.expression.pipeline.DynamicTypeValueReceiver
+import androidx.wear.protolayout.expression.pipeline.SensorGatewaySingleDataProvider
 import androidx.wear.protolayout.expression.pipeline.StateStore
 import androidx.wear.protolayout.expression.pipeline.TimeGateway
 import androidx.wear.protolayout.expression.pipeline.sensor.SensorGateway
+import java.util.Collections
 import java.util.concurrent.Executor
 import kotlin.coroutines.ContinuationInterceptor
 import kotlin.coroutines.CoroutineContext
@@ -59,6 +63,7 @@
 class ComplicationDataExpressionEvaluator(
     private val stateStore: StateStore? = StateStore(emptyMap()),
     private val timeGateway: TimeGateway? = null,
+    // TODO(b/281664278): remove the SensorGateway usage, implement PlatformDataProvider instead.
     private val sensorGateway: SensorGateway? = null,
     private val keepExpression: Boolean = false,
 ) {
@@ -294,7 +299,22 @@
                     DynamicTypeEvaluator.Config.Builder()
                         .apply { stateStore?.let { setStateStore(it) } }
                         .apply { timeGateway?.let { setTimeGateway(it) } }
-                        .apply { sensorGateway?.let { setSensorGateway(it) } }
+                        .apply { sensorGateway?.let {
+                            addPlatformDataProvider(
+                                SensorGatewaySingleDataProvider(
+                                    sensorGateway, PlatformHealthSources.HEART_RATE_BPM
+                                ),
+                                Collections.singleton(PlatformHealthSources.HEART_RATE_BPM)
+                                    as Set<PlatformDataKey<*>>
+                            )
+                            addPlatformDataProvider(
+                                SensorGatewaySingleDataProvider(
+                                    sensorGateway, PlatformHealthSources.DAILY_STEPS
+                                ),
+                                Collections.singleton(PlatformHealthSources.DAILY_STEPS)
+                                    as Set<PlatformDataKey<*>>
+                            )
+                        } }
                         .build()
                 )
             try {
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
index 9d2d48f..0bdbfb6 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
@@ -22,8 +22,8 @@
 import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.support.wearable.complications.ComplicationText.TimeDifferenceBuilder as WireComplicationTextTimeDifferenceBuilder
 import android.support.wearable.complications.ComplicationText.TimeFormatBuilder as WireComplicationTextTimeFormatBuilder
-import android.support.wearable.complications.TimeDependentText as WireTimeDependentText
 import android.support.wearable.complications.TimeDependentText
+import android.support.wearable.complications.TimeDependentText as WireTimeDependentText
 import android.support.wearable.complications.TimeDifferenceText
 import android.text.style.ForegroundColorSpan
 import android.text.style.LocaleSpan
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt
index 3a22917..65d472b 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluatorTest.kt
@@ -21,10 +21,11 @@
 import android.support.wearable.complications.ComplicationData.Companion.TYPE_SHORT_TEXT
 import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.util.Log
+import androidx.wear.protolayout.expression.AppDataKey
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInstant
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicString
-import androidx.wear.protolayout.expression.StateEntryBuilders.StateEntryValue
+import androidx.wear.protolayout.expression.DynamicDataBuilders.DynamicDataValue
 import androidx.wear.protolayout.expression.pipeline.StateStore
 import androidx.wear.protolayout.expression.pipeline.TimeGateway
 import androidx.wear.watchface.complications.data.ComplicationDataExpressionEvaluator.Companion.INVALID_DATA
@@ -75,7 +76,7 @@
      */
     enum class DataWithExpressionScenario(
         val expressed: WireComplicationData,
-        val states: List<Map<String, StateEntryValue>>,
+        val states: List<Map<AppDataKey<*>, DynamicDataValue>>,
         val evaluated: List<WireComplicationData>,
     ) {
         SET_IMMEDIATELY_WHEN_ALL_DATA_AVAILABLE(
@@ -112,13 +113,19 @@
         SET_ONLY_AFTER_ALL_FIELDS_EVALUATED(
             expressed =
                 WireComplicationData.Builder(TYPE_NO_DATA)
-                    .setRangedValueExpression(DynamicFloat.fromState("ranged_value"))
-                    .setLongText(WireComplicationText(DynamicString.fromState("long_text")))
-                    .setLongTitle(WireComplicationText(DynamicString.fromState("long_title")))
-                    .setShortText(WireComplicationText(DynamicString.fromState("short_text")))
-                    .setShortTitle(WireComplicationText(DynamicString.fromState("short_title")))
+                    .setRangedValueExpression(DynamicFloat.from(AppDataKey("ranged_value")))
+                    .setLongText(WireComplicationText(DynamicString.from(AppDataKey("long_text"))))
+                    .setLongTitle(
+                        WireComplicationText(DynamicString.from(AppDataKey("long_title")))
+                    )
+                    .setShortText(
+                        WireComplicationText(DynamicString.from(AppDataKey("short_text")))
+                    )
+                    .setShortTitle(
+                        WireComplicationText(DynamicString.from(AppDataKey("short_title")))
+                    )
                     .setContentDescription(
-                        WireComplicationText(DynamicString.fromState("description"))
+                        WireComplicationText(DynamicString.from(AppDataKey("description")))
                     )
                     .setPlaceholder(stateData("placeholder"))
                     .setListEntryCollection(listOf(stateData("list")))
@@ -127,15 +134,38 @@
             states =
                 aggregate(
                     // Each map piles on top of the previous ones.
-                    mapOf("ranged_value" to StateEntryValue.fromFloat(1f)),
-                    mapOf("long_text" to StateEntryValue.fromString("Long Text")),
-                    mapOf("long_title" to StateEntryValue.fromString("Long Title")),
-                    mapOf("short_text" to StateEntryValue.fromString("Short Text")),
-                    mapOf("short_title" to StateEntryValue.fromString("Short Title")),
-                    mapOf("description" to StateEntryValue.fromString("Description")),
-                    mapOf("placeholder" to StateEntryValue.fromString("Placeholder")),
-                    mapOf("list" to StateEntryValue.fromString("List")),
-                    mapOf("timeline" to StateEntryValue.fromString("Timeline")),
+                    mapOf(
+                        AppDataKey<DynamicFloat>("ranged_value") to DynamicDataValue.fromFloat(1f)
+                    ),
+                    mapOf(
+                        AppDataKey<DynamicString>("long_text") to
+                            DynamicDataValue.fromString("Long Text")
+                    ),
+                    mapOf(
+                        AppDataKey<DynamicString>("long_title") to
+                            DynamicDataValue.fromString("Long Title")
+                    ),
+                    mapOf(
+                        AppDataKey<DynamicString>("short_text") to
+                            DynamicDataValue.fromString("Short Text")
+                    ),
+                    mapOf(
+                        AppDataKey<DynamicString>("short_title") to
+                            DynamicDataValue.fromString("Short Title")
+                    ),
+                    mapOf(
+                        AppDataKey<DynamicString>("description") to
+                            DynamicDataValue.fromString("Description")
+                    ),
+                    mapOf(
+                        AppDataKey<DynamicString>("placeholder") to
+                            DynamicDataValue.fromString("Placeholder")
+                    ),
+                    mapOf(AppDataKey<DynamicString>("list") to DynamicDataValue.fromString("List")),
+                    mapOf(
+                        AppDataKey<DynamicString>("timeline") to
+                            DynamicDataValue.fromString("Timeline")
+                    ),
                     // Only the last one will trigger an evaluated data.
                 ),
             evaluated =
@@ -164,12 +194,14 @@
         SET_TO_EVALUATED_IF_ALL_FIELDS_VALID(
             expressed =
                 WireComplicationData.Builder(TYPE_SHORT_TEXT)
-                    .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
-                    .setShortText(WireComplicationText(DynamicString.fromState("valid")))
+                    .setShortTitle(WireComplicationText(DynamicString.from(AppDataKey("valid"))))
+                    .setShortText(WireComplicationText(DynamicString.from(AppDataKey("valid"))))
                     .build(),
             states =
                 listOf(
-                    mapOf("valid" to StateEntryValue.fromString("Valid")),
+                    mapOf(
+                        AppDataKey<DynamicString>("valid") to DynamicDataValue.fromString("Valid")
+                    ),
                 ),
             evaluated =
                 listOf(
@@ -183,13 +215,15 @@
         SET_TO_NO_DATA_IF_FIRST_STATE_IS_INVALID(
             expressed =
                 WireComplicationData.Builder(TYPE_SHORT_TEXT)
-                    .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
-                    .setShortText(WireComplicationText(DynamicString.fromState("invalid")))
+                    .setShortTitle(WireComplicationText(DynamicString.from(AppDataKey("valid"))))
+                    .setShortText(WireComplicationText(DynamicString.from(AppDataKey("invalid"))))
                     .build(),
             states =
                 listOf(
                     mapOf(),
-                    mapOf("valid" to StateEntryValue.fromString("Valid")),
+                    mapOf(
+                        AppDataKey<DynamicString>("valid") to DynamicDataValue.fromString("Valid")
+                    ),
                 ),
             evaluated =
                 listOf(
@@ -199,16 +233,19 @@
         SET_TO_NO_DATA_IF_LAST_STATE_IS_INVALID(
             expressed =
                 WireComplicationData.Builder(TYPE_SHORT_TEXT)
-                    .setShortTitle(WireComplicationText(DynamicString.fromState("valid")))
-                    .setShortText(WireComplicationText(DynamicString.fromState("invalid")))
+                    .setShortTitle(WireComplicationText(DynamicString.from(AppDataKey("valid"))))
+                    .setShortText(WireComplicationText(DynamicString.from(AppDataKey("invalid"))))
                     .build(),
             states =
                 listOf(
                     mapOf(
-                        "valid" to StateEntryValue.fromString("Valid"),
-                        "invalid" to StateEntryValue.fromString("Valid"),
+                        AppDataKey<DynamicString>("valid") to DynamicDataValue.fromString("Valid"),
+                        AppDataKey<DynamicString>("invalid") to
+                            DynamicDataValue.fromString("Valid"),
                     ),
-                    mapOf("valid" to StateEntryValue.fromString("Valid")),
+                    mapOf(
+                        AppDataKey<DynamicString>("valid") to DynamicDataValue.fromString("Valid")
+                    ),
                 ),
             evaluated =
                 listOf(
@@ -237,18 +274,18 @@
         ),
         SET_TO_EVALUATED_WITHOUT_PLACEHOLDER_EVEN_IF_PLACEHOLDER_INVALID_IF_NOT_NO_DATA(
             expressed =
-            WireComplicationData.Builder(TYPE_SHORT_TEXT)
-                .setShortText(WireComplicationText("Text"))
-                .setPlaceholder(stateData("placeholder"))
-                .build(),
-            states = listOf(), // placeholder state not set.
-            evaluated =
-            listOf(
-                // No placeholder.
                 WireComplicationData.Builder(TYPE_SHORT_TEXT)
                     .setShortText(WireComplicationText("Text"))
+                    .setPlaceholder(stateData("placeholder"))
                     .build(),
-            )
+            states = listOf(), // placeholder state not set.
+            evaluated =
+                listOf(
+                    // No placeholder.
+                    WireComplicationData.Builder(TYPE_SHORT_TEXT)
+                        .setShortText(WireComplicationText("Text"))
+                        .build(),
+                )
         ),
     }
 
@@ -269,7 +306,7 @@
                     )
 
             for (state in scenario.states) {
-                stateStore.setStateEntryValues(state)
+                stateStore.setAppStateEntryValues(state)
             }
 
             expect
@@ -385,7 +422,7 @@
 
         fun stateData(value: String) =
             WireComplicationData.Builder(TYPE_NO_DATA)
-                .setLongText(WireComplicationText(DynamicString.fromState(value)))
+                .setLongText(WireComplicationText(DynamicString.from(AppDataKey(value))))
                 .build()
 
         fun evaluatedData(value: String) =
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt
index 2125d4f..bdb7c92 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/TextTest.kt
@@ -18,8 +18,8 @@
 
 import android.content.Context
 import android.icu.util.TimeZone
-import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.support.wearable.complications.ComplicationText
+import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.support.wearable.complications.ComplicationText.TimeDifferenceBuilder as WireTimeDifferenceBuilder
 import android.support.wearable.complications.ComplicationText.TimeFormatBuilder as WireTimeFormatBuilder
 import android.support.wearable.complications.TimeFormatText
diff --git a/wear/watchface/watchface-complications-permission-dialogs-sample/build.gradle b/wear/watchface/watchface-complications-permission-dialogs-sample/build.gradle
index 5342fd8..ecf03eb 100644
--- a/wear/watchface/watchface-complications-permission-dialogs-sample/build.gradle
+++ b/wear/watchface/watchface-complications-permission-dialogs-sample/build.gradle
@@ -29,7 +29,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Permission Dialog Samples"
+    name = "Wear Watchface Permission Dialog Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains sample code for building Watchface Permission Dialogs"
diff --git a/wear/watchface/watchface-editor-guava/build.gradle b/wear/watchface/watchface-editor-guava/build.gradle
index c8cb24c..933c2fc 100644
--- a/wear/watchface/watchface-editor-guava/build.gradle
+++ b/wear/watchface/watchface-editor-guava/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "Android Wear Watchface Client Editor"
+    name = "Android Wear Watchface Editor Guava Integration"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Guava wrappers for the Androidx Wear Watchface Editor library"
diff --git a/wear/watchface/watchface-editor/samples/build.gradle b/wear/watchface/watchface-editor/samples/build.gradle
index 85c5449..4fa0e56 100644
--- a/wear/watchface/watchface-editor/samples/build.gradle
+++ b/wear/watchface/watchface-editor/samples/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Editor Samples"
+    name = "Wear Editor Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2020"
     description = "Contains sample code for the Androidx Wear Editor library"
diff --git a/wear/watchface/watchface-guava/build.gradle b/wear/watchface/watchface-guava/build.gradle
index 6571f63..c72486d 100644
--- a/wear/watchface/watchface-guava/build.gradle
+++ b/wear/watchface/watchface-guava/build.gradle
@@ -45,7 +45,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Guava"
+    name = "Android Wear Watchface Guava Integration"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "Guava wrappers for the Androidx Wear Watchface library"
diff --git a/wear/watchface/watchface-samples-minimal-complications/build.gradle b/wear/watchface/watchface-samples-minimal-complications/build.gradle
index ce74910..eb6c3db 100644
--- a/wear/watchface/watchface-samples-minimal-complications/build.gradle
+++ b/wear/watchface/watchface-samples-minimal-complications/build.gradle
@@ -35,7 +35,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Minimal Complications Sample"
+    name = "Wear Watchface Minimal Complications Sample"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains the sample code for the Androidx Wear Watchface library"
diff --git a/wear/watchface/watchface-samples-minimal-instances/build.gradle b/wear/watchface/watchface-samples-minimal-instances/build.gradle
index 9fd911c..cefa848 100644
--- a/wear/watchface/watchface-samples-minimal-instances/build.gradle
+++ b/wear/watchface/watchface-samples-minimal-instances/build.gradle
@@ -34,7 +34,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Minimal Style Sample"
+    name = "Wear Watchface Minimal Style Sample"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains the sample code for the Androidx Wear Watchface library"
diff --git a/wear/watchface/watchface-samples-minimal-style/build.gradle b/wear/watchface/watchface-samples-minimal-style/build.gradle
index 3931645..76d81e8 100644
--- a/wear/watchface/watchface-samples-minimal-style/build.gradle
+++ b/wear/watchface/watchface-samples-minimal-style/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Minimal Style Sample"
+    name = "Wear Watchface Minimal Style Sample"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains the sample code for the Androidx Wear Watchface library"
diff --git a/wear/watchface/watchface-style/old-api-test-service/build.gradle b/wear/watchface/watchface-style/old-api-test-service/build.gradle
index 6d668ff..905cc31 100644
--- a/wear/watchface/watchface-style/old-api-test-service/build.gradle
+++ b/wear/watchface/watchface-style/old-api-test-service/build.gradle
@@ -35,7 +35,7 @@
 }
 
 androidx {
-    name = "AndroidX WatchFace Style Old Api Test Service"
+    name = "WatchFace Style Old Api Test Service"
     type = LibraryType.SAMPLES
     inceptionYear = "2022"
     description = "Test service built with v1.0.0 of the API, used to check for binary AIDL compat"
diff --git a/wear/watchface/watchface-style/old-api-test-stub/build.gradle b/wear/watchface/watchface-style/old-api-test-stub/build.gradle
index ba36ffc..aa784be 100644
--- a/wear/watchface/watchface-style/old-api-test-stub/build.gradle
+++ b/wear/watchface/watchface-style/old-api-test-stub/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "AndroidX WatchFace Style Old Api Test Stub"
+    name = "WatchFace Style Old Api Test Stub"
     type = LibraryType.INTERNAL_TEST_LIBRARY
     inceptionYear = "2022"
     description = "Test stub built with v1.0.0 of the API, used to check for binary AIDL compat"
diff --git a/wear/watchface/watchface/samples/app/build.gradle b/wear/watchface/watchface/samples/app/build.gradle
index 875f848..101b6ba 100644
--- a/wear/watchface/watchface/samples/app/build.gradle
+++ b/wear/watchface/watchface/samples/app/build.gradle
@@ -26,7 +26,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Samples app"
+    name = "Wear Watchface Samples app"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "APK for the sample code for the Androidx Wear Watchface library"
diff --git a/wear/watchface/watchface/samples/build.gradle b/wear/watchface/watchface/samples/build.gradle
index 0e89628..f7b78e9 100644
--- a/wear/watchface/watchface/samples/build.gradle
+++ b/wear/watchface/watchface/samples/build.gradle
@@ -33,7 +33,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Samples"
+    name = "Wear Watchface Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2020"
     description = "Contains the sample code for the Androidx Wear Watchface library"
diff --git a/wear/watchface/watchface/samples/minimal/build.gradle b/wear/watchface/watchface/samples/minimal/build.gradle
index 38d5ed5..c8e5139 100644
--- a/wear/watchface/watchface/samples/minimal/build.gradle
+++ b/wear/watchface/watchface/samples/minimal/build.gradle
@@ -28,7 +28,7 @@
 }
 
 androidx {
-    name = "AndroidX Wear Watchface Minimal Sample"
+    name = "Wear Watchface Minimal Sample"
     type = LibraryType.SAMPLES
     inceptionYear = "2021"
     description = "Contains the sample code for the Androidx Wear Watchface library"
diff --git a/wear/wear-input-testing/build.gradle b/wear/wear-input-testing/build.gradle
index 6952126..d422e13 100644
--- a/wear/wear-input-testing/build.gradle
+++ b/wear/wear-input-testing/build.gradle
@@ -34,9 +34,9 @@
 }
 
 androidx {
-    name = "Android Wear Support Input Testing Helpers"
+    name = "Android Wear Input Testing Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.WEAR_INPUT_TESTING
     inceptionYear = "2020"
-    description = "Android Wear Support Input  Testing Helpers"
+    description = "Android Wear Support Input Testing Helpers"
 }
diff --git a/wear/wear-input/build.gradle b/wear/wear-input/build.gradle
index 8301f64d..5b5c6d9 100644
--- a/wear/wear-input/build.gradle
+++ b/wear/wear-input/build.gradle
@@ -51,7 +51,7 @@
 }
 
 androidx {
-    name = "Android Wear Support Input"
+    name = "Android Wear Input"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.WEAR_INPUT
     inceptionYear = "2020"
diff --git a/wear/wear-ongoing/build.gradle b/wear/wear-ongoing/build.gradle
index 8baebed..0985190 100644
--- a/wear/wear-ongoing/build.gradle
+++ b/wear/wear-ongoing/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android Wear Ongoing Activities"
+    name = "Android Wear Ongoing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.WEAR_ONGOING
     inceptionYear = "2021"
diff --git a/wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityStatusTest.kt b/wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityStatusTest.kt
index 31c702f..ca17fe6 100644
--- a/wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityStatusTest.kt
+++ b/wear/wear-ongoing/src/test/java/androidx/wear/ongoing/OngoingActivityStatusTest.kt
@@ -3,6 +3,7 @@
 import android.content.Context
 import android.os.Build
 import androidx.test.core.app.ApplicationProvider
+import java.lang.IllegalStateException
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNull
 import org.junit.Before
@@ -10,7 +11,6 @@
 import org.junit.runner.RunWith
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
-import java.lang.IllegalStateException
 
 @RunWith(PatchedRobolectricTestRunner::class)
 @DoNotInstrument
diff --git a/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt b/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt
index 2d0b389..1f175a9 100644
--- a/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt
+++ b/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt
@@ -29,13 +29,13 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.wear.phone.interactions.WearPhoneInteractionsTestRunner
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.Executor
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito
 import org.robolectric.Shadows
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.internal.DoNotInstrument
-import java.util.concurrent.Executor
 
 /** Unit tests for [RemoteAuthClient].  */
 @RunWith(WearPhoneInteractionsTestRunner::class)
diff --git a/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/notifications/BridgingManagerTest.kt b/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/notifications/BridgingManagerTest.kt
index 7946e50..e49909c 100644
--- a/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/notifications/BridgingManagerTest.kt
+++ b/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/notifications/BridgingManagerTest.kt
@@ -20,12 +20,12 @@
 import android.content.pm.PackageManager
 import androidx.wear.phone.interactions.WearPhoneInteractionsTestRunner
 import com.google.common.truth.Truth.assertThat
+import java.util.Arrays
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
+import org.mockito.Mockito.`when`
 import org.robolectric.annotation.internal.DoNotInstrument
-import java.util.Arrays
 
 /** Unit tests for [BridgingManager].  */
 @RunWith(WearPhoneInteractionsTestRunner::class)
diff --git a/wear/wear-remote-interactions/src/test/java/androidx/wear/remote/interactions/RemoteActivityHelperTest.kt b/wear/wear-remote-interactions/src/test/java/androidx/wear/remote/interactions/RemoteActivityHelperTest.kt
index b5c09d4..c043ba5 100644
--- a/wear/wear-remote-interactions/src/test/java/androidx/wear/remote/interactions/RemoteActivityHelperTest.kt
+++ b/wear/wear-remote-interactions/src/test/java/androidx/wear/remote/interactions/RemoteActivityHelperTest.kt
@@ -30,13 +30,14 @@
 import androidx.wear.remote.interactions.RemoteActivityHelper.Companion.DEFAULT_PACKAGE
 import androidx.wear.remote.interactions.RemoteActivityHelper.Companion.RESULT_FAILED
 import androidx.wear.remote.interactions.RemoteActivityHelper.Companion.RESULT_OK
+import androidx.wear.remote.interactions.RemoteActivityHelper.Companion.getRemoteIntentResultReceiver
 import androidx.wear.remote.interactions.RemoteActivityHelper.Companion.getTargetIntent
 import androidx.wear.remote.interactions.RemoteActivityHelper.Companion.getTargetNodeId
-import androidx.wear.remote.interactions.RemoteActivityHelper.Companion.getRemoteIntentResultReceiver
 import com.google.android.gms.tasks.Tasks
 import com.google.android.gms.wearable.Node
 import com.google.android.gms.wearable.NodeClient
-import org.mockito.kotlin.mock
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.Executor
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertThrows
 import org.junit.Assert.assertTrue
@@ -47,11 +48,10 @@
 import org.mockito.ArgumentMatchers.any
 import org.mockito.Mock
 import org.mockito.Mockito
+import org.mockito.kotlin.mock
 import org.robolectric.Shadows.shadowOf
 import org.robolectric.annotation.Config
 import org.robolectric.annotation.Implements
-import java.util.concurrent.ExecutionException
-import java.util.concurrent.Executor
 
 @RunWith(WearRemoteInteractionsTestRunner::class)
 @Config(shadows = [RemoteActivityHelperTest.ActualResultReceiver::class])
diff --git a/wear/wear/build.gradle b/wear/wear/build.gradle
index 83bcb50..ea42582 100644
--- a/wear/wear/build.gradle
+++ b/wear/wear/build.gradle
@@ -62,7 +62,7 @@
 }
 
 androidx {
-    name = "Android Wear Support UI"
+    name = "Android Wear"
     publish = Publish.SNAPSHOT_AND_RELEASE
     mavenVersion = LibraryVersions.WEAR
     inceptionYear = "2016"
diff --git a/wear/wear/src/androidTest/java/androidx/wear/widget/ArcLayoutTest.kt b/wear/wear/src/androidTest/java/androidx/wear/widget/ArcLayoutTest.kt
index 3409862..0c16c1a 100644
--- a/wear/wear/src/androidTest/java/androidx/wear/widget/ArcLayoutTest.kt
+++ b/wear/wear/src/androidTest/java/androidx/wear/widget/ArcLayoutTest.kt
@@ -54,6 +54,8 @@
 import androidx.wear.widget.ArcLayout.LayoutParams.VERTICAL_ALIGN_OUTER
 import androidx.wear.widget.util.AsyncViewActions.waitForMatchingView
 import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.hamcrest.CoreMatchers.allOf
 import org.hamcrest.CoreMatchers.any
 import org.hamcrest.Matcher
@@ -63,8 +65,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @RunWith(Parameterized::class)
 @MediumTest
diff --git a/wear/wear/src/androidTest/java/androidx/wear/widget/CurvedTextViewTest.kt b/wear/wear/src/androidTest/java/androidx/wear/widget/CurvedTextViewTest.kt
index 34cec3d..96c10c8 100644
--- a/wear/wear/src/androidTest/java/androidx/wear/widget/CurvedTextViewTest.kt
+++ b/wear/wear/src/androidTest/java/androidx/wear/widget/CurvedTextViewTest.kt
@@ -29,11 +29,11 @@
 import androidx.test.filters.MediumTest
 import androidx.test.screenshot.AndroidXScreenshotTestRule
 import androidx.test.screenshot.assertAgainstGolden
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
diff --git a/wear/wear/src/main/java/androidx/wear/ambient/AmbientLifecycleObserver.kt b/wear/wear/src/main/java/androidx/wear/ambient/AmbientLifecycleObserver.kt
index 0f24c5b..97204f0 100644
--- a/wear/wear/src/main/java/androidx/wear/ambient/AmbientLifecycleObserver.kt
+++ b/wear/wear/src/main/java/androidx/wear/ambient/AmbientLifecycleObserver.kt
@@ -47,6 +47,12 @@
  * }
  * ```
  *
+ * If the observer is registered while the device is in ambient mode, the registered callback
+ * will immediately receive a call to
+ * [AmbientLifecycleObserver.AmbientLifecycleCallback.onEnterAmbient]. If the device is in active
+ * mode, the callbacks will be registered, and `onEnterAmbient` will be called when the device next
+ * enters ambient mode.
+ *
  * @param activity The activity that this observer is being attached to.
  * @param callbackExecutor The executor to run the provided callbacks on.
  * @param callbacks An instance of [AmbientLifecycleObserver.AmbientLifecycleCallback], used to
diff --git a/webkit/webkit/build.gradle b/webkit/webkit/build.gradle
index 0cc7c77..446ce33 100644
--- a/webkit/webkit/build.gradle
+++ b/webkit/webkit/build.gradle
@@ -68,9 +68,9 @@
 }
 
 androidx {
-    name = "WebView Support Library"
+    name = "WebKit"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2017"
-    description = "The WebView Support Library is a static library you can add to your Android application in order to use android.webkit APIs that are not available for older platform versions."
+    description = "The WebKit Support Library is a static library you can add to your Android application in order to use android.webkit APIs that are not available for older platform versions."
     additionalDeviceTestApkKeys.add("chrome")
 }
diff --git a/window/extensions/core/core/build.gradle b/window/extensions/core/core/build.gradle
index 9104d8c..5a895b0 100644
--- a/window/extensions/core/core/build.gradle
+++ b/window/extensions/core/core/build.gradle
@@ -45,7 +45,7 @@
 }
 
 androidx {
-    name = "Jetpack WindowManager library Core Extensions"
+    name = "WindowManager Core Extensions"
     type = LibraryType.PUBLISHED_LIBRARY
     publish = Publish.SNAPSHOT_AND_RELEASE // Only to generate per-project-zips
     inceptionYear = "2022"
diff --git a/window/extensions/extensions/build.gradle b/window/extensions/extensions/build.gradle
index 279cbba..4941b4f2 100644
--- a/window/extensions/extensions/build.gradle
+++ b/window/extensions/extensions/build.gradle
@@ -41,7 +41,7 @@
 }
 
 androidx {
-    name = "Jetpack WindowManager library Extensions"
+    name = "WindowManager Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE // Only to generate per-project-zips
     runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
     inceptionYear = "2020"
diff --git a/window/sidecar/sidecar/build.gradle b/window/sidecar/sidecar/build.gradle
index 742646c..67a5ab4 100644
--- a/window/sidecar/sidecar/build.gradle
+++ b/window/sidecar/sidecar/build.gradle
@@ -27,7 +27,7 @@
 }
 
 androidx {
-    name = "Jetpack WindowManager library Sidecar"
+    name = "WindowManager Sidecar"
     publish = Publish.SNAPSHOT_AND_RELEASE // Only to generate per-project-zips
     runApiTasks = new RunApiTasks.Yes("Need to track API surface but should never publish")
     inceptionYear = "2020"
diff --git a/window/window-core/build.gradle b/window/window-core/build.gradle
index e0e80a3..fbaefda 100644
--- a/window/window-core/build.gradle
+++ b/window/window-core/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "androidx.window:window-core"
+    name = "WindowManager Core"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2022"
     description = "WindowManager Core Library."
diff --git a/window/window-demos/demo/build.gradle b/window/window-demos/demo/build.gradle
index 65adb00..cd3bcf4 100644
--- a/window/window-demos/demo/build.gradle
+++ b/window/window-demos/demo/build.gradle
@@ -82,7 +82,7 @@
 }
 
 androidx {
-    name = "WM Jetpack Samples"
+    name = "WM Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2023"
     description = "Samples for the WM Jetpack Library"
diff --git a/window/window-demos/demo/src/main/java/androidx/window/demo/WindowMetricsActivity.kt b/window/window-demos/demo/src/main/java/androidx/window/demo/WindowMetricsActivity.kt
index 4b0faa7..4bdc573 100644
--- a/window/window-demos/demo/src/main/java/androidx/window/demo/WindowMetricsActivity.kt
+++ b/window/window-demos/demo/src/main/java/androidx/window/demo/WindowMetricsActivity.kt
@@ -20,8 +20,8 @@
 import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
 import androidx.recyclerview.widget.RecyclerView
-import androidx.window.layout.WindowMetricsCalculator
 import androidx.window.demo.common.infolog.InfoLogAdapter
+import androidx.window.layout.WindowMetricsCalculator
 
 class WindowMetricsActivity : AppCompatActivity() {
 
diff --git a/window/window-demos/demo/src/main/java/androidx/window/demo/embedding/ExampleWindowInitializer.kt b/window/window-demos/demo/src/main/java/androidx/window/demo/embedding/ExampleWindowInitializer.kt
index 7cfc7ee..a5fe754 100644
--- a/window/window-demos/demo/src/main/java/androidx/window/demo/embedding/ExampleWindowInitializer.kt
+++ b/window/window-demos/demo/src/main/java/androidx/window/demo/embedding/ExampleWindowInitializer.kt
@@ -34,8 +34,8 @@
 import androidx.window.embedding.SplitAttributes.LayoutDirection.Companion.LEFT_TO_RIGHT
 import androidx.window.embedding.SplitAttributes.LayoutDirection.Companion.RIGHT_TO_LEFT
 import androidx.window.embedding.SplitAttributes.LayoutDirection.Companion.TOP_TO_BOTTOM
-import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_HINGE
 import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_EQUAL
+import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_HINGE
 import androidx.window.embedding.SplitAttributesCalculatorParams
 import androidx.window.embedding.SplitController
 import androidx.window.embedding.SplitController.SplitSupportStatus.Companion.SPLIT_AVAILABLE
diff --git a/window/window-java/build.gradle b/window/window-java/build.gradle
index ad4a7de..36a1f22 100644
--- a/window/window-java/build.gradle
+++ b/window/window-java/build.gradle
@@ -46,7 +46,7 @@
 }
 
 androidx {
-    name = "WindowManager Java Support"
+    name = "WindowManager Java"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "WindowManager Java Support"
diff --git a/window/window-java/src/androidTest/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt b/window/window-java/src/androidTest/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt
index ccf2fc5..ccba465 100644
--- a/window/window-java/src/androidTest/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt
+++ b/window/window-java/src/androidTest/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt
@@ -23,13 +23,13 @@
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.WindowInfoTracker
 import androidx.window.layout.WindowLayoutInfo
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.receiveAsFlow
 import org.junit.Assert.assertTrue
 import org.junit.Test
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 /**
  * Add a test for [WindowInfoTrackerCallbackAdapter] to verify adapted methods. Test converting
diff --git a/window/window-java/src/main/java/androidx/window/java/area/WindowAreaControllerJavaAdapter.kt b/window/window-java/src/main/java/androidx/window/java/area/WindowAreaControllerJavaAdapter.kt
index c2f21fe..3ea0c05 100644
--- a/window/window-java/src/main/java/androidx/window/java/area/WindowAreaControllerJavaAdapter.kt
+++ b/window/window-java/src/main/java/androidx/window/java/area/WindowAreaControllerJavaAdapter.kt
@@ -18,18 +18,18 @@
 
 import android.app.Activity
 import androidx.core.util.Consumer
+import androidx.window.area.WindowAreaController
 import androidx.window.area.WindowAreaSessionCallback
 import androidx.window.area.WindowAreaStatus
-import androidx.window.area.WindowAreaController
 import androidx.window.core.ExperimentalWindowApi
+import java.util.concurrent.Executor
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.concurrent.withLock
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
-import java.util.concurrent.Executor
-import java.util.concurrent.locks.ReentrantLock
-import kotlin.concurrent.withLock
 
 /**
  * An adapted interface for [WindowAreaController] that provides the information and
diff --git a/window/window-java/src/main/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapter.kt b/window/window-java/src/main/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapter.kt
index 35b10d3..1217182 100644
--- a/window/window-java/src/main/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapter.kt
+++ b/window/window-java/src/main/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapter.kt
@@ -18,21 +18,21 @@
 
 import android.app.Activity
 import android.content.Context
+import android.inputmethodservice.InputMethodService
 import androidx.annotation.UiContext
 import androidx.core.util.Consumer
-import android.inputmethodservice.InputMethodService
 import androidx.window.core.ExperimentalWindowApi
 import androidx.window.layout.WindowInfoTracker
 import androidx.window.layout.WindowLayoutInfo
+import java.util.concurrent.Executor
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.concurrent.withLock
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.launch
-import java.util.concurrent.Executor
-import java.util.concurrent.locks.ReentrantLock
-import kotlin.concurrent.withLock
 
 /**
  * An adapted interface for [WindowInfoTracker] that allows listening for events via a callback
diff --git a/window/window-java/src/test/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt b/window/window-java/src/test/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt
index 639e073..f924a0f 100644
--- a/window/window-java/src/test/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt
+++ b/window/window-java/src/test/java/androidx/window/java/layout/WindowInfoTrackerCallbackAdapterTest.kt
@@ -19,14 +19,14 @@
 import androidx.core.util.Consumer
 import androidx.window.layout.WindowInfoTracker
 import androidx.window.layout.WindowLayoutInfo
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.runBlocking
+import org.junit.Test
 import org.mockito.kotlin.any
 import org.mockito.kotlin.mock
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.verifyNoMoreInteractions
 import org.mockito.kotlin.whenever
-import kotlinx.coroutines.flow.MutableSharedFlow
-import kotlinx.coroutines.runBlocking
-import org.junit.Test
 
 class WindowInfoTrackerCallbackAdapterTest {
 
diff --git a/window/window-rxjava2/build.gradle b/window/window-rxjava2/build.gradle
index 97a6430..f3d1277 100644
--- a/window/window-rxjava2/build.gradle
+++ b/window/window-rxjava2/build.gradle
@@ -50,7 +50,7 @@
 }
 
 androidx {
-    name = "WindowManager RxJava 2"
+    name = "WindowManager RxJava2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
diff --git a/window/window-rxjava2/src/androidTest/java/androidx/window/rxjava2/layout/WindowInfoTrackerRxTest.kt b/window/window-rxjava2/src/androidTest/java/androidx/window/rxjava2/layout/WindowInfoTrackerRxTest.kt
index 7415e37..9c97bc5 100644
--- a/window/window-rxjava2/src/androidTest/java/androidx/window/rxjava2/layout/WindowInfoTrackerRxTest.kt
+++ b/window/window-rxjava2/src/androidTest/java/androidx/window/rxjava2/layout/WindowInfoTrackerRxTest.kt
@@ -22,10 +22,10 @@
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.WindowInfoTracker
 import androidx.window.layout.WindowLayoutInfo
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import kotlinx.coroutines.flow.flowOf
 import org.junit.Test
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 /**
  * Tests for the RxJava 2 adapters.
diff --git a/window/window-rxjava3/build.gradle b/window/window-rxjava3/build.gradle
index 2ab8d1a..e4962e8 100644
--- a/window/window-rxjava3/build.gradle
+++ b/window/window-rxjava3/build.gradle
@@ -49,7 +49,7 @@
 }
 
 androidx {
-    name = "WindowManager RxJava 3 Support"
+    name = "WindowManager RxJava3"
     type = LibraryType.PUBLISHED_LIBRARY
     inceptionYear = "2021"
     description = "WindowManager RxJava 3 Support"
diff --git a/window/window-rxjava3/src/androidTest/java/androidx/window/rxjava3/layout/WindowInfoTrackerRxTest.kt b/window/window-rxjava3/src/androidTest/java/androidx/window/rxjava3/layout/WindowInfoTrackerRxTest.kt
index b32bfa0..07de2d7 100644
--- a/window/window-rxjava3/src/androidTest/java/androidx/window/rxjava3/layout/WindowInfoTrackerRxTest.kt
+++ b/window/window-rxjava3/src/androidTest/java/androidx/window/rxjava3/layout/WindowInfoTrackerRxTest.kt
@@ -22,10 +22,10 @@
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.WindowInfoTracker
 import androidx.window.layout.WindowLayoutInfo
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import kotlinx.coroutines.flow.flowOf
 import org.junit.Test
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 /**
  * Test for the adapter functions that convert to [io.reactivex.rxjava3.core.Observable] or
diff --git a/window/window-testing/api/current.txt b/window/window-testing/api/current.txt
index 28a4315..c5abe75 100644
--- a/window/window-testing/api/current.txt
+++ b/window/window-testing/api/current.txt
@@ -36,15 +36,15 @@
 package androidx.window.testing.layout {
 
   public final class DisplayFeatureTesting {
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
   }
 
diff --git a/window/window-testing/api/public_plus_experimental_current.txt b/window/window-testing/api/public_plus_experimental_current.txt
index 28a4315..c5abe75 100644
--- a/window/window-testing/api/public_plus_experimental_current.txt
+++ b/window/window-testing/api/public_plus_experimental_current.txt
@@ -36,15 +36,15 @@
 package androidx.window.testing.layout {
 
   public final class DisplayFeatureTesting {
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
   }
 
diff --git a/window/window-testing/api/restricted_current.txt b/window/window-testing/api/restricted_current.txt
index 28a4315..c5abe75 100644
--- a/window/window-testing/api/restricted_current.txt
+++ b/window/window-testing/api/restricted_current.txt
@@ -36,15 +36,15 @@
 package androidx.window.testing.layout {
 
   public final class DisplayFeatureTesting {
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size);
-    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
   }
 
diff --git a/window/window-testing/build.gradle b/window/window-testing/build.gradle
index 9ccb288..7996b4b 100644
--- a/window/window-testing/build.gradle
+++ b/window/window-testing/build.gradle
@@ -55,7 +55,7 @@
 }
 
 androidx {
-    name = "WindowManager Test Library"
+    name = "WindowManager Testing Extensions"
     type = LibraryType.PUBLISHED_TEST_LIBRARY
     inceptionYear = "2021"
     description = "WindowManager Test Library"
diff --git a/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityEmbeddingRule.kt b/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityEmbeddingRule.kt
index cd9fe23..70f2ba7 100644
--- a/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityEmbeddingRule.kt
+++ b/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityEmbeddingRule.kt
@@ -31,6 +31,9 @@
  * A [TestRule] that will stub out the behavior of [ActivityEmbeddingController] and
  * [RuleController] with a more simple one that will support testing independent of the current
  * platform.
+ *
+ * By default [ActivityEmbeddingRule] has values as if the developer has not opted in to the
+ * ActivityEmbedding feature. There are no set rules, and each [Activity] is not embedded.
  */
 class ActivityEmbeddingRule : TestRule {
 
diff --git a/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityStackTesting.kt b/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityStackTesting.kt
index 3bbca06..ef38d1a 100644
--- a/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityStackTesting.kt
+++ b/window/window-testing/src/main/java/androidx/window/testing/embedding/ActivityStackTesting.kt
@@ -21,17 +21,15 @@
 import androidx.window.embedding.ActivityStack
 
 /**
- * Creates an [ActivityStack] instance for testing, which defaults to an [ActivityStack] with
- * cross-process activities.
- *
- * The [activitiesInProcess] can be passed from the activity obtained from
- * [androidx.test.core.app.ActivityScenario] or even mock Activities.
+ * Creates an [ActivityStack] instance for testing. The default values are an empty list for
+ * [activitiesInProcess] but a false value for [isEmpty]. This is the same as being embedded with
+ * an [Activity] from another process.
  *
  * @param activitiesInProcess The [Activity] list with the same process of the host task with
- *     empty list as the default value
+ *     empty list as the default value.
  * @param isEmpty Indicates whether this `ActivityStack` contains any [Activity] regardless of the
- *     process with `false` as the default value
- * @return An [ActivityStack] instance for testing
+ *     process with `false` as the default value.
+ * @return An [ActivityStack] instance for testing.
  */
 @Suppress("FunctionName")
 @JvmName("createTestActivityStack")
diff --git a/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt b/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt
index 2a065cb..802279b 100644
--- a/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt
+++ b/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt
@@ -19,6 +19,7 @@
 
 import android.app.Activity
 import android.graphics.Rect
+import androidx.annotation.IntRange
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.FoldingFeature.OcclusionType.Companion.FULL
 import androidx.window.layout.FoldingFeature.OcclusionType.Companion.NONE
@@ -41,11 +42,16 @@
  * ([size] / 2) and the bottom-left y-coordinate is center - ([size] / 2). The folding features
  * always cover the window in one dimension and that determines the other coordinates.
  *
+ * The [center] is bounded below by -1. For values greater than -1 it will be set as the center.
+ * For -1 it signals that the center should be calculated. The calculation is the center of the
+ * [Activity] window bounds.
+ *
  * @param activity that will house the [FoldingFeature].
- * @param center the center of the fold complementary to the orientation. For a [HORIZONTAL] fold,
- * this is the y-axis and for a [VERTICAL] fold this is the x-axis.
- * @param size the smaller dimension  of the fold. The larger dimension  always covers the entire
- * window.
+ * @param center the center of the fold complementary to the orientation in px. For a
+ * [HORIZONTAL] fold, this is the y-axis and for a [VERTICAL] fold this is the x-axis. The default
+ * value will be calculated to be in the middle of the window.
+ * @param size the smaller dimension of the fold in px. The larger dimension always covers the
+ * entire window.
  * @param state [State] of the fold. The default value is [HALF_OPENED]
  * @param orientation [Orientation] of the fold. The default value is [HORIZONTAL]
  * @return [FoldingFeature] that is splitting if the width is not 0 and runs parallel to the
@@ -55,6 +61,7 @@
 @JvmName("createFoldingFeature")
 fun FoldingFeature(
     activity: Activity,
+    @IntRange(from = -1)
     center: Int = -1,
     size: Int = 0,
     state: State = HALF_OPENED,
@@ -83,11 +90,16 @@
  * ([size] / 2) and the bottom-left y-coordinate is center - ([size] / 2). The folding features
  * always cover the window in one dimension and that determines the other coordinates.
  *
+ * The [center] is bounded below by -1. For values greater than -1 it will be set as the center.
+ * For -1 it signals that the center should be calculated. The calculation is the center of the
+ * [Activity] window bounds.
+ *
  * @param windowBounds that will contain the [FoldingFeature].
- * @param center the center of the fold complementary to the orientation. For a [HORIZONTAL] fold,
- * this is the y-axis and for a [VERTICAL] fold this is the x-axis.
- * @param size the smaller dimension  of the fold. The larger dimension  always covers the entire
- * window.
+ * @param center the center of the fold complementary to the orientation in px. For a
+ * [HORIZONTAL] fold, this is the y-axis and for a [VERTICAL] fold this is the x-axis. The default
+ * value will be calculated to be in the middle of the window.
+ * @param size the smaller dimension of the fold in px. The larger dimension always covers the
+ * entire window.
  * @param state [State] of the fold. The default value is [HALF_OPENED]
  * @param orientation [Orientation] of the fold. The default value is [HORIZONTAL]
  * @return [FoldingFeature] that is splitting if the width is not 0 and runs parallel to the
@@ -97,6 +109,7 @@
 @JvmName("createFoldingFeature")
 fun FoldingFeature(
     windowBounds: Rect,
+    @IntRange(from = -1)
     center: Int = -1,
     size: Int = 0,
     state: State = HALF_OPENED,
diff --git a/window/window-testing/src/test/java/androidx/window/testing/embedding/SplitAttributesCalculatorParamsTestingTest.kt b/window/window-testing/src/test/java/androidx/window/testing/embedding/SplitAttributesCalculatorParamsTestingTest.kt
index f8e8ce2..66dc2e8 100644
--- a/window/window-testing/src/test/java/androidx/window/testing/embedding/SplitAttributesCalculatorParamsTestingTest.kt
+++ b/window/window-testing/src/test/java/androidx/window/testing/embedding/SplitAttributesCalculatorParamsTestingTest.kt
@@ -16,7 +16,6 @@
 
 package androidx.window.testing.embedding
 
-import androidx.window.testing.layout.FoldingFeature as testFoldingFeature
 import android.content.res.Configuration
 import android.graphics.Rect
 import androidx.window.core.ExperimentalWindowApi
@@ -27,6 +26,7 @@
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.WindowLayoutInfo
 import androidx.window.layout.WindowMetrics
+import androidx.window.testing.layout.FoldingFeature as testFoldingFeature
 import androidx.window.testing.layout.TestWindowLayoutInfo
 import java.util.Collections
 import org.junit.Assert.assertEquals
diff --git a/window/window/build.gradle b/window/window/build.gradle
index 4e4170e..402be78 100644
--- a/window/window/build.gradle
+++ b/window/window/build.gradle
@@ -85,7 +85,7 @@
 }
 
 androidx {
-    name = "Jetpack WindowManager Library"
+    name = "WindowManager"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "WindowManager Jetpack library. Currently only provides additional " +
diff --git a/window/window/samples/build.gradle b/window/window/samples/build.gradle
index e44e0ac..7db715c 100644
--- a/window/window/samples/build.gradle
+++ b/window/window/samples/build.gradle
@@ -36,7 +36,7 @@
 }
 
 androidx {
-    name = "Jetpack WindowManager Library Samples"
+    name = "WindowManager Samples"
     type = LibraryType.SAMPLES
     inceptionYear = "2022"
     description = "Code samples for WindowManager Jetpack library."
diff --git a/window/window/src/androidTest/java/androidx/window/area/WindowAreaControllerImplTest.kt b/window/window/src/androidTest/java/androidx/window/area/WindowAreaControllerImplTest.kt
index e796c8f..963966d 100644
--- a/window/window/src/androidTest/java/androidx/window/area/WindowAreaControllerImplTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/area/WindowAreaControllerImplTest.kt
@@ -24,19 +24,19 @@
 import androidx.test.ext.junit.rules.ActivityScenarioRule
 import androidx.window.TestActivity
 import androidx.window.TestConsumer
+import androidx.window.WindowTestUtils.Companion.assumeAtLeastVendorApiLevel
 import androidx.window.core.ExperimentalWindowApi
 import androidx.window.extensions.area.WindowAreaComponent
 import androidx.window.extensions.core.util.function.Consumer
-import androidx.window.WindowTestUtils.Companion.assumeAtLeastVendorApiLevel
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.launch
-import org.junit.Rule
-import org.junit.Test
 import kotlin.test.assertFailsWith
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import kotlinx.coroutines.test.runTest
+import org.junit.Rule
+import org.junit.Test
 
 @OptIn(ExperimentalCoroutinesApi::class, ExperimentalWindowApi::class)
 class WindowAreaControllerImplTest {
diff --git a/window/window/src/androidTest/java/androidx/window/embedding/ActivityFilterTest.kt b/window/window/src/androidTest/java/androidx/window/embedding/ActivityFilterTest.kt
index ec34298..d927096 100644
--- a/window/window/src/androidTest/java/androidx/window/embedding/ActivityFilterTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/embedding/ActivityFilterTest.kt
@@ -20,12 +20,12 @@
 import android.content.ComponentName
 import android.content.Intent
 import com.google.common.truth.Truth.assertWithMessage
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Test
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 /**
  * Integration test for [ActivityFilter] to test construction from [ComponentName].
diff --git a/window/window/src/androidTest/java/androidx/window/embedding/EmbeddingAdapterTest.kt b/window/window/src/androidTest/java/androidx/window/embedding/EmbeddingAdapterTest.kt
index 9d0aaba..6d76005 100644
--- a/window/window/src/androidTest/java/androidx/window/embedding/EmbeddingAdapterTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/embedding/EmbeddingAdapterTest.kt
@@ -16,9 +16,6 @@
 
 package androidx.window.embedding
 
-import androidx.window.extensions.embedding.ActivityStack as OEMActivityStack
-import androidx.window.extensions.embedding.SplitAttributes as OEMSplitAttributes
-import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
 import android.app.Activity
 import androidx.window.WindowTestUtils
 import androidx.window.core.ExtensionsUtil
@@ -26,13 +23,16 @@
 import androidx.window.embedding.SplitAttributes.SplitType
 import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_HINGE
 import androidx.window.extensions.WindowExtensions
+import androidx.window.extensions.embedding.ActivityStack as OEMActivityStack
+import androidx.window.extensions.embedding.SplitAttributes as OEMSplitAttributes
 import androidx.window.extensions.embedding.SplitAttributes.LayoutDirection.TOP_TO_BOTTOM
 import androidx.window.extensions.embedding.SplitAttributes.SplitType.RatioSplitType
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.whenever
+import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Test
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
 
 /** Tests for [EmbeddingAdapter] */
 class EmbeddingAdapterTest {
diff --git a/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackendTest.kt b/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackendTest.kt
index ff28be7..67f29671 100644
--- a/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackendTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackendTest.kt
@@ -16,10 +16,6 @@
 
 package androidx.window.layout.adapter.extensions
 
-import androidx.window.extensions.core.util.function.Consumer as OEMConsumer
-import androidx.window.extensions.layout.FoldingFeature as OEMFoldingFeature
-import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
-import java.util.function.Consumer as JavaConsumer
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.content.Context
@@ -37,19 +33,16 @@
 import androidx.window.core.ConsumerAdapter
 import androidx.window.core.ExtensionsUtil
 import androidx.window.extensions.WindowExtensions
+import androidx.window.extensions.core.util.function.Consumer as OEMConsumer
+import androidx.window.extensions.layout.FoldingFeature as OEMFoldingFeature
 import androidx.window.extensions.layout.FoldingFeature.STATE_FLAT
 import androidx.window.extensions.layout.FoldingFeature.TYPE_HINGE
 import androidx.window.extensions.layout.WindowLayoutComponent
+import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import androidx.window.layout.WindowLayoutInfo
 import androidx.window.layout.WindowMetricsCalculatorCompat
 import androidx.window.layout.adapter.extensions.ExtensionsWindowLayoutInfoAdapter.translate
-import org.mockito.kotlin.any
-import org.mockito.kotlin.argumentCaptor
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
-import org.mockito.kotlin.whenever
+import java.util.function.Consumer as JavaConsumer
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertTrue
@@ -58,6 +51,13 @@
 import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
 
 class ExtensionWindowLayoutInfoBackendTest {
 
diff --git a/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapterTest.kt b/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapterTest.kt
index 376cf74..02f89fe 100644
--- a/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapterTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapterTest.kt
@@ -16,8 +16,6 @@
 
 package androidx.window.layout.adapter.extensions
 
-import androidx.window.extensions.layout.FoldingFeature as OEMFoldingFeature
-import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import android.graphics.Rect
 import android.os.Build
 import androidx.annotation.RequiresApi
@@ -25,8 +23,10 @@
 import androidx.window.TestActivity
 import androidx.window.WindowTestUtils
 import androidx.window.core.Bounds
+import androidx.window.extensions.layout.FoldingFeature as OEMFoldingFeature
 import androidx.window.extensions.layout.FoldingFeature.STATE_HALF_OPENED
 import androidx.window.extensions.layout.FoldingFeature.TYPE_HINGE
+import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import androidx.window.layout.FoldingFeature.State.Companion.HALF_OPENED
 import androidx.window.layout.HardwareFoldingFeature
 import androidx.window.layout.HardwareFoldingFeature.Type.Companion.HINGE
diff --git a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatDeviceTest.kt b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatDeviceTest.kt
index 8d3873e..8a36b00 100644
--- a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatDeviceTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatDeviceTest.kt
@@ -28,19 +28,13 @@
 import androidx.window.core.VerificationMode.QUIET
 import androidx.window.core.Version
 import androidx.window.layout.HardwareFoldingFeature
-import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import androidx.window.layout.HardwareFoldingFeature.Type
 import androidx.window.layout.HardwareFoldingFeature.Type.Companion.FOLD
 import androidx.window.layout.HardwareFoldingFeature.Type.Companion.HINGE
 import androidx.window.layout.WindowLayoutInfo
+import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import androidx.window.sidecar.SidecarDisplayFeature
 import androidx.window.sidecar.SidecarWindowLayoutInfo
-import org.mockito.kotlin.any
-import org.mockito.kotlin.argThat
-import org.mockito.kotlin.atLeastOnce
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -51,6 +45,12 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatcher
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argThat
+import org.mockito.kotlin.atLeastOnce
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 /**
  * Tests for [SidecarCompat] implementation of [ExtensionInterfaceCompat] that are
diff --git a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatTest.kt b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatTest.kt
index 305c4f8..e8e0ff1 100644
--- a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarCompatTest.kt
@@ -31,7 +31,6 @@
 import androidx.window.WindowTestBase
 import androidx.window.core.Bounds
 import androidx.window.layout.FoldingFeature
-import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import androidx.window.layout.FoldingFeature.State.Companion.FLAT
 import androidx.window.layout.FoldingFeature.State.Companion.HALF_OPENED
 import androidx.window.layout.HardwareFoldingFeature
@@ -39,11 +38,18 @@
 import androidx.window.layout.TestFoldingFeatureUtil.invalidFoldBounds
 import androidx.window.layout.TestFoldingFeatureUtil.validFoldBound
 import androidx.window.layout.WindowLayoutInfo
+import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import androidx.window.sidecar.SidecarDeviceState
 import androidx.window.sidecar.SidecarDisplayFeature
 import androidx.window.sidecar.SidecarInterface
 import androidx.window.sidecar.SidecarInterface.SidecarCallback
 import androidx.window.sidecar.SidecarWindowLayoutInfo
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertNotNull
+import org.junit.Assert.assertTrue
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
 import org.mockito.kotlin.any
 import org.mockito.kotlin.argThat
 import org.mockito.kotlin.argumentCaptor
@@ -57,12 +63,6 @@
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.verifyZeroInteractions
 import org.mockito.kotlin.whenever
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertNotNull
-import org.junit.Assert.assertTrue
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
 
 /**
  * Tests for [SidecarCompat] implementation of [ExtensionInterfaceCompat]. This class
diff --git a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendIntegrationTest.kt b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendIntegrationTest.kt
index 46ae397..283faac 100644
--- a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendIntegrationTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendIntegrationTest.kt
@@ -37,11 +37,7 @@
 import androidx.window.layout.WindowLayoutInfo
 import androidx.window.layout.WindowMetricsCalculator
 import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
-import org.mockito.kotlin.any
-import org.mockito.kotlin.argThat
-import org.mockito.kotlin.atLeastOnce
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
+import java.util.HashSet
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Assume
@@ -50,7 +46,11 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatcher
-import java.util.HashSet
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argThat
+import org.mockito.kotlin.atLeastOnce
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 /** Tests for the extension implementation on the device.  */
 @LargeTest
diff --git a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendTest.kt b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendTest.kt
index 434cc92..43daf25 100644
--- a/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendTest.kt
@@ -30,10 +30,6 @@
 import androidx.window.layout.HardwareFoldingFeature.Type.Companion.HINGE
 import androidx.window.layout.WindowLayoutInfo
 import com.google.common.util.concurrent.MoreExecutors
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertTrue
@@ -41,6 +37,10 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
 
 /** Tests for [SidecarWindowBackend] class.  */
 @LargeTest
diff --git a/window/window/src/main/java/androidx/window/area/EmptyWindowAreaControllerImpl.kt b/window/window/src/main/java/androidx/window/area/EmptyWindowAreaControllerImpl.kt
index d56eccb..de0971a 100644
--- a/window/window/src/main/java/androidx/window/area/EmptyWindowAreaControllerImpl.kt
+++ b/window/window/src/main/java/androidx/window/area/EmptyWindowAreaControllerImpl.kt
@@ -18,9 +18,9 @@
 
 import android.app.Activity
 import androidx.window.core.ExperimentalWindowApi
+import java.util.concurrent.Executor
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.flowOf
-import java.util.concurrent.Executor
 
 /**
  * Empty Implementation for devices that do not
diff --git a/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt b/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt
index 6dd98b7..3340a8b 100644
--- a/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt
+++ b/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt
@@ -16,23 +16,12 @@
 
 package androidx.window.embedding
 
-import android.util.Pair as AndroidPair
-import androidx.window.extensions.embedding.ActivityRule as OEMActivityRule
-import androidx.window.extensions.embedding.ActivityRule.Builder as ActivityRuleBuilder
-import androidx.window.extensions.embedding.EmbeddingRule as OEMEmbeddingRule
-import androidx.window.extensions.embedding.SplitAttributes as OEMSplitAttributes
-import androidx.window.extensions.embedding.SplitAttributes.SplitType as OEMSplitType
-import androidx.window.extensions.embedding.SplitAttributesCalculatorParams as OEMSplitAttributesCalculatorParams
-import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
-import androidx.window.extensions.embedding.SplitPairRule as OEMSplitPairRule
-import androidx.window.extensions.embedding.SplitPairRule.Builder as SplitPairRuleBuilder
-import androidx.window.extensions.embedding.SplitPlaceholderRule as OEMSplitPlaceholderRule
-import androidx.window.extensions.embedding.SplitPlaceholderRule.Builder as SplitPlaceholderRuleBuilder
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.content.Context
 import android.content.Intent
 import android.util.LayoutDirection
+import android.util.Pair as AndroidPair
 import android.view.WindowMetrics
 import androidx.window.core.ExperimentalWindowApi
 import androidx.window.core.ExtensionsUtil
@@ -43,17 +32,28 @@
 import androidx.window.embedding.SplitAttributes.LayoutDirection.Companion.RIGHT_TO_LEFT
 import androidx.window.embedding.SplitAttributes.LayoutDirection.Companion.TOP_TO_BOTTOM
 import androidx.window.embedding.SplitAttributes.SplitType
-import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_HINGE
 import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_EQUAL
 import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_EXPAND
+import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_HINGE
 import androidx.window.embedding.SplitAttributes.SplitType.Companion.ratio
 import androidx.window.extensions.WindowExtensions
 import androidx.window.extensions.core.util.function.Function
 import androidx.window.extensions.core.util.function.Predicate
+import androidx.window.extensions.embedding.ActivityRule as OEMActivityRule
+import androidx.window.extensions.embedding.ActivityRule.Builder as ActivityRuleBuilder
+import androidx.window.extensions.embedding.EmbeddingRule as OEMEmbeddingRule
+import androidx.window.extensions.embedding.SplitAttributes as OEMSplitAttributes
+import androidx.window.extensions.embedding.SplitAttributes.SplitType as OEMSplitType
 import androidx.window.extensions.embedding.SplitAttributes.SplitType.RatioSplitType
+import androidx.window.extensions.embedding.SplitAttributesCalculatorParams as OEMSplitAttributesCalculatorParams
+import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
+import androidx.window.extensions.embedding.SplitPairRule as OEMSplitPairRule
+import androidx.window.extensions.embedding.SplitPairRule.Builder as SplitPairRuleBuilder
 import androidx.window.extensions.embedding.SplitPairRule.FINISH_ADJACENT
 import androidx.window.extensions.embedding.SplitPairRule.FINISH_ALWAYS
 import androidx.window.extensions.embedding.SplitPairRule.FINISH_NEVER
+import androidx.window.extensions.embedding.SplitPlaceholderRule as OEMSplitPlaceholderRule
+import androidx.window.extensions.embedding.SplitPlaceholderRule.Builder as SplitPlaceholderRuleBuilder
 import androidx.window.layout.WindowMetricsCalculator
 import androidx.window.layout.adapter.extensions.ExtensionsWindowLayoutInfoAdapter
 import kotlin.Pair
diff --git a/window/window/src/main/java/androidx/window/embedding/EmbeddingCompat.kt b/window/window/src/main/java/androidx/window/embedding/EmbeddingCompat.kt
index 6a1248c..d54b21a 100644
--- a/window/window/src/main/java/androidx/window/embedding/EmbeddingCompat.kt
+++ b/window/window/src/main/java/androidx/window/embedding/EmbeddingCompat.kt
@@ -16,7 +16,6 @@
 
 package androidx.window.embedding
 
-import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
 import android.app.Activity
 import android.content.Context
 import android.util.Log
@@ -31,6 +30,7 @@
 import androidx.window.extensions.WindowExtensionsProvider
 import androidx.window.extensions.core.util.function.Consumer
 import androidx.window.extensions.embedding.ActivityEmbeddingComponent
+import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
 import java.lang.reflect.Proxy
 
 /**
diff --git a/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt b/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt
index 92965c3..be35e2a 100644
--- a/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt
+++ b/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt
@@ -18,6 +18,7 @@
 
 import android.app.Activity
 import androidx.annotation.VisibleForTesting
+import androidx.window.SafeWindowExtensionsProvider
 import androidx.window.core.ConsumerAdapter
 import androidx.window.core.ExtensionsUtil
 import androidx.window.extensions.WindowExtensions
@@ -27,7 +28,6 @@
 import androidx.window.reflection.ReflectionUtils.doesReturn
 import androidx.window.reflection.ReflectionUtils.isPublic
 import androidx.window.reflection.ReflectionUtils.validateReflection
-import androidx.window.SafeWindowExtensionsProvider
 import androidx.window.reflection.WindowExtensionsConstants.ACTIVITY_EMBEDDING_COMPONENT_CLASS
 
 /**
diff --git a/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt b/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt
index b9dcbef..047a14c 100644
--- a/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt
+++ b/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt
@@ -20,6 +20,7 @@
 import android.content.Context
 import android.graphics.Rect
 import androidx.annotation.VisibleForTesting
+import androidx.window.SafeWindowExtensionsProvider
 import androidx.window.core.ConsumerAdapter
 import androidx.window.core.ExtensionsUtil
 import androidx.window.extensions.WindowExtensions
@@ -29,7 +30,6 @@
 import androidx.window.reflection.ReflectionUtils.doesReturn
 import androidx.window.reflection.ReflectionUtils.isPublic
 import androidx.window.reflection.ReflectionUtils.validateReflection
-import androidx.window.SafeWindowExtensionsProvider
 import androidx.window.reflection.WindowExtensionsConstants.FOLDING_FEATURE_CLASS
 import androidx.window.reflection.WindowExtensionsConstants.JAVA_CONSUMER
 import androidx.window.reflection.WindowExtensionsConstants.WINDOW_CONSUMER
diff --git a/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt b/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt
index 8d8151e..94dd455 100644
--- a/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt
+++ b/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt
@@ -16,12 +16,12 @@
 
 package androidx.window.layout
 
-import android.view.WindowMetrics as AndroidWindowMetrics
 import android.app.Activity
 import android.content.Context
 import android.inputmethodservice.InputMethodService
 import android.os.Build
 import android.view.Display
+import android.view.WindowMetrics as AndroidWindowMetrics
 import androidx.annotation.RequiresApi
 import androidx.annotation.RestrictTo
 import androidx.annotation.UiContext
diff --git a/window/window/src/main/java/androidx/window/layout/adapter/WindowBackend.kt b/window/window/src/main/java/androidx/window/layout/adapter/WindowBackend.kt
index 3524cb1..efb74a0 100644
--- a/window/window/src/main/java/androidx/window/layout/adapter/WindowBackend.kt
+++ b/window/window/src/main/java/androidx/window/layout/adapter/WindowBackend.kt
@@ -17,10 +17,10 @@
 
 import android.app.Activity
 import android.content.Context
+import androidx.annotation.UiContext
 import androidx.core.util.Consumer
 import androidx.window.layout.WindowLayoutInfo
 import java.util.concurrent.Executor
-import androidx.annotation.UiContext
 
 /**
  * Backing interface for [androidx.window.layout.WindowInfoTracker] instances that serve as the
diff --git a/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackend.kt b/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackend.kt
index 64e60f8..9de412a 100644
--- a/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackend.kt
+++ b/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowLayoutInfoBackend.kt
@@ -16,8 +16,6 @@
 
 package androidx.window.layout.adapter.extensions
 
-import androidx.window.extensions.core.util.function.Consumer as OEMConsumer
-import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import android.app.Activity
 import android.content.Context
 import androidx.annotation.GuardedBy
@@ -27,7 +25,9 @@
 import androidx.window.core.ConsumerAdapter
 import androidx.window.core.ExtensionsUtil
 import androidx.window.extensions.WindowExtensions
+import androidx.window.extensions.core.util.function.Consumer as OEMConsumer
 import androidx.window.extensions.layout.WindowLayoutComponent
+import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import androidx.window.layout.WindowLayoutInfo
 import androidx.window.layout.adapter.WindowBackend
 import androidx.window.layout.adapter.extensions.ExtensionsWindowLayoutInfoAdapter.translate
diff --git a/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapter.kt b/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapter.kt
index ed9f74d..5f4a31b 100644
--- a/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapter.kt
+++ b/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionsWindowLayoutInfoAdapter.kt
@@ -16,13 +16,13 @@
 
 package androidx.window.layout.adapter.extensions
 
-import androidx.window.extensions.layout.FoldingFeature as OEMFoldingFeature
-import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import android.app.Activity
 import android.content.Context
 import android.os.Build
 import androidx.annotation.UiContext
 import androidx.window.core.Bounds
+import androidx.window.extensions.layout.FoldingFeature as OEMFoldingFeature
+import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.FoldingFeature.State.Companion.FLAT
 import androidx.window.layout.FoldingFeature.State.Companion.HALF_OPENED
diff --git a/window/window/src/test/java/androidx/window/core/ConsumerAdapterTest.kt b/window/window/src/test/java/androidx/window/core/ConsumerAdapterTest.kt
index cc18d1e..22dd2b4 100644
--- a/window/window/src/test/java/androidx/window/core/ConsumerAdapterTest.kt
+++ b/window/window/src/test/java/androidx/window/core/ConsumerAdapterTest.kt
@@ -20,11 +20,11 @@
 import android.app.Activity
 import android.content.Context
 import android.os.Build
-import org.mockito.kotlin.mock
 import java.util.function.Consumer
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Test
+import org.mockito.kotlin.mock
 
 /**
  * Tests for [ConsumerAdapter] ensuring that the reflection calls work as expected.
diff --git a/window/window/src/test/java/androidx/window/core/SpecificationComputerTest.kt b/window/window/src/test/java/androidx/window/core/SpecificationComputerTest.kt
index a527f04..848f97a 100644
--- a/window/window/src/test/java/androidx/window/core/SpecificationComputerTest.kt
+++ b/window/window/src/test/java/androidx/window/core/SpecificationComputerTest.kt
@@ -20,15 +20,15 @@
 import androidx.window.core.VerificationMode.LOG
 import androidx.window.core.VerificationMode.QUIET
 import androidx.window.core.VerificationMode.STRICT
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.verify
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
 import org.junit.Assert.assertTrue
 import org.junit.Test
 import org.mockito.ArgumentMatchers.contains
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
 
 /**
  * Tests [SpecificationComputer] to verify the following behaviors.
diff --git a/window/window/src/test/java/androidx/window/embedding/EmbeddingCompatTest.kt b/window/window/src/test/java/androidx/window/embedding/EmbeddingCompatTest.kt
index aa9e3f1..029aa99 100644
--- a/window/window/src/test/java/androidx/window/embedding/EmbeddingCompatTest.kt
+++ b/window/window/src/test/java/androidx/window/embedding/EmbeddingCompatTest.kt
@@ -16,8 +16,6 @@
 
 package androidx.window.embedding
 
-import java.util.function.Consumer as JavaConsumer
-import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
 import android.app.Activity
 import androidx.window.core.ConsumerAdapter
 import androidx.window.core.ExtensionsUtil
@@ -25,6 +23,8 @@
 import androidx.window.extensions.WindowExtensions.VENDOR_API_LEVEL_2
 import androidx.window.extensions.core.util.function.Consumer
 import androidx.window.extensions.embedding.ActivityEmbeddingComponent
+import androidx.window.extensions.embedding.SplitInfo as OEMSplitInfo
+import java.util.function.Consumer as JavaConsumer
 import org.junit.Test
 import org.mockito.kotlin.any
 import org.mockito.kotlin.mock
diff --git a/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarCompatUnitTest.kt b/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarCompatUnitTest.kt
index 6af845c..b7dddc4 100644
--- a/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarCompatUnitTest.kt
+++ b/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarCompatUnitTest.kt
@@ -25,15 +25,18 @@
 import android.view.Window
 import android.view.WindowManager
 import androidx.window.TestWindow
-import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import androidx.window.layout.TestFoldingFeatureUtil.invalidFoldBounds
 import androidx.window.layout.TestFoldingFeatureUtil.validFoldBound
 import androidx.window.layout.WindowLayoutInfo
+import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import androidx.window.sidecar.SidecarDeviceState
 import androidx.window.sidecar.SidecarDisplayFeature
 import androidx.window.sidecar.SidecarInterface
 import androidx.window.sidecar.SidecarInterface.SidecarCallback
 import androidx.window.sidecar.SidecarWindowLayoutInfo
+import org.junit.Assert.assertEquals
+import org.junit.Before
+import org.junit.Test
 import org.mockito.kotlin.any
 import org.mockito.kotlin.doAnswer
 import org.mockito.kotlin.doReturn
@@ -42,9 +45,6 @@
 import org.mockito.kotlin.times
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.whenever
-import org.junit.Assert.assertEquals
-import org.junit.Before
-import org.junit.Test
 
 /**
  * Unit tests for [SidecarCompat] that run on the JVM.
diff --git a/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendUnitTest.kt b/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendUnitTest.kt
index f286aa1..dc01b98 100644
--- a/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendUnitTest.kt
+++ b/window/window/src/test/java/androidx/window/layout/adapter/sidecar/SidecarWindowBackendUnitTest.kt
@@ -20,16 +20,16 @@
 import androidx.core.util.Consumer
 import androidx.window.layout.WindowLayoutInfo
 import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
-import org.mockito.kotlin.any
-import org.mockito.kotlin.eq
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
+import org.mockito.kotlin.any
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
 
 /**
  * Unit tests for [SidecarWindowBackend] that run on the JVM.
diff --git a/window/window/src/testUtil/java/androidx/window/layout/adapter/sidecar/SwitchOnUnregisterExtensionInterfaceCompat.kt b/window/window/src/testUtil/java/androidx/window/layout/adapter/sidecar/SwitchOnUnregisterExtensionInterfaceCompat.kt
index 1af0445..d902e75 100644
--- a/window/window/src/testUtil/java/androidx/window/layout/adapter/sidecar/SwitchOnUnregisterExtensionInterfaceCompat.kt
+++ b/window/window/src/testUtil/java/androidx/window/layout/adapter/sidecar/SwitchOnUnregisterExtensionInterfaceCompat.kt
@@ -20,13 +20,13 @@
 import androidx.annotation.GuardedBy
 import androidx.window.core.Bounds
 import androidx.window.layout.FoldingFeature
-import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import androidx.window.layout.FoldingFeature.State
 import androidx.window.layout.FoldingFeature.State.Companion.FLAT
 import androidx.window.layout.FoldingFeature.State.Companion.HALF_OPENED
 import androidx.window.layout.HardwareFoldingFeature
 import androidx.window.layout.HardwareFoldingFeature.Type.Companion.HINGE
 import androidx.window.layout.WindowLayoutInfo
+import androidx.window.layout.adapter.sidecar.ExtensionInterfaceCompat.ExtensionCallbackInterface
 import java.util.concurrent.locks.Lock
 import java.util.concurrent.locks.ReentrantLock
 import kotlin.concurrent.withLock
diff --git a/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/RemoteService.kt b/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/RemoteService.kt
index 98a2ffd..b1a8714 100644
--- a/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/RemoteService.kt
+++ b/work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/RemoteService.kt
@@ -31,11 +31,11 @@
 import androidx.work.WorkQuery
 import androidx.work.await
 import androidx.work.multiprocess.RemoteWorkManager
+import java.util.concurrent.TimeUnit
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.launch
-import java.util.concurrent.TimeUnit
 
 class RemoteService : LifecycleService() {
 
diff --git a/work/work-benchmark/build.gradle b/work/work-benchmark/build.gradle
index d4a2c31..cd0c8a6 100644
--- a/work/work-benchmark/build.gradle
+++ b/work/work-benchmark/build.gradle
@@ -38,7 +38,7 @@
 }
 
 androidx {
-    name = "Android WorkManager Benchmarks"
+    name = "WorkManager Benchmarks"
      publish = Publish.NONE
     inceptionYear = "2019"
     description = "Android WorkManager Benchmark Library"
diff --git a/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/DispatchingExecutor.kt b/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/DispatchingExecutor.kt
index 84bf03b..9f3beef 100644
--- a/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/DispatchingExecutor.kt
+++ b/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/DispatchingExecutor.kt
@@ -16,12 +16,12 @@
 
 package androidx.work.benchmark
 
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
-import java.util.concurrent.Executor
 
 /**
  * An [Executor] where we can await termination of all commands.
diff --git a/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/MarshallingBenchmark.kt b/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/MarshallingBenchmark.kt
index e174f59..d362916 100644
--- a/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/MarshallingBenchmark.kt
+++ b/work/work-benchmark/src/androidTest/java/androidx/work/benchmark/MarshallingBenchmark.kt
@@ -31,11 +31,11 @@
 import androidx.work.multiprocess.parcelable.ParcelConverters
 import androidx.work.multiprocess.parcelable.ParcelableConstraints
 import androidx.work.multiprocess.parcelable.ParcelableWorkRequest
+import java.util.concurrent.TimeUnit
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/work/work-gcm/build.gradle b/work/work-gcm/build.gradle
index 562422b0..98a4351 100644
--- a/work/work-gcm/build.gradle
+++ b/work/work-gcm/build.gradle
@@ -47,7 +47,7 @@
 }
 
 androidx {
-    name = "Android WorkManager GCMNetworkManager Support"
+    name = "WorkManager GCM Integration"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2019"
     description = "Android WorkManager GCMNetworkManager Support"
diff --git a/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/GcmTaskConverterTest.kt b/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/GcmTaskConverterTest.kt
index 0660ca2..da05ab5 100644
--- a/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/GcmTaskConverterTest.kt
+++ b/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/GcmTaskConverterTest.kt
@@ -27,16 +27,16 @@
 import androidx.work.impl.WorkManagerImpl
 import androidx.work.impl.background.gcm.GcmTaskConverter.EXECUTION_WINDOW_SIZE_IN_SECONDS
 import com.google.android.gms.gcm.Task
+import java.util.concurrent.TimeUnit
+import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.greaterThan
 import org.hamcrest.Matchers.lessThanOrEqualTo
 import org.junit.Assert.assertEquals
-import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.spy
-import java.util.concurrent.TimeUnit
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcherTest.kt b/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcherTest.kt
index 7e14f39..b3b56f5 100644
--- a/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcherTest.kt
+++ b/work/work-gcm/src/androidTest/java/androidx/work/impl/background/gcm/WorkManagerGcmDispatcherTest.kt
@@ -26,27 +26,27 @@
 import androidx.work.Configuration
 import androidx.work.OneTimeWorkRequest
 import androidx.work.impl.TestWorkManagerImpl
-import androidx.work.impl.model.WorkGenerationalId
 import androidx.work.impl.WorkManagerImpl
+import androidx.work.impl.model.WorkGenerationalId
 import androidx.work.impl.utils.SerialExecutorImpl
 import androidx.work.impl.utils.SynchronousExecutor
 import androidx.work.impl.utils.WorkTimer
 import androidx.work.impl.utils.taskexecutor.SerialExecutor
 import com.google.android.gms.gcm.GcmNetworkManager
 import com.google.android.gms.gcm.TaskParams
+import java.util.concurrent.Executor
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.anyLong
 import org.mockito.ArgumentMatchers.eq
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.atLeastOnce
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.spy
 import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
-import java.util.concurrent.Executor
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
diff --git a/work/work-inspection/build.gradle b/work/work-inspection/build.gradle
index 5385c55..5cfd833 100644
--- a/work/work-inspection/build.gradle
+++ b/work/work-inspection/build.gradle
@@ -42,7 +42,7 @@
 }
 
 androidx {
-    name = "Android WorkManager Inspector"
+    name = "WorkManager Inspector"
     type = LibraryType.IDE_PLUGIN
     inceptionYear = "2020"
     description = "The implementation of WorkManager Inspector."
diff --git a/work/work-inspection/src/androidTest/java/androidx/work/inspection/DispatchingExecutor.kt b/work/work-inspection/src/androidTest/java/androidx/work/inspection/DispatchingExecutor.kt
index 772f31f..68643032 100644
--- a/work/work-inspection/src/androidTest/java/androidx/work/inspection/DispatchingExecutor.kt
+++ b/work/work-inspection/src/androidTest/java/androidx/work/inspection/DispatchingExecutor.kt
@@ -16,12 +16,12 @@
 
 package androidx.work.inspection
 
+import java.util.concurrent.Executor
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
-import java.util.concurrent.Executor
 
 /**
  * An [Executor] where we can await termination of all commands.
diff --git a/work/work-inspection/src/androidTest/java/androidx/work/inspection/worker/IdleWorker.kt b/work/work-inspection/src/androidTest/java/androidx/work/inspection/worker/IdleWorker.kt
index e5e63e7..c4ba239 100644
--- a/work/work-inspection/src/androidTest/java/androidx/work/inspection/worker/IdleWorker.kt
+++ b/work/work-inspection/src/androidTest/java/androidx/work/inspection/worker/IdleWorker.kt
@@ -19,9 +19,9 @@
 import android.content.Context
 import androidx.work.Worker
 import androidx.work.WorkerParameters
+import kotlin.time.Duration
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.runBlocking
-import kotlin.time.Duration
 
 class IdleWorker(
     context: Context,
diff --git a/work/work-lint/build.gradle b/work/work-lint/build.gradle
index 083e406..fb59083 100644
--- a/work/work-lint/build.gradle
+++ b/work/work-lint/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android WorkManager Runtime Lint Checks"
+    name = "WorkManager Runtime Lint Checks"
     type = LibraryType.LINT
     inceptionYear = "2019"
     description = "Android WorkManager Runtime Lint Checks"
diff --git a/work/work-lint/src/main/java/androidx/work/lint/IdleBatteryChargingConstraintsDetector.kt b/work/work-lint/src/main/java/androidx/work/lint/IdleBatteryChargingConstraintsDetector.kt
index a0f5d40..975a5a8 100644
--- a/work/work-lint/src/main/java/androidx/work/lint/IdleBatteryChargingConstraintsDetector.kt
+++ b/work/work-lint/src/main/java/androidx/work/lint/IdleBatteryChargingConstraintsDetector.kt
@@ -28,6 +28,7 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UBlockExpression
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.UQualifiedReferenceExpression
@@ -35,7 +36,6 @@
 import org.jetbrains.uast.getParentOfType
 import org.jetbrains.uast.toUElement
 import org.jetbrains.uast.visitor.AbstractUastVisitor
-import java.util.EnumSet
 
 /**
  * Warns when a developer uses both idle + battery charging constraints in WorkManager.
diff --git a/work/work-lint/src/main/java/androidx/work/lint/InvalidPeriodicWorkRequestIntervalDetector.kt b/work/work-lint/src/main/java/androidx/work/lint/InvalidPeriodicWorkRequestIntervalDetector.kt
index a4c7cf6..6404e126cc 100644
--- a/work/work-lint/src/main/java/androidx/work/lint/InvalidPeriodicWorkRequestIntervalDetector.kt
+++ b/work/work-lint/src/main/java/androidx/work/lint/InvalidPeriodicWorkRequestIntervalDetector.kt
@@ -27,11 +27,11 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
+import java.util.concurrent.TimeUnit
 import org.jetbrains.kotlin.name.ClassId
 import org.jetbrains.kotlin.name.Name
 import org.jetbrains.uast.UCallExpression
-import java.util.EnumSet
-import java.util.concurrent.TimeUnit
 
 /**
  * Ensures a valid interval duration for a `PeriodicWorkRequest`.
diff --git a/work/work-lint/src/main/java/androidx/work/lint/RxWorkerSetProgressDetector.kt b/work/work-lint/src/main/java/androidx/work/lint/RxWorkerSetProgressDetector.kt
index 41a6ac4..f2c1f5d 100644
--- a/work/work-lint/src/main/java/androidx/work/lint/RxWorkerSetProgressDetector.kt
+++ b/work/work-lint/src/main/java/androidx/work/lint/RxWorkerSetProgressDetector.kt
@@ -28,8 +28,8 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
-import org.jetbrains.uast.UCallExpression
 import java.util.EnumSet
+import org.jetbrains.uast.UCallExpression
 
 class RxWorkerSetProgressDetector : Detector(), SourceCodeScanner {
     companion object {
diff --git a/work/work-lint/src/main/java/androidx/work/lint/SpecifyForegroundServiceTypeIssueDetector.kt b/work/work-lint/src/main/java/androidx/work/lint/SpecifyForegroundServiceTypeIssueDetector.kt
index 0d6e67d..c4f30bf 100644
--- a/work/work-lint/src/main/java/androidx/work/lint/SpecifyForegroundServiceTypeIssueDetector.kt
+++ b/work/work-lint/src/main/java/androidx/work/lint/SpecifyForegroundServiceTypeIssueDetector.kt
@@ -31,9 +31,9 @@
 import com.android.tools.lint.detector.api.XmlContext
 import com.android.tools.lint.detector.api.XmlScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.w3c.dom.Element
-import java.util.EnumSet
 
 /**
  * Detects usage of `ForegroundInfo` with the `foregroundServiceType` and ensure that the service
diff --git a/work/work-lint/src/main/java/androidx/work/lint/SpecifyJobSchedulerIdRangeIssueDetector.kt b/work/work-lint/src/main/java/androidx/work/lint/SpecifyJobSchedulerIdRangeIssueDetector.kt
index e3245f8..5d1a66d 100644
--- a/work/work-lint/src/main/java/androidx/work/lint/SpecifyJobSchedulerIdRangeIssueDetector.kt
+++ b/work/work-lint/src/main/java/androidx/work/lint/SpecifyJobSchedulerIdRangeIssueDetector.kt
@@ -29,9 +29,9 @@
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.UClass
-import java.util.EnumSet
 
 class SpecifyJobSchedulerIdRangeIssueDetector : Detector(), SourceCodeScanner {
     companion object {
diff --git a/work/work-lint/src/main/java/androidx/work/lint/WorkerHasPublicModifierDetector.kt b/work/work-lint/src/main/java/androidx/work/lint/WorkerHasPublicModifierDetector.kt
index a5730e6..b3c794b7 100644
--- a/work/work-lint/src/main/java/androidx/work/lint/WorkerHasPublicModifierDetector.kt
+++ b/work/work-lint/src/main/java/androidx/work/lint/WorkerHasPublicModifierDetector.kt
@@ -30,9 +30,9 @@
 import com.android.tools.lint.detector.api.SourceCodeScanner
 import com.intellij.lang.jvm.JvmModifier
 import com.intellij.psi.PsiMethod
+import java.util.EnumSet
 import org.jetbrains.uast.UCallExpression
 import org.jetbrains.uast.UClass
-import java.util.EnumSet
 
 class WorkerHasPublicModifierDetector : Detector(), SourceCodeScanner {
     companion object {
diff --git a/work/work-multiprocess/build.gradle b/work/work-multiprocess/build.gradle
index 7b7697d..94c4112 100644
--- a/work/work-multiprocess/build.gradle
+++ b/work/work-multiprocess/build.gradle
@@ -49,7 +49,7 @@
 }
 
 androidx {
-    name = "Android WorkManager Multiprocess Implementation"
+    name = "WorkManager Multiprocess"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android WorkManager runtime library"
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ListenableWorkerImplClientTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ListenableWorkerImplClientTest.kt
index 65381d0..4f225a8 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ListenableWorkerImplClientTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ListenableWorkerImplClientTest.kt
@@ -28,6 +28,7 @@
 import androidx.work.impl.utils.SerialExecutorImpl
 import androidx.work.impl.utils.futures.SettableFuture
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
+import java.util.concurrent.Executor
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
 import org.junit.Assert.assertTrue
@@ -37,11 +38,10 @@
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.ArgumentMatchers.anyString
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.spy
 import org.mockito.Mockito.verify
-import java.util.concurrent.Executor
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 public class ListenableWorkerImplClientTest {
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkContinuationImplTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkContinuationImplTest.kt
index d0d6eee..4e96412 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkContinuationImplTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkContinuationImplTest.kt
@@ -36,14 +36,14 @@
 import androidx.work.multiprocess.parcelable.ParcelConverters.marshall
 import androidx.work.multiprocess.parcelable.ParcelConverters.unmarshall
 import androidx.work.multiprocess.parcelable.ParcelableWorkContinuationImpl
+import java.util.concurrent.Executor
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.spy
-import java.util.concurrent.Executor
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 public class ParcelableWorkContinuationImplTest {
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkInfoTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkInfoTest.kt
index 0be0967..96a5676 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkInfoTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkInfoTest.kt
@@ -24,10 +24,10 @@
 import androidx.work.multiprocess.parcelable.ParcelConverters
 import androidx.work.multiprocess.parcelable.ParcelableWorkInfo
 import androidx.work.multiprocess.parcelable.ParcelableWorkInfos
+import java.util.UUID
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.UUID
 
 @RunWith(AndroidJUnit4::class)
 public class ParcelableWorkInfoTest {
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkQueryTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkQueryTest.kt
index 64a7a50..679f860 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkQueryTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkQueryTest.kt
@@ -23,10 +23,10 @@
 import androidx.work.WorkQuery
 import androidx.work.multiprocess.parcelable.ParcelConverters
 import androidx.work.multiprocess.parcelable.ParcelableWorkQuery
+import java.util.UUID
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.UUID
 
 @RunWith(AndroidJUnit4::class)
 public class ParcelableWorkQueryTest {
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkRequestConvertersTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkRequestConvertersTest.kt
index ea7ed12..ba9e090 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkRequestConvertersTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/ParcelableWorkRequestConvertersTest.kt
@@ -30,10 +30,10 @@
 import androidx.work.multiprocess.parcelable.ParcelConverters
 import androidx.work.multiprocess.parcelable.ParcelableWorkRequest
 import androidx.work.multiprocess.parcelable.ParcelableWorkRequests
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 public class ParcelableWorkRequestConvertersTest {
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteCoroutineWorkerTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteCoroutineWorkerTest.kt
index e28fc49..3b1c18b 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteCoroutineWorkerTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteCoroutineWorkerTest.kt
@@ -34,13 +34,13 @@
 import androidx.work.impl.foreground.ForegroundProcessor
 import androidx.work.impl.utils.SerialExecutorImpl
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
+import java.util.concurrent.Executor
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
-import java.util.concurrent.Executor
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 public class RemoteCoroutineWorkerTest {
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteListenableWorkerTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteListenableWorkerTest.kt
index 5efb197..5871f12 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteListenableWorkerTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteListenableWorkerTest.kt
@@ -39,14 +39,14 @@
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
 import androidx.work.multiprocess.RemoteListenableWorker.ARGUMENT_CLASS_NAME
 import androidx.work.multiprocess.RemoteListenableWorker.ARGUMENT_PACKAGE_NAME
+import java.util.concurrent.Executor
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNull
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
-import java.util.concurrent.Executor
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 public class RemoteListenableWorkerTest {
diff --git a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteWorkManagerClientTest.kt b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteWorkManagerClientTest.kt
index 7e1329e..e5d60a2 100644
--- a/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteWorkManagerClientTest.kt
+++ b/work/work-multiprocess/src/androidTest/java/androidx/work/multiprocess/RemoteWorkManagerClientTest.kt
@@ -27,6 +27,7 @@
 import androidx.work.impl.utils.SerialExecutorImpl
 import androidx.work.impl.utils.futures.SettableFuture
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
+import java.util.concurrent.Executor
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
 import org.junit.Assert.assertTrue
@@ -35,14 +36,13 @@
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.anyString
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.anyInt
 import org.mockito.Mockito.atLeastOnce
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.never
 import org.mockito.Mockito.spy
 import org.mockito.Mockito.verify
-import java.util.concurrent.Executor
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 public class RemoteWorkManagerClientTest {
diff --git a/work/work-runtime-ktx/build.gradle b/work/work-runtime-ktx/build.gradle
index f45007c..34051b4 100644
--- a/work/work-runtime-ktx/build.gradle
+++ b/work/work-runtime-ktx/build.gradle
@@ -40,7 +40,7 @@
 }
 
 androidx {
-    name = "Android WorkManager Kotlin Extensions"
+    name = "WorkManager Kotlin Extensions"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android WorkManager Kotlin Extensions"
diff --git a/work/work-runtime-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt b/work/work-runtime-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt
index a37928b..34e716c 100644
--- a/work/work-runtime-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt
+++ b/work/work-runtime-ktx/src/androidTest/java/androidx/work/CoroutineWorkerTest.kt
@@ -30,10 +30,12 @@
 import androidx.work.impl.utils.futures.SettableFuture
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
 import androidx.work.workers.ProgressUpdatingWorker
+import java.util.UUID
+import java.util.concurrent.Executor
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.runBlocking
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.nullValue
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.After
@@ -46,8 +48,6 @@
 import org.mockito.Mockito.spy
 import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
-import java.util.UUID
-import java.util.concurrent.Executor
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/work/work-runtime-ktx/src/androidTest/java/androidx/work/ListenableFutureTest.kt b/work/work-runtime-ktx/src/androidTest/java/androidx/work/ListenableFutureTest.kt
index 61b8b36..7cf491c 100644
--- a/work/work-runtime-ktx/src/androidTest/java/androidx/work/ListenableFutureTest.kt
+++ b/work/work-runtime-ktx/src/androidTest/java/androidx/work/ListenableFutureTest.kt
@@ -25,8 +25,8 @@
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.instanceOf
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Ignore
 import org.junit.Test
diff --git a/work/work-runtime-ktx/src/androidTest/java/androidx/work/PeriodicWorkRequestTest.kt b/work/work-runtime-ktx/src/androidTest/java/androidx/work/PeriodicWorkRequestTest.kt
index f406101..c20e521 100644
--- a/work/work-runtime-ktx/src/androidTest/java/androidx/work/PeriodicWorkRequestTest.kt
+++ b/work/work-runtime-ktx/src/androidTest/java/androidx/work/PeriodicWorkRequestTest.kt
@@ -20,11 +20,11 @@
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import androidx.work.workers.TestWorker
+import java.time.Duration
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertEquals
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.time.Duration
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/work/work-runtime-ktx/src/main/java/androidx/work/ListenableFuture.kt b/work/work-runtime-ktx/src/main/java/androidx/work/ListenableFuture.kt
index 3b825b5..f0edd3f 100644
--- a/work/work-runtime-ktx/src/main/java/androidx/work/ListenableFuture.kt
+++ b/work/work-runtime-ktx/src/main/java/androidx/work/ListenableFuture.kt
@@ -21,12 +21,12 @@
 import androidx.annotation.RestrictTo
 import androidx.work.impl.utils.futures.SettableFuture
 import com.google.common.util.concurrent.ListenableFuture
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.suspendCancellableCoroutine
 import java.util.concurrent.CancellationException
 import java.util.concurrent.ExecutionException
 import kotlin.coroutines.resume
 import kotlin.coroutines.resumeWithException
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.suspendCancellableCoroutine
 
 /**
  * Awaits for the completion of the [ListenableFuture] without blocking a thread.
diff --git a/work/work-runtime/build.gradle b/work/work-runtime/build.gradle
index 5e8d67b..ff562a1 100644
--- a/work/work-runtime/build.gradle
+++ b/work/work-runtime/build.gradle
@@ -96,7 +96,7 @@
 }
 
 androidx {
-    name = "Android WorkManager Runtime"
+    name = "WorkManager Runtime"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android WorkManager runtime library"
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/DelegatingWorkerFactoryTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/DelegatingWorkerFactoryTest.kt
index b89ef48..07cb922 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/DelegatingWorkerFactoryTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/DelegatingWorkerFactoryTest.kt
@@ -24,6 +24,7 @@
 import androidx.work.impl.utils.taskexecutor.WorkManagerTaskExecutor
 import androidx.work.worker.FailureWorker
 import androidx.work.worker.TestWorker
+import java.util.UUID
 import org.hamcrest.CoreMatchers.instanceOf
 import org.hamcrest.CoreMatchers.notNullValue
 import org.hamcrest.MatcherAssert.assertThat
@@ -31,7 +32,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito.mock
-import java.util.UUID
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/RawWorkInfoDaoTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/RawWorkInfoDaoTest.kt
index a7d4179..d7a6146 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/RawWorkInfoDaoTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/RawWorkInfoDaoTest.kt
@@ -22,8 +22,8 @@
 import androidx.work.worker.RetryWorker
 import androidx.work.worker.TestWorker
 import org.hamcrest.CoreMatchers.`is`
-import org.hamcrest.Matchers.containsInAnyOrder
 import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.containsInAnyOrder
 import org.junit.Test
 import org.junit.runner.RunWith
 
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/SchedulersTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/SchedulersTest.kt
index aa90135..92f289e 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/SchedulersTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/SchedulersTest.kt
@@ -24,8 +24,8 @@
 import androidx.work.impl.Scheduler
 import androidx.work.impl.StartStopTokens
 import androidx.work.impl.WorkDatabase
-import androidx.work.impl.WorkManagerImpl
 import androidx.work.impl.WorkLauncherImpl
+import androidx.work.impl.WorkManagerImpl
 import androidx.work.impl.background.greedy.GreedyScheduler
 import androidx.work.impl.constraints.trackers.Trackers
 import androidx.work.impl.model.WorkSpec
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/WorkDatabasePathHelperTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/WorkDatabasePathHelperTest.kt
index b02375a..9b8dd501 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/WorkDatabasePathHelperTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/WorkDatabasePathHelperTest.kt
@@ -27,13 +27,13 @@
 import androidx.work.impl.WorkDatabase
 import androidx.work.impl.WorkDatabasePathHelper
 import androidx.work.impl.WorkDatabaseVersions.VERSION_9
+import java.io.File
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.File
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/WorkForegroundRunnableTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/WorkForegroundRunnableTest.kt
index d13e1f3..cbae3d9 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/WorkForegroundRunnableTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/WorkForegroundRunnableTest.kt
@@ -30,8 +30,10 @@
 import androidx.work.impl.utils.taskexecutor.InstantWorkTaskExecutor
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
 import androidx.work.worker.TestWorker
-import org.hamcrest.CoreMatchers.`is`
+import java.util.UUID
+import java.util.concurrent.Executor
 import org.hamcrest.CoreMatchers.equalTo
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Assert.fail
 import org.junit.Before
@@ -42,8 +44,6 @@
 import org.mockito.Mockito.spy
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyNoMoreInteractions
-import java.util.UUID
-import java.util.concurrent.Executor
 
 @RunWith(AndroidJUnit4::class)
 public class WorkForegroundRunnableTest : DatabaseTest() {
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/WorkRequestTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/WorkRequestTest.kt
index 4a49ecd..6543a12 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/WorkRequestTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/WorkRequestTest.kt
@@ -19,10 +19,10 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import androidx.work.worker.TestWorker
+import java.util.concurrent.TimeUnit
 import org.junit.Assert.assertNotNull
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 class WorkRequestTest {
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/WorkUpdateTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/WorkUpdateTest.kt
index b150905..8421dc5 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/WorkUpdateTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/WorkUpdateTest.kt
@@ -29,8 +29,8 @@
 import androidx.work.WorkManager.UpdateResult.NOT_APPLIED
 import androidx.work.impl.Processor
 import androidx.work.impl.WorkDatabase
-import androidx.work.impl.WorkManagerImpl
 import androidx.work.impl.WorkLauncherImpl
+import androidx.work.impl.WorkManagerImpl
 import androidx.work.impl.background.greedy.GreedyScheduler
 import androidx.work.impl.constraints.trackers.Trackers
 import androidx.work.impl.testutils.TestConstraintTracker
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/background/greedy/DelayedWorkTrackerTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/impl/background/greedy/DelayedWorkTrackerTest.kt
index 5cba6e9..3906259 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/background/greedy/DelayedWorkTrackerTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/background/greedy/DelayedWorkTrackerTest.kt
@@ -22,6 +22,7 @@
 import androidx.work.RunnableScheduler
 import androidx.work.SystemClock
 import androidx.work.worker.TestWorker
+import java.util.concurrent.TimeUnit
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -29,7 +30,6 @@
 import org.mockito.ArgumentMatchers.anyLong
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.verify
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 class DelayedWorkTrackerTest {
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/SerialExecutorTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/SerialExecutorTest.kt
index c723d90..814e22f 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/SerialExecutorTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/SerialExecutorTest.kt
@@ -18,14 +18,14 @@
 
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.greaterThanOrEqualTo
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.Executors
-import java.util.concurrent.TimeUnit
 
 @RunWith(AndroidJUnit4::class)
 @LargeTest
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkForegroundUpdaterTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkForegroundUpdaterTest.kt
index b9373a0..d7e25ac 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkForegroundUpdaterTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkForegroundUpdaterTest.kt
@@ -32,15 +32,15 @@
 import androidx.work.impl.utils.taskexecutor.InstantWorkTaskExecutor
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
 import androidx.work.worker.TestWorker
+import java.util.UUID
 import org.junit.Assert.assertNotNull
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers
-import org.mockito.Mockito.`when`
 import org.mockito.Mockito.anyString
 import org.mockito.Mockito.mock
-import java.util.UUID
+import org.mockito.Mockito.`when`
 
 @RunWith(AndroidJUnit4::class)
 
diff --git a/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkProgressUpdaterTest.kt b/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkProgressUpdaterTest.kt
index da29a44..eaf7b7b 100644
--- a/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkProgressUpdaterTest.kt
+++ b/work/work-runtime/src/androidTest/java/androidx/work/impl/utils/WorkProgressUpdaterTest.kt
@@ -26,13 +26,13 @@
 import androidx.work.impl.model.WorkSpecDao
 import androidx.work.impl.utils.taskexecutor.InstantWorkTaskExecutor
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
+import java.util.UUID
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers.anyString
 import org.mockito.Mockito
 import org.mockito.Mockito.`when`
-import java.util.UUID
 
 @RunWith(AndroidJUnit4::class)
 // Mockito tries to class load android.os.CancellationSignal which is only available on API >= 16
diff --git a/work/work-runtime/src/main/java/androidx/work/WorkRequest.kt b/work/work-runtime/src/main/java/androidx/work/WorkRequest.kt
index 27d7f35..8232cf1a8 100644
--- a/work/work-runtime/src/main/java/androidx/work/WorkRequest.kt
+++ b/work/work-runtime/src/main/java/androidx/work/WorkRequest.kt
@@ -20,8 +20,8 @@
 import androidx.annotation.RequiresApi
 import androidx.annotation.RestrictTo
 import androidx.annotation.VisibleForTesting
-import androidx.work.impl.utils.toMillisCompat
 import androidx.work.impl.model.WorkSpec
+import androidx.work.impl.utils.toMillisCompat
 import java.time.Duration
 import java.util.UUID
 import java.util.concurrent.TimeUnit
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.kt b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.kt
index da13e81..c1b592f 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.kt
+++ b/work/work-runtime/src/main/java/androidx/work/impl/constraints/trackers/BatteryNotLowTracker.kt
@@ -16,8 +16,8 @@
 package androidx.work.impl.constraints.trackers
 
 import android.content.Context
-import android.content.IntentFilter
 import android.content.Intent
+import android.content.IntentFilter
 import android.os.BatteryManager
 import androidx.annotation.RestrictTo
 import androidx.work.Logger
diff --git a/work/work-runtime/src/main/java/androidx/work/impl/workers/DiagnosticsWorker.kt b/work/work-runtime/src/main/java/androidx/work/impl/workers/DiagnosticsWorker.kt
index 24221a9..b8bc4e6 100644
--- a/work/work-runtime/src/main/java/androidx/work/impl/workers/DiagnosticsWorker.kt
+++ b/work/work-runtime/src/main/java/androidx/work/impl/workers/DiagnosticsWorker.kt
@@ -22,11 +22,11 @@
 import androidx.work.WorkerParameters
 import androidx.work.impl.Scheduler
 import androidx.work.impl.WorkManagerImpl
-import androidx.work.impl.model.generationalId
 import androidx.work.impl.model.SystemIdInfoDao
 import androidx.work.impl.model.WorkNameDao
 import androidx.work.impl.model.WorkSpec
 import androidx.work.impl.model.WorkTagDao
+import androidx.work.impl.model.generationalId
 import java.util.concurrent.TimeUnit
 
 internal class DiagnosticsWorker(context: Context, parameters: WorkerParameters) :
diff --git a/work/work-rxjava2/build.gradle b/work/work-rxjava2/build.gradle
index e8e0e7e..9779ab9 100644
--- a/work/work-rxjava2/build.gradle
+++ b/work/work-rxjava2/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android WorkManager RxJava2 Support"
+    name = "WorkManager RxJava2"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android WorkManager RxJava2 interoperatibility library"
diff --git a/work/work-rxjava2/src/test/java/androidx/work/RxForegroundInfoTest.kt b/work/work-rxjava2/src/test/java/androidx/work/RxForegroundInfoTest.kt
index 892795f..e2713c2 100644
--- a/work/work-rxjava2/src/test/java/androidx/work/RxForegroundInfoTest.kt
+++ b/work/work-rxjava2/src/test/java/androidx/work/RxForegroundInfoTest.kt
@@ -23,12 +23,12 @@
 import androidx.work.impl.utils.futures.SettableFuture
 import com.google.common.truth.Truth.assertThat
 import io.reactivex.Single
+import java.util.UUID
+import java.util.concurrent.Executor
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
-import java.util.UUID
-import java.util.concurrent.Executor
 
 @RunWith(JUnit4::class)
 class RxForegroundInfoTest {
diff --git a/work/work-rxjava2/src/test/java/androidx/work/RxWorkerTest.kt b/work/work-rxjava2/src/test/java/androidx/work/RxWorkerTest.kt
index 5bb80f0..6e04386 100644
--- a/work/work-rxjava2/src/test/java/androidx/work/RxWorkerTest.kt
+++ b/work/work-rxjava2/src/test/java/androidx/work/RxWorkerTest.kt
@@ -22,6 +22,10 @@
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
 import io.reactivex.Single
 import io.reactivex.schedulers.Schedulers
+import java.util.UUID
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.Executor
+import java.util.concurrent.TimeUnit
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Assert
@@ -29,10 +33,6 @@
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
-import java.util.UUID
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.Executor
-import java.util.concurrent.TimeUnit
 
 @RunWith(JUnit4::class)
 class RxWorkerTest {
diff --git a/work/work-rxjava2/src/test/java/androidx/work/SetCompletableProgressTest.kt b/work/work-rxjava2/src/test/java/androidx/work/SetCompletableProgressTest.kt
index f8e2c28..8579353 100644
--- a/work/work-rxjava2/src/test/java/androidx/work/SetCompletableProgressTest.kt
+++ b/work/work-rxjava2/src/test/java/androidx/work/SetCompletableProgressTest.kt
@@ -20,14 +20,14 @@
 import androidx.work.ListenableWorker.Result
 import androidx.work.impl.utils.SynchronousExecutor
 import androidx.work.impl.utils.futures.SettableFuture
+import java.util.UUID
+import java.util.concurrent.Executor
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
-import java.util.UUID
-import java.util.concurrent.Executor
 
 @RunWith(JUnit4::class)
 class SetCompletableProgressTest {
diff --git a/work/work-rxjava3/build.gradle b/work/work-rxjava3/build.gradle
index a725099..c6e82b9 100644
--- a/work/work-rxjava3/build.gradle
+++ b/work/work-rxjava3/build.gradle
@@ -32,7 +32,7 @@
 }
 
 androidx {
-    name = "Android WorkManager RxJava3 Support"
+    name = "WorkManager RxJava3"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2020"
     description = "Android WorkManager RxJava3 interoperatibility library"
diff --git a/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxForegroundInfoTest.kt b/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxForegroundInfoTest.kt
index 89c230b..131e8a8 100644
--- a/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxForegroundInfoTest.kt
+++ b/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxForegroundInfoTest.kt
@@ -29,12 +29,12 @@
 import androidx.work.impl.utils.futures.SettableFuture
 import com.google.common.truth.Truth.assertThat
 import io.reactivex.rxjava3.core.Single
+import java.util.UUID
+import java.util.concurrent.Executor
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
-import java.util.UUID
-import java.util.concurrent.Executor
 
 @RunWith(JUnit4::class)
 class RxForegroundInfoTest {
diff --git a/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxWorkerTest.kt b/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxWorkerTest.kt
index 2f7d422..13d4305 100644
--- a/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxWorkerTest.kt
+++ b/work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxWorkerTest.kt
@@ -28,6 +28,10 @@
 import androidx.work.impl.utils.taskexecutor.TaskExecutor
 import io.reactivex.rxjava3.core.Single
 import io.reactivex.rxjava3.schedulers.Schedulers
+import java.util.UUID
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.Executor
+import java.util.concurrent.TimeUnit
 import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.junit.Assert
@@ -35,10 +39,6 @@
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
-import java.util.UUID
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.Executor
-import java.util.concurrent.TimeUnit
 
 @RunWith(JUnit4::class)
 class RxWorkerTest {
diff --git a/work/work-rxjava3/src/test/java/androidx/work/rxjava3/SetCompletableProgressTest.kt b/work/work-rxjava3/src/test/java/androidx/work/rxjava3/SetCompletableProgressTest.kt
index ee837b8..24e8155 100644
--- a/work/work-rxjava3/src/test/java/androidx/work/rxjava3/SetCompletableProgressTest.kt
+++ b/work/work-rxjava3/src/test/java/androidx/work/rxjava3/SetCompletableProgressTest.kt
@@ -25,14 +25,14 @@
 import androidx.work.WorkerParameters
 import androidx.work.impl.utils.SynchronousExecutor
 import androidx.work.impl.utils.futures.SettableFuture
+import java.util.UUID
+import java.util.concurrent.Executor
 import org.junit.Assert.assertEquals
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
 import org.mockito.Mockito.mock
-import java.util.UUID
-import java.util.concurrent.Executor
 
 @RunWith(JUnit4::class)
 class SetCompletableProgressTest {
diff --git a/work/work-testing/build.gradle b/work/work-testing/build.gradle
index 45e33ef..52a3ba4 100644
--- a/work/work-testing/build.gradle
+++ b/work/work-testing/build.gradle
@@ -44,7 +44,7 @@
 }
 
 androidx {
-    name = "Android WorkManager Testing"
+    name = "WorkManager Testing"
     publish = Publish.SNAPSHOT_AND_RELEASE
     inceptionYear = "2018"
     description = "Android WorkManager testing library"
diff --git a/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerTest.java b/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerTest.java
index 2e44ffd..ca861ee 100644
--- a/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerTest.java
+++ b/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerTest.java
@@ -44,6 +44,7 @@
 import androidx.work.testing.workers.TestWorker;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -77,6 +78,7 @@
         CountingTestWorker.COUNT.set(0);
     }
 
+    @Ignore // b/281720148
     @Test
     public void testWorker_shouldSucceedSynchronously()
             throws InterruptedException, ExecutionException {
diff --git a/work/work-testing/src/androidTest/java/androidx/work/testing/TestWorkerBuilderTest.kt b/work/work-testing/src/androidTest/java/androidx/work/testing/TestWorkerBuilderTest.kt
index 077765c..7548ecb 100644
--- a/work/work-testing/src/androidTest/java/androidx/work/testing/TestWorkerBuilderTest.kt
+++ b/work/work-testing/src/androidTest/java/androidx/work/testing/TestWorkerBuilderTest.kt
@@ -30,9 +30,14 @@
 import androidx.work.await
 import androidx.work.testing.workers.TestListenableWorker
 import androidx.work.testing.workers.TestWorker
+import java.util.UUID
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.Executor
+import java.util.concurrent.Executors
+import kotlin.jvm.Throws
 import kotlinx.coroutines.runBlocking
-import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.CoreMatchers.hasItems
+import org.hamcrest.CoreMatchers.`is`
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.containsInAnyOrder
 import org.hamcrest.Matchers.notNullValue
@@ -44,11 +49,6 @@
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
-import java.util.UUID
-import java.util.concurrent.ExecutionException
-import java.util.concurrent.Executor
-import java.util.concurrent.Executors
-import kotlin.jvm.Throws
 
 @RunWith(AndroidJUnit4::class)
 class TestWorkerBuilderTest {
diff --git a/work/work-testing/src/main/java/androidx/work/testing/TestWorkManagerImpl.kt b/work/work-testing/src/main/java/androidx/work/testing/TestWorkManagerImpl.kt
index aa1ba31..851f31e 100644
--- a/work/work-testing/src/main/java/androidx/work/testing/TestWorkManagerImpl.kt
+++ b/work/work-testing/src/main/java/androidx/work/testing/TestWorkManagerImpl.kt
@@ -17,7 +17,6 @@
 package androidx.work.testing
 
 import android.content.Context
-
 import androidx.work.Configuration
 import androidx.work.impl.Processor
 import androidx.work.impl.Scheduler