Merge "Force enable DeviceIdleController in imperceptible killing test" into rvc-dev
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 0f708d7..3bc5bb6 100755
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -1673,8 +1673,8 @@
     <string name="wifi_status_suggestion_get_failure">Failed to get suggestions.</string>
     <string name="wifi_status_suggestion_remove">Removing suggestions from the device.</string>
     <string name="wifi_status_suggestion_remove_failure">Failed to remove suggestions.</string>
-    <string name="wifi_status_suggestion_wait_for_connect">Waiting for network connection. Please click \"Yes\" in the notification that pops up for approving the request.</string>
-    <string name="wifi_status_suggestion_ensure_no_connect">Ensuring no network connection. Please click \"Yes\" in the notification that pops up for approving the request.</string>
+    <string name="wifi_status_suggestion_wait_for_connect">Waiting for network connection. Please click \"Allow\" in the dialog that pops up for approving the app.</string>
+    <string name="wifi_status_suggestion_ensure_no_connect">Ensuring no network connection. Please click \"Allow\" in the dialog that pops up for approving the app.</string>
     <string name="wifi_status_suggestion_connect">Connected to the network.</string>
     <string name="wifi_status_suggestion_not_connected">Did not connect to the network.</string>
     <string name="wifi_status_suggestion_wait_for_post_connect_bcast">Waiting for post connection broadcast.</string>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/p2p/testcase/P2pBroadcastReceiverTest.java b/apps/CtsVerifier/src/com/android/cts/verifier/p2p/testcase/P2pBroadcastReceiverTest.java
index 5cc23f1..0e5f356 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/p2p/testcase/P2pBroadcastReceiverTest.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/p2p/testcase/P2pBroadcastReceiverTest.java
@@ -42,7 +42,7 @@
     private WifiP2pManager mP2pMgr;
     private Channel mChannel;
 
-    private WifiP2pDeviceList mPeers;
+    private WifiP2pDeviceList mPeers = new WifiP2pDeviceList();
     private WifiP2pInfo mP2pInfo;
     private WifiP2pGroup mP2pGroup;
 
@@ -79,12 +79,9 @@
 
         Timeout t = new Timeout(msec);
         while (!t.isTimeout()) {
-            if (mPeers != null) {
-                for (WifiP2pDevice dev: mPeers.getDeviceList()) {
-                    if (dev.deviceAddress.equals(targetAddr)) {
-                        return dev;
-                    }
-                }
+            WifiP2pDevice dev = mPeers.get(targetAddr);
+            if (dev != null) {
+                return dev;
             }
             wait(t.getRemainTime());
         }
@@ -125,14 +122,9 @@
 
         Timeout t = new Timeout(msec);
         while (!t.isTimeout()) {
-            if (mPeers != null) {
-                for (WifiP2pDevice dev: mPeers.getDeviceList()) {
-                    if (dev.deviceAddress.equals(targetAddr)) {
-                        if (dev.status == WifiP2pDevice.CONNECTED) {
-                            return true;
-                        }
-                    }
-                }
+            WifiP2pDevice dev = mPeers.get(targetAddr);
+            if (dev != null && dev.status == WifiP2pDevice.CONNECTED) {
+                return true;
             }
             wait(t.getRemainTime());
         }
@@ -152,21 +144,14 @@
 
         Timeout t = new Timeout(msec);
 
-        boolean devicePresent;
-
         while (!t.isTimeout()) {
-            devicePresent = false;
-            if (mPeers != null) {
-                for (WifiP2pDevice dev: mPeers.getDeviceList()) {
-                    if (dev.deviceAddress.equals(targetAddr)) {
-                        if (dev.status != WifiP2pDevice.CONNECTED) {
-                            return true;
-                        }
-                        devicePresent = true;
-                    }
-                }
+            WifiP2pDevice dev = mPeers.get(targetAddr);
+
+            if (dev == null ) return true;
+
+            if (dev.status != WifiP2pDevice.CONNECTED) {
+                return true;
             }
-            if (!devicePresent) return true;
             wait(t.getRemainTime());
         }
         Log.e(TAG, "Appropriate WIFI_P2P_PEERS_CHANGED_ACTION didn't occur");
@@ -217,7 +202,7 @@
     @Override
     public synchronized void onPeersAvailable(WifiP2pDeviceList peers) {
         Log.d(TAG, "onPeersAvailable()");
-        mPeers = peers;
+        mPeers = new WifiP2pDeviceList(peers);
         notifyAll();
     }
 
diff --git a/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.bp b/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.bp
index 4481d9e..9de8251 100644
--- a/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.bp
+++ b/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.bp
@@ -20,6 +20,7 @@
         "cts",
         "vts",
         "general-tests",
+        "sts",
     ],
     srcs: ["src/**/*.java"],
     sdk_version: "current",
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/DevicePolicyLoggingTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/DevicePolicyLoggingTest.java
index 036f4a2..61fdb18 100644
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/DevicePolicyLoggingTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/DevicePolicyLoggingTest.java
@@ -154,11 +154,12 @@
         mDevicePolicyManager.setAutoTimeRequired(ADMIN_RECEIVER_COMPONENT, initialValue);
     }
 
-    public void testSetAutoTime() {
-        final boolean initialValue = mDevicePolicyManager.getAutoTime(ADMIN_RECEIVER_COMPONENT);
-        mDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, true);
-        mDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, false);
-        mDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, initialValue);
+    public void testSetAutoTimeEnabled() {
+        final boolean initialValue = mDevicePolicyManager.getAutoTimeEnabled(
+                ADMIN_RECEIVER_COMPONENT);
+        mDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT, true);
+        mDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT, false);
+        mDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT, initialValue);
     }
 
     public void testEnableSystemAppLogged() {
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/TimeManagementTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/TimeManagementTest.java
index 24428d8..1f33446 100644
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/TimeManagementTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/TimeManagementTest.java
@@ -39,18 +39,18 @@
         super.tearDown();
     }
 
-    public void testSetAutoTimeZone() {
-        mDevicePolicyManager.setAutoTimeZone(ADMIN_RECEIVER_COMPONENT, true);
+    public void testSetAutoTimeZoneEnabled() {
+        mDevicePolicyManager.setAutoTimeZoneEnabled(ADMIN_RECEIVER_COMPONENT, true);
 
-        assertThat(mDevicePolicyManager.getAutoTimeZone(ADMIN_RECEIVER_COMPONENT)).isTrue();
+        assertThat(mDevicePolicyManager.getAutoTimeZoneEnabled(ADMIN_RECEIVER_COMPONENT)).isTrue();
 
-        mDevicePolicyManager.setAutoTimeZone(ADMIN_RECEIVER_COMPONENT, false);
+        mDevicePolicyManager.setAutoTimeZoneEnabled(ADMIN_RECEIVER_COMPONENT, false);
 
-        assertThat(mDevicePolicyManager.getAutoTimeZone(ADMIN_RECEIVER_COMPONENT)).isFalse();
+        assertThat(mDevicePolicyManager.getAutoTimeZoneEnabled(ADMIN_RECEIVER_COMPONENT)).isFalse();
     }
 
     public void testSetTime() {
-        mDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, false);
+        mDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT, false);
 
         final long estimatedNow = mStartTimeWallClockMillis +
                 TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - mStartTimeElapsedNanos);
@@ -59,20 +59,20 @@
     }
 
     public void testSetTime_failWhenAutoTimeEnabled() {
-        mDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, true);
+        mDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT, true);
 
         assertThat(mDevicePolicyManager.setTime(ADMIN_RECEIVER_COMPONENT, 0)).isFalse();
     }
 
     public void testSetTimeZone() {
-        mDevicePolicyManager.setAutoTimeZone(ADMIN_RECEIVER_COMPONENT, false);
+        mDevicePolicyManager.setAutoTimeZoneEnabled(ADMIN_RECEIVER_COMPONENT, false);
 
         assertThat(
                 mDevicePolicyManager.setTimeZone(ADMIN_RECEIVER_COMPONENT, "Singapore")).isTrue();
     }
 
     public void testSetTimeZone_failIfAutoTimeZoneEnabled() {
-        mDevicePolicyManager.setAutoTimeZone(ADMIN_RECEIVER_COMPONENT, true);
+        mDevicePolicyManager.setAutoTimeZoneEnabled(ADMIN_RECEIVER_COMPONENT, true);
 
         assertThat(
                 mDevicePolicyManager.setTimeZone(ADMIN_RECEIVER_COMPONENT, "Singapore")).isFalse();
@@ -84,12 +84,12 @@
     }
 
     private void restoreTime() {
-        mDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, false);
+        mDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT, false);
 
         final long estimatedNow = mStartTimeWallClockMillis +
                 TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - mStartTimeElapsedNanos);
         mDevicePolicyManager.setTime(ADMIN_RECEIVER_COMPONENT, estimatedNow);
 
-        mDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, true);
+        mDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT, true);
     }
 }
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/ParentProfileTest.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/ParentProfileTest.java
index 3a3d7fb..5bcf4be 100644
--- a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/ParentProfileTest.java
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/ParentProfileTest.java
@@ -85,8 +85,8 @@
             .add("isDeviceIdAttestationSupported")
             .add("isUniqueDeviceAttestationSupported")
             .add("wipeData")
-            .add("getAutoTime")
-            .add("setAutoTime")
+            .add("getAutoTimeEnabled")
+            .add("setAutoTimeEnabled")
             .add("addUserRestriction")
             .add("clearUserRestriction")
             .add("getUserRestrictions")
@@ -169,10 +169,11 @@
 
     public void testCannotCallAutoTimeMethodsOnParentProfile() {
         assertThrows(SecurityException.class,
-                () -> mParentDevicePolicyManager.setAutoTime(ADMIN_RECEIVER_COMPONENT, true));
+                () -> mParentDevicePolicyManager.setAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT,
+                        true));
 
         assertThrows(SecurityException.class,
-                () -> mParentDevicePolicyManager.getAutoTime(ADMIN_RECEIVER_COMPONENT));
+                () -> mParentDevicePolicyManager.getAutoTimeEnabled(ADMIN_RECEIVER_COMPONENT));
     }
 
     public void testCannotCallSetDefaultSmsApplicationOnParentProfile() {
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
index d393b98..b23f939 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
@@ -1944,12 +1944,12 @@
     }
 
     @Test
-    public void testSetAutoTime() throws Exception {
+    public void testSetAutoTimeEnabled() throws Exception {
         if (!mHasFeature) {
             return;
         }
         assertMetricsLogged(getDevice(), () -> {
-            executeDeviceTestMethod(".DevicePolicyLoggingTest", "testSetAutoTime");
+            executeDeviceTestMethod(".DevicePolicyLoggingTest", "testSetAutoTimeEnabled");
         }, new DevicePolicyEventWrapper.Builder(EventId.SET_AUTO_TIME_VALUE)
                     .setAdminPackageName(DEVICE_ADMIN_PKG)
                     .setBoolean(true)
@@ -1961,12 +1961,12 @@
     }
 
     @Test
-    public void testSetAutoTimeZone() throws Exception {
+    public void testSetAutoTimeZoneEnabled() throws Exception {
         if (!mHasFeature) {
             return;
         }
         assertMetricsLogged(getDevice(), () -> {
-                    executeDeviceTestMethod(".TimeManagementTest", "testSetAutoTimeZone");
+                    executeDeviceTestMethod(".TimeManagementTest", "testSetAutoTimeZoneEnabled");
                 }, new DevicePolicyEventWrapper.Builder(EventId.SET_AUTO_TIME_ZONE_VALUE)
                         .setAdminPackageName(DEVICE_ADMIN_PKG)
                         .setBoolean(true)
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedManagedProfileOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedManagedProfileOwnerTest.java
index 51a312b..7a61083 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedManagedProfileOwnerTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedManagedProfileOwnerTest.java
@@ -200,14 +200,14 @@
 
     @Override
     @Test
-    public void testSetAutoTime() {
+    public void testSetAutoTimeEnabled() {
         // Managed profile owner cannot set auto time unless it is called by the profile owner of
         // an organization-owned managed profile.
     }
 
     @Override
     @Test
-    public void testSetAutoTimeZone() {
+    public void testSetAutoTimeZoneEnabled() {
         // Managed profile owner cannot set auto time zone unless it is called by the profile
         // owner of an organization-owned managed profile.
     }
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedProfileOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedProfileOwnerTest.java
index 2da4cba..66b2630 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedProfileOwnerTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedProfileOwnerTest.java
@@ -101,7 +101,7 @@
 
     @Override
     @Test
-    public void testSetAutoTimeZone() {
+    public void testSetAutoTimeZoneEnabled() {
         // Profile owner cannot set auto time zone unless it is called by the profile
         // owner of an organization-owned managed profile or a profile owner on user 0.
     }
diff --git a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/InputMethodServiceLifecycleTest.java b/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/InputMethodServiceLifecycleTest.java
index ed4e672..644ba72 100644
--- a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/InputMethodServiceLifecycleTest.java
+++ b/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/InputMethodServiceLifecycleTest.java
@@ -37,6 +37,7 @@
 import android.platform.test.annotations.AppModeInstant;
 
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 
 import org.junit.After;
 import org.junit.Before;
@@ -50,7 +51,7 @@
  * Test general lifecycle events around InputMethodService.
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
-public class InputMethodServiceLifecycleTest extends RebootFreeHostTestBase {
+public class InputMethodServiceLifecycleTest extends BaseHostJUnit4Test {
 
     private static final long WAIT_TIMEOUT = TimeUnit.SECONDS.toMillis(1);
     private static final long PACKAGE_OP_TIMEOUT = TimeUnit.SECONDS.toMillis(7);
diff --git a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/MultiUserTest.java b/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/MultiUserTest.java
index 8fece56..f1e73a2 100644
--- a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/MultiUserTest.java
+++ b/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/MultiUserTest.java
@@ -30,6 +30,7 @@
 import android.platform.test.annotations.AppModeInstant;
 
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.testtype.junit4.DeviceTestRunOptions;
 import com.android.tradefed.util.CommandResult;
 import com.android.tradefed.util.CommandStatus;
@@ -48,7 +49,7 @@
  * Test IME APIs for multi-user environment.
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
-public class MultiUserTest extends RebootFreeHostTestBase {
+public class MultiUserTest extends BaseHostJUnit4Test {
     private static final long USER_SWITCH_TIMEOUT = TimeUnit.SECONDS.toMillis(60);
     private static final long USER_SWITCH_POLLING_INTERVAL = TimeUnit.MILLISECONDS.toMillis(100);
     private static final long IME_COMMAND_TIMEOUT = TimeUnit.SECONDS.toMillis(7);
diff --git a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/RebootFreeHostTestBase.java b/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/RebootFreeHostTestBase.java
deleted file mode 100644
index e90f1f6..0000000
--- a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/RebootFreeHostTestBase.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 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 android.inputmethodservice.cts.hostside;
-
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.rules.TestName;
-
-import java.util.Objects;
-import java.util.WeakHashMap;
-
-/**
- * A utility class that enforces the device under test must never reboot during the test runs.
- *
- * <p>For instance, suppose the following test class.</p>
- * <pre>{@code
- * @RunWith(DeviceJUnit4ClassRunner.class)
- * public class MyTestClass extends RebootFreeHostTestBase {
- *     @Test
- *     public void test1() throws Exception {
- *         // do something;
- *     }
- *
- *     @Test
- *     public void test2() throws Exception {
- *         // do something;
- *     }
- *
- *     @Test
- *     public void test3() throws Exception {
- *         // do something;
- *     }
- * }
- * }</pre>
- *
- * <p>If the device (soft-)rebooted between {@code test1()} and {@code test2()}, then this base
- * class would let {@code test2()} and {@code test3()} immediately fail by throwing
- * {@link IllegalStateException} with saying that the device reboot is detected and the last
- * test method before reboot is {@code test1()}</p>
- *
- * <p>Note that reboot-free is enforced only within each subclass of {@link RebootFreeHostTestBase}.
- * Another sub-class such as {@code class MyTestClass2 extends RebootFreeHostTestBase} will not
- * immediately fail because of device restart detected while running {@code class MyTestClass}.</p>
- */
-public class RebootFreeHostTestBase extends BaseHostJUnit4Test {
-    private static final String PROP_SYSTEM_SERVER_START_COUNT = "sys.system_server.start_count";
-
-    private static final WeakHashMap<Class<?>, String> sExpectedSystemStartCount =
-            new WeakHashMap<>();
-    private static final WeakHashMap<Class<?>, String> sLastRunningTestName = new WeakHashMap<>();
-
-    /**
-     * A {@link TestName} object to receive the currently running test name.
-     *
-     * <p>Note this field needs to be {@code public} due to a restriction of JUnit4.</p>
-     */
-    @Rule
-    public TestName mTestName = new TestName();
-
-    /**
-     * @return device start count as {@link String}.
-     * @throws DeviceNotAvailableException
-     */
-    private String getSystemStartCountAsString() throws DeviceNotAvailableException  {
-        final String countString = getDevice().getProperty(PROP_SYSTEM_SERVER_START_COUNT);
-        if (countString == null) {
-            throw new IllegalStateException(
-                    String.format("Property %s must not be null", PROP_SYSTEM_SERVER_START_COUNT));
-        }
-        return countString;
-    }
-
-    /**
-     * Ensures there was no unexpected device reboot.
-     *
-     * @throws IllegalStateException when an unexpected device reboot is detected.
-     */
-    @Before
-    public void ensureNoSystemRestart() throws Exception {
-        final Class<?> myClass = getClass();
-        final String currentCount = getSystemStartCountAsString();
-        final String expectedCount = sExpectedSystemStartCount.get(myClass);
-        if (expectedCount == null) {
-            // This is the first time for the given test class to run.
-            // Just remember the current system start count.
-            sExpectedSystemStartCount.put(myClass, currentCount);
-        } else if (!Objects.equals(expectedCount, currentCount)) {
-            final String lastTest = sLastRunningTestName.getOrDefault(myClass, "<unknown>");
-            throw new IllegalStateException(String.format(
-                    "Unexpected device restart detected [%s: %s -> %s]. "
-                            + "lastTestBeforeRestart=%s. Check the device log!",
-                    PROP_SYSTEM_SERVER_START_COUNT, expectedCount, currentCount, lastTest));
-        }
-        sLastRunningTestName.put(myClass, mTestName.getMethodName());
-    }
-}
diff --git a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/ShellCommandFromAppTest.java b/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/ShellCommandFromAppTest.java
index 0ab53cd..6c66949 100644
--- a/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/ShellCommandFromAppTest.java
+++ b/hostsidetests/inputmethodservice/hostside/src/android/inputmethodservice/cts/hostside/ShellCommandFromAppTest.java
@@ -25,6 +25,7 @@
 import android.platform.test.annotations.AppModeInstant;
 
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.testtype.junit4.DeviceTestRunOptions;
 
 import org.junit.After;
@@ -36,7 +37,7 @@
  * Test IInputMethodManager#shellComman verifies callers.
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
-public class ShellCommandFromAppTest extends RebootFreeHostTestBase {
+public class ShellCommandFromAppTest extends BaseHostJUnit4Test {
 
     /**
      * {@code true} if {@link #tearDown()} needs to be fully executed.
diff --git a/tests/inputmethod/mockime/src/com/android/cts/mockime/MockIme.java b/tests/inputmethod/mockime/src/com/android/cts/mockime/MockIme.java
index 6142b9e..9a73722 100644
--- a/tests/inputmethod/mockime/src/com/android/cts/mockime/MockIme.java
+++ b/tests/inputmethod/mockime/src/com/android/cts/mockime/MockIme.java
@@ -286,6 +286,8 @@
                     case "getDisplayId":
                         return getSystemService(WindowManager.class)
                                 .getDefaultDisplay().getDisplayId();
+                    case "verifyLayoutInflaterContext":
+                        return getLayoutInflater().getContext() == this;
                 }
             }
             return ImeEvent.RETURN_VALUE_UNAVAILABLE;
diff --git a/tests/inputmethod/mockime/src/com/android/cts/mockime/MockImeSession.java b/tests/inputmethod/mockime/src/com/android/cts/mockime/MockImeSession.java
index 5e653c6..a407a28 100644
--- a/tests/inputmethod/mockime/src/com/android/cts/mockime/MockImeSession.java
+++ b/tests/inputmethod/mockime/src/com/android/cts/mockime/MockImeSession.java
@@ -982,4 +982,18 @@
         final Bundle params = new Bundle();
         return callCommandInternal("getDisplayId", params);
     }
+
+    /**
+     * Verifies {@code InputMethodService.getLayoutInflater().getContext()} is equal to
+     * {@code InputMethodService.this}.
+     *
+     * @return {@link ImeCommand} object that can be passed to
+     *         {@link ImeEventStreamTestUtils#expectCommand(ImeEventStream, ImeCommand, long)} to
+     *         wait until this event is handled by {@link MockIme}
+     */
+    @NonNull
+    public ImeCommand verifyLayoutInflaterContext() {
+        final Bundle params = new Bundle();
+        return callCommandInternal("verifyLayoutInflaterContext", params);
+    }
 }
diff --git a/tests/inputmethod/src/android/view/inputmethod/cts/InputMethodServiceTest.java b/tests/inputmethod/src/android/view/inputmethod/cts/InputMethodServiceTest.java
index 0b20b85..1a2561a 100644
--- a/tests/inputmethod/src/android/view/inputmethod/cts/InputMethodServiceTest.java
+++ b/tests/inputmethod/src/android/view/inputmethod/cts/InputMethodServiceTest.java
@@ -116,6 +116,24 @@
         });
     }
 
+    @Test
+    public void verifyLayoutInflaterContext() throws Exception {
+        try (MockImeSession imeSession = MockImeSession.create(
+                InstrumentationRegistry.getContext(),
+                InstrumentationRegistry.getInstrumentation().getUiAutomation(),
+                new ImeSettings.Builder())) {
+            final ImeEventStream stream = imeSession.openEventStream();
+
+            createTestActivity(SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+            expectEvent(stream, event -> "onStartInputView".equals(event.getEventName()), TIMEOUT);
+
+            final ImeCommand command = imeSession.verifyLayoutInflaterContext();
+            assertTrue("InputMethodService.getLayoutInflater().getContext() must be equal to"
+                    + " InputMethodService.this",
+                    expectCommand(stream, command, TIMEOUT).getReturnBooleanValue());
+        }
+    }
+
     private void verifyImeConsumesBackButton(int backDisposition) throws Exception {
         try (MockImeSession imeSession = MockImeSession.create(
                 InstrumentationRegistry.getContext(),
diff --git a/tests/tests/appop/AndroidManifest.xml b/tests/tests/appop/AndroidManifest.xml
index ab36586..0c89b6e 100644
--- a/tests/tests/appop/AndroidManifest.xml
+++ b/tests/tests/appop/AndroidManifest.xml
@@ -19,11 +19,11 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.app.appops.cts"
     android:targetSandboxVersion="2">
-  <feature android:featureId="testFeature" android:label="@string/dummyLabel" />
-  <feature android:featureId="firstFeature" android:label="@string/dummyLabel" />
-  <feature android:featureId="secondFeature" android:label="@string/dummyLabel" />
-  <feature android:featureId="firstProxyFeature" android:label="@string/dummyLabel" />
-  <feature android:featureId="secondProxyFeature" android:label="@string/dummyLabel" />
+  <attribution android:tag="testAttribution" android:label="@string/dummyLabel" />
+  <attribution android:tag="firstAttribution" android:label="@string/dummyLabel" />
+  <attribution android:tag="secondAttribution" android:label="@string/dummyLabel" />
+  <attribution android:tag="firstProxyAttribution" android:label="@string/dummyLabel" />
+  <attribution android:tag="secondProxyAttribution" android:label="@string/dummyLabel" />
 
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
diff --git a/tests/tests/appop/AndroidTest.xml b/tests/tests/appop/AndroidTest.xml
index a911b20..386feb4 100644
--- a/tests/tests/appop/AndroidTest.xml
+++ b/tests/tests/appop/AndroidTest.xml
@@ -37,12 +37,12 @@
         <option name="push-file" key="CtsAppToBlame1.apk" value="/data/local/tmp/cts/appops/CtsAppToBlame1.apk" />
         <option name="push-file" key="CtsAppToBlame2.apk" value="/data/local/tmp/cts/appops/CtsAppToBlame2.apk" />
         <option name="push-file" key="CtsAppToCollect.apk" value="/data/local/tmp/cts/appops/CtsAppToCollect.apk" />
-        <option name="push-file" key="AppWithDuplicateFeature.apk" value="/data/local/tmp/cts/appops/AppWithDuplicateFeature.apk" />
-        <option name="push-file" key="AppWithFeatureInheritingFromExisting.apk" value="/data/local/tmp/cts/appops/AppWithFeatureInheritingFromExisting.apk" />
-        <option name="push-file" key="AppWithFeatureInheritingFromSameAsOther.apk" value="/data/local/tmp/cts/appops/AppWithFeatureInheritingFromSameAsOther.apk" />
-        <option name="push-file" key="AppWithFeatureInheritingFromSelf.apk" value="/data/local/tmp/cts/appops/AppWithFeatureInheritingFromSelf.apk" />
-        <option name="push-file" key="AppWithLongFeatureIdFeature.apk" value="/data/local/tmp/cts/appops/AppWithLongFeatureIdFeature.apk" />
-        <option name="push-file" key="AppWithTooManyFeatures.apk" value="/data/local/tmp/cts/appops/AppWithTooManyFeatures.apk" />
+        <option name="push-file" key="AppWithDuplicateAttribution.apk" value="/data/local/tmp/cts/appops/AppWithDuplicateAttribution.apk" />
+        <option name="push-file" key="AppWithAttributionInheritingFromExisting.apk" value="/data/local/tmp/cts/appops/AppWithAttributionInheritingFromExisting.apk" />
+        <option name="push-file" key="AppWithAttributionInheritingFromSameAsOther.apk" value="/data/local/tmp/cts/appops/AppWithAttributionInheritingFromSameAsOther.apk" />
+        <option name="push-file" key="AppWithAttributionInheritingFromSelf.apk" value="/data/local/tmp/cts/appops/AppWithAttributionInheritingFromSelf.apk" />
+        <option name="push-file" key="AppWithLongAttributionTag.apk" value="/data/local/tmp/cts/appops/AppWithLongAttributionTag.apk" />
+        <option name="push-file" key="AppWithTooManyAttributions.apk" value="/data/local/tmp/cts/appops/AppWithTooManyAttributions.apk" />
     </target_preparer>
 
     <!-- Remove additional apps if installed -->
diff --git a/tests/tests/appop/AppThatUsesAppOps/AndroidManifest.xml b/tests/tests/appop/AppThatUsesAppOps/AndroidManifest.xml
index e3e4937..df614d8 100644
--- a/tests/tests/appop/AppThatUsesAppOps/AndroidManifest.xml
+++ b/tests/tests/appop/AppThatUsesAppOps/AndroidManifest.xml
@@ -18,7 +18,7 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.app.appops.cts.appthatusesappops">
-  <feature android:featureId="testFeature" android:label="@string/dummyLabel" />
+  <attribution android:tag="testAttribution" android:label="@string/dummyLabel" />
 
   <application>
       <service android:name=".AppOpsUserService" android:exported="true" />
diff --git a/tests/tests/appop/AppThatUsesAppOps/res/values/strings.xml b/tests/tests/appop/AppThatUsesAppOps/res/values/strings.xml
index 2d02f14..37d548d 100644
--- a/tests/tests/appop/AppThatUsesAppOps/res/values/strings.xml
+++ b/tests/tests/appop/AppThatUsesAppOps/res/values/strings.xml
@@ -16,5 +16,5 @@
   -->
 
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="dummyLabel">A feature</string>
+    <string name="dummyLabel">An attribution</string>
 </resources>
diff --git a/tests/tests/appop/AppThatUsesAppOps/src/android/app/appops/cts/appthatusesappops/AppOpsUserService.kt b/tests/tests/appop/AppThatUsesAppOps/src/android/app/appops/cts/appthatusesappops/AppOpsUserService.kt
index fb87058..ba98da1 100644
--- a/tests/tests/appop/AppThatUsesAppOps/src/android/app/appops/cts/appthatusesappops/AppOpsUserService.kt
+++ b/tests/tests/appop/AppThatUsesAppOps/src/android/app/appops/cts/appthatusesappops/AppOpsUserService.kt
@@ -25,7 +25,7 @@
 import android.app.SyncNotedAppOp
 import android.app.appops.cts.IAppOpsUserClient
 import android.app.appops.cts.IAppOpsUserService
-import android.app.appops.cts.TEST_FEATURE_ID
+import android.app.appops.cts.TEST_ATTRIBUTION_TAG
 import android.app.appops.cts.eventually
 import android.content.Intent
 import android.os.IBinder
@@ -136,7 +136,7 @@
                 forwardThrowableFrom {
                     client.noteSyncOp()
 
-                    assertThat(noted.map { it.first.featureId to it.first.op })
+                    assertThat(noted.map { it.first.attributionTag to it.first.op })
                         .containsExactly(null to OPSTR_COARSE_LOCATION)
                     assertThat(noted[0].second.map { it.methodName })
                         .contains("callApiThatNotesSyncOpAndCheckLog")
@@ -159,11 +159,14 @@
                 }
             }
 
-            override fun callApiThatNotesSyncOpWithFeatureAndCheckLog(client: IAppOpsUserClient) {
+            override fun callApiThatNotesSyncOpWithAttributionAndCheckLog(
+                client: IAppOpsUserClient
+            ) {
                 forwardThrowableFrom {
-                    client.noteSyncOpWithFeature(TEST_FEATURE_ID)
+                    client.noteSyncOpWithAttribution(TEST_ATTRIBUTION_TAG)
 
-                    assertThat(noted.map { it.first.featureId }).containsExactly(TEST_FEATURE_ID)
+                    assertThat(noted.map { it.first.attributionTag })
+                            .containsExactly(TEST_ATTRIBUTION_TAG)
                 }
             }
 
@@ -340,7 +343,7 @@
                     client.noteAsyncOp()
 
                     eventually {
-                        assertThat(asyncNoted.map { it.featureId to it.op })
+                        assertThat(asyncNoted.map { it.attributionTag to it.op })
                             .containsExactly(null to OPSTR_COARSE_LOCATION)
                     }
                     assertThat(noted).isEmpty()
@@ -348,15 +351,15 @@
                 }
             }
 
-            override fun callApiThatNotesAsyncOpWithFeatureAndCheckLog(
+            override fun callApiThatNotesAsyncOpWithAttributionAndCheckLog(
                 client: IAppOpsUserClient
             ) {
                 forwardThrowableFrom {
-                    client.noteAsyncOpWithFeature(TEST_FEATURE_ID)
+                    client.noteAsyncOpWithAttribution(TEST_ATTRIBUTION_TAG)
 
                     eventually {
-                        assertThat(asyncNoted.map { it.featureId })
-                            .containsExactly(TEST_FEATURE_ID)
+                        assertThat(asyncNoted.map { it.attributionTag })
+                            .containsExactly(TEST_ATTRIBUTION_TAG)
                     }
                 }
             }
diff --git a/tests/tests/appop/AppToBlame1/AndroidManifest.xml b/tests/tests/appop/AppToBlame1/AndroidManifest.xml
index 55db16b..a8d3638 100644
--- a/tests/tests/appop/AppToBlame1/AndroidManifest.xml
+++ b/tests/tests/appop/AppToBlame1/AndroidManifest.xml
@@ -19,11 +19,11 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.app.appops.cts.apptoblame"
     android:version="1">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature2" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature3" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature4" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature5" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution1" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution2" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution3" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution4" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution5" android:label="@string/dummyLabel" />
 
   <application />
 
diff --git a/tests/tests/appop/AppToBlame2/AndroidManifest.xml b/tests/tests/appop/AppToBlame2/AndroidManifest.xml
index 96a490c..ba13fd6 100644
--- a/tests/tests/appop/AppToBlame2/AndroidManifest.xml
+++ b/tests/tests/appop/AppToBlame2/AndroidManifest.xml
@@ -19,14 +19,14 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.app.appops.cts.apptoblame"
     android:version="2">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature6" android:label="@string/dummyLabel">
-    <inherit-from android:featureId="feature2" />
-  </feature>
-  <feature android:featureId="feature7" android:label="@string/dummyLabel">
-    <inherit-from android:featureId="feature4" />
-    <inherit-from android:featureId="feature5" />
-  </feature>
+  <attribution android:tag="attribution1" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution6" android:label="@string/dummyLabel">
+    <inherit-from android:tag="attribution2" />
+  </attribution>
+  <attribution android:tag="attribution7" android:label="@string/dummyLabel">
+    <inherit-from android:tag="attribution4" />
+    <inherit-from android:tag="attribution5" />
+  </attribution>
 
   <application />
 
diff --git a/tests/tests/appop/AppToCollect/AndroidManifest.xml b/tests/tests/appop/AppToCollect/AndroidManifest.xml
index e67cb57..2a0d18d 100644
--- a/tests/tests/appop/AppToCollect/AndroidManifest.xml
+++ b/tests/tests/appop/AppToCollect/AndroidManifest.xml
@@ -19,7 +19,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.app.appops.cts.apptocollect"
     android:version="1">
-  <feature android:featureId="testFeature" android:label="@string/dummyLabel" />
+  <attribution android:tag="testAttribution" android:label="@string/dummyLabel" />
 
   <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
 
diff --git a/tests/tests/appop/AppWithDuplicateFeature/Android.bp b/tests/tests/appop/AppWithAttributionInheritingFromExisting/Android.bp
similarity index 92%
copy from tests/tests/appop/AppWithDuplicateFeature/Android.bp
copy to tests/tests/appop/AppWithAttributionInheritingFromExisting/Android.bp
index a27dacb..2b07c3b 100644
--- a/tests/tests/appop/AppWithDuplicateFeature/Android.bp
+++ b/tests/tests/appop/AppWithAttributionInheritingFromExisting/Android.bp
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 android_test_helper_app {
-    name: "AppWithDuplicateFeature",
+    name: "AppWithAttributionInheritingFromExisting",
 
     test_suites: [
         "cts",
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromExisting/AndroidManifest.xml b/tests/tests/appop/AppWithAttributionInheritingFromExisting/AndroidManifest.xml
similarity index 72%
rename from tests/tests/appop/AppWithFeatureInheritingFromExisting/AndroidManifest.xml
rename to tests/tests/appop/AppWithAttributionInheritingFromExisting/AndroidManifest.xml
index eb097ef..6b1798b 100644
--- a/tests/tests/appop/AppWithFeatureInheritingFromExisting/AndroidManifest.xml
+++ b/tests/tests/appop/AppWithAttributionInheritingFromExisting/AndroidManifest.xml
@@ -17,11 +17,11 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithfeatureinheritingfromexisting">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature2" android:label="@string/dummyLabel">
-      <inherit-from android:featureId="feature1" />
-  </feature>
+    package="android.app.appops.cts.appwithattributioninheritingfromexisting">
+  <attribution android:tag="attribution" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution2" android:label="@string/dummyLabel">
+      <inherit-from android:tag="attribution" />
+  </attribution>
 
   <application />
 
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromExisting/res/values/strings.xml b/tests/tests/appop/AppWithAttributionInheritingFromExisting/res/values/strings.xml
similarity index 100%
rename from tests/tests/appop/AppWithFeatureInheritingFromExisting/res/values/strings.xml
rename to tests/tests/appop/AppWithAttributionInheritingFromExisting/res/values/strings.xml
diff --git a/tests/tests/appop/AppWithDuplicateFeature/Android.bp b/tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/Android.bp
similarity index 92%
copy from tests/tests/appop/AppWithDuplicateFeature/Android.bp
copy to tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/Android.bp
index a27dacb..7de79e5 100644
--- a/tests/tests/appop/AppWithDuplicateFeature/Android.bp
+++ b/tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/Android.bp
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 android_test_helper_app {
-    name: "AppWithDuplicateFeature",
+    name: "AppWithAttributionInheritingFromSameAsOther",
 
     test_suites: [
         "cts",
diff --git a/tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml b/tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/AndroidManifest.xml
similarity index 67%
copy from tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml
copy to tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/AndroidManifest.xml
index b7b5297..fcf47a5 100644
--- a/tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml
+++ b/tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/AndroidManifest.xml
@@ -17,9 +17,13 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithduplicatefeature">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
+    package="android.app.appops.cts.appwithattributioninheritingfromsameasother">
+  <attribution android:tag="attribution1" android:label="@string/dummyLabel">
+      <inherit-from android:tag="attribution3" />
+  </attribution>
+  <attribution android:tag="attribution2" android:label="@string/dummyLabel">
+      <inherit-from android:tag="attribution3" />
+  </attribution>
 
   <application />
 
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/res/values/strings.xml b/tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/res/values/strings.xml
similarity index 100%
rename from tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/res/values/strings.xml
rename to tests/tests/appop/AppWithAttributionInheritingFromSameAsOther/res/values/strings.xml
diff --git a/tests/tests/appop/AppWithDuplicateFeature/Android.bp b/tests/tests/appop/AppWithAttributionInheritingFromSelf/Android.bp
similarity index 93%
copy from tests/tests/appop/AppWithDuplicateFeature/Android.bp
copy to tests/tests/appop/AppWithAttributionInheritingFromSelf/Android.bp
index a27dacb..4a6e524 100644
--- a/tests/tests/appop/AppWithDuplicateFeature/Android.bp
+++ b/tests/tests/appop/AppWithAttributionInheritingFromSelf/Android.bp
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 android_test_helper_app {
-    name: "AppWithDuplicateFeature",
+    name: "AppWithAttributionInheritingFromSelf",
 
     test_suites: [
         "cts",
diff --git a/tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml b/tests/tests/appop/AppWithAttributionInheritingFromSelf/AndroidManifest.xml
similarity index 77%
copy from tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml
copy to tests/tests/appop/AppWithAttributionInheritingFromSelf/AndroidManifest.xml
index b7b5297..3cb4712 100644
--- a/tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml
+++ b/tests/tests/appop/AppWithAttributionInheritingFromSelf/AndroidManifest.xml
@@ -17,9 +17,10 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithduplicatefeature">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
+    package="android.app.appops.cts.appwithattributioninheritingfromself">
+  <attribution android:tag="attribution1" android:label="@string/dummyLabel">
+      <inherit-from android:tag="attribution1" />
+  </attribution>
 
   <application />
 
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromSelf/res/values/strings.xml b/tests/tests/appop/AppWithAttributionInheritingFromSelf/res/values/strings.xml
similarity index 100%
rename from tests/tests/appop/AppWithFeatureInheritingFromSelf/res/values/strings.xml
rename to tests/tests/appop/AppWithAttributionInheritingFromSelf/res/values/strings.xml
diff --git a/tests/tests/appop/AppWithDuplicateFeature/Android.bp b/tests/tests/appop/AppWithDuplicateAttribution/Android.bp
similarity index 94%
rename from tests/tests/appop/AppWithDuplicateFeature/Android.bp
rename to tests/tests/appop/AppWithDuplicateAttribution/Android.bp
index a27dacb..a4b1272 100644
--- a/tests/tests/appop/AppWithDuplicateFeature/Android.bp
+++ b/tests/tests/appop/AppWithDuplicateAttribution/Android.bp
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 android_test_helper_app {
-    name: "AppWithDuplicateFeature",
+    name: "AppWithDuplicateAttribution",
 
     test_suites: [
         "cts",
diff --git a/tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml b/tests/tests/appop/AppWithDuplicateAttribution/AndroidManifest.xml
similarity index 77%
rename from tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml
rename to tests/tests/appop/AppWithDuplicateAttribution/AndroidManifest.xml
index b7b5297..55b0ddb 100644
--- a/tests/tests/appop/AppWithDuplicateFeature/AndroidManifest.xml
+++ b/tests/tests/appop/AppWithDuplicateAttribution/AndroidManifest.xml
@@ -17,9 +17,9 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithduplicatefeature">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
-  <feature android:featureId="feature1" android:label="@string/dummyLabel" />
+    package="android.app.appops.cts.appwithduplicateattribution">
+  <attribution android:tag="attribution1" android:label="@string/dummyLabel" />
+  <attribution android:tag="attribution1" android:label="@string/dummyLabel" />
 
   <application />
 
diff --git a/tests/tests/appop/AppWithDuplicateFeature/res/values/strings.xml b/tests/tests/appop/AppWithDuplicateAttribution/res/values/strings.xml
similarity index 100%
rename from tests/tests/appop/AppWithDuplicateFeature/res/values/strings.xml
rename to tests/tests/appop/AppWithDuplicateAttribution/res/values/strings.xml
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromExisting/Android.bp b/tests/tests/appop/AppWithFeatureInheritingFromExisting/Android.bp
deleted file mode 100644
index fd498d7..0000000
--- a/tests/tests/appop/AppWithFeatureInheritingFromExisting/Android.bp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (C) 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.
-
-android_test_helper_app {
-    name: "AppWithFeatureInheritingFromExisting",
-
-    test_suites: [
-        "cts",
-        "vts",
-        "general-tests",
-    ]
-}
\ No newline at end of file
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/Android.bp b/tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/Android.bp
deleted file mode 100644
index d358ae34..0000000
--- a/tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/Android.bp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (C) 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.
-
-android_test_helper_app {
-    name: "AppWithFeatureInheritingFromSameAsOther",
-
-    test_suites: [
-        "cts",
-        "vts",
-        "general-tests",
-    ]
-}
\ No newline at end of file
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/AndroidManifest.xml b/tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/AndroidManifest.xml
deleted file mode 100644
index 5af9edc..0000000
--- a/tests/tests/appop/AppWithFeatureInheritingFromSameAsOther/AndroidManifest.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 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.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithfeatureinheritingfromsameasother">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel">
-      <inherit-from android:featureId="feature3" />
-  </feature>
-  <feature android:featureId="feature2" android:label="@string/dummyLabel">
-      <inherit-from android:featureId="feature3" />
-  </feature>
-
-  <application />
-
-</manifest>
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromSelf/Android.bp b/tests/tests/appop/AppWithFeatureInheritingFromSelf/Android.bp
deleted file mode 100644
index 4c47869..0000000
--- a/tests/tests/appop/AppWithFeatureInheritingFromSelf/Android.bp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (C) 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.
-
-android_test_helper_app {
-    name: "AppWithFeatureInheritingFromSelf",
-
-    test_suites: [
-        "cts",
-        "vts",
-        "general-tests",
-    ]
-}
\ No newline at end of file
diff --git a/tests/tests/appop/AppWithFeatureInheritingFromSelf/AndroidManifest.xml b/tests/tests/appop/AppWithFeatureInheritingFromSelf/AndroidManifest.xml
deleted file mode 100644
index ff7e198..0000000
--- a/tests/tests/appop/AppWithFeatureInheritingFromSelf/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 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.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithfeatureinheritingfromself">
-  <feature android:featureId="feature1" android:label="@string/dummyLabel">
-      <inherit-from android:featureId="feature1" />
-  </feature>
-
-  <application />
-
-</manifest>
diff --git a/tests/tests/appop/AppWithLongFeatureId/Android.bp b/tests/tests/appop/AppWithLongAttributionTag/Android.bp
similarity index 94%
copy from tests/tests/appop/AppWithLongFeatureId/Android.bp
copy to tests/tests/appop/AppWithLongAttributionTag/Android.bp
index e0034f0..5ee3f02 100644
--- a/tests/tests/appop/AppWithLongFeatureId/Android.bp
+++ b/tests/tests/appop/AppWithLongAttributionTag/Android.bp
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 android_test_helper_app {
-    name: "AppWithLongFeatureIdFeature",
+    name: "AppWithLongAttributionTag",
 
     test_suites: [
         "cts",
diff --git a/tests/tests/appop/AppWithLongFeatureId/AndroidManifest.xml b/tests/tests/appop/AppWithLongAttributionTag/AndroidManifest.xml
similarity index 80%
rename from tests/tests/appop/AppWithLongFeatureId/AndroidManifest.xml
rename to tests/tests/appop/AppWithLongAttributionTag/AndroidManifest.xml
index 17d10e9..e08a32d 100644
--- a/tests/tests/appop/AppWithLongFeatureId/AndroidManifest.xml
+++ b/tests/tests/appop/AppWithLongAttributionTag/AndroidManifest.xml
@@ -17,8 +17,8 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithlongfeatureId">
-  <feature android:featureId="1xxxx_xxxx2xxxx_xxxx3xxxx_xxxx4xxxx_xxxx5xxxx_xxxxB" android:label="@string/dummyLabel" />
+    package="android.app.appops.cts.appwithlongattributiontag">
+  <attribution android:tag="1xxxx_xxxx2xxxx_xxxx3xxxx_xxxx4xxxx_xxxx5xxxx_xxxxB" android:label="@string/dummyLabel" />
 
   <application />
 
diff --git a/tests/tests/appop/AppWithLongFeatureId/res/values/strings.xml b/tests/tests/appop/AppWithLongAttributionTag/res/values/strings.xml
similarity index 100%
rename from tests/tests/appop/AppWithLongFeatureId/res/values/strings.xml
rename to tests/tests/appop/AppWithLongAttributionTag/res/values/strings.xml
diff --git a/tests/tests/appop/AppWithLongFeatureId/Android.bp b/tests/tests/appop/AppWithTooManyAttributions/Android.bp
similarity index 94%
rename from tests/tests/appop/AppWithLongFeatureId/Android.bp
rename to tests/tests/appop/AppWithTooManyAttributions/Android.bp
index e0034f0..80b1bd3 100644
--- a/tests/tests/appop/AppWithLongFeatureId/Android.bp
+++ b/tests/tests/appop/AppWithTooManyAttributions/Android.bp
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 android_test_helper_app {
-    name: "AppWithLongFeatureIdFeature",
+    name: "AppWithTooManyAttributions",
 
     test_suites: [
         "cts",
diff --git a/tests/tests/appop/AppWithTooManyAttributions/AndroidManifest.xml b/tests/tests/appop/AppWithTooManyAttributions/AndroidManifest.xml
new file mode 100644
index 0000000..debdb8e
--- /dev/null
+++ b/tests/tests/appop/AppWithTooManyAttributions/AndroidManifest.xml
@@ -0,0 +1,1028 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 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.
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.app.appops.cts.appwithtoomanyattributions">
+
+  <!-- 1000 attributions are allowed -->
+  <attribution android:tag="f0" android:label="@string/dummyLabel" />
+  <attribution android:tag="f1" android:label="@string/dummyLabel" />
+  <attribution android:tag="f2" android:label="@string/dummyLabel" />
+  <attribution android:tag="f3" android:label="@string/dummyLabel" />
+  <attribution android:tag="f4" android:label="@string/dummyLabel" />
+  <attribution android:tag="f5" android:label="@string/dummyLabel" />
+  <attribution android:tag="f6" android:label="@string/dummyLabel" />
+  <attribution android:tag="f7" android:label="@string/dummyLabel" />
+  <attribution android:tag="f8" android:label="@string/dummyLabel" />
+  <attribution android:tag="f9" android:label="@string/dummyLabel" />
+  <attribution android:tag="f10" android:label="@string/dummyLabel" />
+  <attribution android:tag="f11" android:label="@string/dummyLabel" />
+  <attribution android:tag="f12" android:label="@string/dummyLabel" />
+  <attribution android:tag="f13" android:label="@string/dummyLabel" />
+  <attribution android:tag="f14" android:label="@string/dummyLabel" />
+  <attribution android:tag="f15" android:label="@string/dummyLabel" />
+  <attribution android:tag="f16" android:label="@string/dummyLabel" />
+  <attribution android:tag="f17" android:label="@string/dummyLabel" />
+  <attribution android:tag="f18" android:label="@string/dummyLabel" />
+  <attribution android:tag="f19" android:label="@string/dummyLabel" />
+  <attribution android:tag="f20" android:label="@string/dummyLabel" />
+  <attribution android:tag="f21" android:label="@string/dummyLabel" />
+  <attribution android:tag="f22" android:label="@string/dummyLabel" />
+  <attribution android:tag="f23" android:label="@string/dummyLabel" />
+  <attribution android:tag="f24" android:label="@string/dummyLabel" />
+  <attribution android:tag="f25" android:label="@string/dummyLabel" />
+  <attribution android:tag="f26" android:label="@string/dummyLabel" />
+  <attribution android:tag="f27" android:label="@string/dummyLabel" />
+  <attribution android:tag="f28" android:label="@string/dummyLabel" />
+  <attribution android:tag="f29" android:label="@string/dummyLabel" />
+  <attribution android:tag="f30" android:label="@string/dummyLabel" />
+  <attribution android:tag="f31" android:label="@string/dummyLabel" />
+  <attribution android:tag="f32" android:label="@string/dummyLabel" />
+  <attribution android:tag="f33" android:label="@string/dummyLabel" />
+  <attribution android:tag="f34" android:label="@string/dummyLabel" />
+  <attribution android:tag="f35" android:label="@string/dummyLabel" />
+  <attribution android:tag="f36" android:label="@string/dummyLabel" />
+  <attribution android:tag="f37" android:label="@string/dummyLabel" />
+  <attribution android:tag="f38" android:label="@string/dummyLabel" />
+  <attribution android:tag="f39" android:label="@string/dummyLabel" />
+  <attribution android:tag="f40" android:label="@string/dummyLabel" />
+  <attribution android:tag="f41" android:label="@string/dummyLabel" />
+  <attribution android:tag="f42" android:label="@string/dummyLabel" />
+  <attribution android:tag="f43" android:label="@string/dummyLabel" />
+  <attribution android:tag="f44" android:label="@string/dummyLabel" />
+  <attribution android:tag="f45" android:label="@string/dummyLabel" />
+  <attribution android:tag="f46" android:label="@string/dummyLabel" />
+  <attribution android:tag="f47" android:label="@string/dummyLabel" />
+  <attribution android:tag="f48" android:label="@string/dummyLabel" />
+  <attribution android:tag="f49" android:label="@string/dummyLabel" />
+  <attribution android:tag="f50" android:label="@string/dummyLabel" />
+  <attribution android:tag="f51" android:label="@string/dummyLabel" />
+  <attribution android:tag="f52" android:label="@string/dummyLabel" />
+  <attribution android:tag="f53" android:label="@string/dummyLabel" />
+  <attribution android:tag="f54" android:label="@string/dummyLabel" />
+  <attribution android:tag="f55" android:label="@string/dummyLabel" />
+  <attribution android:tag="f56" android:label="@string/dummyLabel" />
+  <attribution android:tag="f57" android:label="@string/dummyLabel" />
+  <attribution android:tag="f58" android:label="@string/dummyLabel" />
+  <attribution android:tag="f59" android:label="@string/dummyLabel" />
+  <attribution android:tag="f60" android:label="@string/dummyLabel" />
+  <attribution android:tag="f61" android:label="@string/dummyLabel" />
+  <attribution android:tag="f62" android:label="@string/dummyLabel" />
+  <attribution android:tag="f63" android:label="@string/dummyLabel" />
+  <attribution android:tag="f64" android:label="@string/dummyLabel" />
+  <attribution android:tag="f65" android:label="@string/dummyLabel" />
+  <attribution android:tag="f66" android:label="@string/dummyLabel" />
+  <attribution android:tag="f67" android:label="@string/dummyLabel" />
+  <attribution android:tag="f68" android:label="@string/dummyLabel" />
+  <attribution android:tag="f69" android:label="@string/dummyLabel" />
+  <attribution android:tag="f70" android:label="@string/dummyLabel" />
+  <attribution android:tag="f71" android:label="@string/dummyLabel" />
+  <attribution android:tag="f72" android:label="@string/dummyLabel" />
+  <attribution android:tag="f73" android:label="@string/dummyLabel" />
+  <attribution android:tag="f74" android:label="@string/dummyLabel" />
+  <attribution android:tag="f75" android:label="@string/dummyLabel" />
+  <attribution android:tag="f76" android:label="@string/dummyLabel" />
+  <attribution android:tag="f77" android:label="@string/dummyLabel" />
+  <attribution android:tag="f78" android:label="@string/dummyLabel" />
+  <attribution android:tag="f79" android:label="@string/dummyLabel" />
+  <attribution android:tag="f80" android:label="@string/dummyLabel" />
+  <attribution android:tag="f81" android:label="@string/dummyLabel" />
+  <attribution android:tag="f82" android:label="@string/dummyLabel" />
+  <attribution android:tag="f83" android:label="@string/dummyLabel" />
+  <attribution android:tag="f84" android:label="@string/dummyLabel" />
+  <attribution android:tag="f85" android:label="@string/dummyLabel" />
+  <attribution android:tag="f86" android:label="@string/dummyLabel" />
+  <attribution android:tag="f87" android:label="@string/dummyLabel" />
+  <attribution android:tag="f88" android:label="@string/dummyLabel" />
+  <attribution android:tag="f89" android:label="@string/dummyLabel" />
+  <attribution android:tag="f90" android:label="@string/dummyLabel" />
+  <attribution android:tag="f91" android:label="@string/dummyLabel" />
+  <attribution android:tag="f92" android:label="@string/dummyLabel" />
+  <attribution android:tag="f93" android:label="@string/dummyLabel" />
+  <attribution android:tag="f94" android:label="@string/dummyLabel" />
+  <attribution android:tag="f95" android:label="@string/dummyLabel" />
+  <attribution android:tag="f96" android:label="@string/dummyLabel" />
+  <attribution android:tag="f97" android:label="@string/dummyLabel" />
+  <attribution android:tag="f98" android:label="@string/dummyLabel" />
+  <attribution android:tag="f99" android:label="@string/dummyLabel" />
+  <attribution android:tag="f100" android:label="@string/dummyLabel" />
+  <attribution android:tag="f101" android:label="@string/dummyLabel" />
+  <attribution android:tag="f102" android:label="@string/dummyLabel" />
+  <attribution android:tag="f103" android:label="@string/dummyLabel" />
+  <attribution android:tag="f104" android:label="@string/dummyLabel" />
+  <attribution android:tag="f105" android:label="@string/dummyLabel" />
+  <attribution android:tag="f106" android:label="@string/dummyLabel" />
+  <attribution android:tag="f107" android:label="@string/dummyLabel" />
+  <attribution android:tag="f108" android:label="@string/dummyLabel" />
+  <attribution android:tag="f109" android:label="@string/dummyLabel" />
+  <attribution android:tag="f110" android:label="@string/dummyLabel" />
+  <attribution android:tag="f111" android:label="@string/dummyLabel" />
+  <attribution android:tag="f112" android:label="@string/dummyLabel" />
+  <attribution android:tag="f113" android:label="@string/dummyLabel" />
+  <attribution android:tag="f114" android:label="@string/dummyLabel" />
+  <attribution android:tag="f115" android:label="@string/dummyLabel" />
+  <attribution android:tag="f116" android:label="@string/dummyLabel" />
+  <attribution android:tag="f117" android:label="@string/dummyLabel" />
+  <attribution android:tag="f118" android:label="@string/dummyLabel" />
+  <attribution android:tag="f119" android:label="@string/dummyLabel" />
+  <attribution android:tag="f120" android:label="@string/dummyLabel" />
+  <attribution android:tag="f121" android:label="@string/dummyLabel" />
+  <attribution android:tag="f122" android:label="@string/dummyLabel" />
+  <attribution android:tag="f123" android:label="@string/dummyLabel" />
+  <attribution android:tag="f124" android:label="@string/dummyLabel" />
+  <attribution android:tag="f125" android:label="@string/dummyLabel" />
+  <attribution android:tag="f126" android:label="@string/dummyLabel" />
+  <attribution android:tag="f127" android:label="@string/dummyLabel" />
+  <attribution android:tag="f128" android:label="@string/dummyLabel" />
+  <attribution android:tag="f129" android:label="@string/dummyLabel" />
+  <attribution android:tag="f130" android:label="@string/dummyLabel" />
+  <attribution android:tag="f131" android:label="@string/dummyLabel" />
+  <attribution android:tag="f132" android:label="@string/dummyLabel" />
+  <attribution android:tag="f133" android:label="@string/dummyLabel" />
+  <attribution android:tag="f134" android:label="@string/dummyLabel" />
+  <attribution android:tag="f135" android:label="@string/dummyLabel" />
+  <attribution android:tag="f136" android:label="@string/dummyLabel" />
+  <attribution android:tag="f137" android:label="@string/dummyLabel" />
+  <attribution android:tag="f138" android:label="@string/dummyLabel" />
+  <attribution android:tag="f139" android:label="@string/dummyLabel" />
+  <attribution android:tag="f140" android:label="@string/dummyLabel" />
+  <attribution android:tag="f141" android:label="@string/dummyLabel" />
+  <attribution android:tag="f142" android:label="@string/dummyLabel" />
+  <attribution android:tag="f143" android:label="@string/dummyLabel" />
+  <attribution android:tag="f144" android:label="@string/dummyLabel" />
+  <attribution android:tag="f145" android:label="@string/dummyLabel" />
+  <attribution android:tag="f146" android:label="@string/dummyLabel" />
+  <attribution android:tag="f147" android:label="@string/dummyLabel" />
+  <attribution android:tag="f148" android:label="@string/dummyLabel" />
+  <attribution android:tag="f149" android:label="@string/dummyLabel" />
+  <attribution android:tag="f150" android:label="@string/dummyLabel" />
+  <attribution android:tag="f151" android:label="@string/dummyLabel" />
+  <attribution android:tag="f152" android:label="@string/dummyLabel" />
+  <attribution android:tag="f153" android:label="@string/dummyLabel" />
+  <attribution android:tag="f154" android:label="@string/dummyLabel" />
+  <attribution android:tag="f155" android:label="@string/dummyLabel" />
+  <attribution android:tag="f156" android:label="@string/dummyLabel" />
+  <attribution android:tag="f157" android:label="@string/dummyLabel" />
+  <attribution android:tag="f158" android:label="@string/dummyLabel" />
+  <attribution android:tag="f159" android:label="@string/dummyLabel" />
+  <attribution android:tag="f160" android:label="@string/dummyLabel" />
+  <attribution android:tag="f161" android:label="@string/dummyLabel" />
+  <attribution android:tag="f162" android:label="@string/dummyLabel" />
+  <attribution android:tag="f163" android:label="@string/dummyLabel" />
+  <attribution android:tag="f164" android:label="@string/dummyLabel" />
+  <attribution android:tag="f165" android:label="@string/dummyLabel" />
+  <attribution android:tag="f166" android:label="@string/dummyLabel" />
+  <attribution android:tag="f167" android:label="@string/dummyLabel" />
+  <attribution android:tag="f168" android:label="@string/dummyLabel" />
+  <attribution android:tag="f169" android:label="@string/dummyLabel" />
+  <attribution android:tag="f170" android:label="@string/dummyLabel" />
+  <attribution android:tag="f171" android:label="@string/dummyLabel" />
+  <attribution android:tag="f172" android:label="@string/dummyLabel" />
+  <attribution android:tag="f173" android:label="@string/dummyLabel" />
+  <attribution android:tag="f174" android:label="@string/dummyLabel" />
+  <attribution android:tag="f175" android:label="@string/dummyLabel" />
+  <attribution android:tag="f176" android:label="@string/dummyLabel" />
+  <attribution android:tag="f177" android:label="@string/dummyLabel" />
+  <attribution android:tag="f178" android:label="@string/dummyLabel" />
+  <attribution android:tag="f179" android:label="@string/dummyLabel" />
+  <attribution android:tag="f180" android:label="@string/dummyLabel" />
+  <attribution android:tag="f181" android:label="@string/dummyLabel" />
+  <attribution android:tag="f182" android:label="@string/dummyLabel" />
+  <attribution android:tag="f183" android:label="@string/dummyLabel" />
+  <attribution android:tag="f184" android:label="@string/dummyLabel" />
+  <attribution android:tag="f185" android:label="@string/dummyLabel" />
+  <attribution android:tag="f186" android:label="@string/dummyLabel" />
+  <attribution android:tag="f187" android:label="@string/dummyLabel" />
+  <attribution android:tag="f188" android:label="@string/dummyLabel" />
+  <attribution android:tag="f189" android:label="@string/dummyLabel" />
+  <attribution android:tag="f190" android:label="@string/dummyLabel" />
+  <attribution android:tag="f191" android:label="@string/dummyLabel" />
+  <attribution android:tag="f192" android:label="@string/dummyLabel" />
+  <attribution android:tag="f193" android:label="@string/dummyLabel" />
+  <attribution android:tag="f194" android:label="@string/dummyLabel" />
+  <attribution android:tag="f195" android:label="@string/dummyLabel" />
+  <attribution android:tag="f196" android:label="@string/dummyLabel" />
+  <attribution android:tag="f197" android:label="@string/dummyLabel" />
+  <attribution android:tag="f198" android:label="@string/dummyLabel" />
+  <attribution android:tag="f199" android:label="@string/dummyLabel" />
+  <attribution android:tag="f200" android:label="@string/dummyLabel" />
+  <attribution android:tag="f201" android:label="@string/dummyLabel" />
+  <attribution android:tag="f202" android:label="@string/dummyLabel" />
+  <attribution android:tag="f203" android:label="@string/dummyLabel" />
+  <attribution android:tag="f204" android:label="@string/dummyLabel" />
+  <attribution android:tag="f205" android:label="@string/dummyLabel" />
+  <attribution android:tag="f206" android:label="@string/dummyLabel" />
+  <attribution android:tag="f207" android:label="@string/dummyLabel" />
+  <attribution android:tag="f208" android:label="@string/dummyLabel" />
+  <attribution android:tag="f209" android:label="@string/dummyLabel" />
+  <attribution android:tag="f210" android:label="@string/dummyLabel" />
+  <attribution android:tag="f211" android:label="@string/dummyLabel" />
+  <attribution android:tag="f212" android:label="@string/dummyLabel" />
+  <attribution android:tag="f213" android:label="@string/dummyLabel" />
+  <attribution android:tag="f214" android:label="@string/dummyLabel" />
+  <attribution android:tag="f215" android:label="@string/dummyLabel" />
+  <attribution android:tag="f216" android:label="@string/dummyLabel" />
+  <attribution android:tag="f217" android:label="@string/dummyLabel" />
+  <attribution android:tag="f218" android:label="@string/dummyLabel" />
+  <attribution android:tag="f219" android:label="@string/dummyLabel" />
+  <attribution android:tag="f220" android:label="@string/dummyLabel" />
+  <attribution android:tag="f221" android:label="@string/dummyLabel" />
+  <attribution android:tag="f222" android:label="@string/dummyLabel" />
+  <attribution android:tag="f223" android:label="@string/dummyLabel" />
+  <attribution android:tag="f224" android:label="@string/dummyLabel" />
+  <attribution android:tag="f225" android:label="@string/dummyLabel" />
+  <attribution android:tag="f226" android:label="@string/dummyLabel" />
+  <attribution android:tag="f227" android:label="@string/dummyLabel" />
+  <attribution android:tag="f228" android:label="@string/dummyLabel" />
+  <attribution android:tag="f229" android:label="@string/dummyLabel" />
+  <attribution android:tag="f230" android:label="@string/dummyLabel" />
+  <attribution android:tag="f231" android:label="@string/dummyLabel" />
+  <attribution android:tag="f232" android:label="@string/dummyLabel" />
+  <attribution android:tag="f233" android:label="@string/dummyLabel" />
+  <attribution android:tag="f234" android:label="@string/dummyLabel" />
+  <attribution android:tag="f235" android:label="@string/dummyLabel" />
+  <attribution android:tag="f236" android:label="@string/dummyLabel" />
+  <attribution android:tag="f237" android:label="@string/dummyLabel" />
+  <attribution android:tag="f238" android:label="@string/dummyLabel" />
+  <attribution android:tag="f239" android:label="@string/dummyLabel" />
+  <attribution android:tag="f240" android:label="@string/dummyLabel" />
+  <attribution android:tag="f241" android:label="@string/dummyLabel" />
+  <attribution android:tag="f242" android:label="@string/dummyLabel" />
+  <attribution android:tag="f243" android:label="@string/dummyLabel" />
+  <attribution android:tag="f244" android:label="@string/dummyLabel" />
+  <attribution android:tag="f245" android:label="@string/dummyLabel" />
+  <attribution android:tag="f246" android:label="@string/dummyLabel" />
+  <attribution android:tag="f247" android:label="@string/dummyLabel" />
+  <attribution android:tag="f248" android:label="@string/dummyLabel" />
+  <attribution android:tag="f249" android:label="@string/dummyLabel" />
+  <attribution android:tag="f250" android:label="@string/dummyLabel" />
+  <attribution android:tag="f251" android:label="@string/dummyLabel" />
+  <attribution android:tag="f252" android:label="@string/dummyLabel" />
+  <attribution android:tag="f253" android:label="@string/dummyLabel" />
+  <attribution android:tag="f254" android:label="@string/dummyLabel" />
+  <attribution android:tag="f255" android:label="@string/dummyLabel" />
+  <attribution android:tag="f256" android:label="@string/dummyLabel" />
+  <attribution android:tag="f257" android:label="@string/dummyLabel" />
+  <attribution android:tag="f258" android:label="@string/dummyLabel" />
+  <attribution android:tag="f259" android:label="@string/dummyLabel" />
+  <attribution android:tag="f260" android:label="@string/dummyLabel" />
+  <attribution android:tag="f261" android:label="@string/dummyLabel" />
+  <attribution android:tag="f262" android:label="@string/dummyLabel" />
+  <attribution android:tag="f263" android:label="@string/dummyLabel" />
+  <attribution android:tag="f264" android:label="@string/dummyLabel" />
+  <attribution android:tag="f265" android:label="@string/dummyLabel" />
+  <attribution android:tag="f266" android:label="@string/dummyLabel" />
+  <attribution android:tag="f267" android:label="@string/dummyLabel" />
+  <attribution android:tag="f268" android:label="@string/dummyLabel" />
+  <attribution android:tag="f269" android:label="@string/dummyLabel" />
+  <attribution android:tag="f270" android:label="@string/dummyLabel" />
+  <attribution android:tag="f271" android:label="@string/dummyLabel" />
+  <attribution android:tag="f272" android:label="@string/dummyLabel" />
+  <attribution android:tag="f273" android:label="@string/dummyLabel" />
+  <attribution android:tag="f274" android:label="@string/dummyLabel" />
+  <attribution android:tag="f275" android:label="@string/dummyLabel" />
+  <attribution android:tag="f276" android:label="@string/dummyLabel" />
+  <attribution android:tag="f277" android:label="@string/dummyLabel" />
+  <attribution android:tag="f278" android:label="@string/dummyLabel" />
+  <attribution android:tag="f279" android:label="@string/dummyLabel" />
+  <attribution android:tag="f280" android:label="@string/dummyLabel" />
+  <attribution android:tag="f281" android:label="@string/dummyLabel" />
+  <attribution android:tag="f282" android:label="@string/dummyLabel" />
+  <attribution android:tag="f283" android:label="@string/dummyLabel" />
+  <attribution android:tag="f284" android:label="@string/dummyLabel" />
+  <attribution android:tag="f285" android:label="@string/dummyLabel" />
+  <attribution android:tag="f286" android:label="@string/dummyLabel" />
+  <attribution android:tag="f287" android:label="@string/dummyLabel" />
+  <attribution android:tag="f288" android:label="@string/dummyLabel" />
+  <attribution android:tag="f289" android:label="@string/dummyLabel" />
+  <attribution android:tag="f290" android:label="@string/dummyLabel" />
+  <attribution android:tag="f291" android:label="@string/dummyLabel" />
+  <attribution android:tag="f292" android:label="@string/dummyLabel" />
+  <attribution android:tag="f293" android:label="@string/dummyLabel" />
+  <attribution android:tag="f294" android:label="@string/dummyLabel" />
+  <attribution android:tag="f295" android:label="@string/dummyLabel" />
+  <attribution android:tag="f296" android:label="@string/dummyLabel" />
+  <attribution android:tag="f297" android:label="@string/dummyLabel" />
+  <attribution android:tag="f298" android:label="@string/dummyLabel" />
+  <attribution android:tag="f299" android:label="@string/dummyLabel" />
+  <attribution android:tag="f300" android:label="@string/dummyLabel" />
+  <attribution android:tag="f301" android:label="@string/dummyLabel" />
+  <attribution android:tag="f302" android:label="@string/dummyLabel" />
+  <attribution android:tag="f303" android:label="@string/dummyLabel" />
+  <attribution android:tag="f304" android:label="@string/dummyLabel" />
+  <attribution android:tag="f305" android:label="@string/dummyLabel" />
+  <attribution android:tag="f306" android:label="@string/dummyLabel" />
+  <attribution android:tag="f307" android:label="@string/dummyLabel" />
+  <attribution android:tag="f308" android:label="@string/dummyLabel" />
+  <attribution android:tag="f309" android:label="@string/dummyLabel" />
+  <attribution android:tag="f310" android:label="@string/dummyLabel" />
+  <attribution android:tag="f311" android:label="@string/dummyLabel" />
+  <attribution android:tag="f312" android:label="@string/dummyLabel" />
+  <attribution android:tag="f313" android:label="@string/dummyLabel" />
+  <attribution android:tag="f314" android:label="@string/dummyLabel" />
+  <attribution android:tag="f315" android:label="@string/dummyLabel" />
+  <attribution android:tag="f316" android:label="@string/dummyLabel" />
+  <attribution android:tag="f317" android:label="@string/dummyLabel" />
+  <attribution android:tag="f318" android:label="@string/dummyLabel" />
+  <attribution android:tag="f319" android:label="@string/dummyLabel" />
+  <attribution android:tag="f320" android:label="@string/dummyLabel" />
+  <attribution android:tag="f321" android:label="@string/dummyLabel" />
+  <attribution android:tag="f322" android:label="@string/dummyLabel" />
+  <attribution android:tag="f323" android:label="@string/dummyLabel" />
+  <attribution android:tag="f324" android:label="@string/dummyLabel" />
+  <attribution android:tag="f325" android:label="@string/dummyLabel" />
+  <attribution android:tag="f326" android:label="@string/dummyLabel" />
+  <attribution android:tag="f327" android:label="@string/dummyLabel" />
+  <attribution android:tag="f328" android:label="@string/dummyLabel" />
+  <attribution android:tag="f329" android:label="@string/dummyLabel" />
+  <attribution android:tag="f330" android:label="@string/dummyLabel" />
+  <attribution android:tag="f331" android:label="@string/dummyLabel" />
+  <attribution android:tag="f332" android:label="@string/dummyLabel" />
+  <attribution android:tag="f333" android:label="@string/dummyLabel" />
+  <attribution android:tag="f334" android:label="@string/dummyLabel" />
+  <attribution android:tag="f335" android:label="@string/dummyLabel" />
+  <attribution android:tag="f336" android:label="@string/dummyLabel" />
+  <attribution android:tag="f337" android:label="@string/dummyLabel" />
+  <attribution android:tag="f338" android:label="@string/dummyLabel" />
+  <attribution android:tag="f339" android:label="@string/dummyLabel" />
+  <attribution android:tag="f340" android:label="@string/dummyLabel" />
+  <attribution android:tag="f341" android:label="@string/dummyLabel" />
+  <attribution android:tag="f342" android:label="@string/dummyLabel" />
+  <attribution android:tag="f343" android:label="@string/dummyLabel" />
+  <attribution android:tag="f344" android:label="@string/dummyLabel" />
+  <attribution android:tag="f345" android:label="@string/dummyLabel" />
+  <attribution android:tag="f346" android:label="@string/dummyLabel" />
+  <attribution android:tag="f347" android:label="@string/dummyLabel" />
+  <attribution android:tag="f348" android:label="@string/dummyLabel" />
+  <attribution android:tag="f349" android:label="@string/dummyLabel" />
+  <attribution android:tag="f350" android:label="@string/dummyLabel" />
+  <attribution android:tag="f351" android:label="@string/dummyLabel" />
+  <attribution android:tag="f352" android:label="@string/dummyLabel" />
+  <attribution android:tag="f353" android:label="@string/dummyLabel" />
+  <attribution android:tag="f354" android:label="@string/dummyLabel" />
+  <attribution android:tag="f355" android:label="@string/dummyLabel" />
+  <attribution android:tag="f356" android:label="@string/dummyLabel" />
+  <attribution android:tag="f357" android:label="@string/dummyLabel" />
+  <attribution android:tag="f358" android:label="@string/dummyLabel" />
+  <attribution android:tag="f359" android:label="@string/dummyLabel" />
+  <attribution android:tag="f360" android:label="@string/dummyLabel" />
+  <attribution android:tag="f361" android:label="@string/dummyLabel" />
+  <attribution android:tag="f362" android:label="@string/dummyLabel" />
+  <attribution android:tag="f363" android:label="@string/dummyLabel" />
+  <attribution android:tag="f364" android:label="@string/dummyLabel" />
+  <attribution android:tag="f365" android:label="@string/dummyLabel" />
+  <attribution android:tag="f366" android:label="@string/dummyLabel" />
+  <attribution android:tag="f367" android:label="@string/dummyLabel" />
+  <attribution android:tag="f368" android:label="@string/dummyLabel" />
+  <attribution android:tag="f369" android:label="@string/dummyLabel" />
+  <attribution android:tag="f370" android:label="@string/dummyLabel" />
+  <attribution android:tag="f371" android:label="@string/dummyLabel" />
+  <attribution android:tag="f372" android:label="@string/dummyLabel" />
+  <attribution android:tag="f373" android:label="@string/dummyLabel" />
+  <attribution android:tag="f374" android:label="@string/dummyLabel" />
+  <attribution android:tag="f375" android:label="@string/dummyLabel" />
+  <attribution android:tag="f376" android:label="@string/dummyLabel" />
+  <attribution android:tag="f377" android:label="@string/dummyLabel" />
+  <attribution android:tag="f378" android:label="@string/dummyLabel" />
+  <attribution android:tag="f379" android:label="@string/dummyLabel" />
+  <attribution android:tag="f380" android:label="@string/dummyLabel" />
+  <attribution android:tag="f381" android:label="@string/dummyLabel" />
+  <attribution android:tag="f382" android:label="@string/dummyLabel" />
+  <attribution android:tag="f383" android:label="@string/dummyLabel" />
+  <attribution android:tag="f384" android:label="@string/dummyLabel" />
+  <attribution android:tag="f385" android:label="@string/dummyLabel" />
+  <attribution android:tag="f386" android:label="@string/dummyLabel" />
+  <attribution android:tag="f387" android:label="@string/dummyLabel" />
+  <attribution android:tag="f388" android:label="@string/dummyLabel" />
+  <attribution android:tag="f389" android:label="@string/dummyLabel" />
+  <attribution android:tag="f390" android:label="@string/dummyLabel" />
+  <attribution android:tag="f391" android:label="@string/dummyLabel" />
+  <attribution android:tag="f392" android:label="@string/dummyLabel" />
+  <attribution android:tag="f393" android:label="@string/dummyLabel" />
+  <attribution android:tag="f394" android:label="@string/dummyLabel" />
+  <attribution android:tag="f395" android:label="@string/dummyLabel" />
+  <attribution android:tag="f396" android:label="@string/dummyLabel" />
+  <attribution android:tag="f397" android:label="@string/dummyLabel" />
+  <attribution android:tag="f398" android:label="@string/dummyLabel" />
+  <attribution android:tag="f399" android:label="@string/dummyLabel" />
+  <attribution android:tag="f400" android:label="@string/dummyLabel" />
+  <attribution android:tag="f401" android:label="@string/dummyLabel" />
+  <attribution android:tag="f402" android:label="@string/dummyLabel" />
+  <attribution android:tag="f403" android:label="@string/dummyLabel" />
+  <attribution android:tag="f404" android:label="@string/dummyLabel" />
+  <attribution android:tag="f405" android:label="@string/dummyLabel" />
+  <attribution android:tag="f406" android:label="@string/dummyLabel" />
+  <attribution android:tag="f407" android:label="@string/dummyLabel" />
+  <attribution android:tag="f408" android:label="@string/dummyLabel" />
+  <attribution android:tag="f409" android:label="@string/dummyLabel" />
+  <attribution android:tag="f410" android:label="@string/dummyLabel" />
+  <attribution android:tag="f411" android:label="@string/dummyLabel" />
+  <attribution android:tag="f412" android:label="@string/dummyLabel" />
+  <attribution android:tag="f413" android:label="@string/dummyLabel" />
+  <attribution android:tag="f414" android:label="@string/dummyLabel" />
+  <attribution android:tag="f415" android:label="@string/dummyLabel" />
+  <attribution android:tag="f416" android:label="@string/dummyLabel" />
+  <attribution android:tag="f417" android:label="@string/dummyLabel" />
+  <attribution android:tag="f418" android:label="@string/dummyLabel" />
+  <attribution android:tag="f419" android:label="@string/dummyLabel" />
+  <attribution android:tag="f420" android:label="@string/dummyLabel" />
+  <attribution android:tag="f421" android:label="@string/dummyLabel" />
+  <attribution android:tag="f422" android:label="@string/dummyLabel" />
+  <attribution android:tag="f423" android:label="@string/dummyLabel" />
+  <attribution android:tag="f424" android:label="@string/dummyLabel" />
+  <attribution android:tag="f425" android:label="@string/dummyLabel" />
+  <attribution android:tag="f426" android:label="@string/dummyLabel" />
+  <attribution android:tag="f427" android:label="@string/dummyLabel" />
+  <attribution android:tag="f428" android:label="@string/dummyLabel" />
+  <attribution android:tag="f429" android:label="@string/dummyLabel" />
+  <attribution android:tag="f430" android:label="@string/dummyLabel" />
+  <attribution android:tag="f431" android:label="@string/dummyLabel" />
+  <attribution android:tag="f432" android:label="@string/dummyLabel" />
+  <attribution android:tag="f433" android:label="@string/dummyLabel" />
+  <attribution android:tag="f434" android:label="@string/dummyLabel" />
+  <attribution android:tag="f435" android:label="@string/dummyLabel" />
+  <attribution android:tag="f436" android:label="@string/dummyLabel" />
+  <attribution android:tag="f437" android:label="@string/dummyLabel" />
+  <attribution android:tag="f438" android:label="@string/dummyLabel" />
+  <attribution android:tag="f439" android:label="@string/dummyLabel" />
+  <attribution android:tag="f440" android:label="@string/dummyLabel" />
+  <attribution android:tag="f441" android:label="@string/dummyLabel" />
+  <attribution android:tag="f442" android:label="@string/dummyLabel" />
+  <attribution android:tag="f443" android:label="@string/dummyLabel" />
+  <attribution android:tag="f444" android:label="@string/dummyLabel" />
+  <attribution android:tag="f445" android:label="@string/dummyLabel" />
+  <attribution android:tag="f446" android:label="@string/dummyLabel" />
+  <attribution android:tag="f447" android:label="@string/dummyLabel" />
+  <attribution android:tag="f448" android:label="@string/dummyLabel" />
+  <attribution android:tag="f449" android:label="@string/dummyLabel" />
+  <attribution android:tag="f450" android:label="@string/dummyLabel" />
+  <attribution android:tag="f451" android:label="@string/dummyLabel" />
+  <attribution android:tag="f452" android:label="@string/dummyLabel" />
+  <attribution android:tag="f453" android:label="@string/dummyLabel" />
+  <attribution android:tag="f454" android:label="@string/dummyLabel" />
+  <attribution android:tag="f455" android:label="@string/dummyLabel" />
+  <attribution android:tag="f456" android:label="@string/dummyLabel" />
+  <attribution android:tag="f457" android:label="@string/dummyLabel" />
+  <attribution android:tag="f458" android:label="@string/dummyLabel" />
+  <attribution android:tag="f459" android:label="@string/dummyLabel" />
+  <attribution android:tag="f460" android:label="@string/dummyLabel" />
+  <attribution android:tag="f461" android:label="@string/dummyLabel" />
+  <attribution android:tag="f462" android:label="@string/dummyLabel" />
+  <attribution android:tag="f463" android:label="@string/dummyLabel" />
+  <attribution android:tag="f464" android:label="@string/dummyLabel" />
+  <attribution android:tag="f465" android:label="@string/dummyLabel" />
+  <attribution android:tag="f466" android:label="@string/dummyLabel" />
+  <attribution android:tag="f467" android:label="@string/dummyLabel" />
+  <attribution android:tag="f468" android:label="@string/dummyLabel" />
+  <attribution android:tag="f469" android:label="@string/dummyLabel" />
+  <attribution android:tag="f470" android:label="@string/dummyLabel" />
+  <attribution android:tag="f471" android:label="@string/dummyLabel" />
+  <attribution android:tag="f472" android:label="@string/dummyLabel" />
+  <attribution android:tag="f473" android:label="@string/dummyLabel" />
+  <attribution android:tag="f474" android:label="@string/dummyLabel" />
+  <attribution android:tag="f475" android:label="@string/dummyLabel" />
+  <attribution android:tag="f476" android:label="@string/dummyLabel" />
+  <attribution android:tag="f477" android:label="@string/dummyLabel" />
+  <attribution android:tag="f478" android:label="@string/dummyLabel" />
+  <attribution android:tag="f479" android:label="@string/dummyLabel" />
+  <attribution android:tag="f480" android:label="@string/dummyLabel" />
+  <attribution android:tag="f481" android:label="@string/dummyLabel" />
+  <attribution android:tag="f482" android:label="@string/dummyLabel" />
+  <attribution android:tag="f483" android:label="@string/dummyLabel" />
+  <attribution android:tag="f484" android:label="@string/dummyLabel" />
+  <attribution android:tag="f485" android:label="@string/dummyLabel" />
+  <attribution android:tag="f486" android:label="@string/dummyLabel" />
+  <attribution android:tag="f487" android:label="@string/dummyLabel" />
+  <attribution android:tag="f488" android:label="@string/dummyLabel" />
+  <attribution android:tag="f489" android:label="@string/dummyLabel" />
+  <attribution android:tag="f490" android:label="@string/dummyLabel" />
+  <attribution android:tag="f491" android:label="@string/dummyLabel" />
+  <attribution android:tag="f492" android:label="@string/dummyLabel" />
+  <attribution android:tag="f493" android:label="@string/dummyLabel" />
+  <attribution android:tag="f494" android:label="@string/dummyLabel" />
+  <attribution android:tag="f495" android:label="@string/dummyLabel" />
+  <attribution android:tag="f496" android:label="@string/dummyLabel" />
+  <attribution android:tag="f497" android:label="@string/dummyLabel" />
+  <attribution android:tag="f498" android:label="@string/dummyLabel" />
+  <attribution android:tag="f499" android:label="@string/dummyLabel" />
+  <attribution android:tag="f500" android:label="@string/dummyLabel" />
+  <attribution android:tag="f501" android:label="@string/dummyLabel" />
+  <attribution android:tag="f502" android:label="@string/dummyLabel" />
+  <attribution android:tag="f503" android:label="@string/dummyLabel" />
+  <attribution android:tag="f504" android:label="@string/dummyLabel" />
+  <attribution android:tag="f505" android:label="@string/dummyLabel" />
+  <attribution android:tag="f506" android:label="@string/dummyLabel" />
+  <attribution android:tag="f507" android:label="@string/dummyLabel" />
+  <attribution android:tag="f508" android:label="@string/dummyLabel" />
+  <attribution android:tag="f509" android:label="@string/dummyLabel" />
+  <attribution android:tag="f510" android:label="@string/dummyLabel" />
+  <attribution android:tag="f511" android:label="@string/dummyLabel" />
+  <attribution android:tag="f512" android:label="@string/dummyLabel" />
+  <attribution android:tag="f513" android:label="@string/dummyLabel" />
+  <attribution android:tag="f514" android:label="@string/dummyLabel" />
+  <attribution android:tag="f515" android:label="@string/dummyLabel" />
+  <attribution android:tag="f516" android:label="@string/dummyLabel" />
+  <attribution android:tag="f517" android:label="@string/dummyLabel" />
+  <attribution android:tag="f518" android:label="@string/dummyLabel" />
+  <attribution android:tag="f519" android:label="@string/dummyLabel" />
+  <attribution android:tag="f520" android:label="@string/dummyLabel" />
+  <attribution android:tag="f521" android:label="@string/dummyLabel" />
+  <attribution android:tag="f522" android:label="@string/dummyLabel" />
+  <attribution android:tag="f523" android:label="@string/dummyLabel" />
+  <attribution android:tag="f524" android:label="@string/dummyLabel" />
+  <attribution android:tag="f525" android:label="@string/dummyLabel" />
+  <attribution android:tag="f526" android:label="@string/dummyLabel" />
+  <attribution android:tag="f527" android:label="@string/dummyLabel" />
+  <attribution android:tag="f528" android:label="@string/dummyLabel" />
+  <attribution android:tag="f529" android:label="@string/dummyLabel" />
+  <attribution android:tag="f530" android:label="@string/dummyLabel" />
+  <attribution android:tag="f531" android:label="@string/dummyLabel" />
+  <attribution android:tag="f532" android:label="@string/dummyLabel" />
+  <attribution android:tag="f533" android:label="@string/dummyLabel" />
+  <attribution android:tag="f534" android:label="@string/dummyLabel" />
+  <attribution android:tag="f535" android:label="@string/dummyLabel" />
+  <attribution android:tag="f536" android:label="@string/dummyLabel" />
+  <attribution android:tag="f537" android:label="@string/dummyLabel" />
+  <attribution android:tag="f538" android:label="@string/dummyLabel" />
+  <attribution android:tag="f539" android:label="@string/dummyLabel" />
+  <attribution android:tag="f540" android:label="@string/dummyLabel" />
+  <attribution android:tag="f541" android:label="@string/dummyLabel" />
+  <attribution android:tag="f542" android:label="@string/dummyLabel" />
+  <attribution android:tag="f543" android:label="@string/dummyLabel" />
+  <attribution android:tag="f544" android:label="@string/dummyLabel" />
+  <attribution android:tag="f545" android:label="@string/dummyLabel" />
+  <attribution android:tag="f546" android:label="@string/dummyLabel" />
+  <attribution android:tag="f547" android:label="@string/dummyLabel" />
+  <attribution android:tag="f548" android:label="@string/dummyLabel" />
+  <attribution android:tag="f549" android:label="@string/dummyLabel" />
+  <attribution android:tag="f550" android:label="@string/dummyLabel" />
+  <attribution android:tag="f551" android:label="@string/dummyLabel" />
+  <attribution android:tag="f552" android:label="@string/dummyLabel" />
+  <attribution android:tag="f553" android:label="@string/dummyLabel" />
+  <attribution android:tag="f554" android:label="@string/dummyLabel" />
+  <attribution android:tag="f555" android:label="@string/dummyLabel" />
+  <attribution android:tag="f556" android:label="@string/dummyLabel" />
+  <attribution android:tag="f557" android:label="@string/dummyLabel" />
+  <attribution android:tag="f558" android:label="@string/dummyLabel" />
+  <attribution android:tag="f559" android:label="@string/dummyLabel" />
+  <attribution android:tag="f560" android:label="@string/dummyLabel" />
+  <attribution android:tag="f561" android:label="@string/dummyLabel" />
+  <attribution android:tag="f562" android:label="@string/dummyLabel" />
+  <attribution android:tag="f563" android:label="@string/dummyLabel" />
+  <attribution android:tag="f564" android:label="@string/dummyLabel" />
+  <attribution android:tag="f565" android:label="@string/dummyLabel" />
+  <attribution android:tag="f566" android:label="@string/dummyLabel" />
+  <attribution android:tag="f567" android:label="@string/dummyLabel" />
+  <attribution android:tag="f568" android:label="@string/dummyLabel" />
+  <attribution android:tag="f569" android:label="@string/dummyLabel" />
+  <attribution android:tag="f570" android:label="@string/dummyLabel" />
+  <attribution android:tag="f571" android:label="@string/dummyLabel" />
+  <attribution android:tag="f572" android:label="@string/dummyLabel" />
+  <attribution android:tag="f573" android:label="@string/dummyLabel" />
+  <attribution android:tag="f574" android:label="@string/dummyLabel" />
+  <attribution android:tag="f575" android:label="@string/dummyLabel" />
+  <attribution android:tag="f576" android:label="@string/dummyLabel" />
+  <attribution android:tag="f577" android:label="@string/dummyLabel" />
+  <attribution android:tag="f578" android:label="@string/dummyLabel" />
+  <attribution android:tag="f579" android:label="@string/dummyLabel" />
+  <attribution android:tag="f580" android:label="@string/dummyLabel" />
+  <attribution android:tag="f581" android:label="@string/dummyLabel" />
+  <attribution android:tag="f582" android:label="@string/dummyLabel" />
+  <attribution android:tag="f583" android:label="@string/dummyLabel" />
+  <attribution android:tag="f584" android:label="@string/dummyLabel" />
+  <attribution android:tag="f585" android:label="@string/dummyLabel" />
+  <attribution android:tag="f586" android:label="@string/dummyLabel" />
+  <attribution android:tag="f587" android:label="@string/dummyLabel" />
+  <attribution android:tag="f588" android:label="@string/dummyLabel" />
+  <attribution android:tag="f589" android:label="@string/dummyLabel" />
+  <attribution android:tag="f590" android:label="@string/dummyLabel" />
+  <attribution android:tag="f591" android:label="@string/dummyLabel" />
+  <attribution android:tag="f592" android:label="@string/dummyLabel" />
+  <attribution android:tag="f593" android:label="@string/dummyLabel" />
+  <attribution android:tag="f594" android:label="@string/dummyLabel" />
+  <attribution android:tag="f595" android:label="@string/dummyLabel" />
+  <attribution android:tag="f596" android:label="@string/dummyLabel" />
+  <attribution android:tag="f597" android:label="@string/dummyLabel" />
+  <attribution android:tag="f598" android:label="@string/dummyLabel" />
+  <attribution android:tag="f599" android:label="@string/dummyLabel" />
+  <attribution android:tag="f600" android:label="@string/dummyLabel" />
+  <attribution android:tag="f601" android:label="@string/dummyLabel" />
+  <attribution android:tag="f602" android:label="@string/dummyLabel" />
+  <attribution android:tag="f603" android:label="@string/dummyLabel" />
+  <attribution android:tag="f604" android:label="@string/dummyLabel" />
+  <attribution android:tag="f605" android:label="@string/dummyLabel" />
+  <attribution android:tag="f606" android:label="@string/dummyLabel" />
+  <attribution android:tag="f607" android:label="@string/dummyLabel" />
+  <attribution android:tag="f608" android:label="@string/dummyLabel" />
+  <attribution android:tag="f609" android:label="@string/dummyLabel" />
+  <attribution android:tag="f610" android:label="@string/dummyLabel" />
+  <attribution android:tag="f611" android:label="@string/dummyLabel" />
+  <attribution android:tag="f612" android:label="@string/dummyLabel" />
+  <attribution android:tag="f613" android:label="@string/dummyLabel" />
+  <attribution android:tag="f614" android:label="@string/dummyLabel" />
+  <attribution android:tag="f615" android:label="@string/dummyLabel" />
+  <attribution android:tag="f616" android:label="@string/dummyLabel" />
+  <attribution android:tag="f617" android:label="@string/dummyLabel" />
+  <attribution android:tag="f618" android:label="@string/dummyLabel" />
+  <attribution android:tag="f619" android:label="@string/dummyLabel" />
+  <attribution android:tag="f620" android:label="@string/dummyLabel" />
+  <attribution android:tag="f621" android:label="@string/dummyLabel" />
+  <attribution android:tag="f622" android:label="@string/dummyLabel" />
+  <attribution android:tag="f623" android:label="@string/dummyLabel" />
+  <attribution android:tag="f624" android:label="@string/dummyLabel" />
+  <attribution android:tag="f625" android:label="@string/dummyLabel" />
+  <attribution android:tag="f626" android:label="@string/dummyLabel" />
+  <attribution android:tag="f627" android:label="@string/dummyLabel" />
+  <attribution android:tag="f628" android:label="@string/dummyLabel" />
+  <attribution android:tag="f629" android:label="@string/dummyLabel" />
+  <attribution android:tag="f630" android:label="@string/dummyLabel" />
+  <attribution android:tag="f631" android:label="@string/dummyLabel" />
+  <attribution android:tag="f632" android:label="@string/dummyLabel" />
+  <attribution android:tag="f633" android:label="@string/dummyLabel" />
+  <attribution android:tag="f634" android:label="@string/dummyLabel" />
+  <attribution android:tag="f635" android:label="@string/dummyLabel" />
+  <attribution android:tag="f636" android:label="@string/dummyLabel" />
+  <attribution android:tag="f637" android:label="@string/dummyLabel" />
+  <attribution android:tag="f638" android:label="@string/dummyLabel" />
+  <attribution android:tag="f639" android:label="@string/dummyLabel" />
+  <attribution android:tag="f640" android:label="@string/dummyLabel" />
+  <attribution android:tag="f641" android:label="@string/dummyLabel" />
+  <attribution android:tag="f642" android:label="@string/dummyLabel" />
+  <attribution android:tag="f643" android:label="@string/dummyLabel" />
+  <attribution android:tag="f644" android:label="@string/dummyLabel" />
+  <attribution android:tag="f645" android:label="@string/dummyLabel" />
+  <attribution android:tag="f646" android:label="@string/dummyLabel" />
+  <attribution android:tag="f647" android:label="@string/dummyLabel" />
+  <attribution android:tag="f648" android:label="@string/dummyLabel" />
+  <attribution android:tag="f649" android:label="@string/dummyLabel" />
+  <attribution android:tag="f650" android:label="@string/dummyLabel" />
+  <attribution android:tag="f651" android:label="@string/dummyLabel" />
+  <attribution android:tag="f652" android:label="@string/dummyLabel" />
+  <attribution android:tag="f653" android:label="@string/dummyLabel" />
+  <attribution android:tag="f654" android:label="@string/dummyLabel" />
+  <attribution android:tag="f655" android:label="@string/dummyLabel" />
+  <attribution android:tag="f656" android:label="@string/dummyLabel" />
+  <attribution android:tag="f657" android:label="@string/dummyLabel" />
+  <attribution android:tag="f658" android:label="@string/dummyLabel" />
+  <attribution android:tag="f659" android:label="@string/dummyLabel" />
+  <attribution android:tag="f660" android:label="@string/dummyLabel" />
+  <attribution android:tag="f661" android:label="@string/dummyLabel" />
+  <attribution android:tag="f662" android:label="@string/dummyLabel" />
+  <attribution android:tag="f663" android:label="@string/dummyLabel" />
+  <attribution android:tag="f664" android:label="@string/dummyLabel" />
+  <attribution android:tag="f665" android:label="@string/dummyLabel" />
+  <attribution android:tag="f666" android:label="@string/dummyLabel" />
+  <attribution android:tag="f667" android:label="@string/dummyLabel" />
+  <attribution android:tag="f668" android:label="@string/dummyLabel" />
+  <attribution android:tag="f669" android:label="@string/dummyLabel" />
+  <attribution android:tag="f670" android:label="@string/dummyLabel" />
+  <attribution android:tag="f671" android:label="@string/dummyLabel" />
+  <attribution android:tag="f672" android:label="@string/dummyLabel" />
+  <attribution android:tag="f673" android:label="@string/dummyLabel" />
+  <attribution android:tag="f674" android:label="@string/dummyLabel" />
+  <attribution android:tag="f675" android:label="@string/dummyLabel" />
+  <attribution android:tag="f676" android:label="@string/dummyLabel" />
+  <attribution android:tag="f677" android:label="@string/dummyLabel" />
+  <attribution android:tag="f678" android:label="@string/dummyLabel" />
+  <attribution android:tag="f679" android:label="@string/dummyLabel" />
+  <attribution android:tag="f680" android:label="@string/dummyLabel" />
+  <attribution android:tag="f681" android:label="@string/dummyLabel" />
+  <attribution android:tag="f682" android:label="@string/dummyLabel" />
+  <attribution android:tag="f683" android:label="@string/dummyLabel" />
+  <attribution android:tag="f684" android:label="@string/dummyLabel" />
+  <attribution android:tag="f685" android:label="@string/dummyLabel" />
+  <attribution android:tag="f686" android:label="@string/dummyLabel" />
+  <attribution android:tag="f687" android:label="@string/dummyLabel" />
+  <attribution android:tag="f688" android:label="@string/dummyLabel" />
+  <attribution android:tag="f689" android:label="@string/dummyLabel" />
+  <attribution android:tag="f690" android:label="@string/dummyLabel" />
+  <attribution android:tag="f691" android:label="@string/dummyLabel" />
+  <attribution android:tag="f692" android:label="@string/dummyLabel" />
+  <attribution android:tag="f693" android:label="@string/dummyLabel" />
+  <attribution android:tag="f694" android:label="@string/dummyLabel" />
+  <attribution android:tag="f695" android:label="@string/dummyLabel" />
+  <attribution android:tag="f696" android:label="@string/dummyLabel" />
+  <attribution android:tag="f697" android:label="@string/dummyLabel" />
+  <attribution android:tag="f698" android:label="@string/dummyLabel" />
+  <attribution android:tag="f699" android:label="@string/dummyLabel" />
+  <attribution android:tag="f700" android:label="@string/dummyLabel" />
+  <attribution android:tag="f701" android:label="@string/dummyLabel" />
+  <attribution android:tag="f702" android:label="@string/dummyLabel" />
+  <attribution android:tag="f703" android:label="@string/dummyLabel" />
+  <attribution android:tag="f704" android:label="@string/dummyLabel" />
+  <attribution android:tag="f705" android:label="@string/dummyLabel" />
+  <attribution android:tag="f706" android:label="@string/dummyLabel" />
+  <attribution android:tag="f707" android:label="@string/dummyLabel" />
+  <attribution android:tag="f708" android:label="@string/dummyLabel" />
+  <attribution android:tag="f709" android:label="@string/dummyLabel" />
+  <attribution android:tag="f710" android:label="@string/dummyLabel" />
+  <attribution android:tag="f711" android:label="@string/dummyLabel" />
+  <attribution android:tag="f712" android:label="@string/dummyLabel" />
+  <attribution android:tag="f713" android:label="@string/dummyLabel" />
+  <attribution android:tag="f714" android:label="@string/dummyLabel" />
+  <attribution android:tag="f715" android:label="@string/dummyLabel" />
+  <attribution android:tag="f716" android:label="@string/dummyLabel" />
+  <attribution android:tag="f717" android:label="@string/dummyLabel" />
+  <attribution android:tag="f718" android:label="@string/dummyLabel" />
+  <attribution android:tag="f719" android:label="@string/dummyLabel" />
+  <attribution android:tag="f720" android:label="@string/dummyLabel" />
+  <attribution android:tag="f721" android:label="@string/dummyLabel" />
+  <attribution android:tag="f722" android:label="@string/dummyLabel" />
+  <attribution android:tag="f723" android:label="@string/dummyLabel" />
+  <attribution android:tag="f724" android:label="@string/dummyLabel" />
+  <attribution android:tag="f725" android:label="@string/dummyLabel" />
+  <attribution android:tag="f726" android:label="@string/dummyLabel" />
+  <attribution android:tag="f727" android:label="@string/dummyLabel" />
+  <attribution android:tag="f728" android:label="@string/dummyLabel" />
+  <attribution android:tag="f729" android:label="@string/dummyLabel" />
+  <attribution android:tag="f730" android:label="@string/dummyLabel" />
+  <attribution android:tag="f731" android:label="@string/dummyLabel" />
+  <attribution android:tag="f732" android:label="@string/dummyLabel" />
+  <attribution android:tag="f733" android:label="@string/dummyLabel" />
+  <attribution android:tag="f734" android:label="@string/dummyLabel" />
+  <attribution android:tag="f735" android:label="@string/dummyLabel" />
+  <attribution android:tag="f736" android:label="@string/dummyLabel" />
+  <attribution android:tag="f737" android:label="@string/dummyLabel" />
+  <attribution android:tag="f738" android:label="@string/dummyLabel" />
+  <attribution android:tag="f739" android:label="@string/dummyLabel" />
+  <attribution android:tag="f740" android:label="@string/dummyLabel" />
+  <attribution android:tag="f741" android:label="@string/dummyLabel" />
+  <attribution android:tag="f742" android:label="@string/dummyLabel" />
+  <attribution android:tag="f743" android:label="@string/dummyLabel" />
+  <attribution android:tag="f744" android:label="@string/dummyLabel" />
+  <attribution android:tag="f745" android:label="@string/dummyLabel" />
+  <attribution android:tag="f746" android:label="@string/dummyLabel" />
+  <attribution android:tag="f747" android:label="@string/dummyLabel" />
+  <attribution android:tag="f748" android:label="@string/dummyLabel" />
+  <attribution android:tag="f749" android:label="@string/dummyLabel" />
+  <attribution android:tag="f750" android:label="@string/dummyLabel" />
+  <attribution android:tag="f751" android:label="@string/dummyLabel" />
+  <attribution android:tag="f752" android:label="@string/dummyLabel" />
+  <attribution android:tag="f753" android:label="@string/dummyLabel" />
+  <attribution android:tag="f754" android:label="@string/dummyLabel" />
+  <attribution android:tag="f755" android:label="@string/dummyLabel" />
+  <attribution android:tag="f756" android:label="@string/dummyLabel" />
+  <attribution android:tag="f757" android:label="@string/dummyLabel" />
+  <attribution android:tag="f758" android:label="@string/dummyLabel" />
+  <attribution android:tag="f759" android:label="@string/dummyLabel" />
+  <attribution android:tag="f760" android:label="@string/dummyLabel" />
+  <attribution android:tag="f761" android:label="@string/dummyLabel" />
+  <attribution android:tag="f762" android:label="@string/dummyLabel" />
+  <attribution android:tag="f763" android:label="@string/dummyLabel" />
+  <attribution android:tag="f764" android:label="@string/dummyLabel" />
+  <attribution android:tag="f765" android:label="@string/dummyLabel" />
+  <attribution android:tag="f766" android:label="@string/dummyLabel" />
+  <attribution android:tag="f767" android:label="@string/dummyLabel" />
+  <attribution android:tag="f768" android:label="@string/dummyLabel" />
+  <attribution android:tag="f769" android:label="@string/dummyLabel" />
+  <attribution android:tag="f770" android:label="@string/dummyLabel" />
+  <attribution android:tag="f771" android:label="@string/dummyLabel" />
+  <attribution android:tag="f772" android:label="@string/dummyLabel" />
+  <attribution android:tag="f773" android:label="@string/dummyLabel" />
+  <attribution android:tag="f774" android:label="@string/dummyLabel" />
+  <attribution android:tag="f775" android:label="@string/dummyLabel" />
+  <attribution android:tag="f776" android:label="@string/dummyLabel" />
+  <attribution android:tag="f777" android:label="@string/dummyLabel" />
+  <attribution android:tag="f778" android:label="@string/dummyLabel" />
+  <attribution android:tag="f779" android:label="@string/dummyLabel" />
+  <attribution android:tag="f780" android:label="@string/dummyLabel" />
+  <attribution android:tag="f781" android:label="@string/dummyLabel" />
+  <attribution android:tag="f782" android:label="@string/dummyLabel" />
+  <attribution android:tag="f783" android:label="@string/dummyLabel" />
+  <attribution android:tag="f784" android:label="@string/dummyLabel" />
+  <attribution android:tag="f785" android:label="@string/dummyLabel" />
+  <attribution android:tag="f786" android:label="@string/dummyLabel" />
+  <attribution android:tag="f787" android:label="@string/dummyLabel" />
+  <attribution android:tag="f788" android:label="@string/dummyLabel" />
+  <attribution android:tag="f789" android:label="@string/dummyLabel" />
+  <attribution android:tag="f790" android:label="@string/dummyLabel" />
+  <attribution android:tag="f791" android:label="@string/dummyLabel" />
+  <attribution android:tag="f792" android:label="@string/dummyLabel" />
+  <attribution android:tag="f793" android:label="@string/dummyLabel" />
+  <attribution android:tag="f794" android:label="@string/dummyLabel" />
+  <attribution android:tag="f795" android:label="@string/dummyLabel" />
+  <attribution android:tag="f796" android:label="@string/dummyLabel" />
+  <attribution android:tag="f797" android:label="@string/dummyLabel" />
+  <attribution android:tag="f798" android:label="@string/dummyLabel" />
+  <attribution android:tag="f799" android:label="@string/dummyLabel" />
+  <attribution android:tag="f800" android:label="@string/dummyLabel" />
+  <attribution android:tag="f801" android:label="@string/dummyLabel" />
+  <attribution android:tag="f802" android:label="@string/dummyLabel" />
+  <attribution android:tag="f803" android:label="@string/dummyLabel" />
+  <attribution android:tag="f804" android:label="@string/dummyLabel" />
+  <attribution android:tag="f805" android:label="@string/dummyLabel" />
+  <attribution android:tag="f806" android:label="@string/dummyLabel" />
+  <attribution android:tag="f807" android:label="@string/dummyLabel" />
+  <attribution android:tag="f808" android:label="@string/dummyLabel" />
+  <attribution android:tag="f809" android:label="@string/dummyLabel" />
+  <attribution android:tag="f810" android:label="@string/dummyLabel" />
+  <attribution android:tag="f811" android:label="@string/dummyLabel" />
+  <attribution android:tag="f812" android:label="@string/dummyLabel" />
+  <attribution android:tag="f813" android:label="@string/dummyLabel" />
+  <attribution android:tag="f814" android:label="@string/dummyLabel" />
+  <attribution android:tag="f815" android:label="@string/dummyLabel" />
+  <attribution android:tag="f816" android:label="@string/dummyLabel" />
+  <attribution android:tag="f817" android:label="@string/dummyLabel" />
+  <attribution android:tag="f818" android:label="@string/dummyLabel" />
+  <attribution android:tag="f819" android:label="@string/dummyLabel" />
+  <attribution android:tag="f820" android:label="@string/dummyLabel" />
+  <attribution android:tag="f821" android:label="@string/dummyLabel" />
+  <attribution android:tag="f822" android:label="@string/dummyLabel" />
+  <attribution android:tag="f823" android:label="@string/dummyLabel" />
+  <attribution android:tag="f824" android:label="@string/dummyLabel" />
+  <attribution android:tag="f825" android:label="@string/dummyLabel" />
+  <attribution android:tag="f826" android:label="@string/dummyLabel" />
+  <attribution android:tag="f827" android:label="@string/dummyLabel" />
+  <attribution android:tag="f828" android:label="@string/dummyLabel" />
+  <attribution android:tag="f829" android:label="@string/dummyLabel" />
+  <attribution android:tag="f830" android:label="@string/dummyLabel" />
+  <attribution android:tag="f831" android:label="@string/dummyLabel" />
+  <attribution android:tag="f832" android:label="@string/dummyLabel" />
+  <attribution android:tag="f833" android:label="@string/dummyLabel" />
+  <attribution android:tag="f834" android:label="@string/dummyLabel" />
+  <attribution android:tag="f835" android:label="@string/dummyLabel" />
+  <attribution android:tag="f836" android:label="@string/dummyLabel" />
+  <attribution android:tag="f837" android:label="@string/dummyLabel" />
+  <attribution android:tag="f838" android:label="@string/dummyLabel" />
+  <attribution android:tag="f839" android:label="@string/dummyLabel" />
+  <attribution android:tag="f840" android:label="@string/dummyLabel" />
+  <attribution android:tag="f841" android:label="@string/dummyLabel" />
+  <attribution android:tag="f842" android:label="@string/dummyLabel" />
+  <attribution android:tag="f843" android:label="@string/dummyLabel" />
+  <attribution android:tag="f844" android:label="@string/dummyLabel" />
+  <attribution android:tag="f845" android:label="@string/dummyLabel" />
+  <attribution android:tag="f846" android:label="@string/dummyLabel" />
+  <attribution android:tag="f847" android:label="@string/dummyLabel" />
+  <attribution android:tag="f848" android:label="@string/dummyLabel" />
+  <attribution android:tag="f849" android:label="@string/dummyLabel" />
+  <attribution android:tag="f850" android:label="@string/dummyLabel" />
+  <attribution android:tag="f851" android:label="@string/dummyLabel" />
+  <attribution android:tag="f852" android:label="@string/dummyLabel" />
+  <attribution android:tag="f853" android:label="@string/dummyLabel" />
+  <attribution android:tag="f854" android:label="@string/dummyLabel" />
+  <attribution android:tag="f855" android:label="@string/dummyLabel" />
+  <attribution android:tag="f856" android:label="@string/dummyLabel" />
+  <attribution android:tag="f857" android:label="@string/dummyLabel" />
+  <attribution android:tag="f858" android:label="@string/dummyLabel" />
+  <attribution android:tag="f859" android:label="@string/dummyLabel" />
+  <attribution android:tag="f860" android:label="@string/dummyLabel" />
+  <attribution android:tag="f861" android:label="@string/dummyLabel" />
+  <attribution android:tag="f862" android:label="@string/dummyLabel" />
+  <attribution android:tag="f863" android:label="@string/dummyLabel" />
+  <attribution android:tag="f864" android:label="@string/dummyLabel" />
+  <attribution android:tag="f865" android:label="@string/dummyLabel" />
+  <attribution android:tag="f866" android:label="@string/dummyLabel" />
+  <attribution android:tag="f867" android:label="@string/dummyLabel" />
+  <attribution android:tag="f868" android:label="@string/dummyLabel" />
+  <attribution android:tag="f869" android:label="@string/dummyLabel" />
+  <attribution android:tag="f870" android:label="@string/dummyLabel" />
+  <attribution android:tag="f871" android:label="@string/dummyLabel" />
+  <attribution android:tag="f872" android:label="@string/dummyLabel" />
+  <attribution android:tag="f873" android:label="@string/dummyLabel" />
+  <attribution android:tag="f874" android:label="@string/dummyLabel" />
+  <attribution android:tag="f875" android:label="@string/dummyLabel" />
+  <attribution android:tag="f876" android:label="@string/dummyLabel" />
+  <attribution android:tag="f877" android:label="@string/dummyLabel" />
+  <attribution android:tag="f878" android:label="@string/dummyLabel" />
+  <attribution android:tag="f879" android:label="@string/dummyLabel" />
+  <attribution android:tag="f880" android:label="@string/dummyLabel" />
+  <attribution android:tag="f881" android:label="@string/dummyLabel" />
+  <attribution android:tag="f882" android:label="@string/dummyLabel" />
+  <attribution android:tag="f883" android:label="@string/dummyLabel" />
+  <attribution android:tag="f884" android:label="@string/dummyLabel" />
+  <attribution android:tag="f885" android:label="@string/dummyLabel" />
+  <attribution android:tag="f886" android:label="@string/dummyLabel" />
+  <attribution android:tag="f887" android:label="@string/dummyLabel" />
+  <attribution android:tag="f888" android:label="@string/dummyLabel" />
+  <attribution android:tag="f889" android:label="@string/dummyLabel" />
+  <attribution android:tag="f890" android:label="@string/dummyLabel" />
+  <attribution android:tag="f891" android:label="@string/dummyLabel" />
+  <attribution android:tag="f892" android:label="@string/dummyLabel" />
+  <attribution android:tag="f893" android:label="@string/dummyLabel" />
+  <attribution android:tag="f894" android:label="@string/dummyLabel" />
+  <attribution android:tag="f895" android:label="@string/dummyLabel" />
+  <attribution android:tag="f896" android:label="@string/dummyLabel" />
+  <attribution android:tag="f897" android:label="@string/dummyLabel" />
+  <attribution android:tag="f898" android:label="@string/dummyLabel" />
+  <attribution android:tag="f899" android:label="@string/dummyLabel" />
+  <attribution android:tag="f900" android:label="@string/dummyLabel" />
+  <attribution android:tag="f901" android:label="@string/dummyLabel" />
+  <attribution android:tag="f902" android:label="@string/dummyLabel" />
+  <attribution android:tag="f903" android:label="@string/dummyLabel" />
+  <attribution android:tag="f904" android:label="@string/dummyLabel" />
+  <attribution android:tag="f905" android:label="@string/dummyLabel" />
+  <attribution android:tag="f906" android:label="@string/dummyLabel" />
+  <attribution android:tag="f907" android:label="@string/dummyLabel" />
+  <attribution android:tag="f908" android:label="@string/dummyLabel" />
+  <attribution android:tag="f909" android:label="@string/dummyLabel" />
+  <attribution android:tag="f910" android:label="@string/dummyLabel" />
+  <attribution android:tag="f911" android:label="@string/dummyLabel" />
+  <attribution android:tag="f912" android:label="@string/dummyLabel" />
+  <attribution android:tag="f913" android:label="@string/dummyLabel" />
+  <attribution android:tag="f914" android:label="@string/dummyLabel" />
+  <attribution android:tag="f915" android:label="@string/dummyLabel" />
+  <attribution android:tag="f916" android:label="@string/dummyLabel" />
+  <attribution android:tag="f917" android:label="@string/dummyLabel" />
+  <attribution android:tag="f918" android:label="@string/dummyLabel" />
+  <attribution android:tag="f919" android:label="@string/dummyLabel" />
+  <attribution android:tag="f920" android:label="@string/dummyLabel" />
+  <attribution android:tag="f921" android:label="@string/dummyLabel" />
+  <attribution android:tag="f922" android:label="@string/dummyLabel" />
+  <attribution android:tag="f923" android:label="@string/dummyLabel" />
+  <attribution android:tag="f924" android:label="@string/dummyLabel" />
+  <attribution android:tag="f925" android:label="@string/dummyLabel" />
+  <attribution android:tag="f926" android:label="@string/dummyLabel" />
+  <attribution android:tag="f927" android:label="@string/dummyLabel" />
+  <attribution android:tag="f928" android:label="@string/dummyLabel" />
+  <attribution android:tag="f929" android:label="@string/dummyLabel" />
+  <attribution android:tag="f930" android:label="@string/dummyLabel" />
+  <attribution android:tag="f931" android:label="@string/dummyLabel" />
+  <attribution android:tag="f932" android:label="@string/dummyLabel" />
+  <attribution android:tag="f933" android:label="@string/dummyLabel" />
+  <attribution android:tag="f934" android:label="@string/dummyLabel" />
+  <attribution android:tag="f935" android:label="@string/dummyLabel" />
+  <attribution android:tag="f936" android:label="@string/dummyLabel" />
+  <attribution android:tag="f937" android:label="@string/dummyLabel" />
+  <attribution android:tag="f938" android:label="@string/dummyLabel" />
+  <attribution android:tag="f939" android:label="@string/dummyLabel" />
+  <attribution android:tag="f940" android:label="@string/dummyLabel" />
+  <attribution android:tag="f941" android:label="@string/dummyLabel" />
+  <attribution android:tag="f942" android:label="@string/dummyLabel" />
+  <attribution android:tag="f943" android:label="@string/dummyLabel" />
+  <attribution android:tag="f944" android:label="@string/dummyLabel" />
+  <attribution android:tag="f945" android:label="@string/dummyLabel" />
+  <attribution android:tag="f946" android:label="@string/dummyLabel" />
+  <attribution android:tag="f947" android:label="@string/dummyLabel" />
+  <attribution android:tag="f948" android:label="@string/dummyLabel" />
+  <attribution android:tag="f949" android:label="@string/dummyLabel" />
+  <attribution android:tag="f950" android:label="@string/dummyLabel" />
+  <attribution android:tag="f951" android:label="@string/dummyLabel" />
+  <attribution android:tag="f952" android:label="@string/dummyLabel" />
+  <attribution android:tag="f953" android:label="@string/dummyLabel" />
+  <attribution android:tag="f954" android:label="@string/dummyLabel" />
+  <attribution android:tag="f955" android:label="@string/dummyLabel" />
+  <attribution android:tag="f956" android:label="@string/dummyLabel" />
+  <attribution android:tag="f957" android:label="@string/dummyLabel" />
+  <attribution android:tag="f958" android:label="@string/dummyLabel" />
+  <attribution android:tag="f959" android:label="@string/dummyLabel" />
+  <attribution android:tag="f960" android:label="@string/dummyLabel" />
+  <attribution android:tag="f961" android:label="@string/dummyLabel" />
+  <attribution android:tag="f962" android:label="@string/dummyLabel" />
+  <attribution android:tag="f963" android:label="@string/dummyLabel" />
+  <attribution android:tag="f964" android:label="@string/dummyLabel" />
+  <attribution android:tag="f965" android:label="@string/dummyLabel" />
+  <attribution android:tag="f966" android:label="@string/dummyLabel" />
+  <attribution android:tag="f967" android:label="@string/dummyLabel" />
+  <attribution android:tag="f968" android:label="@string/dummyLabel" />
+  <attribution android:tag="f969" android:label="@string/dummyLabel" />
+  <attribution android:tag="f970" android:label="@string/dummyLabel" />
+  <attribution android:tag="f971" android:label="@string/dummyLabel" />
+  <attribution android:tag="f972" android:label="@string/dummyLabel" />
+  <attribution android:tag="f973" android:label="@string/dummyLabel" />
+  <attribution android:tag="f974" android:label="@string/dummyLabel" />
+  <attribution android:tag="f975" android:label="@string/dummyLabel" />
+  <attribution android:tag="f976" android:label="@string/dummyLabel" />
+  <attribution android:tag="f977" android:label="@string/dummyLabel" />
+  <attribution android:tag="f978" android:label="@string/dummyLabel" />
+  <attribution android:tag="f979" android:label="@string/dummyLabel" />
+  <attribution android:tag="f980" android:label="@string/dummyLabel" />
+  <attribution android:tag="f981" android:label="@string/dummyLabel" />
+  <attribution android:tag="f982" android:label="@string/dummyLabel" />
+  <attribution android:tag="f983" android:label="@string/dummyLabel" />
+  <attribution android:tag="f984" android:label="@string/dummyLabel" />
+  <attribution android:tag="f985" android:label="@string/dummyLabel" />
+  <attribution android:tag="f986" android:label="@string/dummyLabel" />
+  <attribution android:tag="f987" android:label="@string/dummyLabel" />
+  <attribution android:tag="f988" android:label="@string/dummyLabel" />
+  <attribution android:tag="f989" android:label="@string/dummyLabel" />
+  <attribution android:tag="f990" android:label="@string/dummyLabel" />
+  <attribution android:tag="f991" android:label="@string/dummyLabel" />
+  <attribution android:tag="f992" android:label="@string/dummyLabel" />
+  <attribution android:tag="f993" android:label="@string/dummyLabel" />
+  <attribution android:tag="f994" android:label="@string/dummyLabel" />
+  <attribution android:tag="f995" android:label="@string/dummyLabel" />
+  <attribution android:tag="f996" android:label="@string/dummyLabel" />
+  <attribution android:tag="f997" android:label="@string/dummyLabel" />
+  <attribution android:tag="f998" android:label="@string/dummyLabel" />
+  <attribution android:tag="f999" android:label="@string/dummyLabel" />
+
+  <attribution android:tag="toomany" android:label="@string/dummyLabel" />
+
+  <application />
+
+</manifest>
diff --git a/tests/tests/appop/AppWithTooManyFeatures/res/values/strings.xml b/tests/tests/appop/AppWithTooManyAttributions/res/values/strings.xml
similarity index 100%
rename from tests/tests/appop/AppWithTooManyFeatures/res/values/strings.xml
rename to tests/tests/appop/AppWithTooManyAttributions/res/values/strings.xml
diff --git a/tests/tests/appop/AppWithTooManyFeatures/Android.bp b/tests/tests/appop/AppWithTooManyFeatures/Android.bp
deleted file mode 100644
index bc769d6..0000000
--- a/tests/tests/appop/AppWithTooManyFeatures/Android.bp
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (C) 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.
-
-android_test_helper_app {
-    name: "AppWithTooManyFeatures",
-
-    test_suites: [
-        "cts",
-        "vts",
-        "general-tests",
-    ]
-}
\ No newline at end of file
diff --git a/tests/tests/appop/AppWithTooManyFeatures/AndroidManifest.xml b/tests/tests/appop/AppWithTooManyFeatures/AndroidManifest.xml
deleted file mode 100644
index eeecef7..0000000
--- a/tests/tests/appop/AppWithTooManyFeatures/AndroidManifest.xml
+++ /dev/null
@@ -1,1028 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 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.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.app.appops.cts.appwithtoomanyfeatures">
-
-  <!-- 1000 features are allowed -->
-  <feature android:featureId="f0" android:label="@string/dummyLabel" />
-  <feature android:featureId="f1" android:label="@string/dummyLabel" />
-  <feature android:featureId="f2" android:label="@string/dummyLabel" />
-  <feature android:featureId="f3" android:label="@string/dummyLabel" />
-  <feature android:featureId="f4" android:label="@string/dummyLabel" />
-  <feature android:featureId="f5" android:label="@string/dummyLabel" />
-  <feature android:featureId="f6" android:label="@string/dummyLabel" />
-  <feature android:featureId="f7" android:label="@string/dummyLabel" />
-  <feature android:featureId="f8" android:label="@string/dummyLabel" />
-  <feature android:featureId="f9" android:label="@string/dummyLabel" />
-  <feature android:featureId="f10" android:label="@string/dummyLabel" />
-  <feature android:featureId="f11" android:label="@string/dummyLabel" />
-  <feature android:featureId="f12" android:label="@string/dummyLabel" />
-  <feature android:featureId="f13" android:label="@string/dummyLabel" />
-  <feature android:featureId="f14" android:label="@string/dummyLabel" />
-  <feature android:featureId="f15" android:label="@string/dummyLabel" />
-  <feature android:featureId="f16" android:label="@string/dummyLabel" />
-  <feature android:featureId="f17" android:label="@string/dummyLabel" />
-  <feature android:featureId="f18" android:label="@string/dummyLabel" />
-  <feature android:featureId="f19" android:label="@string/dummyLabel" />
-  <feature android:featureId="f20" android:label="@string/dummyLabel" />
-  <feature android:featureId="f21" android:label="@string/dummyLabel" />
-  <feature android:featureId="f22" android:label="@string/dummyLabel" />
-  <feature android:featureId="f23" android:label="@string/dummyLabel" />
-  <feature android:featureId="f24" android:label="@string/dummyLabel" />
-  <feature android:featureId="f25" android:label="@string/dummyLabel" />
-  <feature android:featureId="f26" android:label="@string/dummyLabel" />
-  <feature android:featureId="f27" android:label="@string/dummyLabel" />
-  <feature android:featureId="f28" android:label="@string/dummyLabel" />
-  <feature android:featureId="f29" android:label="@string/dummyLabel" />
-  <feature android:featureId="f30" android:label="@string/dummyLabel" />
-  <feature android:featureId="f31" android:label="@string/dummyLabel" />
-  <feature android:featureId="f32" android:label="@string/dummyLabel" />
-  <feature android:featureId="f33" android:label="@string/dummyLabel" />
-  <feature android:featureId="f34" android:label="@string/dummyLabel" />
-  <feature android:featureId="f35" android:label="@string/dummyLabel" />
-  <feature android:featureId="f36" android:label="@string/dummyLabel" />
-  <feature android:featureId="f37" android:label="@string/dummyLabel" />
-  <feature android:featureId="f38" android:label="@string/dummyLabel" />
-  <feature android:featureId="f39" android:label="@string/dummyLabel" />
-  <feature android:featureId="f40" android:label="@string/dummyLabel" />
-  <feature android:featureId="f41" android:label="@string/dummyLabel" />
-  <feature android:featureId="f42" android:label="@string/dummyLabel" />
-  <feature android:featureId="f43" android:label="@string/dummyLabel" />
-  <feature android:featureId="f44" android:label="@string/dummyLabel" />
-  <feature android:featureId="f45" android:label="@string/dummyLabel" />
-  <feature android:featureId="f46" android:label="@string/dummyLabel" />
-  <feature android:featureId="f47" android:label="@string/dummyLabel" />
-  <feature android:featureId="f48" android:label="@string/dummyLabel" />
-  <feature android:featureId="f49" android:label="@string/dummyLabel" />
-  <feature android:featureId="f50" android:label="@string/dummyLabel" />
-  <feature android:featureId="f51" android:label="@string/dummyLabel" />
-  <feature android:featureId="f52" android:label="@string/dummyLabel" />
-  <feature android:featureId="f53" android:label="@string/dummyLabel" />
-  <feature android:featureId="f54" android:label="@string/dummyLabel" />
-  <feature android:featureId="f55" android:label="@string/dummyLabel" />
-  <feature android:featureId="f56" android:label="@string/dummyLabel" />
-  <feature android:featureId="f57" android:label="@string/dummyLabel" />
-  <feature android:featureId="f58" android:label="@string/dummyLabel" />
-  <feature android:featureId="f59" android:label="@string/dummyLabel" />
-  <feature android:featureId="f60" android:label="@string/dummyLabel" />
-  <feature android:featureId="f61" android:label="@string/dummyLabel" />
-  <feature android:featureId="f62" android:label="@string/dummyLabel" />
-  <feature android:featureId="f63" android:label="@string/dummyLabel" />
-  <feature android:featureId="f64" android:label="@string/dummyLabel" />
-  <feature android:featureId="f65" android:label="@string/dummyLabel" />
-  <feature android:featureId="f66" android:label="@string/dummyLabel" />
-  <feature android:featureId="f67" android:label="@string/dummyLabel" />
-  <feature android:featureId="f68" android:label="@string/dummyLabel" />
-  <feature android:featureId="f69" android:label="@string/dummyLabel" />
-  <feature android:featureId="f70" android:label="@string/dummyLabel" />
-  <feature android:featureId="f71" android:label="@string/dummyLabel" />
-  <feature android:featureId="f72" android:label="@string/dummyLabel" />
-  <feature android:featureId="f73" android:label="@string/dummyLabel" />
-  <feature android:featureId="f74" android:label="@string/dummyLabel" />
-  <feature android:featureId="f75" android:label="@string/dummyLabel" />
-  <feature android:featureId="f76" android:label="@string/dummyLabel" />
-  <feature android:featureId="f77" android:label="@string/dummyLabel" />
-  <feature android:featureId="f78" android:label="@string/dummyLabel" />
-  <feature android:featureId="f79" android:label="@string/dummyLabel" />
-  <feature android:featureId="f80" android:label="@string/dummyLabel" />
-  <feature android:featureId="f81" android:label="@string/dummyLabel" />
-  <feature android:featureId="f82" android:label="@string/dummyLabel" />
-  <feature android:featureId="f83" android:label="@string/dummyLabel" />
-  <feature android:featureId="f84" android:label="@string/dummyLabel" />
-  <feature android:featureId="f85" android:label="@string/dummyLabel" />
-  <feature android:featureId="f86" android:label="@string/dummyLabel" />
-  <feature android:featureId="f87" android:label="@string/dummyLabel" />
-  <feature android:featureId="f88" android:label="@string/dummyLabel" />
-  <feature android:featureId="f89" android:label="@string/dummyLabel" />
-  <feature android:featureId="f90" android:label="@string/dummyLabel" />
-  <feature android:featureId="f91" android:label="@string/dummyLabel" />
-  <feature android:featureId="f92" android:label="@string/dummyLabel" />
-  <feature android:featureId="f93" android:label="@string/dummyLabel" />
-  <feature android:featureId="f94" android:label="@string/dummyLabel" />
-  <feature android:featureId="f95" android:label="@string/dummyLabel" />
-  <feature android:featureId="f96" android:label="@string/dummyLabel" />
-  <feature android:featureId="f97" android:label="@string/dummyLabel" />
-  <feature android:featureId="f98" android:label="@string/dummyLabel" />
-  <feature android:featureId="f99" android:label="@string/dummyLabel" />
-  <feature android:featureId="f100" android:label="@string/dummyLabel" />
-  <feature android:featureId="f101" android:label="@string/dummyLabel" />
-  <feature android:featureId="f102" android:label="@string/dummyLabel" />
-  <feature android:featureId="f103" android:label="@string/dummyLabel" />
-  <feature android:featureId="f104" android:label="@string/dummyLabel" />
-  <feature android:featureId="f105" android:label="@string/dummyLabel" />
-  <feature android:featureId="f106" android:label="@string/dummyLabel" />
-  <feature android:featureId="f107" android:label="@string/dummyLabel" />
-  <feature android:featureId="f108" android:label="@string/dummyLabel" />
-  <feature android:featureId="f109" android:label="@string/dummyLabel" />
-  <feature android:featureId="f110" android:label="@string/dummyLabel" />
-  <feature android:featureId="f111" android:label="@string/dummyLabel" />
-  <feature android:featureId="f112" android:label="@string/dummyLabel" />
-  <feature android:featureId="f113" android:label="@string/dummyLabel" />
-  <feature android:featureId="f114" android:label="@string/dummyLabel" />
-  <feature android:featureId="f115" android:label="@string/dummyLabel" />
-  <feature android:featureId="f116" android:label="@string/dummyLabel" />
-  <feature android:featureId="f117" android:label="@string/dummyLabel" />
-  <feature android:featureId="f118" android:label="@string/dummyLabel" />
-  <feature android:featureId="f119" android:label="@string/dummyLabel" />
-  <feature android:featureId="f120" android:label="@string/dummyLabel" />
-  <feature android:featureId="f121" android:label="@string/dummyLabel" />
-  <feature android:featureId="f122" android:label="@string/dummyLabel" />
-  <feature android:featureId="f123" android:label="@string/dummyLabel" />
-  <feature android:featureId="f124" android:label="@string/dummyLabel" />
-  <feature android:featureId="f125" android:label="@string/dummyLabel" />
-  <feature android:featureId="f126" android:label="@string/dummyLabel" />
-  <feature android:featureId="f127" android:label="@string/dummyLabel" />
-  <feature android:featureId="f128" android:label="@string/dummyLabel" />
-  <feature android:featureId="f129" android:label="@string/dummyLabel" />
-  <feature android:featureId="f130" android:label="@string/dummyLabel" />
-  <feature android:featureId="f131" android:label="@string/dummyLabel" />
-  <feature android:featureId="f132" android:label="@string/dummyLabel" />
-  <feature android:featureId="f133" android:label="@string/dummyLabel" />
-  <feature android:featureId="f134" android:label="@string/dummyLabel" />
-  <feature android:featureId="f135" android:label="@string/dummyLabel" />
-  <feature android:featureId="f136" android:label="@string/dummyLabel" />
-  <feature android:featureId="f137" android:label="@string/dummyLabel" />
-  <feature android:featureId="f138" android:label="@string/dummyLabel" />
-  <feature android:featureId="f139" android:label="@string/dummyLabel" />
-  <feature android:featureId="f140" android:label="@string/dummyLabel" />
-  <feature android:featureId="f141" android:label="@string/dummyLabel" />
-  <feature android:featureId="f142" android:label="@string/dummyLabel" />
-  <feature android:featureId="f143" android:label="@string/dummyLabel" />
-  <feature android:featureId="f144" android:label="@string/dummyLabel" />
-  <feature android:featureId="f145" android:label="@string/dummyLabel" />
-  <feature android:featureId="f146" android:label="@string/dummyLabel" />
-  <feature android:featureId="f147" android:label="@string/dummyLabel" />
-  <feature android:featureId="f148" android:label="@string/dummyLabel" />
-  <feature android:featureId="f149" android:label="@string/dummyLabel" />
-  <feature android:featureId="f150" android:label="@string/dummyLabel" />
-  <feature android:featureId="f151" android:label="@string/dummyLabel" />
-  <feature android:featureId="f152" android:label="@string/dummyLabel" />
-  <feature android:featureId="f153" android:label="@string/dummyLabel" />
-  <feature android:featureId="f154" android:label="@string/dummyLabel" />
-  <feature android:featureId="f155" android:label="@string/dummyLabel" />
-  <feature android:featureId="f156" android:label="@string/dummyLabel" />
-  <feature android:featureId="f157" android:label="@string/dummyLabel" />
-  <feature android:featureId="f158" android:label="@string/dummyLabel" />
-  <feature android:featureId="f159" android:label="@string/dummyLabel" />
-  <feature android:featureId="f160" android:label="@string/dummyLabel" />
-  <feature android:featureId="f161" android:label="@string/dummyLabel" />
-  <feature android:featureId="f162" android:label="@string/dummyLabel" />
-  <feature android:featureId="f163" android:label="@string/dummyLabel" />
-  <feature android:featureId="f164" android:label="@string/dummyLabel" />
-  <feature android:featureId="f165" android:label="@string/dummyLabel" />
-  <feature android:featureId="f166" android:label="@string/dummyLabel" />
-  <feature android:featureId="f167" android:label="@string/dummyLabel" />
-  <feature android:featureId="f168" android:label="@string/dummyLabel" />
-  <feature android:featureId="f169" android:label="@string/dummyLabel" />
-  <feature android:featureId="f170" android:label="@string/dummyLabel" />
-  <feature android:featureId="f171" android:label="@string/dummyLabel" />
-  <feature android:featureId="f172" android:label="@string/dummyLabel" />
-  <feature android:featureId="f173" android:label="@string/dummyLabel" />
-  <feature android:featureId="f174" android:label="@string/dummyLabel" />
-  <feature android:featureId="f175" android:label="@string/dummyLabel" />
-  <feature android:featureId="f176" android:label="@string/dummyLabel" />
-  <feature android:featureId="f177" android:label="@string/dummyLabel" />
-  <feature android:featureId="f178" android:label="@string/dummyLabel" />
-  <feature android:featureId="f179" android:label="@string/dummyLabel" />
-  <feature android:featureId="f180" android:label="@string/dummyLabel" />
-  <feature android:featureId="f181" android:label="@string/dummyLabel" />
-  <feature android:featureId="f182" android:label="@string/dummyLabel" />
-  <feature android:featureId="f183" android:label="@string/dummyLabel" />
-  <feature android:featureId="f184" android:label="@string/dummyLabel" />
-  <feature android:featureId="f185" android:label="@string/dummyLabel" />
-  <feature android:featureId="f186" android:label="@string/dummyLabel" />
-  <feature android:featureId="f187" android:label="@string/dummyLabel" />
-  <feature android:featureId="f188" android:label="@string/dummyLabel" />
-  <feature android:featureId="f189" android:label="@string/dummyLabel" />
-  <feature android:featureId="f190" android:label="@string/dummyLabel" />
-  <feature android:featureId="f191" android:label="@string/dummyLabel" />
-  <feature android:featureId="f192" android:label="@string/dummyLabel" />
-  <feature android:featureId="f193" android:label="@string/dummyLabel" />
-  <feature android:featureId="f194" android:label="@string/dummyLabel" />
-  <feature android:featureId="f195" android:label="@string/dummyLabel" />
-  <feature android:featureId="f196" android:label="@string/dummyLabel" />
-  <feature android:featureId="f197" android:label="@string/dummyLabel" />
-  <feature android:featureId="f198" android:label="@string/dummyLabel" />
-  <feature android:featureId="f199" android:label="@string/dummyLabel" />
-  <feature android:featureId="f200" android:label="@string/dummyLabel" />
-  <feature android:featureId="f201" android:label="@string/dummyLabel" />
-  <feature android:featureId="f202" android:label="@string/dummyLabel" />
-  <feature android:featureId="f203" android:label="@string/dummyLabel" />
-  <feature android:featureId="f204" android:label="@string/dummyLabel" />
-  <feature android:featureId="f205" android:label="@string/dummyLabel" />
-  <feature android:featureId="f206" android:label="@string/dummyLabel" />
-  <feature android:featureId="f207" android:label="@string/dummyLabel" />
-  <feature android:featureId="f208" android:label="@string/dummyLabel" />
-  <feature android:featureId="f209" android:label="@string/dummyLabel" />
-  <feature android:featureId="f210" android:label="@string/dummyLabel" />
-  <feature android:featureId="f211" android:label="@string/dummyLabel" />
-  <feature android:featureId="f212" android:label="@string/dummyLabel" />
-  <feature android:featureId="f213" android:label="@string/dummyLabel" />
-  <feature android:featureId="f214" android:label="@string/dummyLabel" />
-  <feature android:featureId="f215" android:label="@string/dummyLabel" />
-  <feature android:featureId="f216" android:label="@string/dummyLabel" />
-  <feature android:featureId="f217" android:label="@string/dummyLabel" />
-  <feature android:featureId="f218" android:label="@string/dummyLabel" />
-  <feature android:featureId="f219" android:label="@string/dummyLabel" />
-  <feature android:featureId="f220" android:label="@string/dummyLabel" />
-  <feature android:featureId="f221" android:label="@string/dummyLabel" />
-  <feature android:featureId="f222" android:label="@string/dummyLabel" />
-  <feature android:featureId="f223" android:label="@string/dummyLabel" />
-  <feature android:featureId="f224" android:label="@string/dummyLabel" />
-  <feature android:featureId="f225" android:label="@string/dummyLabel" />
-  <feature android:featureId="f226" android:label="@string/dummyLabel" />
-  <feature android:featureId="f227" android:label="@string/dummyLabel" />
-  <feature android:featureId="f228" android:label="@string/dummyLabel" />
-  <feature android:featureId="f229" android:label="@string/dummyLabel" />
-  <feature android:featureId="f230" android:label="@string/dummyLabel" />
-  <feature android:featureId="f231" android:label="@string/dummyLabel" />
-  <feature android:featureId="f232" android:label="@string/dummyLabel" />
-  <feature android:featureId="f233" android:label="@string/dummyLabel" />
-  <feature android:featureId="f234" android:label="@string/dummyLabel" />
-  <feature android:featureId="f235" android:label="@string/dummyLabel" />
-  <feature android:featureId="f236" android:label="@string/dummyLabel" />
-  <feature android:featureId="f237" android:label="@string/dummyLabel" />
-  <feature android:featureId="f238" android:label="@string/dummyLabel" />
-  <feature android:featureId="f239" android:label="@string/dummyLabel" />
-  <feature android:featureId="f240" android:label="@string/dummyLabel" />
-  <feature android:featureId="f241" android:label="@string/dummyLabel" />
-  <feature android:featureId="f242" android:label="@string/dummyLabel" />
-  <feature android:featureId="f243" android:label="@string/dummyLabel" />
-  <feature android:featureId="f244" android:label="@string/dummyLabel" />
-  <feature android:featureId="f245" android:label="@string/dummyLabel" />
-  <feature android:featureId="f246" android:label="@string/dummyLabel" />
-  <feature android:featureId="f247" android:label="@string/dummyLabel" />
-  <feature android:featureId="f248" android:label="@string/dummyLabel" />
-  <feature android:featureId="f249" android:label="@string/dummyLabel" />
-  <feature android:featureId="f250" android:label="@string/dummyLabel" />
-  <feature android:featureId="f251" android:label="@string/dummyLabel" />
-  <feature android:featureId="f252" android:label="@string/dummyLabel" />
-  <feature android:featureId="f253" android:label="@string/dummyLabel" />
-  <feature android:featureId="f254" android:label="@string/dummyLabel" />
-  <feature android:featureId="f255" android:label="@string/dummyLabel" />
-  <feature android:featureId="f256" android:label="@string/dummyLabel" />
-  <feature android:featureId="f257" android:label="@string/dummyLabel" />
-  <feature android:featureId="f258" android:label="@string/dummyLabel" />
-  <feature android:featureId="f259" android:label="@string/dummyLabel" />
-  <feature android:featureId="f260" android:label="@string/dummyLabel" />
-  <feature android:featureId="f261" android:label="@string/dummyLabel" />
-  <feature android:featureId="f262" android:label="@string/dummyLabel" />
-  <feature android:featureId="f263" android:label="@string/dummyLabel" />
-  <feature android:featureId="f264" android:label="@string/dummyLabel" />
-  <feature android:featureId="f265" android:label="@string/dummyLabel" />
-  <feature android:featureId="f266" android:label="@string/dummyLabel" />
-  <feature android:featureId="f267" android:label="@string/dummyLabel" />
-  <feature android:featureId="f268" android:label="@string/dummyLabel" />
-  <feature android:featureId="f269" android:label="@string/dummyLabel" />
-  <feature android:featureId="f270" android:label="@string/dummyLabel" />
-  <feature android:featureId="f271" android:label="@string/dummyLabel" />
-  <feature android:featureId="f272" android:label="@string/dummyLabel" />
-  <feature android:featureId="f273" android:label="@string/dummyLabel" />
-  <feature android:featureId="f274" android:label="@string/dummyLabel" />
-  <feature android:featureId="f275" android:label="@string/dummyLabel" />
-  <feature android:featureId="f276" android:label="@string/dummyLabel" />
-  <feature android:featureId="f277" android:label="@string/dummyLabel" />
-  <feature android:featureId="f278" android:label="@string/dummyLabel" />
-  <feature android:featureId="f279" android:label="@string/dummyLabel" />
-  <feature android:featureId="f280" android:label="@string/dummyLabel" />
-  <feature android:featureId="f281" android:label="@string/dummyLabel" />
-  <feature android:featureId="f282" android:label="@string/dummyLabel" />
-  <feature android:featureId="f283" android:label="@string/dummyLabel" />
-  <feature android:featureId="f284" android:label="@string/dummyLabel" />
-  <feature android:featureId="f285" android:label="@string/dummyLabel" />
-  <feature android:featureId="f286" android:label="@string/dummyLabel" />
-  <feature android:featureId="f287" android:label="@string/dummyLabel" />
-  <feature android:featureId="f288" android:label="@string/dummyLabel" />
-  <feature android:featureId="f289" android:label="@string/dummyLabel" />
-  <feature android:featureId="f290" android:label="@string/dummyLabel" />
-  <feature android:featureId="f291" android:label="@string/dummyLabel" />
-  <feature android:featureId="f292" android:label="@string/dummyLabel" />
-  <feature android:featureId="f293" android:label="@string/dummyLabel" />
-  <feature android:featureId="f294" android:label="@string/dummyLabel" />
-  <feature android:featureId="f295" android:label="@string/dummyLabel" />
-  <feature android:featureId="f296" android:label="@string/dummyLabel" />
-  <feature android:featureId="f297" android:label="@string/dummyLabel" />
-  <feature android:featureId="f298" android:label="@string/dummyLabel" />
-  <feature android:featureId="f299" android:label="@string/dummyLabel" />
-  <feature android:featureId="f300" android:label="@string/dummyLabel" />
-  <feature android:featureId="f301" android:label="@string/dummyLabel" />
-  <feature android:featureId="f302" android:label="@string/dummyLabel" />
-  <feature android:featureId="f303" android:label="@string/dummyLabel" />
-  <feature android:featureId="f304" android:label="@string/dummyLabel" />
-  <feature android:featureId="f305" android:label="@string/dummyLabel" />
-  <feature android:featureId="f306" android:label="@string/dummyLabel" />
-  <feature android:featureId="f307" android:label="@string/dummyLabel" />
-  <feature android:featureId="f308" android:label="@string/dummyLabel" />
-  <feature android:featureId="f309" android:label="@string/dummyLabel" />
-  <feature android:featureId="f310" android:label="@string/dummyLabel" />
-  <feature android:featureId="f311" android:label="@string/dummyLabel" />
-  <feature android:featureId="f312" android:label="@string/dummyLabel" />
-  <feature android:featureId="f313" android:label="@string/dummyLabel" />
-  <feature android:featureId="f314" android:label="@string/dummyLabel" />
-  <feature android:featureId="f315" android:label="@string/dummyLabel" />
-  <feature android:featureId="f316" android:label="@string/dummyLabel" />
-  <feature android:featureId="f317" android:label="@string/dummyLabel" />
-  <feature android:featureId="f318" android:label="@string/dummyLabel" />
-  <feature android:featureId="f319" android:label="@string/dummyLabel" />
-  <feature android:featureId="f320" android:label="@string/dummyLabel" />
-  <feature android:featureId="f321" android:label="@string/dummyLabel" />
-  <feature android:featureId="f322" android:label="@string/dummyLabel" />
-  <feature android:featureId="f323" android:label="@string/dummyLabel" />
-  <feature android:featureId="f324" android:label="@string/dummyLabel" />
-  <feature android:featureId="f325" android:label="@string/dummyLabel" />
-  <feature android:featureId="f326" android:label="@string/dummyLabel" />
-  <feature android:featureId="f327" android:label="@string/dummyLabel" />
-  <feature android:featureId="f328" android:label="@string/dummyLabel" />
-  <feature android:featureId="f329" android:label="@string/dummyLabel" />
-  <feature android:featureId="f330" android:label="@string/dummyLabel" />
-  <feature android:featureId="f331" android:label="@string/dummyLabel" />
-  <feature android:featureId="f332" android:label="@string/dummyLabel" />
-  <feature android:featureId="f333" android:label="@string/dummyLabel" />
-  <feature android:featureId="f334" android:label="@string/dummyLabel" />
-  <feature android:featureId="f335" android:label="@string/dummyLabel" />
-  <feature android:featureId="f336" android:label="@string/dummyLabel" />
-  <feature android:featureId="f337" android:label="@string/dummyLabel" />
-  <feature android:featureId="f338" android:label="@string/dummyLabel" />
-  <feature android:featureId="f339" android:label="@string/dummyLabel" />
-  <feature android:featureId="f340" android:label="@string/dummyLabel" />
-  <feature android:featureId="f341" android:label="@string/dummyLabel" />
-  <feature android:featureId="f342" android:label="@string/dummyLabel" />
-  <feature android:featureId="f343" android:label="@string/dummyLabel" />
-  <feature android:featureId="f344" android:label="@string/dummyLabel" />
-  <feature android:featureId="f345" android:label="@string/dummyLabel" />
-  <feature android:featureId="f346" android:label="@string/dummyLabel" />
-  <feature android:featureId="f347" android:label="@string/dummyLabel" />
-  <feature android:featureId="f348" android:label="@string/dummyLabel" />
-  <feature android:featureId="f349" android:label="@string/dummyLabel" />
-  <feature android:featureId="f350" android:label="@string/dummyLabel" />
-  <feature android:featureId="f351" android:label="@string/dummyLabel" />
-  <feature android:featureId="f352" android:label="@string/dummyLabel" />
-  <feature android:featureId="f353" android:label="@string/dummyLabel" />
-  <feature android:featureId="f354" android:label="@string/dummyLabel" />
-  <feature android:featureId="f355" android:label="@string/dummyLabel" />
-  <feature android:featureId="f356" android:label="@string/dummyLabel" />
-  <feature android:featureId="f357" android:label="@string/dummyLabel" />
-  <feature android:featureId="f358" android:label="@string/dummyLabel" />
-  <feature android:featureId="f359" android:label="@string/dummyLabel" />
-  <feature android:featureId="f360" android:label="@string/dummyLabel" />
-  <feature android:featureId="f361" android:label="@string/dummyLabel" />
-  <feature android:featureId="f362" android:label="@string/dummyLabel" />
-  <feature android:featureId="f363" android:label="@string/dummyLabel" />
-  <feature android:featureId="f364" android:label="@string/dummyLabel" />
-  <feature android:featureId="f365" android:label="@string/dummyLabel" />
-  <feature android:featureId="f366" android:label="@string/dummyLabel" />
-  <feature android:featureId="f367" android:label="@string/dummyLabel" />
-  <feature android:featureId="f368" android:label="@string/dummyLabel" />
-  <feature android:featureId="f369" android:label="@string/dummyLabel" />
-  <feature android:featureId="f370" android:label="@string/dummyLabel" />
-  <feature android:featureId="f371" android:label="@string/dummyLabel" />
-  <feature android:featureId="f372" android:label="@string/dummyLabel" />
-  <feature android:featureId="f373" android:label="@string/dummyLabel" />
-  <feature android:featureId="f374" android:label="@string/dummyLabel" />
-  <feature android:featureId="f375" android:label="@string/dummyLabel" />
-  <feature android:featureId="f376" android:label="@string/dummyLabel" />
-  <feature android:featureId="f377" android:label="@string/dummyLabel" />
-  <feature android:featureId="f378" android:label="@string/dummyLabel" />
-  <feature android:featureId="f379" android:label="@string/dummyLabel" />
-  <feature android:featureId="f380" android:label="@string/dummyLabel" />
-  <feature android:featureId="f381" android:label="@string/dummyLabel" />
-  <feature android:featureId="f382" android:label="@string/dummyLabel" />
-  <feature android:featureId="f383" android:label="@string/dummyLabel" />
-  <feature android:featureId="f384" android:label="@string/dummyLabel" />
-  <feature android:featureId="f385" android:label="@string/dummyLabel" />
-  <feature android:featureId="f386" android:label="@string/dummyLabel" />
-  <feature android:featureId="f387" android:label="@string/dummyLabel" />
-  <feature android:featureId="f388" android:label="@string/dummyLabel" />
-  <feature android:featureId="f389" android:label="@string/dummyLabel" />
-  <feature android:featureId="f390" android:label="@string/dummyLabel" />
-  <feature android:featureId="f391" android:label="@string/dummyLabel" />
-  <feature android:featureId="f392" android:label="@string/dummyLabel" />
-  <feature android:featureId="f393" android:label="@string/dummyLabel" />
-  <feature android:featureId="f394" android:label="@string/dummyLabel" />
-  <feature android:featureId="f395" android:label="@string/dummyLabel" />
-  <feature android:featureId="f396" android:label="@string/dummyLabel" />
-  <feature android:featureId="f397" android:label="@string/dummyLabel" />
-  <feature android:featureId="f398" android:label="@string/dummyLabel" />
-  <feature android:featureId="f399" android:label="@string/dummyLabel" />
-  <feature android:featureId="f400" android:label="@string/dummyLabel" />
-  <feature android:featureId="f401" android:label="@string/dummyLabel" />
-  <feature android:featureId="f402" android:label="@string/dummyLabel" />
-  <feature android:featureId="f403" android:label="@string/dummyLabel" />
-  <feature android:featureId="f404" android:label="@string/dummyLabel" />
-  <feature android:featureId="f405" android:label="@string/dummyLabel" />
-  <feature android:featureId="f406" android:label="@string/dummyLabel" />
-  <feature android:featureId="f407" android:label="@string/dummyLabel" />
-  <feature android:featureId="f408" android:label="@string/dummyLabel" />
-  <feature android:featureId="f409" android:label="@string/dummyLabel" />
-  <feature android:featureId="f410" android:label="@string/dummyLabel" />
-  <feature android:featureId="f411" android:label="@string/dummyLabel" />
-  <feature android:featureId="f412" android:label="@string/dummyLabel" />
-  <feature android:featureId="f413" android:label="@string/dummyLabel" />
-  <feature android:featureId="f414" android:label="@string/dummyLabel" />
-  <feature android:featureId="f415" android:label="@string/dummyLabel" />
-  <feature android:featureId="f416" android:label="@string/dummyLabel" />
-  <feature android:featureId="f417" android:label="@string/dummyLabel" />
-  <feature android:featureId="f418" android:label="@string/dummyLabel" />
-  <feature android:featureId="f419" android:label="@string/dummyLabel" />
-  <feature android:featureId="f420" android:label="@string/dummyLabel" />
-  <feature android:featureId="f421" android:label="@string/dummyLabel" />
-  <feature android:featureId="f422" android:label="@string/dummyLabel" />
-  <feature android:featureId="f423" android:label="@string/dummyLabel" />
-  <feature android:featureId="f424" android:label="@string/dummyLabel" />
-  <feature android:featureId="f425" android:label="@string/dummyLabel" />
-  <feature android:featureId="f426" android:label="@string/dummyLabel" />
-  <feature android:featureId="f427" android:label="@string/dummyLabel" />
-  <feature android:featureId="f428" android:label="@string/dummyLabel" />
-  <feature android:featureId="f429" android:label="@string/dummyLabel" />
-  <feature android:featureId="f430" android:label="@string/dummyLabel" />
-  <feature android:featureId="f431" android:label="@string/dummyLabel" />
-  <feature android:featureId="f432" android:label="@string/dummyLabel" />
-  <feature android:featureId="f433" android:label="@string/dummyLabel" />
-  <feature android:featureId="f434" android:label="@string/dummyLabel" />
-  <feature android:featureId="f435" android:label="@string/dummyLabel" />
-  <feature android:featureId="f436" android:label="@string/dummyLabel" />
-  <feature android:featureId="f437" android:label="@string/dummyLabel" />
-  <feature android:featureId="f438" android:label="@string/dummyLabel" />
-  <feature android:featureId="f439" android:label="@string/dummyLabel" />
-  <feature android:featureId="f440" android:label="@string/dummyLabel" />
-  <feature android:featureId="f441" android:label="@string/dummyLabel" />
-  <feature android:featureId="f442" android:label="@string/dummyLabel" />
-  <feature android:featureId="f443" android:label="@string/dummyLabel" />
-  <feature android:featureId="f444" android:label="@string/dummyLabel" />
-  <feature android:featureId="f445" android:label="@string/dummyLabel" />
-  <feature android:featureId="f446" android:label="@string/dummyLabel" />
-  <feature android:featureId="f447" android:label="@string/dummyLabel" />
-  <feature android:featureId="f448" android:label="@string/dummyLabel" />
-  <feature android:featureId="f449" android:label="@string/dummyLabel" />
-  <feature android:featureId="f450" android:label="@string/dummyLabel" />
-  <feature android:featureId="f451" android:label="@string/dummyLabel" />
-  <feature android:featureId="f452" android:label="@string/dummyLabel" />
-  <feature android:featureId="f453" android:label="@string/dummyLabel" />
-  <feature android:featureId="f454" android:label="@string/dummyLabel" />
-  <feature android:featureId="f455" android:label="@string/dummyLabel" />
-  <feature android:featureId="f456" android:label="@string/dummyLabel" />
-  <feature android:featureId="f457" android:label="@string/dummyLabel" />
-  <feature android:featureId="f458" android:label="@string/dummyLabel" />
-  <feature android:featureId="f459" android:label="@string/dummyLabel" />
-  <feature android:featureId="f460" android:label="@string/dummyLabel" />
-  <feature android:featureId="f461" android:label="@string/dummyLabel" />
-  <feature android:featureId="f462" android:label="@string/dummyLabel" />
-  <feature android:featureId="f463" android:label="@string/dummyLabel" />
-  <feature android:featureId="f464" android:label="@string/dummyLabel" />
-  <feature android:featureId="f465" android:label="@string/dummyLabel" />
-  <feature android:featureId="f466" android:label="@string/dummyLabel" />
-  <feature android:featureId="f467" android:label="@string/dummyLabel" />
-  <feature android:featureId="f468" android:label="@string/dummyLabel" />
-  <feature android:featureId="f469" android:label="@string/dummyLabel" />
-  <feature android:featureId="f470" android:label="@string/dummyLabel" />
-  <feature android:featureId="f471" android:label="@string/dummyLabel" />
-  <feature android:featureId="f472" android:label="@string/dummyLabel" />
-  <feature android:featureId="f473" android:label="@string/dummyLabel" />
-  <feature android:featureId="f474" android:label="@string/dummyLabel" />
-  <feature android:featureId="f475" android:label="@string/dummyLabel" />
-  <feature android:featureId="f476" android:label="@string/dummyLabel" />
-  <feature android:featureId="f477" android:label="@string/dummyLabel" />
-  <feature android:featureId="f478" android:label="@string/dummyLabel" />
-  <feature android:featureId="f479" android:label="@string/dummyLabel" />
-  <feature android:featureId="f480" android:label="@string/dummyLabel" />
-  <feature android:featureId="f481" android:label="@string/dummyLabel" />
-  <feature android:featureId="f482" android:label="@string/dummyLabel" />
-  <feature android:featureId="f483" android:label="@string/dummyLabel" />
-  <feature android:featureId="f484" android:label="@string/dummyLabel" />
-  <feature android:featureId="f485" android:label="@string/dummyLabel" />
-  <feature android:featureId="f486" android:label="@string/dummyLabel" />
-  <feature android:featureId="f487" android:label="@string/dummyLabel" />
-  <feature android:featureId="f488" android:label="@string/dummyLabel" />
-  <feature android:featureId="f489" android:label="@string/dummyLabel" />
-  <feature android:featureId="f490" android:label="@string/dummyLabel" />
-  <feature android:featureId="f491" android:label="@string/dummyLabel" />
-  <feature android:featureId="f492" android:label="@string/dummyLabel" />
-  <feature android:featureId="f493" android:label="@string/dummyLabel" />
-  <feature android:featureId="f494" android:label="@string/dummyLabel" />
-  <feature android:featureId="f495" android:label="@string/dummyLabel" />
-  <feature android:featureId="f496" android:label="@string/dummyLabel" />
-  <feature android:featureId="f497" android:label="@string/dummyLabel" />
-  <feature android:featureId="f498" android:label="@string/dummyLabel" />
-  <feature android:featureId="f499" android:label="@string/dummyLabel" />
-  <feature android:featureId="f500" android:label="@string/dummyLabel" />
-  <feature android:featureId="f501" android:label="@string/dummyLabel" />
-  <feature android:featureId="f502" android:label="@string/dummyLabel" />
-  <feature android:featureId="f503" android:label="@string/dummyLabel" />
-  <feature android:featureId="f504" android:label="@string/dummyLabel" />
-  <feature android:featureId="f505" android:label="@string/dummyLabel" />
-  <feature android:featureId="f506" android:label="@string/dummyLabel" />
-  <feature android:featureId="f507" android:label="@string/dummyLabel" />
-  <feature android:featureId="f508" android:label="@string/dummyLabel" />
-  <feature android:featureId="f509" android:label="@string/dummyLabel" />
-  <feature android:featureId="f510" android:label="@string/dummyLabel" />
-  <feature android:featureId="f511" android:label="@string/dummyLabel" />
-  <feature android:featureId="f512" android:label="@string/dummyLabel" />
-  <feature android:featureId="f513" android:label="@string/dummyLabel" />
-  <feature android:featureId="f514" android:label="@string/dummyLabel" />
-  <feature android:featureId="f515" android:label="@string/dummyLabel" />
-  <feature android:featureId="f516" android:label="@string/dummyLabel" />
-  <feature android:featureId="f517" android:label="@string/dummyLabel" />
-  <feature android:featureId="f518" android:label="@string/dummyLabel" />
-  <feature android:featureId="f519" android:label="@string/dummyLabel" />
-  <feature android:featureId="f520" android:label="@string/dummyLabel" />
-  <feature android:featureId="f521" android:label="@string/dummyLabel" />
-  <feature android:featureId="f522" android:label="@string/dummyLabel" />
-  <feature android:featureId="f523" android:label="@string/dummyLabel" />
-  <feature android:featureId="f524" android:label="@string/dummyLabel" />
-  <feature android:featureId="f525" android:label="@string/dummyLabel" />
-  <feature android:featureId="f526" android:label="@string/dummyLabel" />
-  <feature android:featureId="f527" android:label="@string/dummyLabel" />
-  <feature android:featureId="f528" android:label="@string/dummyLabel" />
-  <feature android:featureId="f529" android:label="@string/dummyLabel" />
-  <feature android:featureId="f530" android:label="@string/dummyLabel" />
-  <feature android:featureId="f531" android:label="@string/dummyLabel" />
-  <feature android:featureId="f532" android:label="@string/dummyLabel" />
-  <feature android:featureId="f533" android:label="@string/dummyLabel" />
-  <feature android:featureId="f534" android:label="@string/dummyLabel" />
-  <feature android:featureId="f535" android:label="@string/dummyLabel" />
-  <feature android:featureId="f536" android:label="@string/dummyLabel" />
-  <feature android:featureId="f537" android:label="@string/dummyLabel" />
-  <feature android:featureId="f538" android:label="@string/dummyLabel" />
-  <feature android:featureId="f539" android:label="@string/dummyLabel" />
-  <feature android:featureId="f540" android:label="@string/dummyLabel" />
-  <feature android:featureId="f541" android:label="@string/dummyLabel" />
-  <feature android:featureId="f542" android:label="@string/dummyLabel" />
-  <feature android:featureId="f543" android:label="@string/dummyLabel" />
-  <feature android:featureId="f544" android:label="@string/dummyLabel" />
-  <feature android:featureId="f545" android:label="@string/dummyLabel" />
-  <feature android:featureId="f546" android:label="@string/dummyLabel" />
-  <feature android:featureId="f547" android:label="@string/dummyLabel" />
-  <feature android:featureId="f548" android:label="@string/dummyLabel" />
-  <feature android:featureId="f549" android:label="@string/dummyLabel" />
-  <feature android:featureId="f550" android:label="@string/dummyLabel" />
-  <feature android:featureId="f551" android:label="@string/dummyLabel" />
-  <feature android:featureId="f552" android:label="@string/dummyLabel" />
-  <feature android:featureId="f553" android:label="@string/dummyLabel" />
-  <feature android:featureId="f554" android:label="@string/dummyLabel" />
-  <feature android:featureId="f555" android:label="@string/dummyLabel" />
-  <feature android:featureId="f556" android:label="@string/dummyLabel" />
-  <feature android:featureId="f557" android:label="@string/dummyLabel" />
-  <feature android:featureId="f558" android:label="@string/dummyLabel" />
-  <feature android:featureId="f559" android:label="@string/dummyLabel" />
-  <feature android:featureId="f560" android:label="@string/dummyLabel" />
-  <feature android:featureId="f561" android:label="@string/dummyLabel" />
-  <feature android:featureId="f562" android:label="@string/dummyLabel" />
-  <feature android:featureId="f563" android:label="@string/dummyLabel" />
-  <feature android:featureId="f564" android:label="@string/dummyLabel" />
-  <feature android:featureId="f565" android:label="@string/dummyLabel" />
-  <feature android:featureId="f566" android:label="@string/dummyLabel" />
-  <feature android:featureId="f567" android:label="@string/dummyLabel" />
-  <feature android:featureId="f568" android:label="@string/dummyLabel" />
-  <feature android:featureId="f569" android:label="@string/dummyLabel" />
-  <feature android:featureId="f570" android:label="@string/dummyLabel" />
-  <feature android:featureId="f571" android:label="@string/dummyLabel" />
-  <feature android:featureId="f572" android:label="@string/dummyLabel" />
-  <feature android:featureId="f573" android:label="@string/dummyLabel" />
-  <feature android:featureId="f574" android:label="@string/dummyLabel" />
-  <feature android:featureId="f575" android:label="@string/dummyLabel" />
-  <feature android:featureId="f576" android:label="@string/dummyLabel" />
-  <feature android:featureId="f577" android:label="@string/dummyLabel" />
-  <feature android:featureId="f578" android:label="@string/dummyLabel" />
-  <feature android:featureId="f579" android:label="@string/dummyLabel" />
-  <feature android:featureId="f580" android:label="@string/dummyLabel" />
-  <feature android:featureId="f581" android:label="@string/dummyLabel" />
-  <feature android:featureId="f582" android:label="@string/dummyLabel" />
-  <feature android:featureId="f583" android:label="@string/dummyLabel" />
-  <feature android:featureId="f584" android:label="@string/dummyLabel" />
-  <feature android:featureId="f585" android:label="@string/dummyLabel" />
-  <feature android:featureId="f586" android:label="@string/dummyLabel" />
-  <feature android:featureId="f587" android:label="@string/dummyLabel" />
-  <feature android:featureId="f588" android:label="@string/dummyLabel" />
-  <feature android:featureId="f589" android:label="@string/dummyLabel" />
-  <feature android:featureId="f590" android:label="@string/dummyLabel" />
-  <feature android:featureId="f591" android:label="@string/dummyLabel" />
-  <feature android:featureId="f592" android:label="@string/dummyLabel" />
-  <feature android:featureId="f593" android:label="@string/dummyLabel" />
-  <feature android:featureId="f594" android:label="@string/dummyLabel" />
-  <feature android:featureId="f595" android:label="@string/dummyLabel" />
-  <feature android:featureId="f596" android:label="@string/dummyLabel" />
-  <feature android:featureId="f597" android:label="@string/dummyLabel" />
-  <feature android:featureId="f598" android:label="@string/dummyLabel" />
-  <feature android:featureId="f599" android:label="@string/dummyLabel" />
-  <feature android:featureId="f600" android:label="@string/dummyLabel" />
-  <feature android:featureId="f601" android:label="@string/dummyLabel" />
-  <feature android:featureId="f602" android:label="@string/dummyLabel" />
-  <feature android:featureId="f603" android:label="@string/dummyLabel" />
-  <feature android:featureId="f604" android:label="@string/dummyLabel" />
-  <feature android:featureId="f605" android:label="@string/dummyLabel" />
-  <feature android:featureId="f606" android:label="@string/dummyLabel" />
-  <feature android:featureId="f607" android:label="@string/dummyLabel" />
-  <feature android:featureId="f608" android:label="@string/dummyLabel" />
-  <feature android:featureId="f609" android:label="@string/dummyLabel" />
-  <feature android:featureId="f610" android:label="@string/dummyLabel" />
-  <feature android:featureId="f611" android:label="@string/dummyLabel" />
-  <feature android:featureId="f612" android:label="@string/dummyLabel" />
-  <feature android:featureId="f613" android:label="@string/dummyLabel" />
-  <feature android:featureId="f614" android:label="@string/dummyLabel" />
-  <feature android:featureId="f615" android:label="@string/dummyLabel" />
-  <feature android:featureId="f616" android:label="@string/dummyLabel" />
-  <feature android:featureId="f617" android:label="@string/dummyLabel" />
-  <feature android:featureId="f618" android:label="@string/dummyLabel" />
-  <feature android:featureId="f619" android:label="@string/dummyLabel" />
-  <feature android:featureId="f620" android:label="@string/dummyLabel" />
-  <feature android:featureId="f621" android:label="@string/dummyLabel" />
-  <feature android:featureId="f622" android:label="@string/dummyLabel" />
-  <feature android:featureId="f623" android:label="@string/dummyLabel" />
-  <feature android:featureId="f624" android:label="@string/dummyLabel" />
-  <feature android:featureId="f625" android:label="@string/dummyLabel" />
-  <feature android:featureId="f626" android:label="@string/dummyLabel" />
-  <feature android:featureId="f627" android:label="@string/dummyLabel" />
-  <feature android:featureId="f628" android:label="@string/dummyLabel" />
-  <feature android:featureId="f629" android:label="@string/dummyLabel" />
-  <feature android:featureId="f630" android:label="@string/dummyLabel" />
-  <feature android:featureId="f631" android:label="@string/dummyLabel" />
-  <feature android:featureId="f632" android:label="@string/dummyLabel" />
-  <feature android:featureId="f633" android:label="@string/dummyLabel" />
-  <feature android:featureId="f634" android:label="@string/dummyLabel" />
-  <feature android:featureId="f635" android:label="@string/dummyLabel" />
-  <feature android:featureId="f636" android:label="@string/dummyLabel" />
-  <feature android:featureId="f637" android:label="@string/dummyLabel" />
-  <feature android:featureId="f638" android:label="@string/dummyLabel" />
-  <feature android:featureId="f639" android:label="@string/dummyLabel" />
-  <feature android:featureId="f640" android:label="@string/dummyLabel" />
-  <feature android:featureId="f641" android:label="@string/dummyLabel" />
-  <feature android:featureId="f642" android:label="@string/dummyLabel" />
-  <feature android:featureId="f643" android:label="@string/dummyLabel" />
-  <feature android:featureId="f644" android:label="@string/dummyLabel" />
-  <feature android:featureId="f645" android:label="@string/dummyLabel" />
-  <feature android:featureId="f646" android:label="@string/dummyLabel" />
-  <feature android:featureId="f647" android:label="@string/dummyLabel" />
-  <feature android:featureId="f648" android:label="@string/dummyLabel" />
-  <feature android:featureId="f649" android:label="@string/dummyLabel" />
-  <feature android:featureId="f650" android:label="@string/dummyLabel" />
-  <feature android:featureId="f651" android:label="@string/dummyLabel" />
-  <feature android:featureId="f652" android:label="@string/dummyLabel" />
-  <feature android:featureId="f653" android:label="@string/dummyLabel" />
-  <feature android:featureId="f654" android:label="@string/dummyLabel" />
-  <feature android:featureId="f655" android:label="@string/dummyLabel" />
-  <feature android:featureId="f656" android:label="@string/dummyLabel" />
-  <feature android:featureId="f657" android:label="@string/dummyLabel" />
-  <feature android:featureId="f658" android:label="@string/dummyLabel" />
-  <feature android:featureId="f659" android:label="@string/dummyLabel" />
-  <feature android:featureId="f660" android:label="@string/dummyLabel" />
-  <feature android:featureId="f661" android:label="@string/dummyLabel" />
-  <feature android:featureId="f662" android:label="@string/dummyLabel" />
-  <feature android:featureId="f663" android:label="@string/dummyLabel" />
-  <feature android:featureId="f664" android:label="@string/dummyLabel" />
-  <feature android:featureId="f665" android:label="@string/dummyLabel" />
-  <feature android:featureId="f666" android:label="@string/dummyLabel" />
-  <feature android:featureId="f667" android:label="@string/dummyLabel" />
-  <feature android:featureId="f668" android:label="@string/dummyLabel" />
-  <feature android:featureId="f669" android:label="@string/dummyLabel" />
-  <feature android:featureId="f670" android:label="@string/dummyLabel" />
-  <feature android:featureId="f671" android:label="@string/dummyLabel" />
-  <feature android:featureId="f672" android:label="@string/dummyLabel" />
-  <feature android:featureId="f673" android:label="@string/dummyLabel" />
-  <feature android:featureId="f674" android:label="@string/dummyLabel" />
-  <feature android:featureId="f675" android:label="@string/dummyLabel" />
-  <feature android:featureId="f676" android:label="@string/dummyLabel" />
-  <feature android:featureId="f677" android:label="@string/dummyLabel" />
-  <feature android:featureId="f678" android:label="@string/dummyLabel" />
-  <feature android:featureId="f679" android:label="@string/dummyLabel" />
-  <feature android:featureId="f680" android:label="@string/dummyLabel" />
-  <feature android:featureId="f681" android:label="@string/dummyLabel" />
-  <feature android:featureId="f682" android:label="@string/dummyLabel" />
-  <feature android:featureId="f683" android:label="@string/dummyLabel" />
-  <feature android:featureId="f684" android:label="@string/dummyLabel" />
-  <feature android:featureId="f685" android:label="@string/dummyLabel" />
-  <feature android:featureId="f686" android:label="@string/dummyLabel" />
-  <feature android:featureId="f687" android:label="@string/dummyLabel" />
-  <feature android:featureId="f688" android:label="@string/dummyLabel" />
-  <feature android:featureId="f689" android:label="@string/dummyLabel" />
-  <feature android:featureId="f690" android:label="@string/dummyLabel" />
-  <feature android:featureId="f691" android:label="@string/dummyLabel" />
-  <feature android:featureId="f692" android:label="@string/dummyLabel" />
-  <feature android:featureId="f693" android:label="@string/dummyLabel" />
-  <feature android:featureId="f694" android:label="@string/dummyLabel" />
-  <feature android:featureId="f695" android:label="@string/dummyLabel" />
-  <feature android:featureId="f696" android:label="@string/dummyLabel" />
-  <feature android:featureId="f697" android:label="@string/dummyLabel" />
-  <feature android:featureId="f698" android:label="@string/dummyLabel" />
-  <feature android:featureId="f699" android:label="@string/dummyLabel" />
-  <feature android:featureId="f700" android:label="@string/dummyLabel" />
-  <feature android:featureId="f701" android:label="@string/dummyLabel" />
-  <feature android:featureId="f702" android:label="@string/dummyLabel" />
-  <feature android:featureId="f703" android:label="@string/dummyLabel" />
-  <feature android:featureId="f704" android:label="@string/dummyLabel" />
-  <feature android:featureId="f705" android:label="@string/dummyLabel" />
-  <feature android:featureId="f706" android:label="@string/dummyLabel" />
-  <feature android:featureId="f707" android:label="@string/dummyLabel" />
-  <feature android:featureId="f708" android:label="@string/dummyLabel" />
-  <feature android:featureId="f709" android:label="@string/dummyLabel" />
-  <feature android:featureId="f710" android:label="@string/dummyLabel" />
-  <feature android:featureId="f711" android:label="@string/dummyLabel" />
-  <feature android:featureId="f712" android:label="@string/dummyLabel" />
-  <feature android:featureId="f713" android:label="@string/dummyLabel" />
-  <feature android:featureId="f714" android:label="@string/dummyLabel" />
-  <feature android:featureId="f715" android:label="@string/dummyLabel" />
-  <feature android:featureId="f716" android:label="@string/dummyLabel" />
-  <feature android:featureId="f717" android:label="@string/dummyLabel" />
-  <feature android:featureId="f718" android:label="@string/dummyLabel" />
-  <feature android:featureId="f719" android:label="@string/dummyLabel" />
-  <feature android:featureId="f720" android:label="@string/dummyLabel" />
-  <feature android:featureId="f721" android:label="@string/dummyLabel" />
-  <feature android:featureId="f722" android:label="@string/dummyLabel" />
-  <feature android:featureId="f723" android:label="@string/dummyLabel" />
-  <feature android:featureId="f724" android:label="@string/dummyLabel" />
-  <feature android:featureId="f725" android:label="@string/dummyLabel" />
-  <feature android:featureId="f726" android:label="@string/dummyLabel" />
-  <feature android:featureId="f727" android:label="@string/dummyLabel" />
-  <feature android:featureId="f728" android:label="@string/dummyLabel" />
-  <feature android:featureId="f729" android:label="@string/dummyLabel" />
-  <feature android:featureId="f730" android:label="@string/dummyLabel" />
-  <feature android:featureId="f731" android:label="@string/dummyLabel" />
-  <feature android:featureId="f732" android:label="@string/dummyLabel" />
-  <feature android:featureId="f733" android:label="@string/dummyLabel" />
-  <feature android:featureId="f734" android:label="@string/dummyLabel" />
-  <feature android:featureId="f735" android:label="@string/dummyLabel" />
-  <feature android:featureId="f736" android:label="@string/dummyLabel" />
-  <feature android:featureId="f737" android:label="@string/dummyLabel" />
-  <feature android:featureId="f738" android:label="@string/dummyLabel" />
-  <feature android:featureId="f739" android:label="@string/dummyLabel" />
-  <feature android:featureId="f740" android:label="@string/dummyLabel" />
-  <feature android:featureId="f741" android:label="@string/dummyLabel" />
-  <feature android:featureId="f742" android:label="@string/dummyLabel" />
-  <feature android:featureId="f743" android:label="@string/dummyLabel" />
-  <feature android:featureId="f744" android:label="@string/dummyLabel" />
-  <feature android:featureId="f745" android:label="@string/dummyLabel" />
-  <feature android:featureId="f746" android:label="@string/dummyLabel" />
-  <feature android:featureId="f747" android:label="@string/dummyLabel" />
-  <feature android:featureId="f748" android:label="@string/dummyLabel" />
-  <feature android:featureId="f749" android:label="@string/dummyLabel" />
-  <feature android:featureId="f750" android:label="@string/dummyLabel" />
-  <feature android:featureId="f751" android:label="@string/dummyLabel" />
-  <feature android:featureId="f752" android:label="@string/dummyLabel" />
-  <feature android:featureId="f753" android:label="@string/dummyLabel" />
-  <feature android:featureId="f754" android:label="@string/dummyLabel" />
-  <feature android:featureId="f755" android:label="@string/dummyLabel" />
-  <feature android:featureId="f756" android:label="@string/dummyLabel" />
-  <feature android:featureId="f757" android:label="@string/dummyLabel" />
-  <feature android:featureId="f758" android:label="@string/dummyLabel" />
-  <feature android:featureId="f759" android:label="@string/dummyLabel" />
-  <feature android:featureId="f760" android:label="@string/dummyLabel" />
-  <feature android:featureId="f761" android:label="@string/dummyLabel" />
-  <feature android:featureId="f762" android:label="@string/dummyLabel" />
-  <feature android:featureId="f763" android:label="@string/dummyLabel" />
-  <feature android:featureId="f764" android:label="@string/dummyLabel" />
-  <feature android:featureId="f765" android:label="@string/dummyLabel" />
-  <feature android:featureId="f766" android:label="@string/dummyLabel" />
-  <feature android:featureId="f767" android:label="@string/dummyLabel" />
-  <feature android:featureId="f768" android:label="@string/dummyLabel" />
-  <feature android:featureId="f769" android:label="@string/dummyLabel" />
-  <feature android:featureId="f770" android:label="@string/dummyLabel" />
-  <feature android:featureId="f771" android:label="@string/dummyLabel" />
-  <feature android:featureId="f772" android:label="@string/dummyLabel" />
-  <feature android:featureId="f773" android:label="@string/dummyLabel" />
-  <feature android:featureId="f774" android:label="@string/dummyLabel" />
-  <feature android:featureId="f775" android:label="@string/dummyLabel" />
-  <feature android:featureId="f776" android:label="@string/dummyLabel" />
-  <feature android:featureId="f777" android:label="@string/dummyLabel" />
-  <feature android:featureId="f778" android:label="@string/dummyLabel" />
-  <feature android:featureId="f779" android:label="@string/dummyLabel" />
-  <feature android:featureId="f780" android:label="@string/dummyLabel" />
-  <feature android:featureId="f781" android:label="@string/dummyLabel" />
-  <feature android:featureId="f782" android:label="@string/dummyLabel" />
-  <feature android:featureId="f783" android:label="@string/dummyLabel" />
-  <feature android:featureId="f784" android:label="@string/dummyLabel" />
-  <feature android:featureId="f785" android:label="@string/dummyLabel" />
-  <feature android:featureId="f786" android:label="@string/dummyLabel" />
-  <feature android:featureId="f787" android:label="@string/dummyLabel" />
-  <feature android:featureId="f788" android:label="@string/dummyLabel" />
-  <feature android:featureId="f789" android:label="@string/dummyLabel" />
-  <feature android:featureId="f790" android:label="@string/dummyLabel" />
-  <feature android:featureId="f791" android:label="@string/dummyLabel" />
-  <feature android:featureId="f792" android:label="@string/dummyLabel" />
-  <feature android:featureId="f793" android:label="@string/dummyLabel" />
-  <feature android:featureId="f794" android:label="@string/dummyLabel" />
-  <feature android:featureId="f795" android:label="@string/dummyLabel" />
-  <feature android:featureId="f796" android:label="@string/dummyLabel" />
-  <feature android:featureId="f797" android:label="@string/dummyLabel" />
-  <feature android:featureId="f798" android:label="@string/dummyLabel" />
-  <feature android:featureId="f799" android:label="@string/dummyLabel" />
-  <feature android:featureId="f800" android:label="@string/dummyLabel" />
-  <feature android:featureId="f801" android:label="@string/dummyLabel" />
-  <feature android:featureId="f802" android:label="@string/dummyLabel" />
-  <feature android:featureId="f803" android:label="@string/dummyLabel" />
-  <feature android:featureId="f804" android:label="@string/dummyLabel" />
-  <feature android:featureId="f805" android:label="@string/dummyLabel" />
-  <feature android:featureId="f806" android:label="@string/dummyLabel" />
-  <feature android:featureId="f807" android:label="@string/dummyLabel" />
-  <feature android:featureId="f808" android:label="@string/dummyLabel" />
-  <feature android:featureId="f809" android:label="@string/dummyLabel" />
-  <feature android:featureId="f810" android:label="@string/dummyLabel" />
-  <feature android:featureId="f811" android:label="@string/dummyLabel" />
-  <feature android:featureId="f812" android:label="@string/dummyLabel" />
-  <feature android:featureId="f813" android:label="@string/dummyLabel" />
-  <feature android:featureId="f814" android:label="@string/dummyLabel" />
-  <feature android:featureId="f815" android:label="@string/dummyLabel" />
-  <feature android:featureId="f816" android:label="@string/dummyLabel" />
-  <feature android:featureId="f817" android:label="@string/dummyLabel" />
-  <feature android:featureId="f818" android:label="@string/dummyLabel" />
-  <feature android:featureId="f819" android:label="@string/dummyLabel" />
-  <feature android:featureId="f820" android:label="@string/dummyLabel" />
-  <feature android:featureId="f821" android:label="@string/dummyLabel" />
-  <feature android:featureId="f822" android:label="@string/dummyLabel" />
-  <feature android:featureId="f823" android:label="@string/dummyLabel" />
-  <feature android:featureId="f824" android:label="@string/dummyLabel" />
-  <feature android:featureId="f825" android:label="@string/dummyLabel" />
-  <feature android:featureId="f826" android:label="@string/dummyLabel" />
-  <feature android:featureId="f827" android:label="@string/dummyLabel" />
-  <feature android:featureId="f828" android:label="@string/dummyLabel" />
-  <feature android:featureId="f829" android:label="@string/dummyLabel" />
-  <feature android:featureId="f830" android:label="@string/dummyLabel" />
-  <feature android:featureId="f831" android:label="@string/dummyLabel" />
-  <feature android:featureId="f832" android:label="@string/dummyLabel" />
-  <feature android:featureId="f833" android:label="@string/dummyLabel" />
-  <feature android:featureId="f834" android:label="@string/dummyLabel" />
-  <feature android:featureId="f835" android:label="@string/dummyLabel" />
-  <feature android:featureId="f836" android:label="@string/dummyLabel" />
-  <feature android:featureId="f837" android:label="@string/dummyLabel" />
-  <feature android:featureId="f838" android:label="@string/dummyLabel" />
-  <feature android:featureId="f839" android:label="@string/dummyLabel" />
-  <feature android:featureId="f840" android:label="@string/dummyLabel" />
-  <feature android:featureId="f841" android:label="@string/dummyLabel" />
-  <feature android:featureId="f842" android:label="@string/dummyLabel" />
-  <feature android:featureId="f843" android:label="@string/dummyLabel" />
-  <feature android:featureId="f844" android:label="@string/dummyLabel" />
-  <feature android:featureId="f845" android:label="@string/dummyLabel" />
-  <feature android:featureId="f846" android:label="@string/dummyLabel" />
-  <feature android:featureId="f847" android:label="@string/dummyLabel" />
-  <feature android:featureId="f848" android:label="@string/dummyLabel" />
-  <feature android:featureId="f849" android:label="@string/dummyLabel" />
-  <feature android:featureId="f850" android:label="@string/dummyLabel" />
-  <feature android:featureId="f851" android:label="@string/dummyLabel" />
-  <feature android:featureId="f852" android:label="@string/dummyLabel" />
-  <feature android:featureId="f853" android:label="@string/dummyLabel" />
-  <feature android:featureId="f854" android:label="@string/dummyLabel" />
-  <feature android:featureId="f855" android:label="@string/dummyLabel" />
-  <feature android:featureId="f856" android:label="@string/dummyLabel" />
-  <feature android:featureId="f857" android:label="@string/dummyLabel" />
-  <feature android:featureId="f858" android:label="@string/dummyLabel" />
-  <feature android:featureId="f859" android:label="@string/dummyLabel" />
-  <feature android:featureId="f860" android:label="@string/dummyLabel" />
-  <feature android:featureId="f861" android:label="@string/dummyLabel" />
-  <feature android:featureId="f862" android:label="@string/dummyLabel" />
-  <feature android:featureId="f863" android:label="@string/dummyLabel" />
-  <feature android:featureId="f864" android:label="@string/dummyLabel" />
-  <feature android:featureId="f865" android:label="@string/dummyLabel" />
-  <feature android:featureId="f866" android:label="@string/dummyLabel" />
-  <feature android:featureId="f867" android:label="@string/dummyLabel" />
-  <feature android:featureId="f868" android:label="@string/dummyLabel" />
-  <feature android:featureId="f869" android:label="@string/dummyLabel" />
-  <feature android:featureId="f870" android:label="@string/dummyLabel" />
-  <feature android:featureId="f871" android:label="@string/dummyLabel" />
-  <feature android:featureId="f872" android:label="@string/dummyLabel" />
-  <feature android:featureId="f873" android:label="@string/dummyLabel" />
-  <feature android:featureId="f874" android:label="@string/dummyLabel" />
-  <feature android:featureId="f875" android:label="@string/dummyLabel" />
-  <feature android:featureId="f876" android:label="@string/dummyLabel" />
-  <feature android:featureId="f877" android:label="@string/dummyLabel" />
-  <feature android:featureId="f878" android:label="@string/dummyLabel" />
-  <feature android:featureId="f879" android:label="@string/dummyLabel" />
-  <feature android:featureId="f880" android:label="@string/dummyLabel" />
-  <feature android:featureId="f881" android:label="@string/dummyLabel" />
-  <feature android:featureId="f882" android:label="@string/dummyLabel" />
-  <feature android:featureId="f883" android:label="@string/dummyLabel" />
-  <feature android:featureId="f884" android:label="@string/dummyLabel" />
-  <feature android:featureId="f885" android:label="@string/dummyLabel" />
-  <feature android:featureId="f886" android:label="@string/dummyLabel" />
-  <feature android:featureId="f887" android:label="@string/dummyLabel" />
-  <feature android:featureId="f888" android:label="@string/dummyLabel" />
-  <feature android:featureId="f889" android:label="@string/dummyLabel" />
-  <feature android:featureId="f890" android:label="@string/dummyLabel" />
-  <feature android:featureId="f891" android:label="@string/dummyLabel" />
-  <feature android:featureId="f892" android:label="@string/dummyLabel" />
-  <feature android:featureId="f893" android:label="@string/dummyLabel" />
-  <feature android:featureId="f894" android:label="@string/dummyLabel" />
-  <feature android:featureId="f895" android:label="@string/dummyLabel" />
-  <feature android:featureId="f896" android:label="@string/dummyLabel" />
-  <feature android:featureId="f897" android:label="@string/dummyLabel" />
-  <feature android:featureId="f898" android:label="@string/dummyLabel" />
-  <feature android:featureId="f899" android:label="@string/dummyLabel" />
-  <feature android:featureId="f900" android:label="@string/dummyLabel" />
-  <feature android:featureId="f901" android:label="@string/dummyLabel" />
-  <feature android:featureId="f902" android:label="@string/dummyLabel" />
-  <feature android:featureId="f903" android:label="@string/dummyLabel" />
-  <feature android:featureId="f904" android:label="@string/dummyLabel" />
-  <feature android:featureId="f905" android:label="@string/dummyLabel" />
-  <feature android:featureId="f906" android:label="@string/dummyLabel" />
-  <feature android:featureId="f907" android:label="@string/dummyLabel" />
-  <feature android:featureId="f908" android:label="@string/dummyLabel" />
-  <feature android:featureId="f909" android:label="@string/dummyLabel" />
-  <feature android:featureId="f910" android:label="@string/dummyLabel" />
-  <feature android:featureId="f911" android:label="@string/dummyLabel" />
-  <feature android:featureId="f912" android:label="@string/dummyLabel" />
-  <feature android:featureId="f913" android:label="@string/dummyLabel" />
-  <feature android:featureId="f914" android:label="@string/dummyLabel" />
-  <feature android:featureId="f915" android:label="@string/dummyLabel" />
-  <feature android:featureId="f916" android:label="@string/dummyLabel" />
-  <feature android:featureId="f917" android:label="@string/dummyLabel" />
-  <feature android:featureId="f918" android:label="@string/dummyLabel" />
-  <feature android:featureId="f919" android:label="@string/dummyLabel" />
-  <feature android:featureId="f920" android:label="@string/dummyLabel" />
-  <feature android:featureId="f921" android:label="@string/dummyLabel" />
-  <feature android:featureId="f922" android:label="@string/dummyLabel" />
-  <feature android:featureId="f923" android:label="@string/dummyLabel" />
-  <feature android:featureId="f924" android:label="@string/dummyLabel" />
-  <feature android:featureId="f925" android:label="@string/dummyLabel" />
-  <feature android:featureId="f926" android:label="@string/dummyLabel" />
-  <feature android:featureId="f927" android:label="@string/dummyLabel" />
-  <feature android:featureId="f928" android:label="@string/dummyLabel" />
-  <feature android:featureId="f929" android:label="@string/dummyLabel" />
-  <feature android:featureId="f930" android:label="@string/dummyLabel" />
-  <feature android:featureId="f931" android:label="@string/dummyLabel" />
-  <feature android:featureId="f932" android:label="@string/dummyLabel" />
-  <feature android:featureId="f933" android:label="@string/dummyLabel" />
-  <feature android:featureId="f934" android:label="@string/dummyLabel" />
-  <feature android:featureId="f935" android:label="@string/dummyLabel" />
-  <feature android:featureId="f936" android:label="@string/dummyLabel" />
-  <feature android:featureId="f937" android:label="@string/dummyLabel" />
-  <feature android:featureId="f938" android:label="@string/dummyLabel" />
-  <feature android:featureId="f939" android:label="@string/dummyLabel" />
-  <feature android:featureId="f940" android:label="@string/dummyLabel" />
-  <feature android:featureId="f941" android:label="@string/dummyLabel" />
-  <feature android:featureId="f942" android:label="@string/dummyLabel" />
-  <feature android:featureId="f943" android:label="@string/dummyLabel" />
-  <feature android:featureId="f944" android:label="@string/dummyLabel" />
-  <feature android:featureId="f945" android:label="@string/dummyLabel" />
-  <feature android:featureId="f946" android:label="@string/dummyLabel" />
-  <feature android:featureId="f947" android:label="@string/dummyLabel" />
-  <feature android:featureId="f948" android:label="@string/dummyLabel" />
-  <feature android:featureId="f949" android:label="@string/dummyLabel" />
-  <feature android:featureId="f950" android:label="@string/dummyLabel" />
-  <feature android:featureId="f951" android:label="@string/dummyLabel" />
-  <feature android:featureId="f952" android:label="@string/dummyLabel" />
-  <feature android:featureId="f953" android:label="@string/dummyLabel" />
-  <feature android:featureId="f954" android:label="@string/dummyLabel" />
-  <feature android:featureId="f955" android:label="@string/dummyLabel" />
-  <feature android:featureId="f956" android:label="@string/dummyLabel" />
-  <feature android:featureId="f957" android:label="@string/dummyLabel" />
-  <feature android:featureId="f958" android:label="@string/dummyLabel" />
-  <feature android:featureId="f959" android:label="@string/dummyLabel" />
-  <feature android:featureId="f960" android:label="@string/dummyLabel" />
-  <feature android:featureId="f961" android:label="@string/dummyLabel" />
-  <feature android:featureId="f962" android:label="@string/dummyLabel" />
-  <feature android:featureId="f963" android:label="@string/dummyLabel" />
-  <feature android:featureId="f964" android:label="@string/dummyLabel" />
-  <feature android:featureId="f965" android:label="@string/dummyLabel" />
-  <feature android:featureId="f966" android:label="@string/dummyLabel" />
-  <feature android:featureId="f967" android:label="@string/dummyLabel" />
-  <feature android:featureId="f968" android:label="@string/dummyLabel" />
-  <feature android:featureId="f969" android:label="@string/dummyLabel" />
-  <feature android:featureId="f970" android:label="@string/dummyLabel" />
-  <feature android:featureId="f971" android:label="@string/dummyLabel" />
-  <feature android:featureId="f972" android:label="@string/dummyLabel" />
-  <feature android:featureId="f973" android:label="@string/dummyLabel" />
-  <feature android:featureId="f974" android:label="@string/dummyLabel" />
-  <feature android:featureId="f975" android:label="@string/dummyLabel" />
-  <feature android:featureId="f976" android:label="@string/dummyLabel" />
-  <feature android:featureId="f977" android:label="@string/dummyLabel" />
-  <feature android:featureId="f978" android:label="@string/dummyLabel" />
-  <feature android:featureId="f979" android:label="@string/dummyLabel" />
-  <feature android:featureId="f980" android:label="@string/dummyLabel" />
-  <feature android:featureId="f981" android:label="@string/dummyLabel" />
-  <feature android:featureId="f982" android:label="@string/dummyLabel" />
-  <feature android:featureId="f983" android:label="@string/dummyLabel" />
-  <feature android:featureId="f984" android:label="@string/dummyLabel" />
-  <feature android:featureId="f985" android:label="@string/dummyLabel" />
-  <feature android:featureId="f986" android:label="@string/dummyLabel" />
-  <feature android:featureId="f987" android:label="@string/dummyLabel" />
-  <feature android:featureId="f988" android:label="@string/dummyLabel" />
-  <feature android:featureId="f989" android:label="@string/dummyLabel" />
-  <feature android:featureId="f990" android:label="@string/dummyLabel" />
-  <feature android:featureId="f991" android:label="@string/dummyLabel" />
-  <feature android:featureId="f992" android:label="@string/dummyLabel" />
-  <feature android:featureId="f993" android:label="@string/dummyLabel" />
-  <feature android:featureId="f994" android:label="@string/dummyLabel" />
-  <feature android:featureId="f995" android:label="@string/dummyLabel" />
-  <feature android:featureId="f996" android:label="@string/dummyLabel" />
-  <feature android:featureId="f997" android:label="@string/dummyLabel" />
-  <feature android:featureId="f998" android:label="@string/dummyLabel" />
-  <feature android:featureId="f999" android:label="@string/dummyLabel" />
-
-  <feature android:featureId="toomany" android:label="@string/dummyLabel" />
-
-  <application />
-
-</manifest>
diff --git a/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserClient.aidl b/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserClient.aidl
index f3af855..e4125f7 100644
--- a/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserClient.aidl
+++ b/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserClient.aidl
@@ -18,7 +18,7 @@
 
 interface IAppOpsUserClient {
     void noteSyncOp();
-    void noteSyncOpWithFeature(String featureId);
+    void noteSyncOpWithAttribution(String attributionTag);
     void callBackIntoService();
     void noteNonPermissionSyncOp();
     void noteSyncOpTwice();
@@ -30,7 +30,7 @@
     void noteSyncOpOtherUid();
     void noteSyncOpOtherUidNative();
     void noteAsyncOp();
-    void noteAsyncOpWithFeature(String featureId);
+    void noteAsyncOpWithAttribution(String attributionTag);
     void noteAsyncOpWithCustomMessage();
     void noteAsyncOpNative();
     void noteAsyncOpNativeWithCustomMessage();
diff --git a/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserService.aidl b/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserService.aidl
index a19705f..0b073fb 100644
--- a/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserService.aidl
+++ b/tests/tests/appop/aidl/AppOpsUserService/src/android/app/appops/cts/IAppOpsUserService.aidl
@@ -23,7 +23,7 @@
     void disableCollectorAndCallASyncOpsWhichWillBeCollected(in IAppOpsUserClient client);
     void callApiThatNotesSyncOpAndCheckLog(in IAppOpsUserClient client);
     void callApiThatNotesSyncOpAndClearLog(in IAppOpsUserClient client);
-    void callApiThatNotesSyncOpWithFeatureAndCheckLog(in IAppOpsUserClient client);
+    void callApiThatNotesSyncOpWithAttributionAndCheckLog(in IAppOpsUserClient client);
     void callApiThatCallsBackIntoServiceAndCheckLog(in IAppOpsUserClient client);
     void callApiThatNotesSyncOpFromNativeCodeAndCheckLog(in IAppOpsUserClient client);
     void callApiThatNotesSyncOpFromNativeCodeAndCheckMessage(in IAppOpsUserClient client);
@@ -38,7 +38,7 @@
     void callApiThatNotesSyncOpOtherUidAndCheckLog(in IAppOpsUserClient client);
     void callApiThatNotesSyncOpOtherUidNativelyAndCheckLog(in IAppOpsUserClient client);
     void callApiThatNotesAsyncOpAndCheckLog(in IAppOpsUserClient client);
-    void callApiThatNotesAsyncOpWithFeatureAndCheckLog(in IAppOpsUserClient client);
+    void callApiThatNotesAsyncOpWithAttributionAndCheckLog(in IAppOpsUserClient client);
     void callApiThatNotesAsyncOpAndCheckDefaultMessage(in IAppOpsUserClient client);
     void callApiThatNotesAsyncOpAndCheckCustomMessage(in IAppOpsUserClient client);
     void callApiThatNotesAsyncOpNativelyAndCheckCustomMessage(in IAppOpsUserClient client);
diff --git a/tests/tests/appop/appopsTestUtilLib/src/android/app/appops/cts/AppOpsUtils.kt b/tests/tests/appop/appopsTestUtilLib/src/android/app/appops/cts/AppOpsUtils.kt
index da8f8d2..b1588d5 100644
--- a/tests/tests/appop/appopsTestUtilLib/src/android/app/appops/cts/AppOpsUtils.kt
+++ b/tests/tests/appop/appopsTestUtilLib/src/android/app/appops/cts/AppOpsUtils.kt
@@ -29,7 +29,7 @@
 private const val LOG_TAG = "AppOpsUtils"
 private const val TIMEOUT_MILLIS = 10000L
 
-const val TEST_FEATURE_ID = "testFeature"
+const val TEST_ATTRIBUTION_TAG = "testAttribution"
 
 /**
  * Resets a package's app ops configuration to the device default. See AppOpsManager for the
diff --git a/tests/tests/appop/jni/android/app/appops/cts/AppOpsLoggingTest.cpp b/tests/tests/appop/jni/android/app/appops/cts/AppOpsLoggingTest.cpp
index 0b47701..a403163 100644
--- a/tests/tests/appop/jni/android/app/appops/cts/AppOpsLoggingTest.cpp
+++ b/tests/tests/appop/jni/android/app/appops/cts/AppOpsLoggingTest.cpp
@@ -29,17 +29,17 @@
 // Note op from native code
 extern "C" JNIEXPORT void JNICALL
 Java_android_app_appops_cts_AppOpsLoggingTestKt_nativeNoteOp(JNIEnv* env, jobject obj,
-        jint op, jint uid, jstring jCallingPackageName, jstring jFeatureId, jstring jMessage) {
+        jint op, jint uid, jstring jCallingPackageName, jstring jAttributionTag, jstring jMessage) {
     AppOpsManager appOpsManager;
 
     const char *nativeCallingPackageName = env->GetStringUTFChars(jCallingPackageName, 0);
     String16 callingPackageName(nativeCallingPackageName);
 
-    const char *nativeFeatureId;
-    std::unique_ptr<String16> featureId;
-    if (jFeatureId != nullptr) {
-        nativeFeatureId = env->GetStringUTFChars(jFeatureId, 0);
-        featureId = std::unique_ptr<String16>(new String16(nativeFeatureId));
+    const char *nativeAttributionTag;
+    std::unique_ptr<String16> attributionTag;
+    if (jAttributionTag != nullptr) {
+        nativeAttributionTag = env->GetStringUTFChars(jAttributionTag, 0);
+        attributionTag = std::unique_ptr<String16>(new String16(nativeAttributionTag));
     }
 
     const char *nativeMessage;
@@ -51,12 +51,12 @@
         message = new String16();
     }
 
-    appOpsManager.noteOp(op, uid, callingPackageName, featureId, *message);
+    appOpsManager.noteOp(op, uid, callingPackageName, attributionTag, *message);
 
     env->ReleaseStringUTFChars(jCallingPackageName, nativeCallingPackageName);
 
-    if (jFeatureId != nullptr) {
-        env->ReleaseStringUTFChars(jFeatureId, nativeFeatureId);
+    if (jAttributionTag != nullptr) {
+        env->ReleaseStringUTFChars(jAttributionTag, nativeAttributionTag);
     }
 
     if (jMessage != nullptr) {
diff --git a/tests/tests/appop/src/android/app/appops/cts/AppOpEventCollectionTest.kt b/tests/tests/appop/src/android/app/appops/cts/AppOpEventCollectionTest.kt
index 51bad70..103a4b2 100644
--- a/tests/tests/appop/src/android/app/appops/cts/AppOpEventCollectionTest.kt
+++ b/tests/tests/appop/src/android/app/appops/cts/AppOpEventCollectionTest.kt
@@ -96,36 +96,36 @@
     }
 
     @Test
-    fun noteWithFeatureAndCheckOpEntries() {
+    fun noteWithAttributionAndCheckOpEntries() {
         val before = System.currentTimeMillis()
-        appOpsManager.noteOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID, null)
+        appOpsManager.noteOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG, null)
         val after = System.currentTimeMillis()
 
         val opEntry = getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!
-        val featureOpEntry = opEntry.features[TEST_FEATURE_ID]!!
+        val attributionOpEntry = opEntry.attributedOpEntries[TEST_ATTRIBUTION_TAG]!!
 
-        assertThat(featureOpEntry.getLastAccessForegroundTime(OP_FLAG_SELF)).isIn(before..after)
+        assertThat(attributionOpEntry.getLastAccessForegroundTime(OP_FLAG_SELF)).isIn(before..after)
 
         // Access should should also show up in the combined state for all op-flags
-        assertThat(featureOpEntry.getLastAccessForegroundTime(OP_FLAGS_ALL)).isIn(before..after)
+        assertThat(attributionOpEntry.getLastAccessForegroundTime(OP_FLAGS_ALL)).isIn(before..after)
         assertThat(opEntry.getLastAccessTime(OP_FLAGS_ALL)).isIn(before..after)
 
         // Foreground access should should also show up in the combined state for fg and bg
-        assertThat(featureOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(before..after)
+        assertThat(attributionOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(before..after)
         assertThat(opEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(before..after)
 
         // The access was in foreground, hence there is no background access
-        assertThat(featureOpEntry.getLastBackgroundDuration(OP_FLAG_SELF)).isLessThan(before)
+        assertThat(attributionOpEntry.getLastBackgroundDuration(OP_FLAG_SELF)).isLessThan(before)
         assertThat(opEntry.getLastBackgroundDuration(OP_FLAG_SELF)).isLessThan(before)
 
-        // The access was for a feature, hence there is no access for the default feature
-        if (null in opEntry.features) {
-            assertThat(opEntry.features[null]!!.getLastAccessForegroundTime(OP_FLAG_SELF))
-                    .isLessThan(before)
+        // The access was for a attribution, hence there is no access for the default attribution
+        if (null in opEntry.attributedOpEntries) {
+            assertThat(opEntry.attributedOpEntries[null]!!
+                    .getLastAccessForegroundTime(OP_FLAG_SELF)).isLessThan(before)
         }
 
         // The access does not show up for other op-flags
-        assertThat(featureOpEntry.getLastAccessForegroundTime(
+        assertThat(attributionOpEntry.getLastAccessForegroundTime(
                 OP_FLAGS_ALL and OP_FLAG_SELF.inv())).isLessThan(before)
         assertThat(opEntry.getLastAccessForegroundTime(
                 OP_FLAGS_ALL and OP_FLAG_SELF.inv())).isLessThan(before)
@@ -149,40 +149,40 @@
         val after = System.currentTimeMillis()
 
         val opEntry = getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!
-        val featureOpEntry = opEntry.features[null]!!
+        val attributionOpEntry = opEntry.attributedOpEntries[null]!!
 
-        assertThat(featureOpEntry.getLastAccessTime(OP_FLAG_TRUSTED_PROXY))
+        assertThat(attributionOpEntry.getLastAccessTime(OP_FLAG_TRUSTED_PROXY))
                 .isIn(before..afterTrusted)
-        assertThat(featureOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(afterTrusted..after)
+        assertThat(attributionOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(afterTrusted..after)
         assertThat(opEntry.getLastAccessTime(OP_FLAG_TRUSTED_PROXY)).isIn(before..afterTrusted)
         assertThat(opEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(afterTrusted..after)
 
         // When asked for any flags, the second access overrides the first
-        assertThat(featureOpEntry.getLastAccessTime(OP_FLAGS_ALL)).isIn(afterTrusted..after)
+        assertThat(attributionOpEntry.getLastAccessTime(OP_FLAGS_ALL)).isIn(afterTrusted..after)
         assertThat(opEntry.getLastAccessTime(OP_FLAGS_ALL)).isIn(afterTrusted..after)
     }
 
     @Test
-    fun noteForTwoFeaturesCheckOpEntries() {
+    fun noteForTwoAttributionsCheckOpEntries() {
         val before = System.currentTimeMillis()
-        appOpsManager.noteOp(OPSTR_WIFI_SCAN, myUid, myPackage, "firstFeature", null)
+        appOpsManager.noteOp(OPSTR_WIFI_SCAN, myUid, myPackage, "firstAttribution", null)
         val afterFirst = System.currentTimeMillis()
 
         // Make sure timestamps are distinct
         sleep(1)
 
         // self note
-        appOpsManager.noteOp(OPSTR_WIFI_SCAN, myUid, myPackage, "secondFeature", null)
+        appOpsManager.noteOp(OPSTR_WIFI_SCAN, myUid, myPackage, "secondAttribution", null)
         val after = System.currentTimeMillis()
 
         val opEntry = getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!
-        val firstFeatureOpEntry = opEntry.features["firstFeature"]!!
-        val secondFeatureOpEntry = opEntry.features["secondFeature"]!!
+        val firstAttributionOpEntry = opEntry.attributedOpEntries["firstAttribution"]!!
+        val secondAttributionOpEntry = opEntry.attributedOpEntries["secondAttribution"]!!
 
-        assertThat(firstFeatureOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(before..afterFirst)
-        assertThat(secondFeatureOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(afterFirst..after)
+        assertThat(firstAttributionOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(before..afterFirst)
+        assertThat(secondAttributionOpEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(afterFirst..after)
 
-        // When asked for any feature, the second access overrides the first
+        // When asked for any attribution, the second access overrides the first
         assertThat(opEntry.getLastAccessTime(OP_FLAG_SELF)).isIn(afterFirst..after)
     }
 
@@ -198,7 +198,7 @@
 
         // Using the shell identity causes a trusted proxy note
         runWithShellPermissionIdentity {
-            context.createFeatureContext("firstProxyFeature")
+            context.createAttributionContext("firstProxyAttribution")
                     .getSystemService(AppOpsManager::class.java)
                     .noteProxyOp(OPSTR_WIFI_SCAN, otherPkg, otherUid, null, null)
         }
@@ -207,35 +207,37 @@
         sleep(1)
 
         // untrusted proxy note
-        context.createFeatureContext("secondProxyFeature")
+        context.createAttributionContext("secondProxyAttribution")
                 .getSystemService(AppOpsManager::class.java)
                 .noteProxyOp(OPSTR_WIFI_SCAN, otherPkg, otherUid, null, null)
 
         val opEntry = getOpEntry(otherUid, otherPkg, OPSTR_WIFI_SCAN)!!
-        val featureOpEntry = opEntry.features[null]!!
+        val attributionOpEntry = opEntry.attributedOpEntries[null]!!
 
-        assertThat(featureOpEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.packageName)
+        assertThat(attributionOpEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.packageName)
                 .isEqualTo(myPackage)
         assertThat(opEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.packageName)
                 .isEqualTo(myPackage)
-        assertThat(featureOpEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.uid).isEqualTo(myUid)
+        assertThat(attributionOpEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.uid)
+                .isEqualTo(myUid)
         assertThat(opEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.uid).isEqualTo(myUid)
 
-        assertThat(featureOpEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.packageName)
+        assertThat(attributionOpEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.packageName)
                 .isEqualTo(myPackage)
         assertThat(opEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.packageName)
                 .isEqualTo(myPackage)
-        assertThat(featureOpEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.uid).isEqualTo(myUid)
+        assertThat(attributionOpEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.uid)
+                .isEqualTo(myUid)
         assertThat(opEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.uid).isEqualTo(myUid)
 
-        assertThat(featureOpEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.featureId)
-                .isEqualTo("firstProxyFeature")
-        assertThat(featureOpEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.featureId)
-                .isEqualTo("secondProxyFeature")
+        assertThat(attributionOpEntry.getLastProxyInfo(OP_FLAG_TRUSTED_PROXIED)?.attributionTag)
+                .isEqualTo("firstProxyAttribution")
+        assertThat(attributionOpEntry.getLastProxyInfo(OP_FLAG_UNTRUSTED_PROXIED)?.attributionTag)
+                .isEqualTo("secondProxyAttribution")
 
-        // If asked for all op-flags the second feature overrides the first
-        assertThat(featureOpEntry.getLastProxyInfo(OP_FLAGS_ALL)?.featureId)
-                .isEqualTo("secondProxyFeature")
+        // If asked for all op-flags the second attribution overrides the first
+        assertThat(attributionOpEntry.getLastProxyInfo(OP_FLAGS_ALL)?.attributionTag)
+                .isEqualTo("secondProxyAttribution")
     }
 
     @Test
@@ -243,140 +245,141 @@
         appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, null, null)
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.isRunning).isTrue()
-            features[TEST_FEATURE_ID]?.let { assertThat(it.isRunning).isFalse() }
+            assertThat(attributedOpEntries[null]!!.isRunning).isTrue()
+            attributedOpEntries[TEST_ATTRIBUTION_TAG]?.let { assertThat(it.isRunning).isFalse() }
             assertThat(isRunning).isTrue()
         }
 
-        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID, null)
+        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG, null)
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.isRunning).isTrue()
-            assertThat(features[TEST_FEATURE_ID]!!.isRunning).isTrue()
+            assertThat(attributedOpEntries[null]!!.isRunning).isTrue()
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.isRunning).isTrue()
             assertThat(isRunning).isTrue()
         }
 
-        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID, null)
+        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG, null)
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.isRunning).isTrue()
-            assertThat(features[TEST_FEATURE_ID]!!.isRunning).isTrue()
+            assertThat(attributedOpEntries[null]!!.isRunning).isTrue()
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.isRunning).isTrue()
             assertThat(isRunning).isTrue()
         }
 
-        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID)
+        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG)
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.isRunning).isTrue()
-            assertThat(features[TEST_FEATURE_ID]!!.isRunning).isTrue()
+            assertThat(attributedOpEntries[null]!!.isRunning).isTrue()
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.isRunning).isTrue()
             assertThat(isRunning).isTrue()
         }
 
-        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID)
+        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG)
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.isRunning).isTrue()
-            assertThat(features[TEST_FEATURE_ID]!!.isRunning).isFalse()
+            assertThat(attributedOpEntries[null]!!.isRunning).isTrue()
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.isRunning).isFalse()
             assertThat(isRunning).isTrue()
         }
 
         appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, null)
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.isRunning).isFalse()
-            assertThat(features[TEST_FEATURE_ID]!!.isRunning).isFalse()
+            assertThat(attributedOpEntries[null]!!.isRunning).isFalse()
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.isRunning).isFalse()
             assertThat(isRunning).isFalse()
         }
     }
 
     @Test
     fun startStopMultipleOpsAndVerifyLastAccess() {
-        val beforeNullFeatureStart = System.currentTimeMillis()
+        val beforeNullAttributionStart = System.currentTimeMillis()
         appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, null, null)
-        val afterNullFeatureStart = System.currentTimeMillis()
+        val afterNullAttributionStart = System.currentTimeMillis()
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeNullFeatureStart..afterNullFeatureStart)
-            features[TEST_FEATURE_ID]?.let {
-                assertThat(it.getLastAccessTime(OP_FLAGS_ALL)).isAtMost(beforeNullFeatureStart)
+            assertThat(attributedOpEntries[null]!!.getLastAccessTime(OP_FLAGS_ALL))
+                    .isIn(beforeNullAttributionStart..afterNullAttributionStart)
+            attributedOpEntries[TEST_ATTRIBUTION_TAG]?.let {
+                assertThat(it.getLastAccessTime(OP_FLAGS_ALL)).isAtMost(beforeNullAttributionStart)
             }
             assertThat(getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeNullFeatureStart..afterNullFeatureStart)
+                    .isIn(beforeNullAttributionStart..afterNullAttributionStart)
         }
 
-        val beforeFirstFeatureStart = System.currentTimeMillis()
-        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID, null)
-        val afterFirstFeatureStart = System.currentTimeMillis()
+        val beforeFirstAttributionStart = System.currentTimeMillis()
+        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG, null)
+        val afterFirstAttributionStart = System.currentTimeMillis()
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeNullFeatureStart..afterNullFeatureStart)
-            assertThat(features[TEST_FEATURE_ID]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeFirstFeatureStart..afterFirstFeatureStart)
+            assertThat(attributedOpEntries[null]!!.getLastAccessTime(OP_FLAGS_ALL))
+                    .isIn(beforeNullAttributionStart..afterNullAttributionStart)
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.getLastAccessTime(OP_FLAGS_ALL))
+                    .isIn(beforeFirstAttributionStart..afterFirstAttributionStart)
             assertThat(getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeFirstFeatureStart..afterFirstFeatureStart)
+                    .isIn(beforeFirstAttributionStart..afterFirstAttributionStart)
         }
 
-        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID, null)
+        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG, null)
 
         // Nested startOps do _not_ count as another access
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeNullFeatureStart..afterNullFeatureStart)
-            assertThat(features[TEST_FEATURE_ID]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeFirstFeatureStart..afterFirstFeatureStart)
+            assertThat(attributedOpEntries[null]!!.getLastAccessTime(OP_FLAGS_ALL))
+                    .isIn(beforeNullAttributionStart..afterNullAttributionStart)
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.getLastAccessTime(OP_FLAGS_ALL))
+                    .isIn(beforeFirstAttributionStart..afterFirstAttributionStart)
             assertThat(getLastAccessTime(OP_FLAGS_ALL))
-                    .isIn(beforeFirstFeatureStart..afterFirstFeatureStart)
+                    .isIn(beforeFirstAttributionStart..afterFirstAttributionStart)
         }
 
-        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID)
-        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID)
+        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG)
+        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG)
         appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, null)
     }
 
     @Test
     fun startStopMultipleOpsAndVerifyDuration() {
-        val beforeNullFeatureStart = SystemClock.elapsedRealtime()
+        val beforeNullAttributionStart = SystemClock.elapsedRealtime()
         appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, null, null)
-        val afterNullFeatureStart = SystemClock.elapsedRealtime()
+        val afterNullAttributionStart = SystemClock.elapsedRealtime()
 
         run {
             val beforeGetOp = SystemClock.elapsedRealtime()
             with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
                 val afterGetOp = SystemClock.elapsedRealtime()
 
-                assertThat(features[null]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterNullFeatureStart
-                                ..afterGetOp - beforeNullFeatureStart)
+                assertThat(attributedOpEntries[null]!!.getLastDuration(OP_FLAGS_ALL))
+                        .isIn(beforeGetOp - afterNullAttributionStart
+                                ..afterGetOp - beforeNullAttributionStart)
                 assertThat(getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterNullFeatureStart
-                                ..afterGetOp - beforeNullFeatureStart)
+                        .isIn(beforeGetOp - afterNullAttributionStart
+                                ..afterGetOp - beforeNullAttributionStart)
             }
         }
 
-        val beforeFeatureStart = SystemClock.elapsedRealtime()
-        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID, null)
-        val afterFeatureStart = SystemClock.elapsedRealtime()
+        val beforeAttributionStart = SystemClock.elapsedRealtime()
+        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG, null)
+        val afterAttributionStart = SystemClock.elapsedRealtime()
 
         run {
             val beforeGetOp = SystemClock.elapsedRealtime()
             with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
                 val afterGetOp = SystemClock.elapsedRealtime()
 
-                assertThat(features[null]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterNullFeatureStart
-                                ..afterGetOp - beforeNullFeatureStart)
-                assertThat(features[TEST_FEATURE_ID]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterFeatureStart..afterGetOp - beforeFeatureStart)
+                assertThat(attributedOpEntries[null]!!.getLastDuration(OP_FLAGS_ALL))
+                        .isIn(beforeGetOp - afterNullAttributionStart
+                                ..afterGetOp - beforeNullAttributionStart)
+                assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!
+                        .getLastDuration(OP_FLAGS_ALL)).isIn(beforeGetOp -
+                                afterAttributionStart..afterGetOp - beforeAttributionStart)
 
-                // The last duration is the duration of the last started feature
-                assertThat(getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterFeatureStart..afterGetOp - beforeFeatureStart)
+                // The last duration is the duration of the last started attribution
+                assertThat(getLastDuration(OP_FLAGS_ALL)).isIn(beforeGetOp -
+                        afterAttributionStart..afterGetOp - beforeAttributionStart)
             }
         }
 
-        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID, null)
+        appOpsManager.startOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG, null)
 
         // Nested startOps do _not_ start another duration counting, hence the nested
         // startOp and finishOp calls have no affect
@@ -385,68 +388,72 @@
             with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
                 val afterGetOp = SystemClock.elapsedRealtime()
 
-                assertThat(features[null]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterNullFeatureStart
-                                ..afterGetOp - beforeNullFeatureStart)
-                assertThat(features[TEST_FEATURE_ID]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterFeatureStart..afterGetOp - beforeFeatureStart)
+                assertThat(attributedOpEntries[null]!!.getLastDuration(OP_FLAGS_ALL))
+                        .isIn(beforeGetOp - afterNullAttributionStart
+                                ..afterGetOp - beforeNullAttributionStart)
+                assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!
+                        .getLastDuration(OP_FLAGS_ALL)).isIn(beforeGetOp -
+                        afterAttributionStart..afterGetOp - beforeAttributionStart)
                 assertThat(getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterFeatureStart..afterGetOp - beforeFeatureStart)
+                        .isIn(beforeGetOp -
+                                afterAttributionStart..afterGetOp - beforeAttributionStart)
             }
         }
 
-        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID)
+        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG)
 
         run {
             val beforeGetOp = SystemClock.elapsedRealtime()
             with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
                 val afterGetOp = SystemClock.elapsedRealtime()
 
-                assertThat(features[null]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterNullFeatureStart
-                                ..afterGetOp - beforeNullFeatureStart)
-                assertThat(features[TEST_FEATURE_ID]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterFeatureStart..afterGetOp - beforeFeatureStart)
-                assertThat(getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterFeatureStart..afterGetOp - beforeFeatureStart)
+                assertThat(attributedOpEntries[null]!!.getLastDuration(OP_FLAGS_ALL))
+                        .isIn(beforeGetOp - afterNullAttributionStart
+                                ..afterGetOp - beforeNullAttributionStart)
+                assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!
+                        .getLastDuration(OP_FLAGS_ALL)).isIn(beforeGetOp -
+                                afterAttributionStart..afterGetOp - beforeAttributionStart)
+                assertThat(getLastDuration(OP_FLAGS_ALL)).isIn(beforeGetOp -
+                                afterAttributionStart..afterGetOp - beforeAttributionStart)
             }
         }
 
-        val beforeFeatureStop = SystemClock.elapsedRealtime()
-        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_FEATURE_ID)
-        val afterFeatureStop = SystemClock.elapsedRealtime()
+        val beforeAttributionStop = SystemClock.elapsedRealtime()
+        appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, TEST_ATTRIBUTION_TAG)
+        val afterAttributionStop = SystemClock.elapsedRealtime()
 
         run {
             val beforeGetOp = SystemClock.elapsedRealtime()
             with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
                 val afterGetOp = SystemClock.elapsedRealtime()
 
-                assertThat(features[null]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeGetOp - afterNullFeatureStart
-                                ..afterGetOp - beforeNullFeatureStart)
-                assertThat(features[TEST_FEATURE_ID]!!.getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeFeatureStop - afterFeatureStart
-                                ..afterFeatureStop - beforeFeatureStart)
+                assertThat(attributedOpEntries[null]!!.getLastDuration(OP_FLAGS_ALL))
+                        .isIn(beforeGetOp - afterNullAttributionStart
+                                ..afterGetOp - beforeNullAttributionStart)
+                assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!
+                        .getLastDuration(OP_FLAGS_ALL)).isIn(
+                        beforeAttributionStop - afterAttributionStart
+                                ..afterAttributionStop - beforeAttributionStart)
                 assertThat(getLastDuration(OP_FLAGS_ALL))
-                        .isIn(beforeFeatureStop - afterFeatureStart
-                                ..afterFeatureStop - beforeFeatureStart)
+                        .isIn(beforeAttributionStop - afterAttributionStart
+                                ..afterAttributionStop - beforeAttributionStart)
             }
         }
 
-        val beforeNullFeatureStop = SystemClock.elapsedRealtime()
+        val beforeNullAttributionStop = SystemClock.elapsedRealtime()
         appOpsManager.finishOp(OPSTR_WIFI_SCAN, myUid, myPackage, null)
-        val afterNullFeatureStop = SystemClock.elapsedRealtime()
+        val afterNullAttributionStop = SystemClock.elapsedRealtime()
 
         with(getOpEntry(myUid, myPackage, OPSTR_WIFI_SCAN)!!) {
-            assertThat(features[null]!!.getLastDuration(OP_FLAGS_ALL))
-                    .isIn(beforeNullFeatureStop - afterNullFeatureStart
-                            ..afterNullFeatureStop - beforeNullFeatureStart)
-            assertThat(features[TEST_FEATURE_ID]!!.getLastDuration(OP_FLAGS_ALL))
-                    .isIn(beforeFeatureStop - afterFeatureStart
-                            ..afterFeatureStop - beforeFeatureStart)
+            assertThat(attributedOpEntries[null]!!.getLastDuration(OP_FLAGS_ALL))
+                    .isIn(beforeNullAttributionStop - afterNullAttributionStart
+                            ..afterNullAttributionStop - beforeNullAttributionStart)
+            assertThat(attributedOpEntries[TEST_ATTRIBUTION_TAG]!!.getLastDuration(OP_FLAGS_ALL))
+                    .isIn(beforeAttributionStop - afterAttributionStart
+                            ..afterAttributionStop - beforeAttributionStart)
             assertThat(getLastDuration(OP_FLAGS_ALL))
-                    .isIn(beforeFeatureStop - afterFeatureStart
-                            ..afterFeatureStop - beforeFeatureStart)
+                    .isIn(beforeAttributionStop - afterAttributionStart
+                            ..afterAttributionStop - beforeAttributionStart)
         }
     }
 }
diff --git a/tests/tests/appop/src/android/app/appops/cts/AppOpsLoggingTest.kt b/tests/tests/appop/src/android/app/appops/cts/AppOpsLoggingTest.kt
index 2b92c7f..e8db5e2 100644
--- a/tests/tests/appop/src/android/app/appops/cts/AppOpsLoggingTest.kt
+++ b/tests/tests/appop/src/android/app/appops/cts/AppOpsLoggingTest.kt
@@ -78,7 +78,7 @@
     op: Int,
     uid: Int,
     packageName: String,
-    featureId: String? = null,
+    attributionTag: String? = null,
     message: String? = null
 )
 
@@ -168,15 +168,16 @@
         assertThat(noted).isEmpty()
         assertThat(asyncNoted).isEmpty()
 
-        assertThat(selfNoted.map { it.first.featureId to it.first.op })
+        assertThat(selfNoted.map { it.first.attributionTag to it.first.op })
             .containsExactly(null to OPSTR_COARSE_LOCATION)
     }
 
     @Test
-    fun selfNoteAndCheckFeature() {
-        appOpsManager.noteOpNoThrow(OPSTR_COARSE_LOCATION, myUid, myPackage, TEST_FEATURE_ID, null)
+    fun selfNoteAndCheckAttribution() {
+        appOpsManager.noteOpNoThrow(OPSTR_COARSE_LOCATION, myUid, myPackage, TEST_ATTRIBUTION_TAG,
+                null)
 
-        assertThat(selfNoted.map { it.first.featureId }).containsExactly(TEST_FEATURE_ID)
+        assertThat(selfNoted.map { it.first.attributionTag }).containsExactly(TEST_ATTRIBUTION_TAG)
     }
 
     @Test
@@ -188,7 +189,7 @@
 
         // All native notes will be reported as async notes
         eventually {
-            assertThat(asyncNoted[0].featureId).isEqualTo(null)
+            assertThat(asyncNoted[0].attributionTag).isEqualTo(null)
             // There is always a message.
             assertThat(asyncNoted[0].message).isNotEqualTo(null)
             assertThat(asyncNoted[0].op).isEqualTo(OPSTR_COARSE_LOCATION)
@@ -197,13 +198,13 @@
     }
 
     @Test
-    fun nativeSelfNoteWithFeatureAndMsgAndCheckLog() {
+    fun nativeSelfNoteWithAttributionAndMsgAndCheckLog() {
         nativeNoteOp(strOpToOp(OPSTR_COARSE_LOCATION), myUid, myPackage,
-            featureId = TEST_FEATURE_ID, message = "testMsg")
+            attributionTag = TEST_ATTRIBUTION_TAG, message = "testMsg")
 
         // All native notes will be reported as async notes
         eventually {
-            assertThat(asyncNoted[0].featureId).isEqualTo(TEST_FEATURE_ID)
+            assertThat(asyncNoted[0].attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
             assertThat(asyncNoted[0].message).isEqualTo("testMsg")
         }
     }
@@ -232,9 +233,9 @@
     }
 
     @Test
-    fun noteSyncWithFeatureOpAndCheckLog() {
+    fun noteSyncWithAttributionOpAndCheckLog() {
         rethrowThrowableFrom {
-            testService.callApiThatNotesSyncOpWithFeatureAndCheckLog(AppOpsUserClient(context))
+            testService.callApiThatNotesSyncOpWithAttributionAndCheckLog(AppOpsUserClient(context))
         }
     }
 
@@ -341,9 +342,9 @@
     }
 
     @Test
-    fun noteAsyncOpWithFeatureAndCheckLog() {
+    fun noteAsyncOpWithAttributionAndCheckLog() {
         rethrowThrowableFrom {
-            testService.callApiThatNotesAsyncOpWithFeatureAndCheckLog(AppOpsUserClient(context))
+            testService.callApiThatNotesAsyncOpWithAttributionAndCheckLog(AppOpsUserClient(context))
         }
     }
 
@@ -381,13 +382,13 @@
      */
     @Test
     fun getWifiScanResults() {
-        val wifiManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val wifiManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
             .getSystemService(WifiManager::class.java)
 
         val results = wifiManager.scanResults
 
         assertThat(noted[0].first.op).isEqualTo(OPSTR_FINE_LOCATION)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("getWifiScanResults")
     }
 
@@ -399,13 +400,13 @@
         assumeTrue("Device does not support bluetooth",
                 context.packageManager.hasSystemFeature(FEATURE_BLUETOOTH))
 
-        val btManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val btManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
                 .getSystemService(BluetoothManager::class.java)
 
         btManager.adapter.startDiscovery()
         try {
             assertThat(noted[0].first.op).isEqualTo(OPSTR_FINE_LOCATION)
-            assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+            assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
             assertThat(noted[0].second.map { it.methodName }).contains("getBTScanResults")
         } finally {
             btManager.adapter.cancelDiscovery()
@@ -417,7 +418,7 @@
      */
     @Test
     fun getLastKnownLocation() {
-        val locationManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val locationManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
             .getSystemService(LocationManager::class.java)
 
         assumeTrue("Device does not have a network provider",
@@ -428,7 +429,7 @@
 
         assertThat(noted.map { it.first.op }).containsAnyOf(OPSTR_COARSE_LOCATION,
             OPSTR_FINE_LOCATION)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("getLastKnownLocation")
     }
 
@@ -437,7 +438,7 @@
      */
     @Test
     fun getAsyncLocation() {
-        val locationManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val locationManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
             .getSystemService(LocationManager::class.java)
 
         assumeTrue("Device does not have a network provider",
@@ -467,7 +468,7 @@
         eventually {
             assertThat(asyncNoted.map { it.op }).containsAnyOf(OPSTR_COARSE_LOCATION,
                 OPSTR_FINE_LOCATION)
-            assertThat(asyncNoted[0].featureId).isEqualTo(TEST_FEATURE_ID)
+            assertThat(asyncNoted[0].attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
 
             assertThat(asyncNoted[0].message).contains(locationListener::class.java.name)
             assertThat(asyncNoted[0].message).contains(
@@ -484,7 +485,7 @@
 
         val gotProximityAlert = CompletableFuture<Unit>()
 
-        val locationManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val locationManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
             .getSystemService(LocationManager::class.java)!!
 
         val proximityAlertReceiver = object : BroadcastReceiver() {
@@ -511,7 +512,7 @@
 
                 eventually {
                     assertThat(asyncNoted.map { it.op }).contains(OPSTR_FINE_LOCATION)
-                    assertThat(asyncNoted[0].featureId).isEqualTo(TEST_FEATURE_ID)
+                    assertThat(asyncNoted[0].attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
 
                     assertThat(asyncNoted[0].message).contains(
                         proximityAlertReceiverPendingIntent::class.java.name)
@@ -532,11 +533,11 @@
      */
     @Test
     fun readFromContactsProvider() {
-        context.createFeatureContext(TEST_FEATURE_ID).contentResolver
+        context.createAttributionContext(TEST_ATTRIBUTION_TAG).contentResolver
             .query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null)
 
         assertThat(noted.map { it.first.op }).containsExactly(OPSTR_READ_CONTACTS)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("readFromContactsProvider")
     }
 
@@ -545,11 +546,11 @@
      */
     @Test
     fun writeToContactsProvider() {
-        context.createFeatureContext(TEST_FEATURE_ID).contentResolver
+        context.createAttributionContext(TEST_ATTRIBUTION_TAG).contentResolver
             .insert(ContactsContract.RawContacts.CONTENT_URI, ContentValues())
 
         assertThat(noted.map { it.first.op }).containsExactly(OPSTR_WRITE_CONTACTS)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("writeToContactsProvider")
     }
 
@@ -560,13 +561,13 @@
     fun getCellInfo() {
         assumeTrue(context.packageManager.hasSystemFeature(FEATURE_TELEPHONY))
 
-        val telephonyManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val telephonyManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
             .getSystemService(TelephonyManager::class.java)
 
         telephonyManager.allCellInfo
 
         assertThat(noted[0].first.op).isEqualTo(OPSTR_FINE_LOCATION)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("getCellInfo")
     }
 
@@ -591,7 +592,7 @@
 
         eventually {
             assertThat(asyncNoted[0].op).isEqualTo(OPSTR_CAMERA)
-            assertThat(asyncNoted[0].featureId).isEqualTo(context.featureId)
+            assertThat(asyncNoted[0].attributionTag).isEqualTo(context.attributionTag)
             assertThat(asyncNoted[0].message).contains(cameraManager.cameraIdList[0])
         }
     }
@@ -600,17 +601,17 @@
      * Realistic end-to-end test for opening camera
      */
     @Test
-    fun openCameraWithFeature() {
-        openCamera(context.createFeatureContext(TEST_FEATURE_ID))
+    fun openCameraWithAttribution() {
+        openCamera(context.createAttributionContext(TEST_ATTRIBUTION_TAG))
     }
 
     /**
-     * Realistic end-to-end test for opening camera. This uses the default (==null) feature. This
-     * is interesting as null feature handling is more complex in native code.
+     * Realistic end-to-end test for opening camera. This uses the default (==null) attribution.
+     * This is interesting as null attribution handling is more complex in native code.
      */
     @Test
-    fun openCameraWithDefaultFeature() {
-        openCamera(context.createFeatureContext(null))
+    fun openCameraWithDefaultAttribution() {
+        openCamera(context.createAttributionContext(null))
     }
 
     /**
@@ -620,13 +621,13 @@
     fun getMultiSimSupport() {
         assumeTrue(context.packageManager.hasSystemFeature(FEATURE_TELEPHONY))
 
-        val telephonyManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val telephonyManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
             .getSystemService(TelephonyManager::class.java)
 
         telephonyManager.isMultiSimSupported
 
         assertThat(noted[0].first.op).isEqualTo(OPSTR_READ_PHONE_STATE)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("getMultiSimSupport")
     }
 
@@ -635,13 +636,13 @@
      */
     @Test
     fun getWallpaper() {
-        val wallpaperManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val wallpaperManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
                 .getSystemService(WallpaperManager::class.java)
 
         wallpaperManager.getWallpaperFile(FLAG_SYSTEM)
 
         assertThat(noted[0].first.op).isEqualTo(OPSTR_READ_EXTERNAL_STORAGE)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("getWallpaper")
     }
 
@@ -650,13 +651,13 @@
      */
     @Test
     fun isInCall() {
-        val telecomManager = context.createFeatureContext(TEST_FEATURE_ID)
+        val telecomManager = context.createAttributionContext(TEST_ATTRIBUTION_TAG)
                 .getSystemService(TelecomManager::class.java)
 
         telecomManager.isInCall()
 
         assertThat(noted[0].first.op).isEqualTo(OPSTR_READ_PHONE_STATE)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("isInCall")
     }
 
@@ -665,13 +666,13 @@
      */
     @Test
     fun startActivity() {
-        context.createFeatureContext(TEST_FEATURE_ID).startActivity(
+        context.createAttributionContext(TEST_ATTRIBUTION_TAG).startActivity(
                 Intent().setComponent(ComponentName(TEST_SERVICE_PKG,
                         TEST_SERVICE_PKG + ".AutoClosingActivity"))
                         .setFlags(FLAG_ACTIVITY_NEW_TASK))
 
         assertThat(noted[0].first.op).isEqualTo(OPSTR_FINE_LOCATION)
-        assertThat(noted[0].first.featureId).isEqualTo(TEST_FEATURE_ID)
+        assertThat(noted[0].first.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
         assertThat(noted[0].second.map { it.methodName }).contains("startActivity")
     }
 
@@ -706,10 +707,10 @@
             }
         }
 
-        override fun noteSyncOpWithFeature(featureId: String) {
+        override fun noteSyncOpWithAttribution(attributionTag: String) {
             runWithShellPermissionIdentity {
                 appOpsManager.noteOpNoThrow(OPSTR_COARSE_LOCATION, getCallingUid(),
-                    TEST_SERVICE_PKG, featureId, null)
+                    TEST_SERVICE_PKG, attributionTag, null)
             }
         }
 
@@ -789,13 +790,13 @@
             }
         }
 
-        override fun noteAsyncOpWithFeature(featureId: String) {
+        override fun noteAsyncOpWithAttribution(attributionTag: String) {
             val callingUid = getCallingUid()
 
             handler.post {
                 runWithShellPermissionIdentity {
                     appOpsManager.noteOpNoThrow(OPSTR_COARSE_LOCATION, callingUid, TEST_SERVICE_PKG,
-                        featureId, null)
+                        attributionTag, null)
                 }
             }
         }
diff --git a/tests/tests/appop/src/android/app/appops/cts/AppOpsTest.kt b/tests/tests/appop/src/android/app/appops/cts/AppOpsTest.kt
index f9f8d47..3b4dda1 100644
--- a/tests/tests/appop/src/android/app/appops/cts/AppOpsTest.kt
+++ b/tests/tests/appop/src/android/app/appops/cts/AppOpsTest.kt
@@ -228,7 +228,7 @@
     }
 
     @Test
-    fun overlappingActiveFeatureOps() {
+    fun overlappingActiveAttributionOps() {
         runWithShellPermissionIdentity {
             val gotActive = CompletableFuture<Unit>()
             val gotInActive = CompletableFuture<Unit>()
@@ -249,17 +249,17 @@
             mAppOps.startWatchingActive(arrayOf(OPSTR_WRITE_CALENDAR), Executor { it.run() },
                 activeWatcher)
             try {
-                mAppOps.startOp(OPSTR_WRITE_CALENDAR, mMyUid, mOpPackageName, "feature1", null)
+                mAppOps.startOp(OPSTR_WRITE_CALENDAR, mMyUid, mOpPackageName, "attribution1", null)
                 assertTrue(mAppOps.isOpActive(OPSTR_WRITE_CALENDAR, mMyUid, mOpPackageName))
                 gotActive.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
 
                 mAppOps.startOp(OPSTR_WRITE_CALENDAR, Process.myUid(), mOpPackageName,
-                    "feature2", null)
+                    "attribution2", null)
                 assertTrue(mAppOps.isOpActive(OPSTR_WRITE_CALENDAR, mMyUid, mOpPackageName))
                 assertFalse(gotInActive.isDone)
 
                 mAppOps.finishOp(OPSTR_WRITE_CALENDAR, Process.myUid(), mOpPackageName,
-                    "feature1")
+                    "attribution1")
 
                 // Allow some time for premature "watchingActive" callbacks to arrive
                 Thread.sleep(500)
@@ -268,7 +268,7 @@
                 assertFalse(gotInActive.isDone)
 
                 mAppOps.finishOp(OPSTR_WRITE_CALENDAR, Process.myUid(), mOpPackageName,
-                    "feature2")
+                    "attribution2")
                 assertFalse(mAppOps.isOpActive(OPSTR_WRITE_CALENDAR, mMyUid, mOpPackageName))
                 gotInActive.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)
             } finally {
diff --git a/tests/tests/appop/src/android/app/appops/cts/AttributionTest.kt b/tests/tests/appop/src/android/app/appops/cts/AttributionTest.kt
new file mode 100644
index 0000000..0bdf312
--- /dev/null
+++ b/tests/tests/appop/src/android/app/appops/cts/AttributionTest.kt
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 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 android.app.appops.cts
+
+import android.app.AppOpsManager
+import android.app.AppOpsManager.OPSTR_WIFI_SCAN
+import android.app.AppOpsManager.OP_FLAGS_ALL
+import android.platform.test.annotations.AppModeFull
+import androidx.test.platform.app.InstrumentationRegistry
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import java.lang.AssertionError
+import java.lang.Thread.sleep
+
+private const val APK_PATH = "/data/local/tmp/cts/appops/"
+
+private const val APP_PKG = "android.app.appops.cts.apptoblame"
+
+private const val ATTRIBUTION_1 = "attribution1"
+private const val ATTRIBUTION_2 = "attribution2"
+private const val ATTRIBUTION_3 = "attribution3"
+private const val ATTRIBUTION_4 = "attribution4"
+private const val ATTRIBUTION_5 = "attribution5"
+private const val ATTRIBUTION_6 = "attribution6"
+private const val ATTRIBUTION_7 = "attribution7"
+
+@AppModeFull(reason = "Test relies on seeing other apps. Instant apps can't see other apps")
+class AttributionTest {
+    private val instrumentation = InstrumentationRegistry.getInstrumentation()
+    private val context = instrumentation.targetContext
+    private val appOpsManager = context.getSystemService(AppOpsManager::class.java)
+    private val appUid by lazy { context.packageManager.getPackageUid(APP_PKG, 0) }
+
+    private fun installApk(apk: String) {
+        val result = runCommand("pm install -r --force-queryable $APK_PATH$apk")
+        assertThat(result.trim()).isEqualTo("Success")
+    }
+
+    @Before
+    fun resetTestApp() {
+        runCommand("pm uninstall $APP_PKG")
+        installApk("CtsAppToBlame1.apk")
+    }
+
+    private fun noteForAttribution(attribution: String) {
+        // Make sure note times as distinct
+        sleep(1)
+
+        runWithShellPermissionIdentity {
+            appOpsManager.noteOpNoThrow(OPSTR_WIFI_SCAN, appUid, APP_PKG, attribution, null)
+        }
+    }
+
+    @Test
+    fun inheritNotedAppOpsOnUpgrade() {
+        noteForAttribution(ATTRIBUTION_1)
+        noteForAttribution(ATTRIBUTION_2)
+        noteForAttribution(ATTRIBUTION_3)
+        noteForAttribution(ATTRIBUTION_4)
+        noteForAttribution(ATTRIBUTION_5)
+
+        val beforeUpdate = getOpEntry(appUid, APP_PKG, OPSTR_WIFI_SCAN)!!
+        installApk("CtsAppToBlame2.apk")
+
+        eventually {
+            val afterUpdate = getOpEntry(appUid, APP_PKG, OPSTR_WIFI_SCAN)!!
+
+            // Attribution 1 is unchanged
+            assertThat(afterUpdate.attributedOpEntries[ATTRIBUTION_1]!!
+                    .getLastAccessTime(OP_FLAGS_ALL))
+                    .isEqualTo(beforeUpdate.attributedOpEntries[ATTRIBUTION_1]!!
+                            .getLastAccessTime(OP_FLAGS_ALL))
+
+            // Attribution 3 disappeared (i.e. was added into "null" attribution)
+            assertThat(afterUpdate.attributedOpEntries[null]!!.getLastAccessTime(OP_FLAGS_ALL))
+                    .isEqualTo(beforeUpdate.attributedOpEntries[ATTRIBUTION_3]!!
+                            .getLastAccessTime(OP_FLAGS_ALL))
+
+            // Attribution 6 inherits from attribution 2
+            assertThat(afterUpdate.attributedOpEntries[ATTRIBUTION_6]!!
+                    .getLastAccessTime(OP_FLAGS_ALL))
+                    .isEqualTo(beforeUpdate.attributedOpEntries[ATTRIBUTION_2]!!
+                            .getLastAccessTime(OP_FLAGS_ALL))
+
+            // Attribution 7 inherits from attribution 4 and 5. 5 was noted after 4, hence 4 is
+            // removed
+            assertThat(afterUpdate.attributedOpEntries[ATTRIBUTION_7]!!
+                    .getLastAccessTime(OP_FLAGS_ALL))
+                    .isEqualTo(beforeUpdate.attributedOpEntries[ATTRIBUTION_5]!!
+                            .getLastAccessTime(OP_FLAGS_ALL))
+        }
+    }
+
+    @Test(expected = AssertionError::class)
+    fun cannotInheritFromSelf() {
+        installApk("AppWithAttributionInheritingFromSelf.apk")
+    }
+
+    @Test(expected = AssertionError::class)
+    fun noDuplicateAttributions() {
+        installApk("AppWithDuplicateAttribution.apk")
+    }
+
+    @Test(expected = AssertionError::class)
+    fun cannotInheritFromExisting() {
+        installApk("AppWithAttributionInheritingFromExisting.apk")
+    }
+
+    @Test(expected = AssertionError::class)
+    fun cannotInheritFromSameAsOther() {
+        installApk("AppWithAttributionInheritingFromSameAsOther.apk")
+    }
+
+    @Test(expected = AssertionError::class)
+    fun cannotUseVeryLongAttributionTags() {
+        installApk("AppWithLongAttributionTag.apk")
+    }
+
+    @Test(expected = AssertionError::class)
+    fun cannotUseTooManyAttributions() {
+        installApk("AppWithTooManyAttributions.apk")
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/appop/src/android/app/appops/cts/FeatureTest.kt b/tests/tests/appop/src/android/app/appops/cts/FeatureTest.kt
deleted file mode 100644
index d199055..0000000
--- a/tests/tests/appop/src/android/app/appops/cts/FeatureTest.kt
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 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 android.app.appops.cts
-
-import android.app.AppOpsManager
-import android.app.AppOpsManager.OPSTR_WIFI_SCAN
-import android.app.AppOpsManager.OP_FLAGS_ALL
-import android.platform.test.annotations.AppModeFull
-import androidx.test.platform.app.InstrumentationRegistry
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import java.lang.AssertionError
-import java.lang.Thread.sleep
-
-private const val APK_PATH = "/data/local/tmp/cts/appops/"
-
-private const val APP_PKG = "android.app.appops.cts.apptoblame"
-
-private const val FEATURE_1 = "feature1"
-private const val FEATURE_2 = "feature2"
-private const val FEATURE_3 = "feature3"
-private const val FEATURE_4 = "feature4"
-private const val FEATURE_5 = "feature5"
-private const val FEATURE_6 = "feature6"
-private const val FEATURE_7 = "feature7"
-
-@AppModeFull(reason = "Test relies on seeing other apps. Instant apps can't see other apps")
-class FeatureTest {
-    private val instrumentation = InstrumentationRegistry.getInstrumentation()
-    private val context = instrumentation.targetContext
-    private val appOpsManager = context.getSystemService(AppOpsManager::class.java)
-    private val appUid by lazy { context.packageManager.getPackageUid(APP_PKG, 0) }
-
-    private fun installApk(apk: String) {
-        val result = runCommand("pm install -r --force-queryable $APK_PATH$apk")
-        assertThat(result.trim()).isEqualTo("Success")
-    }
-
-    @Before
-    fun resetTestApp() {
-        runCommand("pm uninstall $APP_PKG")
-        installApk("CtsAppToBlame1.apk")
-    }
-
-    private fun noteForFeature(feature: String) {
-        // Make sure note times as distinct
-        sleep(1)
-
-        runWithShellPermissionIdentity {
-            appOpsManager.noteOpNoThrow(OPSTR_WIFI_SCAN, appUid, APP_PKG, feature, null)
-        }
-    }
-
-    @Test
-    fun inheritNotedAppOpsOnUpgrade() {
-        noteForFeature(FEATURE_1)
-        noteForFeature(FEATURE_2)
-        noteForFeature(FEATURE_3)
-        noteForFeature(FEATURE_4)
-        noteForFeature(FEATURE_5)
-
-        val beforeUpdate = getOpEntry(appUid, APP_PKG, OPSTR_WIFI_SCAN)!!
-        installApk("CtsAppToBlame2.apk")
-
-        eventually {
-            val afterUpdate = getOpEntry(appUid, APP_PKG, OPSTR_WIFI_SCAN)!!
-
-            // Feature 1 is unchanged
-            assertThat(afterUpdate.features[FEATURE_1]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isEqualTo(beforeUpdate.features[FEATURE_1]!!.getLastAccessTime(OP_FLAGS_ALL))
-
-            // Feature 3 disappeared (i.e. was added into "null" feature)
-            assertThat(afterUpdate.features[null]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isEqualTo(beforeUpdate.features[FEATURE_3]!!.getLastAccessTime(OP_FLAGS_ALL))
-
-            // Feature 6 inherits from feature 2
-            assertThat(afterUpdate.features[FEATURE_6]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isEqualTo(beforeUpdate.features[FEATURE_2]!!.getLastAccessTime(OP_FLAGS_ALL))
-
-            // Feature 7 inherits from feature 4 and 5. 5 was noted after 4, hence 4 is removed
-            assertThat(afterUpdate.features[FEATURE_7]!!.getLastAccessTime(OP_FLAGS_ALL))
-                    .isEqualTo(beforeUpdate.features[FEATURE_5]!!.getLastAccessTime(OP_FLAGS_ALL))
-        }
-    }
-
-    @Test(expected = AssertionError::class)
-    fun cannotInheritFromSelf() {
-        installApk("AppWithFeatureInheritingFromSelf.apk")
-    }
-
-    @Test(expected = AssertionError::class)
-    fun noDuplicateFeatures() {
-        installApk("AppWithDuplicateFeature.apk")
-    }
-
-    @Test(expected = AssertionError::class)
-    fun cannotInheritFromExisting() {
-        installApk("AppWithFeatureInheritingFromExisting.apk")
-    }
-
-    @Test(expected = AssertionError::class)
-    fun cannotInheritFromSameAsOther() {
-        installApk("AppWithFeatureInheritingFromSameAsOther.apk")
-    }
-
-    @Test(expected = AssertionError::class)
-    fun cannotUseVeryLongFeatureIDs() {
-        installApk("AppWithLongFeatureIdFeature.apk")
-    }
-
-    @Test(expected = AssertionError::class)
-    fun cannotUseTooManyFeatures() {
-        installApk("AppWithTooManyFeatures.apk")
-    }
-}
\ No newline at end of file
diff --git a/tests/tests/appop/src/android/app/appops/cts/HistoricalAppopsTest.kt b/tests/tests/appop/src/android/app/appops/cts/HistoricalAppopsTest.kt
index 28ebc26..eaef444 100644
--- a/tests/tests/appop/src/android/app/appops/cts/HistoricalAppopsTest.kt
+++ b/tests/tests/appop/src/android/app/appops/cts/HistoricalAppopsTest.kt
@@ -201,7 +201,7 @@
     }
 
     @Test
-    fun testGetHistoricalAggregationOverFeatures() {
+    fun testGetHistoricalAggregationOverAttributions() {
         // Configure historical registry behavior.
         appOpsManager.setHistoryParameters(
                 AppOpsManager.HISTORICAL_MODE_ENABLED_ACTIVE,
@@ -212,17 +212,19 @@
 
         UidStateForceActivity.waitForResumed()
 
-        appOpsManager.noteOp(OPSTR_REQUEST_DELETE_PACKAGES, uid, packageName, "firstFeature", null)
-        appOpsManager.noteOp(OPSTR_REQUEST_DELETE_PACKAGES, uid, packageName, "secondFeature", null)
+        appOpsManager.noteOp(OPSTR_REQUEST_DELETE_PACKAGES, uid, packageName, "firstAttribution",
+                null)
+        appOpsManager.noteOp(OPSTR_REQUEST_DELETE_PACKAGES, uid, packageName, "secondAttribution",
+                null)
 
         val memOps = getHistoricalOps(appOpsManager, uid = uid)!!
 
         assertThat(memOps.getUidOpsAt(0).getPackageOpsAt(0).getOp(OPSTR_REQUEST_DELETE_PACKAGES)!!
                 .getForegroundAccessCount(OP_FLAGS_ALL)).isEqualTo(2)
-        assertThat(memOps.getUidOpsAt(0).getPackageOpsAt(0).getFeatureOps("firstFeature")!!
+        assertThat(memOps.getUidOpsAt(0).getPackageOpsAt(0).getAttributedOps("firstAttribution")!!
                 .getOp(OPSTR_REQUEST_DELETE_PACKAGES)!!.getForegroundAccessCount(OP_FLAGS_ALL))
                 .isEqualTo(1)
-        assertThat(memOps.getUidOpsAt(0).getPackageOpsAt(0).getFeatureOps("secondFeature")!!
+        assertThat(memOps.getUidOpsAt(0).getPackageOpsAt(0).getAttributedOps("secondAttribution")!!
                 .getOp(OPSTR_REQUEST_DELETE_PACKAGES)!!.getForegroundAccessCount(OP_FLAGS_ALL))
                 .isEqualTo(1)
 
diff --git a/tests/tests/appop/src/android/app/appops/cts/RuntimeMessageCollectionTest.kt b/tests/tests/appop/src/android/app/appops/cts/RuntimeMessageCollectionTest.kt
index e6730c1..d5e8748 100644
--- a/tests/tests/appop/src/android/app/appops/cts/RuntimeMessageCollectionTest.kt
+++ b/tests/tests/appop/src/android/app/appops/cts/RuntimeMessageCollectionTest.kt
@@ -58,7 +58,7 @@
             val start = System.currentTimeMillis()
             runWithShellPermissionIdentity {
                 appOpsManager.noteOp(AppOpsManager.OPSTR_READ_CONTACTS, appUid, APP_PKG,
-                        TEST_FEATURE_ID, MESSAGE)
+                        TEST_ATTRIBUTION_TAG, MESSAGE)
             }
             while (System.currentTimeMillis() - start < TIMEOUT_MILLIS) {
                 sleep(200)
@@ -68,7 +68,7 @@
                     if (message != null && message.packageName.equals(APP_PKG)) {
                         assertThat(message.op).isEqualTo(AppOpsManager.OPSTR_READ_CONTACTS)
                         assertThat(message.uid).isEqualTo(appUid)
-                        assertThat(message.featureId).isEqualTo(TEST_FEATURE_ID)
+                        assertThat(message.attributionTag).isEqualTo(TEST_ATTRIBUTION_TAG)
                         assertThat(message.message).isEqualTo(MESSAGE)
                         assertThat(message.samplingStrategy)
                                 .isEqualTo(RUNTIME_APP_OP_ACCESS__SAMPLING_STRATEGY__RARELY_USED)
diff --git a/tests/tests/content/src/android/content/cts/ContextTest.java b/tests/tests/content/src/android/content/cts/ContextTest.java
index 5a41584..f6f7cf5 100644
--- a/tests/tests/content/src/android/content/cts/ContextTest.java
+++ b/tests/tests/content/src/android/content/cts/ContextTest.java
@@ -1414,6 +1414,64 @@
         }.run();
     }
 
+    /** The receiver should get the broadcast if it has all the permissions. */
+    public void testSendBroadcastWithMultiplePermissions_receiverHasAllPermissions()
+            throws Exception {
+        final ResultReceiver receiver = new ResultReceiver();
+
+        registerBroadcastReceiver(receiver, new IntentFilter(ResultReceiver.MOCK_ACTION));
+
+        mContext.sendBroadcastWithMultiplePermissions(
+                new Intent(ResultReceiver.MOCK_ACTION),
+                new String[] { // this test APK has both these permissions
+                        android.Manifest.permission.ACCESS_WIFI_STATE,
+                        android.Manifest.permission.ACCESS_NETWORK_STATE,
+                });
+
+        new PollingCheck(BROADCAST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return receiver.hasReceivedBroadCast();
+            }
+        }.run();
+    }
+
+    /** The receiver should not get the broadcast if it does not have all the permissions. */
+    public void testSendBroadcastWithMultiplePermissions_receiverHasSomePermissions()
+            throws Exception {
+        final ResultReceiver receiver = new ResultReceiver();
+
+        registerBroadcastReceiver(receiver, new IntentFilter(ResultReceiver.MOCK_ACTION));
+
+        mContext.sendBroadcastWithMultiplePermissions(
+                new Intent(ResultReceiver.MOCK_ACTION),
+                new String[] { // this test APK only has ACCESS_WIFI_STATE
+                        android.Manifest.permission.ACCESS_WIFI_STATE,
+                        android.Manifest.permission.NETWORK_STACK,
+                });
+
+        Thread.sleep(BROADCAST_TIMEOUT);
+        assertFalse(receiver.hasReceivedBroadCast());
+    }
+
+    /** The receiver should not get the broadcast if it has none of the permissions. */
+    public void testSendBroadcastWithMultiplePermissions_receiverHasNoPermissions()
+            throws Exception {
+        final ResultReceiver receiver = new ResultReceiver();
+
+        registerBroadcastReceiver(receiver, new IntentFilter(ResultReceiver.MOCK_ACTION));
+
+        mContext.sendBroadcastWithMultiplePermissions(
+                new Intent(ResultReceiver.MOCK_ACTION),
+                new String[] { // this test APK has neither of these permissions
+                        android.Manifest.permission.NETWORK_SETTINGS,
+                        android.Manifest.permission.NETWORK_STACK,
+                });
+
+        Thread.sleep(BROADCAST_TIMEOUT);
+        assertFalse(receiver.hasReceivedBroadCast());
+    }
+
     public void testEnforceCallingOrSelfUriPermission() {
         try {
             Uri uri = Uri.parse("content://ctstest");
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
index 46592ca..5cb08a1 100644
--- a/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
@@ -53,6 +53,7 @@
 import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 import static org.hamcrest.Matchers.hasItems;
 
+import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Build;
 import android.os.SystemProperties;
@@ -164,6 +165,10 @@
                 KM_PURPOSE_SIGN, KM_PURPOSE_VERIFY, KM_PURPOSE_SIGN | KM_PURPOSE_VERIFY
         };
 
+        // Skip the test if there is no secure lock screen
+        if (!hasSecureLockScreen()) {
+            return;
+        }
         for (int curveIndex = 0; curveIndex < curves.length; ++curveIndex) {
             for (int challengeIndex = 0; challengeIndex < challenges.length; ++challengeIndex) {
                 for (int purposeIndex = 0; purposeIndex < purposes.length; ++purposeIndex) {
@@ -326,6 +331,10 @@
                 },
         };
 
+        // Skip the test if there is no secure lock screen
+        if (!hasSecureLockScreen()) {
+            return;
+        }
         for (int keySize : keySizes) {
             for (byte[] challenge : challenges) {
                 for (int purpose : purposes) {
@@ -1145,4 +1154,15 @@
             }
         }
     }
+    /*
+     * Device that don't report android.software.device_admin doesn't have secure lock screen
+     * because device with secure lock screen MUST report android.software.device_admin .
+     *
+     * https://source.android.com/compatibility/7.0/android-7.0-cdd.html#3_9_device_administration
+     *
+     */
+    private boolean hasSecureLockScreen() {
+        PackageManager pm = getContext().getPackageManager();
+        return pm.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN);
+    }
 }
diff --git a/tests/tests/net/ipsec/OWNERS b/tests/tests/net/ipsec/OWNERS
new file mode 100644
index 0000000..26407ff
--- /dev/null
+++ b/tests/tests/net/ipsec/OWNERS
@@ -0,0 +1,3 @@
+lorenzo@google.com
+nharold@google.com
+satk@google.com
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java
index f4c20e3..870cf72 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java
@@ -66,6 +66,7 @@
 import com.android.compatibility.common.util.PollingCheck;
 import com.android.compatibility.common.util.ShellIdentityUtils;
 import com.android.compatibility.common.util.SystemUtil;
+import com.android.compatibility.common.util.ThrowingRunnable;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -76,6 +77,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Objects;
+import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
@@ -1067,6 +1069,23 @@
         }
     }
 
+    private void runWithScanningEnabled(ThrowingRunnable r) throws Exception {
+        boolean wasScanEnabledForTest = false;
+        if (!mWifiManager.isScanAlwaysAvailable()) {
+            ShellIdentityUtils.invokeWithShellPermissions(
+                    () -> mWifiManager.setScanAlwaysAvailable(true));
+            wasScanEnabledForTest = true;
+        }
+        try {
+            r.run();
+        } finally {
+            if (wasScanEnabledForTest) {
+                ShellIdentityUtils.invokeWithShellPermissions(
+                        () -> mWifiManager.setScanAlwaysAvailable(false));
+            }
+        }
+    }
+
     /**
      * Verify that Wi-Fi scanning is not turned off when the screen turns off while wifi is disabled
      * but location is on.
@@ -1085,17 +1104,16 @@
             fail("Please enable location for this test - since Marshmallow WiFi scan results are"
                     + " empty when location is disabled!");
         }
-        if(!mWifiManager.isScanAlwaysAvailable()) {
-            fail("Please enable Wi-Fi scanning for this test!");
-        }
-        setWifiEnabled(false);
-        turnScreenOn();
-        assertWifiScanningIsOn();
-        // Toggle screen and verify Wi-Fi scanning is still on.
-        turnScreenOff();
-        assertWifiScanningIsOn();
-        turnScreenOn();
-        assertWifiScanningIsOn();
+        runWithScanningEnabled(() -> {
+            setWifiEnabled(false);
+            turnScreenOn();
+            assertWifiScanningIsOn();
+            // Toggle screen and verify Wi-Fi scanning is still on.
+            turnScreenOff();
+            assertWifiScanningIsOn();
+            turnScreenOn();
+            assertWifiScanningIsOn();
+        });
     }
 
     /**
@@ -1115,17 +1133,16 @@
             fail("Please enable location for this test - since Marshmallow WiFi scan results are"
                     + " empty when location is disabled!");
         }
-        if(!mWifiManager.isScanAlwaysAvailable()) {
-            fail("Please enable Wi-Fi scanning for this test!");
-        }
-        setWifiEnabled(true);
-        turnScreenOn();
-        assertWifiScanningIsOn();
-        // Toggle screen and verify Wi-Fi scanning is still on.
-        turnScreenOff();
-        assertWifiScanningIsOn();
-        turnScreenOn();
-        assertWifiScanningIsOn();
+        runWithScanningEnabled(() -> {
+            setWifiEnabled(true);
+            turnScreenOn();
+            assertWifiScanningIsOn();
+            // Toggle screen and verify Wi-Fi scanning is still on.
+            turnScreenOff();
+            assertWifiScanningIsOn();
+            turnScreenOn();
+            assertWifiScanningIsOn();
+        });
     }
 
     /**
diff --git a/tests/tests/net/src/android/net/wifi/p2p/cts/WifiP2pDeviceTest.java b/tests/tests/net/src/android/net/wifi/p2p/cts/WifiP2pDeviceTest.java
new file mode 100644
index 0000000..1510d7c
--- /dev/null
+++ b/tests/tests/net/src/android/net/wifi/p2p/cts/WifiP2pDeviceTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 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 android.net.wifi.p2p.cts;
+
+import android.net.InetAddresses;
+import android.net.wifi.p2p.WifiP2pDevice;
+import android.test.AndroidTestCase;
+
+public class WifiP2pDeviceTest extends AndroidTestCase {
+
+    public void testDefaultWpsMethodSupportCheck() {
+        WifiP2pDevice dev = new WifiP2pDevice();
+
+        assertFalse(dev.wpsPbcSupported());
+        assertFalse(dev.wpsDisplaySupported());
+        assertFalse(dev.wpsKeypadSupported());
+    }
+
+    public void testDefaultDeviceCapabilityCheck() {
+        WifiP2pDevice dev = new WifiP2pDevice();
+
+        assertFalse(dev.isServiceDiscoveryCapable());
+    }
+}
diff --git a/tests/tests/net/src/android/net/wifi/p2p/cts/WifiP2pServiceRequestTest.java b/tests/tests/net/src/android/net/wifi/p2p/cts/WifiP2pServiceRequestTest.java
new file mode 100644
index 0000000..b363b1e
--- /dev/null
+++ b/tests/tests/net/src/android/net/wifi/p2p/cts/WifiP2pServiceRequestTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 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 android.net.wifi.p2p.cts;
+
+import android.net.wifi.p2p.nsd.WifiP2pServiceInfo;
+import android.net.wifi.p2p.nsd.WifiP2pServiceRequest;
+import android.net.wifi.p2p.nsd.WifiP2pUpnpServiceRequest;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
+
+public class WifiP2pServiceRequestTest extends AndroidTestCase {
+
+    private final int TEST_UPNP_VERSION = 0x10;
+    private final String TEST_UPNP_QUERY = "ssdp:all";
+
+    private String bin2HexStr(byte[] data) {
+        StringBuffer sb = new StringBuffer();
+        for (byte b: data) {
+            sb.append(String.format(Locale.US, "%02x", b & 0xff));
+        }
+        return sb.toString();
+    }
+
+    public void testValidRawRequest() throws IllegalArgumentException {
+        StringBuffer sb = new StringBuffer();
+        sb.append(String.format(Locale.US, "%02x", TEST_UPNP_VERSION));
+        sb.append(bin2HexStr(TEST_UPNP_QUERY.getBytes()));
+
+        WifiP2pServiceRequest rawRequest =
+                WifiP2pServiceRequest.newInstance(
+                        WifiP2pServiceInfo.SERVICE_TYPE_UPNP,
+                        sb.toString());
+
+        WifiP2pUpnpServiceRequest upnpRequest =
+                WifiP2pUpnpServiceRequest.newInstance(
+                        TEST_UPNP_QUERY);
+
+        assertEquals(rawRequest, upnpRequest);
+    }
+
+    public void testInvalidRawRequest() {
+        StringBuffer sb = new StringBuffer();
+        sb.append(String.format(Locale.US, "%02x", TEST_UPNP_VERSION));
+        sb.append(bin2HexStr(TEST_UPNP_QUERY.getBytes()));
+        sb.append("x");
+
+        try {
+            WifiP2pServiceRequest request =
+                    WifiP2pServiceRequest.newInstance(
+                            WifiP2pServiceInfo.SERVICE_TYPE_UPNP, sb.toString());
+            fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            return;
+        }
+    }
+}
diff --git a/tests/tests/security/src/android/security/cts/ActivityManagerTest.java b/tests/tests/security/src/android/security/cts/ActivityManagerTest.java
index 5a035dd..47730e1 100644
--- a/tests/tests/security/src/android/security/cts/ActivityManagerTest.java
+++ b/tests/tests/security/src/android/security/cts/ActivityManagerTest.java
@@ -15,11 +15,15 @@
  */
 package android.security.cts;
 
+import android.app.ActivityManager;
 import android.os.IBinder;
 import android.platform.test.annotations.SecurityTest;
+import android.util.Log;
 
 import junit.framework.TestCase;
 
+import java.lang.reflect.InvocationTargetException;
+
 @SecurityTest
 public class ActivityManagerTest extends TestCase {
 
@@ -44,4 +48,32 @@
             // Patched devices should throw this exception
         }
     }
+
+    // b/144285917
+    @SecurityTest(minPatchLevel = "2020-05")
+    public void testActivityManager_attachNullApplication() {
+        SecurityException securityException = null;
+        Exception unexpectedException = null;
+        try {
+            final Object iam = ActivityManager.class.getDeclaredMethod("getService").invoke(null);
+            Class.forName("android.app.IActivityManager").getDeclaredMethod("attachApplication",
+                    Class.forName("android.app.IApplicationThread"), long.class)
+                    .invoke(iam, null /* thread */, 0 /* startSeq */);
+        } catch (SecurityException e) {
+            securityException = e;
+        } catch (InvocationTargetException e) {
+            if (e.getCause() instanceof SecurityException) {
+                securityException = (SecurityException) e.getCause();
+            } else {
+                unexpectedException = e;
+            }
+        } catch (Exception e) {
+            unexpectedException = e;
+        }
+        if (unexpectedException != null) {
+            Log.w("ActivityManagerTest", "Unexpected exception", unexpectedException);
+        }
+
+        assertNotNull("Expect SecurityException by attaching null application", securityException);
+    }
 }
diff --git a/tests/tests/view/src/android/view/cts/PixelCopyTest.java b/tests/tests/view/src/android/view/cts/PixelCopyTest.java
index 51288cf..85c4094 100644
--- a/tests/tests/view/src/android/view/cts/PixelCopyTest.java
+++ b/tests/tests/view/src/android/view/cts/PixelCopyTest.java
@@ -796,12 +796,12 @@
         assertBitmapNotColor("Left edge", bitmap, edgeColor, 2, bitmap.getHeight() / 2);
 
         assertBitmapColor("Bottom edge", bitmap, edgeColor,
-                bitmap.getWidth() / 2, bitmap.getHeight() - 1);
+                bitmap.getWidth() / 2, bitmap.getHeight() - 2);
         assertBitmapNotColor("Bottom edge", bitmap, edgeColor,
                 bitmap.getWidth() / 2, bitmap.getHeight() - 3);
 
         assertBitmapColor("Right edge", bitmap, edgeColor,
-                bitmap.getWidth() - 1, bitmap.getHeight() / 2);
+                bitmap.getWidth() - 2, bitmap.getHeight() / 2);
         assertBitmapNotColor("Right edge", bitmap, edgeColor,
                 bitmap.getWidth() - 3, bitmap.getHeight() / 2);
     }