diff --git a/Android.mk b/Android.mk
index c753cfe..b00519f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,11 +1,9 @@
 # Local modifications:
-# * b/31757757 Precompiled proto classes have been included.
 # * removed com.google.android.backup.api_key. This should be added to
 #      the manifest in the top level directory.
 # * removed com.google.android.geo.API_KEY key. This should be added to
 #      the manifest files in java/com/android/incallui/calllocation/impl/
 #      and /java/com/android/incallui/maps/impl/
-# * b/35391680 apache temporarily included in the top level directory.
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
@@ -20,7 +18,6 @@
 
 # Primary dialer module sources.
 SRC_DIRS := \
-	apache \
 	$(BASE_DIR)/contacts/common \
 	$(BASE_DIR)/dialer \
 	$(BASE_DIR)/incallui \
@@ -57,8 +54,10 @@
 	$(BASE_DIR)/dialer/callcomposer/cameraui/res \
 	$(BASE_DIR)/dialer/callcomposer/res \
 	$(BASE_DIR)/dialer/calldetails/res \
+	$(BASE_DIR)/dialer/calllog/ui/res \
 	$(BASE_DIR)/dialer/calllogutils/res \
 	$(BASE_DIR)/dialer/common/res \
+	$(BASE_DIR)/dialer/contactsfragment/res \
 	$(BASE_DIR)/dialer/dialpadview/res \
 	$(BASE_DIR)/dialer/interactions/res \
 	$(BASE_DIR)/dialer/notification/res \
@@ -87,7 +86,7 @@
 	$(BASE_DIR)/incallui/video/impl/res \
 	$(BASE_DIR)/incallui/video/protocol/res \
 	$(BASE_DIR)/incallui/wifi/res \
-	$(BASE_DIR)/voicemail/impl/res
+	$(BASE_DIR)/voicemail/impl/res \
 
 
 # Dialer manifest files to merge.
@@ -104,8 +103,10 @@
 	$(BASE_DIR)/dialer/callcomposer/camera/camerafocus/AndroidManifest.xml \
 	$(BASE_DIR)/dialer/callcomposer/cameraui/AndroidManifest.xml \
 	$(BASE_DIR)/dialer/calldetails/AndroidManifest.xml \
+	$(BASE_DIR)/dialer/calllog/ui/AndroidManifest.xml \
 	$(BASE_DIR)/dialer/calllogutils/AndroidManifest.xml \
 	$(BASE_DIR)/dialer/common/AndroidManifest.xml \
+	$(BASE_DIR)/dialer/contactsfragment/AndroidManifest.xml \
 	$(BASE_DIR)/dialer/dialpadview/AndroidManifest.xml \
 	$(BASE_DIR)/dialer/interactions/AndroidManifest.xml \
 	$(BASE_DIR)/dialer/notification/AndroidManifest.xml \
@@ -134,7 +135,7 @@
 	$(BASE_DIR)/incallui/video/impl/AndroidManifest.xml \
 	$(BASE_DIR)/incallui/video/protocol/AndroidManifest.xml \
 	$(BASE_DIR)/incallui/wifi/AndroidManifest.xml \
-	$(BASE_DIR)/voicemail/impl/AndroidManifest.xml
+	$(BASE_DIR)/voicemail/impl/AndroidManifest.xml \
 
 
 # Merge all manifest files.
@@ -142,12 +143,9 @@
 	$(addprefix $(LOCAL_PATH)/, $(DIALER_MANIFEST_FILES))
 LOCAL_SRC_FILES := $(call all-java-files-under, $(SRC_DIRS))
 LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_FILES),$(LOCAL_SRC_FILES))
-# Native protobuf compilation disabled b/36564333
-# Include protocol buffers and use the nano compiler.
-# LOCAL_SRC_FILES += $(call all-proto-files-under, $(SRC_DIRS))
-# LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-# LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)
-# LOCAL_PROTO_JAVA_OUTPUT_PARAMS := enum_style=java,generate_clear=true,store_unknown_fields=true,generate_equals=true
+LOCAL_SRC_FILES += $(call all-proto-files-under, $(SRC_DIRS))
+LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)
+
 LOCAL_RESOURCE_DIR := \
 	$(addprefix $(LOCAL_PATH)/, $(RES_DIRS)) \
 	$(support_library_root_dir)/design/res \
@@ -156,8 +154,6 @@
 	$(support_library_root_dir)/v7/cardview/res \
 	$(support_library_root_dir)/v7/recyclerview/res
 
-LOCAL_USE_AAPT2 := true
-
 # We specify each package explicitly to glob resource files.
 LOCAL_AAPT_FLAGS := \
 	--auto-add-overlay \
@@ -171,8 +167,10 @@
 	--extra-packages com.android.dialer.callcomposer.camera.camerafocus \
 	--extra-packages com.android.dialer.callcomposer.cameraui \
 	--extra-packages com.android.dialer.calldetails \
+	--extra-packages com.android.dialer.calllog.ui \
 	--extra-packages com.android.dialer.calllogutils \
 	--extra-packages com.android.dialer.common \
+	--extra-packages com.android.dialer.contactsfragment \
 	--extra-packages com.android.dialer.dialpadview \
 	--extra-packages com.android.dialer.interactions \
 	--extra-packages com.android.dialer.notification \
@@ -223,9 +221,10 @@
 	dialer-javax-annotation-api-target \
 	dialer-javax-inject-target \
 	dialer-libshortcutbadger-target \
+	dialer-mime4j-core-target \
+	dialer-mime4j-dom-target \
 	jsr305 \
 	libphonenumber \
-	libprotobuf-java-nano \
 	volley \
 
 LOCAL_STATIC_ANDROID_LIBRARIES := \
@@ -278,6 +277,11 @@
 LOCAL_PACKAGE_NAME := Dialer
 LOCAL_CERTIFICATE := shared
 LOCAL_PRIVILEGED_MODULE := true
+LOCAL_USE_AAPT2 := true
+
+# b/37483961 - Jack Not Compiling Dagger Class Properly
+LOCAL_JACK_ENABLED := javac_frontend
+
 include $(BUILD_PACKAGE)
 
 # Cleanup local state
@@ -293,10 +297,10 @@
 include $(CLEAR_VARS)
 
 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
-    dialer-dagger2-compiler:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-compiler/2.6/dagger-compiler-2.6$(COMMON_JAVA_PACKAGE_SUFFIX) \
+    dialer-dagger2-compiler:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-compiler/2.7/dagger-compiler-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \
     dialer-auto-value:../../../prebuilts/tools/common/m2/repository/com/google/auto/value/auto-value/1.3/auto-value-1.3$(COMMON_JAVA_PACKAGE_SUFFIX) \
-    dialer-dagger2:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger/2.6/dagger-2.6$(COMMON_JAVA_PACKAGE_SUFFIX) \
-    dialer-dagger2-producers:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-producers/2.6/dagger-producers-2.6$(COMMON_JAVA_PACKAGE_SUFFIX) \
+    dialer-dagger2:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger/2.7/dagger-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \
+    dialer-dagger2-producers:../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger-producers/2.7/dagger-producers-2.7$(COMMON_JAVA_PACKAGE_SUFFIX) \
     dialer-guava:../../../prebuilts/tools/common/m2/repository/com/google/guava/guava/20.0/guava-20.0$(COMMON_JAVA_PACKAGE_SUFFIX) \
     dialer-javax-annotation-api:../../../prebuilts/tools/common/m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2$(COMMON_JAVA_PACKAGE_SUFFIX) \
     dialer-javax-inject:../../../prebuilts/tools/common/m2/repository/javax/inject/javax.inject/1/javax.inject-1$(COMMON_JAVA_PACKAGE_SUFFIX)
@@ -320,7 +324,7 @@
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 LOCAL_MODULE := dialer-dagger2-target
 LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger/2.6/dagger-2.6$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/com/google/dagger/dagger/2.7/dagger-2.7$(COMMON_JAVA_PACKAGE_SUFFIX)
 LOCAL_UNINSTALLABLE_MODULE := true
 
 include $(BUILD_PREBUILT)
@@ -387,8 +391,6 @@
 
 include $(CLEAR_VARS)
 
-include $(CLEAR_VARS)
-
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 LOCAL_MODULE := dialer-commons-io-target
 LOCAL_SDK_VERSION := current
@@ -398,3 +400,23 @@
 include $(BUILD_PREBUILT)
 
 include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_MODULE := dialer-mime4j-core-target
+LOCAL_SDK_VERSION := current
+LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/org/apache/james/apache-mime4j-core/0.7.2/apache-mime4j-core-0.7.2$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_MODULE := dialer-mime4j-dom-target
+LOCAL_SDK_VERSION := current
+LOCAL_SRC_FILES := ../../../prebuilts/tools/common/m2/repository/org/apache/james/apache-mime4j-dom/0.7.2/apache-mime4j-dom-0.7.2$(COMMON_JAVA_PACKAGE_SUFFIX)
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/BodyDescriptor.java b/apache/org/apache/james/mime4j/BodyDescriptor.java
deleted file mode 100644
index 867c43d..0000000
--- a/apache/org/apache/james/mime4j/BodyDescriptor.java
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Encapsulates the values of the MIME-specific header fields
- * (which starts with <code>Content-</code>).
- *
- *
- * @version $Id: BodyDescriptor.java,v 1.4 2005/02/11 10:08:37 ntherning Exp $
- */
-public class BodyDescriptor {
-    private static Log log = LogFactory.getLog(BodyDescriptor.class);
-
-    private String mimeType = "text/plain";
-    private String boundary = null;
-    private String charset = "us-ascii";
-    private String transferEncoding = "7bit";
-    private Map<String, String> parameters = new HashMap<String, String>();
-    private boolean contentTypeSet = false;
-    private boolean contentTransferEncSet = false;
-
-    /**
-     * Creates a new root <code>BodyDescriptor</code> instance.
-     */
-    public BodyDescriptor() {
-        this(null);
-    }
-
-    /**
-     * Creates a new <code>BodyDescriptor</code> instance.
-     *
-     * @param parent the descriptor of the parent or <code>null</code> if this
-     *        is the root descriptor.
-     */
-    public BodyDescriptor(BodyDescriptor parent) {
-        if (parent != null && parent.isMimeType("multipart/digest")) {
-            mimeType = "message/rfc822";
-        } else {
-            mimeType = "text/plain";
-        }
-    }
-
-    /**
-     * Should be called for each <code>Content-</code> header field of
-     * a MIME message or part.
-     *
-     * @param name the field name.
-     * @param value the field value.
-     */
-    public void addField(String name, String value) {
-
-        name = name.trim().toLowerCase();
-
-        if (name.equals("content-transfer-encoding") && !contentTransferEncSet) {
-            contentTransferEncSet = true;
-
-            value = value.trim().toLowerCase();
-            if (value.length() > 0) {
-                transferEncoding = value;
-            }
-
-        } else if (name.equals("content-type") && !contentTypeSet) {
-            contentTypeSet = true;
-
-            value = value.trim();
-
-            /*
-             * Unfold Content-Type value
-             */
-            StringBuffer sb = new StringBuffer();
-            for (int i = 0; i < value.length(); i++) {
-                char c = value.charAt(i);
-                if (c == '\r' || c == '\n') {
-                    continue;
-                }
-                sb.append(c);
-            }
-
-            Map<String, String> params = getHeaderParams(sb.toString());
-
-            String main = params.get("");
-            if (main != null) {
-                main = main.toLowerCase().trim();
-                int index = main.indexOf('/');
-                boolean valid = false;
-                if (index != -1) {
-                    String type = main.substring(0, index).trim();
-                    String subtype = main.substring(index + 1).trim();
-                    if (type.length() > 0 && subtype.length() > 0) {
-                        main = type + "/" + subtype;
-                        valid = true;
-                    }
-                }
-
-                if (!valid) {
-                    main = null;
-                }
-            }
-            String b = params.get("boundary");
-
-            if (main != null
-                    && ((main.startsWith("multipart/") && b != null)
-                            || !main.startsWith("multipart/"))) {
-
-                mimeType = main;
-            }
-
-            if (isMultipart()) {
-                boundary = b;
-            }
-
-            String c = params.get("charset");
-            if (c != null) {
-                c = c.trim();
-                if (c.length() > 0) {
-                    charset = c.toLowerCase();
-                }
-            }
-
-            /*
-             * Add all other parameters to parameters.
-             */
-            parameters.putAll(params);
-            parameters.remove("");
-            parameters.remove("boundary");
-            parameters.remove("charset");
-        }
-    }
-
-    private Map<String, String> getHeaderParams(String headerValue) {
-        Map<String, String> result = new HashMap<String, String>();
-
-        // split main value and parameters
-        String main;
-        String rest;
-        if (headerValue.indexOf(";") == -1) {
-            main = headerValue;
-            rest = null;
-        } else {
-            main = headerValue.substring(0, headerValue.indexOf(";"));
-            rest = headerValue.substring(main.length() + 1);
-        }
-
-        result.put("", main);
-        if (rest != null) {
-            char[] chars = rest.toCharArray();
-            StringBuffer paramName = new StringBuffer();
-            StringBuffer paramValue = new StringBuffer();
-
-            final byte READY_FOR_NAME = 0;
-            final byte IN_NAME = 1;
-            final byte READY_FOR_VALUE = 2;
-            final byte IN_VALUE = 3;
-            final byte IN_QUOTED_VALUE = 4;
-            final byte VALUE_DONE = 5;
-            final byte ERROR = 99;
-
-            byte state = READY_FOR_NAME;
-            boolean escaped = false;
-            for (int i = 0; i < chars.length; i++) {
-                char c = chars[i];
-
-                switch (state) {
-                    case ERROR:
-                        if (c == ';')
-                            state = READY_FOR_NAME;
-                        break;
-
-                    case READY_FOR_NAME:
-                        if (c == '=') {
-                            log.error("Expected header param name, got '='");
-                            state = ERROR;
-                            break;
-                        }
-
-                        paramName = new StringBuffer();
-                        paramValue = new StringBuffer();
-
-                        state = IN_NAME;
-                        // $FALL-THROUGH$
-
-                    case IN_NAME:
-                        if (c == '=') {
-                            if (paramName.length() == 0)
-                                state = ERROR;
-                            else
-                                state = READY_FOR_VALUE;
-                            break;
-                        }
-
-                        // not '='... just add to name
-                        paramName.append(c);
-                        break;
-
-                    case READY_FOR_VALUE:
-                        boolean fallThrough = false;
-                        switch (c) {
-                            case ' ':
-                            case '\t':
-                                break;  // ignore spaces, especially before '"'
-
-                            case '"':
-                                state = IN_QUOTED_VALUE;
-                                break;
-
-                            default:
-                                state = IN_VALUE;
-                                fallThrough = true;
-                                break;
-                        }
-                        if (!fallThrough)
-                            break;
-
-                        // $FALL-THROUGH$
-
-                    case IN_VALUE:
-                        fallThrough = false;
-                        switch (c) {
-                            case ';':
-                            case ' ':
-                            case '\t':
-                                result.put(
-                                   paramName.toString().trim().toLowerCase(),
-                                   paramValue.toString().trim());
-                                state = VALUE_DONE;
-                                fallThrough = true;
-                                break;
-                            default:
-                                paramValue.append(c);
-                                break;
-                        }
-                        if (!fallThrough)
-                            break;
-
-                        // $FALL-THROUGH$
-
-                    case VALUE_DONE:
-                        switch (c) {
-                            case ';':
-                                state = READY_FOR_NAME;
-                                break;
-
-                            case ' ':
-                            case '\t':
-                                break;
-
-                            default:
-                                state = ERROR;
-                                break;
-                        }
-                        break;
-
-                    case IN_QUOTED_VALUE:
-                        switch (c) {
-                            case '"':
-                                if (!escaped) {
-                                    // don't trim quoted strings; the spaces could be intentional.
-                                    result.put(
-                                            paramName.toString().trim().toLowerCase(),
-                                            paramValue.toString());
-                                    state = VALUE_DONE;
-                                } else {
-                                    escaped = false;
-                                    paramValue.append(c);
-                                }
-                                break;
-
-                            case '\\':
-                                if (escaped) {
-                                    paramValue.append('\\');
-                                }
-                                escaped = !escaped;
-                                break;
-
-                            default:
-                                if (escaped) {
-                                    paramValue.append('\\');
-                                }
-                                escaped = false;
-                                paramValue.append(c);
-                                break;
-                        }
-                        break;
-
-                }
-            }
-
-            // done looping.  check if anything is left over.
-            if (state == IN_VALUE) {
-                result.put(
-                        paramName.toString().trim().toLowerCase(),
-                        paramValue.toString().trim());
-            }
-        }
-
-        return result;
-    }
-
-
-    public boolean isMimeType(String mimeType) {
-        return this.mimeType.equals(mimeType.toLowerCase());
-    }
-
-    /**
-     * Return true if the BodyDescriptor belongs to a message
-     */
-    public boolean isMessage() {
-        return mimeType.equals("message/rfc822");
-    }
-
-    /**
-     * Return true if the BodyDescripotro belongs to a multipart
-     */
-    public boolean isMultipart() {
-        return mimeType.startsWith("multipart/");
-    }
-
-    /**
-     * Return the MimeType
-     */
-    public String getMimeType() {
-        return mimeType;
-    }
-
-    /**
-     * Return the boundary
-     */
-    public String getBoundary() {
-        return boundary;
-    }
-
-    /**
-     * Return the charset
-     */
-    public String getCharset() {
-        return charset;
-    }
-
-    /**
-     * Return all parameters for the BodyDescriptor
-     */
-    public Map<String, String> getParameters() {
-        return parameters;
-    }
-
-    /**
-     * Return the TransferEncoding
-     */
-    public String getTransferEncoding() {
-        return transferEncoding;
-    }
-
-    /**
-     * Return true if it's base64 encoded
-     */
-    public boolean isBase64Encoded() {
-        return "base64".equals(transferEncoding);
-    }
-
-    /**
-     * Return true if it's quoted-printable
-     */
-    public boolean isQuotedPrintableEncoded() {
-        return "quoted-printable".equals(transferEncoding);
-    }
-
-    @Override
-    public String toString() {
-        return mimeType;
-    }
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/CloseShieldInputStream.java b/apache/org/apache/james/mime4j/CloseShieldInputStream.java
deleted file mode 100644
index d9f3b07..0000000
--- a/apache/org/apache/james/mime4j/CloseShieldInputStream.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j;
-
-import java.io.InputStream;
-import java.io.IOException;
-
-/**
- * InputStream that shields its underlying input stream from
- * being closed.
- *
- *
- * @version $Id: CloseShieldInputStream.java,v 1.2 2004/10/02 12:41:10 ntherning Exp $
- */
-public class CloseShieldInputStream extends InputStream {
-
-    /**
-     * Underlying InputStream
-     */
-    private InputStream is;
-
-    public CloseShieldInputStream(InputStream is) {
-        this.is = is;
-    }
-
-    public InputStream getUnderlyingStream() {
-        return is;
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        checkIfClosed();
-        return is.read();
-    }
-
-    /**
-     * @see java.io.InputStream#available()
-     */
-    public int available() throws IOException {
-        checkIfClosed();
-        return is.available();
-    }
-
-
-    /**
-     * Set the underlying InputStream to null
-     */
-    public void close() throws IOException {
-        is = null;
-    }
-
-    /**
-     * @see java.io.FilterInputStream#reset()
-     */
-    public synchronized void reset() throws IOException {
-        checkIfClosed();
-        is.reset();
-    }
-
-    /**
-     * @see java.io.FilterInputStream#markSupported()
-     */
-    public boolean markSupported() {
-        if (is == null)
-            return false;
-        return is.markSupported();
-    }
-
-    /**
-     * @see java.io.FilterInputStream#mark(int)
-     */
-    public synchronized void mark(int readlimit) {
-        if (is != null)
-            is.mark(readlimit);
-    }
-
-    /**
-     * @see java.io.FilterInputStream#skip(long)
-     */
-    public long skip(long n) throws IOException {
-        checkIfClosed();
-        return is.skip(n);
-    }
-
-    /**
-     * @see java.io.FilterInputStream#read(byte[])
-     */
-    public int read(byte b[]) throws IOException {
-        checkIfClosed();
-        return is.read(b);
-    }
-
-    /**
-     * @see java.io.FilterInputStream#read(byte[], int, int)
-     */
-    public int read(byte b[], int off, int len) throws IOException {
-        checkIfClosed();
-        return is.read(b, off, len);
-    }
-
-    /**
-     * Check if the underlying InputStream is null. If so throw an Exception
-     *
-     * @throws IOException if the underlying InputStream is null
-     */
-    private void checkIfClosed() throws IOException {
-        if (is == null)
-            throw new IOException("Stream is closed");
-    }
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/ContentHandler.java b/apache/org/apache/james/mime4j/ContentHandler.java
deleted file mode 100644
index b437e73..0000000
--- a/apache/org/apache/james/mime4j/ContentHandler.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * <p>
- * Receives notifications of the content of a plain RFC822 or MIME message.
- * Implement this interface and register an instance of that implementation
- * with a <code>MimeStreamParser</code> instance using its
- * {@link org.apache.james.mime4j.MimeStreamParser#setContentHandler(ContentHandler)}
- * method. The parser uses the <code>ContentHandler</code> instance to report
- * basic message-related events like the start and end of the body of a
- * part in a multipart MIME entity.
- * </p>
- * <p>
- * Events will be generated in the order the corresponding elements occur in
- * the message stream parsed by the parser. E.g.:
- * <pre>
- *      startMessage()
- *          startHeader()
- *              field(...)
- *              field(...)
- *              ...
- *          endHeader()
- *          startMultipart()
- *              preamble(...)
- *              startBodyPart()
- *                  startHeader()
- *                      field(...)
- *                      field(...)
- *                      ...
- *                  endHeader()
- *                  body()
- *              endBodyPart()
- *              startBodyPart()
- *                  startHeader()
- *                      field(...)
- *                      field(...)
- *                      ...
- *                  endHeader()
- *                  body()
- *              endBodyPart()
- *              epilogue(...)
- *          endMultipart()
- *      endMessage()
- * </pre>
- * The above shows an example of a MIME message consisting of a multipart
- * body containing two body parts.
- * </p>
- * <p>
- * See MIME RFCs 2045-2049 for more information on the structure of MIME
- * messages and RFC 822 and 2822 for the general structure of Internet mail
- * messages.
- * </p>
- *
- *
- * @version $Id: ContentHandler.java,v 1.3 2004/10/02 12:41:10 ntherning Exp $
- */
-public interface ContentHandler {
-    /**
-     * Called when a new message starts (a top level message or an embedded
-     * rfc822 message).
-     */
-    void startMessage();
-
-    /**
-     * Called when a message ends.
-     */
-    void endMessage();
-
-    /**
-     * Called when a new body part starts inside a
-     * <code>multipart/*</code> entity.
-     */
-    void startBodyPart();
-
-    /**
-     * Called when a body part ends.
-     */
-    void endBodyPart();
-
-    /**
-     * Called when a header (of a message or body part) is about to be parsed.
-     */
-    void startHeader();
-
-    /**
-     * Called for each field of a header.
-     *
-     * @param fieldData the raw contents of the field
-     *        (<code>Field-Name: field value</code>). The value will not be
-     *        unfolded.
-     */
-    void field(String fieldData);
-
-    /**
-     * Called when there are no more header fields in a message or body part.
-     */
-    void endHeader();
-
-    /**
-     * Called for the preamble (whatever comes before the first body part)
-     * of a <code>multipart/*</code> entity.
-     *
-     * @param is used to get the contents of the preamble.
-     * @throws IOException should be thrown on I/O errors.
-     */
-    void preamble(InputStream is) throws IOException;
-
-    /**
-     * Called for the epilogue (whatever comes after the final body part)
-     * of a <code>multipart/*</code> entity.
-     *
-     * @param is used to get the contents of the epilogue.
-     * @throws IOException should be thrown on I/O errors.
-     */
-    void epilogue(InputStream is) throws IOException;
-
-    /**
-     * Called when the body of a multipart entity is about to be parsed.
-     *
-     * @param bd encapsulates the values (either read from the
-     *        message stream or, if not present, determined implictly
-     *        as described in the
-     *        MIME rfc:s) of the <code>Content-Type</code> and
-     *        <code>Content-Transfer-Encoding</code> header fields.
-     */
-    void startMultipart(BodyDescriptor bd);
-
-    /**
-     * Called when the body of an entity has been parsed.
-     */
-    void endMultipart();
-
-    /**
-     * Called when the body of a discrete (non-multipart) entity is about to
-     * be parsed.
-     *
-     * @param bd see {@link #startMultipart(BodyDescriptor)}
-     * @param is the contents of the body. NOTE: this is the raw body contents
-     *           - it will not be decoded if encoded. The <code>bd</code>
-     *           parameter should be used to determine how the stream data
-     *           should be decoded.
-     * @throws IOException should be thrown on I/O errors.
-     */
-    void body(BodyDescriptor bd, InputStream is) throws IOException;
-
-    /**
-     * Called when a new entity (message or body part) starts and the
-     * parser is in <code>raw</code> mode.
-     *
-     * @param is the raw contents of the entity.
-     * @throws IOException should be thrown on I/O errors.
-     * @see MimeStreamParser#setRaw(boolean)
-     */
-    void raw(InputStream is) throws IOException;
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/EOLConvertingInputStream.java b/apache/org/apache/james/mime4j/EOLConvertingInputStream.java
deleted file mode 100644
index d6ef706..0000000
--- a/apache/org/apache/james/mime4j/EOLConvertingInputStream.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PushbackInputStream;
-
-/**
- * InputStream which converts <code>\r</code>
- * bytes not followed by <code>\n</code> and <code>\n</code> not
- * preceded by <code>\r</code> to <code>\r\n</code>.
- *
- *
- * @version $Id: EOLConvertingInputStream.java,v 1.4 2004/11/29 13:15:42 ntherning Exp $
- */
-public class EOLConvertingInputStream extends InputStream {
-    /** Converts single '\r' to '\r\n' */
-    public static final int CONVERT_CR   = 1;
-    /** Converts single '\n' to '\r\n' */
-    public static final int CONVERT_LF   = 2;
-    /** Converts single '\r' and '\n' to '\r\n' */
-    public static final int CONVERT_BOTH = 3;
-
-    private PushbackInputStream in = null;
-    private int previous = 0;
-    private int flags = CONVERT_BOTH;
-    private int size = 0;
-    private int pos = 0;
-    private int nextTenPctPos;
-    private int tenPctSize;
-    private Callback callback;
-
-    public interface Callback {
-        public void report(int bytesRead);
-    }
-
-    /**
-     * Creates a new <code>EOLConvertingInputStream</code>
-     * instance converting bytes in the given <code>InputStream</code>.
-     * The flag <code>CONVERT_BOTH</code> is the default.
-     *
-     * @param in the <code>InputStream</code> to read from.
-     */
-    public EOLConvertingInputStream(InputStream _in) {
-        super();
-        in = new PushbackInputStream(_in, 2);
-    }
-
-    /**
-     * Creates a new <code>EOLConvertingInputStream</code>
-     * instance converting bytes in the given <code>InputStream</code>.
-     *
-     * @param _in the <code>InputStream</code> to read from.
-     * @param _size the size of the input stream (need not be exact)
-     * @param _callback a callback reporting when each 10% of stream's size is reached
-     */
-    public EOLConvertingInputStream(InputStream _in, int _size, Callback _callback) {
-        this(_in);
-        size = _size;
-        tenPctSize = size / 10;
-        nextTenPctPos = tenPctSize;
-        callback = _callback;
-    }
-
-    /**
-     * Closes the underlying stream.
-     *
-     * @throws IOException on I/O errors.
-     */
-    public void close() throws IOException {
-        in.close();
-    }
-
-    private int readByte() throws IOException {
-        int b = in.read();
-        if (b != -1) {
-            if (callback != null && pos++ == nextTenPctPos) {
-                nextTenPctPos += tenPctSize;
-                if (callback != null) {
-                    callback.report(pos);
-                }
-            }
-        }
-        return b;
-    }
-
-    private void unreadByte(int c) throws IOException {
-        in.unread(c);
-        pos--;
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        int b = readByte();
-
-        if (b == -1) {
-            pos = size;
-            return -1;
-        }
-
-        if ((flags & CONVERT_CR) != 0 && b == '\r') {
-            int c = readByte();
-            if (c != -1) {
-                unreadByte(c);
-            }
-            if (c != '\n') {
-                unreadByte('\n');
-            }
-        } else if ((flags & CONVERT_LF) != 0 && b == '\n' && previous != '\r') {
-            b = '\r';
-            unreadByte('\n');
-        }
-
-        previous = b;
-
-        return b;
-    }
-
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/Log.java b/apache/org/apache/james/mime4j/Log.java
deleted file mode 100644
index 5eeead5..0000000
--- a/apache/org/apache/james/mime4j/Log.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2009 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 org.apache.james.mime4j;
-
-/**
- * Empty stub for the apache logging library.
- */
-public class Log {
-    private static final String LOG_TAG = "Email Log";
-
-    public Log(Class mClazz) {
-    }
-
-    public boolean isDebugEnabled() {
-        return false;
-    }
-
-    public boolean isErrorEnabled() {
-        return true;
-    }
-
-    public boolean isFatalEnabled() {
-        return true;
-    }
-
-    public boolean isInfoEnabled() {
-        return false;
-    }
-
-    public boolean isTraceEnabled() {
-        return false;
-    }
-
-    public boolean isWarnEnabled() {
-        return true;
-    }
-
-    public void trace(Object message) {
-        if (!isTraceEnabled()) return;
-        android.util.Log.v(LOG_TAG, toString(message, null));
-    }
-
-    public void trace(Object message, Throwable t) {
-        if (!isTraceEnabled()) return;
-        android.util.Log.v(LOG_TAG, toString(message, t));
-    }
-
-    public void debug(Object message) {
-        if (!isDebugEnabled()) return;
-        android.util.Log.d(LOG_TAG, toString(message, null));
-    }
-
-    public void debug(Object message, Throwable t) {
-        if (!isDebugEnabled()) return;
-        android.util.Log.d(LOG_TAG, toString(message, t));
-    }
-
-    public void info(Object message) {
-        if (!isInfoEnabled()) return;
-        android.util.Log.i(LOG_TAG, toString(message, null));
-    }
-
-    public void info(Object message, Throwable t) {
-        if (!isInfoEnabled()) return;
-        android.util.Log.i(LOG_TAG, toString(message, t));
-    }
-
-    public void warn(Object message) {
-        android.util.Log.w(LOG_TAG, toString(message, null));
-    }
-
-    public void warn(Object message, Throwable t) {
-        android.util.Log.w(LOG_TAG, toString(message, t));
-    }
-
-    public void error(Object message) {
-        android.util.Log.e(LOG_TAG, toString(message, null));
-    }
-
-    public void error(Object message, Throwable t) {
-        android.util.Log.e(LOG_TAG, toString(message, t));
-    }
-
-    public void fatal(Object message) {
-        android.util.Log.e(LOG_TAG, toString(message, null));
-    }
-
-    public void fatal(Object message, Throwable t) {
-        android.util.Log.e(LOG_TAG, toString(message, t));
-    }
-
-    private static String toString(Object o, Throwable t) {
-        String m = (o == null) ? "(null)" : o.toString();
-        if (t == null) {
-            return m;
-        } else {
-            return m + " " + t.getMessage();
-        }
-    }
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/LogFactory.java b/apache/org/apache/james/mime4j/LogFactory.java
deleted file mode 100644
index ed6e3de..0000000
--- a/apache/org/apache/james/mime4j/LogFactory.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2009 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 org.apache.james.mime4j;
-
-/**
- * Empty stub for the apache logging library.
- */
-public final class LogFactory {
-    private LogFactory() {
-    }
-
-    public static Log getLog(Class clazz) {
-        return new Log(clazz);
-    }
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/MimeBoundaryInputStream.java b/apache/org/apache/james/mime4j/MimeBoundaryInputStream.java
deleted file mode 100644
index c6d6f24..0000000
--- a/apache/org/apache/james/mime4j/MimeBoundaryInputStream.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PushbackInputStream;
-
-/**
- * Stream that constrains itself to a single MIME body part.
- * After the stream ends (i.e. read() returns -1) {@link #hasMoreParts()}
- * can be used to determine if a final boundary has been seen or not.
- * If {@link #parentEOF()} is <code>true</code> an unexpected end of stream
- * has been detected in the parent stream.
- *
- *
- *
- * @version $Id: MimeBoundaryInputStream.java,v 1.2 2004/11/29 13:15:42 ntherning Exp $
- */
-public class MimeBoundaryInputStream extends InputStream {
-
-    private PushbackInputStream s = null;
-    private byte[] boundary = null;
-    private boolean first = true;
-    private boolean eof = false;
-    private boolean parenteof = false;
-    private boolean moreParts = true;
-
-    /**
-     * Creates a new MimeBoundaryInputStream.
-     * @param s The underlying stream.
-     * @param boundary Boundary string (not including leading hyphens).
-     */
-    public MimeBoundaryInputStream(InputStream s, String boundary)
-            throws IOException {
-
-        this.s = new PushbackInputStream(s, boundary.length() + 4);
-
-        boundary = "--" + boundary;
-        this.boundary = new byte[boundary.length()];
-        for (int i = 0; i < this.boundary.length; i++) {
-            this.boundary[i] = (byte) boundary.charAt(i);
-        }
-
-        /*
-         * By reading one byte we will update moreParts to be as expected
-         * before any bytes have been read.
-         */
-        int b = read();
-        if (b != -1) {
-            this.s.unread(b);
-        }
-    }
-
-    /**
-     * Closes the underlying stream.
-     *
-     * @throws IOException on I/O errors.
-     */
-    public void close() throws IOException {
-        s.close();
-    }
-
-    /**
-     * Determines if the underlying stream has more parts (this stream has
-     * not seen an end boundary).
-     *
-     * @return <code>true</code> if there are more parts in the underlying
-     *         stream, <code>false</code> otherwise.
-     */
-    public boolean hasMoreParts() {
-        return moreParts;
-    }
-
-    /**
-     * Determines if the parent stream has reached EOF
-     *
-     * @return <code>true</code>  if EOF has been reached for the parent stream,
-     *         <code>false</code> otherwise.
-     */
-    public boolean parentEOF() {
-        return parenteof;
-    }
-
-    /**
-     * Consumes all unread bytes of this stream. After a call to this method
-     * this stream will have reached EOF.
-     *
-     * @throws IOException on I/O errors.
-     */
-    public void consume() throws IOException {
-        while (read() != -1) {
-        }
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        if (eof) {
-            return -1;
-        }
-
-        if (first) {
-            first = false;
-            if (matchBoundary()) {
-                return -1;
-            }
-        }
-
-        int b1 = s.read();
-        int b2 = s.read();
-
-        if (b1 == '\r' && b2 == '\n') {
-            if (matchBoundary()) {
-                return -1;
-            }
-        }
-
-        if (b2 != -1) {
-            s.unread(b2);
-        }
-
-        parenteof = b1 == -1;
-        eof = parenteof;
-
-        return b1;
-    }
-
-    private boolean matchBoundary() throws IOException {
-
-        for (int i = 0; i < boundary.length; i++) {
-            int b = s.read();
-            if (b != boundary[i]) {
-                if (b != -1) {
-                    s.unread(b);
-                }
-                for (int j = i - 1; j >= 0; j--) {
-                    s.unread(boundary[j]);
-                }
-                return false;
-            }
-        }
-
-        /*
-         * We have a match. Is it an end boundary?
-         */
-        int prev = s.read();
-        int curr = s.read();
-        moreParts = !(prev == '-' && curr == '-');
-        do {
-            if (curr == '\n' && prev == '\r') {
-                break;
-            }
-            prev = curr;
-        } while ((curr = s.read()) != -1);
-
-        if (curr == -1) {
-            moreParts = false;
-            parenteof = true;
-        }
-
-        eof = true;
-
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/MimeStreamParser.java b/apache/org/apache/james/mime4j/MimeStreamParser.java
deleted file mode 100644
index a8aad5a..0000000
--- a/apache/org/apache/james/mime4j/MimeStreamParser.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j;
-
-import org.apache.james.mime4j.decoder.Base64InputStream;
-import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.BitSet;
-import java.util.LinkedList;
-
-/**
- * <p>
- * Parses MIME (or RFC822) message streams of bytes or characters and reports
- * parsing events to a <code>ContentHandler</code> instance.
- * </p>
- * <p>
- * Typical usage:<br/>
- * <pre>
- *      ContentHandler handler = new MyHandler();
- *      MimeStreamParser parser = new MimeStreamParser();
- *      parser.setContentHandler(handler);
- *      parser.parse(new BufferedInputStream(new FileInputStream("mime.msg")));
- * </pre>
- * <strong>NOTE:</strong> All lines must end with CRLF
- * (<code>\r\n</code>). If you are unsure of the line endings in your stream
- * you should wrap it in a {@link org.apache.james.mime4j.EOLConvertingInputStream} instance.
- *
- *
- * @version $Id: MimeStreamParser.java,v 1.8 2005/02/11 10:12:02 ntherning Exp $
- */
-public class MimeStreamParser {
-    private static final Log log = LogFactory.getLog(MimeStreamParser.class);
-
-    private static BitSet fieldChars = null;
-
-    private RootInputStream rootStream = null;
-    private LinkedList<BodyDescriptor> bodyDescriptors = new LinkedList<BodyDescriptor>();
-    private ContentHandler handler = null;
-    private boolean raw = false;
-    private boolean prematureEof = false;
-
-    static {
-        fieldChars = new BitSet();
-        for (int i = 0x21; i <= 0x39; i++) {
-            fieldChars.set(i);
-        }
-        for (int i = 0x3b; i <= 0x7e; i++) {
-            fieldChars.set(i);
-        }
-    }
-
-    /**
-     * Creates a new <code>MimeStreamParser</code> instance.
-     */
-    public MimeStreamParser() {
-    }
-
-    /**
-     * Parses a stream of bytes containing a MIME message.
-     *
-     * @param is the stream to parse.
-     * @throws IOException on I/O errors.
-     */
-    public void parse(InputStream is) throws IOException {
-        rootStream = new RootInputStream(is);
-        parseMessage(rootStream);
-    }
-
-    /**
-     * Determines if this parser is currently in raw mode.
-     *
-     * @return <code>true</code> if in raw mode, <code>false</code>
-     *         otherwise.
-     * @see #setRaw(boolean)
-     */
-    public boolean isRaw() {
-        return raw;
-    }
-
-    /**
-     * Enables or disables raw mode. In raw mode all future entities
-     * (messages or body parts) in the stream will be reported to the
-     * {@link ContentHandler#raw(InputStream)} handler method only.
-     * The stream will contain the entire unparsed entity contents
-     * including header fields and whatever is in the body.
-     *
-     * @param raw <code>true</code> enables raw mode, <code>false</code>
-     *        disables it.
-     */
-    public void setRaw(boolean raw) {
-        this.raw = raw;
-    }
-
-    /**
-     * Finishes the parsing and stops reading lines.
-     * NOTE: No more lines will be parsed but the parser
-     * will still call
-     * {@link ContentHandler#endMultipart()},
-     * {@link ContentHandler#endBodyPart()},
-     * {@link ContentHandler#endMessage()}, etc to match previous calls
-     * to
-     * {@link ContentHandler#startMultipart(BodyDescriptor)},
-     * {@link ContentHandler#startBodyPart()},
-     * {@link ContentHandler#startMessage()}, etc.
-     */
-    public void stop() {
-        rootStream.truncate();
-    }
-
-    /**
-     * Parses an entity which consists of a header followed by a body containing
-     * arbitrary data, body parts or an embedded message.
-     *
-     * @param is the stream to parse.
-     * @throws IOException on I/O errors.
-     */
-    private void parseEntity(InputStream is) throws IOException {
-        BodyDescriptor bd = parseHeader(is);
-
-        if (bd.isMultipart()) {
-            bodyDescriptors.addFirst(bd);
-
-            handler.startMultipart(bd);
-
-            MimeBoundaryInputStream tempIs =
-                new MimeBoundaryInputStream(is, bd.getBoundary());
-            handler.preamble(new CloseShieldInputStream(tempIs));
-            tempIs.consume();
-
-            while (tempIs.hasMoreParts()) {
-                tempIs = new MimeBoundaryInputStream(is, bd.getBoundary());
-                parseBodyPart(tempIs);
-                tempIs.consume();
-                if (tempIs.parentEOF()) {
-                    prematureEof = true;
-//                    if (log.isWarnEnabled()) {
-//                        log.warn("Line " + rootStream.getLineNumber()
-//                                + ": Body part ended prematurely. "
-//                                + "Higher level boundary detected or "
-//                                + "EOF reached.");
-//                    }
-                    break;
-                }
-            }
-
-            handler.epilogue(new CloseShieldInputStream(is));
-
-            handler.endMultipart();
-
-            bodyDescriptors.removeFirst();
-
-        } else if (bd.isMessage()) {
-            if (bd.isBase64Encoded()) {
-                log.warn("base64 encoded message/rfc822 detected");
-                is = new EOLConvertingInputStream(
-                        new Base64InputStream(is));
-            } else if (bd.isQuotedPrintableEncoded()) {
-                log.warn("quoted-printable encoded message/rfc822 detected");
-                is = new EOLConvertingInputStream(
-                        new QuotedPrintableInputStream(is));
-            }
-            bodyDescriptors.addFirst(bd);
-            parseMessage(is);
-            bodyDescriptors.removeFirst();
-        } else {
-            handler.body(bd, new CloseShieldInputStream(is));
-        }
-
-        /*
-         * Make sure the stream has been consumed.
-         */
-        while (is.read() != -1) {
-        }
-    }
-
-    private void parseMessage(InputStream is) throws IOException {
-        if (raw) {
-            handler.raw(new CloseShieldInputStream(is));
-        } else {
-            handler.startMessage();
-            parseEntity(is);
-            handler.endMessage();
-        }
-    }
-
-    public boolean getPrematureEof() {
-        return prematureEof;
-    }
-
-    private void parseBodyPart(InputStream is) throws IOException {
-        if (raw) {
-            handler.raw(new CloseShieldInputStream(is));
-        } else {
-            handler.startBodyPart();
-            parseEntity(is);
-            handler.endBodyPart();
-        }
-    }
-
-    /**
-     * Parses a header.
-     *
-     * @param is the stream to parse.
-     * @return a <code>BodyDescriptor</code> describing the body following
-     *         the header.
-     */
-    private BodyDescriptor parseHeader(InputStream is) throws IOException {
-        BodyDescriptor bd = new BodyDescriptor(bodyDescriptors.isEmpty()
-                        ? null : (BodyDescriptor) bodyDescriptors.getFirst());
-
-        handler.startHeader();
-
-        int lineNumber = rootStream.getLineNumber();
-
-        StringBuffer sb = new StringBuffer();
-        int curr = 0;
-        int prev = 0;
-        while ((curr = is.read()) != -1) {
-            if (curr == '\n' && (prev == '\n' || prev == 0)) {
-                /*
-                 * [\r]\n[\r]\n or an immediate \r\n have been seen.
-                 */
-                sb.deleteCharAt(sb.length() - 1);
-                break;
-            }
-            sb.append((char) curr);
-            prev = curr == '\r' ? prev : curr;
-        }
-
-//        if (curr == -1 && log.isWarnEnabled()) {
-//            log.warn("Line " + rootStream.getLineNumber()
-//                    + ": Unexpected end of headers detected. "
-//                    + "Boundary detected in header or EOF reached.");
-//        }
-
-        int start = 0;
-        int pos = 0;
-        int startLineNumber = lineNumber;
-        while (pos < sb.length()) {
-            while (pos < sb.length() && sb.charAt(pos) != '\r') {
-                pos++;
-            }
-            if (pos < sb.length() - 1 && sb.charAt(pos + 1) != '\n') {
-                pos++;
-                continue;
-            }
-
-            if (pos >= sb.length() - 2 || fieldChars.get(sb.charAt(pos + 2))) {
-
-                /*
-                 * field should be the complete field data excluding the
-                 * trailing \r\n.
-                 */
-                String field = sb.substring(start, pos);
-                start = pos + 2;
-
-                /*
-                 * Check for a valid field.
-                 */
-                int index = field.indexOf(':');
-                boolean valid = false;
-                if (index != -1 && fieldChars.get(field.charAt(0))) {
-                    valid = true;
-                    String fieldName = field.substring(0, index).trim();
-                    for (int i = 0; i < fieldName.length(); i++) {
-                        if (!fieldChars.get(fieldName.charAt(i))) {
-                            valid = false;
-                            break;
-                        }
-                    }
-
-                    if (valid) {
-                        handler.field(field);
-                        bd.addField(fieldName, field.substring(index + 1));
-                    }
-                }
-
-                if (!valid && log.isWarnEnabled()) {
-                    log.warn("Line " + startLineNumber
-                            + ": Ignoring invalid field: '" + field.trim() + "'");
-                }
-
-                startLineNumber = lineNumber;
-            }
-
-            pos += 2;
-            lineNumber++;
-        }
-
-        handler.endHeader();
-
-        return bd;
-    }
-
-    /**
-     * Sets the <code>ContentHandler</code> to use when reporting
-     * parsing events.
-     *
-     * @param h the <code>ContentHandler</code>.
-     */
-    public void setContentHandler(ContentHandler h) {
-        this.handler = h;
-    }
-
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/RootInputStream.java b/apache/org/apache/james/mime4j/RootInputStream.java
deleted file mode 100644
index cc8b241..0000000
--- a/apache/org/apache/james/mime4j/RootInputStream.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * <code>InputStream</code> used by the parser to wrap the original user
- * supplied stream. This stream keeps track of the current line number and
- * can also be truncated. When truncated the stream will appear to have
- * reached end of file. This is used by the parser's
- * {@link org.apache.james.mime4j.MimeStreamParser#stop()} method.
- *
- *
- * @version $Id: RootInputStream.java,v 1.2 2004/10/02 12:41:10 ntherning Exp $
- */
-class RootInputStream extends InputStream {
-    private InputStream is = null;
-    private int lineNumber = 1;
-    private int prev = -1;
-    private boolean truncated = false;
-
-    /**
-     * Creates a new <code>RootInputStream</code>.
-     *
-     * @param in the stream to read from.
-     */
-    public RootInputStream(InputStream is) {
-        this.is = is;
-    }
-
-    /**
-     * Gets the current line number starting at 1
-     * (the number of <code>\r\n</code> read so far plus 1).
-     *
-     * @return the current line number.
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Truncates this <code>InputStream</code>. After this call any
-     * call to {@link #read()}, {@link #read(byte[]) or
-     * {@link #read(byte[], int, int)} will return
-     * -1 as if end-of-file had been reached.
-     */
-    public void truncate() {
-        this.truncated = true;
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        if (truncated) {
-            return -1;
-        }
-
-        int b = is.read();
-        if (prev == '\r' && b == '\n') {
-            lineNumber++;
-        }
-        prev = b;
-        return b;
-    }
-
-    /**
-     *
-     * @see java.io.InputStream#read(byte[], int, int)
-     */
-    public int read(byte[] b, int off, int len) throws IOException {
-        if (truncated) {
-            return -1;
-        }
-
-        int n = is.read(b, off, len);
-        for (int i = off; i < off + n; i++) {
-            if (prev == '\r' && b[i] == '\n') {
-                lineNumber++;
-            }
-            prev = b[i];
-        }
-        return n;
-    }
-
-    /**
-     * @see java.io.InputStream#read(byte[])
-     */
-    public int read(byte[] b) throws IOException {
-        return read(b, 0, b.length);
-    }
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/codec/EncoderUtil.java b/apache/org/apache/james/mime4j/codec/EncoderUtil.java
deleted file mode 100644
index 6841bc9..0000000
--- a/apache/org/apache/james/mime4j/codec/EncoderUtil.java
+++ /dev/null
@@ -1,630 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.codec;
-
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-import java.util.BitSet;
-import java.util.Locale;
-
-import org.apache.james.mime4j.util.CharsetUtil;
-
-/**
- * ANDROID:  THIS CLASS IS COPIED FROM A NEWER VERSION OF MIME4J
- */
-
-/**
- * Static methods for encoding header field values. This includes encoded-words
- * as defined in <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a>
- * or display-names of an e-mail address, for example.
- * 
- */
-public class EncoderUtil {
-
-    // This array is a lookup table that translates 6-bit positive integer index
-    // values into their "Base64 Alphabet" equivalents as specified in Table 1
-    // of RFC 2045.
-    // ANDROID:  THIS TABLE IS COPIED FROM BASE64OUTPUTSTREAM
-    static final byte[] BASE64_TABLE = { 'A', 'B', 'C', 'D', 'E', 'F',
-            'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
-            'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
-            'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
-            't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
-            '6', '7', '8', '9', '+', '/' };
-
-    // Byte used to pad output.
-    private static final byte BASE64_PAD = '=';
-
-    private static final BitSet Q_REGULAR_CHARS = initChars("=_?");
-
-    private static final BitSet Q_RESTRICTED_CHARS = initChars("=_?\"#$%&'(),.:;<>@[\\]^`{|}~");
-
-    private static final int MAX_USED_CHARACTERS = 50;
-
-    private static final String ENC_WORD_PREFIX = "=?";
-    private static final String ENC_WORD_SUFFIX = "?=";
-
-    private static final int ENCODED_WORD_MAX_LENGTH = 75; // RFC 2047
-
-    private static final BitSet TOKEN_CHARS = initChars("()<>@,;:\\\"/[]?=");
-
-    private static final BitSet ATEXT_CHARS = initChars("()<>@.,;:\\\"[]");
-
-    private static BitSet initChars(String specials) {
-        BitSet bs = new BitSet(128);
-        for (char ch = 33; ch < 127; ch++) {
-            if (specials.indexOf(ch) == -1) {
-                bs.set(ch);
-            }
-        }
-        return bs;
-    }
-
-    /**
-     * Selects one of the two encodings specified in RFC 2047.
-     */
-    public enum Encoding {
-        /** The B encoding (identical to base64 defined in RFC 2045). */
-        B,
-        /** The Q encoding (similar to quoted-printable defined in RFC 2045). */
-        Q
-    }
-
-    /**
-     * Indicates the intended usage of an encoded word.
-     */
-    public enum Usage {
-        /**
-         * Encoded word is used to replace a 'text' token in any Subject or
-         * Comments header field.
-         */
-        TEXT_TOKEN,
-        /**
-         * Encoded word is used to replace a 'word' entity within a 'phrase',
-         * for example, one that precedes an address in a From, To, or Cc
-         * header.
-         */
-        WORD_ENTITY
-    }
-
-    private EncoderUtil() {
-    }
-
-    /**
-     * Encodes the display-name portion of an address. See <a
-     * href='http://www.faqs.org/rfcs/rfc5322.html'>RFC 5322</a> section 3.4
-     * and <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a> section
-     * 5.3. The specified string should not be folded.
-     * 
-     * @param displayName
-     *            display-name to encode.
-     * @return encoded display-name.
-     */
-    public static String encodeAddressDisplayName(String displayName) {
-        // display-name = phrase
-        // phrase = 1*( encoded-word / word )
-        // word = atom / quoted-string
-        // atom = [CFWS] 1*atext [CFWS]
-        // CFWS = comment or folding white space
-
-        if (isAtomPhrase(displayName)) {
-            return displayName;
-        } else if (hasToBeEncoded(displayName, 0)) {
-            return encodeEncodedWord(displayName, Usage.WORD_ENTITY);
-        } else {
-            return quote(displayName);
-        }
-    }
-
-    /**
-     * Encodes the local part of an address specification as described in RFC
-     * 5322 section 3.4.1. Leading and trailing CFWS should have been removed
-     * before calling this method. The specified string should not contain any
-     * illegal (control or non-ASCII) characters.
-     * 
-     * @param localPart
-     *            the local part to encode
-     * @return the encoded local part.
-     */
-    public static String encodeAddressLocalPart(String localPart) {
-        // local-part = dot-atom / quoted-string
-        // dot-atom = [CFWS] dot-atom-text [CFWS]
-        // CFWS = comment or folding white space
-
-        if (isDotAtomText(localPart)) {
-            return localPart;
-        } else {
-            return quote(localPart);
-        }
-    }
-
-    /**
-     * Encodes the specified strings into a header parameter as described in RFC
-     * 2045 section 5.1 and RFC 2183 section 2. The specified strings should not
-     * contain any illegal (control or non-ASCII) characters.
-     * 
-     * @param name
-     *            parameter name.
-     * @param value
-     *            parameter value.
-     * @return encoded result.
-     */
-    public static String encodeHeaderParameter(String name, String value) {
-        name = name.toLowerCase(Locale.US);
-
-        // value := token / quoted-string
-        if (isToken(value)) {
-            return name + "=" + value;
-        } else {
-            return name + "=" + quote(value);
-        }
-    }
-
-    /**
-     * Shortcut method that encodes the specified text into an encoded-word if
-     * the text has to be encoded.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @return the specified text if encoding is not necessary or an encoded
-     *         word or a sequence of encoded words otherwise.
-     */
-    public static String encodeIfNecessary(String text, Usage usage,
-            int usedCharacters) {
-        if (hasToBeEncoded(text, usedCharacters))
-            return encodeEncodedWord(text, usage, usedCharacters);
-        else
-            return text;
-    }
-
-    /**
-     * Determines if the specified string has to encoded into an encoded-word.
-     * Returns <code>true</code> if the text contains characters that don't
-     * fall into the printable ASCII character set or if the text contains a
-     * 'word' (sequence of non-whitespace characters) longer than 77 characters
-     * (including characters already used up in the line).
-     * 
-     * @param text
-     *            text to analyze.
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @return <code>true</code> if the specified text has to be encoded into
-     *         an encoded-word, <code>false</code> otherwise.
-     */
-    public static boolean hasToBeEncoded(String text, int usedCharacters) {
-        if (text == null)
-            throw new IllegalArgumentException();
-        if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
-            throw new IllegalArgumentException();
-
-        int nonWhiteSpaceCount = usedCharacters;
-
-        for (int idx = 0; idx < text.length(); idx++) {
-            char ch = text.charAt(idx);
-            if (ch == '\t' || ch == ' ') {
-                nonWhiteSpaceCount = 0;
-            } else {
-                nonWhiteSpaceCount++;
-                if (nonWhiteSpaceCount > 77) {
-                    // Line cannot be folded into multiple lines with no more
-                    // than 78 characters each. Encoding as encoded-words makes
-                    // that possible. One character has to be reserved for
-                    // folding white space; that leaves 77 characters.
-                    return true;
-                }
-
-                if (ch < 32 || ch >= 127) {
-                    // non-printable ascii character has to be encoded
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Encodes the specified text into an encoded word or a sequence of encoded
-     * words separated by space. The text is separated into a sequence of
-     * encoded words if it does not fit in a single one.
-     * <p>
-     * The charset to encode the specified text into a byte array and the
-     * encoding to use for the encoded-word are detected automatically.
-     * <p>
-     * This method assumes that zero characters have already been used up in the
-     * current line.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @return the encoded word (or sequence of encoded words if the given text
-     *         does not fit in a single encoded word).
-     * @see #hasToBeEncoded(String, int)
-     */
-    public static String encodeEncodedWord(String text, Usage usage) {
-        return encodeEncodedWord(text, usage, 0, null, null);
-    }
-
-    /**
-     * Encodes the specified text into an encoded word or a sequence of encoded
-     * words separated by space. The text is separated into a sequence of
-     * encoded words if it does not fit in a single one.
-     * <p>
-     * The charset to encode the specified text into a byte array and the
-     * encoding to use for the encoded-word are detected automatically.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @return the encoded word (or sequence of encoded words if the given text
-     *         does not fit in a single encoded word).
-     * @see #hasToBeEncoded(String, int)
-     */
-    public static String encodeEncodedWord(String text, Usage usage,
-            int usedCharacters) {
-        return encodeEncodedWord(text, usage, usedCharacters, null, null);
-    }
-
-    /**
-     * Encodes the specified text into an encoded word or a sequence of encoded
-     * words separated by space. The text is separated into a sequence of
-     * encoded words if it does not fit in a single one.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @param charset
-     *            the Java charset that should be used to encode the specified
-     *            string into a byte array. A suitable charset is detected
-     *            automatically if this parameter is <code>null</code>.
-     * @param encoding
-     *            the encoding to use for the encoded-word (either B or Q). A
-     *            suitable encoding is automatically chosen if this parameter is
-     *            <code>null</code>.
-     * @return the encoded word (or sequence of encoded words if the given text
-     *         does not fit in a single encoded word).
-     * @see #hasToBeEncoded(String, int)
-     */
-    public static String encodeEncodedWord(String text, Usage usage,
-            int usedCharacters, Charset charset, Encoding encoding) {
-        if (text == null)
-            throw new IllegalArgumentException();
-        if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
-            throw new IllegalArgumentException();
-
-        if (charset == null)
-            charset = determineCharset(text);
-
-        String mimeCharset = CharsetUtil.toMimeCharset(charset.name());
-        if (mimeCharset == null) {
-            // cannot happen if charset was originally null
-            throw new IllegalArgumentException("Unsupported charset");
-        }
-
-        byte[] bytes = encode(text, charset);
-
-        if (encoding == null)
-            encoding = determineEncoding(bytes, usage);
-
-        if (encoding == Encoding.B) {
-            String prefix = ENC_WORD_PREFIX + mimeCharset + "?B?";
-            return encodeB(prefix, text, usedCharacters, charset, bytes);
-        } else {
-            String prefix = ENC_WORD_PREFIX + mimeCharset + "?Q?";
-            return encodeQ(prefix, text, usage, usedCharacters, charset, bytes);
-        }
-    }
-
-    /**
-     * Encodes the specified byte array using the B encoding defined in RFC
-     * 2047.
-     * 
-     * @param bytes
-     *            byte array to encode.
-     * @return encoded string.
-     */
-    public static String encodeB(byte[] bytes) {
-        StringBuilder sb = new StringBuilder();
-
-        int idx = 0;
-        final int end = bytes.length;
-        for (; idx < end - 2; idx += 3) {
-            int data = (bytes[idx] & 0xff) << 16 | (bytes[idx + 1] & 0xff) << 8
-                    | bytes[idx + 2] & 0xff;
-            sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 6 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data & 0x3f]);
-        }
-
-        if (idx == end - 2) {
-            int data = (bytes[idx] & 0xff) << 16 | (bytes[idx + 1] & 0xff) << 8;
-            sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 6 & 0x3f]);
-            sb.append((char) BASE64_PAD);
-
-        } else if (idx == end - 1) {
-            int data = (bytes[idx] & 0xff) << 16;
-            sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
-            sb.append((char) BASE64_PAD);
-            sb.append((char) BASE64_PAD);
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * Encodes the specified byte array using the Q encoding defined in RFC
-     * 2047.
-     * 
-     * @param bytes
-     *            byte array to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @return encoded string.
-     */
-    public static String encodeQ(byte[] bytes, Usage usage) {
-        BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
-                : Q_RESTRICTED_CHARS;
-
-        StringBuilder sb = new StringBuilder();
-
-        final int end = bytes.length;
-        for (int idx = 0; idx < end; idx++) {
-            int v = bytes[idx] & 0xff;
-            if (v == 32) {
-                sb.append('_');
-            } else if (!qChars.get(v)) {
-                sb.append('=');
-                sb.append(hexDigit(v >>> 4));
-                sb.append(hexDigit(v & 0xf));
-            } else {
-                sb.append((char) v);
-            }
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * Tests whether the specified string is a token as defined in RFC 2045
-     * section 5.1.
-     * 
-     * @param str
-     *            string to test.
-     * @return <code>true</code> if the specified string is a RFC 2045 token,
-     *         <code>false</code> otherwise.
-     */
-    public static boolean isToken(String str) {
-        // token := 1*<any (US-ASCII) CHAR except SPACE, CTLs, or tspecials>
-        // tspecials := "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" /
-        // <"> / "/" / "[" / "]" / "?" / "="
-        // CTL := 0.- 31., 127.
-
-        final int length = str.length();
-        if (length == 0)
-            return false;
-
-        for (int idx = 0; idx < length; idx++) {
-            char ch = str.charAt(idx);
-            if (!TOKEN_CHARS.get(ch))
-                return false;
-        }
-
-        return true;
-    }
-
-    private static boolean isAtomPhrase(String str) {
-        // atom = [CFWS] 1*atext [CFWS]
-
-        boolean containsAText = false;
-
-        final int length = str.length();
-        for (int idx = 0; idx < length; idx++) {
-            char ch = str.charAt(idx);
-            if (ATEXT_CHARS.get(ch)) {
-                containsAText = true;
-            } else if (!CharsetUtil.isWhitespace(ch)) {
-                return false;
-            }
-        }
-
-        return containsAText;
-    }
-
-    // RFC 5322 section 3.2.3
-    private static boolean isDotAtomText(String str) {
-        // dot-atom-text = 1*atext *("." 1*atext)
-        // atext = ALPHA / DIGIT / "!" / "#" / "$" / "%" / "&" / "'" / "*" /
-        // "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
-
-        char prev = '.';
-
-        final int length = str.length();
-        if (length == 0)
-            return false;
-
-        for (int idx = 0; idx < length; idx++) {
-            char ch = str.charAt(idx);
-
-            if (ch == '.') {
-                if (prev == '.' || idx == length - 1)
-                    return false;
-            } else {
-                if (!ATEXT_CHARS.get(ch))
-                    return false;
-            }
-
-            prev = ch;
-        }
-
-        return true;
-    }
-
-    // RFC 5322 section 3.2.4
-    private static String quote(String str) {
-        // quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
-        // qcontent = qtext / quoted-pair
-        // qtext = %d33 / %d35-91 / %d93-126
-        // quoted-pair = ("\" (VCHAR / WSP))
-        // VCHAR = %x21-7E
-        // DQUOTE = %x22
-
-        String escaped = str.replaceAll("[\\\\\"]", "\\\\$0");
-        return "\"" + escaped + "\"";
-    }
-
-    private static String encodeB(String prefix, String text,
-            int usedCharacters, Charset charset, byte[] bytes) {
-        int encodedLength = bEncodedLength(bytes);
-
-        int totalLength = prefix.length() + encodedLength
-                + ENC_WORD_SUFFIX.length();
-        if (totalLength <= ENCODED_WORD_MAX_LENGTH - usedCharacters) {
-            return prefix + encodeB(bytes) + ENC_WORD_SUFFIX;
-        } else {
-            int splitOffset = text.offsetByCodePoints(text.length() / 2, -1);
-                                                         
-            String part1 = text.substring(0, splitOffset);
-            byte[] bytes1 = encode(part1, charset);
-            String word1 = encodeB(prefix, part1, usedCharacters, charset,
-                    bytes1);
-
-            String part2 = text.substring(splitOffset);
-            byte[] bytes2 = encode(part2, charset);
-            String word2 = encodeB(prefix, part2, 0, charset, bytes2);
-
-            return word1 + " " + word2;
-        }
-    }
-
-    private static int bEncodedLength(byte[] bytes) {
-        return (bytes.length + 2) / 3 * 4;
-    }
-
-    private static String encodeQ(String prefix, String text, Usage usage,
-            int usedCharacters, Charset charset, byte[] bytes) {
-        int encodedLength = qEncodedLength(bytes, usage);
-
-        int totalLength = prefix.length() + encodedLength
-                + ENC_WORD_SUFFIX.length();
-        if (totalLength <= ENCODED_WORD_MAX_LENGTH - usedCharacters) {
-            return prefix + encodeQ(bytes, usage) + ENC_WORD_SUFFIX;
-        } else {
-            int splitOffset = text.offsetByCodePoints(text.length() / 2, -1);
-
-            String part1 = text.substring(0, splitOffset);
-            byte[] bytes1 = encode(part1, charset);
-            String word1 = encodeQ(prefix, part1, usage, usedCharacters,
-                    charset, bytes1);
-
-            String part2 = text.substring(splitOffset);
-            byte[] bytes2 = encode(part2, charset);
-            String word2 = encodeQ(prefix, part2, usage, 0, charset, bytes2);
-
-            return word1 + " " + word2;
-        }
-    }
-
-    private static int qEncodedLength(byte[] bytes, Usage usage) {
-        BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
-                : Q_RESTRICTED_CHARS;
-
-        int count = 0;
-
-        for (int idx = 0; idx < bytes.length; idx++) {
-            int v = bytes[idx] & 0xff;
-            if (v == 32) {
-                count++;
-            } else if (!qChars.get(v)) {
-                count += 3;
-            } else {
-                count++;
-            }
-        }
-
-        return count;
-    }
-
-    private static byte[] encode(String text, Charset charset) {
-        ByteBuffer buffer = charset.encode(text);
-        byte[] bytes = new byte[buffer.limit()];
-        buffer.get(bytes);
-        return bytes;
-    }
-
-    private static Charset determineCharset(String text) {
-        // it is an important property of iso-8859-1 that it directly maps
-        // unicode code points 0000 to 00ff to byte values 00 to ff.
-        boolean ascii = true;
-        final int len = text.length();
-        for (int index = 0; index < len; index++) {
-            char ch = text.charAt(index);
-            if (ch > 0xff) {
-                return CharsetUtil.UTF_8;
-            }
-            if (ch > 0x7f) {
-                ascii = false;
-            }
-        }
-        return ascii ? CharsetUtil.US_ASCII : CharsetUtil.ISO_8859_1;
-    }
-
-    private static Encoding determineEncoding(byte[] bytes, Usage usage) {
-        if (bytes.length == 0)
-            return Encoding.Q;
-
-        BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
-                : Q_RESTRICTED_CHARS;
-
-        int qEncoded = 0;
-        for (int i = 0; i < bytes.length; i++) {
-            int v = bytes[i] & 0xff;
-            if (v != 32 && !qChars.get(v)) {
-                qEncoded++;
-            }
-        }
-
-        int percentage = qEncoded * 100 / bytes.length;
-        return percentage > 30 ? Encoding.B : Encoding.Q;
-    }
-
-    private static char hexDigit(int i) {
-        return i < 10 ? (char) (i + '0') : (char) (i - 10 + 'A');
-    }
-}
diff --git a/apache/org/apache/james/mime4j/decoder/Base64InputStream.java b/apache/org/apache/james/mime4j/decoder/Base64InputStream.java
deleted file mode 100644
index 77f5d7d..0000000
--- a/apache/org/apache/james/mime4j/decoder/Base64InputStream.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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.                                           *
- ****************************************************************/
-
-/**
- * Modified to improve efficiency by Android   21-Aug-2009
- */
-
-package org.apache.james.mime4j.decoder;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Performs Base-64 decoding on an underlying stream.
- * 
- * 
- * @version $Id: Base64InputStream.java,v 1.3 2004/11/29 13:15:47 ntherning Exp $
- */
-public class Base64InputStream extends InputStream {
-    private final InputStream s;
-    private int outCount = 0;
-    private int outIndex = 0;
-    private final int[] outputBuffer = new int[3];
-    private final byte[] inputBuffer = new byte[4];
-    private boolean done = false;
-
-    public Base64InputStream(InputStream s) {
-        this.s = s;
-    }
-
-    /**
-     * Closes the underlying stream.
-     * 
-     * @throws IOException on I/O errors.
-     */
-    @Override
-    public void close() throws IOException {
-        s.close();
-    }
-    
-    @Override
-    public int read() throws IOException {
-        if (outIndex == outCount) {
-            fillBuffer();
-            if (outIndex == outCount) {
-                return -1;
-            }
-        }
-
-        return outputBuffer[outIndex++];
-    }
-
-    /**
-     * Retrieve data from the underlying stream, decode it,
-     * and put the results in the byteq.
-     * @throws IOException
-     */
-    private void fillBuffer() throws IOException {
-        outCount = 0;
-        outIndex = 0;
-        int inCount = 0;
-
-        int i;
-        // "done" is needed for the two successive '=' at the end
-        while (!done) {
-            switch (i = s.read()) {
-                case -1:
-                    // No more input - just return, let outputBuffer drain out, and be done
-                    return;
-                case '=':
-                    // once we meet the first '=', avoid reading the second '='
-                    done = true;
-                    decodeAndEnqueue(inCount);
-                    return;
-                default:
-                    byte sX = TRANSLATION[i];
-                    if (sX < 0) continue;
-                    inputBuffer[inCount++] = sX;
-                    if (inCount == 4) {
-                        decodeAndEnqueue(inCount);
-                        return;
-                    }
-                    break;
-            }
-        }
-    }
-
-    private void decodeAndEnqueue(int len) {
-        int accum = 0;
-        accum |= inputBuffer[0] << 18;
-        accum |= inputBuffer[1] << 12;
-        accum |= inputBuffer[2] << 6;
-        accum |= inputBuffer[3];
-
-        // There's a bit of duplicated code here because we want to have straight-through operation
-        // for the most common case of len==4
-        if (len == 4) {
-            outputBuffer[0] = (accum >> 16) & 0xFF;
-            outputBuffer[1] = (accum >> 8) & 0xFF;
-            outputBuffer[2] = (accum) & 0xFF;
-            outCount = 3;
-            return;
-        } else if (len == 3) {
-            outputBuffer[0] = (accum >> 16) & 0xFF;
-            outputBuffer[1] = (accum >> 8) & 0xFF;
-            outCount = 2;
-            return;
-        } else {    // len == 2
-            outputBuffer[0] = (accum >> 16) & 0xFF;
-            outCount = 1;
-            return;
-        }
-    }
-
-    private static byte[] TRANSLATION = {
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x00 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, /* 0x20 */
-        52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, /* 0x30 */
-        -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 0x40 */
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, /* 0x50 */
-        -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, /* 0x60 */
-        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, /* 0x70 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x90 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xA0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xB0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xC0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xD0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xE0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1     /* 0xF0 */
-    };
-
-
-}
diff --git a/apache/org/apache/james/mime4j/decoder/ByteQueue.java b/apache/org/apache/james/mime4j/decoder/ByteQueue.java
deleted file mode 100644
index 6d7ccef..0000000
--- a/apache/org/apache/james/mime4j/decoder/ByteQueue.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.decoder;
-
-import java.util.Iterator;
-
-public class ByteQueue {
-
-    private UnboundedFifoByteBuffer buf;
-    private int initialCapacity = -1;
-
-    public ByteQueue() {
-        buf = new UnboundedFifoByteBuffer();
-    }
-
-    public ByteQueue(int initialCapacity) {
-        buf = new UnboundedFifoByteBuffer(initialCapacity);
-        this.initialCapacity = initialCapacity;
-    }
-
-    public void enqueue(byte b) {
-        buf.add(b);
-    }
-
-    public byte dequeue() {
-        return buf.remove();
-    }
-
-    public int count() {
-        return buf.size();
-    }
-
-    public void clear() {
-        if (initialCapacity != -1)
-            buf = new UnboundedFifoByteBuffer(initialCapacity);
-        else
-            buf = new UnboundedFifoByteBuffer();
-    }
-
-    public Iterator iterator() {
-        return buf.iterator();
-    }
-
-
-}
diff --git a/apache/org/apache/james/mime4j/decoder/DecoderUtil.java b/apache/org/apache/james/mime4j/decoder/DecoderUtil.java
deleted file mode 100644
index 48fe07d..0000000
--- a/apache/org/apache/james/mime4j/decoder/DecoderUtil.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.decoder;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.util.CharsetUtil;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-
-/**
- * Static methods for decoding strings, byte arrays and encoded words.
- *
- * 
- * @version $Id: DecoderUtil.java,v 1.3 2005/02/07 15:33:59 ntherning Exp $
- */
-public class DecoderUtil {
-    private static Log log = LogFactory.getLog(DecoderUtil.class);
-    
-    /**
-     * Decodes a string containing quoted-printable encoded data. 
-     * 
-     * @param s the string to decode.
-     * @return the decoded bytes.
-     */
-    public static byte[] decodeBaseQuotedPrintable(String s) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        
-        try {
-            byte[] bytes = s.getBytes("US-ASCII");
-            
-            QuotedPrintableInputStream is = new QuotedPrintableInputStream(
-                                               new ByteArrayInputStream(bytes));
-            
-            int b = 0;
-            while ((b = is.read()) != -1) {
-                baos.write(b);
-            }
-        } catch (IOException e) {
-            /*
-             * This should never happen!
-             */
-            log.error(e);
-        }
-        
-        return baos.toByteArray();
-    }
-    
-    /**
-     * Decodes a string containing base64 encoded data. 
-     * 
-     * @param s the string to decode.
-     * @return the decoded bytes.
-     */
-    public static byte[] decodeBase64(String s) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        
-        try {
-            byte[] bytes = s.getBytes("US-ASCII");
-            
-            Base64InputStream is = new Base64InputStream(
-                                        new ByteArrayInputStream(bytes));
-            
-            int b = 0;
-            while ((b = is.read()) != -1) {
-                baos.write(b);
-            }
-        } catch (IOException e) {
-            /*
-             * This should never happen!
-             */
-            log.error(e);
-        }
-        
-        return baos.toByteArray();
-    }
-    
-    /**
-     * Decodes an encoded word encoded with the 'B' encoding (described in 
-     * RFC 2047) found in a header field body.
-     * 
-     * @param encodedWord the encoded word to decode.
-     * @param charset the Java charset to use.
-     * @return the decoded string.
-     * @throws UnsupportedEncodingException if the given Java charset isn't 
-     *         supported.
-     */
-    public static String decodeB(String encodedWord, String charset) 
-            throws UnsupportedEncodingException {
-        
-        return new String(decodeBase64(encodedWord), charset);
-    }
-    
-    /**
-     * Decodes an encoded word encoded with the 'Q' encoding (described in 
-     * RFC 2047) found in a header field body.
-     * 
-     * @param encodedWord the encoded word to decode.
-     * @param charset the Java charset to use.
-     * @return the decoded string.
-     * @throws UnsupportedEncodingException if the given Java charset isn't 
-     *         supported.
-     */
-    public static String decodeQ(String encodedWord, String charset)
-            throws UnsupportedEncodingException {
-           
-        /*
-         * Replace _ with =20
-         */
-        StringBuffer sb = new StringBuffer();
-        for (int i = 0; i < encodedWord.length(); i++) {
-            char c = encodedWord.charAt(i);
-            if (c == '_') {
-                sb.append("=20");
-            } else {
-                sb.append(c);
-            }
-        }
-        
-        return new String(decodeBaseQuotedPrintable(sb.toString()), charset);
-    }
-    
-    /**
-     * Decodes a string containing encoded words as defined by RFC 2047.
-     * Encoded words in have the form 
-     * =?charset?enc?Encoded word?= where enc is either 'Q' or 'q' for 
-     * quoted-printable and 'B' or 'b' for Base64.
-     * 
-     * ANDROID:  COPIED FROM A NEWER VERSION OF MIME4J
-     * 
-     * @param body the string to decode.
-     * @return the decoded string.
-     */
-    public static String decodeEncodedWords(String body) {
-        
-        // ANDROID:  Most strings will not include "=?" so a quick test can prevent unneeded
-        // object creation.  This could also be handled via lazy creation of the StringBuilder.
-        if (body.indexOf("=?") == -1) {
-            return body;
-        }
-
-        int previousEnd = 0;
-        boolean previousWasEncoded = false;
-
-        StringBuilder sb = new StringBuilder();
-
-        while (true) {
-            int begin = body.indexOf("=?", previousEnd);
-
-            // ANDROID:  The mime4j original version has an error here.  It gets confused if
-            // the encoded string begins with an '=' (just after "?Q?").  This patch seeks forward
-            // to find the two '?' in the "header", before looking for the final "?=".
-            if (begin == -1) {
-                break;
-            }
-            int qm1 = body.indexOf('?', begin + 2);
-            if (qm1 == -1) {
-                break;
-            }
-            int qm2 = body.indexOf('?', qm1 + 1);
-            if (qm2 == -1) {
-                break;
-            }
-            int end = body.indexOf("?=", qm2 + 1);
-            if (end == -1) {
-                break;
-            }
-            end += 2;
-
-            String sep = body.substring(previousEnd, begin);
-
-            String decoded = decodeEncodedWord(body, begin, end);
-            if (decoded == null) {
-                sb.append(sep);
-                sb.append(body.substring(begin, end));
-            } else {
-                if (!previousWasEncoded || !CharsetUtil.isWhitespace(sep)) {
-                    sb.append(sep);
-                }
-                sb.append(decoded);
-            }
-
-            previousEnd = end;
-            previousWasEncoded = decoded != null;
-        }
-
-        if (previousEnd == 0)
-            return body;
-
-        sb.append(body.substring(previousEnd));
-        return sb.toString();
-    }
-
-    // return null on error. Begin is index of '=?' in body.
-    public static String decodeEncodedWord(String body, int begin, int end) {
-        // Skip the '?=' chars in body and scan forward from there for next '?'
-        int qm1 = body.indexOf('?', begin + 2);
-        if (qm1 == -1 || qm1 == end - 2)
-            return null;
-
-        int qm2 = body.indexOf('?', qm1 + 1);
-        if (qm2 == -1 || qm2 == end - 2)
-            return null;
-
-        String mimeCharset = body.substring(begin + 2, qm1);
-        String encoding = body.substring(qm1 + 1, qm2);
-        String encodedText = body.substring(qm2 + 1, end - 2);
-
-        String charset = CharsetUtil.toJavaCharset(mimeCharset);
-        if (charset == null) {
-            if (log.isWarnEnabled()) {
-                log.warn("MIME charset '" + mimeCharset + "' in encoded word '"
-                        + body.substring(begin, end) + "' doesn't have a "
-                        + "corresponding Java charset");
-            }
-            return null;
-        } else if (!CharsetUtil.isDecodingSupported(charset)) {
-            if (log.isWarnEnabled()) {
-                log.warn("Current JDK doesn't support decoding of charset '"
-                        + charset + "' (MIME charset '" + mimeCharset
-                        + "' in encoded word '" + body.substring(begin, end)
-                        + "')");
-            }
-            return null;
-        }
-
-        if (encodedText.length() == 0) {
-            if (log.isWarnEnabled()) {
-                log.warn("Missing encoded text in encoded word: '"
-                        + body.substring(begin, end) + "'");
-            }
-            return null;
-        }
-
-        try {
-            if (encoding.equalsIgnoreCase("Q")) {
-                return DecoderUtil.decodeQ(encodedText, charset);
-            } else if (encoding.equalsIgnoreCase("B")) {
-                return DecoderUtil.decodeB(encodedText, charset);
-            } else {
-                if (log.isWarnEnabled()) {
-                    log.warn("Warning: Unknown encoding in encoded word '"
-                            + body.substring(begin, end) + "'");
-                }
-                return null;
-            }
-        } catch (UnsupportedEncodingException e) {
-            // should not happen because of isDecodingSupported check above
-            if (log.isWarnEnabled()) {
-                log.warn("Unsupported encoding in encoded word '"
-                        + body.substring(begin, end) + "'", e);
-            }
-            return null;
-        } catch (RuntimeException e) {
-            if (log.isWarnEnabled()) {
-                log.warn("Could not decode encoded word '"
-                        + body.substring(begin, end) + "'", e);
-            }
-            return null;
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java b/apache/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java
deleted file mode 100644
index e43f398..0000000
--- a/apache/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.decoder;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-
-/**
- * Performs Quoted-Printable decoding on an underlying stream.
- * 
- * 
- * 
- * @version $Id: QuotedPrintableInputStream.java,v 1.3 2004/11/29 13:15:47 ntherning Exp $
- */
-public class QuotedPrintableInputStream extends InputStream {
-    private static Log log = LogFactory.getLog(QuotedPrintableInputStream.class);
-    
-    private InputStream stream;
-    ByteQueue byteq = new ByteQueue();
-    ByteQueue pushbackq = new ByteQueue();
-    private byte state = 0;
-
-    public QuotedPrintableInputStream(InputStream stream) {
-        this.stream = stream;
-    }
-    
-    /**
-     * Closes the underlying stream.
-     * 
-     * @throws IOException on I/O errors.
-     */
-    public void close() throws IOException {
-        stream.close();
-    }
-
-    public int read() throws IOException {
-        fillBuffer();
-        if (byteq.count() == 0)
-            return -1;
-        else {
-            byte val = byteq.dequeue();
-            if (val >= 0)
-                return val;
-            else
-                return val & 0xFF;
-        }
-    }
-
-    /**
-     * Pulls bytes out of the underlying stream and places them in the
-     * pushback queue.  This is necessary (vs. reading from the
-     * underlying stream directly) to detect and filter out "transport
-     * padding" whitespace, i.e., all whitespace that appears immediately
-     * before a CRLF.
-     *
-     * @throws IOException Underlying stream threw IOException.
-     */
-    private void populatePushbackQueue() throws IOException {
-        //Debug.verify(pushbackq.count() == 0, "PopulatePushbackQueue called when pushback queue was not empty!");
-
-        if (pushbackq.count() != 0)
-            return;
-
-        while (true) {
-            int i = stream.read();
-            switch (i) {
-                case -1:
-                    // stream is done
-                    pushbackq.clear();  // discard any whitespace preceding EOF
-                    return;
-                case ' ':
-                case '\t':
-                    pushbackq.enqueue((byte)i);
-                    break;
-                case '\r':
-                case '\n':
-                    pushbackq.clear();  // discard any whitespace preceding EOL
-                    pushbackq.enqueue((byte)i);
-                    return;
-                default:
-                    pushbackq.enqueue((byte)i);
-                    return;
-            }
-        }
-    }
-
-    /**
-     * Causes the pushback queue to get populated if it is empty, then
-     * consumes and decodes bytes out of it until one or more bytes are
-     * in the byte queue.  This decoding step performs the actual QP
-     * decoding.
-     *
-     * @throws IOException Underlying stream threw IOException.
-     */
-    private void fillBuffer() throws IOException {
-        byte msdChar = 0;  // first digit of escaped num
-        while (byteq.count() == 0) {
-            if (pushbackq.count() == 0) {
-                populatePushbackQueue();
-                if (pushbackq.count() == 0)
-                    return;
-            }
-
-            byte b = (byte)pushbackq.dequeue();
-
-            switch (state) {
-                case 0:  // start state, no bytes pending
-                    if (b != '=') {
-                        byteq.enqueue(b);
-                        break;  // state remains 0
-                    } else {
-                        state = 1;
-                        break;
-                    }
-                case 1:  // encountered "=" so far
-                    if (b == '\r') {
-                        state = 2;
-                        break;
-                    } else if ((b >= '0' && b <= '9') || (b >= 'A' && b <= 'F') || (b >= 'a' && b <= 'f')) {
-                        state = 3;
-                        msdChar = b;  // save until next digit encountered
-                        break;
-                    } else if (b == '=') {
-                        /*
-                         * Special case when == is encountered.
-                         * Emit one = and stay in this state.
-                         */
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; got ==");
-                        }
-                        byteq.enqueue((byte)'=');
-                        break;
-                    } else {
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; expected \\r or "
-                                    + "[0-9A-Z], got " + b);
-                        }
-                        state = 0;
-                        byteq.enqueue((byte)'=');
-                        byteq.enqueue(b);
-                        break;
-                    }
-                case 2:  // encountered "=\r" so far
-                    if (b == '\n') {
-                        state = 0;
-                        break;
-                    } else {
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; expected " 
-                                    + (int)'\n' + ", got " + b);
-                        }
-                        state = 0;
-                        byteq.enqueue((byte)'=');
-                        byteq.enqueue((byte)'\r');
-                        byteq.enqueue(b);
-                        break;
-                    }
-                case 3:  // encountered =<digit> so far; expecting another <digit> to complete the octet
-                    if ((b >= '0' && b <= '9') || (b >= 'A' && b <= 'F') || (b >= 'a' && b <= 'f')) {
-                        byte msd = asciiCharToNumericValue(msdChar);
-                        byte low = asciiCharToNumericValue(b);
-                        state = 0;
-                        byteq.enqueue((byte)((msd << 4) | low));
-                        break;
-                    } else {
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; expected "
-                                     + "[0-9A-Z], got " + b);
-                        }
-                        state = 0;
-                        byteq.enqueue((byte)'=');
-                        byteq.enqueue(msdChar);
-                        byteq.enqueue(b);
-                        break;
-                    }
-                default:  // should never happen
-                    log.error("Illegal state: " + state);
-                    state = 0;
-                    byteq.enqueue(b);
-                    break;
-            }
-        }
-    }
-
-    /**
-     * Converts '0' => 0, 'A' => 10, etc.
-     * @param c ASCII character value.
-     * @return Numeric value of hexadecimal character.
-     */
-    private byte asciiCharToNumericValue(byte c) {
-        if (c >= '0' && c <= '9') {
-            return (byte)(c - '0');
-        } else if (c >= 'A' && c <= 'Z') {
-            return (byte)(0xA + (c - 'A'));
-        } else if (c >= 'a' && c <= 'z') {
-            return (byte)(0xA + (c - 'a'));
-        } else {
-            /*
-             * This should never happen since all calls to this method
-             * are preceded by a check that c is in [0-9A-Za-z]
-             */
-            throw new IllegalArgumentException((char) c 
-                    + " is not a hexadecimal digit");
-        }
-    }
-
-}
diff --git a/apache/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java b/apache/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java
deleted file mode 100644
index f01194f..0000000
--- a/apache/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.decoder;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * UnboundedFifoByteBuffer is a very efficient buffer implementation.
- * According to performance testing, it exhibits a constant access time, but it
- * also outperforms ArrayList when used for the same purpose.
- * <p>
- * The removal order of an <code>UnboundedFifoByteBuffer</code> is based on the insertion
- * order; elements are removed in the same order in which they were added.
- * The iteration order is the same as the removal order.
- * <p>
- * The {@link #remove()} and {@link #get()} operations perform in constant time.
- * The {@link #add(Object)} operation performs in amortized constant time.  All
- * other operations perform in linear time or worse.
- * <p>
- * Note that this implementation is not synchronized.  The following can be
- * used to provide synchronized access to your <code>UnboundedFifoByteBuffer</code>:
- * <pre>
- *   Buffer fifo = BufferUtils.synchronizedBuffer(new UnboundedFifoByteBuffer());
- * </pre>
- * <p>
- * This buffer prevents null objects from being added.
- *
- * @since Commons Collections 3.0 (previously in main package v2.1)
- * @version $Revision: 1.1 $ $Date: 2004/08/24 06:52:02 $
- *
- * 
- * 
- * 
- * 
- * 
- */
-class UnboundedFifoByteBuffer {
-
-    protected byte[] buffer;
-    protected int head;
-    protected int tail;
-
-    /**
-     * Constructs an UnboundedFifoByteBuffer with the default number of elements.
-     * It is exactly the same as performing the following:
-     *
-     * <pre>
-     *   new UnboundedFifoByteBuffer(32);
-     * </pre>
-     */
-    public UnboundedFifoByteBuffer() {
-        this(32);
-    }
-
-    /**
-     * Constructs an UnboundedFifoByteBuffer with the specified number of elements.
-     * The integer must be a positive integer.
-     *
-     * @param initialSize  the initial size of the buffer
-     * @throws IllegalArgumentException  if the size is less than 1
-     */
-    public UnboundedFifoByteBuffer(int initialSize) {
-        if (initialSize <= 0) {
-            throw new IllegalArgumentException("The size must be greater than 0");
-        }
-        buffer = new byte[initialSize + 1];
-        head = 0;
-        tail = 0;
-    }
-
-    /**
-     * Returns the number of elements stored in the buffer.
-     *
-     * @return this buffer's size
-     */
-    public int size() {
-        int size = 0;
-
-        if (tail < head) {
-            size = buffer.length - head + tail;
-        } else {
-            size = tail - head;
-        }
-
-        return size;
-    }
-
-    /**
-     * Returns true if this buffer is empty; false otherwise.
-     *
-     * @return true if this buffer is empty
-     */
-    public boolean isEmpty() {
-        return (size() == 0);
-    }
-
-    /**
-     * Adds the given element to this buffer.
-     *
-     * @param b  the byte to add
-     * @return true, always
-     */
-    public boolean add(final byte b) {
-
-        if (size() + 1 >= buffer.length) {
-            byte[] tmp = new byte[((buffer.length - 1) * 2) + 1];
-
-            int j = 0;
-            for (int i = head; i != tail;) {
-                tmp[j] = buffer[i];
-                buffer[i] = 0;
-
-                j++;
-                i++;
-                if (i == buffer.length) {
-                    i = 0;
-                }
-            }
-
-            buffer = tmp;
-            head = 0;
-            tail = j;
-        }
-
-        buffer[tail] = b;
-        tail++;
-        if (tail >= buffer.length) {
-            tail = 0;
-        }
-        return true;
-    }
-
-    /**
-     * Returns the next object in the buffer.
-     *
-     * @return the next object in the buffer
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public byte get() {
-        if (isEmpty()) {
-            throw new IllegalStateException("The buffer is already empty");
-        }
-
-        return buffer[head];
-    }
-
-    /**
-     * Removes the next object from the buffer
-     *
-     * @return the removed object
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public byte remove() {
-        if (isEmpty()) {
-            throw new IllegalStateException("The buffer is already empty");
-        }
-
-        byte element = buffer[head];
-
-        head++;
-        if (head >= buffer.length) {
-            head = 0;
-        }
-
-        return element;
-    }
-
-    /**
-     * Increments the internal index.
-     *
-     * @param index  the index to increment
-     * @return the updated index
-     */
-    private int increment(int index) {
-        index++;
-        if (index >= buffer.length) {
-            index = 0;
-        }
-        return index;
-    }
-
-    /**
-     * Decrements the internal index.
-     *
-     * @param index  the index to decrement
-     * @return the updated index
-     */
-    private int decrement(int index) {
-        index--;
-        if (index < 0) {
-            index = buffer.length - 1;
-        }
-        return index;
-    }
-
-    /**
-     * Returns an iterator over this buffer's elements.
-     *
-     * @return an iterator over this buffer's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = head;
-            private int lastReturnedIndex = -1;
-
-            public boolean hasNext() {
-                return index != tail;
-
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                lastReturnedIndex = index;
-                index = increment(index);
-                return new Byte(buffer[lastReturnedIndex]);
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1) {
-                    throw new IllegalStateException();
-                }
-
-                // First element can be removed quickly
-                if (lastReturnedIndex == head) {
-                    UnboundedFifoByteBuffer.this.remove();
-                    lastReturnedIndex = -1;
-                    return;
-                }
-
-                // Other elements require us to shift the subsequent elements
-                int i = lastReturnedIndex + 1;
-                while (i != tail) {
-                    if (i >= buffer.length) {
-                        buffer[i - 1] = buffer[0];
-                        i = 0;
-                    } else {
-                        buffer[i - 1] = buffer[i];
-                        i++;
-                    }
-                }
-
-                lastReturnedIndex = -1;
-                tail = decrement(tail);
-                buffer[tail] = 0;
-                index = decrement(index);
-            }
-
-        };
-    }
-
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/field/AddressListField.java b/apache/org/apache/james/mime4j/field/AddressListField.java
deleted file mode 100644
index df9f398..0000000
--- a/apache/org/apache/james/mime4j/field/AddressListField.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.address.AddressList;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-public class AddressListField extends Field {
-    private AddressList addressList;
-    private ParseException parseException;
-
-    protected AddressListField(String name, String body, String raw, AddressList addressList, ParseException parseException) {
-        super(name, body, raw);
-        this.addressList = addressList;
-        this.parseException = parseException;
-    }
-
-    public AddressList getAddressList() {
-        return addressList;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            AddressList addressList = null;
-            ParseException parseException = null;
-            try {
-                addressList = AddressList.parse(body);
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new AddressListField(name, body, raw, addressList, parseException);
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/ContentTransferEncodingField.java b/apache/org/apache/james/mime4j/field/ContentTransferEncodingField.java
deleted file mode 100644
index 73d8d23..0000000
--- a/apache/org/apache/james/mime4j/field/ContentTransferEncodingField.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-
-
-/**
- * Represents a <code>Content-Transfer-Encoding</code> field.
- *
- * 
- * @version $Id: ContentTransferEncodingField.java,v 1.2 2004/10/02 12:41:11 ntherning Exp $
- */
-public class ContentTransferEncodingField extends Field {
-    /**
-     * The <code>7bit</code> encoding.
-     */
-    public static final String ENC_7BIT = "7bit";
-    /**
-     * The <code>8bit</code> encoding.
-     */
-    public static final String ENC_8BIT = "8bit";
-    /**
-     * The <code>binary</code> encoding.
-     */
-    public static final String ENC_BINARY = "binary";
-    /**
-     * The <code>quoted-printable</code> encoding.
-     */
-    public static final String ENC_QUOTED_PRINTABLE = "quoted-printable";
-    /**
-     * The <code>base64</code> encoding.
-     */
-    public static final String ENC_BASE64 = "base64";
-    
-    private String encoding;
-    
-    protected ContentTransferEncodingField(String name, String body, String raw, String encoding) {
-        super(name, body, raw);
-        this.encoding = encoding;
-    }
-
-    /**
-     * Gets the encoding defined in this field.
-     * 
-     * @return the encoding or an empty string if not set.
-     */
-    public String getEncoding() {
-        return encoding;
-    }
-    
-    /**
-     * Gets the encoding of the given field if. Returns the default 
-     * <code>7bit</code> if not set or if
-     * <code>f</code> is <code>null</code>.
-     * 
-     * @return the encoding.
-     */
-    public static String getEncoding(ContentTransferEncodingField f) {
-        if (f != null && f.getEncoding().length() != 0) {
-            return f.getEncoding();
-        }
-        return ENC_7BIT;
-    }
-    
-    public static class Parser implements FieldParser {
-        public Field parse(final String name, final String body, final String raw) {
-            final String encoding = body.trim().toLowerCase();
-            return new ContentTransferEncodingField(name, body, raw, encoding);
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/ContentTypeField.java b/apache/org/apache/james/mime4j/field/ContentTypeField.java
deleted file mode 100644
index ad9f7f9..0000000
--- a/apache/org/apache/james/mime4j/field/ContentTypeField.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.contenttype.parser.ContentTypeParser;
-import org.apache.james.mime4j.field.contenttype.parser.ParseException;
-import org.apache.james.mime4j.field.contenttype.parser.TokenMgrError;
-
-/**
- * Represents a <code>Content-Type</code> field.
- *
- * <p>TODO: Remove dependency on Java 1.4 regexps</p>
- *
- *
- * @version $Id: ContentTypeField.java,v 1.6 2005/01/27 14:16:31 ntherning Exp $
- */
-public class ContentTypeField extends Field {
-
-    /**
-     * The prefix of all <code>multipart</code> MIME types.
-     */
-    public static final String TYPE_MULTIPART_PREFIX = "multipart/";
-    /**
-     * The <code>multipart/digest</code> MIME type.
-     */
-    public static final String TYPE_MULTIPART_DIGEST = "multipart/digest";
-    /**
-     * The <code>text/plain</code> MIME type.
-     */
-    public static final String TYPE_TEXT_PLAIN = "text/plain";
-    /**
-     * The <code>message/rfc822</code> MIME type.
-     */
-    public static final String TYPE_MESSAGE_RFC822 = "message/rfc822";
-    /**
-     * The name of the <code>boundary</code> parameter.
-     */
-    public static final String PARAM_BOUNDARY = "boundary";
-    /**
-     * The name of the <code>charset</code> parameter.
-     */
-    public static final String PARAM_CHARSET = "charset";
-
-    private String mimeType = "";
-    private Map<String, String> parameters = null;
-    private ParseException parseException;
-
-    protected ContentTypeField(String name, String body, String raw, String mimeType, Map<String, String> parameters, ParseException parseException) {
-        super(name, body, raw);
-        this.mimeType = mimeType;
-        this.parameters = parameters;
-        this.parseException = parseException;
-    }
-
-    /**
-     * Gets the exception that was raised during parsing of
-     * the field value, if any; otherwise, null.
-     */
-    public ParseException getParseException() {
-        return parseException;
-    }
-
-    /**
-     * Gets the MIME type defined in this Content-Type field.
-     *
-     * @return the MIME type or an empty string if not set.
-     */
-    public String getMimeType() {
-        return mimeType;
-    }
-
-    /**
-     * Gets the MIME type defined in the child's
-     * Content-Type field or derives a MIME type from the parent
-     * if child is <code>null</code> or hasn't got a MIME type value set.
-     * If child's MIME type is multipart but no boundary
-     * has been set the MIME type of child will be derived from
-     * the parent.
-     *
-     * @param child the child.
-     * @param parent the parent.
-     * @return the MIME type.
-     */
-    public static String getMimeType(ContentTypeField child,
-                                     ContentTypeField parent) {
-
-        if (child == null || child.getMimeType().length() == 0
-                || child.isMultipart() && child.getBoundary() == null) {
-
-            if (parent != null && parent.isMimeType(TYPE_MULTIPART_DIGEST)) {
-                return TYPE_MESSAGE_RFC822;
-            } else {
-                return TYPE_TEXT_PLAIN;
-            }
-        }
-
-        return child.getMimeType();
-    }
-
-    /**
-     * Gets the value of a parameter. Parameter names are case-insensitive.
-     *
-     * @param name the name of the parameter to get.
-     * @return the parameter value or <code>null</code> if not set.
-     */
-    public String getParameter(String name) {
-        return parameters != null
-                    ? parameters.get(name.toLowerCase())
-                    : null;
-    }
-
-    /**
-     * Gets all parameters.
-     *
-     * @return the parameters.
-     */
-    public Map<String, String> getParameters() {
-        if (parameters != null) {
-            return Collections.unmodifiableMap(parameters);
-        }
-        return Collections.emptyMap();
-    }
-
-    /**
-     * Gets the value of the <code>boundary</code> parameter if set.
-     *
-     * @return the <code>boundary</code> parameter value or <code>null</code>
-     *             if not set.
-     */
-    public String getBoundary() {
-        return getParameter(PARAM_BOUNDARY);
-    }
-
-    /**
-     * Gets the value of the <code>charset</code> parameter if set.
-     *
-     * @return the <code>charset</code> parameter value or <code>null</code>
-     *         if not set.
-     */
-    public String getCharset() {
-        return getParameter(PARAM_CHARSET);
-    }
-
-    /**
-     * Gets the value of the <code>charset</code> parameter if set for the
-     * given field. Returns the default <code>us-ascii</code> if not set or if
-     * <code>f</code> is <code>null</code>.
-     *
-     * @return the <code>charset</code> parameter value.
-     */
-    public static String getCharset(ContentTypeField f) {
-        if (f != null) {
-            if (f.getCharset() != null && f.getCharset().length() > 0) {
-                return f.getCharset();
-            }
-        }
-        return "us-ascii";
-    }
-
-    /**
-     * Determines if the MIME type of this field matches the given one.
-     *
-     * @param mimeType the MIME type to match against.
-     * @return <code>true</code> if the MIME type of this field matches,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isMimeType(String mimeType) {
-        return this.mimeType.equalsIgnoreCase(mimeType);
-    }
-
-    /**
-     * Determines if the MIME type of this field is <code>multipart/*</code>.
-     *
-     * @return <code>true</code> if this field is has a <code>multipart/*</code>
-     *         MIME type, <code>false</code> otherwise.
-     */
-    public boolean isMultipart() {
-        return mimeType.startsWith(TYPE_MULTIPART_PREFIX);
-    }
-
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            ParseException parseException = null;
-            String mimeType = "";
-            Map<String, String> parameters = null;
-
-            ContentTypeParser parser = new ContentTypeParser(new StringReader(body));
-            try {
-                parser.parseAll();
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            catch (TokenMgrError e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = new ParseException(e.getMessage());
-            }
-
-            try {
-                final String type = parser.getType();
-                final String subType = parser.getSubType();
-
-                if (type != null && subType != null) {
-                    mimeType = (type + "/" + parser.getSubType()).toLowerCase();
-
-                    ArrayList<String> paramNames = parser.getParamNames();
-                    ArrayList<String> paramValues = parser.getParamValues();
-
-                    if (paramNames != null && paramValues != null) {
-                        for (int i = 0; i < paramNames.size() && i < paramValues.size(); i++) {
-                            if (parameters == null)
-                                parameters = new HashMap<String, String>((int)(paramNames.size() * 1.3 + 1));
-                            String paramName = paramNames.get(i).toLowerCase();
-                            String paramValue = paramValues.get(i);
-                            parameters.put(paramName, paramValue);
-                        }
-                    }
-                }
-            }
-            catch (NullPointerException npe) {
-            }
-            return new ContentTypeField(name, body, raw, mimeType, parameters, parseException);
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/DateTimeField.java b/apache/org/apache/james/mime4j/field/DateTimeField.java
deleted file mode 100644
index 2336d99..0000000
--- a/apache/org/apache/james/mime4j/field/DateTimeField.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-
-import android.text.TextUtils;
-import java.util.regex.Pattern;
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-
-//END
-import org.apache.james.mime4j.field.datetime.DateTime;
-import org.apache.james.mime4j.field.datetime.parser.ParseException;
-
-import java.util.Date;
-
-public class DateTimeField extends Field {
-    private Date date;
-    private ParseException parseException;
-
-    //BEGIN android-changed
-    // "GMT" + "+" or "-" + 4 digits
-    private static final Pattern DATE_CLEANUP_PATTERN_WRONG_TIMEZONE =
-        Pattern.compile("GMT([-+]\\d{4})$");
-    //END android-changed
-
-    protected DateTimeField(String name, String body, String raw, Date date, ParseException parseException) {
-        super(name, body, raw);
-        this.date = date;
-        this.parseException = parseException;
-    }
-
-    public Date getDate() {
-        return date;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, String body, final String raw) {
-            Date date = null;
-            ParseException parseException = null;
-            //BEGIN android-changed
-            body = cleanUpMimeDate(body);
-            //END android-changed
-            try {
-                date = DateTime.parse(body).getDate();
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new DateTimeField(name, body, raw, date, parseException);
-        }
-    }
-
-    //BEGIN android-changed
-    /**
-     * Try to make a date MIME(RFC 2822/5322)-compliant.
-     *
-     * <p>It fixes: - "Thu, 10 Dec 09 15:08:08 GMT-0700" to "Thu, 10 Dec 09 15:08:08 -0700" (4 digit
-     * zone value can't be preceded by "GMT") We got a report saying eBay sends a date in this format
-     */
-    private static String cleanUpMimeDate(String date) {
-        if (TextUtils.isEmpty(date)) {
-            return date;
-        }
-        date = DATE_CLEANUP_PATTERN_WRONG_TIMEZONE.matcher(date).replaceFirst("$1");
-        return date;
-    }
-    //END android-changed
-}
diff --git a/apache/org/apache/james/mime4j/field/DefaultFieldParser.java b/apache/org/apache/james/mime4j/field/DefaultFieldParser.java
deleted file mode 100644
index 3695afe..0000000
--- a/apache/org/apache/james/mime4j/field/DefaultFieldParser.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Copyright 2006 the mime4j 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 org.apache.james.mime4j.field;
-
-public class DefaultFieldParser extends DelegatingFieldParser {
-    
-    public DefaultFieldParser() {
-        setFieldParser(Field.CONTENT_TRANSFER_ENCODING, new ContentTransferEncodingField.Parser());
-        setFieldParser(Field.CONTENT_TYPE, new ContentTypeField.Parser());
-        
-        final DateTimeField.Parser dateTimeParser = new DateTimeField.Parser();
-        setFieldParser(Field.DATE, dateTimeParser);
-        setFieldParser(Field.RESENT_DATE, dateTimeParser);
-        
-        final MailboxListField.Parser mailboxListParser = new MailboxListField.Parser();
-        setFieldParser(Field.FROM, mailboxListParser);
-        setFieldParser(Field.RESENT_FROM, mailboxListParser);
-        
-        final MailboxField.Parser mailboxParser = new MailboxField.Parser();
-        setFieldParser(Field.SENDER, mailboxParser);
-        setFieldParser(Field.RESENT_SENDER, mailboxParser);
-        
-        final AddressListField.Parser addressListParser = new AddressListField.Parser();
-        setFieldParser(Field.TO, addressListParser);
-        setFieldParser(Field.RESENT_TO, addressListParser);
-        setFieldParser(Field.CC, addressListParser);
-        setFieldParser(Field.RESENT_CC, addressListParser);
-        setFieldParser(Field.BCC, addressListParser);
-        setFieldParser(Field.RESENT_BCC, addressListParser);
-        setFieldParser(Field.REPLY_TO, addressListParser);
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/DelegatingFieldParser.java b/apache/org/apache/james/mime4j/field/DelegatingFieldParser.java
deleted file mode 100644
index 32b69ec..0000000
--- a/apache/org/apache/james/mime4j/field/DelegatingFieldParser.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Copyright 2006 the mime4j 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 org.apache.james.mime4j.field;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class DelegatingFieldParser implements FieldParser {
-
-    private Map<String, FieldParser> parsers = new HashMap<String, FieldParser>();
-    private FieldParser defaultParser = new UnstructuredField.Parser();
-
-    /**
-     * Sets the parser used for the field named <code>name</code>.
-     * @param name the name of the field
-     * @param parser the parser for fields named <code>name</code>
-     */
-    public void setFieldParser(final String name, final FieldParser parser) {
-        parsers.put(name.toLowerCase(), parser);
-    }
-
-    public FieldParser getParser(final String name) {
-        final FieldParser field = parsers.get(name.toLowerCase());
-        if(field==null) {
-            return defaultParser;
-        }
-        return field;
-    }
-
-    public Field parse(final String name, final String body, final String raw) {
-        final FieldParser parser = getParser(name);
-        return parser.parse(name, body, raw);
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/Field.java b/apache/org/apache/james/mime4j/field/Field.java
deleted file mode 100644
index 4dea5c5..0000000
--- a/apache/org/apache/james/mime4j/field/Field.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * The base class of all field classes.
- *
- * 
- * @version $Id: Field.java,v 1.6 2004/10/25 07:26:46 ntherning Exp $
- */
-public abstract class Field {
-    public static final String SENDER = "Sender";
-    public static final String FROM = "From";
-    public static final String TO = "To";
-    public static final String CC = "Cc";
-    public static final String BCC = "Bcc";
-    public static final String REPLY_TO = "Reply-To";
-    public static final String RESENT_SENDER = "Resent-Sender";
-    public static final String RESENT_FROM = "Resent-From";
-    public static final String RESENT_TO = "Resent-To";
-    public static final String RESENT_CC = "Resent-Cc";
-    public static final String RESENT_BCC = "Resent-Bcc";
-
-    public static final String DATE = "Date";
-    public static final String RESENT_DATE = "Resent-Date";
-
-    public static final String SUBJECT = "Subject";
-    public static final String CONTENT_TYPE = "Content-Type";
-    public static final String CONTENT_TRANSFER_ENCODING = 
-                                        "Content-Transfer-Encoding";
-    
-    private static final String FIELD_NAME_PATTERN = 
-        "^([\\x21-\\x39\\x3b-\\x7e]+)[ \t]*:";
-    private static final Pattern fieldNamePattern = 
-        Pattern.compile(FIELD_NAME_PATTERN);
-        
-    private static final DefaultFieldParser parser = new DefaultFieldParser();
-    
-    private final String name;
-    private final String body;
-    private final String raw;
-    
-    protected Field(final String name, final String body, final String raw) {
-        this.name = name;
-        this.body = body;
-        this.raw = raw;
-    }
-    
-    /**
-     * Parses the given string and returns an instance of the 
-     * <code>Field</code> class. The type of the class returned depends on
-     * the field name:
-     * <table>
-     *      <tr>
-     *          <td><em>Field name</em></td><td><em>Class returned</em></td>
-     *          <td>Content-Type</td><td>org.apache.james.mime4j.field.ContentTypeField</td>
-     *          <td>other</td><td>org.apache.james.mime4j.field.UnstructuredField</td>
-     *      </tr>
-     * </table>
-     * 
-     * @param s the string to parse.
-     * @return a <code>Field</code> instance.
-     * @throws IllegalArgumentException on parse errors.
-     */
-    public static Field parse(final String raw) {
-        
-        /*
-         * Unfold the field.
-         */
-        final String unfolded = raw.replaceAll("\r|\n", "");
-        
-        /*
-         * Split into name and value.
-         */
-        final Matcher fieldMatcher = fieldNamePattern.matcher(unfolded);
-        if (!fieldMatcher.find()) {
-            throw new IllegalArgumentException("Invalid field in string");
-        }
-        final String name = fieldMatcher.group(1);
-        
-        String body = unfolded.substring(fieldMatcher.end());
-        if (body.length() > 0 && body.charAt(0) == ' ') {
-            body = body.substring(1);
-        }
-        
-        return parser.parse(name, body, raw);
-    }
-    
-    /**
-     * Gets the default parser used to parse fields.
-     * @return the default field parser
-     */
-    public static DefaultFieldParser getParser() {
-        return parser;
-    }
-    
-    /**
-     * Gets the name of the field (<code>Subject</code>, 
-     * <code>From</code>, etc).
-     * 
-     * @return the field name.
-     */
-    public String getName() {
-        return name;
-    }
-    
-    /**
-     * Gets the original raw field string.
-     * 
-     * @return the original raw field string.
-     */
-    public String getRaw() {
-        return raw;
-    }
-    
-    /**
-     * Gets the unfolded, unparsed and possibly encoded (see RFC 2047) field 
-     * body string.
-     * 
-     * @return the unfolded unparsed field body string.
-     */
-    public String getBody() {
-        return body;
-    }
-    
-    /**
-     * Determines if this is a <code>Content-Type</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>Content-Type</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isContentType() {
-        return CONTENT_TYPE.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * Determines if this is a <code>Subject</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>Subject</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isSubject() {
-        return SUBJECT.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * Determines if this is a <code>From</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>From</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isFrom() {
-        return FROM.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * Determines if this is a <code>To</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>To</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isTo() {
-        return TO.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * @see #getRaw()
-     */
-    public String toString() {
-        return raw;
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/FieldParser.java b/apache/org/apache/james/mime4j/field/FieldParser.java
deleted file mode 100644
index 78aaf13..0000000
--- a/apache/org/apache/james/mime4j/field/FieldParser.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- *  Copyright 2006 the mime4j 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 org.apache.james.mime4j.field;
-
-public interface FieldParser {
-    
-    Field parse(final String name, final String body, final String raw);
-}
diff --git a/apache/org/apache/james/mime4j/field/MailboxField.java b/apache/org/apache/james/mime4j/field/MailboxField.java
deleted file mode 100644
index f159800..0000000
--- a/apache/org/apache/james/mime4j/field/MailboxField.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.address.AddressList;
-import org.apache.james.mime4j.field.address.Mailbox;
-import org.apache.james.mime4j.field.address.MailboxList;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-public class MailboxField extends Field {
-    private final Mailbox mailbox;
-    private final ParseException parseException;
-
-    protected MailboxField(final String name, final String body, final String raw, final Mailbox mailbox, final ParseException parseException) {
-        super(name, body, raw);
-        this.mailbox = mailbox;
-        this.parseException = parseException;
-    }
-
-    public Mailbox getMailbox() {
-        return mailbox;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-    
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            Mailbox mailbox = null;
-            ParseException parseException = null;
-            try {
-                MailboxList mailboxList = AddressList.parse(body).flatten();
-                if (mailboxList.size() > 0) {
-                    mailbox = mailboxList.get(0);
-                }
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new MailboxField(name, body, raw, mailbox, parseException);
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/MailboxListField.java b/apache/org/apache/james/mime4j/field/MailboxListField.java
deleted file mode 100644
index 23378d4..0000000
--- a/apache/org/apache/james/mime4j/field/MailboxListField.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.address.AddressList;
-import org.apache.james.mime4j.field.address.MailboxList;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-public class MailboxListField extends Field {
-    
-    private MailboxList mailboxList;
-    private ParseException parseException;
-
-    protected MailboxListField(final String name, final String body, final String raw, final MailboxList mailboxList, final ParseException parseException) {
-        super(name, body, raw);
-        this.mailboxList = mailboxList;
-        this.parseException = parseException;
-    }
-
-    public MailboxList getMailboxList() {
-        return mailboxList;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-    
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            MailboxList mailboxList = null;
-            ParseException parseException = null;
-            try {
-                mailboxList = AddressList.parse(body).flatten();
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new MailboxListField(name, body, raw, mailboxList, parseException);
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/UnstructuredField.java b/apache/org/apache/james/mime4j/field/UnstructuredField.java
deleted file mode 100644
index 6084e44..0000000
--- a/apache/org/apache/james/mime4j/field/UnstructuredField.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field;
-
-import org.apache.james.mime4j.decoder.DecoderUtil;
-
-
-/**
- * Simple unstructured field such as <code>Subject</code>.
- *
- * 
- * @version $Id: UnstructuredField.java,v 1.3 2004/10/25 07:26:46 ntherning Exp $
- */
-public class UnstructuredField extends Field {
-    private String value;
-    
-    protected UnstructuredField(String name, String body, String raw, String value) {
-        super(name, body, raw);
-        this.value = value;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public static class Parser implements FieldParser {
-        public Field parse(final String name, final String body, final String raw) {
-            final String value = DecoderUtil.decodeEncodedWords(body);
-            return new UnstructuredField(name, body, raw, value);
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/Address.java b/apache/org/apache/james/mime4j/field/address/Address.java
deleted file mode 100644
index 3e24e91..0000000
--- a/apache/org/apache/james/mime4j/field/address/Address.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * The abstract base for classes that represent RFC2822 addresses.
- * This includes groups and mailboxes.
- *
- * Currently, no public methods are introduced on this class.
- *
- *
- */
-public abstract class Address {
-
-	/**
-	 * Adds any mailboxes represented by this address
-	 * into the given ArrayList. Note that this method
-	 * has default (package) access, so a doAddMailboxesTo
-	 * method is needed to allow the behavior to be
-	 * overridden by subclasses.
-	 */
-	final void addMailboxesTo(ArrayList<Address> results) {
-		doAddMailboxesTo(results);
-	}
-
-	/**
-	 * Adds any mailboxes represented by this address
-	 * into the given ArrayList. Must be overridden by
-	 * concrete subclasses.
-	 */
-	protected abstract void doAddMailboxesTo(ArrayList<Address> results);
-
-}
diff --git a/apache/org/apache/james/mime4j/field/address/AddressList.java b/apache/org/apache/james/mime4j/field/address/AddressList.java
deleted file mode 100644
index 1829e79..0000000
--- a/apache/org/apache/james/mime4j/field/address/AddressList.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-import org.apache.james.mime4j.field.address.parser.AddressListParser;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-import java.io.StringReader;
-import java.util.ArrayList;
-
-/**
- * An immutable, random-access list of Address objects.
- *
- *
- */
-public class AddressList {
-
-	private ArrayList<Address> addresses;
-
-	/**
-	 * @param addresses An ArrayList that contains only Address objects.
-	 * @param dontCopy true iff it is not possible for the addresses ArrayList to be modified by someone else.
-	 */
-	public AddressList(ArrayList<Address> addresses, boolean dontCopy) {
-		if (addresses != null)
-			this.addresses = (dontCopy ? addresses : new ArrayList<Address>(addresses));
-		else
-			this.addresses = new ArrayList<Address>(0);
-	}
-
-	/**
-	 * The number of elements in this list.
-	 */
-	public int size() {
-		return addresses.size();
-	}
-
-	/**
-	 * Gets an address.
-	 */
-	public Address get(int index) {
-		if (0 > index || size() <= index)
-			throw new IndexOutOfBoundsException();
-		return addresses.get(index);
-	}
-
-	/**
-	 * Returns a flat list of all mailboxes represented
-	 * in this address list. Use this if you don't care
-	 * about grouping.
-	 */
-	public MailboxList flatten() {
-		// in the common case, all addresses are mailboxes
-		boolean groupDetected = false;
-		for (int i = 0; i < size(); i++) {
-			if (!(get(i) instanceof Mailbox)) {
-				groupDetected = true;
-				break;
-			}
-		}
-
-		if (!groupDetected)
-			return new MailboxList(addresses, true);
-
-		ArrayList<Address> results = new ArrayList<Address>();
-		for (int i = 0; i < size(); i++) {
-			Address addr = get(i);
-			addr.addMailboxesTo(results);
-		}
-
-		// copy-on-construct this time, because subclasses
-		// could have held onto a reference to the results
-		return new MailboxList(results, false);
-	}
-
-	/**
-	 * Dumps a representation of this address list to
-	 * stdout, for debugging purposes.
-	 */
-	public void print() {
-		for (int i = 0; i < size(); i++) {
-			Address addr = get(i);
-			System.out.println(addr.toString());
-		}
-	}
-
-	/**
-	 * Parse the address list string, such as the value
-	 * of a From, To, Cc, Bcc, Sender, or Reply-To
-	 * header.
-	 *
-	 * The string MUST be unfolded already.
-	 */
-	public static AddressList parse(String rawAddressList) throws ParseException {
-		AddressListParser parser = new AddressListParser(new StringReader(rawAddressList));
-		return Builder.getInstance().buildAddressList(parser.parse());
-	}
-
-	/**
-	 * Test console.
-	 */
-	public static void main(String[] args) throws Exception {
-		java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
-		while (true) {
-			try {
-				System.out.print("> ");
-				String line = reader.readLine();
-				if (line.length() == 0 || line.toLowerCase().equals("exit") || line.toLowerCase().equals("quit")) {
-					System.out.println("Goodbye.");
-					return;
-				}
-				AddressList list = parse(line);
-				list.print();
-			}
-			catch(Exception e) {
-				e.printStackTrace();
-				Thread.sleep(300);
-			}
-		}
-	}
-}
diff --git a/apache/org/apache/james/mime4j/field/address/Builder.java b/apache/org/apache/james/mime4j/field/address/Builder.java
deleted file mode 100644
index 3bcd15b..0000000
--- a/apache/org/apache/james/mime4j/field/address/Builder.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.apache.james.mime4j.decoder.DecoderUtil;
-import org.apache.james.mime4j.field.address.parser.ASTaddr_spec;
-import org.apache.james.mime4j.field.address.parser.ASTaddress;
-import org.apache.james.mime4j.field.address.parser.ASTaddress_list;
-import org.apache.james.mime4j.field.address.parser.ASTangle_addr;
-import org.apache.james.mime4j.field.address.parser.ASTdomain;
-import org.apache.james.mime4j.field.address.parser.ASTgroup_body;
-import org.apache.james.mime4j.field.address.parser.ASTlocal_part;
-import org.apache.james.mime4j.field.address.parser.ASTmailbox;
-import org.apache.james.mime4j.field.address.parser.ASTname_addr;
-import org.apache.james.mime4j.field.address.parser.ASTphrase;
-import org.apache.james.mime4j.field.address.parser.ASTroute;
-import org.apache.james.mime4j.field.address.parser.Node;
-import org.apache.james.mime4j.field.address.parser.SimpleNode;
-import org.apache.james.mime4j.field.address.parser.Token;
-
-/**
- * Transforms the JJTree-generated abstract syntax tree
- * into a graph of org.apache.james.mime4j.field.address objects.
- *
- *
- */
-class Builder {
-
-	private static Builder singleton = new Builder();
-
-	public static Builder getInstance() {
-		return singleton;
-	}
-
-
-
-	public AddressList buildAddressList(ASTaddress_list node) {
-		ArrayList<Address> list = new ArrayList<Address>();
-		for (int i = 0; i < node.jjtGetNumChildren(); i++) {
-			ASTaddress childNode = (ASTaddress) node.jjtGetChild(i);
-			Address address = buildAddress(childNode);
-			list.add(address);
-		}
-		return new AddressList(list, true);
-	}
-
-	private Address buildAddress(ASTaddress node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		Node n = it.nextNode();
-		if (n instanceof ASTaddr_spec) {
-			return buildAddrSpec((ASTaddr_spec)n);
-		}
-		else if (n instanceof ASTangle_addr) {
-			return buildAngleAddr((ASTangle_addr)n);
-		}
-		else if (n instanceof ASTphrase) {
-			String name = buildString((ASTphrase)n, false);
-			Node n2 = it.nextNode();
-			if (n2 instanceof ASTgroup_body) {
-				return new Group(name, buildGroupBody((ASTgroup_body)n2));
-			}
-			else if (n2 instanceof ASTangle_addr) {
-                name = DecoderUtil.decodeEncodedWords(name);
-				return new NamedMailbox(name, buildAngleAddr((ASTangle_addr)n2));
-			}
-			else {
-				throw new IllegalStateException();
-			}
-		}
-		else {
-			throw new IllegalStateException();
-		}
-	}
-
-
-
-	private MailboxList buildGroupBody(ASTgroup_body node) {
-		ArrayList<Address> results = new ArrayList<Address>();
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		while (it.hasNext()) {
-			Node n = it.nextNode();
-			if (n instanceof ASTmailbox)
-				results.add(buildMailbox((ASTmailbox)n));
-			else
-				throw new IllegalStateException();
-		}
-		return new MailboxList(results, true);
-	}
-
-	private Mailbox buildMailbox(ASTmailbox node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		Node n = it.nextNode();
-		if (n instanceof ASTaddr_spec) {
-			return buildAddrSpec((ASTaddr_spec)n);
-		}
-		else if (n instanceof ASTangle_addr) {
-			return buildAngleAddr((ASTangle_addr)n);
-		}
-		else if (n instanceof ASTname_addr) {
-			return buildNameAddr((ASTname_addr)n);
-		}
-		else {
-			throw new IllegalStateException();
-		}
-	}
-
-	private NamedMailbox buildNameAddr(ASTname_addr node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		Node n = it.nextNode();
-		String name;
-		if (n instanceof ASTphrase) {
-			name = buildString((ASTphrase)n, false);
-		}
-		else {
-			throw new IllegalStateException();
-		}
-
-		n = it.nextNode();
-		if (n instanceof ASTangle_addr) {
-            name = DecoderUtil.decodeEncodedWords(name);
-			return new NamedMailbox(name, buildAngleAddr((ASTangle_addr) n));
-		}
-		else {
-			throw new IllegalStateException();
-		}
-	}
-
-	private Mailbox buildAngleAddr(ASTangle_addr node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		DomainList route = null;
-		Node n = it.nextNode();
-		if (n instanceof ASTroute) {
-			route = buildRoute((ASTroute)n);
-			n = it.nextNode();
-		}
-		else if (n instanceof ASTaddr_spec)
-			; // do nothing
-		else
-			throw new IllegalStateException();
-
-		if (n instanceof ASTaddr_spec)
-			return buildAddrSpec(route, (ASTaddr_spec)n);
-		else
-			throw new IllegalStateException();
-	}
-
-	private DomainList buildRoute(ASTroute node) {
-		ArrayList<String> results = new ArrayList<String>(node.jjtGetNumChildren());
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		while (it.hasNext()) {
-			Node n = it.nextNode();
-			if (n instanceof ASTdomain)
-				results.add(buildString((ASTdomain)n, true));
-			else
-				throw new IllegalStateException();
-		}
-		return new DomainList(results, true);
-	}
-
-	private Mailbox buildAddrSpec(ASTaddr_spec node) {
-		return buildAddrSpec(null, node);
-	}
-	private Mailbox buildAddrSpec(DomainList route, ASTaddr_spec node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		String localPart = buildString((ASTlocal_part)it.nextNode(), true);
-		String domain = buildString((ASTdomain)it.nextNode(), true);
-		return new Mailbox(route, localPart, domain);
-	}
-
-
-	private String buildString(SimpleNode node, boolean stripSpaces) {
-		Token head = node.firstToken;
-		Token tail = node.lastToken;
-		StringBuffer out = new StringBuffer();
-
-		while (head != tail) {
-			out.append(head.image);
-			head = head.next;
-			if (!stripSpaces)
-				addSpecials(out, head.specialToken);
-		}
-		out.append(tail.image);
-
-		return out.toString();
-	}
-
-	private void addSpecials(StringBuffer out, Token specialToken) {
-		if (specialToken != null) {
-			addSpecials(out, specialToken.specialToken);
-			out.append(specialToken.image);
-		}
-	}
-
-	private static class ChildNodeIterator implements Iterator<Node> {
-
-		private SimpleNode simpleNode;
-		private int index;
-		private int len;
-
-		public ChildNodeIterator(SimpleNode simpleNode) {
-			this.simpleNode = simpleNode;
-			this.len = simpleNode.jjtGetNumChildren();
-			this.index = 0;
-		}
-
-		public void remove() {
-			throw new UnsupportedOperationException();
-		}
-
-		public boolean hasNext() {
-			return index < len;
-		}
-
-		public Node next() {
-			return nextNode();
-		}
-
-		public Node nextNode() {
-			return simpleNode.jjtGetChild(index++);
-		}
-
-	}
-}
diff --git a/apache/org/apache/james/mime4j/field/address/DomainList.java b/apache/org/apache/james/mime4j/field/address/DomainList.java
deleted file mode 100644
index 49b0f3b..0000000
--- a/apache/org/apache/james/mime4j/field/address/DomainList.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * An immutable, random-access list of Strings (that
- * are supposedly domain names or domain literals).
- *
- *
- */
-public class DomainList {
-	private ArrayList<String> domains;
-
-	/**
-	 * @param domains An ArrayList that contains only String objects.
-	 * @param dontCopy true iff it is not possible for the domains ArrayList to be modified by someone else.
-	 */
-	public DomainList(ArrayList<String> domains, boolean dontCopy) {
-		if (domains != null)
-			this.domains = (dontCopy ? domains : new ArrayList<String>(domains));
-		else
-			this.domains = new ArrayList<String>(0);
-	}
-
-	/**
-	 * The number of elements in this list.
-	 */
-	public int size() {
-		return domains.size();
-	}
-
-	/**
-	 * Gets the domain name or domain literal at the
-	 * specified index.
-	 * @throws IndexOutOfBoundsException If index is &lt; 0 or &gt;= size().
-	 */
-	public String get(int index) {
-		if (0 > index || size() <= index)
-			throw new IndexOutOfBoundsException();
-		return domains.get(index);
-	}
-
-	/**
-	 * Returns the list of domains formatted as a route
-	 * string (not including the trailing ':').
-	 */
-	public String toRouteString() {
-		StringBuffer out = new StringBuffer();
-		for (int i = 0; i < domains.size(); i++) {
-			out.append("@");
-			out.append(get(i));
-			if (i + 1 < domains.size())
-				out.append(",");
-		}
-		return out.toString();
-	}
-}
diff --git a/apache/org/apache/james/mime4j/field/address/Group.java b/apache/org/apache/james/mime4j/field/address/Group.java
deleted file mode 100644
index c0ab7f7..0000000
--- a/apache/org/apache/james/mime4j/field/address/Group.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * A named group of zero or more mailboxes.
- *
- *
- */
-public class Group extends Address {
-	private String name;
-	private MailboxList mailboxList;
-
-	/**
-	 * @param name The group name.
-	 * @param mailboxes The mailboxes in this group.
-	 */
-	public Group(String name, MailboxList mailboxes) {
-		this.name = name;
-		this.mailboxList = mailboxes;
-	}
-
-	/**
-	 * Returns the group name.
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * Returns the mailboxes in this group.
-	 */
-	public MailboxList getMailboxes() {
-		return mailboxList;
-	}
-
-	@Override
-	public String toString() {
-		StringBuffer buf = new StringBuffer();
-		buf.append(name);
-		buf.append(":");
-		for (int i = 0; i < mailboxList.size(); i++) {
-			buf.append(mailboxList.get(i).toString());
-			if (i + 1 < mailboxList.size())
-				buf.append(",");
-		}
-		buf.append(";");
-		return buf.toString();
-	}
-
-	@Override
-	protected void doAddMailboxesTo(ArrayList<Address> results) {
-		for (int i = 0; i < mailboxList.size(); i++)
-			results.add(mailboxList.get(i));
-	}
-}
diff --git a/apache/org/apache/james/mime4j/field/address/Mailbox.java b/apache/org/apache/james/mime4j/field/address/Mailbox.java
deleted file mode 100644
index 25f2548..0000000
--- a/apache/org/apache/james/mime4j/field/address/Mailbox.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * Represents a single e-mail address.
- *
- *
- */
-public class Mailbox extends Address {
-	private DomainList route;
-	private String localPart;
-	private String domain;
-
-	/**
-	 * Creates a mailbox without a route. Routes are obsolete.
-	 * @param localPart The part of the e-mail address to the left of the "@".
-	 * @param domain The part of the e-mail address to the right of the "@".
-	 */
-	public Mailbox(String localPart, String domain) {
-		this(null, localPart, domain);
-	}
-
-	/**
-	 * Creates a mailbox with a route. Routes are obsolete.
-	 * @param route The zero or more domains that make up the route. Can be null.
-	 * @param localPart The part of the e-mail address to the left of the "@".
-	 * @param domain The part of the e-mail address to the right of the "@".
-	 */
-	public Mailbox(DomainList route, String localPart, String domain) {
-		this.route = route;
-		this.localPart = localPart;
-		this.domain = domain;
-	}
-
-	/**
-	 * Returns the route list.
-	 */
-	public DomainList getRoute() {
-		return route;
-	}
-
-	/**
-	 * Returns the left part of the e-mail address
-	 * (before "@").
-	 */
-	public String getLocalPart() {
-		return localPart;
-	}
-
-	/**
-	 * Returns the right part of the e-mail address
-	 * (after "@").
-	 */
-	public String getDomain() {
-		return domain;
-	}
-
-	/**
-	 * Formats the address as a string, not including
-	 * the route.
-	 *
-	 * @see #getAddressString(boolean)
-	 */
-	public String getAddressString() {
-		return getAddressString(false);
-	}
-
-	/**
-	 * Note that this value may not be usable
-	 * for transport purposes, only display purposes.
-	 *
-	 * For example, if the unparsed address was
-	 *
-	 *   <"Joe Cheng"@joecheng.com>
-	 *
-	 * this method would return
-	 *
-	 *   <Joe Cheng@joecheng.com>
-	 *
-	 * which is not valid for transport; the local part
-	 * would need to be re-quoted.
-	 *
-	 * @param includeRoute true if the route should be included if it exists.
-	 */
-	public String getAddressString(boolean includeRoute) {
-		return "<" + (!includeRoute || route == null ? "" : route.toRouteString() + ":")
-			+ localPart
-			+ (domain == null ? "" : "@")
-			+ domain + ">";
-	}
-
-	@Override
-	protected final void doAddMailboxesTo(ArrayList<Address> results) {
-		results.add(this);
-	}
-
-	@Override
-	public String toString() {
-		return getAddressString();
-	}
-}
diff --git a/apache/org/apache/james/mime4j/field/address/MailboxList.java b/apache/org/apache/james/mime4j/field/address/MailboxList.java
deleted file mode 100644
index 2c9efb3..0000000
--- a/apache/org/apache/james/mime4j/field/address/MailboxList.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * An immutable, random-access list of Mailbox objects.
- *
- *
- */
-public class MailboxList {
-
-	private ArrayList<Address> mailboxes;
-
-	/**
-	 * @param mailboxes An ArrayList that contains only Mailbox objects.
-	 * @param dontCopy true iff it is not possible for the mailboxes ArrayList to be modified by someone else.
-	 */
-	public MailboxList(ArrayList<Address> mailboxes, boolean dontCopy) {
-		if (mailboxes != null)
-			this.mailboxes = (dontCopy ? mailboxes : new ArrayList<Address>(mailboxes));
-		else
-			this.mailboxes = new ArrayList<Address>(0);
-	}
-
-	/**
-	 * The number of elements in this list.
-	 */
-	public int size() {
-		return mailboxes.size();
-	}
-
-	/**
-	 * Gets an address.
-	 */
-	public Mailbox get(int index) {
-		if (0 > index || size() <= index)
-			throw new IndexOutOfBoundsException();
-		return (Mailbox)mailboxes.get(index);
-	}
-
-	/**
-	 * Dumps a representation of this mailbox list to
-	 * stdout, for debugging purposes.
-	 */
-	public void print() {
-		for (int i = 0; i < size(); i++) {
-			Mailbox mailbox = get(i);
-			System.out.println(mailbox.toString());
-		}
-	}
-
-}
diff --git a/apache/org/apache/james/mime4j/field/address/NamedMailbox.java b/apache/org/apache/james/mime4j/field/address/NamedMailbox.java
deleted file mode 100644
index 4b83060..0000000
--- a/apache/org/apache/james/mime4j/field/address/NamedMailbox.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address;
-
-/**
- * A Mailbox that has a name/description.
- *
- *
- */
-public class NamedMailbox extends Mailbox {
-	private String name;
-
-	/**
-	 * @see Mailbox#Mailbox(String, String)
-	 */
-	public NamedMailbox(String name, String localPart, String domain) {
-		super(localPart, domain);
-		this.name = name;
-	}
-
-	/**
-	 * @see Mailbox#Mailbox(DomainList, String, String)
-	 */
-	public NamedMailbox(String name, DomainList route, String localPart, String domain) {
-		super(route, localPart, domain);
-		this.name = name;
-	}
-
-	/**
-	 * Creates a named mailbox based on an unnamed mailbox.
-	 */
-	public NamedMailbox(String name, Mailbox baseMailbox) {
-		super(baseMailbox.getRoute(), baseMailbox.getLocalPart(), baseMailbox.getDomain());
-		this.name = name;
-	}
-
-	/**
-	 * Returns the name of the mailbox.
-	 */
-	public String getName() {
-		return this.name;
-	}
-
-	/**
-	 * Same features (or problems) as Mailbox.getAddressString(boolean),
-	 * only more so.
-	 *
-	 * @see Mailbox#getAddressString(boolean)
-	 */
-	@Override
-	public String getAddressString(boolean includeRoute) {
-		return (name == null ? "" : name + " ") + super.getAddressString(includeRoute);
-	}
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java b/apache/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java
deleted file mode 100644
index 4d56d00..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTaddr_spec.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTaddr_spec extends SimpleNode {
-  public ASTaddr_spec(int id) {
-    super(id);
-  }
-
-  public ASTaddr_spec(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTaddress.java b/apache/org/apache/james/mime4j/field/address/parser/ASTaddress.java
deleted file mode 100644
index 47bdeda..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTaddress.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTaddress.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTaddress extends SimpleNode {
-  public ASTaddress(int id) {
-    super(id);
-  }
-
-  public ASTaddress(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java b/apache/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java
deleted file mode 100644
index 737840e..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTaddress_list.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTaddress_list extends SimpleNode {
-  public ASTaddress_list(int id) {
-    super(id);
-  }
-
-  public ASTaddress_list(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java b/apache/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java
deleted file mode 100644
index 8cb8f42..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTangle_addr.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTangle_addr extends SimpleNode {
-  public ASTangle_addr(int id) {
-    super(id);
-  }
-
-  public ASTangle_addr(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTdomain.java b/apache/org/apache/james/mime4j/field/address/parser/ASTdomain.java
deleted file mode 100644
index b526643..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTdomain.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTdomain.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTdomain extends SimpleNode {
-  public ASTdomain(int id) {
-    super(id);
-  }
-
-  public ASTdomain(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java b/apache/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java
deleted file mode 100644
index f6017b9..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTgroup_body.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTgroup_body extends SimpleNode {
-  public ASTgroup_body(int id) {
-    super(id);
-  }
-
-  public ASTgroup_body(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java b/apache/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java
deleted file mode 100644
index 5c244fa..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTlocal_part.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTlocal_part extends SimpleNode {
-  public ASTlocal_part(int id) {
-    super(id);
-  }
-
-  public ASTlocal_part(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTmailbox.java b/apache/org/apache/james/mime4j/field/address/parser/ASTmailbox.java
deleted file mode 100644
index aeb469d..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTmailbox.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTmailbox.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTmailbox extends SimpleNode {
-  public ASTmailbox(int id) {
-    super(id);
-  }
-
-  public ASTmailbox(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTname_addr.java b/apache/org/apache/james/mime4j/field/address/parser/ASTname_addr.java
deleted file mode 100644
index 846c731..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTname_addr.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTname_addr.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTname_addr extends SimpleNode {
-  public ASTname_addr(int id) {
-    super(id);
-  }
-
-  public ASTname_addr(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTphrase.java b/apache/org/apache/james/mime4j/field/address/parser/ASTphrase.java
deleted file mode 100644
index 7d711c5..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTphrase.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTphrase.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTphrase extends SimpleNode {
-  public ASTphrase(int id) {
-    super(id);
-  }
-
-  public ASTphrase(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ASTroute.java b/apache/org/apache/james/mime4j/field/address/parser/ASTroute.java
deleted file mode 100644
index 54ea115..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ASTroute.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTroute.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTroute extends SimpleNode {
-  public ASTroute(int id) {
-    super(id);
-  }
-
-  public ASTroute(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/AddressListParser.java b/apache/org/apache/james/mime4j/field/address/parser/AddressListParser.java
deleted file mode 100644
index 8094df0..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/AddressListParser.java
+++ /dev/null
@@ -1,977 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParser.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-public class AddressListParser/*@bgen(jjtree)*/implements AddressListParserTreeConstants, AddressListParserConstants {/*@bgen(jjtree)*/
-  protected JJTAddressListParserState jjtree = new JJTAddressListParserState();public static void main(String args[]) throws ParseException {
-                while (true) {
-                    try {
-                                AddressListParser parser = new AddressListParser(System.in);
-                        parser.parseLine();
-                        ((SimpleNode)parser.jjtree.rootNode()).dump("> ");
-                    } catch (Exception x) {
-                                x.printStackTrace();
-                                return;
-                    }
-                }
-    }
-
-    private static void log(String msg) {
-        System.out.print(msg);
-    }
-
-    public ASTaddress_list parse() throws ParseException {
-        try {
-            parseAll();
-            return (ASTaddress_list)jjtree.rootNode();
-        } catch (TokenMgrError tme) {
-            throw new ParseException(tme.getMessage());
-        }
-    }
-
-
-    void jjtreeOpenNodeScope(Node n) {
-        ((SimpleNode)n).firstToken = getToken(1);
-    }
-
-    void jjtreeCloseNodeScope(Node n) {
-        ((SimpleNode)n).lastToken = getToken(0);
-    }
-
-  final public void parseLine() throws ParseException {
-    address_list();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 1:
-      jj_consume_token(1);
-      break;
-    default:
-      jj_la1[0] = jj_gen;
-      ;
-    }
-    jj_consume_token(2);
-  }
-
-  final public void parseAll() throws ParseException {
-    address_list();
-    jj_consume_token(0);
-  }
-
-  final public void address_list() throws ParseException {
- /*@bgen(jjtree) address_list */
-  ASTaddress_list jjtn000 = new ASTaddress_list(JJTADDRESS_LIST);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 6:
-      case DOTATOM:
-      case QUOTEDSTRING:
-        address();
-        break;
-      default:
-        jj_la1[1] = jj_gen;
-        ;
-      }
-      label_1:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 3:
-          ;
-          break;
-        default:
-          jj_la1[2] = jj_gen;
-          break label_1;
-        }
-        jj_consume_token(3);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-        case DOTATOM:
-        case QUOTEDSTRING:
-          address();
-          break;
-        default:
-          jj_la1[3] = jj_gen;
-          ;
-        }
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void address() throws ParseException {
- /*@bgen(jjtree) address */
-  ASTaddress jjtn000 = new ASTaddress(JJTADDRESS);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      if (jj_2_1(2147483647)) {
-        addr_spec();
-      } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-          angle_addr();
-          break;
-        case DOTATOM:
-        case QUOTEDSTRING:
-          phrase();
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 4:
-            group_body();
-            break;
-          case 6:
-            angle_addr();
-            break;
-          default:
-            jj_la1[4] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-          break;
-        default:
-          jj_la1[5] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void mailbox() throws ParseException {
- /*@bgen(jjtree) mailbox */
-  ASTmailbox jjtn000 = new ASTmailbox(JJTMAILBOX);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      if (jj_2_2(2147483647)) {
-        addr_spec();
-      } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-          angle_addr();
-          break;
-        case DOTATOM:
-        case QUOTEDSTRING:
-          name_addr();
-          break;
-        default:
-          jj_la1[6] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void name_addr() throws ParseException {
- /*@bgen(jjtree) name_addr */
-  ASTname_addr jjtn000 = new ASTname_addr(JJTNAME_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      phrase();
-      angle_addr();
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void group_body() throws ParseException {
- /*@bgen(jjtree) group_body */
-  ASTgroup_body jjtn000 = new ASTgroup_body(JJTGROUP_BODY);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      jj_consume_token(4);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 6:
-      case DOTATOM:
-      case QUOTEDSTRING:
-        mailbox();
-        break;
-      default:
-        jj_la1[7] = jj_gen;
-        ;
-      }
-      label_2:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 3:
-          ;
-          break;
-        default:
-          jj_la1[8] = jj_gen;
-          break label_2;
-        }
-        jj_consume_token(3);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-        case DOTATOM:
-        case QUOTEDSTRING:
-          mailbox();
-          break;
-        default:
-          jj_la1[9] = jj_gen;
-          ;
-        }
-      }
-      jj_consume_token(5);
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void angle_addr() throws ParseException {
- /*@bgen(jjtree) angle_addr */
-  ASTangle_addr jjtn000 = new ASTangle_addr(JJTANGLE_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      jj_consume_token(6);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 8:
-        route();
-        break;
-      default:
-        jj_la1[10] = jj_gen;
-        ;
-      }
-      addr_spec();
-      jj_consume_token(7);
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void route() throws ParseException {
- /*@bgen(jjtree) route */
-  ASTroute jjtn000 = new ASTroute(JJTROUTE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      jj_consume_token(8);
-      domain();
-      label_3:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 3:
-        case 8:
-          ;
-          break;
-        default:
-          jj_la1[11] = jj_gen;
-          break label_3;
-        }
-        label_4:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 3:
-            ;
-            break;
-          default:
-            jj_la1[12] = jj_gen;
-            break label_4;
-          }
-          jj_consume_token(3);
-        }
-        jj_consume_token(8);
-        domain();
-      }
-      jj_consume_token(4);
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void phrase() throws ParseException {
- /*@bgen(jjtree) phrase */
-  ASTphrase jjtn000 = new ASTphrase(JJTPHRASE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      label_5:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DOTATOM:
-          jj_consume_token(DOTATOM);
-          break;
-        case QUOTEDSTRING:
-          jj_consume_token(QUOTEDSTRING);
-          break;
-        default:
-          jj_la1[13] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DOTATOM:
-        case QUOTEDSTRING:
-          ;
-          break;
-        default:
-          jj_la1[14] = jj_gen;
-          break label_5;
-        }
-      }
-    } finally {
-  if (jjtc000) {
-    jjtree.closeNodeScope(jjtn000, true);
-    jjtreeCloseNodeScope(jjtn000);
-  }
-    }
-  }
-
-  final public void addr_spec() throws ParseException {
- /*@bgen(jjtree) addr_spec */
-  ASTaddr_spec jjtn000 = new ASTaddr_spec(JJTADDR_SPEC);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      local_part();
-      jj_consume_token(8);
-      domain();
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void local_part() throws ParseException {
- /*@bgen(jjtree) local_part */
-  ASTlocal_part jjtn000 = new ASTlocal_part(JJTLOCAL_PART);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case DOTATOM:
-        t = jj_consume_token(DOTATOM);
-        break;
-      case QUOTEDSTRING:
-        t = jj_consume_token(QUOTEDSTRING);
-        break;
-      default:
-        jj_la1[15] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-      label_6:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 9:
-        case DOTATOM:
-        case QUOTEDSTRING:
-          ;
-          break;
-        default:
-          jj_la1[16] = jj_gen;
-          break label_6;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 9:
-          t = jj_consume_token(9);
-          break;
-        default:
-          jj_la1[17] = jj_gen;
-          ;
-        }
-                        if (t.image.charAt(t.image.length() - 1) != '.' || t.kind == AddressListParserConstants.QUOTEDSTRING)
-                                {if (true) throw new ParseException("Words in local part must be separated by '.'");}
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DOTATOM:
-          t = jj_consume_token(DOTATOM);
-          break;
-        case QUOTEDSTRING:
-          t = jj_consume_token(QUOTEDSTRING);
-          break;
-        default:
-          jj_la1[18] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void domain() throws ParseException {
- /*@bgen(jjtree) domain */
-  ASTdomain jjtn000 = new ASTdomain(JJTDOMAIN);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case DOTATOM:
-        t = jj_consume_token(DOTATOM);
-        label_7:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 9:
-          case DOTATOM:
-            ;
-            break;
-          default:
-            jj_la1[19] = jj_gen;
-            break label_7;
-          }
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 9:
-            t = jj_consume_token(9);
-            break;
-          default:
-            jj_la1[20] = jj_gen;
-            ;
-          }
-                                if (t.image.charAt(t.image.length() - 1) != '.')
-                                        {if (true) throw new ParseException("Atoms in domain names must be separated by '.'");}
-          t = jj_consume_token(DOTATOM);
-        }
-        break;
-      case DOMAINLITERAL:
-        jj_consume_token(DOMAINLITERAL);
-        break;
-      default:
-        jj_la1[21] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final private boolean jj_2_1(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_1(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(0, xla); }
-  }
-
-  final private boolean jj_2_2(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_2(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(1, xla); }
-  }
-
-  final private boolean jj_3R_11() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(9)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(14)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(31)) return true;
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_13() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(9)) jj_scanpos = xsp;
-    if (jj_scan_token(DOTATOM)) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_8() {
-    if (jj_3R_9()) return true;
-    if (jj_scan_token(8)) return true;
-    if (jj_3R_10()) return true;
-    return false;
-  }
-
-  final private boolean jj_3_1() {
-    if (jj_3R_8()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_12() {
-    if (jj_scan_token(DOTATOM)) return true;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_13()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_10() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_12()) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(18)) return true;
-    }
-    return false;
-  }
-
-  final private boolean jj_3_2() {
-    if (jj_3R_8()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_9() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(14)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(31)) return true;
-    }
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_11()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  public AddressListParserTokenManager token_source;
-  SimpleCharStream jj_input_stream;
-  public Token token, jj_nt;
-  private int jj_ntk;
-  private Token jj_scanpos, jj_lastpos;
-  private int jj_la;
-  public boolean lookingAhead = false;
-  private boolean jj_semLA;
-  private int jj_gen;
-  final private int[] jj_la1 = new int[22];
-  static private int[] jj_la1_0;
-  static private int[] jj_la1_1;
-  static {
-      jj_la1_0();
-      jj_la1_1();
-   }
-   private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x2,0x80004040,0x8,0x80004040,0x50,0x80004040,0x80004040,0x80004040,0x8,0x80004040,0x100,0x108,0x8,0x80004000,0x80004000,0x80004000,0x80004200,0x200,0x80004000,0x4200,0x200,0x44000,};
-   }
-   private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
-   }
-  final private JJCalls[] jj_2_rtns = new JJCalls[2];
-  private boolean jj_rescan = false;
-  private int jj_gc = 0;
-
-  public AddressListParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  public AddressListParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new AddressListParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public AddressListParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new AddressListParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public AddressListParser(AddressListParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(AddressListParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  final private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      if (++jj_gc > 100) {
-        jj_gc = 0;
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-          JJCalls c = jj_2_rtns[i];
-          while (c != null) {
-            if (c.gen < jj_gen) c.first = null;
-            c = c.next;
-          }
-        }
-      }
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
-  static private final class LookaheadSuccess extends java.lang.Error { }
-  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
-  final private boolean jj_scan_token(int kind) {
-    if (jj_scanpos == jj_lastpos) {
-      jj_la--;
-      if (jj_scanpos.next == null) {
-        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
-      } else {
-        jj_lastpos = jj_scanpos = jj_scanpos.next;
-      }
-    } else {
-      jj_scanpos = jj_scanpos.next;
-    }
-    if (jj_rescan) {
-      int i = 0; Token tok = token;
-      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
-      if (tok != null) jj_add_error_token(kind, i);
-    }
-    if (jj_scanpos.kind != kind) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
-    return false;
-  }
-
-  final public Token getNextToken() {
-    if (token.next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
-  }
-
-  final public Token getToken(int index) {
-    Token t = lookingAhead ? jj_scanpos : token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) t = t.next;
-      else t = t.next = token_source.getNextToken();
-    }
-    return t;
-  }
-
-  final private int jj_ntk() {
-    if ((jj_nt=token.next) == null)
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
-    else
-      return (jj_ntk = jj_nt.kind);
-  }
-
-  private java.util.Vector<int[]> jj_expentries = new java.util.Vector<int[]>();
-  private int[] jj_expentry;
-  private int jj_kind = -1;
-  private int[] jj_lasttokens = new int[100];
-  private int jj_endpos;
-
-  private void jj_add_error_token(int kind, int pos) {
-    if (pos >= 100) return;
-    if (pos == jj_endpos + 1) {
-      jj_lasttokens[jj_endpos++] = kind;
-    } else if (jj_endpos != 0) {
-      jj_expentry = new int[jj_endpos];
-      for (int i = 0; i < jj_endpos; i++) {
-        jj_expentry[i] = jj_lasttokens[i];
-      }
-      boolean exists = false;
-      for (java.util.Enumeration<int[]> e = jj_expentries.elements(); e.hasMoreElements();) {
-        int[] oldentry = e.nextElement();
-        if (oldentry.length == jj_expentry.length) {
-          exists = true;
-          for (int i = 0; i < jj_expentry.length; i++) {
-            if (oldentry[i] != jj_expentry[i]) {
-              exists = false;
-              break;
-            }
-          }
-          if (exists) break;
-        }
-      }
-      if (!exists) jj_expentries.addElement(jj_expentry);
-      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
-    }
-  }
-
-  public ParseException generateParseException() {
-    jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[34];
-    for (int i = 0; i < 34; i++) {
-      la1tokens[i] = false;
-    }
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 22; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-          if ((jj_la1_1[i] & (1<<j)) != 0) {
-            la1tokens[32+j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 34; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.addElement(jj_expentry);
-      }
-    }
-    jj_endpos = 0;
-    jj_rescan_token();
-    jj_add_error_token(0, 0);
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = jj_expentries.elementAt(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
-  }
-
-  final public void enable_tracing() {
-  }
-
-  final public void disable_tracing() {
-  }
-
-  final private void jj_rescan_token() {
-    jj_rescan = true;
-    for (int i = 0; i < 2; i++) {
-    try {
-      JJCalls p = jj_2_rtns[i];
-      do {
-        if (p.gen > jj_gen) {
-          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
-          switch (i) {
-            case 0: jj_3_1(); break;
-            case 1: jj_3_2(); break;
-          }
-        }
-        p = p.next;
-      } while (p != null);
-      } catch(LookaheadSuccess ls) { }
-    }
-    jj_rescan = false;
-  }
-
-  final private void jj_save(int index, int xla) {
-    JJCalls p = jj_2_rtns[index];
-    while (p.gen > jj_gen) {
-      if (p.next == null) { p = p.next = new JJCalls(); break; }
-      p = p.next;
-    }
-    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
-  }
-
-  static final class JJCalls {
-    int gen;
-    Token first;
-    int arg;
-    JJCalls next;
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/AddressListParser.jj b/apache/org/apache/james/mime4j/field/address/parser/AddressListParser.jj
deleted file mode 100644
index c14277b..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/AddressListParser.jj
+++ /dev/null
@@ -1,595 +0,0 @@
-/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParser.jj */
-/*@egen*//****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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.                                           *
- ****************************************************************/
-
-
-/**
- * RFC2822 address list parser.
- *
- * Created 9/17/2004
- * by Joe Cheng <code@joecheng.com>
- */
-
-options {
-	STATIC=false;
-	LOOKAHEAD=1;                                                                                                                               
-	//DEBUG_PARSER=true;
-	//DEBUG_TOKEN_MANAGER=true;
-}
-
-PARSER_BEGIN(AddressListParser)
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-public class AddressListParser/*@bgen(jjtree)*/implements AddressListParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
-  protected JJTAddressListParserState jjtree = new JJTAddressListParserState();
-
-/*@egen*/
-    public static void main(String args[]) throws ParseException {
-		while (true) {
-		    try {
-				AddressListParser parser = new AddressListParser(System.in);
-		    	parser.parseLine();
-		    	((SimpleNode)parser.jjtree.rootNode()).dump("> ");
-		    } catch (Exception x) {
-				x.printStackTrace();
-				return;
-		    }
-		}
-    }
-    
-    private static void log(String msg) {
-    	System.out.print(msg);
-    }
-    
-    public ASTaddress_list parse() throws ParseException {
-        try {
-    	    parseAll();
-    	    return (ASTaddress_list)jjtree.rootNode();
-    	} catch (TokenMgrError tme) {
-    	    throw new ParseException(tme.getMessage());
-    	}
-    }
-    
-    
-    void jjtreeOpenNodeScope(Node n) {
-    	((SimpleNode)n).firstToken = getToken(1);
-    }
-    
-    void jjtreeCloseNodeScope(Node n) {
-    	((SimpleNode)n).lastToken = getToken(0);
-    }
-}
-
-PARSER_END(AddressListParser)
-
-void parseLine()       :
-{}
-{
-	address_list() ["\r"] "\n"
-}
-
-void parseAll()       :
-{}
-{
-	address_list() <EOF>
-}
-
-void address_list() :
-{/*@bgen(jjtree) address_list */
-  ASTaddress_list jjtn000 = new ASTaddress_list(JJTADDRESS_LIST);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) address_list */
-        try {
-/*@egen*/
-	[ address() ]
-	(
-		","
-		[ address() ]
-	)*/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void address() :
-{/*@bgen(jjtree) address */
-  ASTaddress jjtn000 = new ASTaddress(JJTADDRESS);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) address */
-        try {
-/*@egen*/
-	LOOKAHEAD(2147483647)
-	addr_spec()
-|	angle_addr()
-|	( phrase() (group_body() | angle_addr()) )/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void mailbox() :
-{/*@bgen(jjtree) mailbox */
-  ASTmailbox jjtn000 = new ASTmailbox(JJTMAILBOX);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) mailbox */
-        try {
-/*@egen*/
-	LOOKAHEAD(2147483647)
-	addr_spec()
-|	angle_addr()
-|	name_addr()/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void name_addr() :
-{/*@bgen(jjtree) name_addr */
-  ASTname_addr jjtn000 = new ASTname_addr(JJTNAME_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) name_addr */
-        try {
-/*@egen*/
-	phrase() angle_addr()/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void group_body() :
-{/*@bgen(jjtree) group_body */
-  ASTgroup_body jjtn000 = new ASTgroup_body(JJTGROUP_BODY);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) group_body */
-        try {
-/*@egen*/
-	":"
-	[ mailbox() ]
-	(
-		","
-		[ mailbox() ]
-	)*
-	";"/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void angle_addr() :
-{/*@bgen(jjtree) angle_addr */
-  ASTangle_addr jjtn000 = new ASTangle_addr(JJTANGLE_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) angle_addr */
-        try {
-/*@egen*/
-	"<" [ route() ] addr_spec() ">"/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void route() :
-{/*@bgen(jjtree) route */
-  ASTroute jjtn000 = new ASTroute(JJTROUTE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) route */
-        try {
-/*@egen*/
-	"@" domain() ( (",")* "@" domain() )* ":"/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void phrase() :
-{/*@bgen(jjtree) phrase */
-  ASTphrase jjtn000 = new ASTphrase(JJTPHRASE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) phrase */
-try {
-/*@egen*/
-(	<DOTATOM>
-|	<QUOTEDSTRING>
-)+/*@bgen(jjtree)*/
-} finally {
-  if (jjtc000) {
-    jjtree.closeNodeScope(jjtn000, true);
-    jjtreeCloseNodeScope(jjtn000);
-  }
-}
-/*@egen*/
-}
-
-void addr_spec() :
-{/*@bgen(jjtree) addr_spec */
-  ASTaddr_spec jjtn000 = new ASTaddr_spec(JJTADDR_SPEC);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) addr_spec */
-        try {
-/*@egen*/
-	( local_part() "@" domain() )/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void local_part() :
-{/*@bgen(jjtree) local_part */
-  ASTlocal_part jjtn000 = new ASTlocal_part(JJTLOCAL_PART);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/ Token t; }
-{/*@bgen(jjtree) local_part */
-        try {
-/*@egen*/
-	( t=<DOTATOM> | t=<QUOTEDSTRING> )
-	(	[t="."]
-		{
-			if (t.image.charAt(t.image.length() - 1) != '.' || t.kind == AddressListParserConstants.QUOTEDSTRING)
-				throw new ParseException("Words in local part must be separated by '.'");
-		}
-		(	t=<DOTATOM> | t=<QUOTEDSTRING> )
-	)*/*@bgen(jjtree)*/
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void domain() :
-{/*@bgen(jjtree) domain */
-  ASTdomain jjtn000 = new ASTdomain(JJTDOMAIN);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/ Token t; }
-{/*@bgen(jjtree) domain */
-        try {
-/*@egen*/
-	(	t=<DOTATOM>
-		(	[t="."]
-			{
-				if (t.image.charAt(t.image.length() - 1) != '.')
-					throw new ParseException("Atoms in domain names must be separated by '.'");
-			}
-			t=<DOTATOM>
-		)*
-	)
-|	<DOMAINLITERAL>/*@bgen(jjtree)*/
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-SPECIAL_TOKEN :
-{
- 	< WS: ( [" ", "\t"] )+ >
-}
-
-TOKEN :
-{
-	< #ALPHA: ["a" - "z", "A" - "Z"] >
-|	< #DIGIT: ["0" - "9"] >
-|	< #ATEXT: ( <ALPHA> | <DIGIT>
-			  | "!" | "#" | "$" | "%"
-			  | "&" | "'" | "*" | "+"
-			  | "-" | "/" | "=" | "?"
-			  | "^" | "_" | "`" | "{"
-			  | "|" | "}" | "~"
-			  )>
-|	< DOTATOM: <ATEXT> ( <ATEXT> | "." )* >
-}
-
-TOKEN_MGR_DECLS :
-{
-	// Keeps track of how many levels of comment nesting
-	// we've encountered.  This is only used when the 2nd
-	// level is reached, for example ((this)), not (this).
-	// This is because the outermost level must be treated
-	// specially anyway, because the outermost ")" has a 
-	// different token type than inner ")" instances.
-	static int commentNest;
-}
-
-MORE :
-{
-	// domain literal
-	"[" : INDOMAINLITERAL
-}
-
-<INDOMAINLITERAL>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	< ~["[", "]", "\\"] >
-}
-
-<INDOMAINLITERAL>
-TOKEN :
-{
-	< DOMAINLITERAL: "]" > { matchedToken.image = image.toString(); }: DEFAULT
-}
-
-MORE :
-{
-	// starts a comment
-	"(" : INCOMMENT
-}
-
-<INCOMMENT>
-SKIP :
-{
-	// ends a comment
-	< COMMENT: ")" > : DEFAULT
-	// if this is ever changed to not be a SKIP, need
-	// to make sure matchedToken.token = token.toString()
-	// is called.
-}
-
-<INCOMMENT>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	"(" { commentNest = 1; } : NESTED_COMMENT
-|	< <ANY>>
-}
-
-<NESTED_COMMENT>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	"(" { ++commentNest; }
-|	")" { --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT); }
-|	< <ANY>>
-}
-
-
-// QUOTED STRINGS
-
-MORE :
-{
-	"\"" { image.deleteCharAt(image.length() - 1); } : INQUOTEDSTRING
-}
-
-<INQUOTEDSTRING>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	< (~["\"", "\\"])+ >
-}
-
-<INQUOTEDSTRING>
-TOKEN :
-{
-	< QUOTEDSTRING: "\"" > { matchedToken.image = image.substring(0, image.length() - 1); } : DEFAULT
-}
-
-// GLOBALS
-
-<*>
-TOKEN :
-{
-	< #QUOTEDPAIR: "\\" <ANY> >
-|	< #ANY: ~[] >
-}
-
-// ERROR!
-/*
-
-<*>
-TOKEN :
-{
-	< UNEXPECTED_CHAR: <ANY> >
-}
-
-*/
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java b/apache/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java
deleted file mode 100644
index 006a082..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParserConstants.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-public interface AddressListParserConstants {
-
-  int EOF = 0;
-  int WS = 10;
-  int ALPHA = 11;
-  int DIGIT = 12;
-  int ATEXT = 13;
-  int DOTATOM = 14;
-  int DOMAINLITERAL = 18;
-  int COMMENT = 20;
-  int QUOTEDSTRING = 31;
-  int QUOTEDPAIR = 32;
-  int ANY = 33;
-
-  int DEFAULT = 0;
-  int INDOMAINLITERAL = 1;
-  int INCOMMENT = 2;
-  int NESTED_COMMENT = 3;
-  int INQUOTEDSTRING = 4;
-
-  String[] tokenImage = {
-    "<EOF>",
-    "\"\\r\"",
-    "\"\\n\"",
-    "\",\"",
-    "\":\"",
-    "\";\"",
-    "\"<\"",
-    "\">\"",
-    "\"@\"",
-    "\".\"",
-    "<WS>",
-    "<ALPHA>",
-    "<DIGIT>",
-    "<ATEXT>",
-    "<DOTATOM>",
-    "\"[\"",
-    "<token of kind 16>",
-    "<token of kind 17>",
-    "\"]\"",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 21>",
-    "\"(\"",
-    "<token of kind 23>",
-    "<token of kind 24>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 27>",
-    "\"\\\"\"",
-    "<token of kind 29>",
-    "<token of kind 30>",
-    "\"\\\"\"",
-    "<QUOTEDPAIR>",
-    "<ANY>",
-  };
-
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java b/apache/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java
deleted file mode 100644
index d2dd88d..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java
+++ /dev/null
@@ -1,1009 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParserTokenManager.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-public class AddressListParserTokenManager implements AddressListParserConstants
-{
-        // Keeps track of how many levels of comment nesting
-        // we've encountered.  This is only used when the 2nd
-        // level is reached, for example ((this)), not (this).
-        // This is because the outermost level must be treated
-        // specially anyway, because the outermost ")" has a 
-        // different token type than inner ")" instances.
-        static int commentNest;
-  public  java.io.PrintStream debugStream = System.out;
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
-private final int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 10:
-         return jjStopAtPos(0, 2);
-      case 13:
-         return jjStopAtPos(0, 1);
-      case 34:
-         return jjStopAtPos(0, 28);
-      case 40:
-         return jjStopAtPos(0, 19);
-      case 44:
-         return jjStopAtPos(0, 3);
-      case 46:
-         return jjStopAtPos(0, 9);
-      case 58:
-         return jjStopAtPos(0, 4);
-      case 59:
-         return jjStopAtPos(0, 5);
-      case 60:
-         return jjStopAtPos(0, 6);
-      case 62:
-         return jjStopAtPos(0, 7);
-      case 64:
-         return jjStopAtPos(0, 8);
-      case 91:
-         return jjStopAtPos(0, 15);
-      default :
-         return jjMoveNfa_0(1, 0);
-   }
-}
-private final void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private final void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-private final void jjCheckNAddStates(int start)
-{
-   jjCheckNAdd(jjnextStates[start]);
-   jjCheckNAdd(jjnextStates[start + 1]);
-}
-private final int jjMoveNfa_0(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 1:
-                  if ((0xa3ffacfa00000000L & l) != 0L)
-                  {
-                     if (kind > 14)
-                        kind = 14;
-                     jjCheckNAdd(2);
-                  }
-                  else if ((0x100000200L & l) != 0L)
-                  {
-                     if (kind > 10)
-                        kind = 10;
-                     jjCheckNAdd(0);
-                  }
-                  break;
-               case 0:
-                  if ((0x100000200L & l) == 0L)
-                     break;
-                  kind = 10;
-                  jjCheckNAdd(0);
-                  break;
-               case 2:
-                  if ((0xa3ffecfa00000000L & l) == 0L)
-                     break;
-                  if (kind > 14)
-                     kind = 14;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 1:
-               case 2:
-                  if ((0x7fffffffc7fffffeL & l) == 0L)
-                     break;
-                  if (kind > 14)
-                     kind = 14;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_2(int pos, long active0)
-{
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_2(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_2(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_2()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 22);
-      case 41:
-         return jjStopAtPos(0, 20);
-      default :
-         return jjMoveNfa_2(0, 0);
-   }
-}
-static final long[] jjbitVec0 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private final int jjMoveNfa_2(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 23)
-                     kind = 23;
-                  break;
-               case 1:
-                  if (kind > 21)
-                     kind = 21;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 23)
-                     kind = 23;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 21)
-                     kind = 21;
-                  break;
-               case 2:
-                  if (kind > 23)
-                     kind = 23;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 23)
-                     kind = 23;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 21)
-                     kind = 21;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_4(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_4(int pos, long active0)
-{
-   return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_4(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_4(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_4()
-{
-   switch(curChar)
-   {
-      case 34:
-         return jjStopAtPos(0, 31);
-      default :
-         return jjMoveNfa_4(0, 0);
-   }
-}
-private final int jjMoveNfa_4(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((0xfffffffbffffffffL & l) == 0L)
-                     break;
-                  if (kind > 30)
-                     kind = 30;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if (kind > 29)
-                     kind = 29;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                  {
-                     if (kind > 30)
-                        kind = 30;
-                     jjCheckNAdd(2);
-                  }
-                  else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 29)
-                     kind = 29;
-                  break;
-               case 2:
-                  if ((0xffffffffefffffffL & l) == 0L)
-                     break;
-                  if (kind > 30)
-                     kind = 30;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((jjbitVec0[i2] & l2) == 0L)
-                     break;
-                  if (kind > 30)
-                     kind = 30;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 29)
-                     kind = 29;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_3(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_3(int pos, long active0)
-{
-   return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_3(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_3(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_3()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 25);
-      case 41:
-         return jjStopAtPos(0, 26);
-      default :
-         return jjMoveNfa_3(0, 0);
-   }
-}
-private final int jjMoveNfa_3(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 27)
-                     kind = 27;
-                  break;
-               case 1:
-                  if (kind > 24)
-                     kind = 24;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 27)
-                     kind = 27;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 24)
-                     kind = 24;
-                  break;
-               case 2:
-                  if (kind > 27)
-                     kind = 27;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 27)
-                     kind = 27;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 24)
-                     kind = 24;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_1(int pos, long active0)
-{
-   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_1(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_1()
-{
-   switch(curChar)
-   {
-      case 93:
-         return jjStopAtPos(0, 18);
-      default :
-         return jjMoveNfa_1(0, 0);
-   }
-}
-private final int jjMoveNfa_1(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 17)
-                     kind = 17;
-                  break;
-               case 1:
-                  if (kind > 16)
-                     kind = 16;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0xffffffffc7ffffffL & l) != 0L)
-                  {
-                     if (kind > 17)
-                        kind = 17;
-                  }
-                  else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 16)
-                     kind = 16;
-                  break;
-               case 2:
-                  if ((0xffffffffc7ffffffL & l) != 0L && kind > 17)
-                     kind = 17;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 17)
-                     kind = 17;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
-                     kind = 16;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-};
-public static final String[] jjstrLiteralImages = {
-"", "\15", "\12", "\54", "\72", "\73", "\74", "\76", "\100", "\56", null, null, 
-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
-null, null, null, null, null, null, null, null, };
-public static final String[] lexStateNames = {
-   "DEFAULT", 
-   "INDOMAINLITERAL", 
-   "INCOMMENT", 
-   "NESTED_COMMENT", 
-   "INQUOTEDSTRING", 
-};
-public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, 2, 0, -1, 3, -1, -1, 
-   -1, -1, -1, 4, -1, -1, 0, -1, -1, 
-};
-static final long[] jjtoToken = {
-   0x800443ffL, 
-};
-static final long[] jjtoSkip = {
-   0x100400L, 
-};
-static final long[] jjtoSpecial = {
-   0x400L, 
-};
-static final long[] jjtoMore = {
-   0x7feb8000L, 
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[3];
-private final int[] jjstateSet = new int[6];
-StringBuffer image;
-int jjimageLen;
-int lengthOfMatch;
-protected char curChar;
-public AddressListParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-public AddressListParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   SwitchTo(lexState);
-}
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private final void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 3; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 5 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   Token t = Token.newToken(jjmatchedKind);
-   t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   t.image = (im == null) ? input_stream.GetImage() : im;
-   t.beginLine = input_stream.getBeginLine();
-   t.beginColumn = input_stream.getBeginColumn();
-   t.endLine = input_stream.getEndLine();
-   t.endColumn = input_stream.getEndColumn();
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-public Token getNextToken() 
-{
-  int kind;
-  Token specialToken = null;
-  Token matchedToken;
-  int curPos = 0;
-
-  EOFLoop :
-  for (;;)
-  {   
-   try   
-   {     
-      curChar = input_stream.BeginToken();
-   }     
-   catch(java.io.IOException e)
-   {        
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      matchedToken.specialToken = specialToken;
-      return matchedToken;
-   }
-   image = null;
-   jjimageLen = 0;
-
-   for (;;)
-   {
-     switch(curLexState)
-     {
-       case 0:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_0();
-         break;
-       case 1:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_1();
-         break;
-       case 2:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_2();
-         break;
-       case 3:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_3();
-         break;
-       case 4:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_4();
-         break;
-     }
-     if (jjmatchedKind != 0x7fffffff)
-     {
-        if (jjmatchedPos + 1 < curPos)
-           input_stream.backup(curPos - jjmatchedPos - 1);
-        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           matchedToken = jjFillToken();
-           matchedToken.specialToken = specialToken;
-           TokenLexicalActions(matchedToken);
-       if (jjnewLexState[jjmatchedKind] != -1)
-         curLexState = jjnewLexState[jjmatchedKind];
-           return matchedToken;
-        }
-        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-           {
-              matchedToken = jjFillToken();
-              if (specialToken == null)
-                 specialToken = matchedToken;
-              else
-              {
-                 matchedToken.specialToken = specialToken;
-                 specialToken = (specialToken.next = matchedToken);
-              }
-           }
-         if (jjnewLexState[jjmatchedKind] != -1)
-           curLexState = jjnewLexState[jjmatchedKind];
-           continue EOFLoop;
-        }
-        MoreLexicalActions();
-      if (jjnewLexState[jjmatchedKind] != -1)
-        curLexState = jjnewLexState[jjmatchedKind];
-        curPos = 0;
-        jjmatchedKind = 0x7fffffff;
-        try {
-           curChar = input_stream.readChar();
-           continue;
-        }
-        catch (java.io.IOException e1) { }
-     }
-     int error_line = input_stream.getEndLine();
-     int error_column = input_stream.getEndColumn();
-     String error_after = null;
-     boolean EOFSeen = false;
-     try { input_stream.readChar(); input_stream.backup(1); }
-     catch (java.io.IOException e1) {
-        EOFSeen = true;
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-        if (curChar == '\n' || curChar == '\r') {
-           error_line++;
-           error_column = 0;
-        }
-        else
-           error_column++;
-     }
-     if (!EOFSeen) {
-        input_stream.backup(1);
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-     }
-     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-   }
-  }
-}
-
-void MoreLexicalActions()
-{
-   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
-   switch(jjmatchedKind)
-   {
-      case 16 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 21 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 22 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              commentNest = 1;
-         break;
-      case 24 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 25 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              ++commentNest;
-         break;
-      case 26 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
-         break;
-      case 28 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-               image.deleteCharAt(image.length() - 1);
-         break;
-      case 29 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      default : 
-         break;
-   }
-}
-void TokenLexicalActions(Token matchedToken)
-{
-   switch(jjmatchedKind)
-   {
-      case 18 :
-        if (image == null)
-            image = new StringBuffer();
-            image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
-                                 matchedToken.image = image.toString();
-         break;
-      case 31 :
-        if (image == null)
-            image = new StringBuffer();
-            image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
-                                 matchedToken.image = image.substring(0, image.length() - 1);
-         break;
-      default : 
-         break;
-   }
-}
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java b/apache/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java
deleted file mode 100644
index 5987f19..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public interface AddressListParserTreeConstants
-{
-  public int JJTVOID = 0;
-  public int JJTADDRESS_LIST = 1;
-  public int JJTADDRESS = 2;
-  public int JJTMAILBOX = 3;
-  public int JJTNAME_ADDR = 4;
-  public int JJTGROUP_BODY = 5;
-  public int JJTANGLE_ADDR = 6;
-  public int JJTROUTE = 7;
-  public int JJTPHRASE = 8;
-  public int JJTADDR_SPEC = 9;
-  public int JJTLOCAL_PART = 10;
-  public int JJTDOMAIN = 11;
-
-
-  public String[] jjtNodeName = {
-    "void",
-    "address_list",
-    "address",
-    "mailbox",
-    "name_addr",
-    "group_body",
-    "angle_addr",
-    "route",
-    "phrase",
-    "addr_spec",
-    "local_part",
-    "domain",
-  };
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java b/apache/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java
deleted file mode 100644
index 8ec2fe7..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public interface AddressListParserVisitor
-{
-  public Object visit(SimpleNode node, Object data);
-  public Object visit(ASTaddress_list node, Object data);
-  public Object visit(ASTaddress node, Object data);
-  public Object visit(ASTmailbox node, Object data);
-  public Object visit(ASTname_addr node, Object data);
-  public Object visit(ASTgroup_body node, Object data);
-  public Object visit(ASTangle_addr node, Object data);
-  public Object visit(ASTroute node, Object data);
-  public Object visit(ASTphrase node, Object data);
-  public Object visit(ASTaddr_spec node, Object data);
-  public Object visit(ASTlocal_part node, Object data);
-  public Object visit(ASTdomain node, Object data);
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/BaseNode.java b/apache/org/apache/james/mime4j/field/address/parser/BaseNode.java
deleted file mode 100644
index 7809746..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/BaseNode.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.address.parser;
-
-import org.apache.james.mime4j.field.address.parser.Node;
-import org.apache.james.mime4j.field.address.parser.Token;
-
-public abstract class BaseNode implements Node {
-  
-  public Token firstToken;
-  public Token lastToken;
-
-}
\ No newline at end of file
diff --git a/apache/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java b/apache/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java
deleted file mode 100644
index 08b5c5b..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-class JJTAddressListParserState {
-  private java.util.Stack<Node> nodes;
-  private java.util.Stack<Integer> marks;
-
-  private int sp;		// number of nodes on stack
-  private int mk;		// current mark
-  private boolean node_created;
-
-  JJTAddressListParserState() {
-    nodes = new java.util.Stack<Node>();
-    marks = new java.util.Stack<Integer>();
-    sp = 0;
-    mk = 0;
-  }
-
-  /* Determines whether the current node was actually closed and
-     pushed.  This should only be called in the final user action of a
-     node scope.  */
-  boolean nodeCreated() {
-    return node_created;
-  }
-
-  /* Call this to reinitialize the node stack.  It is called
-     automatically by the parser's ReInit() method. */
-  void reset() {
-    nodes.removeAllElements();
-    marks.removeAllElements();
-    sp = 0;
-    mk = 0;
-  }
-
-  /* Returns the root node of the AST.  It only makes sense to call
-     this after a successful parse. */
-  Node rootNode() {
-    return nodes.elementAt(0);
-  }
-
-  /* Pushes a node on to the stack. */
-  void pushNode(Node n) {
-    nodes.push(n);
-    ++sp;
-  }
-
-  /* Returns the node on the top of the stack, and remove it from the
-     stack.  */
-  Node popNode() {
-    if (--sp < mk) {
-      mk = marks.pop().intValue();
-    }
-    return nodes.pop();
-  }
-
-  /* Returns the node currently on the top of the stack. */
-  Node peekNode() {
-    return nodes.peek();
-  }
-
-  /* Returns the number of children on the stack in the current node
-     scope. */
-  int nodeArity() {
-    return sp - mk;
-  }
-
-
-  void clearNodeScope(Node n) {
-    while (sp > mk) {
-      popNode();
-    }
-    mk = marks.pop().intValue();
-  }
-
-
-  void openNodeScope(Node n) {
-    marks.push(new Integer(mk));
-    mk = sp;
-    n.jjtOpen();
-  }
-
-
-  /* A definite node is constructed from a specified number of
-     children.  That number of nodes are popped from the stack and
-     made the children of the definite node.  Then the definite node
-     is pushed on to the stack. */
-  void closeNodeScope(Node n, int num) {
-    mk = marks.pop().intValue();
-    while (num-- > 0) {
-      Node c = popNode();
-      c.jjtSetParent(n);
-      n.jjtAddChild(c, num);
-    }
-    n.jjtClose();
-    pushNode(n);
-    node_created = true;
-  }
-
-
-  /* A conditional node is constructed if its condition is true.  All
-     the nodes that have been pushed since the node was opened are
-     made children of the the conditional node, which is then pushed
-     on to the stack.  If the condition is false the node is not
-     constructed and they are left on the stack. */
-  void closeNodeScope(Node n, boolean condition) {
-    if (condition) {
-      int a = nodeArity();
-      mk = marks.pop().intValue();
-      while (a-- > 0) {
-	Node c = popNode();
-	c.jjtSetParent(n);
-	n.jjtAddChild(c, a);
-      }
-      n.jjtClose();
-      pushNode(n);
-      node_created = true;
-    } else {
-      mk = marks.pop().intValue();
-      node_created = false;
-    }
-  }
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/Node.java b/apache/org/apache/james/mime4j/field/address/parser/Node.java
deleted file mode 100644
index 1588920..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/Node.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. Node.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-/* All AST nodes must implement this interface.  It provides basic
-   machinery for constructing the parent and child relationships
-   between nodes. */
-
-public interface Node {
-
-  /** This method is called after the node has been made the current
-    node.  It indicates that child nodes can now be added to it. */
-  public void jjtOpen();
-
-  /** This method is called after all the child nodes have been
-    added. */
-  public void jjtClose();
-
-  /** This pair of methods are used to inform the node of its
-    parent. */
-  public void jjtSetParent(Node n);
-  public Node jjtGetParent();
-
-  /** This method tells the node to add its argument to the node's
-    list of children.  */
-  public void jjtAddChild(Node n, int i);
-
-  /** This method returns a child node.  The children are numbered
-     from zero, left to right. */
-  public Node jjtGetChild(int i);
-
-  /** Return the number of children the node has. */
-  public int jjtGetNumChildren();
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data);
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/ParseException.java b/apache/org/apache/james/mime4j/field/address/parser/ParseException.java
deleted file mode 100644
index e20146f..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/ParseException.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.  The boolean
-   * flag "specialConstructor" is also set to true to indicate that
-   * this constructor was used to create this object.
-   * This constructor calls its super class with the empty string
-   * to force the "toString" method of parent class "Throwable" to
-   * print the error message in the form:
-   *     ParseException: <result of getMessage>
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super("");
-    specialConstructor = true;
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-    specialConstructor = false;
-  }
-
-  public ParseException(String message) {
-    super(message);
-    specialConstructor = false;
-  }
-
-  /**
-   * This variable determines which constructor was used to create
-   * this object and thereby affects the semantics of the
-   * "getMessage" method (see below).
-   */
-  protected boolean specialConstructor;
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * This method has the standard behavior when this object has been
-   * created using the standard constructors.  Otherwise, it uses
-   * "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser), then this method is called during the printing
-   * of the final stack trace, and hence the correct error message
-   * gets displayed.
-   */
-  public String getMessage() {
-    if (!specialConstructor) {
-      return super.getMessage();
-    }
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += add_escapes(tok.image);
-      tok = tok.next; 
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
- 
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java b/apache/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java
deleted file mode 100644
index c9ba0b4..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public class SimpleCharStream
-{
-  public static final boolean staticFlag = false;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  public int bufpos = -1;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
-
-     try
-     {
-        if (wrapAround)
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           System.arraycopy(buffer, 0, newbuffer,
-                                             bufsize - tokenBegin, bufpos);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-        }
-        else
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos -= tokenBegin);
-        }
-     }
-     catch (Throwable t)
-     {
-        throw new Error(t.getMessage());
-     }
-
-
-     bufsize += 2048;
-     available = bufsize;
-     tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-     if (maxNextCharInd == available)
-     {
-        if (available == bufsize)
-        {
-           if (tokenBegin > 2048)
-           {
-              bufpos = maxNextCharInd = 0;
-              available = tokenBegin;
-           }
-           else if (tokenBegin < 0)
-              bufpos = maxNextCharInd = 0;
-           else
-              ExpandBuff(false);
-        }
-        else if (available > tokenBegin)
-           available = bufsize;
-        else if ((tokenBegin - available) < 2048)
-           ExpandBuff(true);
-        else
-           available = tokenBegin;
-     }
-
-     int i;
-     try {
-        if ((i = inputStream.read(buffer, maxNextCharInd,
-                                    available - maxNextCharInd)) == -1)
-        {
-           inputStream.close();
-           throw new java.io.IOException();
-        }
-        else
-           maxNextCharInd += i;
-        return;
-     }
-     catch(java.io.IOException e) {
-        --bufpos;
-        backup(0);
-        if (tokenBegin == -1)
-           tokenBegin = bufpos;
-        throw e;
-     }
-  }
-
-  public char BeginToken() throws java.io.IOException
-  {
-     tokenBegin = -1;
-     char c = readChar();
-     tokenBegin = bufpos;
-
-     return c;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-     column++;
-
-     if (prevCharIsLF)
-     {
-        prevCharIsLF = false;
-        line += (column = 1);
-     }
-     else if (prevCharIsCR)
-     {
-        prevCharIsCR = false;
-        if (c == '\n')
-        {
-           prevCharIsLF = true;
-        }
-        else
-           line += (column = 1);
-     }
-
-     switch (c)
-     {
-        case '\r' :
-           prevCharIsCR = true;
-           break;
-        case '\n' :
-           prevCharIsLF = true;
-           break;
-        case '\t' :
-           column--;
-           column += (tabSize - (column % tabSize));
-           break;
-        default :
-           break;
-     }
-
-     bufline[bufpos] = line;
-     bufcolumn[bufpos] = column;
-  }
-
-  public char readChar() throws java.io.IOException
-  {
-     if (inBuf > 0)
-     {
-        --inBuf;
-
-        if (++bufpos == bufsize)
-           bufpos = 0;
-
-        return buffer[bufpos];
-     }
-
-     if (++bufpos >= maxNextCharInd)
-        FillBuff();
-
-     char c = buffer[bufpos];
-
-     UpdateLineColumn(c);
-     return (c);
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndColumn
-   */
-  @Deprecated
-  public int getColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndLine
-   */
-  @Deprecated
-  public int getLine() {
-     return bufline[bufpos];
-  }
-
-  public int getEndColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  public int getEndLine() {
-     return bufline[bufpos];
-  }
-
-  public int getBeginColumn() {
-     return bufcolumn[tokenBegin];
-  }
-
-  public int getBeginLine() {
-     return bufline[tokenBegin];
-  }
-
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-       bufpos += bufsize;
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.Reader dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    bufpos = -1;
-  }
-
-  public void ReInit(java.io.Reader dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, 1, 1, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public String GetImage()
-  {
-     if (bufpos >= tokenBegin)
-        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-     else
-        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
-  public void Done()
-  {
-     buffer = null;
-     bufline = null;
-     bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/SimpleNode.java b/apache/org/apache/james/mime4j/field/address/parser/SimpleNode.java
deleted file mode 100644
index 9bf537e..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/SimpleNode.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. SimpleNode.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class SimpleNode extends org.apache.james.mime4j.field.address.parser.BaseNode implements Node {
-  protected Node parent;
-  protected Node[] children;
-  protected int id;
-  protected AddressListParser parser;
-
-  public SimpleNode(int i) {
-    id = i;
-  }
-
-  public SimpleNode(AddressListParser p, int i) {
-    this(i);
-    parser = p;
-  }
-
-  public void jjtOpen() {
-  }
-
-  public void jjtClose() {
-  }
-  
-  public void jjtSetParent(Node n) { parent = n; }
-  public Node jjtGetParent() { return parent; }
-
-  public void jjtAddChild(Node n, int i) {
-    if (children == null) {
-      children = new Node[i + 1];
-    } else if (i >= children.length) {
-      Node c[] = new Node[i + 1];
-      System.arraycopy(children, 0, c, 0, children.length);
-      children = c;
-    }
-    children[i] = n;
-  }
-
-  public Node jjtGetChild(int i) {
-    return children[i];
-  }
-
-  public int jjtGetNumChildren() {
-    return (children == null) ? 0 : children.length;
-  }
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-
-  /** Accept the visitor. **/
-  public Object childrenAccept(AddressListParserVisitor visitor, Object data) {
-    if (children != null) {
-      for (int i = 0; i < children.length; ++i) {
-        children[i].jjtAccept(visitor, data);
-      }
-    }
-    return data;
-  }
-
-  /* You can override these two methods in subclasses of SimpleNode to
-     customize the way the node appears when the tree is dumped.  If
-     your output uses more than one line you should override
-     toString(String), otherwise overriding toString() is probably all
-     you need to do. */
-
-  public String toString() { return AddressListParserTreeConstants.jjtNodeName[id]; }
-  public String toString(String prefix) { return prefix + toString(); }
-
-  /* Override this method if you want to customize how the node dumps
-     out its children. */
-
-  public void dump(String prefix) {
-    System.out.println(toString(prefix));
-    if (children != null) {
-      for (int i = 0; i < children.length; ++i) {
-	SimpleNode n = (SimpleNode)children[i];
-	if (n != null) {
-	  n.dump(prefix + " ");
-	}
-      }
-    }
-  }
-}
-
diff --git a/apache/org/apache/james/mime4j/field/address/parser/Token.java b/apache/org/apache/james/mime4j/field/address/parser/Token.java
deleted file mode 100644
index 2382e8e..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/Token.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token {
-
-  /**
-   * An integer that describes the kind of this token.  This numbering
-   * system is determined by JavaCCParser, and a table of these numbers is
-   * stored in the file ...Constants.java.
-   */
-  public int kind;
-
-  /**
-   * beginLine and beginColumn describe the position of the first character
-   * of this token; endLine and endColumn describe the position of the
-   * last character of this token.
-   */
-  public int beginLine, beginColumn, endLine, endColumn;
-
-  /**
-   * The string image of the token.
-   */
-  public String image;
-
-  /**
-   * A reference to the next regular (non-special) token from the input
-   * stream.  If this is the last token from the input stream, or if the
-   * token manager has not read tokens beyond this one, this field is
-   * set to null.  This is true only if this token is also a regular
-   * token.  Otherwise, see below for a description of the contents of
-   * this field.
-   */
-  public Token next;
-
-  /**
-   * This field is used to access special tokens that occur prior to this
-   * token, but after the immediately preceding regular (non-special) token.
-   * If there are no such special tokens, this field is set to null.
-   * When there are more than one such special token, this field refers
-   * to the last of these special tokens, which in turn refers to the next
-   * previous special token through its specialToken field, and so on
-   * until the first special token (whose specialToken field is null).
-   * The next fields of special tokens refer to other special tokens that
-   * immediately follow it (without an intervening regular token).  If there
-   * is no such token, this field is null.
-   */
-  public Token specialToken;
-
-  /**
-   * Returns the image.
-   */
-  public String toString()
-  {
-     return image;
-  }
-
-  /**
-   * Returns a new Token object, by default. However, if you want, you
-   * can create and return subclass objects based on the value of ofKind.
-   * Simply add the cases to the switch for all those special cases.
-   * For example, if you have a subclass of Token called IDToken that
-   * you want to create if ofKind is ID, simlpy add something like :
-   *
-   *    case MyParserConstants.ID : return new IDToken();
-   *
-   * to the following switch statement. Then you can cast matchedToken
-   * variable to the appropriate type and use it in your lexical actions.
-   */
-  public static final Token newToken(int ofKind)
-  {
-     switch(ofKind)
-     {
-       default : return new Token();
-     }
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/address/parser/TokenMgrError.java b/apache/org/apache/james/mime4j/field/address/parser/TokenMgrError.java
deleted file mode 100644
index 0299c85..0000000
--- a/apache/org/apache/james/mime4j/field/address/parser/TokenMgrError.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
-
-public class TokenMgrError extends Error
-{
-   /*
-    * Ordinals for various reasons why an Error of this type can be thrown.
-    */
-
-   /**
-    * Lexical error occured.
-    */
-   static final int LEXICAL_ERROR = 0;
-
-   /**
-    * An attempt wass made to create a second instance of a static token manager.
-    */
-   static final int STATIC_LEXER_ERROR = 1;
-
-   /**
-    * Tried to change to an invalid lexical state.
-    */
-   static final int INVALID_LEXICAL_STATE = 2;
-
-   /**
-    * Detected (and bailed out of) an infinite loop in the token manager.
-    */
-   static final int LOOP_DETECTED = 3;
-
-   /**
-    * Indicates the reason why the exception is thrown. It will have
-    * one of the above 4 values.
-    */
-   int errorCode;
-
-   /**
-    * Replaces unprintable characters by their espaced (or unicode escaped)
-    * equivalents in the given string
-    */
-   protected static final String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-   /**
-    * Returns a detailed message for the Error when it is thrown by the
-    * token manager to indicate a lexical error.
-    * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
-    * Note: You can customize the lexical error message by modifying this method.
-    */
-   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-      return("Lexical error at line " +
-           errorLine + ", column " +
-           errorColumn + ".  Encountered: " +
-           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-           "after : \"" + addEscapes(errorAfter) + "\"");
-   }
-
-   /**
-    * You can also modify the body of this method to customize your error messages.
-    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-    * of end-users concern, so you can return something like : 
-    *
-    *     "Internal Error : Please file a bug report .... "
-    *
-    * from this method for such cases in the release version of your parser.
-    */
-   public String getMessage() {
-      return super.getMessage();
-   }
-
-   /*
-    * Constructors of various flavors follow.
-    */
-
-   public TokenMgrError() {
-   }
-
-   public TokenMgrError(String message, int reason) {
-      super(message);
-      errorCode = reason;
-   }
-
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-   }
-}
diff --git a/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java b/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java
deleted file mode 100644
index cacf3af..0000000
--- a/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ContentTypeParser.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-public class ContentTypeParser implements ContentTypeParserConstants {
-
-        private String type;
-        private String subtype;
-        private ArrayList<String> paramNames = new ArrayList<String>();
-        private ArrayList<String> paramValues = new ArrayList<String>();
-
-        public String getType() { return type; }
-        public String getSubType() { return subtype; }
-        public ArrayList<String> getParamNames() { return paramNames; }
-        public ArrayList<String> getParamValues() { return paramValues; }
-
-    public static void main(String args[]) throws ParseException {
-        while (true) {
-            try {
-                ContentTypeParser parser = new ContentTypeParser(System.in);
-                parser.parseLine();
-            } catch (Exception x) {
-                x.printStackTrace();
-                return;
-            }
-        }
-    }
-
-  final public void parseLine() throws ParseException {
-    parse();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 1:
-      jj_consume_token(1);
-      break;
-    default:
-      jj_la1[0] = jj_gen;
-      ;
-    }
-    jj_consume_token(2);
-  }
-
-  final public void parseAll() throws ParseException {
-    parse();
-    jj_consume_token(0);
-  }
-
-  final public void parse() throws ParseException {
-        Token type;
-        Token subtype;
-    type = jj_consume_token(ATOKEN);
-    jj_consume_token(3);
-    subtype = jj_consume_token(ATOKEN);
-                this.type = type.image;
-                this.subtype = subtype.image;
-    label_1:
-    while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 4:
-        ;
-        break;
-      default:
-        jj_la1[1] = jj_gen;
-        break label_1;
-      }
-      jj_consume_token(4);
-      parameter();
-    }
-  }
-
-  final public void parameter() throws ParseException {
-        Token attrib;
-        String val;
-    attrib = jj_consume_token(ATOKEN);
-    jj_consume_token(5);
-    val = value();
-                paramNames.add(attrib.image);
-                paramValues.add(val);
-  }
-
-  final public String value() throws ParseException {
- Token t;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case ATOKEN:
-      t = jj_consume_token(ATOKEN);
-      break;
-    case QUOTEDSTRING:
-      t = jj_consume_token(QUOTEDSTRING);
-      break;
-    default:
-      jj_la1[2] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-          {if (true) return t.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  public ContentTypeParserTokenManager token_source;
-  SimpleCharStream jj_input_stream;
-  public Token token, jj_nt;
-  private int jj_ntk;
-  private int jj_gen;
-  final private int[] jj_la1 = new int[3];
-  static private int[] jj_la1_0;
-  static {
-      jj_la1_0();
-   }
-   private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x2,0x10,0x280000,};
-   }
-
-  public ContentTypeParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  public ContentTypeParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new ContentTypeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public ContentTypeParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new ContentTypeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public ContentTypeParser(ContentTypeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(ContentTypeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  final private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
-  final public Token getNextToken() {
-    if (token.next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
-  }
-
-  final public Token getToken(int index) {
-    Token t = token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) t = t.next;
-      else t = t.next = token_source.getNextToken();
-    }
-    return t;
-  }
-
-  final private int jj_ntk() {
-    if ((jj_nt=token.next) == null)
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
-    else
-      return (jj_ntk = jj_nt.kind);
-  }
-
-  private Vector<int[]> jj_expentries = new Vector<int[]>();
-  private int[] jj_expentry;
-  private int jj_kind = -1;
-
-  public ParseException generateParseException() {
-    jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[24];
-    for (int i = 0; i < 24; i++) {
-      la1tokens[i] = false;
-    }
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 3; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 24; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.addElement(jj_expentry);
-      }
-    }
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = jj_expentries.elementAt(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
-  }
-
-  final public void enable_tracing() {
-  }
-
-  final public void disable_tracing() {
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java b/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java
deleted file mode 100644
index d933d80..0000000
--- a/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ContentTypeParserConstants.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
-
-public interface ContentTypeParserConstants {
-
-  int EOF = 0;
-  int WS = 6;
-  int COMMENT = 8;
-  int QUOTEDSTRING = 19;
-  int DIGITS = 20;
-  int ATOKEN = 21;
-  int QUOTEDPAIR = 22;
-  int ANY = 23;
-
-  int DEFAULT = 0;
-  int INCOMMENT = 1;
-  int NESTED_COMMENT = 2;
-  int INQUOTEDSTRING = 3;
-
-  String[] tokenImage = {
-    "<EOF>",
-    "\"\\r\"",
-    "\"\\n\"",
-    "\"/\"",
-    "\";\"",
-    "\"=\"",
-    "<WS>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 9>",
-    "\"(\"",
-    "<token of kind 11>",
-    "<token of kind 12>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 15>",
-    "\"\\\"\"",
-    "<token of kind 17>",
-    "<token of kind 18>",
-    "\"\\\"\"",
-    "<DIGITS>",
-    "<ATOKEN>",
-    "<QUOTEDPAIR>",
-    "<ANY>",
-  };
-
-}
diff --git a/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java b/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java
deleted file mode 100644
index 25b7aba..0000000
--- a/apache/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java
+++ /dev/null
@@ -1,877 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ContentTypeParserTokenManager.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
-import java.util.ArrayList;
-
-public class ContentTypeParserTokenManager implements ContentTypeParserConstants
-{
-        // Keeps track of how many levels of comment nesting
-        // we've encountered.  This is only used when the 2nd
-        // level is reached, for example ((this)), not (this).
-        // This is because the outermost level must be treated
-        // specially anyway, because the outermost ")" has a
-        // different token type than inner ")" instances.
-        static int commentNest;
-  public  java.io.PrintStream debugStream = System.out;
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
-private final int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 10:
-         return jjStartNfaWithStates_0(0, 2, 2);
-      case 13:
-         return jjStartNfaWithStates_0(0, 1, 2);
-      case 34:
-         return jjStopAtPos(0, 16);
-      case 40:
-         return jjStopAtPos(0, 7);
-      case 47:
-         return jjStopAtPos(0, 3);
-      case 59:
-         return jjStopAtPos(0, 4);
-      case 61:
-         return jjStopAtPos(0, 5);
-      default :
-         return jjMoveNfa_0(3, 0);
-   }
-}
-private final void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private final void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-private final void jjCheckNAddStates(int start)
-{
-   jjCheckNAdd(jjnextStates[start]);
-   jjCheckNAdd(jjnextStates[start + 1]);
-}
-static final long[] jjbitVec0 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private final int jjMoveNfa_0(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 3:
-                  if ((0x3ff6cfafffffdffL & l) != 0L)
-                  {
-                     if (kind > 21)
-                        kind = 21;
-                     jjCheckNAdd(2);
-                  }
-                  else if ((0x100000200L & l) != 0L)
-                  {
-                     if (kind > 6)
-                        kind = 6;
-                     jjCheckNAdd(0);
-                  }
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 20)
-                        kind = 20;
-                     jjCheckNAdd(1);
-                  }
-                  break;
-               case 0:
-                  if ((0x100000200L & l) == 0L)
-                     break;
-                  kind = 6;
-                  jjCheckNAdd(0);
-                  break;
-               case 1:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 20)
-                     kind = 20;
-                  jjCheckNAdd(1);
-                  break;
-               case 2:
-                  if ((0x3ff6cfafffffdffL & l) == 0L)
-                     break;
-                  if (kind > 21)
-                     kind = 21;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 3:
-               case 2:
-                  if ((0xffffffffc7fffffeL & l) == 0L)
-                     break;
-                  kind = 21;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 3:
-               case 2:
-                  if ((jjbitVec0[i2] & l2) == 0L)
-                     break;
-                  if (kind > 21)
-                     kind = 21;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_1(int pos, long active0)
-{
-   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_1(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_1()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 10);
-      case 41:
-         return jjStopAtPos(0, 8);
-      default :
-         return jjMoveNfa_1(0, 0);
-   }
-}
-private final int jjMoveNfa_1(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 11)
-                     kind = 11;
-                  break;
-               case 1:
-                  if (kind > 9)
-                     kind = 9;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 11)
-                     kind = 11;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 9)
-                     kind = 9;
-                  break;
-               case 2:
-                  if (kind > 11)
-                     kind = 11;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
-                     kind = 11;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
-                     kind = 9;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_3(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_3(int pos, long active0)
-{
-   return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_3(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_3(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_3()
-{
-   switch(curChar)
-   {
-      case 34:
-         return jjStopAtPos(0, 19);
-      default :
-         return jjMoveNfa_3(0, 0);
-   }
-}
-private final int jjMoveNfa_3(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((0xfffffffbffffffffL & l) == 0L)
-                     break;
-                  if (kind > 18)
-                     kind = 18;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if (kind > 17)
-                     kind = 17;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                  {
-                     if (kind > 18)
-                        kind = 18;
-                     jjCheckNAdd(2);
-                  }
-                  else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 17)
-                     kind = 17;
-                  break;
-               case 2:
-                  if ((0xffffffffefffffffL & l) == 0L)
-                     break;
-                  if (kind > 18)
-                     kind = 18;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((jjbitVec0[i2] & l2) == 0L)
-                     break;
-                  if (kind > 18)
-                     kind = 18;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 17)
-                     kind = 17;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_2(int pos, long active0)
-{
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_2(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_2(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_2()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 13);
-      case 41:
-         return jjStopAtPos(0, 14);
-      default :
-         return jjMoveNfa_2(0, 0);
-   }
-}
-private final int jjMoveNfa_2(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 15)
-                     kind = 15;
-                  break;
-               case 1:
-                  if (kind > 12)
-                     kind = 12;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 15)
-                     kind = 15;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 12)
-                     kind = 12;
-                  break;
-               case 2:
-                  if (kind > 15)
-                     kind = 15;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 15)
-                     kind = 15;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 12)
-                     kind = 12;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-};
-public static final String[] jjstrLiteralImages = {
-"", "\15", "\12", "\57", "\73", "\75", null, null, null, null, null, null, 
-null, null, null, null, null, null, null, null, null, null, null, null, };
-public static final String[] lexStateNames = {
-   "DEFAULT", 
-   "INCOMMENT", 
-   "NESTED_COMMENT", 
-   "INQUOTEDSTRING", 
-};
-public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, 3, -1, -1, 0, -1, -1, -1, -1, 
-};
-static final long[] jjtoToken = {
-   0x38003fL, 
-};
-static final long[] jjtoSkip = {
-   0x140L, 
-};
-static final long[] jjtoSpecial = {
-   0x40L, 
-};
-static final long[] jjtoMore = {
-   0x7fe80L, 
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[3];
-private final int[] jjstateSet = new int[6];
-StringBuffer image;
-int jjimageLen;
-int lengthOfMatch;
-protected char curChar;
-public ContentTypeParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-public ContentTypeParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   SwitchTo(lexState);
-}
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private final void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 3; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 4 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   Token t = Token.newToken(jjmatchedKind);
-   t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   t.image = (im == null) ? input_stream.GetImage() : im;
-   t.beginLine = input_stream.getBeginLine();
-   t.beginColumn = input_stream.getBeginColumn();
-   t.endLine = input_stream.getEndLine();
-   t.endColumn = input_stream.getEndColumn();
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-public Token getNextToken() 
-{
-  int kind;
-  Token specialToken = null;
-  Token matchedToken;
-  int curPos = 0;
-
-  EOFLoop :
-  for (;;)
-  {   
-   try   
-   {     
-      curChar = input_stream.BeginToken();
-   }     
-   catch(java.io.IOException e)
-   {        
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      matchedToken.specialToken = specialToken;
-      return matchedToken;
-   }
-   image = null;
-   jjimageLen = 0;
-
-   for (;;)
-   {
-     switch(curLexState)
-     {
-       case 0:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_0();
-         break;
-       case 1:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_1();
-         break;
-       case 2:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_2();
-         break;
-       case 3:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_3();
-         break;
-     }
-     if (jjmatchedKind != 0x7fffffff)
-     {
-        if (jjmatchedPos + 1 < curPos)
-           input_stream.backup(curPos - jjmatchedPos - 1);
-        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           matchedToken = jjFillToken();
-           matchedToken.specialToken = specialToken;
-           TokenLexicalActions(matchedToken);
-       if (jjnewLexState[jjmatchedKind] != -1)
-         curLexState = jjnewLexState[jjmatchedKind];
-           return matchedToken;
-        }
-        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-           {
-              matchedToken = jjFillToken();
-              if (specialToken == null)
-                 specialToken = matchedToken;
-              else
-              {
-                 matchedToken.specialToken = specialToken;
-                 specialToken = (specialToken.next = matchedToken);
-              }
-           }
-         if (jjnewLexState[jjmatchedKind] != -1)
-           curLexState = jjnewLexState[jjmatchedKind];
-           continue EOFLoop;
-        }
-        MoreLexicalActions();
-      if (jjnewLexState[jjmatchedKind] != -1)
-        curLexState = jjnewLexState[jjmatchedKind];
-        curPos = 0;
-        jjmatchedKind = 0x7fffffff;
-        try {
-           curChar = input_stream.readChar();
-           continue;
-        }
-        catch (java.io.IOException e1) { }
-     }
-     int error_line = input_stream.getEndLine();
-     int error_column = input_stream.getEndColumn();
-     String error_after = null;
-     boolean EOFSeen = false;
-     try { input_stream.readChar(); input_stream.backup(1); }
-     catch (java.io.IOException e1) {
-        EOFSeen = true;
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-        if (curChar == '\n' || curChar == '\r') {
-           error_line++;
-           error_column = 0;
-        }
-        else
-           error_column++;
-     }
-     if (!EOFSeen) {
-        input_stream.backup(1);
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-     }
-     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-   }
-  }
-}
-
-void MoreLexicalActions()
-{
-   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
-   switch(jjmatchedKind)
-   {
-      case 9 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 10 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              commentNest = 1;
-         break;
-      case 12 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 13 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              ++commentNest;
-         break;
-      case 14 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
-         break;
-      case 16 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-               image.deleteCharAt(image.length() - 1);
-         break;
-      case 17 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      default : 
-         break;
-   }
-}
-void TokenLexicalActions(Token matchedToken)
-{
-   switch(jjmatchedKind)
-   {
-      case 19 :
-        if (image == null)
-            image = new StringBuffer();
-            image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
-                                 matchedToken.image = image.substring(0, image.length() - 1);
-         break;
-      default : 
-         break;
-   }
-}
-}
diff --git a/apache/org/apache/james/mime4j/field/contenttype/parser/ParseException.java b/apache/org/apache/james/mime4j/field/contenttype/parser/ParseException.java
deleted file mode 100644
index d9b69b2..0000000
--- a/apache/org/apache/james/mime4j/field/contenttype/parser/ParseException.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.  The boolean
-   * flag "specialConstructor" is also set to true to indicate that
-   * this constructor was used to create this object.
-   * This constructor calls its super class with the empty string
-   * to force the "toString" method of parent class "Throwable" to
-   * print the error message in the form:
-   *     ParseException: <result of getMessage>
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super("");
-    specialConstructor = true;
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-    specialConstructor = false;
-  }
-
-  public ParseException(String message) {
-    super(message);
-    specialConstructor = false;
-  }
-
-  /**
-   * This variable determines which constructor was used to create
-   * this object and thereby affects the semantics of the
-   * "getMessage" method (see below).
-   */
-  protected boolean specialConstructor;
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * This method has the standard behavior when this object has been
-   * created using the standard constructors.  Otherwise, it uses
-   * "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser), then this method is called during the printing
-   * of the final stack trace, and hence the correct error message
-   * gets displayed.
-   */
-  public String getMessage() {
-    if (!specialConstructor) {
-      return super.getMessage();
-    }
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += add_escapes(tok.image);
-      tok = tok.next; 
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
- 
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java b/apache/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java
deleted file mode 100644
index ae035b7..0000000
--- a/apache/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public class SimpleCharStream
-{
-  public static final boolean staticFlag = false;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  public int bufpos = -1;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
-
-     try
-     {
-        if (wrapAround)
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           System.arraycopy(buffer, 0, newbuffer,
-                                             bufsize - tokenBegin, bufpos);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-        }
-        else
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos -= tokenBegin);
-        }
-     }
-     catch (Throwable t)
-     {
-        throw new Error(t.getMessage());
-     }
-
-
-     bufsize += 2048;
-     available = bufsize;
-     tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-     if (maxNextCharInd == available)
-     {
-        if (available == bufsize)
-        {
-           if (tokenBegin > 2048)
-           {
-              bufpos = maxNextCharInd = 0;
-              available = tokenBegin;
-           }
-           else if (tokenBegin < 0)
-              bufpos = maxNextCharInd = 0;
-           else
-              ExpandBuff(false);
-        }
-        else if (available > tokenBegin)
-           available = bufsize;
-        else if ((tokenBegin - available) < 2048)
-           ExpandBuff(true);
-        else
-           available = tokenBegin;
-     }
-
-     int i;
-     try {
-        if ((i = inputStream.read(buffer, maxNextCharInd,
-                                    available - maxNextCharInd)) == -1)
-        {
-           inputStream.close();
-           throw new java.io.IOException();
-        }
-        else
-           maxNextCharInd += i;
-        return;
-     }
-     catch(java.io.IOException e) {
-        --bufpos;
-        backup(0);
-        if (tokenBegin == -1)
-           tokenBegin = bufpos;
-        throw e;
-     }
-  }
-
-  public char BeginToken() throws java.io.IOException
-  {
-     tokenBegin = -1;
-     char c = readChar();
-     tokenBegin = bufpos;
-
-     return c;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-     column++;
-
-     if (prevCharIsLF)
-     {
-        prevCharIsLF = false;
-        line += (column = 1);
-     }
-     else if (prevCharIsCR)
-     {
-        prevCharIsCR = false;
-        if (c == '\n')
-        {
-           prevCharIsLF = true;
-        }
-        else
-           line += (column = 1);
-     }
-
-     switch (c)
-     {
-        case '\r' :
-           prevCharIsCR = true;
-           break;
-        case '\n' :
-           prevCharIsLF = true;
-           break;
-        case '\t' :
-           column--;
-           column += (tabSize - (column % tabSize));
-           break;
-        default :
-           break;
-     }
-
-     bufline[bufpos] = line;
-     bufcolumn[bufpos] = column;
-  }
-
-  public char readChar() throws java.io.IOException
-  {
-     if (inBuf > 0)
-     {
-        --inBuf;
-
-        if (++bufpos == bufsize)
-           bufpos = 0;
-
-        return buffer[bufpos];
-     }
-
-     if (++bufpos >= maxNextCharInd)
-        FillBuff();
-
-     char c = buffer[bufpos];
-
-     UpdateLineColumn(c);
-     return (c);
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndColumn
-   */
-  @Deprecated
-  public int getColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndLine
-   */
-  @Deprecated
-  public int getLine() {
-     return bufline[bufpos];
-  }
-
-  public int getEndColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  public int getEndLine() {
-     return bufline[bufpos];
-  }
-
-  public int getBeginColumn() {
-     return bufcolumn[tokenBegin];
-  }
-
-  public int getBeginLine() {
-     return bufline[tokenBegin];
-  }
-
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-       bufpos += bufsize;
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.Reader dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    bufpos = -1;
-  }
-
-  public void ReInit(java.io.Reader dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, 1, 1, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public String GetImage()
-  {
-     if (bufpos >= tokenBegin)
-        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-     else
-        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
-  public void Done()
-  {
-     buffer = null;
-     bufline = null;
-     bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/contenttype/parser/Token.java b/apache/org/apache/james/mime4j/field/contenttype/parser/Token.java
deleted file mode 100644
index 34e65ee..0000000
--- a/apache/org/apache/james/mime4j/field/contenttype/parser/Token.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token {
-
-  /**
-   * An integer that describes the kind of this token.  This numbering
-   * system is determined by JavaCCParser, and a table of these numbers is
-   * stored in the file ...Constants.java.
-   */
-  public int kind;
-
-  /**
-   * beginLine and beginColumn describe the position of the first character
-   * of this token; endLine and endColumn describe the position of the
-   * last character of this token.
-   */
-  public int beginLine, beginColumn, endLine, endColumn;
-
-  /**
-   * The string image of the token.
-   */
-  public String image;
-
-  /**
-   * A reference to the next regular (non-special) token from the input
-   * stream.  If this is the last token from the input stream, or if the
-   * token manager has not read tokens beyond this one, this field is
-   * set to null.  This is true only if this token is also a regular
-   * token.  Otherwise, see below for a description of the contents of
-   * this field.
-   */
-  public Token next;
-
-  /**
-   * This field is used to access special tokens that occur prior to this
-   * token, but after the immediately preceding regular (non-special) token.
-   * If there are no such special tokens, this field is set to null.
-   * When there are more than one such special token, this field refers
-   * to the last of these special tokens, which in turn refers to the next
-   * previous special token through its specialToken field, and so on
-   * until the first special token (whose specialToken field is null).
-   * The next fields of special tokens refer to other special tokens that
-   * immediately follow it (without an intervening regular token).  If there
-   * is no such token, this field is null.
-   */
-  public Token specialToken;
-
-  /**
-   * Returns the image.
-   */
-  public String toString()
-  {
-     return image;
-  }
-
-  /**
-   * Returns a new Token object, by default. However, if you want, you
-   * can create and return subclass objects based on the value of ofKind.
-   * Simply add the cases to the switch for all those special cases.
-   * For example, if you have a subclass of Token called IDToken that
-   * you want to create if ofKind is ID, simlpy add something like :
-   *
-   *    case MyParserConstants.ID : return new IDToken();
-   *
-   * to the following switch statement. Then you can cast matchedToken
-   * variable to the appropriate type and use it in your lexical actions.
-   */
-  public static final Token newToken(int ofKind)
-  {
-     switch(ofKind)
-     {
-       default : return new Token();
-     }
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java b/apache/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java
deleted file mode 100644
index ea5a782..0000000
--- a/apache/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
-
-public class TokenMgrError extends Error
-{
-   /*
-    * Ordinals for various reasons why an Error of this type can be thrown.
-    */
-
-   /**
-    * Lexical error occured.
-    */
-   static final int LEXICAL_ERROR = 0;
-
-   /**
-    * An attempt wass made to create a second instance of a static token manager.
-    */
-   static final int STATIC_LEXER_ERROR = 1;
-
-   /**
-    * Tried to change to an invalid lexical state.
-    */
-   static final int INVALID_LEXICAL_STATE = 2;
-
-   /**
-    * Detected (and bailed out of) an infinite loop in the token manager.
-    */
-   static final int LOOP_DETECTED = 3;
-
-   /**
-    * Indicates the reason why the exception is thrown. It will have
-    * one of the above 4 values.
-    */
-   int errorCode;
-
-   /**
-    * Replaces unprintable characters by their espaced (or unicode escaped)
-    * equivalents in the given string
-    */
-   protected static final String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-   /**
-    * Returns a detailed message for the Error when it is thrown by the
-    * token manager to indicate a lexical error.
-    * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
-    * Note: You can customize the lexical error message by modifying this method.
-    */
-   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-      return("Lexical error at line " +
-           errorLine + ", column " +
-           errorColumn + ".  Encountered: " +
-           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-           "after : \"" + addEscapes(errorAfter) + "\"");
-   }
-
-   /**
-    * You can also modify the body of this method to customize your error messages.
-    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-    * of end-users concern, so you can return something like : 
-    *
-    *     "Internal Error : Please file a bug report .... "
-    *
-    * from this method for such cases in the release version of your parser.
-    */
-   public String getMessage() {
-      return super.getMessage();
-   }
-
-   /*
-    * Constructors of various flavors follow.
-    */
-
-   public TokenMgrError() {
-   }
-
-   public TokenMgrError(String message, int reason) {
-      super(message);
-      errorCode = reason;
-   }
-
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-   }
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/DateTime.java b/apache/org/apache/james/mime4j/field/datetime/DateTime.java
deleted file mode 100644
index 506ff54..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/DateTime.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.field.datetime;
-
-import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
-import org.apache.james.mime4j.field.datetime.parser.ParseException;
-import org.apache.james.mime4j.field.datetime.parser.TokenMgrError;
-
-import java.util.Date;
-import java.util.Calendar;
-import java.util.TimeZone;
-import java.util.GregorianCalendar;
-import java.io.StringReader;
-
-public class DateTime {
-    private final Date date;
-    private final int year;
-    private final int month;
-    private final int day;
-    private final int hour;
-    private final int minute;
-    private final int second;
-    private final int timeZone;
-
-    public DateTime(String yearString, int month, int day, int hour, int minute, int second, int timeZone) {
-        this.year = convertToYear(yearString);
-        this.date = convertToDate(year, month, day, hour, minute, second, timeZone);
-        this.month = month;
-        this.day = day;
-        this.hour = hour;
-        this.minute = minute;
-        this.second = second;
-        this.timeZone = timeZone;
-    }
-
-    private int convertToYear(String yearString) {
-        int year = Integer.parseInt(yearString);
-        switch (yearString.length()) {
-            case 1:
-            case 2:
-                if (year >= 0 && year < 50)
-                    return 2000 + year;
-                else
-                    return 1900 + year;
-            case 3:
-                return 1900 + year;
-            default:
-                return year;
-        }
-    }
-
-    public static Date convertToDate(int year, int month, int day, int hour, int minute, int second, int timeZone) {
-        Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT+0"));
-        c.set(year, month - 1, day, hour, minute, second);
-        c.set(Calendar.MILLISECOND, 0);
-
-        if (timeZone != Integer.MIN_VALUE) {
-            int minutes = ((timeZone / 100) * 60) + timeZone % 100;
-            c.add(Calendar.MINUTE, -1 * minutes);
-        }
-
-        return c.getTime();
-    }
-
-    public Date getDate() {
-        return date;
-    }
-
-    public int getYear() {
-        return year;
-    }
-
-    public int getMonth() {
-        return month;
-    }
-
-    public int getDay() {
-        return day;
-    }
-
-    public int getHour() {
-        return hour;
-    }
-
-    public int getMinute() {
-        return minute;
-    }
-
-    public int getSecond() {
-        return second;
-    }
-
-    public int getTimeZone() {
-        return timeZone;
-    }
-
-    public void print() {
-        System.out.println(getYear() + " " + getMonth() + " " + getDay() + "; " + getHour() + " " + getMinute() + " " + getSecond() + " " + getTimeZone());
-    }
-
-
-    public static DateTime parse(String dateString) throws ParseException {
-        try {
-            return new DateTimeParser(new StringReader(dateString)).parseAll();
-        }
-        catch (TokenMgrError err) {
-            throw new ParseException(err.getMessage());
-        }
-    }
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java b/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java
deleted file mode 100644
index 43edebb..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java
+++ /dev/null
@@ -1,570 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DateTimeParser.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
-
-import org.apache.james.mime4j.field.datetime.DateTime;
-
-import java.util.Vector;
-
-public class DateTimeParser implements DateTimeParserConstants {
-    private static final boolean ignoreMilitaryZoneOffset = true;
-
-    public static void main(String args[]) throws ParseException {
-                while (true) {
-                    try {
-                                DateTimeParser parser = new DateTimeParser(System.in);
-                        parser.parseLine();
-                    } catch (Exception x) {
-                                x.printStackTrace();
-                                return;
-                    }
-                }
-    }
-
-    private static int parseDigits(Token token) {
-        return Integer.parseInt(token.image, 10);
-    }
-
-    private static int getMilitaryZoneOffset(char c) {
-        if (ignoreMilitaryZoneOffset)
-            return 0;
-
-        c = Character.toUpperCase(c);
-
-        switch (c) {
-            case 'A': return 1;
-            case 'B': return 2;
-            case 'C': return 3;
-            case 'D': return 4;
-            case 'E': return 5;
-            case 'F': return 6;
-            case 'G': return 7;
-            case 'H': return 8;
-            case 'I': return 9;
-            case 'K': return 10;
-            case 'L': return 11;
-            case 'M': return 12;
-
-            case 'N': return -1;
-            case 'O': return -2;
-            case 'P': return -3;
-            case 'Q': return -4;
-            case 'R': return -5;
-            case 'S': return -6;
-            case 'T': return -7;
-            case 'U': return -8;
-            case 'V': return -9;
-            case 'W': return -10;
-            case 'X': return -11;
-            case 'Y': return -12;
-
-            case 'Z': return 0;
-            default: return 0;
-        }
-    }
-
-    private static class Time {
-        private int hour;
-        private int minute;
-        private int second;
-        private int zone;
-
-        public Time(int hour, int minute, int second, int zone) {
-            this.hour = hour;
-            this.minute = minute;
-            this.second = second;
-            this.zone = zone;
-        }
-
-        public int getHour() { return hour; }
-        public int getMinute() { return minute; }
-        public int getSecond() { return second; }
-        public int getZone() { return zone; }
-    }
-
-    private static class Date {
-        private String year;
-        private int month;
-        private int day;
-
-        public Date(String year, int month, int day) {
-            this.year = year;
-            this.month = month;
-            this.day = day;
-        }
-
-        public String getYear() { return year; }
-        public int getMonth() { return month; }
-        public int getDay() { return day; }
-    }
-
-  final public DateTime parseLine() throws ParseException {
- DateTime dt;
-    dt = date_time();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 1:
-      jj_consume_token(1);
-      break;
-    default:
-      jj_la1[0] = jj_gen;
-      ;
-    }
-    jj_consume_token(2);
-          {if (true) return dt;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public DateTime parseAll() throws ParseException {
- DateTime dt;
-    dt = date_time();
-    jj_consume_token(0);
-          {if (true) return dt;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public DateTime date_time() throws ParseException {
- Date d; Time t;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 4:
-    case 5:
-    case 6:
-    case 7:
-    case 8:
-    case 9:
-    case 10:
-      day_of_week();
-      jj_consume_token(3);
-      break;
-    default:
-      jj_la1[1] = jj_gen;
-      ;
-    }
-    d = date();
-    t = time();
-            {if (true) return new DateTime(
-                    d.getYear(),
-                    d.getMonth(),
-                    d.getDay(),
-                    t.getHour(),
-                    t.getMinute(),
-                    t.getSecond(),
-                    t.getZone());}    // time zone offset
-
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String day_of_week() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 4:
-      jj_consume_token(4);
-      break;
-    case 5:
-      jj_consume_token(5);
-      break;
-    case 6:
-      jj_consume_token(6);
-      break;
-    case 7:
-      jj_consume_token(7);
-      break;
-    case 8:
-      jj_consume_token(8);
-      break;
-    case 9:
-      jj_consume_token(9);
-      break;
-    case 10:
-      jj_consume_token(10);
-      break;
-    default:
-      jj_la1[2] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-      {if (true) return token.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public Date date() throws ParseException {
- int d, m; String y;
-    d = day();
-    m = month();
-    y = year();
-      {if (true) return new Date(y, m, d);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int day() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int month() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 11:
-      jj_consume_token(11);
-            {if (true) return 1;}
-      break;
-    case 12:
-      jj_consume_token(12);
-            {if (true) return 2;}
-      break;
-    case 13:
-      jj_consume_token(13);
-            {if (true) return 3;}
-      break;
-    case 14:
-      jj_consume_token(14);
-            {if (true) return 4;}
-      break;
-    case 15:
-      jj_consume_token(15);
-            {if (true) return 5;}
-      break;
-    case 16:
-      jj_consume_token(16);
-            {if (true) return 6;}
-      break;
-    case 17:
-      jj_consume_token(17);
-            {if (true) return 7;}
-      break;
-    case 18:
-      jj_consume_token(18);
-            {if (true) return 8;}
-      break;
-    case 19:
-      jj_consume_token(19);
-            {if (true) return 9;}
-      break;
-    case 20:
-      jj_consume_token(20);
-            {if (true) return 10;}
-      break;
-    case 21:
-      jj_consume_token(21);
-            {if (true) return 11;}
-      break;
-    case 22:
-      jj_consume_token(22);
-            {if (true) return 12;}
-      break;
-    default:
-      jj_la1[3] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String year() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return t.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public Time time() throws ParseException {
- int h, m, s=0, z;
-    h = hour();
-    jj_consume_token(23);
-    m = minute();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 23:
-      jj_consume_token(23);
-      s = second();
-      break;
-    default:
-      jj_la1[4] = jj_gen;
-      ;
-    }
-    z = zone();
-      {if (true) return new Time(h, m, s, z);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int hour() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int minute() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int second() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int zone() throws ParseException {
-  Token t, u; int z;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case OFFSETDIR:
-      t = jj_consume_token(OFFSETDIR);
-      u = jj_consume_token(DIGITS);
-                                              z=parseDigits(u)*(t.image.equals("-") ? -1 : 1);
-      break;
-    case 25:
-    case 26:
-    case 27:
-    case 28:
-    case 29:
-    case 30:
-    case 31:
-    case 32:
-    case 33:
-    case 34:
-    case MILITARY_ZONE:
-      z = obs_zone();
-      break;
-    default:
-      jj_la1[5] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-      {if (true) return z;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int obs_zone() throws ParseException {
- Token t; int z;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 25:
-      jj_consume_token(25);
-            z=0;
-      break;
-    case 26:
-      jj_consume_token(26);
-            z=0;
-      break;
-    case 27:
-      jj_consume_token(27);
-            z=-5;
-      break;
-    case 28:
-      jj_consume_token(28);
-            z=-4;
-      break;
-    case 29:
-      jj_consume_token(29);
-            z=-6;
-      break;
-    case 30:
-      jj_consume_token(30);
-            z=-5;
-      break;
-    case 31:
-      jj_consume_token(31);
-            z=-7;
-      break;
-    case 32:
-      jj_consume_token(32);
-            z=-6;
-      break;
-    case 33:
-      jj_consume_token(33);
-            z=-8;
-      break;
-    case 34:
-      jj_consume_token(34);
-            z=-7;
-      break;
-    case MILITARY_ZONE:
-      t = jj_consume_token(MILITARY_ZONE);
-                                                             z=getMilitaryZoneOffset(t.image.charAt(0));
-      break;
-    default:
-      jj_la1[6] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-      {if (true) return z * 100;}
-    throw new Error("Missing return statement in function");
-  }
-
-  public DateTimeParserTokenManager token_source;
-  SimpleCharStream jj_input_stream;
-  public Token token, jj_nt;
-  private int jj_ntk;
-  private int jj_gen;
-  final private int[] jj_la1 = new int[7];
-  static private int[] jj_la1_0;
-  static private int[] jj_la1_1;
-  static {
-      jj_la1_0();
-      jj_la1_1();
-   }
-   private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x2,0x7f0,0x7f0,0x7ff800,0x800000,0xff000000,0xfe000000,};
-   }
-   private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0xf,0xf,};
-   }
-
-  public DateTimeParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  public DateTimeParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new DateTimeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public DateTimeParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new DateTimeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public DateTimeParser(DateTimeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(DateTimeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  final private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
-  final public Token getNextToken() {
-    if (token.next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
-  }
-
-  final public Token getToken(int index) {
-    Token t = token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) t = t.next;
-      else t = t.next = token_source.getNextToken();
-    }
-    return t;
-  }
-
-  final private int jj_ntk() {
-    if ((jj_nt=token.next) == null)
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
-    else
-      return (jj_ntk = jj_nt.kind);
-  }
-
-  private Vector<int[]> jj_expentries = new Vector<int[]>();
-  private int[] jj_expentry;
-  private int jj_kind = -1;
-
-  public ParseException generateParseException() {
-    jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[49];
-    for (int i = 0; i < 49; i++) {
-      la1tokens[i] = false;
-    }
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 7; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-          if ((jj_la1_1[i] & (1<<j)) != 0) {
-            la1tokens[32+j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 49; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.addElement(jj_expentry);
-      }
-    }
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = jj_expentries.elementAt(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
-  }
-
-  final public void enable_tracing() {
-  }
-
-  final public void disable_tracing() {
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java b/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java
deleted file mode 100644
index 2c203db..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DateTimeParserConstants.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
-
-public interface DateTimeParserConstants {
-
-  int EOF = 0;
-  int OFFSETDIR = 24;
-  int MILITARY_ZONE = 35;
-  int WS = 36;
-  int COMMENT = 38;
-  int DIGITS = 46;
-  int QUOTEDPAIR = 47;
-  int ANY = 48;
-
-  int DEFAULT = 0;
-  int INCOMMENT = 1;
-  int NESTED_COMMENT = 2;
-
-  String[] tokenImage = {
-    "<EOF>",
-    "\"\\r\"",
-    "\"\\n\"",
-    "\",\"",
-    "\"Mon\"",
-    "\"Tue\"",
-    "\"Wed\"",
-    "\"Thu\"",
-    "\"Fri\"",
-    "\"Sat\"",
-    "\"Sun\"",
-    "\"Jan\"",
-    "\"Feb\"",
-    "\"Mar\"",
-    "\"Apr\"",
-    "\"May\"",
-    "\"Jun\"",
-    "\"Jul\"",
-    "\"Aug\"",
-    "\"Sep\"",
-    "\"Oct\"",
-    "\"Nov\"",
-    "\"Dec\"",
-    "\":\"",
-    "<OFFSETDIR>",
-    "\"UT\"",
-    "\"GMT\"",
-    "\"EST\"",
-    "\"EDT\"",
-    "\"CST\"",
-    "\"CDT\"",
-    "\"MST\"",
-    "\"MDT\"",
-    "\"PST\"",
-    "\"PDT\"",
-    "<MILITARY_ZONE>",
-    "<WS>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 39>",
-    "\"(\"",
-    "<token of kind 41>",
-    "<token of kind 42>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 45>",
-    "<DIGITS>",
-    "<QUOTEDPAIR>",
-    "<ANY>",
-  };
-
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java b/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java
deleted file mode 100644
index 4b2d2fd..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java
+++ /dev/null
@@ -1,882 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DateTimeParserTokenManager.java */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
-import org.apache.james.mime4j.field.datetime.DateTime;
-import java.util.Calendar;
-
-public class DateTimeParserTokenManager implements DateTimeParserConstants
-{
-        // Keeps track of how many levels of comment nesting
-        // we've encountered.  This is only used when the 2nd
-        // level is reached, for example ((this)), not (this).
-        // This is because the outermost level must be treated
-        // specially anyway, because the outermost ")" has a
-        // different token type than inner ")" instances.
-        static int commentNest;
-  public  java.io.PrintStream debugStream = System.out;
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      case 0:
-         if ((active0 & 0x7fe7cf7f0L) != 0L)
-         {
-            jjmatchedKind = 35;
-            return -1;
-         }
-         return -1;
-      case 1:
-         if ((active0 & 0x7fe7cf7f0L) != 0L)
-         {
-            if (jjmatchedPos == 0)
-            {
-               jjmatchedKind = 35;
-               jjmatchedPos = 0;
-            }
-            return -1;
-         }
-         return -1;
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
-private final int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 10:
-         return jjStopAtPos(0, 2);
-      case 13:
-         return jjStopAtPos(0, 1);
-      case 40:
-         return jjStopAtPos(0, 37);
-      case 44:
-         return jjStopAtPos(0, 3);
-      case 58:
-         return jjStopAtPos(0, 23);
-      case 65:
-         return jjMoveStringLiteralDfa1_0(0x44000L);
-      case 67:
-         return jjMoveStringLiteralDfa1_0(0x60000000L);
-      case 68:
-         return jjMoveStringLiteralDfa1_0(0x400000L);
-      case 69:
-         return jjMoveStringLiteralDfa1_0(0x18000000L);
-      case 70:
-         return jjMoveStringLiteralDfa1_0(0x1100L);
-      case 71:
-         return jjMoveStringLiteralDfa1_0(0x4000000L);
-      case 74:
-         return jjMoveStringLiteralDfa1_0(0x30800L);
-      case 77:
-         return jjMoveStringLiteralDfa1_0(0x18000a010L);
-      case 78:
-         return jjMoveStringLiteralDfa1_0(0x200000L);
-      case 79:
-         return jjMoveStringLiteralDfa1_0(0x100000L);
-      case 80:
-         return jjMoveStringLiteralDfa1_0(0x600000000L);
-      case 83:
-         return jjMoveStringLiteralDfa1_0(0x80600L);
-      case 84:
-         return jjMoveStringLiteralDfa1_0(0xa0L);
-      case 85:
-         return jjMoveStringLiteralDfa1_0(0x2000000L);
-      case 87:
-         return jjMoveStringLiteralDfa1_0(0x40L);
-      default :
-         return jjMoveNfa_0(0, 0);
-   }
-}
-private final int jjMoveStringLiteralDfa1_0(long active0)
-{
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(0, active0);
-      return 1;
-   }
-   switch(curChar)
-   {
-      case 68:
-         return jjMoveStringLiteralDfa2_0(active0, 0x550000000L);
-      case 77:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000L);
-      case 83:
-         return jjMoveStringLiteralDfa2_0(active0, 0x2a8000000L);
-      case 84:
-         if ((active0 & 0x2000000L) != 0L)
-            return jjStopAtPos(1, 25);
-         break;
-      case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0xaa00L);
-      case 99:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
-      case 101:
-         return jjMoveStringLiteralDfa2_0(active0, 0x481040L);
-      case 104:
-         return jjMoveStringLiteralDfa2_0(active0, 0x80L);
-      case 111:
-         return jjMoveStringLiteralDfa2_0(active0, 0x200010L);
-      case 112:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000L);
-      case 114:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100L);
-      case 117:
-         return jjMoveStringLiteralDfa2_0(active0, 0x70420L);
-      default :
-         break;
-   }
-   return jjStartNfa_0(0, active0);
-}
-private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
-{
-   if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(0, old0); 
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(1, active0);
-      return 2;
-   }
-   switch(curChar)
-   {
-      case 84:
-         if ((active0 & 0x4000000L) != 0L)
-            return jjStopAtPos(2, 26);
-         else if ((active0 & 0x8000000L) != 0L)
-            return jjStopAtPos(2, 27);
-         else if ((active0 & 0x10000000L) != 0L)
-            return jjStopAtPos(2, 28);
-         else if ((active0 & 0x20000000L) != 0L)
-            return jjStopAtPos(2, 29);
-         else if ((active0 & 0x40000000L) != 0L)
-            return jjStopAtPos(2, 30);
-         else if ((active0 & 0x80000000L) != 0L)
-            return jjStopAtPos(2, 31);
-         else if ((active0 & 0x100000000L) != 0L)
-            return jjStopAtPos(2, 32);
-         else if ((active0 & 0x200000000L) != 0L)
-            return jjStopAtPos(2, 33);
-         else if ((active0 & 0x400000000L) != 0L)
-            return jjStopAtPos(2, 34);
-         break;
-      case 98:
-         if ((active0 & 0x1000L) != 0L)
-            return jjStopAtPos(2, 12);
-         break;
-      case 99:
-         if ((active0 & 0x400000L) != 0L)
-            return jjStopAtPos(2, 22);
-         break;
-      case 100:
-         if ((active0 & 0x40L) != 0L)
-            return jjStopAtPos(2, 6);
-         break;
-      case 101:
-         if ((active0 & 0x20L) != 0L)
-            return jjStopAtPos(2, 5);
-         break;
-      case 103:
-         if ((active0 & 0x40000L) != 0L)
-            return jjStopAtPos(2, 18);
-         break;
-      case 105:
-         if ((active0 & 0x100L) != 0L)
-            return jjStopAtPos(2, 8);
-         break;
-      case 108:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStopAtPos(2, 17);
-         break;
-      case 110:
-         if ((active0 & 0x10L) != 0L)
-            return jjStopAtPos(2, 4);
-         else if ((active0 & 0x400L) != 0L)
-            return jjStopAtPos(2, 10);
-         else if ((active0 & 0x800L) != 0L)
-            return jjStopAtPos(2, 11);
-         else if ((active0 & 0x10000L) != 0L)
-            return jjStopAtPos(2, 16);
-         break;
-      case 112:
-         if ((active0 & 0x80000L) != 0L)
-            return jjStopAtPos(2, 19);
-         break;
-      case 114:
-         if ((active0 & 0x2000L) != 0L)
-            return jjStopAtPos(2, 13);
-         else if ((active0 & 0x4000L) != 0L)
-            return jjStopAtPos(2, 14);
-         break;
-      case 116:
-         if ((active0 & 0x200L) != 0L)
-            return jjStopAtPos(2, 9);
-         else if ((active0 & 0x100000L) != 0L)
-            return jjStopAtPos(2, 20);
-         break;
-      case 117:
-         if ((active0 & 0x80L) != 0L)
-            return jjStopAtPos(2, 7);
-         break;
-      case 118:
-         if ((active0 & 0x200000L) != 0L)
-            return jjStopAtPos(2, 21);
-         break;
-      case 121:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(2, 15);
-         break;
-      default :
-         break;
-   }
-   return jjStartNfa_0(1, active0);
-}
-private final void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private final void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-private final void jjCheckNAddStates(int start)
-{
-   jjCheckNAdd(jjnextStates[start]);
-   jjCheckNAdd(jjnextStates[start + 1]);
-}
-private final int jjMoveNfa_0(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 4;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 46)
-                        kind = 46;
-                     jjCheckNAdd(3);
-                  }
-                  else if ((0x100000200L & l) != 0L)
-                  {
-                     if (kind > 36)
-                        kind = 36;
-                     jjCheckNAdd(2);
-                  }
-                  else if ((0x280000000000L & l) != 0L)
-                  {
-                     if (kind > 24)
-                        kind = 24;
-                  }
-                  break;
-               case 2:
-                  if ((0x100000200L & l) == 0L)
-                     break;
-                  kind = 36;
-                  jjCheckNAdd(2);
-                  break;
-               case 3:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  kind = 46;
-                  jjCheckNAdd(3);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0x7fffbfe07fffbfeL & l) != 0L)
-                     kind = 35;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_1(int pos, long active0)
-{
-   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_1(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_1()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 40);
-      case 41:
-         return jjStopAtPos(0, 38);
-      default :
-         return jjMoveNfa_1(0, 0);
-   }
-}
-static final long[] jjbitVec0 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private final int jjMoveNfa_1(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 41)
-                     kind = 41;
-                  break;
-               case 1:
-                  if (kind > 39)
-                     kind = 39;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 41)
-                     kind = 41;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 39)
-                     kind = 39;
-                  break;
-               case 2:
-                  if (kind > 41)
-                     kind = 41;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 41)
-                     kind = 41;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 39)
-                     kind = 39;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_2(int pos, long active0)
-{
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_2(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_2(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_2()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 43);
-      case 41:
-         return jjStopAtPos(0, 44);
-      default :
-         return jjMoveNfa_2(0, 0);
-   }
-}
-private final int jjMoveNfa_2(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 45)
-                     kind = 45;
-                  break;
-               case 1:
-                  if (kind > 42)
-                     kind = 42;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 45)
-                     kind = 45;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 42)
-                     kind = 42;
-                  break;
-               case 2:
-                  if (kind > 45)
-                     kind = 45;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 45)
-                     kind = 45;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 42)
-                     kind = 42;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-};
-public static final String[] jjstrLiteralImages = {
-"", "\15", "\12", "\54", "\115\157\156", "\124\165\145", "\127\145\144", 
-"\124\150\165", "\106\162\151", "\123\141\164", "\123\165\156", "\112\141\156", 
-"\106\145\142", "\115\141\162", "\101\160\162", "\115\141\171", "\112\165\156", 
-"\112\165\154", "\101\165\147", "\123\145\160", "\117\143\164", "\116\157\166", 
-"\104\145\143", "\72", null, "\125\124", "\107\115\124", "\105\123\124", "\105\104\124", 
-"\103\123\124", "\103\104\124", "\115\123\124", "\115\104\124", "\120\123\124", 
-"\120\104\124", null, null, null, null, null, null, null, null, null, null, null, null, null, 
-null, };
-public static final String[] lexStateNames = {
-   "DEFAULT", 
-   "INCOMMENT", 
-   "NESTED_COMMENT", 
-};
-public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, 
-};
-static final long[] jjtoToken = {
-   0x400fffffffffL, 
-};
-static final long[] jjtoSkip = {
-   0x5000000000L, 
-};
-static final long[] jjtoSpecial = {
-   0x1000000000L, 
-};
-static final long[] jjtoMore = {
-   0x3fa000000000L, 
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[4];
-private final int[] jjstateSet = new int[8];
-StringBuffer image;
-int jjimageLen;
-int lengthOfMatch;
-protected char curChar;
-public DateTimeParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-public DateTimeParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   SwitchTo(lexState);
-}
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private final void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 4; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 3 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   Token t = Token.newToken(jjmatchedKind);
-   t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   t.image = (im == null) ? input_stream.GetImage() : im;
-   t.beginLine = input_stream.getBeginLine();
-   t.beginColumn = input_stream.getBeginColumn();
-   t.endLine = input_stream.getEndLine();
-   t.endColumn = input_stream.getEndColumn();
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-public Token getNextToken() 
-{
-  int kind;
-  Token specialToken = null;
-  Token matchedToken;
-  int curPos = 0;
-
-  EOFLoop :
-  for (;;)
-  {   
-   try   
-   {     
-      curChar = input_stream.BeginToken();
-   }     
-   catch(java.io.IOException e)
-   {        
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      matchedToken.specialToken = specialToken;
-      return matchedToken;
-   }
-   image = null;
-   jjimageLen = 0;
-
-   for (;;)
-   {
-     switch(curLexState)
-     {
-       case 0:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_0();
-         break;
-       case 1:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_1();
-         break;
-       case 2:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_2();
-         break;
-     }
-     if (jjmatchedKind != 0x7fffffff)
-     {
-        if (jjmatchedPos + 1 < curPos)
-           input_stream.backup(curPos - jjmatchedPos - 1);
-        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           matchedToken = jjFillToken();
-           matchedToken.specialToken = specialToken;
-       if (jjnewLexState[jjmatchedKind] != -1)
-         curLexState = jjnewLexState[jjmatchedKind];
-           return matchedToken;
-        }
-        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-           {
-              matchedToken = jjFillToken();
-              if (specialToken == null)
-                 specialToken = matchedToken;
-              else
-              {
-                 matchedToken.specialToken = specialToken;
-                 specialToken = (specialToken.next = matchedToken);
-              }
-           }
-         if (jjnewLexState[jjmatchedKind] != -1)
-           curLexState = jjnewLexState[jjmatchedKind];
-           continue EOFLoop;
-        }
-        MoreLexicalActions();
-      if (jjnewLexState[jjmatchedKind] != -1)
-        curLexState = jjnewLexState[jjmatchedKind];
-        curPos = 0;
-        jjmatchedKind = 0x7fffffff;
-        try {
-           curChar = input_stream.readChar();
-           continue;
-        }
-        catch (java.io.IOException e1) { }
-     }
-     int error_line = input_stream.getEndLine();
-     int error_column = input_stream.getEndColumn();
-     String error_after = null;
-     boolean EOFSeen = false;
-     try { input_stream.readChar(); input_stream.backup(1); }
-     catch (java.io.IOException e1) {
-        EOFSeen = true;
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-        if (curChar == '\n' || curChar == '\r') {
-           error_line++;
-           error_column = 0;
-        }
-        else
-           error_column++;
-     }
-     if (!EOFSeen) {
-        input_stream.backup(1);
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-     }
-     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-   }
-  }
-}
-
-void MoreLexicalActions()
-{
-   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
-   switch(jjmatchedKind)
-   {
-      case 39 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 40 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              commentNest = 1;
-         break;
-      case 42 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 43 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              ++commentNest;
-         break;
-      case 44 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
-         break;
-      default : 
-         break;
-   }
-}
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/parser/ParseException.java b/apache/org/apache/james/mime4j/field/datetime/parser/ParseException.java
deleted file mode 100644
index 13b3ff0..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/parser/ParseException.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.  The boolean
-   * flag "specialConstructor" is also set to true to indicate that
-   * this constructor was used to create this object.
-   * This constructor calls its super class with the empty string
-   * to force the "toString" method of parent class "Throwable" to
-   * print the error message in the form:
-   *     ParseException: <result of getMessage>
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super("");
-    specialConstructor = true;
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-    specialConstructor = false;
-  }
-
-  public ParseException(String message) {
-    super(message);
-    specialConstructor = false;
-  }
-
-  /**
-   * This variable determines which constructor was used to create
-   * this object and thereby affects the semantics of the
-   * "getMessage" method (see below).
-   */
-  protected boolean specialConstructor;
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * This method has the standard behavior when this object has been
-   * created using the standard constructors.  Otherwise, it uses
-   * "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser), then this method is called during the printing
-   * of the final stack trace, and hence the correct error message
-   * gets displayed.
-   */
-  public String getMessage() {
-    if (!specialConstructor) {
-      return super.getMessage();
-    }
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += add_escapes(tok.image);
-      tok = tok.next; 
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
- 
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java b/apache/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java
deleted file mode 100644
index 2724529..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public class SimpleCharStream
-{
-  public static final boolean staticFlag = false;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  public int bufpos = -1;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
-
-     try
-     {
-        if (wrapAround)
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           System.arraycopy(buffer, 0, newbuffer,
-                                             bufsize - tokenBegin, bufpos);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-        }
-        else
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos -= tokenBegin);
-        }
-     }
-     catch (Throwable t)
-     {
-        throw new Error(t.getMessage());
-     }
-
-
-     bufsize += 2048;
-     available = bufsize;
-     tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-     if (maxNextCharInd == available)
-     {
-        if (available == bufsize)
-        {
-           if (tokenBegin > 2048)
-           {
-              bufpos = maxNextCharInd = 0;
-              available = tokenBegin;
-           }
-           else if (tokenBegin < 0)
-              bufpos = maxNextCharInd = 0;
-           else
-              ExpandBuff(false);
-        }
-        else if (available > tokenBegin)
-           available = bufsize;
-        else if ((tokenBegin - available) < 2048)
-           ExpandBuff(true);
-        else
-           available = tokenBegin;
-     }
-
-     int i;
-     try {
-        if ((i = inputStream.read(buffer, maxNextCharInd,
-                                    available - maxNextCharInd)) == -1)
-        {
-           inputStream.close();
-           throw new java.io.IOException();
-        }
-        else
-           maxNextCharInd += i;
-        return;
-     }
-     catch(java.io.IOException e) {
-        --bufpos;
-        backup(0);
-        if (tokenBegin == -1)
-           tokenBegin = bufpos;
-        throw e;
-     }
-  }
-
-  public char BeginToken() throws java.io.IOException
-  {
-     tokenBegin = -1;
-     char c = readChar();
-     tokenBegin = bufpos;
-
-     return c;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-     column++;
-
-     if (prevCharIsLF)
-     {
-        prevCharIsLF = false;
-        line += (column = 1);
-     }
-     else if (prevCharIsCR)
-     {
-        prevCharIsCR = false;
-        if (c == '\n')
-        {
-           prevCharIsLF = true;
-        }
-        else
-           line += (column = 1);
-     }
-
-     switch (c)
-     {
-        case '\r' :
-           prevCharIsCR = true;
-           break;
-        case '\n' :
-           prevCharIsLF = true;
-           break;
-        case '\t' :
-           column--;
-           column += (tabSize - (column % tabSize));
-           break;
-        default :
-           break;
-     }
-
-     bufline[bufpos] = line;
-     bufcolumn[bufpos] = column;
-  }
-
-  public char readChar() throws java.io.IOException
-  {
-     if (inBuf > 0)
-     {
-        --inBuf;
-
-        if (++bufpos == bufsize)
-           bufpos = 0;
-
-        return buffer[bufpos];
-     }
-
-     if (++bufpos >= maxNextCharInd)
-        FillBuff();
-
-     char c = buffer[bufpos];
-
-     UpdateLineColumn(c);
-     return (c);
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndColumn
-   */
-  @Deprecated
-  public int getColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndLine
-   */
-  @Deprecated
-  public int getLine() {
-     return bufline[bufpos];
-  }
-
-  public int getEndColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  public int getEndLine() {
-     return bufline[bufpos];
-  }
-
-  public int getBeginColumn() {
-     return bufcolumn[tokenBegin];
-  }
-
-  public int getBeginLine() {
-     return bufline[tokenBegin];
-  }
-
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-       bufpos += bufsize;
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.Reader dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    bufpos = -1;
-  }
-
-  public void ReInit(java.io.Reader dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, 1, 1, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public String GetImage()
-  {
-     if (bufpos >= tokenBegin)
-        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-     else
-        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
-  public void Done()
-  {
-     buffer = null;
-     bufline = null;
-     bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/parser/Token.java b/apache/org/apache/james/mime4j/field/datetime/parser/Token.java
deleted file mode 100644
index 0927a09..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/parser/Token.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token {
-
-  /**
-   * An integer that describes the kind of this token.  This numbering
-   * system is determined by JavaCCParser, and a table of these numbers is
-   * stored in the file ...Constants.java.
-   */
-  public int kind;
-
-  /**
-   * beginLine and beginColumn describe the position of the first character
-   * of this token; endLine and endColumn describe the position of the
-   * last character of this token.
-   */
-  public int beginLine, beginColumn, endLine, endColumn;
-
-  /**
-   * The string image of the token.
-   */
-  public String image;
-
-  /**
-   * A reference to the next regular (non-special) token from the input
-   * stream.  If this is the last token from the input stream, or if the
-   * token manager has not read tokens beyond this one, this field is
-   * set to null.  This is true only if this token is also a regular
-   * token.  Otherwise, see below for a description of the contents of
-   * this field.
-   */
-  public Token next;
-
-  /**
-   * This field is used to access special tokens that occur prior to this
-   * token, but after the immediately preceding regular (non-special) token.
-   * If there are no such special tokens, this field is set to null.
-   * When there are more than one such special token, this field refers
-   * to the last of these special tokens, which in turn refers to the next
-   * previous special token through its specialToken field, and so on
-   * until the first special token (whose specialToken field is null).
-   * The next fields of special tokens refer to other special tokens that
-   * immediately follow it (without an intervening regular token).  If there
-   * is no such token, this field is null.
-   */
-  public Token specialToken;
-
-  /**
-   * Returns the image.
-   */
-  public String toString()
-  {
-     return image;
-  }
-
-  /**
-   * Returns a new Token object, by default. However, if you want, you
-   * can create and return subclass objects based on the value of ofKind.
-   * Simply add the cases to the switch for all those special cases.
-   * For example, if you have a subclass of Token called IDToken that
-   * you want to create if ofKind is ID, simlpy add something like :
-   *
-   *    case MyParserConstants.ID : return new IDToken();
-   *
-   * to the following switch statement. Then you can cast matchedToken
-   * variable to the appropriate type and use it in your lexical actions.
-   */
-  public static final Token newToken(int ofKind)
-  {
-     switch(ofKind)
-     {
-       default : return new Token();
-     }
-  }
-
-}
diff --git a/apache/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java b/apache/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java
deleted file mode 100644
index e7043c1..0000000
--- a/apache/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
-
-public class TokenMgrError extends Error
-{
-   /*
-    * Ordinals for various reasons why an Error of this type can be thrown.
-    */
-
-   /**
-    * Lexical error occured.
-    */
-   static final int LEXICAL_ERROR = 0;
-
-   /**
-    * An attempt wass made to create a second instance of a static token manager.
-    */
-   static final int STATIC_LEXER_ERROR = 1;
-
-   /**
-    * Tried to change to an invalid lexical state.
-    */
-   static final int INVALID_LEXICAL_STATE = 2;
-
-   /**
-    * Detected (and bailed out of) an infinite loop in the token manager.
-    */
-   static final int LOOP_DETECTED = 3;
-
-   /**
-    * Indicates the reason why the exception is thrown. It will have
-    * one of the above 4 values.
-    */
-   int errorCode;
-
-   /**
-    * Replaces unprintable characters by their espaced (or unicode escaped)
-    * equivalents in the given string
-    */
-   protected static final String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-   /**
-    * Returns a detailed message for the Error when it is thrown by the
-    * token manager to indicate a lexical error.
-    * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
-    * Note: You can customize the lexical error message by modifying this method.
-    */
-   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-      return("Lexical error at line " +
-           errorLine + ", column " +
-           errorColumn + ".  Encountered: " +
-           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-           "after : \"" + addEscapes(errorAfter) + "\"");
-   }
-
-   /**
-    * You can also modify the body of this method to customize your error messages.
-    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-    * of end-users concern, so you can return something like : 
-    *
-    *     "Internal Error : Please file a bug report .... "
-    *
-    * from this method for such cases in the release version of your parser.
-    */
-   public String getMessage() {
-      return super.getMessage();
-   }
-
-   /*
-    * Constructors of various flavors follow.
-    */
-
-   public TokenMgrError() {
-   }
-
-   public TokenMgrError(String message, int reason) {
-      super(message);
-      errorCode = reason;
-   }
-
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-   }
-}
diff --git a/apache/org/apache/james/mime4j/util/CharsetUtil.java b/apache/org/apache/james/mime4j/util/CharsetUtil.java
deleted file mode 100644
index 4e712fc..0000000
--- a/apache/org/apache/james/mime4j/util/CharsetUtil.java
+++ /dev/null
@@ -1,1249 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you 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 org.apache.james.mime4j.util;
-
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.IllegalCharsetNameException;
-import java.nio.charset.UnsupportedCharsetException;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.TreeSet;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-
-/**
- * Utility class for working with character sets. It is somewhat similar to
- * the Java 1.4 <code>java.nio.charset.Charset</code> class but knows many
- * more aliases and is compatible with Java 1.3. It will use a simple detection
- * mechanism to detect what character sets the current VM supports. This will
- * be a sub-set of the character sets listed in the
- * <a href="http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html">
- * Java 1.5 (J2SE5.0) Supported Encodings</a> document.
- * <p>
- * The <a href="http://www.iana.org/assignments/character-sets">
- * IANA Character Sets</a> document has been used to determine the preferred
- * MIME character set names and to get a list of known aliases.
- * <p>
- * This is a complete list of the character sets known to this class:
- * <table>
- *     <tr>
- *         <td>Canonical (Java) name</td>
- *         <td>MIME preferred</td>
- *         <td>Aliases</td>
- *     </tr>
- *     <tr>
- *         <td>ASCII</td>
- *         <td>US-ASCII</td>
- *         <td>ANSI_X3.4-1968 iso-ir-6 ANSI_X3.4-1986 ISO_646.irv:1991 ISO646-US us IBM367 cp367 csASCII ascii7 646 iso_646.irv:1983 </td>
- *     </tr>
- *     <tr>
- *         <td>Big5</td>
- *         <td>Big5</td>
- *         <td>csBig5 CN-Big5 BIG-FIVE BIGFIVE </td>
- *     </tr>
- *     <tr>
- *         <td>Big5_HKSCS</td>
- *         <td>Big5-HKSCS</td>
- *         <td>big5hkscs </td>
- *     </tr>
- *     <tr>
- *         <td>Big5_Solaris</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp037</td>
- *         <td>IBM037</td>
- *         <td>ebcdic-cp-us ebcdic-cp-ca ebcdic-cp-wt ebcdic-cp-nl csIBM037 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1006</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1025</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1026</td>
- *         <td>IBM1026</td>
- *         <td>csIBM1026 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1046</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1047</td>
- *         <td>IBM1047</td>
- *         <td>IBM-1047 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1097</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1098</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1112</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1122</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1123</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1124</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1140</td>
- *         <td>IBM01140</td>
- *         <td>CCSID01140 CP01140 ebcdic-us-37+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1141</td>
- *         <td>IBM01141</td>
- *         <td>CCSID01141 CP01141 ebcdic-de-273+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1142</td>
- *         <td>IBM01142</td>
- *         <td>CCSID01142 CP01142 ebcdic-dk-277+euro ebcdic-no-277+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1143</td>
- *         <td>IBM01143</td>
- *         <td>CCSID01143 CP01143 ebcdic-fi-278+euro ebcdic-se-278+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1144</td>
- *         <td>IBM01144</td>
- *         <td>CCSID01144 CP01144 ebcdic-it-280+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1145</td>
- *         <td>IBM01145</td>
- *         <td>CCSID01145 CP01145 ebcdic-es-284+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1146</td>
- *         <td>IBM01146</td>
- *         <td>CCSID01146 CP01146 ebcdic-gb-285+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1147</td>
- *         <td>IBM01147</td>
- *         <td>CCSID01147 CP01147 ebcdic-fr-297+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1148</td>
- *         <td>IBM01148</td>
- *         <td>CCSID01148 CP01148 ebcdic-international-500+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1149</td>
- *         <td>IBM01149</td>
- *         <td>CCSID01149 CP01149 ebcdic-is-871+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1250</td>
- *         <td>windows-1250</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1251</td>
- *         <td>windows-1251</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1252</td>
- *         <td>windows-1252</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1253</td>
- *         <td>windows-1253</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1254</td>
- *         <td>windows-1254</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1255</td>
- *         <td>windows-1255</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1256</td>
- *         <td>windows-1256</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1257</td>
- *         <td>windows-1257</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1258</td>
- *         <td>windows-1258</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1381</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1383</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp273</td>
- *         <td>IBM273</td>
- *         <td>csIBM273 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp277</td>
- *         <td>IBM277</td>
- *         <td>EBCDIC-CP-DK EBCDIC-CP-NO csIBM277 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp278</td>
- *         <td>IBM278</td>
- *         <td>CP278 ebcdic-cp-fi ebcdic-cp-se csIBM278 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp280</td>
- *         <td>IBM280</td>
- *         <td>ebcdic-cp-it csIBM280 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp284</td>
- *         <td>IBM284</td>
- *         <td>ebcdic-cp-es csIBM284 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp285</td>
- *         <td>IBM285</td>
- *         <td>ebcdic-cp-gb csIBM285 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp297</td>
- *         <td>IBM297</td>
- *         <td>ebcdic-cp-fr csIBM297 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp33722</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp420</td>
- *         <td>IBM420</td>
- *         <td>ebcdic-cp-ar1 csIBM420 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp424</td>
- *         <td>IBM424</td>
- *         <td>ebcdic-cp-he csIBM424 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp437</td>
- *         <td>IBM437</td>
- *         <td>437 csPC8CodePage437 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp500</td>
- *         <td>IBM500</td>
- *         <td>ebcdic-cp-be ebcdic-cp-ch csIBM500 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp737</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp775</td>
- *         <td>IBM775</td>
- *         <td>csPC775Baltic </td>
- *     </tr>
- *     <tr>
- *         <td>Cp838</td>
- *         <td>IBM-Thai</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp850</td>
- *         <td>IBM850</td>
- *         <td>850 csPC850Multilingual </td>
- *     </tr>
- *     <tr>
- *         <td>Cp852</td>
- *         <td>IBM852</td>
- *         <td>852 csPCp852 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp855</td>
- *         <td>IBM855</td>
- *         <td>855 csIBM855 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp856</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp857</td>
- *         <td>IBM857</td>
- *         <td>857 csIBM857 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp858</td>
- *         <td>IBM00858</td>
- *         <td>CCSID00858 CP00858 PC-Multilingual-850+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp860</td>
- *         <td>IBM860</td>
- *         <td>860 csIBM860 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp861</td>
- *         <td>IBM861</td>
- *         <td>861 cp-is csIBM861 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp862</td>
- *         <td>IBM862</td>
- *         <td>862 csPC862LatinHebrew </td>
- *     </tr>
- *     <tr>
- *         <td>Cp863</td>
- *         <td>IBM863</td>
- *         <td>863 csIBM863 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp864</td>
- *         <td>IBM864</td>
- *         <td>cp864 csIBM864 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp865</td>
- *         <td>IBM865</td>
- *         <td>865 csIBM865 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp866</td>
- *         <td>IBM866</td>
- *         <td>866 csIBM866 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp868</td>
- *         <td>IBM868</td>
- *         <td>cp-ar csIBM868 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp869</td>
- *         <td>IBM869</td>
- *         <td>cp-gr csIBM869 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp870</td>
- *         <td>IBM870</td>
- *         <td>ebcdic-cp-roece ebcdic-cp-yu csIBM870 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp871</td>
- *         <td>IBM871</td>
- *         <td>ebcdic-cp-is csIBM871 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp875</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp918</td>
- *         <td>IBM918</td>
- *         <td>ebcdic-cp-ar2 csIBM918 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp921</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp922</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp930</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp933</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp935</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp937</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp939</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp942</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp942C</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp943</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp943C</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp948</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp949</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp949C</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp950</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp964</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp970</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>EUC_CN</td>
- *         <td>GB2312</td>
- *         <td>x-EUC-CN csGB2312 euccn euc-cn gb2312-80 gb2312-1980 CN-GB CN-GB-ISOIR165 </td>
- *     </tr>
- *     <tr>
- *         <td>EUC_JP</td>
- *         <td>EUC-JP</td>
- *         <td>csEUCPkdFmtJapanese Extended_UNIX_Code_Packed_Format_for_Japanese eucjis x-eucjp eucjp x-euc-jp </td>
- *     </tr>
- *     <tr>
- *         <td>EUC_JP_LINUX</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>EUC_JP_Solaris</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>EUC_KR</td>
- *         <td>EUC-KR</td>
- *         <td>csEUCKR ksc5601 5601 ksc5601_1987 ksc_5601 ksc5601-1987 ks_c_5601-1987 euckr </td>
- *     </tr>
- *     <tr>
- *         <td>EUC_TW</td>
- *         <td>EUC-TW</td>
- *         <td>x-EUC-TW cns11643 euctw </td>
- *     </tr>
- *     <tr>
- *         <td>GB18030</td>
- *         <td>GB18030</td>
- *         <td>gb18030-2000 </td>
- *     </tr>
- *     <tr>
- *         <td>GBK</td>
- *         <td>windows-936</td>
- *         <td>CP936 MS936 ms_936 x-mswin-936 </td>
- *     </tr>
- *     <tr>
- *         <td>ISCII91</td>
- *         <td>?</td>
- *         <td>x-ISCII91 iscii </td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022CN</td>
- *         <td>ISO-2022-CN</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022JP</td>
- *         <td>ISO-2022-JP</td>
- *         <td>csISO2022JP JIS jis_encoding csjisencoding </td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022KR</td>
- *         <td>ISO-2022-KR</td>
- *         <td>csISO2022KR </td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022_CN_CNS</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022_CN_GB</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_1</td>
- *         <td>ISO-8859-1</td>
- *         <td>ISO_8859-1:1987 iso-ir-100 ISO_8859-1 latin1 l1 IBM819 CP819 csISOLatin1 8859_1 819 IBM-819 ISO8859-1 ISO_8859_1 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_13</td>
- *         <td>ISO-8859-13</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_15</td>
- *         <td>ISO-8859-15</td>
- *         <td>ISO_8859-15 Latin-9 8859_15 csISOlatin9 IBM923 cp923 923 L9 IBM-923 ISO8859-15 LATIN9 LATIN0 csISOlatin0 ISO8859_15_FDIS </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_2</td>
- *         <td>ISO-8859-2</td>
- *         <td>ISO_8859-2:1987 iso-ir-101 ISO_8859-2 latin2 l2 csISOLatin2 8859_2 iso8859_2 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_3</td>
- *         <td>ISO-8859-3</td>
- *         <td>ISO_8859-3:1988 iso-ir-109 ISO_8859-3 latin3 l3 csISOLatin3 8859_3 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_4</td>
- *         <td>ISO-8859-4</td>
- *         <td>ISO_8859-4:1988 iso-ir-110 ISO_8859-4 latin4 l4 csISOLatin4 8859_4 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_5</td>
- *         <td>ISO-8859-5</td>
- *         <td>ISO_8859-5:1988 iso-ir-144 ISO_8859-5 cyrillic csISOLatinCyrillic 8859_5 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_6</td>
- *         <td>ISO-8859-6</td>
- *         <td>ISO_8859-6:1987 iso-ir-127 ISO_8859-6 ECMA-114 ASMO-708 arabic csISOLatinArabic 8859_6 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_7</td>
- *         <td>ISO-8859-7</td>
- *         <td>ISO_8859-7:1987 iso-ir-126 ISO_8859-7 ELOT_928 ECMA-118 greek greek8 csISOLatinGreek 8859_7 sun_eu_greek </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_8</td>
- *         <td>ISO-8859-8</td>
- *         <td>ISO_8859-8:1988 iso-ir-138 ISO_8859-8 hebrew csISOLatinHebrew 8859_8 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_9</td>
- *         <td>ISO-8859-9</td>
- *         <td>ISO_8859-9:1989 iso-ir-148 ISO_8859-9 latin5 l5 csISOLatin5 8859_9 </td>
- *     </tr>
- *     <tr>
- *         <td>JISAutoDetect</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>JIS_C6626-1983</td>
- *         <td>JIS_C6626-1983</td>
- *         <td>x-JIS0208 JIS0208 csISO87JISX0208 x0208 JIS_X0208-1983 iso-ir-87 </td>
- *     </tr>
- *     <tr>
- *         <td>JIS_X0201</td>
- *         <td>JIS_X0201</td>
- *         <td>X0201 JIS0201 csHalfWidthKatakana </td>
- *     </tr>
- *     <tr>
- *         <td>JIS_X0212-1990</td>
- *         <td>JIS_X0212-1990</td>
- *         <td>iso-ir-159 x0212 JIS0212 csISO159JISX02121990 </td>
- *     </tr>
- *     <tr>
- *         <td>KOI8_R</td>
- *         <td>KOI8-R</td>
- *         <td>csKOI8R koi8 </td>
- *     </tr>
- *     <tr>
- *         <td>MS874</td>
- *         <td>windows-874</td>
- *         <td>cp874 </td>
- *     </tr>
- *     <tr>
- *         <td>MS932</td>
- *         <td>Windows-31J</td>
- *         <td>windows-932 csWindows31J x-ms-cp932 </td>
- *     </tr>
- *     <tr>
- *         <td>MS949</td>
- *         <td>windows-949</td>
- *         <td>windows949 ms_949 x-windows-949 </td>
- *     </tr>
- *     <tr>
- *         <td>MS950</td>
- *         <td>windows-950</td>
- *         <td>x-windows-950 </td>
- *     </tr>
- *     <tr>
- *         <td>MS950_HKSCS</td>
- *         <td></td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacArabic</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacCentralEurope</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacCroatian</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacCyrillic</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacDingbat</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacGreek</td>
- *         <td>MacGreek</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacHebrew</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacIceland</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacRoman</td>
- *         <td>MacRoman</td>
- *         <td>Macintosh MAC csMacintosh </td>
- *     </tr>
- *     <tr>
- *         <td>MacRomania</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacSymbol</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacThai</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacTurkish</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacUkraine</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>SJIS</td>
- *         <td>Shift_JIS</td>
- *         <td>MS_Kanji csShiftJIS shift-jis x-sjis pck </td>
- *     </tr>
- *     <tr>
- *         <td>TIS620</td>
- *         <td>TIS-620</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UTF-16</td>
- *         <td>UTF-16</td>
- *         <td>UTF_16 </td>
- *     </tr>
- *     <tr>
- *         <td>UTF8</td>
- *         <td>UTF-8</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeBig</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeBigUnmarked</td>
- *         <td>UTF-16BE</td>
- *         <td>X-UTF-16BE UTF_16BE ISO-10646-UCS-2 </td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeLittle</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeLittleUnmarked</td>
- *         <td>UTF-16LE</td>
- *         <td>UTF_16LE X-UTF-16LE </td>
- *     </tr>
- *     <tr>
- *         <td>x-Johab</td>
- *         <td>johab</td>
- *         <td>johab cp1361 ms1361 ksc5601-1992 ksc5601_1992 </td>
- *     </tr>
- *     <tr>
- *         <td>x-iso-8859-11</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- * </table>
- *
- *
- * @version $Id: CharsetUtil.java,v 1.1 2004/10/25 07:26:46 ntherning Exp $
- */
-public class CharsetUtil {
-    private static Log log = LogFactory.getLog(CharsetUtil.class);
-
-    private static class Charset implements Comparable<Charset> {
-        private String canonical = null;
-        private String mime = null;
-        private String[] aliases = null;
-
-        private Charset(String canonical, String mime, String[] aliases) {
-            this.canonical = canonical;
-            this.mime = mime;
-            this.aliases = aliases;
-        }
-
-        public int compareTo(Charset c) {
-            return this.canonical.compareTo(c.canonical);
-        }
-    }
-
-    private static Charset[] JAVA_CHARSETS = {
-        new Charset("ISO8859_1", "ISO-8859-1",
-                    new String[] {"ISO_8859-1:1987", "iso-ir-100", "ISO_8859-1",
-                                  "latin1", "l1", "IBM819", "CP819",
-                                  "csISOLatin1", "8859_1", "819", "IBM-819",
-                                  "ISO8859-1", "ISO_8859_1"}),
-        new Charset("ISO8859_2", "ISO-8859-2",
-                    new String[] {"ISO_8859-2:1987", "iso-ir-101", "ISO_8859-2",
-                                  "latin2", "l2", "csISOLatin2", "8859_2",
-                                  "iso8859_2"}),
-        new Charset("ISO8859_3", "ISO-8859-3", new String[] {"ISO_8859-3:1988", "iso-ir-109", "ISO_8859-3", "latin3", "l3", "csISOLatin3", "8859_3"}),
-        new Charset("ISO8859_4", "ISO-8859-4",
-                    new String[] {"ISO_8859-4:1988", "iso-ir-110", "ISO_8859-4",
-                                  "latin4", "l4", "csISOLatin4", "8859_4"}),
-        new Charset("ISO8859_5", "ISO-8859-5",
-                    new String[] {"ISO_8859-5:1988", "iso-ir-144", "ISO_8859-5",
-                                  "cyrillic", "csISOLatinCyrillic", "8859_5"}),
-        new Charset("ISO8859_6", "ISO-8859-6", new String[] {"ISO_8859-6:1987", "iso-ir-127", "ISO_8859-6", "ECMA-114", "ASMO-708", "arabic", "csISOLatinArabic", "8859_6"}),
-        new Charset("ISO8859_7", "ISO-8859-7",
-                    new String[] {"ISO_8859-7:1987", "iso-ir-126", "ISO_8859-7",
-                                  "ELOT_928", "ECMA-118", "greek", "greek8",
-                                  "csISOLatinGreek", "8859_7", "sun_eu_greek"}),
-        new Charset("ISO8859_8", "ISO-8859-8", new String[] {"ISO_8859-8:1988", "iso-ir-138", "ISO_8859-8", "hebrew", "csISOLatinHebrew", "8859_8"}),
-        new Charset("ISO8859_9", "ISO-8859-9",
-                    new String[] {"ISO_8859-9:1989", "iso-ir-148", "ISO_8859-9",
-                                  "latin5", "l5", "csISOLatin5", "8859_9"}),
-
-        new Charset("ISO8859_13", "ISO-8859-13", new String[] {}),
-        new Charset("ISO8859_15", "ISO-8859-15",
-                    new String[] {"ISO_8859-15", "Latin-9", "8859_15",
-                                  "csISOlatin9", "IBM923", "cp923", "923", "L9",
-                                  "IBM-923", "ISO8859-15", "LATIN9", "LATIN0",
-                                  "csISOlatin0", "ISO8859_15_FDIS"}),
-        new Charset("KOI8_R", "KOI8-R", new String[] {"csKOI8R", "koi8"}),
-        new Charset("ASCII", "US-ASCII",
-                    new String[] {"ANSI_X3.4-1968", "iso-ir-6",
-                                  "ANSI_X3.4-1986", "ISO_646.irv:1991",
-                                  "ISO646-US", "us", "IBM367", "cp367",
-                                  "csASCII", "ascii7", "646", "iso_646.irv:1983"}),
-        new Charset("UTF8", "UTF-8", new String[] {}),
-        new Charset("UTF-16", "UTF-16", new String[] {"UTF_16"}),
-        new Charset("UnicodeBigUnmarked", "UTF-16BE", new String[] {"X-UTF-16BE", "UTF_16BE", "ISO-10646-UCS-2"}),
-        new Charset("UnicodeLittleUnmarked", "UTF-16LE", new String[] {"UTF_16LE", "X-UTF-16LE"}),
-        new Charset("Big5", "Big5", new String[] {"csBig5", "CN-Big5", "BIG-FIVE", "BIGFIVE"}),
-        new Charset("Big5_HKSCS", "Big5-HKSCS", new String[] {"big5hkscs"}),
-        new Charset("EUC_JP", "EUC-JP",
-                    new String[] {"csEUCPkdFmtJapanese",
-                              "Extended_UNIX_Code_Packed_Format_for_Japanese",
-                              "eucjis", "x-eucjp", "eucjp", "x-euc-jp"}),
-        new Charset("EUC_KR", "EUC-KR",
-                    new String[] {"csEUCKR", "ksc5601", "5601", "ksc5601_1987",
-                                  "ksc_5601", "ksc5601-1987", "ks_c_5601-1987",
-                                  "euckr"}),
-        new Charset("GB18030", "GB18030", new String[] {"gb18030-2000"}),
-        new Charset("EUC_CN", "GB2312", new String[] {"x-EUC-CN", "csGB2312", "euccn", "euc-cn", "gb2312-80", "gb2312-1980", "CN-GB", "CN-GB-ISOIR165"}),
-        new Charset("GBK", "windows-936", new String[] {"CP936", "MS936", "ms_936", "x-mswin-936"}),
-
-        new Charset("Cp037", "IBM037", new String[] {"ebcdic-cp-us", "ebcdic-cp-ca", "ebcdic-cp-wt", "ebcdic-cp-nl", "csIBM037"}),
-        new Charset("Cp273", "IBM273", new String[] {"csIBM273"}),
-        new Charset("Cp277", "IBM277", new String[] {"EBCDIC-CP-DK", "EBCDIC-CP-NO", "csIBM277"}),
-        new Charset("Cp278", "IBM278", new String[] {"CP278", "ebcdic-cp-fi", "ebcdic-cp-se", "csIBM278"}),
-        new Charset("Cp280", "IBM280", new String[] {"ebcdic-cp-it", "csIBM280"}),
-        new Charset("Cp284", "IBM284", new String[] {"ebcdic-cp-es", "csIBM284"}),
-        new Charset("Cp285", "IBM285", new String[] {"ebcdic-cp-gb", "csIBM285"}),
-        new Charset("Cp297", "IBM297", new String[] {"ebcdic-cp-fr", "csIBM297"}),
-        new Charset("Cp420", "IBM420", new String[] {"ebcdic-cp-ar1", "csIBM420"}),
-        new Charset("Cp424", "IBM424", new String[] {"ebcdic-cp-he", "csIBM424"}),
-        new Charset("Cp437", "IBM437", new String[] {"437", "csPC8CodePage437"}),
-        new Charset("Cp500", "IBM500", new String[] {"ebcdic-cp-be", "ebcdic-cp-ch", "csIBM500"}),
-        new Charset("Cp775", "IBM775", new String[] {"csPC775Baltic"}),
-        new Charset("Cp838", "IBM-Thai", new String[] {}),
-        new Charset("Cp850", "IBM850", new String[] {"850", "csPC850Multilingual"}),
-        new Charset("Cp852", "IBM852", new String[] {"852", "csPCp852"}),
-        new Charset("Cp855", "IBM855", new String[] {"855", "csIBM855"}),
-        new Charset("Cp857", "IBM857", new String[] {"857", "csIBM857"}),
-        new Charset("Cp858", "IBM00858",
-                new String[] {"CCSID00858", "CP00858",
-                              "PC-Multilingual-850+euro"}),
-        new Charset("Cp860", "IBM860", new String[] {"860", "csIBM860"}),
-        new Charset("Cp861", "IBM861", new String[] {"861", "cp-is", "csIBM861"}),
-        new Charset("Cp862", "IBM862", new String[] {"862", "csPC862LatinHebrew"}),
-        new Charset("Cp863", "IBM863", new String[] {"863", "csIBM863"}),
-        new Charset("Cp864", "IBM864", new String[] {"cp864", "csIBM864"}),
-        new Charset("Cp865", "IBM865", new String[] {"865", "csIBM865"}),
-        new Charset("Cp866", "IBM866", new String[] {"866", "csIBM866"}),
-        new Charset("Cp868", "IBM868", new String[] {"cp-ar", "csIBM868"}),
-        new Charset("Cp869", "IBM869", new String[] {"cp-gr", "csIBM869"}),
-        new Charset("Cp870", "IBM870", new String[] {"ebcdic-cp-roece", "ebcdic-cp-yu", "csIBM870"}),
-        new Charset("Cp871", "IBM871", new String[] {"ebcdic-cp-is", "csIBM871"}),
-        new Charset("Cp918", "IBM918", new String[] {"ebcdic-cp-ar2", "csIBM918"}),
-        new Charset("Cp1026", "IBM1026", new String[] {"csIBM1026"}),
-        new Charset("Cp1047", "IBM1047", new String[] {"IBM-1047"}),
-        new Charset("Cp1140", "IBM01140",
-                    new String[] {"CCSID01140", "CP01140",
-                                  "ebcdic-us-37+euro"}),
-        new Charset("Cp1141", "IBM01141",
-                    new String[] {"CCSID01141", "CP01141",
-                                  "ebcdic-de-273+euro"}),
-        new Charset("Cp1142", "IBM01142", new String[] {"CCSID01142", "CP01142", "ebcdic-dk-277+euro", "ebcdic-no-277+euro"}),
-        new Charset("Cp1143", "IBM01143", new String[] {"CCSID01143", "CP01143", "ebcdic-fi-278+euro", "ebcdic-se-278+euro"}),
-        new Charset("Cp1144", "IBM01144", new String[] {"CCSID01144", "CP01144", "ebcdic-it-280+euro"}),
-        new Charset("Cp1145", "IBM01145", new String[] {"CCSID01145", "CP01145", "ebcdic-es-284+euro"}),
-        new Charset("Cp1146", "IBM01146", new String[] {"CCSID01146", "CP01146", "ebcdic-gb-285+euro"}),
-        new Charset("Cp1147", "IBM01147", new String[] {"CCSID01147", "CP01147", "ebcdic-fr-297+euro"}),
-        new Charset("Cp1148", "IBM01148", new String[] {"CCSID01148", "CP01148", "ebcdic-international-500+euro"}),
-        new Charset("Cp1149", "IBM01149", new String[] {"CCSID01149", "CP01149", "ebcdic-is-871+euro"}),
-        new Charset("Cp1250", "windows-1250", new String[] {}),
-        new Charset("Cp1251", "windows-1251", new String[] {}),
-        new Charset("Cp1252", "windows-1252", new String[] {}),
-        new Charset("Cp1253", "windows-1253", new String[] {}),
-        new Charset("Cp1254", "windows-1254", new String[] {}),
-        new Charset("Cp1255", "windows-1255", new String[] {}),
-        new Charset("Cp1256", "windows-1256", new String[] {}),
-        new Charset("Cp1257", "windows-1257", new String[] {}),
-        new Charset("Cp1258", "windows-1258", new String[] {}),
-        new Charset("ISO2022CN", "ISO-2022-CN", new String[] {}),
-        new Charset("ISO2022JP", "ISO-2022-JP", new String[] {"csISO2022JP", "JIS", "jis_encoding", "csjisencoding"}),
-        new Charset("ISO2022KR", "ISO-2022-KR", new String[] {"csISO2022KR"}),
-        new Charset("JIS_X0201", "JIS_X0201", new String[] {"X0201", "JIS0201", "csHalfWidthKatakana"}),
-        new Charset("JIS_X0212-1990", "JIS_X0212-1990", new String[] {"iso-ir-159", "x0212", "JIS0212", "csISO159JISX02121990"}),
-        new Charset("JIS_C6626-1983", "JIS_C6626-1983", new String[] {"x-JIS0208", "JIS0208", "csISO87JISX0208", "x0208", "JIS_X0208-1983", "iso-ir-87"}),
-        new Charset("SJIS", "Shift_JIS", new String[] {"MS_Kanji", "csShiftJIS", "shift-jis", "x-sjis", "pck"}),
-        new Charset("TIS620", "TIS-620", new String[] {}),
-        new Charset("MS932", "Windows-31J", new String[] {"windows-932", "csWindows31J", "x-ms-cp932"}),
-        new Charset("EUC_TW", "EUC-TW", new String[] {"x-EUC-TW", "cns11643", "euctw"}),
-        new Charset("x-Johab", "johab", new String[] {"johab", "cp1361", "ms1361", "ksc5601-1992", "ksc5601_1992"}),
-        new Charset("MS950_HKSCS", "", new String[] {}),
-        new Charset("MS874", "windows-874", new String[] {"cp874"}),
-        new Charset("MS949", "windows-949", new String[] {"windows949", "ms_949", "x-windows-949"}),
-        new Charset("MS950", "windows-950", new String[] {"x-windows-950"}),
-
-        new Charset("Cp737", null, new String[] {}),
-        new Charset("Cp856", null, new String[] {}),
-        new Charset("Cp875", null, new String[] {}),
-        new Charset("Cp921", null, new String[] {}),
-        new Charset("Cp922", null, new String[] {}),
-        new Charset("Cp930", null, new String[] {}),
-        new Charset("Cp933", null, new String[] {}),
-        new Charset("Cp935", null, new String[] {}),
-        new Charset("Cp937", null, new String[] {}),
-        new Charset("Cp939", null, new String[] {}),
-        new Charset("Cp942", null, new String[] {}),
-        new Charset("Cp942C", null, new String[] {}),
-        new Charset("Cp943", null, new String[] {}),
-        new Charset("Cp943C", null, new String[] {}),
-        new Charset("Cp948", null, new String[] {}),
-        new Charset("Cp949", null, new String[] {}),
-        new Charset("Cp949C", null, new String[] {}),
-        new Charset("Cp950", null, new String[] {}),
-        new Charset("Cp964", null, new String[] {}),
-        new Charset("Cp970", null, new String[] {}),
-        new Charset("Cp1006", null, new String[] {}),
-        new Charset("Cp1025", null, new String[] {}),
-        new Charset("Cp1046", null, new String[] {}),
-        new Charset("Cp1097", null, new String[] {}),
-        new Charset("Cp1098", null, new String[] {}),
-        new Charset("Cp1112", null, new String[] {}),
-        new Charset("Cp1122", null, new String[] {}),
-        new Charset("Cp1123", null, new String[] {}),
-        new Charset("Cp1124", null, new String[] {}),
-        new Charset("Cp1381", null, new String[] {}),
-        new Charset("Cp1383", null, new String[] {}),
-        new Charset("Cp33722", null, new String[] {}),
-        new Charset("Big5_Solaris", null, new String[] {}),
-        new Charset("EUC_JP_LINUX", null, new String[] {}),
-        new Charset("EUC_JP_Solaris", null, new String[] {}),
-        new Charset("ISCII91", null, new String[] {"x-ISCII91", "iscii"}),
-        new Charset("ISO2022_CN_CNS", null, new String[] {}),
-        new Charset("ISO2022_CN_GB", null, new String[] {}),
-        new Charset("x-iso-8859-11", null, new String[] {}),
-        new Charset("JISAutoDetect", null, new String[] {}),
-        new Charset("MacArabic", null, new String[] {}),
-        new Charset("MacCentralEurope", null, new String[] {}),
-        new Charset("MacCroatian", null, new String[] {}),
-        new Charset("MacCyrillic", null, new String[] {}),
-        new Charset("MacDingbat", null, new String[] {}),
-        new Charset("MacGreek", "MacGreek", new String[] {}),
-        new Charset("MacHebrew", null, new String[] {}),
-        new Charset("MacIceland", null, new String[] {}),
-        new Charset("MacRoman", "MacRoman", new String[] {"Macintosh", "MAC", "csMacintosh"}),
-        new Charset("MacRomania", null, new String[] {}),
-        new Charset("MacSymbol", null, new String[] {}),
-        new Charset("MacThai", null, new String[] {}),
-        new Charset("MacTurkish", null, new String[] {}),
-        new Charset("MacUkraine", null, new String[] {}),
-        new Charset("UnicodeBig", null, new String[] {}),
-        new Charset("UnicodeLittle", null, new String[] {})
-    };
-
-    /**
-     * Contains the canonical names of character sets which can be used to
-     * decode bytes into Java chars.
-     */
-    private static TreeSet<String> decodingSupported = null;
-
-    /**
-     * Contains the canonical names of character sets which can be used to
-     * encode Java chars into bytes.
-     */
-    private static TreeSet<String> encodingSupported = null;
-
-    /**
-     * Maps character set names to Charset objects. All possible names of
-     * a charset will be mapped to the Charset.
-     */
-    private static HashMap<String, Charset> charsetMap = null;
-
-    static {
-        decodingSupported = new TreeSet<String>();
-        encodingSupported = new TreeSet<String>();
-        byte[] dummy = new byte[] {'d', 'u', 'm', 'm', 'y'};
-        for (int i = 0; i < JAVA_CHARSETS.length; i++) {
-            try {
-                String s = new String(dummy, JAVA_CHARSETS[i].canonical);
-                decodingSupported.add(JAVA_CHARSETS[i].canonical.toLowerCase(Locale.US));
-            } catch (UnsupportedOperationException e) {
-            } catch (UnsupportedEncodingException e) {
-            }
-            try {
-                "dummy".getBytes(JAVA_CHARSETS[i].canonical);
-                encodingSupported.add(JAVA_CHARSETS[i].canonical.toLowerCase(Locale.US));
-            } catch (UnsupportedOperationException e) {
-            } catch (UnsupportedEncodingException e) {
-            }
-        }
-
-        charsetMap = new HashMap<String, Charset>();
-        for (int i = 0; i < JAVA_CHARSETS.length; i++) {
-            Charset c = JAVA_CHARSETS[i];
-            charsetMap.put(c.canonical.toLowerCase(Locale.US), c);
-            if (c.mime != null) {
-                charsetMap.put(c.mime.toLowerCase(Locale.US), c);
-            }
-            if (c.aliases != null) {
-                for (int j = 0; j < c.aliases.length; j++) {
-                    charsetMap.put(c.aliases[j].toLowerCase(Locale.US), c);
-                }
-            }
-        }
-
-        if (log.isDebugEnabled()) {
-            log.debug("Character sets which support decoding: "
-                        + decodingSupported);
-            log.debug("Character sets which support encoding: "
-                        + encodingSupported);
-        }
-    }
-
-    /**
-     * ANDROID:  THE FOLLOWING SET OF STATIC STRINGS ARE COPIED FROM A NEWER VERSION OF MIME4J
-     */
-
-    /** carriage return - line feed sequence */
-    public static final String CRLF = "\r\n";
-
-    /** US-ASCII CR, carriage return (13) */
-    public static final int CR = '\r';
-
-    /** US-ASCII LF, line feed (10) */
-    public static final int LF = '\n';
-
-    /** US-ASCII SP, space (32) */
-    public static final int SP = ' ';
-
-    /** US-ASCII HT, horizontal-tab (9)*/
-    public static final int HT = '\t';
-
-    public static final java.nio.charset.Charset US_ASCII = java.nio.charset.Charset
-            .forName("US-ASCII");
-
-    public static final java.nio.charset.Charset ISO_8859_1 = java.nio.charset.Charset
-            .forName("ISO-8859-1");
-
-    public static final java.nio.charset.Charset UTF_8 = java.nio.charset.Charset
-            .forName("UTF-8");
-
-    /**
-     * Returns <code>true</code> if the specified character is a whitespace
-     * character (CR, LF, SP or HT).
-     *
-     * ANDROID:  COPIED FROM A NEWER VERSION OF MIME4J
-     *
-     * @param ch
-     *            character to test.
-     * @return <code>true</code> if the specified character is a whitespace
-     *         character, <code>false</code> otherwise.
-     */
-    public static boolean isWhitespace(char ch) {
-        return ch == SP || ch == HT || ch == CR || ch == LF;
-    }
-
-    /**
-     * Returns <code>true</code> if the specified string consists entirely of
-     * whitespace characters.
-     *
-     * ANDROID:  COPIED FROM A NEWER VERSION OF MIME4J
-     *
-     * @param s
-     *            string to test.
-     * @return <code>true</code> if the specified string consists entirely of
-     *         whitespace characters, <code>false</code> otherwise.
-     */
-    public static boolean isWhitespace(final String s) {
-        if (s == null) {
-            throw new IllegalArgumentException("String may not be null");
-        }
-        final int len = s.length();
-        for (int i = 0; i < len; i++) {
-            if (!isWhitespace(s.charAt(i))) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Determines if the VM supports encoding (chars to bytes) the
-     * specified character set. NOTE: the given character set name may
-     * not be known to the VM even if this method returns <code>true</code>.
-     * Use {@link #toJavaCharset(String)} to get the canonical Java character
-     * set name.
-     *
-     * @param charsetName the characters set name.
-     * @return <code>true</code> if encoding is supported, <code>false</code>
-     *         otherwise.
-     */
-    public static boolean isEncodingSupported(String charsetName) {
-        return encodingSupported.contains(charsetName.toLowerCase(Locale.US));
-    }
-
-    /**
-     * Determines if the VM supports decoding (bytes to chars) the
-     * specified character set. NOTE: the given character set name may
-     * not be known to the VM even if this method returns <code>true</code>.
-     * Use {@link #toJavaCharset(String)} to get the canonical Java character
-     * set name.
-     *
-     * @param charsetName the characters set name.
-     * @return <code>true</code> if decoding is supported, <code>false</code>
-     *         otherwise.
-     */
-    public static boolean isDecodingSupported(String charsetName) {
-        return decodingSupported.contains(charsetName.toLowerCase(Locale.US));
-    }
-
-    /**
-     * Gets the preferred MIME character set name for the specified
-     * character set or <code>null</code> if not known.
-     *
-     * @param charsetName the character set name to look for.
-     * @return the MIME preferred name or <code>null</code> if not known.
-     */
-    public static String toMimeCharset(String charsetName) {
-        Charset c = charsetMap.get(charsetName.toLowerCase(Locale.US));
-        if (c != null) {
-            return c.mime;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the canonical Java character set name for the specified
-     * character set or <code>null</code> if not known. This should be
-     * called before doing any conversions using the Java API. NOTE:
-     * you must use {@link #isEncodingSupported(String)} or
-     * {@link #isDecodingSupported(String)} to make sure the returned
-     * Java character set is supported by the current VM.
-     *
-     * @param charsetName the character set name to look for.
-     * @return the canonical Java name or <code>null</code> if not known.
-     */
-    public static String toJavaCharset(String charsetName) {
-        Charset c = charsetMap.get(charsetName.toLowerCase(Locale.US));
-        if (c != null) {
-            return c.canonical;
-        }
-        return null;
-    }
-
-    public static java.nio.charset.Charset getCharset(String charsetName) {
-        String defaultCharset = "ISO-8859-1";
-
-        // Use the default chareset if given charset is null
-        if(charsetName == null) charsetName = defaultCharset;
-
-        try {
-            return java.nio.charset.Charset.forName(charsetName);
-        } catch (IllegalCharsetNameException e) {
-            log.info("Illegal charset " + charsetName + ", fallback to " +
-                    defaultCharset + ": " + e);
-            // Use default charset on exception
-            return java.nio.charset.Charset.forName(defaultCharset);
-        } catch (UnsupportedCharsetException ex) {
-            log.info("Unsupported charset " + charsetName + ", fallback to " +
-                    defaultCharset + ": " + ex);
-            // Use default charset on exception
-            return java.nio.charset.Charset.forName(defaultCharset);
-        }
-
-    }
-    /*
-     * Uncomment the code below and run the main method to regenerate the
-     * Javadoc table above when the known charsets change.
-     */
-
-    /*
-    private static String dumpHtmlTable() {
-        LinkedList l = new LinkedList(Arrays.asList(JAVA_CHARSETS));
-        Collections.sort(l);
-        StringBuffer sb = new StringBuffer();
-        sb.append(" * <table>\n");
-        sb.append(" *     <tr>\n");
-        sb.append(" *         <td>Canonical (Java) name</td>\n");
-        sb.append(" *         <td>MIME preferred</td>\n");
-        sb.append(" *         <td>Aliases</td>\n");
-        sb.append(" *     </tr>\n");
-
-        for (Iterator it = l.iterator(); it.hasNext();) {
-            Charset c = (Charset) it.next();
-            sb.append(" *     <tr>\n");
-            sb.append(" *         <td>" + c.canonical + "</td>\n");
-            sb.append(" *         <td>" + (c.mime == null ? "?" : c.mime)+ "</td>\n");
-            sb.append(" *         <td>");
-            for (int i = 0; c.aliases != null && i < c.aliases.length; i++) {
-                sb.append(c.aliases[i] + " ");
-            }
-            sb.append("</td>\n");
-            sb.append(" *     </tr>\n");
-        }
-        sb.append(" * </table>\n");
-        return sb.toString();
-    }
-
-    public static void main(String[] args) {
-        System.out.println(dumpHtmlTable());
-    }*/
-}
\ No newline at end of file
diff --git a/assets/quantum/res/drawable/quantum_ic_business_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_business_vd_theme_24.xml
new file mode 100644
index 0000000..5fc1cef
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_business_vd_theme_24.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M12,7L12,3L2,3v18h20L22,7L12,7zM6,19L4,19v-2h2v2zM6,15L4,15v-2h2v2zM6,11L4,11L4,9h2v2zM6,7L4,7L4,5h2v2zM10,19L8,19v-2h2v2zM10,15L8,15v-2h2v2zM10,11L8,11L8,9h2v2zM10,7L8,7L8,5h2v2zM20,19h-8v-2h2v-2h-2v-2h2v-2h-2L12,9h8v10zM18,11h-2v2h2v-2zM18,15h-2v2h2v-2z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_report_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_report_vd_theme_24.xml
new file mode 100644
index 0000000..d8544cb
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_report_vd_theme_24.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M15.73,3L8.27,3L3,8.27v7.46L8.27,21h7.46L21,15.73L21,8.27L15.73,3zM12,17.3c-0.72,0 -1.3,-0.58 -1.3,-1.3 0,-0.72 0.58,-1.3 1.3,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3zM13,13h-2L11,7h2v6z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_voicemail_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_voicemail_vd_theme_24.xml
new file mode 100644
index 0000000..d7e79d7
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_voicemail_vd_theme_24.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M18.5,6C15.46,6 13,8.46 13,11.5c0,1.33 0.47,2.55 1.26,3.5L9.74,15c0.79,-0.95 1.26,-2.17 1.26,-3.5C11,8.46 8.54,6 5.5,6S0,8.46 0,11.5 2.46,17 5.5,17h13c3.04,0 5.5,-2.46 5.5,-5.5S21.54,6 18.5,6zM5.5,15C3.57,15 2,13.43 2,11.5S3.57,8 5.5,8 9,9.57 9,11.5 7.43,15 5.5,15zM18.5,15c-1.93,0 -3.5,-1.57 -3.5,-3.5S16.57,8 18.5,8 22,9.57 22,11.5 20.43,15 18.5,15z"/>
+</vector>
diff --git a/java/com/android/contacts/common/ContactPhotoManager.java b/java/com/android/contacts/common/ContactPhotoManager.java
index 9e627ae..652e936 100644
--- a/java/com/android/contacts/common/ContactPhotoManager.java
+++ b/java/com/android/contacts/common/ContactPhotoManager.java
@@ -39,6 +39,7 @@
   /** Contact type constants used for default letter images */
   public static final int TYPE_PERSON = LetterTileDrawable.TYPE_PERSON;
 
+  public static final int TYPE_SPAM = LetterTileDrawable.TYPE_SPAM;
   public static final int TYPE_BUSINESS = LetterTileDrawable.TYPE_BUSINESS;
   public static final int TYPE_VOICEMAIL = LetterTileDrawable.TYPE_VOICEMAIL;
   public static final int TYPE_DEFAULT = LetterTileDrawable.TYPE_DEFAULT;
@@ -235,8 +236,13 @@
     loadThumbnail(view, photoId, darkTheme, isCircular, defaultImageRequest, DEFAULT_AVATAR);
   }
 
-  public final void loadDialerThumbnail(
-      QuickContactBadge badge, Uri contactUri, long photoId, String displayName, int contactType) {
+  public final void loadDialerThumbnailOrPhoto(
+      QuickContactBadge badge,
+      Uri contactUri,
+      long photoId,
+      Uri photoUri,
+      String displayName,
+      int contactType) {
     badge.assignContactUri(contactUri);
     badge.setOverlay(null);
 
@@ -244,8 +250,11 @@
     ContactPhotoManager.DefaultImageRequest request =
         new ContactPhotoManager.DefaultImageRequest(
             displayName, lookupKey, contactType, true /* isCircular */);
-    loadThumbnail(
-        badge, photoId, false /* darkTheme */, true /* isCircular */, request, DEFAULT_AVATAR);
+    if (photoId == 0 && photoUri != null) {
+      loadDirectoryPhoto(badge, photoUri, false /* darkTheme */, true /* isCircular */, request);
+    } else {
+      loadThumbnail(badge, photoId, false /* darkTheme */, true /* isCircular */, request);
+    }
   }
 
   /**
@@ -500,4 +509,3 @@
     }
   }
 }
-
diff --git a/java/com/android/contacts/common/dialog/CallSubjectDialog.java b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
index 5e0d6b5..117ac5e 100644
--- a/java/com/android/contacts/common/dialog/CallSubjectDialog.java
+++ b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
@@ -47,8 +47,8 @@
 import com.android.contacts.common.R;
 import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
 import com.android.dialer.animation.AnimUtils;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.nano.CallInitiationType;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.ViewUtil;
 import java.nio.charset.Charset;
@@ -65,7 +65,7 @@
   public static final String PREF_KEY_SUBJECT_HISTORY_ITEM = "subject_history_item";
   /** Activity intent argument bundle keys: */
   public static final String ARG_PHOTO_ID = "PHOTO_ID";
-
+  public static final String ARG_PHOTO_URI = "PHOTO_URI";
   public static final String ARG_CONTACT_URI = "CONTACT_URI";
   public static final String ARG_NAME_OR_NUMBER = "NAME_OR_NUMBER";
   public static final String ARG_NUMBER = "NUMBER";
@@ -134,6 +134,7 @@
       };
 
   private long mPhotoID;
+  private Uri mPhotoUri;
   private Uri mContactUri;
   private String mNameOrNumber;
   private String mNumber;
@@ -195,6 +196,7 @@
     start(
         activity,
         -1 /* photoId */,
+        null /* photoUri */,
         null /* contactUri */,
         number /* nameOrNumber */,
         number /* number */,
@@ -220,6 +222,7 @@
   public static void start(
       Activity activity,
       long photoId,
+      Uri photoUri,
       Uri contactUri,
       String nameOrNumber,
       String number,
@@ -229,6 +232,7 @@
       PhoneAccountHandle phoneAccountHandle) {
     Bundle arguments = new Bundle();
     arguments.putLong(ARG_PHOTO_ID, photoId);
+    arguments.putParcelable(ARG_PHOTO_URI, photoUri);
     arguments.putParcelable(ARG_CONTACT_URI, contactUri);
     arguments.putString(ARG_NAME_OR_NUMBER, nameOrNumber);
     arguments.putString(ARG_NUMBER, number);
@@ -320,7 +324,8 @@
   private void updateContactInfo() {
     if (mContactUri != null) {
       ContactPhotoManager.getInstance(this)
-          .loadDialerThumbnail(mContactPhoto, mContactUri, mPhotoID, mNameOrNumber, mContactType);
+          .loadDialerThumbnailOrPhoto(
+              mContactPhoto, mContactUri, mPhotoID, mPhotoUri, mNameOrNumber, mContactType);
     } else {
       mContactPhoto.setVisibility(View.GONE);
     }
@@ -343,6 +348,7 @@
       return;
     }
     mPhotoID = arguments.getLong(ARG_PHOTO_ID);
+    mPhotoUri = arguments.getParcelable(ARG_PHOTO_URI);
     mContactUri = arguments.getParcelable(ARG_CONTACT_URI);
     mNameOrNumber = arguments.getString(ARG_NAME_OR_NUMBER);
     mNumber = arguments.getString(ARG_NUMBER);
diff --git a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java b/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
index ca12f18..f8ea140 100644
--- a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
+++ b/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
@@ -20,7 +20,6 @@
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap.Config;
-import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.Outline;
@@ -49,7 +48,7 @@
    * #TYPE_BUSINESS}, and voicemail contacts should use {@link #TYPE_VOICEMAIL}.
    */
   @Retention(RetentionPolicy.SOURCE)
-  @IntDef({TYPE_PERSON, TYPE_BUSINESS, TYPE_VOICEMAIL, TYPE_GENERIC_AVATAR})
+  @IntDef({TYPE_PERSON, TYPE_BUSINESS, TYPE_VOICEMAIL, TYPE_GENERIC_AVATAR, TYPE_SPAM})
   public @interface ContactType {}
 
   /** Contact type constants */
@@ -61,6 +60,7 @@
    * situations where a contact is anonymous.
    */
   public static final int TYPE_GENERIC_AVATAR = 4;
+  public static final int TYPE_SPAM = 5;
   @ContactType public static final int TYPE_DEFAULT = TYPE_PERSON;
 
   /**
@@ -78,6 +78,10 @@
 
   /** 54% opacity */
   private static final int ALPHA = 138;
+  /** 100% opacity */
+  private static final int SPAM_ALPHA = 255;
+  /** Default icon scale for vector drawable. */
+  private static final float VECTOR_ICON_SCALE = 0.7f;
 
   /** Reusable components to avoid new allocations */
   private static final Paint sPaint = new Paint();
@@ -87,14 +91,16 @@
   /** Letter tile */
   private static TypedArray sColors;
 
+  private static int sSpamColor;
   private static int sDefaultColor;
   private static int sTileFontColor;
   private static float sLetterToTileRatio;
-  private static Bitmap sDefaultPersonAvatar;
-  private static Bitmap sDefaultBusinessAvatar;
-  private static Bitmap sDefaultVoicemailAvatar;
+  private static Drawable sDefaultPersonAvatar;
+  private static Drawable sDefaultBusinessAvatar;
+  private static Drawable sDefaultVoicemailAvatar;
+  private static Drawable sDefaultSpamAvatar;
   private final Paint mPaint;
-  private int mContactType = TYPE_DEFAULT;
+  @ContactType private int mContactType = TYPE_DEFAULT;
   private float mScale = 1.0f;
   private float mOffset = 0.0f;
   private boolean mIsCircle = false;
@@ -102,21 +108,20 @@
   private int mColor;
   private Character mLetter = null;
 
-  @ContactType private int mAvatarType = TYPE_DEFAULT;
   private String mDisplayName;
 
   public LetterTileDrawable(final Resources res) {
     if (sColors == null) {
       sColors = res.obtainTypedArray(R.array.letter_tile_colors);
+      sSpamColor = res.getColor(R.color.spam_contact_background);
       sDefaultColor = res.getColor(R.color.letter_tile_default_color);
       sTileFontColor = res.getColor(R.color.letter_tile_font_color);
       sLetterToTileRatio = res.getFraction(R.dimen.letter_to_tile_ratio, 1, 1);
       sDefaultPersonAvatar =
-          BitmapFactory.decodeResource(
-              res, R.drawable.product_logo_avatar_anonymous_white_color_120);
-      sDefaultBusinessAvatar =
-          BitmapFactory.decodeResource(res, R.drawable.ic_business_white_120dp);
-      sDefaultVoicemailAvatar = BitmapFactory.decodeResource(res, R.drawable.ic_voicemail_avatar);
+          res.getDrawable(R.drawable.product_logo_avatar_anonymous_white_color_120, null);
+      sDefaultBusinessAvatar = res.getDrawable(R.drawable.quantum_ic_business_vd_theme_24, null);
+      sDefaultVoicemailAvatar = res.getDrawable(R.drawable.quantum_ic_voicemail_vd_theme_24, null);
+      sDefaultSpamAvatar = res.getDrawable(R.drawable.quantum_ic_report_vd_theme_24, null);
       sPaint.setTypeface(
           Typeface.create(res.getString(R.string.letter_tile_letter_font_family), Typeface.NORMAL));
       sPaint.setTextAlign(Align.CENTER);
@@ -128,12 +133,32 @@
     mColor = sDefaultColor;
   }
 
-  private static Bitmap getBitmapForContactType(int contactType) {
+  private Rect getScaledBounds(float scale, float offset) {
+    // The drawable should be drawn in the middle of the canvas without changing its width to
+    // height ratio.
+    final Rect destRect = copyBounds();
+    // Crop the destination bounds into a square, scaled and offset as appropriate
+    final int halfLength = (int) (scale * Math.min(destRect.width(), destRect.height()) / 2);
+
+    destRect.set(
+        destRect.centerX() - halfLength,
+        (int) (destRect.centerY() - halfLength + offset * destRect.height()),
+        destRect.centerX() + halfLength,
+        (int) (destRect.centerY() + halfLength + offset * destRect.height()));
+    return destRect;
+  }
+
+  private Drawable getDrawableForContactType(int contactType) {
     switch (contactType) {
       case TYPE_BUSINESS:
+        mScale = VECTOR_ICON_SCALE;
         return sDefaultBusinessAvatar;
       case TYPE_VOICEMAIL:
+        mScale = VECTOR_ICON_SCALE;
         return sDefaultVoicemailAvatar;
+      case TYPE_SPAM:
+        mScale = VECTOR_ICON_SCALE;
+        return sDefaultSpamAvatar;
       case TYPE_PERSON:
       case TYPE_GENERIC_AVATAR:
       default:
@@ -163,39 +188,11 @@
     return bitmap;
   }
 
-  /**
-   * Draw the bitmap onto the canvas at the current bounds taking into account the current scale.
-   */
-  private void drawBitmap(
-      final Bitmap bitmap, final int width, final int height, final Canvas canvas) {
-    // The bitmap should be drawn in the middle of the canvas without changing its width to
-    // height ratio.
-    final Rect destRect = copyBounds();
-
-    // Crop the destination bounds into a square, scaled and offset as appropriate
-    final int halfLength = (int) (mScale * Math.min(destRect.width(), destRect.height()) / 2);
-
-    destRect.set(
-        destRect.centerX() - halfLength,
-        (int) (destRect.centerY() - halfLength + mOffset * destRect.height()),
-        destRect.centerX() + halfLength,
-        (int) (destRect.centerY() + halfLength + mOffset * destRect.height()));
-
-    // Source rectangle remains the entire bounds of the source bitmap.
-    sRect.set(0, 0, width, height);
-
-    sPaint.setTextAlign(Align.CENTER);
-    sPaint.setAntiAlias(true);
-    sPaint.setAlpha(ALPHA);
-
-    canvas.drawBitmap(bitmap, sRect, destRect, sPaint);
-  }
-
   private void drawLetterTile(final Canvas canvas) {
     // Draw background color.
     sPaint.setColor(mColor);
-
     sPaint.setAlpha(mPaint.getAlpha());
+
     final Rect bounds = getBounds();
     final int minDimension = Math.min(bounds.width(), bounds.height());
 
@@ -206,7 +203,6 @@
     }
 
     // Draw letter/digit only if the first character is an english letter or there's a override
-
     if (mLetter != null) {
       // Draw letter or digit.
       sFirstChar[0] = mLetter;
@@ -229,8 +225,10 @@
           sPaint);
     } else {
       // Draw the default image if there is no letter/digit to be drawn
-      final Bitmap bitmap = getBitmapForContactType(mContactType);
-      drawBitmap(bitmap, bitmap.getWidth(), bitmap.getHeight(), canvas);
+      Drawable drawable = getDrawableForContactType(mContactType);
+      drawable.setBounds(getScaledBounds(mScale, mOffset));
+      drawable.setAlpha(drawable == sDefaultSpamAvatar ? SPAM_ALPHA : ALPHA);
+      drawable.draw(canvas);
     }
   }
 
@@ -245,11 +243,16 @@
 
   /** Returns a deterministic color based on the provided contact identifier string. */
   private int pickColor(final String identifier) {
+    if (mContactType == TYPE_SPAM) {
+      return sSpamColor;
+    }
+
     if (mContactType == TYPE_VOICEMAIL
         || mContactType == TYPE_BUSINESS
         || TextUtils.isEmpty(identifier)) {
       return sDefaultColor;
     }
+
     // String.hashCode() implementation is not supposed to change across java versions, so
     // this should guarantee the same email address always maps to the same color.
     // The email should already have been normalized by the ContactRequest.
@@ -321,7 +324,7 @@
 
   private LetterTileDrawable setLetterAndColorFromContactDetails(
       final String displayName, final String identifier) {
-    if (displayName != null && displayName.length() > 0 && isEnglishLetter(displayName.charAt(0))) {
+    if (!TextUtils.isEmpty(displayName) && isEnglishLetter(displayName.charAt(0))) {
       mLetter = Character.toUpperCase(displayName.charAt(0));
     } else {
       mLetter = null;
@@ -382,11 +385,10 @@
     }
 
     this.mDisplayName = displayName;
-    this.mAvatarType = contactType;
-    setContactType(this.mAvatarType);
+    setContactType(contactType);
 
     // Special contact types receive default color and no letter tile, but special iconography.
-    if (this.mAvatarType != TYPE_PERSON) {
+    if (contactType != TYPE_PERSON) {
       this.setLetterAndColorFromContactDetails(null, null);
     } else {
       if (identifierForTileColor != null) {
diff --git a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java b/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
index 89bd889..c75e0a7 100644
--- a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
+++ b/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
@@ -17,13 +17,11 @@
 
 import android.app.ActionBar;
 import android.net.Uri;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallSpecificAppData;
 
 /** Action callbacks that can be sent by a phone number picker. */
 public interface OnPhoneNumberPickerActionListener {
 
-  int CALL_INITIATION_UNKNOWN = 0;
-
   /** Returns the selected phone number uri to the requester. */
   void onPickDataUri(Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData);
 
diff --git a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
index 4ae8152..99c41f9 100644
--- a/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
+++ b/java/com/android/contacts/common/list/PhoneNumberPickerFragment.java
@@ -28,7 +28,9 @@
 import android.view.ViewGroup;
 import com.android.contacts.common.R;
 import com.android.contacts.common.util.AccountFilterUtil;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallInitiationType.Type;
+import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.logging.Logger;
@@ -181,11 +183,12 @@
     final String number = getPhoneNumber(position);
     if (!TextUtils.isEmpty(number)) {
       cacheContactInfo(position);
-      CallSpecificAppData callSpecificAppData = new CallSpecificAppData();
-      callSpecificAppData.callInitiationType = getCallInitiationType(true /* isRemoteDirectory */);
-      callSpecificAppData.positionOfSelectedSearchResult = position;
-      callSpecificAppData.charactersInSearchString =
-          getQueryString() == null ? 0 : getQueryString().length();
+      CallSpecificAppData callSpecificAppData =
+          CallSpecificAppData.newBuilder()
+              .setCallInitiationType(getCallInitiationType(true /* isRemoteDirectory */))
+              .setPositionOfSelectedSearchResult(position)
+              .setCharactersInSearchString(getQueryString() == null ? 0 : getQueryString().length())
+              .build();
       mListener.onPickPhoneNumber(number, isVideoCall, callSpecificAppData);
     } else {
       LogUtil.i(
@@ -359,8 +362,8 @@
    * @param isRemoteDirectory {@code true} if the call was initiated using a contact/phone number
    *     not in the local contacts database
    */
-  protected int getCallInitiationType(boolean isRemoteDirectory) {
-    return OnPhoneNumberPickerActionListener.CALL_INITIATION_UNKNOWN;
+  protected CallInitiationType.Type getCallInitiationType(boolean isRemoteDirectory) {
+    return Type.UNKNOWN_INITIATION;
   }
 
   /**
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_ab_search.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_ab_search.png
new file mode 100644
index 0000000..d86b219
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_ab_search.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_arrow_back_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_arrow_back_24dp.png
new file mode 100644
index 0000000..ddbb2c4
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_arrow_back_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_business_white_120dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_business_white_120dp.png
new file mode 100644
index 0000000..d5942dc
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_business_white_120dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_call_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_call_24dp.png
new file mode 100644
index 0000000..4dc5065
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_call_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_call_note_white_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_call_note_white_24dp.png
new file mode 100644
index 0000000..503e58e
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_call_note_white_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_close_dk.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_close_dk.png
new file mode 100644
index 0000000..9695529
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_close_dk.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_create_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_create_24dp.png
new file mode 100644
index 0000000..540ab4d
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_create_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_group_white_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_group_white_24dp.png
new file mode 100644
index 0000000..017e4bb
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_group_white_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_history_white_drawable_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_history_white_drawable_24dp.png
new file mode 100644
index 0000000..703d30b
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_history_white_drawable_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_info_outline_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_info_outline_24dp.png
new file mode 100644
index 0000000..c7b1113
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_info_outline_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_back.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_back.png
new file mode 100644
index 0000000..deb3a6d
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_back.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_dk.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_dk.png
new file mode 100644
index 0000000..06bd18f
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_dk.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_lt.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_lt.png
new file mode 100644
index 0000000..d829d11
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_group_lt.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_overflow_lt.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_overflow_lt.png
new file mode 100644
index 0000000..1ba1295
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_overflow_lt.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_dk.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_dk.png
new file mode 100644
index 0000000..5ff3ac5
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_dk.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_lt.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_lt.png
new file mode 100644
index 0000000..b4ebfc7
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_person_lt.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_remove_field_holo_light.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_remove_field_holo_light.png
new file mode 100644
index 0000000..03fd2fb
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_remove_field_holo_light.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_dk.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_dk.png
new file mode 100644
index 0000000..e8cb0f5
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_dk.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_holo_light.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_holo_light.png
new file mode 100644
index 0000000..4513796
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_holo_light.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_lt.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_lt.png
new file mode 100644
index 0000000..1c9bb81
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_menu_star_lt.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_person_24dp.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_person_24dp.png
new file mode 100644
index 0000000..56708b0
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_person_24dp.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_phone_attach.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_phone_attach.png
new file mode 100644
index 0000000..84b1227
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_phone_attach.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_rx_videocam.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_rx_videocam.png
new file mode 100644
index 0000000..ccdda67
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_rx_videocam.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_scroll_handle.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_scroll_handle.png
new file mode 100644
index 0000000..3aa29b8
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_scroll_handle.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_tx_videocam.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_tx_videocam.png
new file mode 100644
index 0000000..603ddc8
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_tx_videocam.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_videocam.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_videocam.png
new file mode 100644
index 0000000..97905c9
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_videocam.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/ic_voicemail_avatar.png b/java/com/android/contacts/common/res/drawable-hdpi/ic_voicemail_avatar.png
new file mode 100644
index 0000000..2121878
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/ic_voicemail_avatar.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_activated_holo.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_activated_holo.9.png
new file mode 100644
index 0000000..4ea7afa
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/list_activated_holo.9.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_background_holo.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_background_holo.9.png
new file mode 100644
index 0000000..cddf9be
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/list_background_holo.9.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_focused_holo.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_focused_holo.9.png
new file mode 100644
index 0000000..86578be
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/list_focused_holo.9.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_longpressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_longpressed_holo_light.9.png
new file mode 100644
index 0000000..e9afcc9
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/list_longpressed_holo_light.9.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_pressed_holo_light.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_pressed_holo_light.9.png
new file mode 100644
index 0000000..2054530
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/list_pressed_holo_light.9.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_section_divider_holo_custom.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_section_divider_holo_custom.9.png
new file mode 100644
index 0000000..a0f1756
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/list_section_divider_holo_custom.9.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-hdpi/list_title_holo.9.png b/java/com/android/contacts/common/res/drawable-hdpi/list_title_holo.9.png
new file mode 100644
index 0000000..ae93717
--- /dev/null
+++ b/java/com/android/contacts/common/res/drawable-hdpi/list_title_holo.9.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-mdpi/ic_business_white_120dp.png b/java/com/android/contacts/common/res/drawable-mdpi/ic_business_white_120dp.png
deleted file mode 100644
index 3dddca5..0000000
--- a/java/com/android/contacts/common/res/drawable-mdpi/ic_business_white_120dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-mdpi/ic_voicemail_avatar.png b/java/com/android/contacts/common/res/drawable-mdpi/ic_voicemail_avatar.png
deleted file mode 100644
index a7875c5..0000000
--- a/java/com/android/contacts/common/res/drawable-mdpi/ic_voicemail_avatar.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-xhdpi/ic_business_white_120dp.png b/java/com/android/contacts/common/res/drawable-xhdpi/ic_business_white_120dp.png
deleted file mode 100644
index 6256300..0000000
--- a/java/com/android/contacts/common/res/drawable-xhdpi/ic_business_white_120dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-xhdpi/ic_voicemail_avatar.png b/java/com/android/contacts/common/res/drawable-xhdpi/ic_voicemail_avatar.png
deleted file mode 100644
index 8dc1d59..0000000
--- a/java/com/android/contacts/common/res/drawable-xhdpi/ic_voicemail_avatar.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-xxhdpi/ic_business_white_120dp.png b/java/com/android/contacts/common/res/drawable-xxhdpi/ic_business_white_120dp.png
deleted file mode 100644
index 8d67e44..0000000
--- a/java/com/android/contacts/common/res/drawable-xxhdpi/ic_business_white_120dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-xxhdpi/ic_voicemail_avatar.png b/java/com/android/contacts/common/res/drawable-xxhdpi/ic_voicemail_avatar.png
deleted file mode 100644
index 5d22cbe..0000000
--- a/java/com/android/contacts/common/res/drawable-xxhdpi/ic_voicemail_avatar.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-xxxhdpi/ic_business_white_120dp.png b/java/com/android/contacts/common/res/drawable-xxxhdpi/ic_business_white_120dp.png
deleted file mode 100644
index 1741675..0000000
--- a/java/com/android/contacts/common/res/drawable-xxxhdpi/ic_business_white_120dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/drawable-xxxhdpi/ic_voicemail_avatar.png b/java/com/android/contacts/common/res/drawable-xxxhdpi/ic_voicemail_avatar.png
deleted file mode 100644
index 762b636..0000000
--- a/java/com/android/contacts/common/res/drawable-xxxhdpi/ic_voicemail_avatar.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/contacts/common/res/mipmap-hdpi/ic_contacts_launcher.png b/java/com/android/contacts/common/res/mipmap-hdpi/ic_contacts_launcher.png
new file mode 100644
index 0000000..64eff00
--- /dev/null
+++ b/java/com/android/contacts/common/res/mipmap-hdpi/ic_contacts_launcher.png
Binary files differ
diff --git a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..0d8cdee
--- /dev/null
+++ b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="toast_text_copied" msgid="8979281391599667362">"Tekst je kopiran"</string>
+    <string name="copy_text" msgid="5890820280087874642">"Kopiraj u priv. memoriju"</string>
+    <string name="call_custom" msgid="3041673234638990874">"Pozovi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="call_home" msgid="125893483593803791">"Pozovi kućni telefon"</string>
+    <string name="call_mobile" msgid="967589404494150813">"Pozovi mobilni telefon"</string>
+    <string name="call_work" msgid="6040550697395300892">"Pozovi poslovni telefon"</string>
+    <string name="call_fax_work" msgid="5260192771364592922">"Pozovi poslovni faks"</string>
+    <string name="call_fax_home" msgid="5174311195081144124">"Pozovi kućni faks"</string>
+    <string name="call_pager" msgid="6814149227741274161">"Pozovi pejdžer"</string>
+    <string name="call_other" msgid="5536385588712587235">"Pozovi"</string>
+    <string name="call_callback" msgid="6314019862718112786">"Pozovi za povratni poziv"</string>
+    <string name="call_car" msgid="3197417098027764954">"Pozovi telefon u automobilu"</string>
+    <string name="call_company_main" msgid="2557663310028446397">"Pozovi glavni telefon preduzeća"</string>
+    <string name="call_isdn" msgid="4691270442763649522">"Pozovi ISDN"</string>
+    <string name="call_main" msgid="3293707608770407814">"Pozovi glavni telefon"</string>
+    <string name="call_other_fax" msgid="4724521984879021465">"Pozovi faks"</string>
+    <string name="call_radio" msgid="8942441419845057942">"Pozovi radio"</string>
+    <string name="call_telex" msgid="2031514461660668351">"Pozovi teleks"</string>
+    <string name="call_tty_tdd" msgid="7807210224965727701">"Pozovi TTY/TDD"</string>
+    <string name="call_work_mobile" msgid="2716342732938578495">"Pozovi poslovni mobilni telefon"</string>
+    <string name="call_work_pager" msgid="3791778749827366574">"Pozovi poslovni pejdžer"</string>
+    <string name="call_assistant" msgid="4177478845473789294">"Pozovi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="call_mms" msgid="4958811711741872901">"Pozovi broj za MMS"</string>
+    <string name="call_by_shortcut" msgid="4623082183552111045">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (pozovi)"</string>
+    <string name="sms_custom" msgid="8785368968605026317">"Pošalji SMS na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="sms_home" msgid="3527719551060295243">"Pošalji SMS na kućni telefon"</string>
+    <string name="sms_mobile" msgid="8883045857887736518">"Pošalji SMS na mobilni telefon"</string>
+    <string name="sms_work" msgid="4158595439553450966">"Pošalji SMS na poslovni telefon"</string>
+    <string name="sms_fax_work" msgid="5483726627718055248">"Pošalji SMS na poslovni faks"</string>
+    <string name="sms_fax_home" msgid="9219265155770746077">"Pošalji SMS na kućni faks"</string>
+    <string name="sms_pager" msgid="4901085068525193933">"Pošalji SMS na pejdžer"</string>
+    <string name="sms_other" msgid="1742702947993285933">"Pošalji SMS"</string>
+    <string name="sms_callback" msgid="5833483630377538308">"Pošalji SMS za povratni poziv"</string>
+    <string name="sms_car" msgid="4314577266154395174">"Pošalji SMS na telefon u automobilu"</string>
+    <string name="sms_company_main" msgid="2308160928487360705">"Pošalji SMS na glavni broj telefona preduzeća"</string>
+    <string name="sms_isdn" msgid="6394300346179302542">"Pošalji SMS na ISDN"</string>
+    <string name="sms_main" msgid="8908087742014140774">"Pošalji SMS na glavni telefon"</string>
+    <string name="sms_other_fax" msgid="8768455473295405427">"Pošalji SMS na faks"</string>
+    <string name="sms_radio" msgid="855555176531704682">"Pošalji SMS na radio"</string>
+    <string name="sms_telex" msgid="6269029276223252719">"Pošalji SMS na teleks"</string>
+    <string name="sms_tty_tdd" msgid="6229057354509192444">"Pošalji SMS na TTY/TDD"</string>
+    <string name="sms_work_mobile" msgid="2155975469329969840">"Pošalji SMS na poslovni mobilni telefon"</string>
+    <string name="sms_work_pager" msgid="8500140274906830742">"Pošalji SMS na poslovni pejdžer"</string>
+    <string name="sms_assistant" msgid="8513548482745330818">"Pošalji SMS na <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
+    <string name="sms_mms" msgid="5187888900503248542">"Pošalji SMS na broj za MMS"</string>
+    <string name="sms_by_shortcut" msgid="8005496406639963582">"<xliff:g id="CONTACT_NAME">%s</xliff:g> (pošalji SMS)"</string>
+    <string name="clearFrequentsConfirmation_title" msgid="7465690215775790243">"Brišete često kontaktirane?"</string>
+    <string name="clearFrequentsConfirmation" msgid="5750611450893399198">"Obrisaćete listu često kontaktiranih u aplikacijama Kontakti i Telefon, pa će imejl aplikacije morati ponovo da prikupe informacije o adresiranju."</string>
+    <string name="clearFrequentsProgress_title" msgid="2057183487226039454">"Brisanje često kontaktiranih..."</string>
+    <string name="status_available" msgid="2648156525685472626">"Dostupan/na"</string>
+    <string name="status_away" msgid="2298688367552893953">"Odsutan/na"</string>
+    <string name="status_busy" msgid="5990832098713248503">"Zauzet/a"</string>
+    <string name="contactsList" msgid="8806067891419291513">"Kontakti"</string>
+    <string name="local_invisible_directory" msgid="4723238462733650090">"Drugo"</string>
+    <string name="directory_search_label" msgid="4621215895484025229">"Direktorijum"</string>
+    <string name="directory_search_label_work" msgid="7679326282707414897">"Direktorijum za Work"</string>
+    <string name="local_search_label" msgid="907622822323119235">"Svi kontakti"</string>
+    <string name="user_profile_contacts_list_header" msgid="9180620153828279580">"Ja"</string>
+    <string name="search_results_searching" msgid="3710866752172327451">"Pretražuje se…"</string>
+    <string name="foundTooManyContacts" msgid="3685002426663730799">"Pronađeno je više od <xliff:g id="COUNT">%d</xliff:g>."</string>
+    <string name="listFoundAllContactsZero" msgid="1151813986040671916">"Nema kontakata"</string>
+    <plurals name="searchFoundContacts" formatted="false" msgid="3733009742282085433">
+      <item quantity="one">Pronađen je <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="few">Pronađena su <xliff:g id="COUNT">%d</xliff:g></item>
+      <item quantity="other">Pronađeno je <xliff:g id="COUNT">%d</xliff:g></item>
+    </plurals>
+    <string name="description_quick_contact_for" msgid="6327207399167819147">"Brzi kontakt za korisnika <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="missing_name" msgid="978606963362745020">"(Nema imena)"</string>
+    <string name="favoritesFrequentCalled" msgid="4646019087163449555">"Često pozivani"</string>
+    <string name="favoritesFrequentContacted" msgid="946588736701567509">"Često kontaktirani"</string>
+    <string name="description_view_contact_detail" msgid="2428742401208561136">"Prikaži kontakt"</string>
+    <string name="list_filter_phones" msgid="8763316061763437182">"Svi kontakti sa brojevima telefona"</string>
+    <string name="list_filter_phones_work" msgid="7083575404573422965">"Kontakti sa profila za Work"</string>
+    <string name="view_updates_from_group" msgid="9011641093168385729">"Prikaži ažuriranja"</string>
+    <string name="account_phone" msgid="7067809073194061035">"Samo na uređaju, ne sinhronizuje se"</string>
+    <string name="nameLabelsGroup" msgid="7730465833159557471">"Ime"</string>
+    <string name="nicknameLabelsGroup" msgid="6310556912361840029">"Nadimak"</string>
+    <string name="full_name" msgid="648186563998465740">"Ime"</string>
+    <string name="name_given" msgid="5096576006314820536">"Imenu"</string>
+    <string name="name_family" msgid="6646235805198547467">"Prezimenu"</string>
+    <string name="name_prefix" msgid="9215326539658838">"Prefiks za ime"</string>
+    <string name="name_middle" msgid="703755205331582769">"Srednje ime"</string>
+    <string name="name_suffix" msgid="5777083390282548702">"Sufiks imena"</string>
+    <string name="name_phonetic" msgid="1650870996361663089">"Ime – fonetski"</string>
+    <string name="name_phonetic_given" msgid="618812334274603170">"Ime – fonetski"</string>
+    <string name="name_phonetic_middle" msgid="4826820763384625538">"Srednje ime – fonetski"</string>
+    <string name="name_phonetic_family" msgid="379905191212930771">"Prezime – fonetski"</string>
+    <string name="phoneLabelsGroup" msgid="169661929021355548">"Telefon"</string>
+    <string name="emailLabelsGroup" msgid="2249752810477488833">"Pošalji imejl"</string>
+    <string name="postalLabelsGroup" msgid="6772000590189142253">"Adresa"</string>
+    <string name="imLabelsGroup" msgid="5718066254237364731">"Razmena trenutnih poruka"</string>
+    <string name="organizationLabelsGroup" msgid="1101996309241601435">"Organizacija"</string>
+    <string name="relationLabelsGroup" msgid="53866051664600053">"Odnos"</string>
+    <string name="eventLabelsGroup" msgid="1236970042646618489">"Poseban dan"</string>
+    <string name="sms" msgid="7574344928185328095">"SMS"</string>
+    <string name="postal_address" msgid="1804707930129674200">"Adresa"</string>
+    <string name="ghostData_company" msgid="2554310786296833424">"Preduzeće"</string>
+    <string name="ghostData_title" msgid="4994968731830184837">"Naziv"</string>
+    <string name="label_notes" msgid="2050255313694219786">"Beleške"</string>
+    <string name="label_sip_address" msgid="8883266182575965926">"SIP"</string>
+    <string name="websiteLabelsGroup" msgid="1630734286462186790">"Veb-sajt"</string>
+    <string name="groupsLabel" msgid="2694002798416868728">"Grupe"</string>
+    <string name="email_home" msgid="889830029388962171">"Pošalji imejl na kućnu imejl adresu"</string>
+    <string name="email_mobile" msgid="4487686436743741150">"Pošalji imejl na mobilni telefon"</string>
+    <string name="email_work" msgid="4223487303344613528">"Pošalji imejl na poslovnu imejl adresu"</string>
+    <string name="email_other" msgid="4246411900126012062">"Pošalji imejl"</string>
+    <string name="email_custom" msgid="7246580894327511013">"Pošalji imejl na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="email" msgid="2807318537887091606">"Pošalji imejl"</string>
+    <string name="postal_street" msgid="6918171741240802474">"Ulica"</string>
+    <string name="postal_pobox" msgid="2962203483168878561">"Poštanski fah"</string>
+    <string name="postal_neighborhood" msgid="5275280978237639716">"Kraj"</string>
+    <string name="postal_city" msgid="8674569121430005628">"Grad"</string>
+    <string name="postal_region" msgid="1730369286225469192">"Država"</string>
+    <string name="postal_postcode" msgid="4450700741261990439">"Poštanski broj"</string>
+    <string name="postal_country" msgid="232670707458768148">"Zemlja"</string>
+    <string name="map_home" msgid="4181131107392126938">"Prikaži kućnu adresu"</string>
+    <string name="map_work" msgid="5723471185992684400">"Prikaži poslovnu adresu"</string>
+    <string name="map_other" msgid="2253764780863500516">"Prikaži adresu"</string>
+    <string name="map_custom" msgid="5581743097882436157">"Prikaži adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
+    <string name="chat_aim" msgid="2954364435497941659">"Započni ćaskanje preko AIM-a"</string>
+    <string name="chat_msn" msgid="3130135239071228678">"Započni ćaskanje preko Windows Live-a"</string>
+    <string name="chat_yahoo" msgid="3233552142326865347">"Započni ćaskanje preko Yahoo-a"</string>
+    <string name="chat_skype" msgid="6486703981390592425">"Započni ćaskanje preko Skype-a"</string>
+    <string name="chat_qq" msgid="786924280665740019">"Započni ćaskanje preko QQ-a"</string>
+    <string name="chat_gtalk" msgid="7914674177243078035">"Započni ćaskanje preko Google Talk-a"</string>
+    <string name="chat_icq" msgid="3292934726414765801">"Započni ćaskanje preko ICQ-a"</string>
+    <string name="chat_jabber" msgid="6701542313597880204">"Započni ćaskanje preko Jabber-a"</string>
+    <string name="chat" msgid="1020428260359370236">"Ćaskanje"</string>
+    <string name="description_minus_button" msgid="2659092981396583806">"izbriši"</string>
+    <string name="expand_collapse_name_fields_description" msgid="9005732230091761802">"Proširivanje ili skupljanje polja za nazive"</string>
+    <string name="expand_collapse_phonetic_name_fields_description" msgid="3450645489720595412">"Proširi ili skupi polja za fonetsko ime"</string>
+    <string name="list_filter_all_accounts" msgid="473782314881473992">"Svi kontakti"</string>
+    <string name="menu_done" msgid="1817505539263889535">"Gotovo"</string>
+    <string name="menu_doNotSave" msgid="4174389775790094548">"Otkaži"</string>
+    <string name="listAllContactsInAccount" msgid="3486378621592995630">"Kontakti u grupi <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="listCustomView" msgid="5306282632413086731">"Kontakti u prilagođenom prikazu"</string>
+    <string name="listSingleContact" msgid="8620818791932382627">"Pojedinačni kontakt"</string>
+    <string name="dialog_new_contact_account" msgid="3089718960461539156">"Sačuvajte uvezene kontakte na:"</string>
+    <string name="import_from_sim" msgid="4025122666048801234">"Uvezi sa SIM kartice"</string>
+    <string name="import_from_sim_summary" msgid="7347530878981811858">"Uvoz sa SIM kartice <xliff:g id="SIM_NAME">^1</xliff:g> – <xliff:g id="SIM_NUMBER">^2</xliff:g>"</string>
+    <string name="import_from_sim_summary_no_number" msgid="2311025421424473798">"Uvoz sa SIM kartice <xliff:g id="SIM_NAME">%1$s</xliff:g>"</string>
+    <string name="import_from_vcf_file" product="default" msgid="2755992524137862594">"Uvezi iz .vcf datoteke"</string>
+    <string name="cancel_import_confirmation_message" msgid="1112854508504355394">"Želite li da otkažete uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_export_confirmation_message" msgid="8507822905973961704">"Želite li da otkažete izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
+    <string name="cancel_vcard_import_or_export_failed" msgid="3633975947527306665">"Nije moguće otkazati vCard uvoz/izvoz"</string>
+    <string name="fail_reason_unknown" msgid="4526834573707737085">"Nepoznata greška."</string>
+    <string name="fail_reason_could_not_open_file" msgid="2564113989228646444">"Nismo uspeli da otvorimo datoteku „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
+    <string name="fail_reason_could_not_initialize_exporter" msgid="1391801997398257839">"Nije moguće pokrenuti program za izvoz: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
+    <string name="fail_reason_no_exportable_contact" msgid="5905140440417594395">"Nema kontakata za izvoz."</string>
+    <string name="missing_required_permission" msgid="3977319568919699902">"Onemogućili ste obaveznu dozvolu."</string>
+    <string name="fail_reason_error_occurred_during_export" msgid="4022425018935814242">"Došlo je do greške pri izvozu: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
+    <string name="fail_reason_too_long_filename" msgid="1782388695897859448">"Zahtevani naziv datoteke je predugačak („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
+    <string name="fail_reason_io_error" msgid="5610192449460803752">"U/I greška"</string>
+    <string name="fail_reason_low_memory_during_import" msgid="5383581106403466715">"Nema dovoljno memorije. Datoteka je možda prevelika."</string>
+    <string name="fail_reason_vcard_parse_error" msgid="7166381747317969497">"Iz neočekivanog razloga nije moguće raščlaniti vCard datoteku."</string>
+    <string name="fail_reason_not_supported" msgid="6529299412185608834">"Format nije podržan."</string>
+    <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="2071371622333685552">"Nije moguće prikupiti metapodatke navedenih vCard datoteka."</string>
+    <string name="fail_reason_failed_to_read_files" msgid="7364342120566067558">"Nije moguć uvoz jedne ili više datoteka (%s)."</string>
+    <string name="exporting_vcard_finished_title" msgid="6969111823207538096">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je završen."</string>
+    <string name="exporting_vcard_finished_title_fallback" msgid="3456404588243153606">"Izvoz kontakata je završen."</string>
+    <string name="exporting_vcard_finished_toast" msgid="864313687240614505">"Izvoz kontakata je završen. Kliknite na obaveštenje da biste ih delili."</string>
+    <string name="touch_to_share_contacts" msgid="8684610418619975866">"Dodirnite da biste delili kontakte."</string>
+    <string name="exporting_vcard_canceled_title" msgid="4160930279977285925">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je otkazan."</string>
+    <string name="exporting_contact_list_title" msgid="874590947793345632">"Izvoz podataka o kontaktima je u toku"</string>
+    <string name="exporting_contact_list_message" msgid="3263011604569444133">"Podaci o kontaktima se izvoze."</string>
+    <string name="composer_failed_to_get_database_infomation" msgid="443743100925218813">"Preuzimanje informacija iz baze podataka nije moguće."</string>
+    <string name="composer_has_no_exportable_contact" msgid="1492572045460138455">"Nema kontakata za izvoz. Ako imate kontakte na uređaju, neki dobavljači podataka možda ne dozvoljavaju izvoz kontakata sa uređaja."</string>
+    <string name="composer_not_initialized" msgid="7126008930727708362">"Program za izradu vCard datoteka se nije ispravno pokrenuo."</string>
+    <string name="exporting_contact_failed_title" msgid="5400878429352404258">"Izvoz nije moguć"</string>
+    <string name="exporting_contact_failed_message" msgid="1453772164161663415">"Podaci o kontaktima nizu izvezeni.\nRazlog: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
+    <string name="importing_vcard_description" msgid="1206078719084863234">"Uvoz kontakta <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="reading_vcard_failed_title" msgid="4759080957711586257">"Čitanje vCard podataka nije moguće"</string>
+    <string name="reading_vcard_canceled_title" msgid="3650078934530953275">"Čitanje vCard podataka je otkazano"</string>
+    <string name="importing_vcard_finished_title" msgid="1543368028741535966">"Uvoz vCard datoteke <xliff:g id="FILENAME">%s</xliff:g> je završen"</string>
+    <string name="importing_vcard_canceled_title" msgid="2454436016819017436">"Uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je otkazan"</string>
+    <string name="vcard_import_will_start_message" msgid="6013286576133592154">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> će uskoro biti uvezena."</string>
+    <string name="vcard_import_will_start_message_with_default_name" msgid="3172538521736189687">"Datoteka će uskoro biti uvezena."</string>
+    <string name="vcard_import_request_rejected_message" msgid="7620870852106507620">"Zahtev za uvoz vCard datoteke je odbijen. Probajte ponovo kasnije."</string>
+    <string name="vcard_export_will_start_message" msgid="4480722586633503615">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> će uskoro biti izvezena."</string>
+    <string name="vcard_export_will_start_message_fallback" msgid="8746087280091814150">"Datoteka će uskoro biti izvezena."</string>
+    <string name="contacts_export_will_start_message" msgid="5950262391638837408">"Kontakti će uskoro biti izvezeni."</string>
+    <string name="vcard_export_request_rejected_message" msgid="4132430982367686579">"Zahtev za izvoz vCard datoteke je odbijen. Probajte ponovo kasnije."</string>
+    <string name="vcard_unknown_filename" msgid="7576066884501578965">"kontakt"</string>
+    <string name="caching_vcard_message" msgid="7778832851741500256">"Keširanje vCard datoteka u lokalnu privremenu memoriju. Uvoz će uskoro započeti."</string>
+    <string name="vcard_import_failed" msgid="4135012206186446511">"Uvoz vCard datoteke nije moguć."</string>
+    <string name="nfc_vcard_file_name" msgid="7174382505002702431">"Kontakt preko NFC-a"</string>
+    <string name="confirm_export_title" msgid="9164673124925342242">"Želite li da izvezete kontakte?"</string>
+    <string name="caching_vcard_title" msgid="8092335276785174935">"Keširanje"</string>
+    <string name="progress_notifier_message" msgid="2778542784808529164">"Uvozimo <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="export_to_vcf_file" product="default" msgid="6148360234812424446">"Izvezi u .vcf datoteku"</string>
+    <string name="display_options_sort_list_by" msgid="3541875948367831228">"Sortiraj prema"</string>
+    <string name="display_options_sort_by_given_name" msgid="4316351826810346915">"Imenu"</string>
+    <string name="display_options_sort_by_family_name" msgid="5238820876940079000">"Prezimenu"</string>
+    <string name="display_options_view_names_as" msgid="4204204205736735618">"Format imena i prezimena"</string>
+    <string name="display_options_view_given_name_first" msgid="2308026973021171020">"Prvo ime"</string>
+    <string name="display_options_view_family_name_first" msgid="987430497292428242">"Prvo prezime"</string>
+    <string name="default_editor_account" msgid="1826578934497338822">"Podrazumevani nalog za nove kontakte"</string>
+    <string name="sync_contact_metadata_dialog_title" msgid="7839882899954930421">"Sinhronizujte metapodatke kontakata"</string>
+    <string name="setting_about" msgid="5253319937596745755">"O Kontaktima"</string>
+    <string name="activity_title_settings" msgid="2398428034981372932">"Podešavanja"</string>
+    <string name="share_visible_contacts" msgid="6775120441469077620">"Deli vidljive kontakte"</string>
+    <string name="share_visible_contacts_failure" msgid="1365755167786055470">"Nije uspelo deljenje vidljivih kontakata."</string>
+    <string name="share_favorite_contacts" msgid="9138011836074034817">"Deli omiljene kontakte"</string>
+    <string name="share_contacts" msgid="6505699963814423437">"Deli sve kontakte"</string>
+    <string name="share_contacts_failure" msgid="6027174424732204424">"Deljenje kontakata nije uspelo."</string>
+    <string name="dialog_import_export" msgid="3052335055728876529">"Uvoz/izvoz kontakata"</string>
+    <string name="dialog_import" msgid="8508508044485808554">"Uvezi kontakte"</string>
+    <string name="share_error" msgid="5642622973966851784">"Ovaj kontakt ne može da se deli."</string>
+    <string name="no_contact_to_share" msgid="9115223064368461904">"Nema kontakata za deljenje."</string>
+    <string name="menu_search" msgid="1241802591112035764">"Pretraži"</string>
+    <string name="hint_findContacts" msgid="1913556676649442295">"Pronađite kontakte"</string>
+    <string name="contactsFavoritesLabel" msgid="5198982253222486561">"Omiljeno"</string>
+    <string name="listTotalAllContactsZero" msgid="8436822729781033537">"Nema kontakata."</string>
+    <string name="listTotalAllContactsZeroCustom" msgid="6072173682342248964">"Nema vidljivih kontakata."</string>
+    <string name="listTotalAllContactsZeroStarred" msgid="5008410556001744528">"Nema omiljenih"</string>
+    <string name="listTotalAllContactsZeroGroup" msgid="6782377127075025237">"Nema kontakata u grupi <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_clear_frequents" msgid="5358271535047496120">"Obriši često kontaktirane"</string>
+    <string name="menu_select_sim" msgid="3960197724339200637">"Izaberite SIM karticu"</string>
+    <string name="menu_accounts" msgid="8092083497106343280">"Upravljaj nalozima"</string>
+    <string name="menu_import_export" msgid="8834601882032781755">"Uvezi/izvezi"</string>
+    <string name="contact_status_update_attribution" msgid="6042601531361543253">"preko <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+    <string name="contact_status_update_attribution_with_date" msgid="3448746388181727251">"<xliff:g id="DATE">%1$s</xliff:g> preko <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+    <string name="action_menu_back_from_search" msgid="3550669942742167644">"zaustavljanje pretraživanja"</string>
+    <string name="description_clear_search" msgid="2347258825265600782">"Brisanje pretrage"</string>
+    <string name="settings_contact_display_options_title" msgid="5535295687646503547">"Opcije prikazivanja kontakata"</string>
+    <string name="select_account_dialog_title" msgid="2673504582803359239">"Nalog"</string>
+    <string name="set_default_account" msgid="7966099951006467572">"Uvek koristi ovo za pozive"</string>
+    <string name="select_phone_account_for_calls" msgid="1784460686103423274">"Pozovi pomoću"</string>
+    <string name="call_with_a_note" msgid="6242261320491851133">"Poziv sa beleškom"</string>
+    <string name="call_subject_hint" msgid="7233138753650420800">"Unesite belešku koju ćete poslati uz poziv..."</string>
+    <string name="send_and_call_button" msgid="4735168294120154013">"POŠALJI I POZOVI"</string>
+    <string name="call_subject_limit" msgid="8273208736191593939">"<xliff:g id="COUNT">%1$s</xliff:g>/<xliff:g id="LIMIT">%2$s</xliff:g>"</string>
+    <string name="call_subject_type_and_number" msgid="8726132674272173486">"<xliff:g id="TYPE">%1$s</xliff:g> • <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <string name="tab_title" msgid="3387876802026074288">"Kartica <xliff:g id="TITLE">%1$s</xliff:g>."</string>
+    <plurals name="tab_title_with_unread_items" formatted="false" msgid="8548492980702182785">
+      <item quantity="one"> Kartica <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitana stavka. </item>
+      <item quantity="few"> Kartica <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitane stavke. </item>
+      <item quantity="other"> Kartica <xliff:g id="TITLE_2">%1$s</xliff:g>. <xliff:g id="COUNT_3">%2$d</xliff:g> nepročitanih stavki. </item>
+    </plurals>
+    <string name="about_build_version" msgid="6809677213570116689">"Verzija"</string>
+    <string name="about_open_source_licenses" msgid="9071344335180981674">"Licence otvorenog koda"</string>
+    <string name="about_open_source_licenses_summary" msgid="4662018242345608420">"Detalji licence za softver otvorenog koda"</string>
+    <string name="about_privacy_policy" msgid="120921692215934837">"Politika privatnosti"</string>
+    <string name="about_terms_of_service" msgid="9004506174858804172">"Uslovi korišćenja usluge"</string>
+    <string name="activity_title_licenses" msgid="2416018204229261875">"Licence otvorenog koda"</string>
+    <string name="url_open_error_toast" msgid="3814442157861318482">"Otvaranje URL-a nije uspelo."</string>
+    <string name="description_search_video_call" msgid="7229218423556643079">"Uputi video poziv"</string>
+</resources>
diff --git a/java/com/android/contacts/common/res/values/colors.xml b/java/com/android/contacts/common/res/values/colors.xml
index 7524eff..434d193 100644
--- a/java/com/android/contacts/common/res/values/colors.xml
+++ b/java/com/android/contacts/common/res/values/colors.xml
@@ -20,6 +20,8 @@
 
   <color name="focus_color">#44ff0000</color>
 
+  <color name="spam_contact_background">#A52714</color>
+
   <!-- Color of ripples used for views with dark backgrounds -->
   <color name="dialer_ripple_material_dark">#a0ffffff</color>
 
diff --git a/java/com/android/dialer/app/AndroidManifest.xml b/java/com/android/dialer/app/AndroidManifest.xml
index 67290b5..5b7e757 100644
--- a/java/com/android/dialer/app/AndroidManifest.xml
+++ b/java/com/android/dialer/app/AndroidManifest.xml
@@ -109,6 +109,16 @@
         <action android:name="android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION"/>
       </intent-filter>
     </receiver>
+    <!-- Handles voicemail notifications from telephony. Requires O -->
+    <receiver android:name=".voicemail.LegacyVoicemailNotificationReceiver"
+      android:directBootAware="true">
+      <intent-filter>
+        <action android:name="android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION"/>
+      </intent-filter>
+      <intent-filter>
+        <action android:name="com.android.voicemail.VoicemailClient.ACTION_SHOW_LEGACY_VOICEMAIL" />
+      </intent-filter>
+    </receiver>
 
     <provider
       android:authorities="com.android.dialer.files"
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 139fc64..139f27a 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -88,16 +88,16 @@
 import com.android.dialer.app.widget.SearchEditTextLayout;
 import com.android.dialer.callcomposer.CallComposerActivity;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.Database;
 import com.android.dialer.database.DialerDatabaseHelper;
 import com.android.dialer.interactions.PhoneNumberInteraction;
 import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
-import com.android.dialer.logging.nano.ScreenEvent;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.p13n.inference.P13nRanking;
 import com.android.dialer.p13n.inference.protocol.P13nRanker;
 import com.android.dialer.p13n.inference.protocol.P13nRanker.P13nRefreshCompleteListener;
diff --git a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
index 66f40bc..740d6b3 100644
--- a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
+++ b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
@@ -24,9 +24,10 @@
 import com.android.dialer.blocking.BlockReportSpamDialogs;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.ContactSource;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
-import com.android.dialer.logging.nano.ReportingLocation;
+import com.android.dialer.logging.ReportingLocation;
 import com.android.dialer.spam.Spam;
 
 /** Listener to show dialogs for block and report spam actions. */
@@ -54,7 +55,7 @@
       final String number,
       final String countryIso,
       final int callType,
-      final int contactSourceType) {
+      final ContactSource.Type contactSourceType) {
     BlockReportSpamDialogs.BlockReportSpamDialogFragment.newInstance(
             displayNumber,
             Spam.get(mContext).isDialogReportSpamCheckedByDefault(),
@@ -98,7 +99,7 @@
       final String number,
       final String countryIso,
       final int callType,
-      final int contactSourceType) {
+      final ContactSource.Type contactSourceType) {
     BlockReportSpamDialogs.BlockDialogFragment.newInstance(
             displayNumber,
             Spam.get(mContext).isSpamEnabled(),
@@ -142,7 +143,7 @@
       final String number,
       final String countryIso,
       final int callType,
-      final int contactSourceType,
+      final ContactSource.Type contactSourceType,
       final boolean isSpam,
       final Integer blockId) {
     BlockReportSpamDialogs.UnblockDialogFragment.newInstance(
@@ -185,7 +186,7 @@
       final String number,
       final String countryIso,
       final int callType,
-      final int contactSourceType) {
+      final ContactSource.Type contactSourceType) {
     BlockReportSpamDialogs.ReportNotSpamDialogFragment.newInstance(
             displayNumber,
             new BlockReportSpamDialogs.OnConfirmListener() {
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index 719ab43..443171d 100644
--- a/java/com/android/dialer/app/calllog/CallLogActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogActivity.java
@@ -33,7 +33,7 @@
 import com.android.dialer.app.R;
 import com.android.dialer.database.CallLogQueryHandler;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.ScreenEvent;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.util.TransactionSafeActivity;
 import com.android.dialer.util.ViewUtil;
 
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 06f48aa..d4872d5 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.content.ContentUris;
+import android.content.DialogInterface;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
@@ -33,13 +34,14 @@
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import android.support.annotation.WorkerThread;
+import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
-import android.util.SparseBooleanArray;
+import android.util.SparseArray;
 import android.view.ActionMode;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -59,8 +61,8 @@
 import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
 import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter.OnVoicemailDeletedListener;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.calldetails.nano.CallDetailsEntries;
-import com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry;
+import com.android.dialer.calldetails.CallDetailsEntries;
+import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.calllogutils.PhoneAccountUtils;
 import com.android.dialer.calllogutils.PhoneCallDetails;
 import com.android.dialer.common.Assert;
@@ -71,12 +73,12 @@
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult;
+import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
 import com.android.dialer.lightbringer.Lightbringer;
 import com.android.dialer.lightbringer.LightbringerComponent;
 import com.android.dialer.lightbringer.LightbringerListener;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.phonenumbercache.CallLogQuery;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
@@ -129,8 +131,8 @@
 
   private final CallLogAlertManager mCallLogAlertManager;
 
-  public static ActionMode mActionMode = null;
-  private final SparseBooleanArray selectedItems = new SparseBooleanArray();
+  public ActionMode mActionMode = null;
+  private final SparseArray<String> selectedItems = new SparseArray<>();
 
   private final ActionMode.Callback mActionModeCallback =
       new ActionMode.Callback() {
@@ -155,7 +157,15 @@
         // Called when the user selects a contextual menu item
         @Override
         public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
-          return false;
+          if (item.getItemId() == R.id.action_bar_delete_menu_item) {
+            if (selectedItems.size() > 0) {
+              showDeleteSelectedItemsDialog();
+            }
+            mode.finish();
+            return true;
+          } else {
+            return false;
+          }
         }
 
         // Called when the user exits the action mode
@@ -167,14 +177,66 @@
         }
       };
 
+  private void showDeleteSelectedItemsDialog() {
+    AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
+    Assert.checkArgument(selectedItems.size() > 0);
+    String voicemailString =
+        selectedItems.size() == 1
+            ? mActivity.getResources().getString(R.string.voicemailMultiSelectVoicemail)
+            : mActivity.getResources().getString(R.string.voicemailMultiSelectVoicemail);
+    String deleteVoicemailTitle =
+        mActivity
+            .getResources()
+            .getString(R.string.voicemailMultiSelectDialogTitle, voicemailString);
+    SparseArray<String> voicemailsToDeleteOnConfirmation = selectedItems.clone();
+    builder.setTitle(deleteVoicemailTitle);
+
+    builder.setPositiveButton(
+        mActivity.getResources().getString(R.string.voicemailMultiSelectDeleteConfirm),
+        new DialogInterface.OnClickListener() {
+          @Override
+          public void onClick(DialogInterface dialog, int id) {
+            deleteSelectedItems(voicemailsToDeleteOnConfirmation);
+            dialog.cancel();
+          }
+        });
+
+    builder.setNegativeButton(
+        mActivity.getResources().getString(R.string.voicemailMultiSelectDeleteCancel),
+        new DialogInterface.OnClickListener() {
+          @Override
+          public void onClick(DialogInterface dialog, int id) {
+            dialog.cancel();
+          }
+        });
+
+    AlertDialog dialog = builder.create();
+    dialog.show();
+  }
+
+  private void deleteSelectedItems(SparseArray<String> voicemailsToDelete) {
+    for (int i = 0; i < voicemailsToDelete.size(); i++) {
+      String voicemailUri = voicemailsToDelete.get(voicemailsToDelete.keyAt(i));
+      CallLogAsyncTaskUtil.deleteVoicemail(mActivity, Uri.parse(voicemailUri), null);
+    }
+  }
+
   private final View.OnLongClickListener mLongPressListener =
       new View.OnLongClickListener() {
         @Override
         public boolean onLongClick(View v) {
           if (ConfigProviderBindings.get(v.getContext())
-              .getBoolean("enable_call_log_multiselect", false)) {
-            v.startActionMode(mActionModeCallback);
-            return false;
+                  .getBoolean("enable_call_log_multiselect", true)
+              && mVoicemailPlaybackPresenter != null) {
+            if (v.getId() == R.id.primary_action_view) {
+              if (mActionMode == null) {
+                mActionMode = v.startActionMode(mActionModeCallback);
+              }
+              CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag();
+              viewHolder.quickContactView.setVisibility(View.GONE);
+              viewHolder.checkBoxView.setVisibility(View.VISIBLE);
+              return false;
+            }
           }
           return true;
         }
@@ -190,15 +252,20 @@
             return;
           }
           if (mActionMode != null && viewHolder.voicemailUri != null) {
-            if (selectedItems.get((int) ContentUris.parseId(Uri.parse(viewHolder.voicemailUri)))) {
-              selectedItems.delete((int) ContentUris.parseId(Uri.parse(viewHolder.voicemailUri)));
+            int id = getVoicemailId(viewHolder.voicemailUri);
+            if (selectedItems.get(id) != null) {
+              selectedItems.delete(id);
               viewHolder.checkBoxView.setVisibility(View.GONE);
               viewHolder.quickContactView.setVisibility(View.VISIBLE);
             } else {
               viewHolder.quickContactView.setVisibility(View.GONE);
               viewHolder.checkBoxView.setVisibility(View.VISIBLE);
-              selectedItems.put(
-                  (int) ContentUris.parseId(Uri.parse(viewHolder.voicemailUri)), true);
+              selectedItems.put(getVoicemailId(viewHolder.voicemailUri), viewHolder.voicemailUri);
+            }
+
+            if (selectedItems.size() == 0) {
+              mActionMode.finish();
+              return;
             }
             mActionMode.setTitle(Integer.toString(selectedItems.size()));
             return;
@@ -216,12 +283,10 @@
               getEnrichedCallManager().getCapabilities(viewHolder.number);
           viewHolder.isCallComposerCapable =
               capabilities != null && capabilities.supportsCallComposer();
-
-          CallDetailsEntries callDetailsEntries = viewHolder.getDetailedPhoneDetails();
-          setCallDetailsEntriesHistoryResults(
+          generateAndMapNewCallDetailsEntriesHistoryResults(
               viewHolder.number,
-              callDetailsEntries,
-              getAllHistoricalData(viewHolder.number, callDetailsEntries));
+              viewHolder.getDetailedPhoneDetails(),
+              getAllHistoricalData(viewHolder.number, viewHolder.getDetailedPhoneDetails()));
 
           if (viewHolder.rowId == mCurrentlyExpandedRowId) {
             // Hide actions, if the clicked item is the expanded item.
@@ -241,6 +306,12 @@
         }
       };
 
+  private static int getVoicemailId(String voicemailUri) {
+    Assert.checkArgument(voicemailUri != null);
+    Assert.checkArgument(voicemailUri.length() > 0);
+    return (int) ContentUris.parseId(Uri.parse(voicemailUri));
+  }
+
   /**
    * A list of {@link CallLogQuery#ID} that will be hidden. The hide might be temporary so instead
    * if removing an item, it will be shown as an invisible view. This simplifies the calculation of
@@ -547,9 +618,12 @@
     // the value will be false while capabilities are requested. mExpandCollapseListener will
     // attempt to set the field properly in that case
     views.isCallComposerCapable = isCallComposerCapable(views.number);
-    setCallDetailsEntriesHistoryResults(
-        views.number, callDetailsEntries, getAllHistoricalData(views.number, callDetailsEntries));
-    views.setDetailedPhoneDetails(callDetailsEntries);
+    CallDetailsEntries updatedCallDetailsEntries =
+        generateAndMapNewCallDetailsEntriesHistoryResults(
+            views.number,
+            callDetailsEntries,
+            getAllHistoricalData(views.number, callDetailsEntries));
+    views.setDetailedPhoneDetails(updatedCallDetailsEntries);
     views.lightbringerReady = getLightbringer().isReachable(mActivity, views.number);
     final AsyncTask<Void, Void, Boolean> loadDataTask =
         new AsyncTask<Void, Void, Boolean>() {
@@ -625,23 +699,27 @@
     return historicalData;
   }
 
-  private void setCallDetailsEntriesHistoryResults(
+  private static CallDetailsEntries generateAndMapNewCallDetailsEntriesHistoryResults(
       @Nullable String number,
       @NonNull CallDetailsEntries callDetailsEntries,
       @NonNull Map<CallDetailsEntry, List<HistoryResult>> mappedResults) {
     if (number == null) {
-      return;
+      return callDetailsEntries;
     }
-    for (CallDetailsEntry entry : callDetailsEntries.entries) {
+    CallDetailsEntries.Builder mutableCallDetailsEntries = CallDetailsEntries.newBuilder();
+    for (CallDetailsEntry entry : callDetailsEntries.getEntriesList()) {
+      CallDetailsEntry.Builder newEntry = CallDetailsEntry.newBuilder().mergeFrom(entry);
       List<HistoryResult> results = mappedResults.get(entry);
       if (results != null) {
-        entry.historyResults = mappedResults.get(entry).toArray(new HistoryResult[0]);
+        newEntry.addAllHistoryResults(mappedResults.get(entry));
         LogUtil.v(
-            "CallLogAdapter.setCallDetailsEntriesHistoryResults",
+            "CallLogAdapter.generateAndMapNewCallDetailsEntriesHistoryResults",
             "mapped %d results",
-            entry.historyResults.length);
+            newEntry.getHistoryResultsList().size());
       }
+      mutableCallDetailsEntries.addEntries(newEntry.build());
     }
+    return mutableCallDetailsEntries.build();
   }
 
   /**
@@ -703,21 +781,21 @@
   private static CallDetailsEntries createCallDetailsEntries(Cursor cursor, int count) {
     Assert.isMainThread();
     int position = cursor.getPosition();
-    CallDetailsEntries entries = new CallDetailsEntries();
-    entries.entries = new CallDetailsEntry[count];
+    CallDetailsEntries.Builder entries = CallDetailsEntries.newBuilder();
     for (int i = 0; i < count; i++) {
-      CallDetailsEntry entry = new CallDetailsEntry();
-      entry.callId = cursor.getLong(CallLogQuery.ID);
-      entry.callType = cursor.getInt(CallLogQuery.CALL_TYPE);
-      entry.dataUsage = cursor.getLong(CallLogQuery.DATA_USAGE);
-      entry.date = cursor.getLong(CallLogQuery.DATE);
-      entry.duration = cursor.getLong(CallLogQuery.DURATION);
-      entry.features |= cursor.getInt(CallLogQuery.FEATURES);
-      entries.entries[i] = entry;
+      CallDetailsEntry.Builder entry =
+          CallDetailsEntry.newBuilder()
+              .setCallId(cursor.getLong(CallLogQuery.ID))
+              .setCallType(cursor.getInt(CallLogQuery.CALL_TYPE))
+              .setDataUsage(cursor.getLong(CallLogQuery.DATA_USAGE))
+              .setDate(cursor.getLong(CallLogQuery.DATE))
+              .setDuration(cursor.getLong(CallLogQuery.DURATION))
+              .setFeatures(cursor.getInt(CallLogQuery.FEATURES));
+      entries.addEntries(entry.build());
       cursor.moveToNext();
     }
     cursor.moveToPosition(position);
-    return entries;
+    return entries.build();
   }
 
   /**
@@ -822,7 +900,7 @@
         details.contactUserType == ContactsUtils.USER_TYPE_WORK ? View.VISIBLE : View.GONE);
 
     if (views.voicemailUri != null
-        && selectedItems.get((int) ContentUris.parseId(Uri.parse(views.voicemailUri)))) {
+        && selectedItems.get(getVoicemailId(views.voicemailUri)) != null) {
       views.checkBoxView.setVisibility(View.VISIBLE);
       views.quickContactView.setVisibility(View.GONE);
     } else if (views.voicemailUri != null) {
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemHelper.java b/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
index a5df8cc..ac43b9e 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
@@ -269,7 +269,7 @@
     if (!TextUtils.isEmpty(details.getPreferredName())) {
       recipient = details.getPreferredName();
     } else {
-      recipient = details.displayNumber + details.postDialDigits;
+      recipient = details.displayNumber;
     }
     return recipient;
   }
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 9adcddb..b57f9b0 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -22,6 +22,7 @@
 import android.content.res.Resources;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.support.annotation.NonNull;
@@ -31,7 +32,10 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.PhoneNumberUtils;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
+import android.view.ContextMenu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewStub;
@@ -41,7 +45,7 @@
 import android.widget.TextView;
 import com.android.contacts.common.ClipboardUtils;
 import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
 import com.android.contacts.common.dialog.CallSubjectDialog;
 import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.app.DialtactsActivity;
@@ -53,14 +57,16 @@
 import com.android.dialer.blocking.FilteredNumberCompat;
 import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.callcomposer.CallComposerActivity;
-import com.android.dialer.callcomposer.nano.CallComposerContact;
-import com.android.dialer.calldetails.nano.CallDetailsEntries;
+import com.android.dialer.callcomposer.CallComposerContact;
+import com.android.dialer.calldetails.CallDetailsEntries;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.CompatUtils;
 import com.android.dialer.lightbringer.Lightbringer;
 import com.android.dialer.lightbringer.LightbringerComponent;
+import com.android.dialer.logging.ContactSource;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
@@ -76,7 +82,9 @@
  * CallLogAdapter.
  */
 public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
-    implements View.OnClickListener, MenuItem.OnMenuItemClickListener {
+    implements View.OnClickListener,
+        MenuItem.OnMenuItemClickListener,
+        View.OnCreateContextMenuListener {
   /** The root view of the call log list item */
   public final View rootView;
   /** The quick contact badge for the contact. */
@@ -98,7 +106,6 @@
   private final CachedNumberLookupService mCachedNumberLookupService;
   private final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
   private final OnClickListener mBlockReportListener;
-  private final int mPhotoSize;
   /** Whether the data fields are populated by the worker thread, ready to be shown. */
   public boolean isLoaded;
   /** The view containing call log item actions. Null until the ViewStub is inflated. */
@@ -237,7 +244,6 @@
     this.primaryActionButtonView = primaryActionButtonView;
     this.workIconView = (ImageView) rootView.findViewById(R.id.work_profile_icon);
     this.checkBoxView = (ImageView) rootView.findViewById(R.id.quick_contact_checkbox);
-    mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
 
     // Set text height to false on the TextViews so they don't have extra padding.
     phoneCallDetailsViews.nameView.setElegantTextHeight(false);
@@ -249,7 +255,11 @@
     }
     primaryActionButtonView.setOnClickListener(this);
     primaryActionView.setOnClickListener(mExpandCollapseListener);
-    primaryActionView.setOnLongClickListener(longPressListener);
+    if (mVoicemailPlaybackPresenter != null) {
+      primaryActionView.setOnLongClickListener(longPressListener);
+    } else {
+      primaryActionView.setOnCreateContextMenuListener(this);
+    }
   }
 
   public static CallLogListItemViewHolder create(
@@ -689,36 +699,23 @@
       return;
     }
 
-    final String lookupKey =
-        info.lookupUri != null ? UriUtils.getLookupKeyFromUri(info.lookupUri) : null;
     final String displayName = TextUtils.isEmpty(info.name) ? displayNumber : info.name;
-    final DefaultImageRequest request =
-        new DefaultImageRequest(displayName, lookupKey, getContactType(), true /* isCircular */);
-
-    if (info.photoId == 0 && info.photoUri != null) {
-      ContactPhotoManager.getInstance(mContext)
-          .loadPhoto(
-              quickContactView,
-              info.photoUri,
-              mPhotoSize,
-              false /* darkTheme */,
-              true /* isCircular */,
-              request);
-    } else {
-      ContactPhotoManager.getInstance(mContext)
-          .loadThumbnail(
-              quickContactView,
-              info.photoId,
-              false /* darkTheme */,
-              true /* isCircular */,
-              request);
-    }
+    ContactPhotoManager.getInstance(mContext)
+        .loadDialerThumbnailOrPhoto(
+            quickContactView,
+            info.lookupUri,
+            info.photoId,
+            info.photoUri,
+            displayName,
+            getContactType());
   }
 
   private int getContactType() {
     int contactType = ContactPhotoManager.TYPE_DEFAULT;
     if (mCallLogCache.isVoicemailNumber(accountHandle, number)) {
       contactType = ContactPhotoManager.TYPE_VOICEMAIL;
+    } else if (isSpam) {
+      contactType = ContactPhotoManager.TYPE_SPAM;
     } else if (mCachedNumberLookupService != null
         && mCachedNumberLookupService.isBusiness(info.sourceType)) {
       contactType = ContactPhotoManager.TYPE_BUSINESS;
@@ -742,6 +739,7 @@
       CallSubjectDialog.start(
           (Activity) mContext,
           info.photoId,
+          info.photoUri,
           info.lookupUri,
           (String) nameOrNumber /* top line of contact view in call subject dialog */,
           number,
@@ -802,18 +800,24 @@
   }
 
   private CallComposerContact buildContact() {
-    CallComposerContact contact = new CallComposerContact();
-    contact.photoId = info.photoId;
-    contact.photoUri = info.photoUri == null ? null : info.photoUri.toString();
-    contact.contactUri = info.lookupUri == null ? null : info.lookupUri.toString();
-    contact.nameOrNumber = (String) nameOrNumber;
-    contact.contactType = getContactType();
-    contact.number = number;
+    CallComposerContact.Builder contact = CallComposerContact.newBuilder();
+    contact.setPhotoId(info.photoId);
+    if (info.photoUri != null) {
+      contact.setPhotoUri(info.photoUri.toString());
+    }
+    if (info.lookupUri != null) {
+      contact.setContactUri(info.lookupUri.toString());
+    }
+    contact.setNameOrNumber((String) nameOrNumber);
+    contact.setContactType(getContactType());
+    contact.setNumber(number);
     /* second line of contact view. */
-    contact.displayNumber = TextUtils.isEmpty(info.name) ? null : displayNumber;
+    if (!TextUtils.isEmpty(info.name)) {
+      contact.setDisplayNumber(displayNumber);
+    }
     /* phone number type (e.g. mobile) in second line of contact view */
-    contact.numberLabel = numberType;
-    return contact;
+    contact.setNumberLabel(numberType);
+    return contact.build();
   }
 
   private void logCallLogAction(int id) {
@@ -876,6 +880,104 @@
     return LightbringerComponent.get(mContext).getLightbringer();
   }
 
+  @Override
+  public void onCreateContextMenu(
+      final ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+    if (TextUtils.isEmpty(number)) {
+      return;
+    }
+
+    if (callType == CallLog.Calls.VOICEMAIL_TYPE) {
+      menu.setHeaderTitle(mContext.getResources().getText(R.string.voicemail));
+    } else {
+      menu.setHeaderTitle(
+          PhoneNumberUtilsCompat.createTtsSpannable(
+              BidiFormatter.getInstance().unicodeWrap(number, TextDirectionHeuristics.LTR)));
+    }
+
+    menu.add(
+            ContextMenu.NONE,
+            R.id.context_menu_copy_to_clipboard,
+            ContextMenu.NONE,
+            R.string.action_copy_number_text)
+        .setOnMenuItemClickListener(this);
+
+    // The edit number before call does not show up if any of the conditions apply:
+    // 1) Number cannot be called
+    // 2) Number is the voicemail number
+    // 3) Number is a SIP address
+
+    if (PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation)
+        && !mCallLogCache.isVoicemailNumber(accountHandle, number)
+        && !PhoneNumberHelper.isSipNumber(number)) {
+      menu.add(
+              ContextMenu.NONE,
+              R.id.context_menu_edit_before_call,
+              ContextMenu.NONE,
+              R.string.action_edit_number_before_call)
+          .setOnMenuItemClickListener(this);
+    }
+
+    if (callType == CallLog.Calls.VOICEMAIL_TYPE
+        && phoneCallDetailsViews.voicemailTranscriptionView.length() > 0) {
+      menu.add(
+              ContextMenu.NONE,
+              R.id.context_menu_copy_transcript_to_clipboard,
+              ContextMenu.NONE,
+              R.string.copy_transcript_text)
+          .setOnMenuItemClickListener(this);
+    }
+
+    String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+    boolean isVoicemailNumber = mCallLogCache.isVoicemailNumber(accountHandle, number);
+    if (!isVoicemailNumber
+        && FilteredNumbersUtil.canBlockNumber(mContext, e164Number, number)
+        && FilteredNumberCompat.canAttemptBlockOperations(mContext)) {
+      boolean isBlocked = blockId != null;
+      if (isBlocked) {
+        menu.add(
+                ContextMenu.NONE,
+                R.id.context_menu_unblock,
+                ContextMenu.NONE,
+                R.string.call_log_action_unblock_number)
+            .setOnMenuItemClickListener(this);
+      } else {
+        if (isSpamFeatureEnabled) {
+          if (isSpam) {
+            menu.add(
+                    ContextMenu.NONE,
+                    R.id.context_menu_report_not_spam,
+                    ContextMenu.NONE,
+                    R.string.call_log_action_remove_spam)
+                .setOnMenuItemClickListener(this);
+            menu.add(
+                    ContextMenu.NONE,
+                    R.id.context_menu_block,
+                    ContextMenu.NONE,
+                    R.string.call_log_action_block_number)
+                .setOnMenuItemClickListener(this);
+          } else {
+            menu.add(
+                    ContextMenu.NONE,
+                    R.id.context_menu_block_report_spam,
+                    ContextMenu.NONE,
+                    R.string.call_log_action_block_report_number)
+                .setOnMenuItemClickListener(this);
+          }
+        } else {
+          menu.add(
+                  ContextMenu.NONE,
+                  R.id.context_menu_block,
+                  ContextMenu.NONE,
+                  R.string.call_log_action_block_number)
+              .setOnMenuItemClickListener(this);
+        }
+      }
+    }
+
+    Logger.get(mContext).logScreenView(ScreenEvent.Type.CALL_LOG_CONTEXT_MENU, (Activity) mContext);
+  }
+
   public interface OnClickListener {
 
     void onBlockReportSpam(
@@ -883,21 +985,21 @@
         String number,
         String countryIso,
         int callType,
-        int contactSourceType);
+        ContactSource.Type contactSourceType);
 
     void onBlock(
         String displayNumber,
         String number,
         String countryIso,
         int callType,
-        int contactSourceType);
+        ContactSource.Type contactSourceType);
 
     void onUnblock(
         String displayNumber,
         String number,
         String countryIso,
         int callType,
-        int contactSourceType,
+        ContactSource.Type contactSourceType,
         boolean isSpam,
         Integer blockId);
 
@@ -906,6 +1008,6 @@
         String number,
         String countryIso,
         int callType,
-        int contactSourceType);
+        ContactSource.Type contactSourceType);
   }
 }
diff --git a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
index dfe5776..0007d18 100644
--- a/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/DefaultVoicemailNotifier.java
@@ -16,6 +16,7 @@
 
 package com.android.dialer.app.calllog;
 
+import android.annotation.TargetApi;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -26,11 +27,17 @@
 import android.net.Uri;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
+import android.os.PersistableBundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.os.BuildCompat;
 import android.support.v4.util.Pair;
+import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.telephony.PhoneNumberUtils;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.ArrayMap;
@@ -42,9 +49,11 @@
 import com.android.dialer.app.contactinfo.ContactPhotoLoader;
 import com.android.dialer.app.list.DialtactsPagerAdapter;
 import com.android.dialer.blocking.FilteredNumbersUtil;
+import com.android.dialer.calllogutils.PhoneAccountUtils;
+import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.notification.NotificationChannelManager;
 import com.android.dialer.notification.NotificationChannelManager.Channel;
 import com.android.dialer.phonenumbercache.ContactInfo;
@@ -58,9 +67,12 @@
   public static final String TAG = "VoicemailNotifier";
 
   /** The tag used to identify notifications from this class. */
-  static final String NOTIFICATION_TAG = "DefaultVoicemailNotifier";
+  static final String VISUAL_VOICEMAIL_NOTIFICATION_TAG = "DefaultVoicemailNotifier";
   /** The identifier of the notification of new voicemails. */
-  private static final int NOTIFICATION_ID = R.id.notification_voicemail;
+  private static final int VISUAL_VOICEMAIL_NOTIFICATION_ID = R.id.notification_visual_voicemail;
+
+  private static final int LEGACY_VOICEMAIL_NOTIFICATION_ID = R.id.notification_legacy_voicemail;
+  private static final String LEGACY_VOICEMAIL_NOTIFICATION_TAG = "legacy_voicemail";
 
   private final Context context;
   private final CallLogNotificationsQueryHelper queryHelper;
@@ -159,19 +171,103 @@
         Channel.VOICEMAIL,
         PhoneAccountHandles.getAccount(context, newCalls.get(0)));
 
-    LogUtil.i(TAG, "Creating voicemail notification");
-    getNotificationManager().notify(NOTIFICATION_TAG, NOTIFICATION_ID, groupSummary.build());
+    LogUtil.i(TAG, "Creating visual voicemail notification");
+    getNotificationManager()
+        .notify(
+            VISUAL_VOICEMAIL_NOTIFICATION_TAG,
+            VISUAL_VOICEMAIL_NOTIFICATION_ID,
+            groupSummary.build());
 
     for (NewCall voicemail : newCalls) {
       getNotificationManager()
           .notify(
               voicemail.callsUri.toString(),
-              NOTIFICATION_ID,
+              VISUAL_VOICEMAIL_NOTIFICATION_ID,
               createNotificationForVoicemail(voicemail, contactInfos));
     }
   }
 
   /**
+   * Replicates how packages/services/Telephony/NotificationMgr.java handles legacy voicemail
+   * notification. The notification will not be stackable because no information is available for
+   * individual voicemails.
+   */
+  @TargetApi(VERSION_CODES.O)
+  public void notifyLegacyVoicemail(
+      @NonNull PhoneAccountHandle phoneAccountHandle,
+      int count,
+      String voicemailNumber,
+      PendingIntent callVoicemailIntent,
+      PendingIntent voicemailSettingIntent) {
+    Assert.isNotNull(phoneAccountHandle);
+    Assert.checkArgument(BuildCompat.isAtLeastO());
+    TelephonyManager telephonyManager =
+        context
+            .getSystemService(TelephonyManager.class)
+            .createForPhoneAccountHandle(phoneAccountHandle);
+    Assert.isNotNull(telephonyManager);
+    LogUtil.i(TAG, "Creating legacy voicemail notification");
+
+    PersistableBundle carrierConfig = telephonyManager.getCarrierConfig();
+
+    String notificationTitle =
+        context
+            .getResources()
+            .getQuantityString(R.plurals.notification_voicemail_title, count, count);
+
+    TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+    PhoneAccount phoneAccount = telecomManager.getPhoneAccount(phoneAccountHandle);
+
+    String notificationText;
+    PendingIntent pendingIntent;
+
+    if (voicemailSettingIntent != null) {
+      // If the voicemail number if unknown, instead of calling voicemail, take the user
+      // to the voicemail settings.
+      notificationText = context.getString(R.string.notification_voicemail_no_vm_number);
+      pendingIntent = voicemailSettingIntent;
+    } else {
+      if (PhoneAccountUtils.getSubscriptionPhoneAccounts(context).size() > 1) {
+        notificationText = phoneAccount.getShortDescription().toString();
+      } else {
+        notificationText =
+            String.format(
+                context.getString(R.string.notification_voicemail_text_format),
+                PhoneNumberUtils.formatNumber(voicemailNumber));
+      }
+      pendingIntent = callVoicemailIntent;
+    }
+    Notification.Builder builder = new Notification.Builder(context);
+    builder
+        .setSmallIcon(android.R.drawable.stat_notify_voicemail)
+        .setColor(context.getColor(R.color.dialer_theme_color))
+        .setWhen(System.currentTimeMillis())
+        .setContentTitle(notificationTitle)
+        .setContentText(notificationText)
+        .setContentIntent(pendingIntent)
+        .setSound(telephonyManager.getVoicemailRingtoneUri(phoneAccountHandle))
+        .setOngoing(
+            carrierConfig.getBoolean(
+                CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL));
+
+    if (telephonyManager.isVoicemailVibrationEnabled(phoneAccountHandle)) {
+      builder.setDefaults(Notification.DEFAULT_VIBRATE);
+    }
+
+    NotificationChannelManager.applyChannel(
+        builder, context, Channel.VOICEMAIL, phoneAccountHandle);
+    Notification notification = builder.build();
+    getNotificationManager()
+        .notify(LEGACY_VOICEMAIL_NOTIFICATION_TAG, LEGACY_VOICEMAIL_NOTIFICATION_ID, notification);
+  }
+
+  public void cancelLegacyNotification() {
+    LogUtil.i(TAG, "Clearing legacy voicemail notification");
+    getNotificationManager()
+        .cancel(LEGACY_VOICEMAIL_NOTIFICATION_TAG, LEGACY_VOICEMAIL_NOTIFICATION_ID);
+  }
+
+  /**
    * Determines which ringtone Uri and Notification defaults to use when updating the notification
    * for the given call.
    */
@@ -268,7 +364,7 @@
     return new Notification.Builder(context)
         .setSmallIcon(android.R.drawable.stat_notify_voicemail)
         .setColor(context.getColor(R.color.dialer_theme_color))
-        .setGroup(NOTIFICATION_TAG)
+        .setGroup(VISUAL_VOICEMAIL_NOTIFICATION_TAG)
         .setOnlyAlertOnce(true)
         .setAutoCancel(true);
   }
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index 8b77c3f..a94c678 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -24,11 +24,11 @@
 import android.telecom.PhoneAccountHandle;
 import com.android.contacts.common.model.Contact;
 import com.android.contacts.common.model.ContactLoader;
-import com.android.dialer.callcomposer.nano.CallComposerContact;
+import com.android.dialer.callcomposer.CallComposerContact;
 import com.android.dialer.calldetails.CallDetailsActivity;
-import com.android.dialer.calldetails.nano.CallDetailsEntries;
+import com.android.dialer.calldetails.CallDetailsEntries;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.nano.CallInitiationType;
 import com.android.dialer.lightbringer.LightbringerComponent;
 import com.android.dialer.util.CallUtil;
 import com.android.dialer.util.IntentUtil;
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index aa04d81..de07bb4 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -41,8 +41,8 @@
 import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
 import com.android.dialer.app.contactinfo.ContactPhotoLoader;
 import com.android.dialer.app.list.DialtactsPagerAdapter;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.nano.CallInitiationType;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.notification.NotificationChannelManager;
 import com.android.dialer.notification.NotificationChannelManager.Channel;
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index bc78eda..0c72077 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -25,13 +25,14 @@
 import android.telecom.PhoneAccount;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
+import android.text.util.Linkify;
 import android.view.View;
 import android.widget.TextView;
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.calllogcache.CallLogCache;
 import com.android.dialer.calllogutils.PhoneCallDetails;
+import com.android.dialer.logging.ContactSource;
 import com.android.dialer.oem.MotorolaUtils;
-import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.util.DialerUtils;
 import java.util.ArrayList;
@@ -142,6 +143,8 @@
     views.nameView.setText(nameText);
 
     if (isVoicemail) {
+      int relevantLinkTypes = Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS | Linkify.WEB_URLS;
+      views.voicemailTranscriptionView.setAutoLinkMask(relevantLinkTypes);
       views.voicemailTranscriptionView.setText(
           TextUtils.isEmpty(details.transcription) ? null : details.transcription);
     }
@@ -230,7 +233,7 @@
       return false;
     }
     // For caller ID provided by Cequint we want to show the geo location.
-    if (details.sourceType == CachedContactInfo.SOURCE_TYPE_CEQUINT_CALLER_ID) {
+    if (details.sourceType == ContactSource.Type.SOURCE_TYPE_CEQUINT_CALLER_ID) {
       return true;
     }
     // Don't bother showing geo location for contacts.
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
index 5e820a7..7c25e7d 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
@@ -31,15 +31,15 @@
 import com.android.dialer.app.voicemail.VoicemailErrorManager;
 import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 
 public class VisualVoicemailCallLogFragment extends CallLogFragment {
 
   private final ContentObserver mVoicemailStatusObserver = new CustomContentObserver();
   private VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
 
-  private VoicemailErrorManager mVoicemailAlertManager;
+  private VoicemailErrorManager mVoicemailErrorManager;
 
   public VisualVoicemailCallLogFragment() {
     super(CallLog.Calls.VOICEMAIL_TYPE);
@@ -63,14 +63,14 @@
   @Override
   public void onActivityCreated(Bundle savedInstanceState) {
     super.onActivityCreated(savedInstanceState);
-    mVoicemailAlertManager =
+    mVoicemailErrorManager =
         new VoicemailErrorManager(getContext(), getAdapter().getAlertManager(), mModalAlertManager);
     getActivity()
         .getContentResolver()
         .registerContentObserver(
             VoicemailContract.Status.CONTENT_URI,
             true,
-            mVoicemailAlertManager.getContentObserver());
+            mVoicemailErrorManager.getContentObserver());
   }
 
   @Override
@@ -84,13 +84,13 @@
   public void onResume() {
     super.onResume();
     mVoicemailPlaybackPresenter.onResume();
-    mVoicemailAlertManager.onResume();
+    mVoicemailErrorManager.onResume();
   }
 
   @Override
   public void onPause() {
     mVoicemailPlaybackPresenter.onPause();
-    mVoicemailAlertManager.onPause();
+    mVoicemailErrorManager.onPause();
     super.onPause();
   }
 
@@ -98,8 +98,9 @@
   public void onDestroy() {
     getActivity()
         .getContentResolver()
-        .unregisterContentObserver(mVoicemailAlertManager.getContentObserver());
+        .unregisterContentObserver(mVoicemailErrorManager.getContentObserver());
     mVoicemailPlaybackPresenter.onDestroy();
+    mVoicemailErrorManager.onDestroy();
     getActivity().getContentResolver().unregisterContentObserver(mVoicemailStatusObserver);
     super.onDestroy();
   }
@@ -131,6 +132,9 @@
   public void onNotVisible() {
     LogUtil.enterBlock("VisualVoicemailCallLogFragment.onPageUnselected");
     super.onNotVisible();
+    if (getAdapter() != null && getAdapter().mActionMode != null) {
+      getAdapter().mActionMode.finish();
+    }
     if (getActivity() != null) {
       getActivity().setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
     }
diff --git a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
index 2aa3fb2..0243947 100644
--- a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
+++ b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
@@ -76,8 +76,8 @@
     GroupedNotificationUtil.removeNotification(
         mContext.getSystemService(NotificationManager.class),
         voicemailUri != null ? voicemailUri.toString() : null,
-        R.id.notification_voicemail,
-        DefaultVoicemailNotifier.NOTIFICATION_TAG);
+        R.id.notification_visual_voicemail,
+        DefaultVoicemailNotifier.VISUAL_VOICEMAIL_NOTIFICATION_TAG);
   }
 
   @Override
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
index 85a9c3e..7a5db19 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
@@ -23,6 +23,7 @@
 import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.ContactSource.Type;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.util.ExpirableCache;
@@ -183,7 +184,7 @@
         new NumberWithCountryIso(request.number, request.countryIso);
     ContactInfo existingInfo = mCache.getPossiblyExpired(numberCountryIso);
 
-    final boolean isRemoteSource = info.sourceType != 0;
+    final boolean isRemoteSource = info.sourceType != Type.UNKNOWN_SOURCE_TYPE;
 
     // Don't force redraw if existing info in the cache is equal to {@link ContactInfo#EMPTY}
     // to avoid updating the data set for every new row that is scrolled into view.
@@ -346,7 +347,7 @@
           shouldRedraw |= queryContactInfo(request);
           if (shouldRedraw
               && (mUpdateRequests.isEmpty()
-                  || request.isLocalRequest() && !mUpdateRequests.peek().isLocalRequest())) {
+                  || (request.isLocalRequest() && !mUpdateRequests.peek().isLocalRequest()))) {
             shouldRedraw = false;
             mHandler.sendEmptyMessage(REDRAW);
           }
diff --git a/java/com/android/dialer/app/dialpad/DialpadFragment.java b/java/com/android/dialer/app/dialpad/DialpadFragment.java
index 80be8fe..271f621 100644
--- a/java/com/android/dialer/app/dialpad/DialpadFragment.java
+++ b/java/com/android/dialer/app/dialpad/DialpadFragment.java
@@ -78,8 +78,8 @@
 import com.android.dialer.app.R;
 import com.android.dialer.app.SpecialCharSequenceMgr;
 import com.android.dialer.app.calllog.CallLogAsync;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.nano.CallInitiationType;
 import com.android.dialer.calllogutils.PhoneAccountUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.dialpadview.DialpadKeyButton;
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
index b938133..ac4903c 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
@@ -25,8 +25,8 @@
 import com.android.dialer.app.R;
 import com.android.dialer.blocking.BlockNumberDialogFragment;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.InteractionEvent;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 
 public class BlockedNumbersAdapter extends NumbersAdapter {
@@ -55,8 +55,6 @@
     final String countryIso =
         cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.COUNTRY_ISO));
     final String number = cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.NUMBER));
-    final String normalizedNumber =
-        cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.NORMALIZED_NUMBER));
 
     final View deleteButton = view.findViewById(R.id.delete_button);
     deleteButton.setOnClickListener(
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
index 9ec6042..9310fcb 100644
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
+++ b/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
@@ -22,7 +22,7 @@
 import com.android.dialer.app.list.BlockedListSearchFragment;
 import com.android.dialer.app.list.SearchFragment;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.ScreenEvent;
+import com.android.dialer.logging.ScreenEvent;
 
 public class BlockedNumbersSettingsActivity extends AppCompatActivity
     implements SearchFragment.HostInterface {
diff --git a/java/com/android/dialer/app/list/BlockedListSearchFragment.java b/java/com/android/dialer/app/list/BlockedListSearchFragment.java
index 2129981..0f96e2d 100644
--- a/java/com/android/dialer/app/list/BlockedListSearchFragment.java
+++ b/java/com/android/dialer/app/list/BlockedListSearchFragment.java
@@ -23,7 +23,6 @@
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
-import android.util.Log;
 import android.util.TypedValue;
 import android.view.View;
 import android.widget.AdapterView;
@@ -37,14 +36,13 @@
 import com.android.dialer.blocking.BlockNumberDialogFragment;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.InteractionEvent;
 
 public class BlockedListSearchFragment extends RegularSearchFragment
     implements BlockNumberDialogFragment.Callback {
 
-  private static final String TAG = BlockedListSearchFragment.class.getSimpleName();
-
   private final TextWatcher mPhoneSearchQueryTextListener =
       new TextWatcher() {
         @Override
@@ -152,7 +150,9 @@
         blockNumber(number);
         break;
       default:
-        Log.w(TAG, "Ignoring unsupported shortcut type: " + shortcutType);
+        LogUtil.w(
+            "BlockedListSearchFragment.onItemClick",
+            "ignoring unsupported shortcut type: " + shortcutType);
         break;
     }
   }
@@ -205,7 +205,9 @@
 
   @Override
   public void onUnfilterNumberSuccess() {
-    Log.wtf(TAG, "Unblocked a number from the BlockedListSearchFragment");
+    LogUtil.e(
+        "BlockedListSearchFragment.onUnfilterNumberSuccess",
+        "unblocked a number from the BlockedListSearchFragment");
     goBack();
   }
 
diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
index 3b700d8..dba3d3a 100644
--- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
+++ b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
@@ -24,9 +24,13 @@
 import android.view.ViewGroup;
 import com.android.dialer.app.calllog.CallLogFragment;
 import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
+import com.android.dialer.calllog.CallLogComponent;
+import com.android.dialer.calllog.CallLogFramework;
+import com.android.dialer.calllog.ui.NewCallLogFragment;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.ConfigProviderBindings;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactsfragment.ContactsFragment;
 import com.android.dialer.database.CallLogQueryHandler;
 import com.android.dialer.speeddial.SpeedDialFragment;
 import com.android.dialer.util.ViewUtil;
@@ -54,11 +58,14 @@
   private final List<Fragment> fragments = new ArrayList<>();
   private final String[] tabTitles;
   private final boolean useNewSpeedDialTab;
-
+  private final boolean useNewCallLogTab;
+  private final boolean useNewContactsTab;
   private OldSpeedDialFragment oldSpeedDialFragment;
   private SpeedDialFragment speedDialFragment;
   private CallLogFragment callLogFragment;
-  private AllContactsFragment contactsFragment;
+  private NewCallLogFragment newCallLogFragment;
+  private AllContactsFragment oldContactsFragment;
+  private ContactsFragment contactsFragment;
   private CallLogFragment voicemailFragment;
 
   public boolean hasActiveVoicemailProvider;
@@ -68,6 +75,10 @@
     super(fm);
     useNewSpeedDialTab =
         ConfigProviderBindings.get(context).getBoolean("enable_new_favorites_tab", false);
+    CallLogFramework callLogFramework = CallLogComponent.get(context).callLogFramework();
+    useNewCallLogTab = callLogFramework.isNewCallLogEnabled(context);
+    useNewContactsTab =
+        ConfigProviderBindings.get(context).getBoolean("enable_new_contacts_tab", false);
     this.tabTitles = tabTitles;
     hasActiveVoicemailProvider = hasVoicemailProvider;
     fragments.addAll(Collections.nCopies(TAB_COUNT_WITH_VOICEMAIL, null));
@@ -95,15 +106,29 @@
           return oldSpeedDialFragment;
         }
       case TAB_INDEX_HISTORY:
-        if (callLogFragment == null) {
-          callLogFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
+        if (useNewCallLogTab) {
+          if (newCallLogFragment == null) {
+            newCallLogFragment = new NewCallLogFragment();
+          }
+          return newCallLogFragment;
+        } else {
+          if (callLogFragment == null) {
+            callLogFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
+          }
+          return callLogFragment;
         }
-        return callLogFragment;
       case TAB_INDEX_ALL_CONTACTS:
-        if (contactsFragment == null) {
-          contactsFragment = new AllContactsFragment();
+        if (useNewContactsTab) {
+          if (contactsFragment == null) {
+            contactsFragment = new ContactsFragment();
+          }
+          return contactsFragment;
+        } else {
+          if (oldContactsFragment == null) {
+            oldContactsFragment = new AllContactsFragment();
+          }
+          return oldContactsFragment;
         }
-        return contactsFragment;
       case TAB_INDEX_VOICEMAIL:
         if (voicemailFragment == null) {
           voicemailFragment = new VisualVoicemailCallLogFragment();
@@ -131,8 +156,12 @@
       speedDialFragment = (SpeedDialFragment) fragment;
     } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_HISTORY) {
       callLogFragment = (CallLogFragment) fragment;
+    } else if (fragment instanceof NewCallLogFragment) {
+      newCallLogFragment = (NewCallLogFragment) fragment;
+    } else if (fragment instanceof ContactsFragment) {
+      contactsFragment = (ContactsFragment) fragment;
     } else if (fragment instanceof AllContactsFragment) {
-      contactsFragment = (AllContactsFragment) fragment;
+      oldContactsFragment = (AllContactsFragment) fragment;
     } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_VOICEMAIL) {
       voicemailFragment = (CallLogFragment) fragment;
       LogUtil.v("ViewPagerAdapter.instantiateItem", voicemailFragment.toString());
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
index bf29ef3..0249893 100644
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ b/java/com/android/dialer/app/list/ListsFragment.java
@@ -44,9 +44,9 @@
 import com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler.Source;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.CallLogQueryHandler;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
-import com.android.dialer.logging.nano.ScreenEvent;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.speeddial.SpeedDialFragment;
 import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
 import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
@@ -76,6 +76,7 @@
   private final ArrayList<OnPageChangeListener> mOnPageChangeListeners = new ArrayList<>();
   /** The position of the currently selected tab. */
   private int mTabIndex = TAB_INDEX_SPEED_DIAL;
+  private boolean mPaused;
 
   private CallLogQueryHandler mCallLogQueryHandler;
 
@@ -104,6 +105,8 @@
     Trace.beginSection(TAG + " onResume");
     super.onResume();
 
+    mPaused = false;
+
     if (getUserVisibleHint()) {
       sendScreenViewForCurrentPosition();
     }
@@ -127,6 +130,8 @@
       ((CallLogFragment) mCurrentPage).onNotVisible();
     }
     super.onPause();
+
+    mPaused = true;
   }
 
   @Override
@@ -263,7 +268,7 @@
   public void onVoicemailStatusFetched(Cursor statusCursor) {
     mHasFetchedVoicemailStatus = true;
 
-    if (getActivity() == null || getActivity().isFinishing()) {
+    if (getActivity() == null || mPaused) {
       return;
     }
 
@@ -394,7 +399,7 @@
       return;
     }
 
-    int screenType;
+    ScreenEvent.Type screenType;
     switch (getCurrentTabIndex()) {
       case TAB_INDEX_SPEED_DIAL:
         screenType = ScreenEvent.Type.SPEED_DIAL;
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
index 4aafd96..4ae84b6 100644
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
@@ -51,8 +51,8 @@
 import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
 import com.android.dialer.app.R;
 import com.android.dialer.app.widget.EmptyContentView;
-import com.android.dialer.callintent.nano.CallInitiationType;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.ViewUtil;
@@ -462,8 +462,10 @@
     @Override
     public void onContactSelected(Uri contactUri, Rect targetRect) {
       if (mPhoneNumberPickerActionListener != null) {
-        CallSpecificAppData callSpecificAppData = new CallSpecificAppData();
-        callSpecificAppData.callInitiationType = CallInitiationType.Type.SPEED_DIAL;
+        CallSpecificAppData callSpecificAppData =
+            CallSpecificAppData.newBuilder()
+                .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
+                .build();
         mPhoneNumberPickerActionListener.onPickDataUri(
             contactUri, false /* isVideoCall */, callSpecificAppData);
       }
@@ -472,8 +474,10 @@
     @Override
     public void onCallNumberDirectly(String phoneNumber) {
       if (mPhoneNumberPickerActionListener != null) {
-        CallSpecificAppData callSpecificAppData = new CallSpecificAppData();
-        callSpecificAppData.callInitiationType = CallInitiationType.Type.SPEED_DIAL;
+        CallSpecificAppData callSpecificAppData =
+            CallSpecificAppData.newBuilder()
+                .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
+                .build();
         mPhoneNumberPickerActionListener.onPickPhoneNumber(
             phoneNumber, false /* isVideoCall */, callSpecificAppData);
       }
diff --git a/java/com/android/dialer/app/list/RegularSearchFragment.java b/java/com/android/dialer/app/list/RegularSearchFragment.java
index 2695953..0289679 100644
--- a/java/com/android/dialer/app/list/RegularSearchFragment.java
+++ b/java/com/android/dialer/app/list/RegularSearchFragment.java
@@ -27,7 +27,7 @@
 import com.android.dialer.app.R;
 import com.android.dialer.app.widget.EmptyContentView;
 import com.android.dialer.app.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
-import com.android.dialer.callintent.nano.CallInitiationType;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
 import com.android.dialer.util.PermissionsUtil;
@@ -133,7 +133,7 @@
   }
 
   @Override
-  protected int getCallInitiationType(boolean isRemoteDirectory) {
+  protected CallInitiationType.Type getCallInitiationType(boolean isRemoteDirectory) {
     return isRemoteDirectory
         ? CallInitiationType.Type.REMOTE_DIRECTORY
         : CallInitiationType.Type.REGULAR_SEARCH;
diff --git a/java/com/android/dialer/app/list/SearchFragment.java b/java/com/android/dialer/app/list/SearchFragment.java
index 4128300..264bdf8 100644
--- a/java/com/android/dialer/app/list/SearchFragment.java
+++ b/java/com/android/dialer/app/list/SearchFragment.java
@@ -42,7 +42,7 @@
 import com.android.dialer.app.dialpad.DialpadFragment.ErrorDialogFragment;
 import com.android.dialer.app.widget.DialpadSearchEmptyContentView;
 import com.android.dialer.app.widget.EmptyContentView;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
@@ -238,12 +238,13 @@
         number = adapter.getQueryString();
         listener = getOnPhoneNumberPickerListener();
         if (listener != null && !checkForProhibitedPhoneNumber(number)) {
-          CallSpecificAppData callSpecificAppData = new CallSpecificAppData();
-          callSpecificAppData.callInitiationType =
-              getCallInitiationType(false /* isRemoteDirectory */);
-          callSpecificAppData.positionOfSelectedSearchResult = position;
-          callSpecificAppData.charactersInSearchString =
-              getQueryString() == null ? 0 : getQueryString().length();
+          CallSpecificAppData callSpecificAppData =
+              CallSpecificAppData.newBuilder()
+                  .setCallInitiationType(getCallInitiationType(false /* isRemoteDirectory */))
+                  .setPositionOfSelectedSearchResult(position)
+                  .setCharactersInSearchString(
+                      getQueryString() == null ? 0 : getQueryString().length())
+                  .build();
           listener.onPickPhoneNumber(number, false /* isVideoCall */, callSpecificAppData);
         }
         break;
@@ -274,12 +275,13 @@
             TextUtils.isEmpty(mAddToContactNumber) ? adapter.getQueryString() : mAddToContactNumber;
         listener = getOnPhoneNumberPickerListener();
         if (listener != null && !checkForProhibitedPhoneNumber(number)) {
-          CallSpecificAppData callSpecificAppData = new CallSpecificAppData();
-          callSpecificAppData.callInitiationType =
-              getCallInitiationType(false /* isRemoteDirectory */);
-          callSpecificAppData.positionOfSelectedSearchResult = position;
-          callSpecificAppData.charactersInSearchString =
-              getQueryString() == null ? 0 : getQueryString().length();
+          CallSpecificAppData callSpecificAppData =
+              CallSpecificAppData.newBuilder()
+                  .setCallInitiationType(getCallInitiationType(false /* isRemoteDirectory */))
+                  .setPositionOfSelectedSearchResult(position)
+                  .setCharactersInSearchString(
+                      getQueryString() == null ? 0 : getQueryString().length())
+                  .build();
           listener.onPickPhoneNumber(number, true /* isVideoCall */, callSpecificAppData);
         }
         break;
diff --git a/java/com/android/dialer/app/list/SmartDialSearchFragment.java b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
index c783d3a..5d72ee6 100644
--- a/java/com/android/dialer/app/list/SmartDialSearchFragment.java
+++ b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
@@ -26,7 +26,7 @@
 import com.android.dialer.app.R;
 import com.android.dialer.app.dialpad.SmartDialCursorLoader;
 import com.android.dialer.app.widget.EmptyContentView;
-import com.android.dialer.callintent.nano.CallInitiationType;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.util.PermissionsUtil;
 
 /** Implements a fragment to load and display SmartDial search results. */
@@ -102,7 +102,7 @@
   }
 
   @Override
-  protected int getCallInitiationType(boolean isRemoteDirectory) {
+  protected CallInitiationType.Type getCallInitiationType(boolean isRemoteDirectory) {
     return CallInitiationType.Type.SMART_DIAL;
   }
 
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png
new file mode 100644
index 0000000..d6f6daa
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png b/java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png
new file mode 100644
index 0000000..d3c0378
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/empty_contacts.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/empty_speed_dial.png b/java/com/android/dialer/app/res/drawable-hdpi/empty_speed_dial.png
new file mode 100644
index 0000000..3e9232f
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/empty_speed_dial.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_archive_white_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_archive_white_24dp.png
new file mode 100644
index 0000000..bb72e89
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_archive_white_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_content_copy_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_content_copy_24dp.png
new file mode 100644
index 0000000..70eb073
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_content_copy_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_delete_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_delete_24dp.png
new file mode 100644
index 0000000..9fb43b0
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_delete_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.png
new file mode 100644
index 0000000..4e0d564
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.png
new file mode 100644
index 0000000..2cf41d5
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
new file mode 100644
index 0000000..043685f
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_grade_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..86eecdd
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_grade_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_handle.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_handle.png
new file mode 100644
index 0000000..34310aa
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_handle.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png
new file mode 100644
index 0000000..a36323c
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png
new file mode 100644
index 0000000..4b67cf7
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_more_vert_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..67f07e4
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_interested_googblue_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_not_interested_googblue_24dp.png
new file mode 100644
index 0000000..26a26f9
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_not_interested_googblue_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png
new file mode 100644
index 0000000..bf413f9
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_pause_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..4d2ea05
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_pause_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_people_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_people_24dp.png
new file mode 100644
index 0000000..ff698af
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_people_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..b27dfba
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_play_arrow_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_play_arrow_24dp.png
new file mode 100644
index 0000000..57c9fa5
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_play_arrow_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png
new file mode 100644
index 0000000..1ee6adf
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.png
new file mode 100644
index 0000000..3a1a7a7
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_results_phone.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_schedule_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..f3581d1
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_share_white_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_share_white_24dp.png
new file mode 100644
index 0000000..b09a692
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_share_white_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png
new file mode 100644
index 0000000..62e1f8a
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png
new file mode 100644
index 0000000..03643b2
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_off_dis.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_off_dis.png
new file mode 100644
index 0000000..47e3249
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_off_dis.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_off_dk.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_off_dk.png
new file mode 100644
index 0000000..2bfe0c0
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_off_dk.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_on_dis.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_on_dis.png
new file mode 100644
index 0000000..90b5238
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_on_dis.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_on_dk.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_on_dk.png
new file mode 100644
index 0000000..7556637
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_vm_sound_on_dk.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_voicemail_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..03a62e1
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_volume_down_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..e22e92c
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_volume_up_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..57d7871
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png
new file mode 100644
index 0000000..3dc1c17
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png
new file mode 100644
index 0000000..44b06f2
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml b/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml
index f598478..17a4520 100644
--- a/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/all_contacts_fragment.xml
@@ -41,7 +41,9 @@
       android:paddingTop="18dp"
       android:fadingEdge="none"
       android:fastScrollEnabled="true"
-      android:nestedScrollingEnabled="true"/>
+      android:nestedScrollingEnabled="true"
+      android:cropToPadding="false"
+      android:clipToPadding="false"/>
 
     <com.android.dialer.app.widget.EmptyContentView
       android:id="@+id/empty_list_view"
diff --git a/java/com/android/dialer/app/res/menu/actionbar_delete.xml b/java/com/android/dialer/app/res/menu/actionbar_delete.xml
index 10e5349..b8aa381 100644
--- a/java/com/android/dialer/app/res/menu/actionbar_delete.xml
+++ b/java/com/android/dialer/app/res/menu/actionbar_delete.xml
@@ -18,7 +18,7 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
   <item
-      android:id="@+id/call_detail_delete_menu_item"
+      android:id="@+id/action_bar_delete_menu_item"
       android:icon="@drawable/quantum_ic_delete_white_24"
       android:title="@string/delete"
       app:showAsAction="always"/>
diff --git a/java/com/android/dialer/app/res/mipmap-hdpi/ic_launcher_phone.png b/java/com/android/dialer/app/res/mipmap-hdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..15c4142
--- /dev/null
+++ b/java/com/android/dialer/app/res/mipmap-hdpi/ic_launcher_phone.png
Binary files differ
diff --git a/java/com/android/dialer/app/res/values-af/strings.xml b/java/com/android/dialer/app/res/values-af/strings.xml
index 6188a59..0245a2d 100644
--- a/java/com/android/dialer/app/res/values-af/strings.xml
+++ b/java/com/android/dialer/app/res/values-af/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Bel terug"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Boodskap"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Bel <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Stemboodskapnommer onbekend"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Stemboodskappe </item>
       <item quantity="one">Stemboodskap</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Stemboodskap"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"stemboodskap"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"stemboodskappe"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nee"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Vee geselekteerde <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> uit?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> om <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-am/strings.xml b/java/com/android/dialer/app/res/values-am/strings.xml
index 228fe94..befa4c4 100644
--- a/java/com/android/dialer/app/res/values-am/strings.xml
+++ b/java/com/android/dialer/app/res/values-am/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"መልሰህ ደውል"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"መልእክት"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>:<xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ይደውሉ"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"የማይታወቅ የድምፅ መልዕክት ቁጥር"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"የድምፅ መልዕክት"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ሰከንድ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ደቂቃ <xliff:g id="SECONDS">%s</xliff:g> ሴከ"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"የድምፅ መልዕክት"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"የድምፅ መልዕክቶች"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"አዎ"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"አይ"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g> ላይ"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ar/strings.xml b/java/com/android/dialer/app/res/values-ar/strings.xml
index 2d9c7e8..961e483 100644
--- a/java/com/android/dialer/app/res/values-ar/strings.xml
+++ b/java/com/android/dialer/app/res/values-ar/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"معاودة الاتصال"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"رسالة"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"طلب <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"رقم البريد الصوتي غير معروف"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="zero">لا تتوفر رسائل بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
       <item quantity="two">رسالتا بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
@@ -101,6 +103,11 @@
     <string name="voicemail" msgid="8899540969000957954">"البريد الصوتي"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ثانية"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> دقيقة <xliff:g id="SECONDS">%s</xliff:g> ثانية"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"البريد الصوتي"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"رسائل البريد الصوتي"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"نعم"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"لا"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"حذف رسائل <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> المحددة؟"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> في <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-az/strings.xml b/java/com/android/dialer/app/res/values-az/strings.xml
index e2e9bea..78440fd 100644
--- a/java/com/android/dialer/app/res/values-az/strings.xml
+++ b/java/com/android/dialer/app/res/values-az/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Geriyə zəng"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mesaj"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> nömrəsini yığın"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Səsli e-poçt nömrəsi naməlumdur"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Səsli poçt </item>
       <item quantity="one">Səsli poçt</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Səsli poçt"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> san"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> dəq <xliff:g id="SECONDS">%s</xliff:g> san"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"səsli e-məktub"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"səsli e-məktublar"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Bəli"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Xeyr"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> tarixində <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..ddb3112
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="2202739481132958990">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="4170587663888307424">"Telefonska tastatura"</string>
+    <string name="dialerIconLabel" msgid="3422916015542176907">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="7493268743411968630">"Istorija poziva"</string>
+    <string name="action_report_number" msgid="7231442711369737797">"Prijavi netačan broj"</string>
+    <string name="action_copy_number_text" msgid="832682558551502319">"Kopiraj broj"</string>
+    <string name="copy_transcript_text" msgid="937904189017310829">"Kopiraj transkripciju"</string>
+    <string name="action_block_number" msgid="3669819840999705278">"Blokiraj broj"</string>
+    <string name="action_unblock_number" msgid="6583611581996402004">"Deblokiraj broj"</string>
+    <string name="action_edit_number_before_call" msgid="8017492815878473837">"Izmeni broj pre poziva"</string>
+    <string name="call_log_delete_all" msgid="7852970926906523784">"Obriši istoriju poziva"</string>
+    <string name="call_log_trash_voicemail" msgid="6118493534178533972">"Izbriši govornu poruku"</string>
+    <string name="snackbar_voicemail_deleted" msgid="7463166543725496307">"Gov. pošta je izbrisana"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="6959743982796409941">"OPOZOVI"</string>
+    <string name="clearCallLogConfirmation_title" msgid="7051888019546472245">"Želite da obrišete istoriju poziva?"</string>
+    <string name="clearCallLogConfirmation" msgid="6844949465815109166">"Ovo će izbrisati sve pozive iz istorije"</string>
+    <string name="clearCallLogProgress_title" msgid="995004835687361977">"Briše se istorija poziva…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="9198964841862577505">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="8283366068539898486">"Propušten poziv"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8831332957103679183">"Propušten poziv za Work"</string>
+    <string name="notification_missedCallsTitle" msgid="3697442015345089802">"Propušteni pozivi"</string>
+    <string name="notification_missedCallsMsg" msgid="8176217633929018706">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%d</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Uzvrati poziv"</string>
+    <string name="notification_missedCall_message" msgid="5086910028988305964">"Pošalji SMS"</string>
+    <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Pozovi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Nepoznat broj govorne pošte"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> govorna poruka </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> govorne poruke </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> govornih poruka </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="5156500902796354071">"Pusti"</string>
+    <string name="notification_voicemail_callers_list" msgid="7543659703018479564">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="6547711461667072303">"Nova govorna poruka od <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="4384373852257757295">"Puštanje govorne pošte nije uspelo"</string>
+    <string name="voicemail_fetching_content" msgid="572320120918636014">"Govorna pošta se učitava…"</string>
+    <string name="voicemail_archiving_content" msgid="2415183864104922185">"Govorna pošta se arhivira…"</string>
+    <string name="voicemail_fetching_timout" msgid="2128873915839949783">"Učitavanje govorne pošte nije uspelo"</string>
+    <string name="call_log_voicemail_header" msgid="5799424860394542726">"Samo pozivi sa govornom poštom"</string>
+    <string name="call_log_incoming_header" msgid="1158753168119845168">"Samo dolazni pozivi"</string>
+    <string name="call_log_outgoing_header" msgid="149333910997122683">"Samo odlazni pozivi"</string>
+    <string name="call_log_missed_header" msgid="6491707499211289630">"Samo propušteni pozivi"</string>
+    <string name="call_log_item_count_and_date" msgid="723848797957319181">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="description_search_button" msgid="4515570469584782176">"pretraži"</string>
+    <string name="description_dial_button" msgid="699794433224646027">"biranje"</string>
+    <string name="description_digits_edittext" msgid="8908702618098485186">"broj za biranje"</string>
+    <string name="description_playback_start_stop" msgid="5320452461700750120">"Pokretanje ili zaustavljanje reprodukcije"</string>
+    <string name="description_playback_speakerphone" msgid="4852027754869750227">"Uključivanje ili isključivanje spikerfona"</string>
+    <string name="description_playback_seek" msgid="1340910573254132520">"Traženje pozicije u reprodukciji"</string>
+    <string name="description_rate_decrease" msgid="5053221110217704199">"Smanjivanje brzine reprodukcije"</string>
+    <string name="description_rate_increase" msgid="4372206363557406700">"Povećavanje brzine reprodukcije"</string>
+    <string name="action_menu_call_history_description" msgid="8829135306925008546">"Istorija poziva"</string>
+    <string name="action_menu_overflow_description" msgid="7648679686746517341">"Još opcija"</string>
+    <string name="action_menu_dialpad_button" msgid="1970631633457493180">"tastatura"</string>
+    <string name="menu_show_outgoing_only" msgid="6941420328999801171">"Prikaži samo odlazne"</string>
+    <string name="menu_show_incoming_only" msgid="6018600870504685564">"Prikaži samo dolazne"</string>
+    <string name="menu_show_missed_only" msgid="2266983597575047192">"Prikaži samo propuštene"</string>
+    <string name="menu_show_voicemails_only" msgid="1114917855179284592">"Prikaži samo govorne poruke"</string>
+    <string name="menu_show_all_calls" msgid="220054502052344488">"Prikaži sve pozive"</string>
+    <string name="add_2sec_pause" msgid="3417815038173424525">"Dodaj pauzu od 2 sekunde"</string>
+    <string name="add_wait" msgid="1177723010768282578">"Dodaj čekanje"</string>
+    <string name="dialer_settings_label" msgid="4980176284150290175">"Podešavanja"</string>
+    <string name="simulator_submenu_label" msgid="186156287346615267">"Simulator"</string>
+    <string name="menu_allContacts" msgid="8544950176866640863">"Svi kontakti"</string>
+    <string name="dialer_useDtmfDialpad" msgid="3919115408138798484">"Upotrebite brojčanik za tonsko biranje"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3487191628252824117">"Vrati se na poziv koji je u toku"</string>
+    <string name="dialer_addAnotherCall" msgid="3132945651710234674">"Dodaj poziv"</string>
+    <string name="actionIncomingCall" msgid="891346596090030558">"Dolazni pozivi"</string>
+    <string name="description_call_log_play_button" msgid="2349845005022431438">"Puštanje govorne pošte"</string>
+    <string name="description_view_contact" msgid="3940984937384372665">"Prikaži kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="1532402285334775372">"Pozovi <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="3341280873855253464">"Detalji o kontaktu za <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_spam_contact_details" msgid="5592578752881528368">"Kontakt informacije potencijalnog nepoželjnog pozivaoca <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="6483594535796216044">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> poziva."</string>
+    <string name="description_video_call" msgid="3738199365585751727">"Video poziv."</string>
+    <string name="description_send_text_message" msgid="8450269896765568596">"Slanje SMS-a za <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="2258821530650350303">"Nepreslušana govorna pošta"</string>
+    <string name="description_start_voice_search" msgid="8380022725973015261">"Pokretanje glasovne pretrage"</string>
+    <string name="menu_callNumber" msgid="1540773545517152514">"Pozovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
+    <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"govornu poruku"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"govorne poruke"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
+    <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
+    <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
+    <string name="voicemailCallLogDateTimeFormatWithDuration" msgid="7224408726047155205">"<xliff:g id="DATEANDTIME">%1$s</xliff:g> • <xliff:g id="DURATION">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6317935773274628316">"Nije moguće pozvati ovaj broj"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="6437173108290752604">"Da biste podesili govornu poštu, idite u Meni &gt; Podešavanja."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="1044988101597862159">"Da biste pozvali govornu poštu, prvo isključite režim rada u avionu."</string>
+    <string name="contact_list_loading" msgid="7919825236309749352">"Učitava se…"</string>
+    <string name="imei" msgid="5214505934662768308">"IMEI"</string>
+    <string name="meid" msgid="3333779521535224028">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6205424276735652071">"Učitava se sa SIM kartice…"</string>
+    <string name="simContacts_title" msgid="7961069730386378887">"Kontakti na SIM kartici"</string>
+    <string name="add_contact_not_available" msgid="7065884447935173347">"Nema dostupne aplikacije za kontakte"</string>
+    <string name="voice_search_not_available" msgid="6546240433719732905">"Glasovna pretraga nije dostupna"</string>
+    <string name="call_not_available" msgid="7850148370757361155">"Nije moguće uputiti telefonski poziv jer je aplikacija Telefon onemogućena."</string>
+    <string name="dialer_hint_find_contact" msgid="2023214799381149808">"Pretraži kontakte"</string>
+    <string name="block_number_search_hint" msgid="5377706079015099416">"Dodajte broj ili pretražite kontakte"</string>
+    <string name="call_log_all_empty" msgid="3955572868518162004">"Istorija poziva je prazna"</string>
+    <string name="call_log_all_empty_action" msgid="852218280136243014">"Pozovi"</string>
+    <string name="call_log_missed_empty" msgid="7094936030845062214">"Nemate nijedan propušten poziv."</string>
+    <string name="call_log_voicemail_empty" msgid="273623903423275178">"Prijemno sanduče govorne pošte je prazno."</string>
+    <string name="show_favorites_only" msgid="8089163582448737837">"Prikaži samo omiljene"</string>
+    <string name="call_log_activity_title" msgid="1275242727244945527">"Istorija poziva"</string>
+    <string name="call_log_all_title" msgid="6042262422192020327">"Svi"</string>
+    <string name="call_log_missed_title" msgid="17254005889268015">"Propušteni"</string>
+    <string name="call_log_voicemail_title" msgid="6504826963256437971">"Govorna pošta"</string>
+    <string name="tab_speed_dial" msgid="6616404752227561075">"Brzo biranje"</string>
+    <string name="tab_history" msgid="7420269368689503596">"Istorija poziva"</string>
+    <string name="tab_all_contacts" msgid="5531733977693943015">"Kontakti"</string>
+    <string name="tab_voicemail" msgid="2458548090088316246">"Govorna pošta"</string>
+    <string name="favorite_hidden" msgid="1077010324849831399">"Uklonjeno je iz omiljenih"</string>
+    <string name="favorite_hidden_undo" msgid="5660280521854875320">"Opozovi"</string>
+    <string name="search_shortcut_call_number" msgid="8847918845036880688">"Pozovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="2076374262874775425">"Napravi novi kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="701957016267810766">"Dodaj u kontakt"</string>
+    <string name="search_shortcut_send_sms_message" msgid="1065069206532610854">"Pošalji SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="3746207985295802095">"Uputi video poziv"</string>
+    <string name="search_shortcut_block_number" msgid="4587283230665805776">"Blokiraj broj"</string>
+    <string name="num_missed_calls" msgid="5171791753696317082">"Novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="3346406399966039505">"Nemate nijedan kontakt na brzom biranju"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="3470360584638103033">"Dodaj omiljen kontakt"</string>
+    <string name="all_contacts_empty" msgid="243071567853617177">"Još uvek nemate nijedan kontakt"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="2907328217206743952">"Dodaj kontakt"</string>
+    <string name="contact_tooltip" msgid="8871614660967439999">"Dodirnite sliku da biste videli sve brojeve ili dodirnite i zadržite da biste im promenili raspored"</string>
+    <string name="remove_contact" msgid="2353580570488923668">"Ukloni"</string>
+    <string name="call_log_action_video_call" msgid="7565549950343850819">"Video poziv"</string>
+    <string name="call_log_action_send_message" msgid="6948727362660115554">"Pošalji poruku"</string>
+    <string name="call_log_action_details" msgid="2091370737371449501">"Detalji poziva"</string>
+    <string name="call_log_action_share_voicemail" msgid="8888250682433873454">"Pošalji u…"</string>
+    <string name="call_log_action_call" msgid="682724094251540583">"Pozovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="8292535799379230029">"Propušteni poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="3920182963103160610">"Primljeni poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="145170985013419170">"Nepročitana govorna poruka od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="5585559881573227732">"Govorna poruka od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="543952487882919924">"Pozvali ste: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="call_log_via_number" msgid="1340307109806397650">"preko <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="call_log_via_number_phone_account" msgid="7698459003033083416">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> preko <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <string name="description_call_action" msgid="4042796498169106545">"Pozovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="1237090968588659650">"Uputite video poziv kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="3290143432403538524">"Pusti govornu poštu od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="737337291418966183">"Reprodukuj govornu poštu kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="2400610579956333661">"Pauziraj govornu poštu kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="5305509366448404410">"Izbriši govornu poštu kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="7562208210097630839">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nova poruka govorne pošte</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nove poruke govorne pošte</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> novih poruka govorne pošte</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="1928282350281564130">"Napravite kontakt za <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="5485618682525057684">"Dodajte <xliff:g id="NAMEORNUMBER">^1</xliff:g> postojećem kontaktu"</string>
+    <string name="description_details_action" msgid="2061866409737706174">"Detalji poziva za <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="6821678859297454838">"Izbrisano iz istorije poziva"</string>
+    <string name="call_log_header_today" msgid="1576119097475845293">"Danas"</string>
+    <string name="call_log_header_yesterday" msgid="5616077776205329563">"Juče"</string>
+    <string name="call_log_header_other" msgid="4940676886254217644">"Stariji"</string>
+    <string name="call_detail_list_header" msgid="1174040565810083473">"Lista poziva"</string>
+    <string name="voicemail_speaker_on" msgid="3151333608926996668">"Uključite zvučnik."</string>
+    <string name="voicemail_speaker_off" msgid="2530064206962034201">"Isključite zvučnik."</string>
+    <string name="voicemail_play_faster" msgid="2742012169751409677">"Brža reprodukcija."</string>
+    <string name="voicemail_play_slower" msgid="868588128301087884">"Sporija reprodukcija."</string>
+    <string name="voicemail_play_start_pause" msgid="3874823480278334664">"Započnite ili pauzirajte reprodukciju."</string>
+    <string name="display_options_title" msgid="3880091801055797975">"Opcije prikaza"</string>
+    <string name="sounds_and_vibration_title" msgid="3075050000721181384">"Zvuci i vibracija"</string>
+    <string name="accessibility_settings_title" msgid="3329027650429831820">"Pristupačnost"</string>
+    <string name="ringtone_title" msgid="8377174189894648486">"Zvuk zvona telefona"</string>
+    <string name="vibrate_on_ring_title" msgid="631441314790960485">"Vibriraj i za pozive"</string>
+    <string name="dtmf_tone_enable_title" msgid="3273762431523939277">"Tonovi tastature"</string>
+    <string name="dtmf_tone_length_title" msgid="534096029202438539">"Dužina trajanja tona tastature"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="3136353015227162823">"Normalno"</item>
+    <item msgid="5376841175538523822">"Dugačak"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="8008181606657693452">"Brzi odgovori"</string>
+    <string name="call_settings_label" msgid="7824611757200960807">"Pozivi"</string>
+    <string name="manage_blocked_numbers_label" msgid="16823761991832273">"Blokiranje poziva"</string>
+    <string name="voicemail_settings_label" msgid="4594299554519920570">"Govorna pošta"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="6936696532562923971">"Blokiranje poziva je privremeno isključeno"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="5484785225285297040">"Blokiranje poziva je onemogućeno zato što ste kontaktirali službe za pomoć u hitnim slučajevima sa ovog telefona u poslednjih 48 sati. Automatski će biti ponovo omogućeno kada istekne period od 48 sati."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="7821890095264297681">"Uvezi brojeve"</string>
+    <string name="blocked_call_settings_import_description" msgid="1819412052545228965">"Ranije ste označili neke pozivaoce koje automatski treba preusmeriti na govornu poštu preko drugih aplikacija."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="3332727948554356704">"Prikaži brojeve"</string>
+    <string name="blocked_call_settings_import_button" msgid="7319111700387470727">"Uvezi"</string>
+    <string name="description_blocked_number_list_delete" msgid="2139644216858370740">"Deblokiraj broj"</string>
+    <string name="addBlockedNumber" msgid="3053473735238295551">"Dodaj broj"</string>
+    <string name="block_number_footer_message_vvm" msgid="7955326304033982368">"Pozivi sa ovih brojeva će biti blokirani i poruke govorne pošte će se automatski brisati."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="1152684139070471665">"Pozivi sa ovih brojeva će biti blokirani, ali pozivaoci sa ovih brojeva će i dalje moći da vam ostavljaju poruke govorne pošte."</string>
+    <string name="block_list" msgid="4701585783411870782">"Blokirani brojevi"</string>
+    <string name="alreadyBlocked" msgid="5483253180532475653">"<xliff:g id="NUMBER">%1$s</xliff:g> je već blokiran."</string>
+    <string name="phone_account_settings_label" msgid="8372485478006965920">"Nalozi za pozivanje"</string>
+    <string name="permission_single_turn_on" msgid="8014796118294187894">"Uključi"</string>
+    <string name="permission_multiple_turn_on" msgid="5679888820253829400">"Podesi dozvole"</string>
+    <string name="permission_no_speeddial" msgid="8487215628510596753">"Da biste omogućili brzo biranje, uključite dozvolu za Kontakte."</string>
+    <string name="permission_no_calllog" msgid="4053705651238775784">"Da biste videli evidenciju poziva, uključite dozvolu za Telefon."</string>
+    <string name="permission_no_contacts" msgid="8995025765862026771">"Da biste videli kontakte, uključite dozvolu za Kontakte."</string>
+    <string name="permission_no_voicemail" msgid="1908142679289209291">"Da biste pristupili govornoj pošti, uključite dozvolu za Telefon."</string>
+    <string name="permission_no_search" msgid="2424710404207193826">"Da biste pretražili kontakte, uključite dozvole za Kontakte."</string>
+    <string name="permission_place_call" msgid="8686908130349369423">"Da biste uputili poziv, uključite dozvolu za Telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="1108307781918782515">"Aplikacija Telefon nema dozvolu za upisivanje u sistemska podešavanja."</string>
+    <string name="blocked_number_call_log_label" msgid="4212282846299997693">"Blokirano"</string>
+    <string name="call_log_action_block_report_number" msgid="7302636538668696729">"Blokiraj/prijavi kao nepoželjan"</string>
+    <string name="call_log_action_block_number" msgid="5048188386501998865">"Blokiraj broj"</string>
+    <string name="call_log_action_remove_spam" msgid="2045319806318398403">"Nije nepoželjan"</string>
+    <string name="call_log_action_unblock_number" msgid="6100117033288448758">"Deblokiraj broj"</string>
+    <string name="spam_number_call_log_label" msgid="2678431398326811131">"Nepoželjan"</string>
+    <string name="call_composer_connection_failed" msgid="6776461585447831242">"<xliff:g id="NAME">%1$s</xliff:g> je oflajn i ne možete da ga/je kontaktirate"</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-be/strings.xml b/java/com/android/dialer/app/res/values-be/strings.xml
index 337a626..54d7d83 100644
--- a/java/com/android/dialer/app/res/values-be/strings.xml
+++ b/java/com/android/dialer/app/res/values-be/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Адказаць"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Паведамленне"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Набраць <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Невядомы нумар галасавой пошты"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Паведамленне галасавой пошты </item>
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> Паведамленні галасавой пошты </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Галасавая пошта"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> хв <xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"галасавая пошта"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"галасавая пошта"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Так"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> у <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-bg/strings.xml b/java/com/android/dialer/app/res/values-bg/strings.xml
index 510b4a2..0fb06c1 100644
--- a/java/com/android/dialer/app/res/values-bg/strings.xml
+++ b/java/com/android/dialer/app/res/values-bg/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Обратно обаждане"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Съобщение"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Набиране на <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Неизвестен номер за гласова поща"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> гласови съобщения </item>
       <item quantity="one">Гласово съобщение</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Гласова поща"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"гласово съобщение"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"гласови съобщения"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Избрахте <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> – да се изтрие ли избраното?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> в <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-bn/strings.xml b/java/com/android/dialer/app/res/values-bn/strings.xml
index ece833c..45787cc 100644
--- a/java/com/android/dialer/app/res/values-bn/strings.xml
+++ b/java/com/android/dialer/app/res/values-bn/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"কল ব্যাক করুন"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"বার্তা"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> এ ডায়াল করুন"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"ভয়েসমেল নম্বর অজানা"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"ভয়েসমেল"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> সেকেন্ড"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> মিনিট <xliff:g id="SECONDS">%s</xliff:g> সেকেন্ড"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ভয়েসমেল"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ভয়েসমেলগুলি"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"হ্যাঁ"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"না"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> তারিখে <xliff:g id="TIME">%2$s</xliff:g>\'টায়"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-bs/strings.xml b/java/com/android/dialer/app/res/values-bs/strings.xml
index 98506dc..8c19cb7 100644
--- a/java/com/android/dialer/app/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/res/values-bs/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Povr. poziv"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Poruka"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Pozovi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Nepoznat broj govorne pošte"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Poruka govorne pošte </item>
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> Poruke govorne pošte </item>
@@ -98,6 +100,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"poruka govorne pošte"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"poruke govorne pošte"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ca/strings.xml b/java/com/android/dialer/app/res/values-ca/strings.xml
index 781c606..a333e53 100644
--- a/java/com/android/dialer/app/res/values-ca/strings.xml
+++ b/java/com/android/dialer/app/res/values-ca/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Torna la trucada"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Missatge"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Marca el número <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Número de la bústia de veu desconegut"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> bústies de veu </item>
       <item quantity="one">Bústia de veu</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Bústia de veu"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"missatge de veu"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"missatges de veu"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sí"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> a les <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-cs/strings.xml b/java/com/android/dialer/app/res/values-cs/strings.xml
index 4f35d9c..cc71441 100644
--- a/java/com/android/dialer/app/res/values-cs/strings.xml
+++ b/java/com/android/dialer/app/res/values-cs/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Zavolat zpět"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Zpráva"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Volat hlasovou schránku <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Číslo hlasové schránky není známé"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
       <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Hlasová schránka"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"vybranou hlasovou zprávu"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"vybrané hlasové zprávy"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ano"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> v <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-da/strings.xml b/java/com/android/dialer/app/res/values-da/strings.xml
index c3d44c0..5315bee 100644
--- a/java/com/android/dialer/app/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/res/values-da/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Ring tilbage"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Besked"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Ring til <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Nummeret for talebeskeden er ukendt"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Telefonsvarer"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talebesked"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talebeskeder"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nej"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-de/strings.xml b/java/com/android/dialer/app/res/values-de/strings.xml
index 25bc8a6..a50a8cd 100644
--- a/java/com/android/dialer/app/res/values-de/strings.xml
+++ b/java/com/android/dialer/app/res/values-de/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Zurückrufen"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Nachricht"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mailboxnachrichten </item>
       <item quantity="one">Mailboxnachricht</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Mailbox"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"Mailboxnachricht"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"Mailboxnachrichten"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nein"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> um <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-el/strings.xml b/java/com/android/dialer/app/res/values-el/strings.xml
index 620ae11..9978eac 100644
--- a/java/com/android/dialer/app/res/values-el/strings.xml
+++ b/java/com/android/dialer/app/res/values-el/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Επανάκληση"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Μήνυμα"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Κλήση <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Ο αριθμός αυτόματου τηλεφωνητή είναι άγνωστος"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Μηνύματα αυτόμ. τηλεφωνητή </item>
       <item quantity="one">Μήνυμα αυτόματου τηλεφωνητή</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Αυτόματος τηλεφωνητής"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> λεπτά <xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"φωνητικού μηνύματος αυτόματου τηλεφωνητή"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"φωνητικών μηνυμάτων αυτόματου τηλεφωνητή"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ναι"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Όχι"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> στις <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
index 36d2534..6525bb6 100644
--- a/java/com/android/dialer/app/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Call back"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Message"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Voicemail number unknown"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
       <item quantity="one">Voicemail</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
index 36d2534..6525bb6 100644
--- a/java/com/android/dialer/app/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Call back"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Message"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Voicemail number unknown"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
       <item quantity="one">Voicemail</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
index 36d2534..6525bb6 100644
--- a/java/com/android/dialer/app/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Call back"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Message"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Voicemail number unknown"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
       <item quantity="one">Voicemail</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
index 798742f..d86c50b 100644
--- a/java/com/android/dialer/app/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Llamar"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mensaje"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Marcar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Número de correo de voz desconocido"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
       <item quantity="one">mensaje de voz</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Correo de voz"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"el mensaje de voz"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"los mensajes de voz"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sí"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"El <xliff:g id="DATE">%1$s</xliff:g> a la hora <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-es/strings.xml b/java/com/android/dialer/app/res/values-es/strings.xml
index 26ea210..3c68a3b 100644
--- a/java/com/android/dialer/app/res/values-es/strings.xml
+++ b/java/com/android/dialer/app/res/values-es/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Llamar"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mensaje"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Marcar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Número de buzón de voz desconocido"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
       <item quantity="one"> mensaje de voz</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Buzón de voz"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min y <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mensaje de voz"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mensajes de voz"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sí"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"¿Eliminar la selección de <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> a las <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-et/strings.xml b/java/com/android/dialer/app/res/values-et/strings.xml
index de64ecb..071f4ea 100644
--- a/java/com/android/dialer/app/res/values-et/strings.xml
+++ b/java/com/android/dialer/app/res/values-et/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Helista tagasi"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Saada sõnum"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Valige <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Kõneposti number on teadmata"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> kõneposti teadet </item>
       <item quantity="one">Kõneposti teade</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Kõnepost"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"kõnepostisõnum"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"kõnepostisõnumid"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Jah"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ei"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kell <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-eu/strings.xml b/java/com/android/dialer/app/res/values-eu/strings.xml
index 688de91..236850a 100644
--- a/java/com/android/dialer/app/res/values-eu/strings.xml
+++ b/java/com/android/dialer/app/res/values-eu/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Erantzun deiari"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mezua"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Markatu <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Erantzungailuaren zenbakia ezezaguna da"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> Erantzungailuko <xliff:g id="COUNT">%1$d</xliff:g> mezu </item>
       <item quantity="one">Erantzungailuko mezua</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Erantzungailua"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ahots-mezua"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ahots-mezuak"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Bai"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ez"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g>)"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-fa/strings.xml b/java/com/android/dialer/app/res/values-fa/strings.xml
index 6346166..d76253f 100644
--- a/java/com/android/dialer/app/res/values-fa/strings.xml
+++ b/java/com/android/dialer/app/res/values-fa/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"پاسخ تماس"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"پیام"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"پست صوتی"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> دقیقه <xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"پست صوتی"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"پست‌های صوتی"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"بله"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"نه"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ساعت <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-fi/strings.xml b/java/com/android/dialer/app/res/values-fi/strings.xml
index da70c08..e247e48 100644
--- a/java/com/android/dialer/app/res/values-fi/strings.xml
+++ b/java/com/android/dialer/app/res/values-fi/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Soita"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Viesti"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Soita numeroon <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Puhelinvastaajan numero tuntematon"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> vastaajaviestiä </item>
       <item quantity="one">Vastaajaviesti</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Vastaaja"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"vastaajaviesti"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"vastaajaviestit"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Kyllä"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ei"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Poistetaanko <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> klo <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>.<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
index 84dcbc8..33eae2b 100644
--- a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Rappeler"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Message"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g> : <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Composer le <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Numéro de messagerie vocale inconnu"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Messagerie vocale"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"message vocal"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"messages vocaux"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Oui"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Non"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Supprimer la sélection (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>)?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> à <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-fr/strings.xml b/java/com/android/dialer/app/res/values-fr/strings.xml
index 6f03106..e9bb8dd 100644
--- a/java/com/android/dialer/app/res/values-fr/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Rappeler"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Envoyer un SMS"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g> : <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Composer le <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Numéro de messagerie vocale inconnu"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Messagerie vocale"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> secondes"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"message vocal"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"messages vocaux"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Oui"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Non"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Supprimer les messages vocaux sélectionnés (<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>) ?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> à <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-gl/strings.xml b/java/com/android/dialer/app/res/values-gl/strings.xml
index 4d4e693..41eacac 100644
--- a/java/com/android/dialer/app/res/values-gl/strings.xml
+++ b/java/com/android/dialer/app/res/values-gl/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Devolver chamada"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mensaxe"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Marca o <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Número de correo de voz descoñecido"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> correos de voz </item>
       <item quantity="one">Correo de voz</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Correo de voz"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"correo de voz"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"correos de voz"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Si"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Non"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ás <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-gu/strings.xml b/java/com/android/dialer/app/res/values-gu/strings.xml
index 726d473..1b7b28a 100644
--- a/java/com/android/dialer/app/res/values-gu/strings.xml
+++ b/java/com/android/dialer/app/res/values-gu/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"કૉલ બેક"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"સંદેશ"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ડાયલ કરો"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"વૉઇસમેઇલ નંબર અજાણ"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> વૉઇસમેઇલ્સ </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> વૉઇસમેઇલ્સ </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"વૉઇસમેઇલ"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> સેકંડ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> મિ <xliff:g id="SECONDS">%s</xliff:g> સે"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"વૉઇસમેઇલ"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"વૉઇસમેઇલ"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"હા"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"નહીં"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> નાં રોજ <xliff:g id="TIME">%2$s</xliff:g> વાગ્યે"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-hi/strings.xml b/java/com/android/dialer/app/res/values-hi/strings.xml
index f44d45b..cc8b287 100644
--- a/java/com/android/dialer/app/res/values-hi/strings.xml
+++ b/java/com/android/dialer/app/res/values-hi/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"वापस कॉल करें"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"संदेश"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> डायल करें"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"वॉइसमेल नंबर अज्ञात"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"वॉयस मेल"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> सेकंड"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> मि. <xliff:g id="SECONDS">%s</xliff:g> से."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"वॉयसमेल"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"वॉयसमेल"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"हां"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"नहीं"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> को <xliff:g id="TIME">%2$s</xliff:g> बजे"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-hr/strings.xml b/java/com/android/dialer/app/res/values-hr/strings.xml
index 0e5d0d0..4b12e83 100644
--- a/java/com/android/dialer/app/res/values-hr/strings.xml
+++ b/java/com/android/dialer/app/res/values-hr/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Povratni poziv"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Poruka"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> poruka govorne pošte </item>
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> poruke govorne pošte </item>
@@ -98,6 +102,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Govorna pošta"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"poruka govorne pošte"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"poruke govorne pošte"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>.<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-hu/strings.xml b/java/com/android/dialer/app/res/values-hu/strings.xml
index fcc4454..7b529c2 100644
--- a/java/com/android/dialer/app/res/values-hu/strings.xml
+++ b/java/com/android/dialer/app/res/values-hu/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Visszahívás"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Üzenet"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> hangpostaüzenet </item>
       <item quantity="one">Hangpostaüzenet</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Hangposta"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> perc <xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"hangpostaüzenetet"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"hangpostaüzeneteket"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Igen"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nem"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-hy/strings.xml b/java/com/android/dialer/app/res/values-hy/strings.xml
index 008d34f..b7b9cd3 100644
--- a/java/com/android/dialer/app/res/values-hy/strings.xml
+++ b/java/com/android/dialer/app/res/values-hy/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Հետ զանգել"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Հաղորդագրություն"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>՝ <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Զանգել <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> համարին"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Ձայնային փոստի համարն անհայտ է"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Ձայնային փոստ"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> վրկ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> րոպե <xliff:g id="SECONDS">%s</xliff:g> վայրկյան"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ձայնային հաղորդագրություն"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ձայնային հաղորդագրություններ"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Այո"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ոչ"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Ջնջե՞լ նշված <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>ը"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>-ին, ժամը <xliff:g id="TIME">%2$s</xliff:g>-ին"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-in/strings.xml b/java/com/android/dialer/app/res/values-in/strings.xml
index a133a65..75b1edb 100644
--- a/java/com/android/dialer/app/res/values-in/strings.xml
+++ b/java/com/android/dialer/app/res/values-in/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Telepon"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Pesan"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Pesan suara </item>
       <item quantity="one">Pesan suara</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Kotak Pesan"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> dtk"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> mnt <xliff:g id="SECONDS">%s</xliff:g> dtk"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"pesan suara"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"pesan suara"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ya"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Tidak"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> pukul <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>.<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
@@ -131,7 +141,7 @@
     <string name="favorite_hidden_undo" msgid="5660280521854875320">"Batalkan"</string>
     <string name="search_shortcut_call_number" msgid="8847918845036880688">"Telepon <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="search_shortcut_create_new_contact" msgid="2076374262874775425">"Buat kontak baru"</string>
-    <string name="search_shortcut_add_to_contact" msgid="701957016267810766">"Tambah ke kontak"</string>
+    <string name="search_shortcut_add_to_contact" msgid="701957016267810766">"Tambahkan ke kontak"</string>
     <string name="search_shortcut_send_sms_message" msgid="1065069206532610854">"Kirim SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="3746207985295802095">"Lakukan video call"</string>
     <string name="search_shortcut_block_number" msgid="4587283230665805776">"Blokir nomor"</string>
diff --git a/java/com/android/dialer/app/res/values-is/strings.xml b/java/com/android/dialer/app/res/values-is/strings.xml
index c9dc4f3..b905ba8 100644
--- a/java/com/android/dialer/app/res/values-is/strings.xml
+++ b/java/com/android/dialer/app/res/values-is/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Hringja til baka"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Skilaboð"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Hringja í <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Talhólfsnúmer ekki þekkt"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Talhólf"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> mín. og <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talhólfsskilaboð"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talhólfsskilaboð"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Já"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nei"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-it/strings.xml b/java/com/android/dialer/app/res/values-it/strings.xml
index 1465c91..322386f 100644
--- a/java/com/android/dialer/app/res/values-it/strings.xml
+++ b/java/com/android/dialer/app/res/values-it/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Richiama"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Messaggio"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Componi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Numero segreteria sconosciuto"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messaggi in segreteria </item>
       <item quantity="one">Messaggio in segreteria</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Segreteria"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> secondi"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"messaggio vocale"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"messaggi vocali"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sì"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> alle ore <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-iw/strings.xml b/java/com/android/dialer/app/res/values-iw/strings.xml
index efb6553..d3966b4 100644
--- a/java/com/android/dialer/app/res/values-iw/strings.xml
+++ b/java/com/android/dialer/app/res/values-iw/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"התקשר חזרה"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"הודעה"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"‏חיוג אל ‎<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>‎"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"המספר של תא הדואר הקולי אינו ידוע"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
       <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
@@ -99,6 +101,11 @@
     <string name="voicemail" msgid="8899540969000957954">"דואר קולי"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> שניות"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> דק\' <xliff:g id="SECONDS">%s</xliff:g> שנ\'"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ההודעה הקולית"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ההודעות הקוליות"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"כן"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"לא"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"האם למחוק את <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> שבחרת?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ב-<xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ja/strings.xml b/java/com/android/dialer/app/res/values-ja/strings.xml
index ccdf017..147f572 100644
--- a/java/com/android/dialer/app/res/values-ja/strings.xml
+++ b/java/com/android/dialer/app/res/values-ja/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"コールバック"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"メッセージ"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g> さん: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> 宛に発信"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"ボイスメールの番号が不明です"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g>件のボイスメール</item>
       <item quantity="one">1件のボイスメール</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"ボイスメール"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g>分<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ボイスメール"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ボイスメール"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"はい"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"いいえ"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"選択した<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>を削除しますか？"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>、<xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g> 分 <xliff:g id="SECONDS">%2$02d</xliff:g> 秒"</string>
diff --git a/java/com/android/dialer/app/res/values-ka/strings.xml b/java/com/android/dialer/app/res/values-ka/strings.xml
index bebf1c5..4d57383 100644
--- a/java/com/android/dialer/app/res/values-ka/strings.xml
+++ b/java/com/android/dialer/app/res/values-ka/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"გადარეკვა"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"შეტყობინება"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ხმოვანი ფოსტა </item>
       <item quantity="one">ხმოვანი ფოსტა</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"ხმოვანი ფოსტა"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> წმ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> მინ <xliff:g id="SECONDS">%s</xliff:g> წამ"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ხმოვანი ფოსტა"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ხმოვანი ფოსტა"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"დიახ"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"არა"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-kk/strings.xml b/java/com/android/dialer/app/res/values-kk/strings.xml
index 7fa5d33..62397bb 100644
--- a/java/com/android/dialer/app/res/values-kk/strings.xml
+++ b/java/com/android/dialer/app/res/values-kk/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Қоңырау шалу"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Хабар"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> нөмірін теру"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Дауыстық пошта нөмірі белгісіз"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> дауыстық хабар </item>
       <item quantity="one">Дауыстық хабар</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Дауыстық пошта"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"дауыстық хабар"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"дауыстық хабарлар"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Иә"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Жоқ"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-km/strings.xml b/java/com/android/dialer/app/res/values-km/strings.xml
index 3b6fe9e..27dbf97 100644
--- a/java/com/android/dialer/app/res/values-km/strings.xml
+++ b/java/com/android/dialer/app/res/values-km/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"ហៅ​ទៅ​វិញ"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"សារ"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"ហៅ​ទូរសព្ទ​ទៅកាន់ <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"មិន​ស្គាល់​លេខ​សារ​ជា​សំឡេង​ទេ"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other">សារជាសម្លេង <xliff:g id="COUNT">%1$d</xliff:g> </item>
       <item quantity="one">សារជាសម្លេង</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"សារ​ជា​សំឡេង"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> វិនាទី"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> នាទី <xliff:g id="SECONDS">%s</xliff:g> វិនាទី"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"សារ​ជា​សំឡេង"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"សារ​ជា​សំឡេង"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"បាទ/ចាស"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ទេ"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"លុប <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> ដែល​បាន​ជ្រើសរើស?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> នៅម៉ោង <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-kn/strings.xml b/java/com/android/dialer/app/res/values-kn/strings.xml
index 68280f1..19e11e9 100644
--- a/java/com/android/dialer/app/res/values-kn/strings.xml
+++ b/java/com/android/dialer/app/res/values-kn/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"ಸಂದೇಶ"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ಗೆ ಡಯಲ್‌‌ ಮಾಡಿ"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"ಅಪರಿಚಿತ ಧ್ವನಿಮೇಲ್‌ ಸಂಖ್ಯೆ"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"ಧ್ವನಿಮೇಲ್"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ಸೆಕೆಂ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ನಿಮಿ <xliff:g id="SECONDS">%s</xliff:g> ಸೆಕೆಂ"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ಧ್ವನಿಮೇಲ್"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ಧ್ವನಿಮೇಲ್‌ಗಳು"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ಹೌದು"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ಇಲ್ಲ"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ರಂದು <xliff:g id="TIME">%2$s</xliff:g> ಗಂಟೆಗೆ"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ko/strings.xml b/java/com/android/dialer/app/res/values-ko/strings.xml
index f72a691..d28760c 100644
--- a/java/com/android/dialer/app/res/values-ko/strings.xml
+++ b/java/com/android/dialer/app/res/values-ko/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"통화하기"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"메시지"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>(으)로 전화걸기"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"알 수 없는 음성사서함 번호"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other">음성메일 <xliff:g id="COUNT">%1$d</xliff:g>개</item>
       <item quantity="one">음성메일</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"음성사서함"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g>초"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"음성사서함"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"음성사서함"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"예"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"아니요"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>분 <xliff:g id="SECONDS">%2$02d</xliff:g>초"</string>
diff --git a/java/com/android/dialer/app/res/values-ky/strings.xml b/java/com/android/dialer/app/res/values-ky/strings.xml
index 34d87da..8578997 100644
--- a/java/com/android/dialer/app/res/values-ky/strings.xml
+++ b/java/com/android/dialer/app/res/values-ky/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Кайра чалуу"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Билдирүү"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Үн каты </item>
       <item quantity="one">Үн каты</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Үн почтасы"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мүн. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"үн почтасы"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"үн почталары"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ооба"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Жок"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> саат <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-lo/strings.xml b/java/com/android/dialer/app/res/values-lo/strings.xml
index 4bdb113..a433847 100644
--- a/java/com/android/dialer/app/res/values-lo/strings.xml
+++ b/java/com/android/dialer/app/res/values-lo/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"ໂທກັບ"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"ຂໍ້ຄວາມ"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"ໂທຫາ <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"ບໍ່ຮູ້ຈັກເບີຂໍ້ຄວາມສຽງ"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ຂໍ້ຄວາມສຽງ </item>
       <item quantity="one">ຂໍ້ຄວາມສຽງ</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"ຂໍ້ຄວາມສຽງ"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ວິນາທີ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ນ​ທ <xliff:g id="SECONDS">%s</xliff:g> ວິ"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ຂໍ້ຄວາມສຽງ"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ຂໍ້ຄວາມສຽງ"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ແມ່ນແລ້ວ"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ບໍ່"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ເວລາ <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-lt/strings.xml b/java/com/android/dialer/app/res/values-lt/strings.xml
index 5266dd1..c4feacf 100644
--- a/java/com/android/dialer/app/res/values-lt/strings.xml
+++ b/java/com/android/dialer/app/res/values-lt/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Perskambinti"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Siųsti pranešimą"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: „<xliff:g id="MESSAGE">%2$s</xliff:g>“"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Rinkti <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Nežinomas balso pašto numeris"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimas </item>
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimai </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Balso paštas"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"balso pašto praneš."</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"balso pašto praneš."</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Taip"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-lv/strings.xml b/java/com/android/dialer/app/res/values-lv/strings.xml
index e36a47e..440e2d4 100644
--- a/java/com/android/dialer/app/res/values-lv/strings.xml
+++ b/java/com/android/dialer/app/res/values-lv/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Atzvanīt"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Sūtīt ziņojumu"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Sastādiet šādu numuru: <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Balss pasta numurs nav zināms."</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="zero"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojumi </item>
       <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojums </item>
@@ -98,6 +100,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Balss pasts"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"balss pasta ziņojums"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"balss pasta ziņojumi"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Jā"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nē"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> plkst. <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-mk/strings.xml b/java/com/android/dialer/app/res/values-mk/strings.xml
index 742250d..c179bb6 100644
--- a/java/com/android/dialer/app/res/values-mk/strings.xml
+++ b/java/com/android/dialer/app/res/values-mk/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Повикува назад"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Порака"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Бирајте <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Бројот на говорната пошта е непознат"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порака </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> говорни пораки </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Говорна пошта"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"говорна пошта"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"говорни пораки"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> во <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ml/strings.xml b/java/com/android/dialer/app/res/values-ml/strings.xml
index 857973a..a642334 100644
--- a/java/com/android/dialer/app/res/values-ml/strings.xml
+++ b/java/com/android/dialer/app/res/values-ml/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"കോൾബാക്ക്"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"സന്ദേശം"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ഡയൽ ചെയ്യുക"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"വോയ്‌സ്‌മെയിൽ നമ്പർ അജ്ഞാതമാണ്"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> വോയ്‌സ്‌മെയിലുകൾ </item>
       <item quantity="one">വോയ്‌സ്‌മെയിൽ</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"വോയ്‌സ്‌മെയിൽ"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> സെക്കൻഡ്"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> മി. <xliff:g id="SECONDS">%s</xliff:g> സെ."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"വോയ്‌സ്മെയിലുകൾ"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"അതെ"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ഇല്ല"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>-ന്"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-mn/strings.xml b/java/com/android/dialer/app/res/values-mn/strings.xml
index decd081..12f0d41 100644
--- a/java/com/android/dialer/app/res/values-mn/strings.xml
+++ b/java/com/android/dialer/app/res/values-mn/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Буцааж залгах"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Зурвас"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> руу залгах"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Дуут шуудангийн дугаар тодорхойгүй"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Дуут шуудан </item>
       <item quantity="one">Дуут шуудан</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Дуут шуудан"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> минут <xliff:g id="SECONDS">%s</xliff:g> секунд"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"дуут шуудан"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"дуут шуудан"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Тийм"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Үгүй"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Сонгосон <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>-г устгах уу?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>-д"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-mr/strings.xml b/java/com/android/dialer/app/res/values-mr/strings.xml
index 71233ac..feda816 100644
--- a/java/com/android/dialer/app/res/values-mr/strings.xml
+++ b/java/com/android/dialer/app/res/values-mr/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"पुन्हा कॉल करा"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"संदेश"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> डायल करा"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"व्हॉइसमेल नंबर अज्ञात"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"व्हॉइसमेल"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> सेकंद"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> मिनिट <xliff:g id="SECONDS">%s</xliff:g> सेकंद"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"व्हॉइसमेल"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"व्हॉइसमेल"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"होय"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"नाही"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> रोजी <xliff:g id="TIME">%2$s</xliff:g> वाजता"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ms/strings.xml b/java/com/android/dialer/app/res/values-ms/strings.xml
index 4373c7c..f4c9ac2 100644
--- a/java/com/android/dialer/app/res/values-ms/strings.xml
+++ b/java/com/android/dialer/app/res/values-ms/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Panggil balik"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mesej"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mel suara </item>
       <item quantity="one">Mel suara</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Mel suara"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> saat"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> saat"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mel suara"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mel suara"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ya"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Tidak"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> pada <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-my/strings.xml b/java/com/android/dialer/app/res/values-my/strings.xml
index fa317bc..16b286f 100644
--- a/java/com/android/dialer/app/res/values-my/strings.xml
+++ b/java/com/android/dialer/app/res/values-my/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"ပြန်ခေါ်ပါ"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"မက်ဆေ့ဂျ်"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ကို ခေါ်ပါ"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"အသံမေးလ်နံပါတ် မသိပါ"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> အသံမေးလ်များ </item>
       <item quantity="one"> အသံမေးလ်</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"အသံစာပို့စနစ်"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> စက္ကန့်"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> မိနစ် <xliff:g id="SECONDS">%s</xliff:g> စက္ကန့်"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"အသံမေးလ်"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"အသံမေးလ်များ"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yes"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"No"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g> ၌"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-nb/strings.xml b/java/com/android/dialer/app/res/values-nb/strings.xml
index 488864f..4d97dc2 100644
--- a/java/com/android/dialer/app/res/values-nb/strings.xml
+++ b/java/com/android/dialer/app/res/values-nb/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Ring tilbake"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Melding"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Ring <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Mangler nummer til talepostkasse"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talemeldinger </item>
       <item quantity="one">talemelding</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Telefonsvarer"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talepost"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talepost"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nei"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Slett markert <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ne/strings.xml b/java/com/android/dialer/app/res/values-ne/strings.xml
index 3398964..169c011 100644
--- a/java/com/android/dialer/app/res/values-ne/strings.xml
+++ b/java/com/android/dialer/app/res/values-ne/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"फेरि कल गर्नुहोस्"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"सन्देश"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>मा डायल गर्नुहोस्"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"भ्वाइस मेल नम्बर अज्ञात"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> भ्वाइसमेलहरू </item>
       <item quantity="one">भ्वाइसमेल</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"भ्वाइसमेल"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> सेकेन्ड"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> मिनेट <xliff:g id="SECONDS">%s</xliff:g> सकेन्ड"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"भ्वाइस मेल"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"भ्वाइस मेलहरू"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"हो"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"होइन"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"चयन गरिएका <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g> लाई मेटाउने हो?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> मा <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-nl/strings.xml b/java/com/android/dialer/app/res/values-nl/strings.xml
index 986236e..3eddbb7 100644
--- a/java/com/android/dialer/app/res/values-nl/strings.xml
+++ b/java/com/android/dialer/app/res/values-nl/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Terugbellen"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Bericht"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> bellen"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Voicemailnummer onbekend"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> voicemails </item>
       <item quantity="one">Voicemail</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"voicemails"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nee"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> om <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-no/strings.xml b/java/com/android/dialer/app/res/values-no/strings.xml
index 488864f..4d97dc2 100644
--- a/java/com/android/dialer/app/res/values-no/strings.xml
+++ b/java/com/android/dialer/app/res/values-no/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Ring tilbake"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Melding"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Ring <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Mangler nummer til talepostkasse"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talemeldinger </item>
       <item quantity="one">talemelding</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"Telefonsvarer"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"talepost"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"talepost"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nei"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"Slett markert <xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>?"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-pa/strings.xml b/java/com/android/dialer/app/res/values-pa/strings.xml
index 6e9cc03..c8a39f6 100644
--- a/java/com/android/dialer/app/res/values-pa/strings.xml
+++ b/java/com/android/dialer/app/res/values-pa/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"ਕਾਲ ਬੈਕ ਕਰੋ"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"ਸੁਨੇਹਾ"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ਡਾਇਲ ਕਰੋ"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"ਵੌਇਸਮੇਲ ਨੰਬਰ ਅਗਿਆਤ"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ਵੌਇਸਮੇਲਾਂ </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ਵੌਇਸਮੇਲਾਂ </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"ਵੌਇਸਮੇਲ"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> ਸਕਿੰਟ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> ਮਿੰਟ <xliff:g id="SECONDS">%s</xliff:g> ਸਕਿੰਟ"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ਵੌਇਸਮੇਲ"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ਵੌਇਸਮੇਲਾਂ"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ਹਾਂ"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ਨਹੀਂ"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ਨੂੰ <xliff:g id="TIME">%2$s</xliff:g> ਵਜੇ"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-pl/strings.xml b/java/com/android/dialer/app/res/values-pl/strings.xml
index 0c8f43f..4528540 100644
--- a/java/com/android/dialer/app/res/values-pl/strings.xml
+++ b/java/com/android/dialer/app/res/values-pl/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Oddzwoń"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Wyślij SMS-a"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Zadzwoń pod numer <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Numer poczty głosowej jest nieznany"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowe </item>
       <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowych </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Poczta głosowa"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"wiadomości głosowe"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"wiadomości głosowe"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Tak"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nie"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> o <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
index 4f090df..845442a 100644
--- a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Retornar chamada"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mensagem"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Discar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Número do correio de voz desconhecido"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Correio de voz"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"correio de voz"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"correios de voz"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sim"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Não"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
index 9cabdc4..95451bc 100644
--- a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Ligar de volta"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mensagem"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Marcar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Número do correio de voz desconhecido"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensagens de correio de voz </item>
       <item quantity="one">Mensagem de correio de voz</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Correio de voz"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mensagem de correio de voz"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mensagens de correio de voz"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sim"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Não"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-pt/strings.xml b/java/com/android/dialer/app/res/values-pt/strings.xml
index 4f090df..845442a 100644
--- a/java/com/android/dialer/app/res/values-pt/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Retornar chamada"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mensagem"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Discar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Número do correio de voz desconhecido"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Correio de voz"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"correio de voz"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"correios de voz"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Sim"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Não"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ro/strings.xml b/java/com/android/dialer/app/res/values-ro/strings.xml
index 3a083ae..36987fe 100644
--- a/java/com/android/dialer/app/res/values-ro/strings.xml
+++ b/java/com/android/dialer/app/res/values-ro/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Sunați"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Trimiteți mesaj"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Apelați <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Numărul mesageriei vocale necunoscut"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> mesaje vocale </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> de mesaje vocale </item>
@@ -98,6 +100,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Mesagerie vocală"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> secunde"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"mesagerie vocală"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mesaje vocale"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nu"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> la <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ru/strings.xml b/java/com/android/dialer/app/res/values-ru/strings.xml
index 925d684..69031b1 100644
--- a/java/com/android/dialer/app/res/values-ru/strings.xml
+++ b/java/com/android/dialer/app/res/values-ru/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Позвонить"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Написать SMS"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Позвонить: <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Номер голосовой почты неизвестен"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосовое сообщение </item>
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосовых сообщения </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Голосовая почта"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"голосовое сообщение"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"голосовые сообщения"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Нет"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> в <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-si/strings.xml b/java/com/android/dialer/app/res/values-si/strings.xml
index 55ce37b..45ee7d9 100644
--- a/java/com/android/dialer/app/res/values-si/strings.xml
+++ b/java/com/android/dialer/app/res/values-si/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"නැවත අමතන්න"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"පණිවිඩය"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ඩයල් කරන්න"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"හඬ තැපැල් අංකය නොදනී"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
       <item quantity="other">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"හඬ තැපෑල"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"තත් <xliff:g id="SECONDS">%s</xliff:g>"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"මිනි <xliff:g id="MINUTES">%s</xliff:g> තත් <xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"හඬ තැපෑල"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"හඬ තැපැල්"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ඔව්"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"නැත"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> දින <xliff:g id="TIME">%2$s</xliff:g>ට"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-sk/strings.xml b/java/com/android/dialer/app/res/values-sk/strings.xml
index 59f3d10..9774a41 100644
--- a/java/com/android/dialer/app/res/values-sk/strings.xml
+++ b/java/com/android/dialer/app/res/values-sk/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Zavolať"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Správa"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Vytočiť číslo <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Číslo hlasovej schránky je neznáme"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> odkazy v hlasovej schránke </item>
       <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> odkazu v hlasovej schránke </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Hlasová schránka"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"hlasová správa"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"hlasové správy"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Áno"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nie"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> o <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-sl/strings.xml b/java/com/android/dialer/app/res/values-sl/strings.xml
index 28f4ce0..80898e5 100644
--- a/java/com/android/dialer/app/res/values-sl/strings.xml
+++ b/java/com/android/dialer/app/res/values-sl/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Povratni klic"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"SMS"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Kliči <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Neznana številka odzivnika"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> sporočilo v odzivniku </item>
       <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> sporočili v odzivniku </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Glasovna pošta"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"sporočilo v odzivniku"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"sporočila v odzivniku"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Da"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ne"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ob <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-sq/strings.xml b/java/com/android/dialer/app/res/values-sq/strings.xml
index 48ec8fe..ea757a8 100644
--- a/java/com/android/dialer/app/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/res/values-sq/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Telefono"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mesazh"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> posta zanore </item>
       <item quantity="one"> postë zanore</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Posta zanore"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sekonda"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min. e <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"posta zanore"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"postat zanore"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Po"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Jo"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> në <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-sr/strings.xml b/java/com/android/dialer/app/res/values-sr/strings.xml
index fd4e2b9..610f230 100644
--- a/java/com/android/dialer/app/res/values-sr/strings.xml
+++ b/java/com/android/dialer/app/res/values-sr/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Узврати позив"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Пошаљи SMS"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Позови <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Непознат број говорне поште"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порука </item>
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> говорне поруке </item>
@@ -98,6 +100,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Говорна пошта"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"говорну поруку"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"говорне поруке"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Да"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Не"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> у <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-sv/strings.xml b/java/com/android/dialer/app/res/values-sv/strings.xml
index fc8920a..c29568b 100644
--- a/java/com/android/dialer/app/res/values-sv/strings.xml
+++ b/java/com/android/dialer/app/res/values-sv/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Ring upp"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Meddelande"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Ring <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Numret till röstbrevlådan är okänt"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> röstmeddelanden </item>
       <item quantity="one">röstmeddelande</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Röstbrevlåda"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sekund"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"röstbrevlåda"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"röstmeddelanden"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ja"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Nej"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-sw/strings.xml b/java/com/android/dialer/app/res/values-sw/strings.xml
index 4c46997..11f5664 100644
--- a/java/com/android/dialer/app/res/values-sw/strings.xml
+++ b/java/com/android/dialer/app/res/values-sw/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Mpigie"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Ujumbe"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other">Ujumbe <xliff:g id="COUNT">%1$d</xliff:g> wa sauti </item>
       <item quantity="one">Ujumbe wa sauti</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Ujumbe wa sauti"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"Sekunde <xliff:g id="SECONDS">%s</xliff:g>"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"Dak <xliff:g id="MINUTES">%s</xliff:g> sek <xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ujumbe wa sauti"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ujumbe wa sauti"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ndiyo"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Hapana"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> saa <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ta/strings.xml b/java/com/android/dialer/app/res/values-ta/strings.xml
index 0b5a51d..795a4e7 100644
--- a/java/com/android/dialer/app/res/values-ta/strings.xml
+++ b/java/com/android/dialer/app/res/values-ta/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"அழை"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"செய்தி அனுப்பு"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> என்ற எண்ணை அழைக்கவும்"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"குரலஞ்சல் எண் அறியப்படவில்லை"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> குரலஞ்சல்கள் </item>
       <item quantity="one">குரலஞ்சல்</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"குரலஞ்சல்"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> வி"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> நிமிடம் <xliff:g id="SECONDS">%s</xliff:g> வினாடி"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"குரலஞ்சல்"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"குரலஞ்சல்கள்"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ஆம்"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"வேண்டாம்"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> அன்று <xliff:g id="TIME">%2$s</xliff:g> மணிக்கு"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-te/strings.xml b/java/com/android/dialer/app/res/values-te/strings.xml
index 512f7e2..531e206 100644
--- a/java/com/android/dialer/app/res/values-te/strings.xml
+++ b/java/com/android/dialer/app/res/values-te/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"కాల్ చేయి"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"సందేశం పంపు"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>కు డయల్ చేయండి"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"వాయిస్ మెయిల్ నంబర్ తెలియదు"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> వాయిస్ మెయిల్‌లు </item>
       <item quantity="one">వాయిస్ మెయిల్</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"వాయిస్ మెయిల్"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> సెక"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> నిమి <xliff:g id="SECONDS">%s</xliff:g> సెక"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"వాయిస్ మెయిల్"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"వాయిస్ మెయిల్‌లు"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"అవును"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"వద్దు"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>కి"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-th/strings.xml b/java/com/android/dialer/app/res/values-th/strings.xml
index 6817d51..0433a6e 100644
--- a/java/com/android/dialer/app/res/values-th/strings.xml
+++ b/java/com/android/dialer/app/res/values-th/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"โทรกลับ"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"ข้อความ"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"หมุนหมายเลข <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"ไม่ทราบหมายเลขข้อความเสียง"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ข้อความเสียง </item>
       <item quantity="one">ข้อความเสียง</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"ข้อความเสียง"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> นาที <xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ข้อความเสียง"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ข้อความเสียง"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ใช่"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"ไม่"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"วันที่ <xliff:g id="DATE">%1$s</xliff:g> เวลา <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-tl/strings.xml b/java/com/android/dialer/app/res/values-tl/strings.xml
index c98a046..6eb1723 100644
--- a/java/com/android/dialer/app/res/values-tl/strings.xml
+++ b/java/com/android/dialer/app/res/values-tl/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Tawagan"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Mensahe"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"I-dial ang <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Hindi kilala ang numero ng voicemail"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemail </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> na Voicemail </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Voicemail"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"voicemail"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"mga voicemail"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Oo"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Hindi"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ng <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-tr/strings.xml b/java/com/android/dialer/app/res/values-tr/strings.xml
index 73b3cd7..751286b 100644
--- a/java/com/android/dialer/app/res/values-tr/strings.xml
+++ b/java/com/android/dialer/app/res/values-tr/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Geri ara"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"İleti"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Sesli Mesaj </item>
       <item quantity="one">Sesli Mesaj</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Sesli Mesaj"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> sn."</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> dk. <xliff:g id="SECONDS">%s</xliff:g> sn."</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"sesli mesaj"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"sesli mesajlar"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Evet"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Hayır"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-uk/strings.xml b/java/com/android/dialer/app/res/values-uk/strings.xml
index dd76890..0da2ea9 100644
--- a/java/com/android/dialer/app/res/values-uk/strings.xml
+++ b/java/com/android/dialer/app/res/values-uk/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Передзвонити"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Повідомлення"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Набрати <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Невідомий номер голосової пошти"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосове повідомлення </item>
       <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосові повідомлення </item>
@@ -99,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Голосова пошта"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> хв <xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"голосова пошта"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"голосова пошта"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Так"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Ні"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> о <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-ur/strings.xml b/java/com/android/dialer/app/res/values-ur/strings.xml
index 534b915..748e2f2 100644
--- a/java/com/android/dialer/app/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/res/values-ur/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"واپس کال کریں"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"پیغام"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> صوتی میلز </item>
       <item quantity="one">صوتی میل</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"صوتی میل"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> سیکنڈ"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> منٹ <xliff:g id="SECONDS">%s</xliff:g> سیکنڈ"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"صوتی میل"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"صوتی میلز"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"ہاں"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"نہیں"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> بوقت <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-uz/strings.xml b/java/com/android/dialer/app/res/values-uz/strings.xml
index 11befbc..a13da43 100644
--- a/java/com/android/dialer/app/res/values-uz/strings.xml
+++ b/java/com/android/dialer/app/res/values-uz/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Telefon"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"SMS yozish"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ta ovozli xabar </item>
       <item quantity="one">Ovozli xabar</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Ovozli pochta"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> soniya"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> daq <xliff:g id="SECONDS">%s</xliff:g> son"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ovozli xabar"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ovozli xabarlar"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Ha"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Yo‘q"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-vi/strings.xml b/java/com/android/dialer/app/res/values-vi/strings.xml
index 942f067..a95e068 100644
--- a/java/com/android/dialer/app/res/values-vi/strings.xml
+++ b/java/com/android/dialer/app/res/values-vi/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Gọi lại"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Tin nhắn"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Quay số <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Số thư thoại không xác định"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Thư thoại </item>
       <item quantity="one">Thư thoại</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Thư thoại"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> giây"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> phút <xliff:g id="SECONDS">%s</xliff:g> giây"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"thư thoại"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"thư thoại"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Có"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Không"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> lúc <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
index 4b6f55a..6a12a07 100644
--- a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"回拨"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"发短信"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>：<xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"拨打 <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"语音信箱号码未知"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 封语音邮件</item>
       <item quantity="one">1 封语音邮件</item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"语音信箱"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> 分钟 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"语音邮件"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"语音邮件"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"是"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"否"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
index 95dd238..12e50fb 100644
--- a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"回撥"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"短訊"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>：<xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"撥號 <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"沒有可用的留言信箱號碼"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 個留言</item>
       <item quantity="one">留言</item>
@@ -97,6 +99,11 @@
     <string name="voicemail" msgid="8899540969000957954">"留言"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"留言"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"留言"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"是"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"否"</string>
+    <string name="voicemailMultiSelectDialogTitle" msgid="150612124416146690">"要刪除所選的<xliff:g id="VOICEMAILORVOICEMAILS">%1$s</xliff:g>嗎？"</string>
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
index 66d986d..83d093e 100644
--- a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
@@ -42,6 +42,10 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"回撥"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"傳送簡訊"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>：<xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <!-- no translation found for notification_voicemail_text_format (1895667520930252897) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_no_vm_number (8942821987929495842) -->
+    <skip />
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> 則語音留言</item>
       <item quantity="one">語音留言</item>
@@ -97,6 +101,12 @@
     <string name="voicemail" msgid="8899540969000957954">"語音留言"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"語音留言"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"語音留言"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"是"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"否"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values-zu/strings.xml b/java/com/android/dialer/app/res/values-zu/strings.xml
index 4cee092..840d168 100644
--- a/java/com/android/dialer/app/res/values-zu/strings.xml
+++ b/java/com/android/dialer/app/res/values-zu/strings.xml
@@ -42,6 +42,8 @@
     <string name="notification_missedCall_call_back" msgid="3875698110051973965">"Phinda ushaye"</string>
     <string name="notification_missedCall_message" msgid="5086910028988305964">"Umlayezo"</string>
     <string name="post_call_notification_message" msgid="5417476789860590611">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE">%2$s</xliff:g>"</string>
+    <string name="notification_voicemail_text_format" msgid="1895667520930252897">"Dayela <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="8942821987929495842">"Inombolo yevoyisimeyili ayaziwa"</string>
     <plurals name="notification_voicemail_title" formatted="false" msgid="1551847434476438657">
       <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
       <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
@@ -97,6 +99,12 @@
     <string name="voicemail" msgid="8899540969000957954">"Ivoyisimeyili"</string>
     <string name="callDetailsShortDurationFormat" msgid="8517030531054801588">"<xliff:g id="SECONDS">%s</xliff:g> isekhondi"</string>
     <string name="callDetailsDurationFormat" msgid="6826204822350034578">"<xliff:g id="MINUTES">%s</xliff:g> amaminithi <xliff:g id="SECONDS">%s</xliff:g> amasekhondi"</string>
+    <string name="voicemailMultiSelectVoicemail" msgid="7792569522692927527">"ivoyisimeyili"</string>
+    <string name="voicemailMultiSelectVoicemails" msgid="3901723179158415509">"ama-meyli ezwi"</string>
+    <string name="voicemailMultiSelectDeleteConfirm" msgid="5904880853422397390">"Yebo"</string>
+    <string name="voicemailMultiSelectDeleteCancel" msgid="7340110543555172665">"Cha"</string>
+    <!-- no translation found for voicemailMultiSelectDialogTitle (150612124416146690) -->
+    <skip />
     <string name="voicemailCallLogToday" msgid="709034597866788854">@string/call_log_header_today</string>
     <string name="voicemailCallLogDateTimeFormat" msgid="4998985002074131268">"<xliff:g id="DATE">%1$s</xliff:g> ngo-<xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="voicemailDurationFormat" msgid="5649961568550898382">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index 9944f9f..a4e443d 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -105,6 +105,12 @@
   <!-- Format for a post call message. (ex. John Doe: Give me a call when you're free.) -->
   <string name="post_call_notification_message"><xliff:g id="name">%1$s</xliff:g>: <xliff:g id="message">%2$s</xliff:g></string>
 
+  <!-- Message displayed in the "Voicemail" notification item, allowing the user
+       to dial the indicated number. -->
+  <string name="notification_voicemail_text_format">Dial <xliff:g id="voicemail_number">%s</xliff:g></string>
+  <!-- Message displayed in the "Voicemail" notification item,
+       indicating that there's no voicemail number available -->
+  <string name="notification_voicemail_no_vm_number">Voicemail number unknown</string>
   <!-- Title of the notification of new voicemails. [CHAR LIMIT=30] -->
   <plurals name="notification_voicemail_title">
     <item quantity="one">Voicemail</item>
@@ -356,6 +362,12 @@
   <!-- A nicely formatted call duration displayed when viewing call details. For example "42 min 28 sec" -->
   <string name="callDetailsDurationFormat"><xliff:g example="42" id="minutes">%s</xliff:g> min <xliff:g example="28" id="seconds">%s</xliff:g> sec</string>
 
+  <string name="voicemailMultiSelectVoicemail">voicemail</string>
+  <string name="voicemailMultiSelectVoicemails">voicemails</string>
+  <string name="voicemailMultiSelectDeleteConfirm">Yes</string>
+  <string name="voicemailMultiSelectDeleteCancel">No</string>
+  <string name="voicemailMultiSelectDialogTitle">Delete selected <xliff:g id="voicemailorvoicemails">%1$s</xliff:g>?</string>
+
   <!-- The string 'Today'. This value is used in the voicemailCallLogDateTimeFormat rather than an
        explicit date string, e.g. Jul 25, 2014, in the event that a voicemail was created on the
        current day -->
diff --git a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
new file mode 100644
index 0000000..078a40a
--- /dev/null
+++ b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.app.voicemail;
+
+import android.annotation.TargetApi;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build.VERSION_CODES;
+import android.support.v4.os.BuildCompat;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.TelephonyManager;
+import com.android.dialer.app.calllog.DefaultVoicemailNotifier;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.voicemail.VoicemailComponent;
+
+/**
+ * Receives {@link TelephonyManager#ACTION_SHOW_VOICEMAIL_NOTIFICATION}, and forwards to {@link
+ * DefaultVoicemailNotifier}. Will ignore the notification if the account has visual voicemail.
+ * Legacy voicemail is the traditional, non-visual, dial-in voicemail.
+ */
+@TargetApi(VERSION_CODES.O)
+public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
+
+  @Override
+  public void onReceive(Context context, Intent intent) {
+    LogUtil.i(
+        "LegacyVoicemailNotificationReceiver.onReceive", "received legacy voicemail notification");
+    Assert.checkArgument(BuildCompat.isAtLeastO());
+
+    PhoneAccountHandle phoneAccountHandle =
+        intent.getParcelableExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE);
+    if (phoneAccountHandle == null) {
+      // TODO: assert instead after API has landed.
+      phoneAccountHandle =
+          context
+              .getSystemService(TelecomManager.class)
+              .getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_VOICEMAIL);
+    }
+    if (VoicemailComponent.get(context)
+        .getVoicemailClient()
+        .isActivated(context, phoneAccountHandle)) {
+      LogUtil.i(
+          "LegacyVoicemailNotificationReceiver.onReceive",
+          "visual voicemail is activated, ignoring notification");
+      return;
+    }
+
+    // Missing extra means there are unknown numbers of voicemails.
+    int count = intent.getIntExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, 1);
+    if (count == 0) {
+      LogUtil.i("LegacyVoicemailNotificationReceiver.onReceive", "clearing notification");
+      DefaultVoicemailNotifier.getInstance(context).cancelLegacyNotification();
+      return;
+    }
+
+    String voicemailNumber = intent.getStringExtra(TelephonyManager.EXTRA_VOICEMAIL_NUMBER);
+    PendingIntent callVoicemailIntent =
+        intent.getParcelableExtra(TelephonyManager.EXTRA_CALL_VOICEMAIL_INTENT);
+    PendingIntent voicemailSettingIntent =
+        intent.getParcelableExtra(TelephonyManager.EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT);
+
+    LogUtil.i("LegacyVoicemailNotificationReceiver.onReceive", "sending notification");
+    DefaultVoicemailNotifier.getInstance(context)
+        .notifyLegacyVoicemail(
+            phoneAccountHandle,
+            count,
+            voicemailNumber,
+            callVoicemailIntent,
+            voicemailSettingIntent);
+  }
+}
diff --git a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
index 939007a..a0bae36 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
@@ -20,15 +20,25 @@
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.os.Handler;
+import android.support.annotation.MainThread;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
+import android.util.ArrayMap;
 import com.android.dialer.app.calllog.CallLogAlertManager;
 import com.android.dialer.app.calllog.CallLogModalAlertManager;
 import com.android.dialer.app.voicemail.error.VoicemailErrorAlert;
 import com.android.dialer.app.voicemail.error.VoicemailErrorMessageCreator;
 import com.android.dialer.app.voicemail.error.VoicemailStatus;
 import com.android.dialer.app.voicemail.error.VoicemailStatusReader;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.CallLogQueryHandler;
+import com.android.voicemail.VoicemailComponent;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Fetches voicemail status and generate {@link VoicemailStatus} for {@link VoicemailErrorAlert} to
@@ -40,12 +50,14 @@
   private final CallLogQueryHandler callLogQueryHandler;
   private final VoicemailErrorAlert alertItem;
 
+  private final Map<PhoneAccountHandle, ServiceStateListener> listeners = new ArrayMap<>();
+
   private final ContentObserver statusObserver =
       new ContentObserver(new Handler()) {
         @Override
         public void onChange(boolean selfChange) {
           super.onChange(selfChange);
-          maybeFetchStatus();
+          fetchStatus();
         }
       };
 
@@ -61,13 +73,14 @@
         new VoicemailErrorAlert(
             context, alertManager, modalAlertManager, new VoicemailErrorMessageCreator());
     callLogQueryHandler = new CallLogQueryHandler(context, context.getContentResolver(), this);
-    maybeFetchStatus();
+    fetchStatus();
   }
 
   public ContentObserver getContentObserver() {
     return statusObserver;
   }
 
+  @MainThread
   @Override
   public void onVoicemailStatusFetched(Cursor statusCursor) {
     List<VoicemailStatus> statuses = new ArrayList<>();
@@ -75,6 +88,7 @@
       VoicemailStatus status = new VoicemailStatus(context, statusCursor);
       if (status.isActive()) {
         statuses.add(status);
+        addServiceStateListener(status);
       }
     }
     alertItem.updateStatus(statuses, this);
@@ -82,6 +96,37 @@
     return;
   }
 
+  @MainThread
+  private void addServiceStateListener(VoicemailStatus status) {
+    Assert.isMainThread();
+    if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
+      LogUtil.i("VoicemailErrorManager.addServiceStateListener", "VVM module not enabled");
+      return;
+    }
+    if (!status.sourcePackage.equals(context.getPackageName())) {
+      LogUtil.i("VoicemailErrorManager.addServiceStateListener", "non-dialer source");
+      return;
+    }
+    TelephonyManager telephonyManager =
+        context
+            .getSystemService(TelephonyManager.class)
+            .createForPhoneAccountHandle(status.getPhoneAccountHandle());
+    if (telephonyManager == null) {
+      LogUtil.e("VoicemailErrorManager.addServiceStateListener", "invalid PhoneAccountHandle");
+      return;
+    }
+    PhoneAccountHandle phoneAccountHandle = status.getPhoneAccountHandle();
+    if (listeners.containsKey(phoneAccountHandle)) {
+      return;
+    }
+    LogUtil.i(
+        "VoicemailErrorManager.addServiceStateListener",
+        "adding listener for " + phoneAccountHandle);
+    ServiceStateListener serviceStateListener = new ServiceStateListener();
+    telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
+    listeners.put(phoneAccountHandle, serviceStateListener);
+  }
+
   @Override
   public void onVoicemailUnreadCountFetched(Cursor cursor) {
     // Do nothing
@@ -101,7 +146,7 @@
   public void onResume() {
     isForeground = true;
     if (statusInvalidated) {
-      maybeFetchStatus();
+      fetchStatus();
     }
   }
 
@@ -110,15 +155,22 @@
     statusInvalidated = false;
   }
 
+  public void onDestroy() {
+    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+    for (ServiceStateListener listener : listeners.values()) {
+      telephonyManager.listen(listener, PhoneStateListener.LISTEN_NONE);
+    }
+  }
+
   @Override
   public void refresh() {
-    maybeFetchStatus();
+    fetchStatus();
   }
 
   /**
    * Fetch the status when the dialer is in foreground, or queue a fetch when the dialer resumes.
    */
-  private void maybeFetchStatus() {
+  private void fetchStatus() {
     if (!isForeground) {
       // Dialer is in the background, UI should not be updated. Reload the status when it resumes.
       statusInvalidated = true;
@@ -126,4 +178,12 @@
     }
     callLogQueryHandler.fetchVoicemailStatus();
   }
+
+  private class ServiceStateListener extends PhoneStateListener {
+
+    @Override
+    public void onServiceStateChanged(ServiceState serviceState) {
+      fetchStatus();
+    }
+  }
 }
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
index 04fe7f6..f160e02 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
@@ -33,8 +33,8 @@
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.CallLogAsyncTaskUtil;
 import com.android.dialer.app.calllog.CallLogListItemViewHolder;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import java.util.Objects;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index 5bfa03e..5ac487b 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -54,8 +54,8 @@
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutors;
 import com.android.dialer.constants.Constants;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.phonenumbercache.CallLogQuery;
 import com.google.common.io.ByteStreams;
 import java.io.File;
diff --git a/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java b/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
index 2b19bd7..48602ea 100644
--- a/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
@@ -24,8 +24,8 @@
 import com.android.dialer.app.voicemail.error.VoicemailErrorMessage.Action;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.PerAccountSharedPreferences;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
 import java.util.ArrayList;
@@ -184,8 +184,8 @@
 
     String title;
     CharSequence message;
-    int enabledImpression;
-    int dismissedImpression;
+    DialerImpression.Type enabledImpression;
+    DialerImpression.Type dismissedImpression;
     String dismissedKey;
 
     if (isFull) {
@@ -237,20 +237,25 @@
       PerAccountSharedPreferences sharedPreferenceForAccount,
       String title,
       CharSequence message,
-      int impressionToLogOnEnable,
-      int impressionToLogOnDismiss,
+      DialerImpression.Type impressionToLogOnEnable,
+      DialerImpression.Type impressionToLogOnDismiss,
       String preferenceKeyToUpdate) {
     return new VoicemailErrorMessage(
         title,
         message,
+        VoicemailErrorMessage.createTurnArchiveOnAction(
+            context,
+            impressionToLogOnEnable,
+            status,
+            statusReader,
+            voicemailClient,
+            phoneAccountHandle),
         VoicemailErrorMessage.createDismissTurnArchiveOnAction(
             context,
             impressionToLogOnDismiss,
             statusReader,
             sharedPreferenceForAccount,
-            preferenceKeyToUpdate),
-        VoicemailErrorMessage.createTurnArchiveOnAction(
-            context, impressionToLogOnEnable, status, voicemailClient, phoneAccountHandle));
+            preferenceKeyToUpdate));
   }
 
   @Nullable
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailErrorAlert.java b/java/com/android/dialer/app/voicemail/error/VoicemailErrorAlert.java
index 628ef87..d045b1b 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailErrorAlert.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailErrorAlert.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.support.annotation.VisibleForTesting;
+import android.text.util.Linkify;
 import android.view.View;
 import android.widget.TextView;
 import com.android.dialer.app.alert.AlertManager;
@@ -119,6 +120,7 @@
     TextView tosTitle = (TextView) view.findViewById(R.id.tos_message_title);
     tosTitle.setText(message.getTitle());
     TextView tosDetails = (TextView) view.findViewById(R.id.tos_message_details);
+    tosDetails.setAutoLinkMask(Linkify.WEB_URLS);
     tosDetails.setText(message.getDescription());
 
     Assert.checkArgument(message.getActions().size() == 2);
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java b/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java
index 1ef8028..a0dd30f 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java
@@ -27,8 +27,8 @@
 import android.view.View.OnClickListener;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.PerAccountSharedPreferences;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.util.CallUtil;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
@@ -191,8 +191,9 @@
   @NonNull
   public static Action createTurnArchiveOnAction(
       final Context context,
-      int impressionToLog,
+      DialerImpression.Type impressionToLog,
       final VoicemailStatus status,
+      VoicemailStatusReader statusReader,
       VoicemailClient voicemailClient,
       PhoneAccountHandle phoneAccountHandle) {
     return new Action(
@@ -209,6 +210,7 @@
             Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
             intent.setPackage(status.sourcePackage);
             context.sendBroadcast(intent);
+            statusReader.refresh();
           }
         });
   }
@@ -216,7 +218,7 @@
   @NonNull
   public static Action createDismissTurnArchiveOnAction(
       final Context context,
-      int impressionToLog,
+      DialerImpression.Type impressionToLog,
       VoicemailStatusReader statusReader,
       PerAccountSharedPreferences sharedPreferenceForAccount,
       String preferenceKeyToUpdate) {
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java b/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java
index c429d6d..1cfbe86 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailStatus.java
@@ -26,8 +26,11 @@
 import android.provider.Settings.Global;
 import android.provider.VoicemailContract.Status;
 import android.support.annotation.Nullable;
+import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccountHandle;
+import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
+import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.VoicemailStatusQuery;
 
 /** Structured data from {@link android.provider.VoicemailContract.Status} */
@@ -60,6 +63,19 @@
     settingsUri = getUri(statusCursor, VoicemailStatusQuery.SETTINGS_URI_INDEX);
     voicemailAccessUri = getUri(statusCursor, VoicemailStatusQuery.VOICEMAIL_ACCESS_URI_INDEX);
 
+    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
+      type =
+          getString(
+              statusCursor, VoicemailStatusQuery.SOURCE_TYPE_INDEX, TelephonyManager.VVM_TYPE_OMTP);
+      phoneAccountComponentName =
+          getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_COMPONENT_NAME, "");
+      phoneAccountId = getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_ID, "");
+    } else {
+      type = TelephonyManager.VVM_TYPE_OMTP;
+      phoneAccountComponentName = "";
+      phoneAccountId = "";
+    }
+
     configurationState =
         getInt(
             statusCursor,
@@ -70,12 +86,23 @@
             statusCursor,
             VoicemailStatusQuery.DATA_CHANNEL_STATE_INDEX,
             Status.DATA_CHANNEL_STATE_NO_CONNECTION);
-    notificationChannelState =
-        getInt(
-            statusCursor,
-            VoicemailStatusQuery.NOTIFICATION_CHANNEL_STATE_INDEX,
-            Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
 
+    /* Before O, the NOTIFICATION_CHANNEL_STATE in the voicemail status table for the system
+     * visual voicemail client always correspond to the service state (cellular signal availability)
+     * Tracking the state in the background is redundant because it will not be visible to the
+     * user. It is much simpler to poll the status on the UI side. The result is injected back to
+     * the status query result so the handling will be consistent with other voicemail clients.
+     */
+    if (BuildCompat.isAtLeastO() && sourcePackage.equals(context.getPackageName())) {
+      notificationChannelState =
+          getNotificationChannelStateFormTelephony(context, getPhoneAccountHandle());
+    } else {
+      notificationChannelState =
+          getInt(
+              statusCursor,
+              VoicemailStatusQuery.NOTIFICATION_CHANNEL_STATE_INDEX,
+              Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
+    }
     isAirplaneMode =
         Settings.System.getInt(context.getContentResolver(), Global.AIRPLANE_MODE_ON, 0) != 0;
 
@@ -88,18 +115,24 @@
       quotaOccupied = Status.QUOTA_UNAVAILABLE;
       quotaTotal = Status.QUOTA_UNAVAILABLE;
     }
+  }
 
-    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
-      type =
-          getString(
-              statusCursor, VoicemailStatusQuery.SOURCE_TYPE_INDEX, TelephonyManager.VVM_TYPE_OMTP);
-      phoneAccountComponentName =
-          getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_COMPONENT_NAME, "");
-      phoneAccountId = getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_ID, "");
+  private static int getNotificationChannelStateFormTelephony(
+      Context context, PhoneAccountHandle phoneAccountHandle) {
+    TelephonyManager telephonyManager =
+        context
+            .getSystemService(TelephonyManager.class)
+            .createForPhoneAccountHandle(phoneAccountHandle);
+    if (telephonyManager == null) {
+      LogUtil.e("VoicemailStatus.constructor", "invalid PhoneAccountHandle");
+      return Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION;
     } else {
-      type = TelephonyManager.VVM_TYPE_OMTP;
-      phoneAccountComponentName = "";
-      phoneAccountId = "";
+      int state = telephonyManager.getServiceState().getState();
+      if (state == ServiceState.STATE_IN_SERVICE) {
+        return Status.NOTIFICATION_CHANNEL_STATE_OK;
+      } else {
+        return Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION;
+      }
     }
   }
 
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java b/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
index 6f41121..2ff182b 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailStatusCorruptionHandler.java
@@ -28,8 +28,8 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.ConfigProviderBindings;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 
 /**
  * This class will detect the corruption in the voicemail status and log it so we can track how many
diff --git a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
index d98ac2c..132e8a3 100644
--- a/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/Vvm3VoicemailMessageCreator.java
@@ -37,8 +37,10 @@
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.app.voicemail.error.VoicemailErrorMessage.Action;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.voicemail.VoicemailClient;
+import com.android.voicemail.VoicemailComponent;
 import java.util.Locale;
 
 /**
@@ -379,7 +381,12 @@
           @Override
           public void onClick(DialogInterface dialog, int which) {
             Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_VVM3_TOS_DECLINED);
-            TelephonyManagerCompat.setVisualVoicemailEnabled(telephonyManager, handle, false);
+            VoicemailClient voicemailClient = VoicemailComponent.get(context).getVoicemailClient();
+            if (voicemailClient.isVoicemailModuleEnabled()) {
+              voicemailClient.setVoicemailEnabled(context, status.getPhoneAccountHandle(), false);
+            } else {
+              TelephonyManagerCompat.setVisualVoicemailEnabled(telephonyManager, handle, false);
+            }
           }
         });
 
diff --git a/java/com/android/dialer/app/voicemail/error/res/drawable-hdpi/ic_voicemail_error_24px.png b/java/com/android/dialer/app/voicemail/error/res/drawable-hdpi/ic_voicemail_error_24px.png
new file mode 100644
index 0000000..1a5744b
--- /dev/null
+++ b/java/com/android/dialer/app/voicemail/error/res/drawable-hdpi/ic_voicemail_error_24px.png
Binary files differ
diff --git a/java/com/android/dialer/app/voicemail/error/res/drawable-mdpi/ic_voicemail_error_24px.png b/java/com/android/dialer/app/voicemail/error/res/drawable-mdpi/ic_voicemail_error_24px.png
new file mode 100644
index 0000000..9936f0b
--- /dev/null
+++ b/java/com/android/dialer/app/voicemail/error/res/drawable-mdpi/ic_voicemail_error_24px.png
Binary files differ
diff --git a/java/com/android/dialer/app/voicemail/error/res/drawable-xhdpi/ic_voicemail_error_24px.png b/java/com/android/dialer/app/voicemail/error/res/drawable-xhdpi/ic_voicemail_error_24px.png
new file mode 100644
index 0000000..9eff409
--- /dev/null
+++ b/java/com/android/dialer/app/voicemail/error/res/drawable-xhdpi/ic_voicemail_error_24px.png
Binary files differ
diff --git a/java/com/android/dialer/app/voicemail/error/res/drawable-xxhdpi/ic_voicemail_error_24px.png b/java/com/android/dialer/app/voicemail/error/res/drawable-xxhdpi/ic_voicemail_error_24px.png
new file mode 100644
index 0000000..5b25f73
--- /dev/null
+++ b/java/com/android/dialer/app/voicemail/error/res/drawable-xxhdpi/ic_voicemail_error_24px.png
Binary files differ
diff --git a/java/com/android/dialer/app/voicemail/error/res/drawable-xxxhdpi/ic_voicemail_error_24px.png b/java/com/android/dialer/app/voicemail/error/res/drawable-xxxhdpi/ic_voicemail_error_24px.png
new file mode 100644
index 0000000..d47ee4c
--- /dev/null
+++ b/java/com/android/dialer/app/voicemail/error/res/drawable-xxxhdpi/ic_voicemail_error_24px.png
Binary files differ
diff --git a/java/com/android/dialer/app/voicemail/error/res/layout/voicemail_error_message_fragment.xml b/java/com/android/dialer/app/voicemail/error/res/layout/voicemail_error_message_fragment.xml
index 4a40857..4bea8b1 100644
--- a/java/com/android/dialer/app/voicemail/error/res/layout/voicemail_error_message_fragment.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/layout/voicemail_error_message_fragment.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
+<!-- Copyright (C) 2017 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,99 +14,98 @@
      limitations under the License.
 -->
 <android.support.v7.widget.CardView
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/error_card"
-  style="@style/CallLogCardStyle"
-  android:gravity="center_vertical"
-  android:orientation="vertical">
-
-  <LinearLayout
-    android:id="@+id/error_card_content"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/error_card"
+    style="@style/CallLogCardStyle"
+    android:gravity="center_vertical"
     android:orientation="vertical">
 
-    <LinearLayout
+  <LinearLayout
+      android:id="@+id/error_card_content"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:layout_marginTop="@dimen/alert_main_padding"
-      android:layout_marginStart="@dimen/alert_main_padding"
-      android:layout_marginEnd="@dimen/alert_main_padding"
-      android:gravity="center_vertical"
       android:orientation="vertical">
 
-      <TextView
-        android:id="@+id/error_card_header"
-        android:textStyle="bold"
-        android:layout_width="wrap_content"
+    <LinearLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginBottom="@dimen/alert_title_padding"
-        android:layout_gravity="center_vertical"
-        android:singleLine="false"
-        android:textColor="@color/primary_text_color"
-        android:textSize="@dimen/call_log_primary_text_size"/>
+        android:paddingTop="@dimen/alert_main_padding"
+        android:paddingBottom="@dimen/alert_main_padding"
+        android:paddingStart="@dimen/alert_main_padding"
+        android:paddingEnd="@dimen/alert_main_padding"
+        android:gravity="top"
+        android:orientation="horizontal">
 
-      <TextView
-        android:id="@+id/error_card_details"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:lineSpacingExtra="@dimen/alert_line_spacing"
-        android:singleLine="false"
-        android:textColor="@color/secondary_text_color"
-        android:textSize="@dimen/call_log_detail_text_size"/>
+      <ImageView
+          android:id="@+id/voicemail_promo_card_icon"
+          android:layout_width="@dimen/voicemail_promo_card_icon_size"
+          android:layout_height="@dimen/voicemail_promo_card_icon_size"
+          android:layout_gravity="top"
+          android:src="@drawable/ic_voicemail_error_24px"/>
+
+      <LinearLayout
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:layout_marginStart="@dimen/voicemail_promo_card_main_padding"
+          android:gravity="center_vertical"
+          android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/error_card_header"
+            android:textStyle="bold"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/voicemail_promo_card_title_padding"
+            android:layout_gravity="center_vertical"
+            android:singleLine="false"
+            android:textSize="@dimen/voicemail_promo_card_title_text_size"/>
+
+        <TextView
+            android:id="@+id/error_card_details"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:lineSpacingExtra="@dimen/voicemail_promo_card_line_spacing"
+            android:singleLine="false"
+            android:textSize="@dimen/voicemail_promo_card_message_size"/>
+      </LinearLayout>
     </LinearLayout>
 
     <LinearLayout
-      android:id="@+id/error_actions"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:layout_marginTop="20dp"
-      android:paddingTop="@dimen/alert_action_vertical_padding"
-      android:paddingBottom="@dimen/alert_action_vertical_padding"
-      android:paddingStart="@dimen/alert_action_horizontal_padding"
-      android:paddingEnd="@dimen/alert_action_horizontal_padding"
-      android:gravity="start"
-      android:orientation="horizontal">
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="@dimen/voicemail_promo_card_action_vertical_padding"
+        android:paddingBottom="@dimen/voicemail_promo_card_action_vertical_padding"
+        android:paddingEnd="@dimen/voicemail_promo_card_action_end_padding"
+        android:gravity="end"
+        android:orientation="horizontal">
 
       <TextView
-        android:id="@+id/primary_action_raised"
-        style="@style/RaisedErrorActionStyle"
-        android:nextFocusLeft="@+id/promo_card"
-        android:nextFocusRight="@+id/primary_action"
-        android:clickable="true"
-        />
+          android:id="@+id/secondary_action_raised"
+          style="@style/RaisedErrorActionStyle"
+          android:paddingEnd="@dimen/alert_action_between_padding"
+          android:layout_marginEnd="8dp"
+          android:nextFocusForward="@+id/secondary_action"
+          android:clickable="true"/>
 
       <TextView
-        android:id="@+id/primary_action"
-        style="@style/ErrorActionStyle"
-        android:background="?android:attr/selectableItemBackground"
-        android:nextFocusLeft="@+id/promo_card"
-        android:nextFocusRight="@+id/secondary_action"
-        android:clickable="true"
-        />
+          android:id="@+id/secondary_action"
+          style="@style/ErrorActionStyle"
+          android:paddingEnd="@dimen/voicemail_promo_card_action_between_padding"
+          android:background="?android:attr/selectableItemBackground"
+          android:nextFocusForward="@+id/primary_action"/>
 
       <TextView
-        android:id="@+id/secondary_action"
-        style="@style/ErrorActionStyle"
-        android:paddingEnd="@dimen/alert_action_between_padding"
-        android:background="?android:attr/selectableItemBackground"
-        android:nextFocusLeft="@+id/primary_action"
-        android:nextFocusRight="@+id/promo_card"
-        android:clickable="true"/>
-
-      <android.support.v4.widget.Space
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1"/>
+          android:id="@+id/primary_action"
+          style="@style/ErrorActionStyle"
+          android:background="?android:attr/selectableItemBackground"
+          android:nextFocusForward="@+id/primary_action_raised"/>
 
       <TextView
-        android:id="@+id/secondary_action_raised"
-        style="@style/RaisedErrorActionStyle"
-        android:paddingEnd="@dimen/alert_action_between_padding"
-        android:layout_marginEnd="8dp"
-        android:nextFocusLeft="@+id/primary_action"
-        android:nextFocusRight="@+id/promo_card"
-        android:clickable="true"/>
+          android:id="@+id/primary_action_raised"
+          style="@style/RaisedErrorActionStyle"
+          android:nextFocusForward="@+id/promo_card"
+          android:clickable="true"
+          />
 
     </LinearLayout>
   </LinearLayout>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-af/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-af/strings.xml
index 77f1321..9c64735 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-af/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-af/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Jy sal nie nuwe stemboodskappe kan ontvang as jou inkassie vol is nie."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan nie nuwe stemboodskappe ontvang nie"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Jou inkassie is vol. Probeer \'n paar boodskappe uitvee om nuwe stemboodskappe te ontvang."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimenteel] Skakel ekstra berging en rugsteun aan"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Jou posbus is vol. Maak spasie beskikbaar deur ekstra berging aan te skakel sodat Google jou stemboodskappe kan bestuur en rugsteun. "<b><i>"Hierdie kenmerk word tans getoets "</i></b>"en kan potensieel stemboodskappe van jou stemboodskapbediener af uitvee. Ons belowe ook nie om hierdie kenmerk in die toekoms te steun nie. Ons sal egter graag jou terugvoer wil kry."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimenteel] Skakel ekstra berging en rugsteun aan"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Jou posbus is amper vol. Maak spasie beskikbaar deur ekstra berging aan te skakel sodat Google jou stemboodskappe kan bestuur en rugsteun. "<b><i>"Hierdie kenmerk word tans getoets "</i></b>"en kan potensieel stemboodskappe van jou stemboodskapbediener af uitvee. Ons belowe ook nie om hierdie kenmerk in die toekoms te steun nie. Ons sal egter graag jou terugvoer wil kry."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Skakel ekstra berging en rugsteun aan"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Jou posbus is vol. Om spasie beskikbaar te maak, skakel ekstra berging aan sodat Google jou stemboodskappe kan bestuur en rugsteun."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Skakel ekstra berging en rugsteun aan"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Jou posbus is amper vol. Om spasie beskikbaar te maak, skakel ekstra berging aan sodat Google jou stemboodskappe kan bestuur en rugsteun."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Stel jou stemboodskap-PIN"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Jy sal \'n stemboodskap-PIN nodig hê wanneer jy ook al na jou stemboodskapdiens toe bel."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Onbekende fout"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-am/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-am/strings.xml
index 60851a6..502b873 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-am/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-am/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"የገቢ መልዕክት ሳጥንዎ ሙሉ ከሆነ አዲስ የድምጽ መልዕክት መቀበል አይችሉም።"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"አዲስ የድምጽ መልዕክት መቀበል አይቻልም"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"የመልዕክት ሳጥንዎ ሙሉ ነው። አዲስ የድምጽ መልዕክት ለመቀበል የተወሰኑ መልዕክቶችን ለመሰረዝ ይሞክሩ።"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[የሙከራ] ተጨማሪ ማከማቻ እና ምትኬን ያብሩ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"የመልዕክት ሳጥንዎ ሙሉ ነው። ቦታ ነጻ ለማድረግ፣ ተጨማሪ ማከማቻ ያብሩ እና Google የእርስዎን የድምፅ መልዕክት ማስተዳደር እና ምትኬ ማድረግ ይችላል። "<b><i>"ይህ ባህሪይ በአሁኑ ጊዜ እየተሞከሩ ነው "</i></b>"እናም ምናልባት ከድምፅ መልዕክት አገልጋይዎ የድምፅ መልዕክቶችን ሊሰርዝ ይችላል፣ እንዲሁም ለወደፊቱ ይህን ባህሪ ለመደገፍ ቃል አንገባም። ነገር ግን ግብረመልስዎን ብናገኝ እንወዳለን።"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[የሙከራ] ተጨማሪ ማከማቻ እና ምትኬን ያብሩ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"የመልዕክት ሳጥንዎ ከሞላ ጎደል ሙሉ ነው። ቦታ ነጻ ለማድረግ፣ ተጨማሪ ማከማቻ ያብሩ እና Google የእርስዎን የድምፅ መልዕክት ማስተዳደር እና ምትኬ ማድረግ ይችላል። "<b><i>"ይህ ባህሪይ በአሁኑ ጊዜ እየተሞከሩ ነው "</i></b>"እናም ምናልባት ከድምፅ መልዕክት አገልጋይዎ የድምፅ መልዕክቶችን ሊሰርዝ ይችላል፣ እንዲሁም ለወደፊቱ ይህን ባህሪ ለመደገፍ ቃል አንገባም። ነገር ግን ግብረመልስዎን ብናገኝ እንወዳለን።"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ትርፍ ማከማቻ እና ምትኬን ያብሩ"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"የእርስዎ የመልእክት ሳጥን ሙሉ ነው። ባዶ ቦታ ነጻ ለማድረግ፣ Google የእርስዎን የድምፅ መልእክቶች ማስተዳደር እና በምትኬ ማስቀመጥ እንዲችል ትርፍ ማከማቻን ያብሩ።"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ትርፍ ማከማቻ እና ምትኬን ያብሩ"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"የእርስዎ የመልእክት ሳጥን ሙሉ ነው። ባዶ ቦታ ነጻ ለማድረግ፣ Google የእርስዎን የድምፅ መልእክቶች ማስተዳደር እና በምትኬ ማስቀመጥ እንዲችል ትርፍ ማከማቻን ያብሩ።"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"የድምፅ መልዕክት ፒንዎን ያስገቡ"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"በማንኛውም ጊዜ የድምፅ መልዕክትዎ ላይ ለመድረስ ሲደውሉ የድምፅ መልዕክት ፒን ያስፈልግዎታል።"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"ያልታወቀ ስህተት"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ar/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ar/strings.xml
index d2c0fe6..6d462ef 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ar/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ar/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"لن تتمكن من تلقي بريد صوتي جديد إذا امتلأ بريدك الوارد."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"يتعذر تلقي رسائل بريد صوتي جديدة"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"بريدك الوارد ممتلئ. حاول حذف بعض الرسائل لتلقي رسائل بريد صوتي جديدة."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ميزة تجريبية] تشغيل سعة التخزين الإضافية والنسخ الاحتياطي"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"‏صندوق بريدك ممتلئ. للحصول على بعض المساحة، يمكنك تشغيل سعة التخزين الإضافية حتى يمكن لحساب Google إدارة رسائل البريد الصوتي ونسخها احتياطيًا. "<b><i>"هذه الميزة قيد الاختبار حاليًا "</i></b>" وقد تؤدي إلى حذف رسائل البريد الصوتي من خادم البريد الصوتي، ونحن لا نعد بدعم هذه الميزة في المستقبل. إلا أننا نود الحصول على تعليقات منك."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ميزة تجريبية] تشغيل سعة التخزين الإضافية والنسخ الاحتياطي"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"‏صندوق بريدك ممتلئ تقريبًا. للحصول على بعض المساحة، يمكنك تشغيل سعة التخزين الإضافية حتى يمكن لحساب Google إدارة رسائل البريد الصوتي ونسخها احتياطيًا. "<b><i>"هذه الميزة قيد الاختبار حاليًا "</i></b>"وقد تؤدي إلى حذف رسائل البريد الصوتي من خادم البريد الصوتي، ونحن لا نعد بدعم هذه الميزة في المستقبل. إلا أننا نود الحصول على تعليقات منك."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"تشغيل سعة التخزين الإضافية والنسخ الاحتياطي"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏صندوق بريدك ممتلئ. للحصول على بعض المساحة، ينبغي تشغيل سعة التخزين الإضافية حتى يتمكن Google من إدارة رسائل البريد الصوتي ونسخها احتياطيًا."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"تشغيل سعة التخزين الإضافية والنسخ الاحتياطي"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏صندوق بريدك ممتلئ. للحصول على بعض المساحة، ينبغي تشغيل سعة التخزين الإضافية حتى يتمكن Google من إدارة رسائل البريد الصوتي ونسخها احتياطيًا."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"إعداد رقم التعريف الشخصي للبريد الصوتي"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ستحتاج رقم تعريف شخصي للبريد الصوتي في كل مرة تتصل فيها للوصول إلى بريدك الصوتي."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"حدث خطأ غير معروف"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-az/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-az/strings.xml
index aea92bf..33ddafa 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-az/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-az/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Gələnlər qutusu dolu olduqda, yeni səsli mesaj almaq olmayacaq."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Yeni səsli mesaj almaq olmur"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Gələnlər qutusu doludur. Yeni səsli mesaj əldə etmək üçün bəzi mesajları silin."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimental] Əlavə yaddaş və yedəkləməni aktiv edin"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"E-poçt qutusu doludur. Boş yer yaratmaq üçün əlavə yaddaşı aktiv edin, beləliklə Google səsli e-məktub mesajlarını idarə edə və yedəkləyə bilər. "<b><i>"Bu funksiya hazırda yoxlanılır "</i></b>"və səsli e-poçt serverindən səsli e-məktubları potensial olaraq siləcək, gələcəkdə bu funksiyanı dəstəkləməyə söz vermirik. Lakin əks əlaqənizi istərdik."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimental] Əlavə yaddaş və yedəkləməni aktiv edin"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"E-poçt qutusu demək olar ki, doludur. Boş yer yaratmaq üçün əlavə yaddaşı aktiv edin, beləliklə Google səsli e-məktub mesajlarını idarə edə və yedəkləyə bilər. "<b><i>"Bu funksiya hazırda yoxlanılır "</i></b>"və səsli e-poçt serverindən səsli e-məktubları potensial olaraq siləcək, gələcəkdə bu funksiyanı dəstəkləməyə söz vermirik. Lakin əks əlaqənizi istərdik."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Əlavə yaddaş və yedəkləməni aktiv edin"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"E-poçt qutusu doludur. Boş yer yaratmaq üçün əlavə yaddaşı aktiv edin, beləliklə Google səsli e-məktub mesajlarını idarə edə və yedəkləyə bilər."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Əlavə yaddaş və yedəkləməni aktiv edin"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"E-poçt qutusu artıq doludur. Boş yer yaratmaq üçün əlavə yaddaşı aktiv edin, beləliklə Google səsli e-məktub mesajlarını idarə edə və yedəkləyə bilər."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Səsli mesaj PIN kodunu ayarlayın"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Zəng etdiyiniz zaman səsli mesaja daxil olmaq üçün PIN koda ehtiyacınız olacaq."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Naməlum xəta"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..98dc061
--- /dev/null
+++ b/java/com/android/dialer/app/voicemail/error/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="voicemail_error_turn_off_airplane_mode_title" msgid="335011175933917603">"Isključite režim rada u avionu"</string>
+    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktivira se vizuelna govorna pošta"</string>
+    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Možda nećete dobijati obaveštenja o govornoj pošti dok potpuno ne aktivirate vizuelnu govornu poštu. Pozovite govornu poštu da biste preuzeli nove poruke dok govorna pošta ne bude potpuno aktivirana."</string>
+    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Aktiviranje vizuelne govorne pošte nije uspelo"</string>
+    <string name="voicemail_error_not_activate_no_signal_message" msgid="4511975927252363280">"Proverite da li telefon ima mobilnu vezu i pokušajte ponovo."</string>
+    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Isključite režim rada u avionu i pokušajte ponovo."</string>
+    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Veza nije uspostavljena"</string>
+    <string name="voicemail_error_no_signal_message" msgid="8557509373166292640">"Nećete dobijati obaveštenja o novim govornim porukama. Ako ste na Wi-Fi mreži, sinhronizujte da biste proverili govornu poštu."</string>
+    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nećete dobijati obaveštenja o novim govornim porukama. Isključite režim rada u avionu da biste sinhronizovali govornu poštu."</string>
+    <string name="voicemail_error_no_signal_cellular_required_message" msgid="8461294934887808098">"Telefonu treba mobilna veza za prenos podataka da biste proverili govornu poštu."</string>
+    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Aktiviranje vizuelne govorne pošte nije uspelo"</string>
+    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
+    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
+    <string name="voicemail_error_no_data_message" msgid="3723828868450752165">"Probajte ponovo kad budete imali bolju Wi-Fi ili mobilnu vezu. I dalje možete da pozovete govornu poštu da biste je proverili."</string>
+    <string name="voicemail_error_no_data_cellular_required_message" msgid="2952045163270555699">"Probajte ponovo kad budete imali bolju mobilnu vezu za prenos podataka. I dalje možete da pozovete govornu poštu da biste je proverili."</string>
+    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
+    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
+    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
+    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
+    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
+    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
+    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
+    <string name="voicemail_error_server_message" msgid="3538157415413084592">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
+    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Prijemno sanduče je skoro puno"</string>
+    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nećete moći da primate novu govornu poštu ako je prijemno sanduče puno."</string>
+    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ne možete da primate nove govorne poruke"</string>
+    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Prijemno sanduče je puno. Izbrišite neke poruke da biste primili novu govornu poštu."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Uključite dodatni memorijski prostor i rezervne kopije"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Poštansko sanduče je puno. Da biste oslobodili prostor, uključite dodatni memorijski prostor, pa će Google moći da upravlja vašim govornim porukama i pravi njihove rezervne kopije."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Uključite dodatni memorijski prostor i rezervne kopije"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Poštansko sanduče je skoro puno. Da biste oslobodili prostor, uključite dodatni memorijski prostor, pa će Google moći da upravlja vašim govornim porukama i pravi njihove rezervne kopije."</string>
+    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Podesite PIN govorne pošte"</string>
+    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN govorne pošte vam treba svaki put kad upućujete poziv da biste pristupili govornoj pošti."</string>
+    <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Nepoznata greška"</string>
+    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Podešavanja režima rada u avionu"</string>
+    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Podesi PIN"</string>
+    <string name="voicemail_action_retry" msgid="4450307484541052511">"Probaj ponovo"</string>
+    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Uključi"</string>
+    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ne, hvala"</string>
+    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinhronizuj"</string>
+    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Pozovi govornu poštu"</string>
+    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Pozovi korisničku podršku"</string>
+    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Nešto nije u redu"</string>
+    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9001."</string>
+    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Nešto nije u redu"</string>
+    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9002."</string>
+    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Nešto nije u redu"</string>
+    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9003."</string>
+    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
+    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Žao nam je, imamo probleme pri povezivanju sa sandučetom govorne pošte. Ako ste u oblasti sa slabim signalom, sačekajte dok ne budete imali jak signal i pokušajte ponovo. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9004."</string>
+    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
+    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Žao nam je, imamo probleme pri povezivanju sa sandučetom govorne pošte. Ako ste u oblasti sa slabim signalom, sačekajte dok ne budete imali jak signal i pokušajte ponovo. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9005."</string>
+    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
+    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Žao nam je, imamo probleme pri povezivanju sa sandučetom govorne pošte. Ako ste u oblasti sa slabim signalom, sačekajte dok ne budete imali jak signal i pokušajte ponovo. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9006."</string>
+    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Nešto nije u redu"</string>
+    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9007."</string>
+    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Nešto nije u redu"</string>
+    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9008."</string>
+    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Nešto nije u redu"</string>
+    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Žao nam je, imamo probleme pri podešavanju usluge. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9009."</string>
+    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
+    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Žao nam je, trenutno ne možemo da se povežemo sa sandučetom govorne pošte. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9990."</string>
+    <string name="vvm3_error_unknown_user_title" msgid="3908082247867523916">"Podesite govornu poštu"</string>
+    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Govorna pošta nije podešena na nalogu. Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9991."</string>
+    <string name="vvm3_error_unknown_device_title" msgid="1894628172321293169">"Govorna pošta"</string>
+    <string name="vvm3_error_unknown_device_message" msgid="5653639091623486217">"Ne možete da koristite Vizuelnu govornu poštu na ovom uređaju. Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9992."</string>
+    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Nešto nije u redu"</string>
+    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9993."</string>
+    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7903951619707049472">"Vizuelna govorna pošta"</string>
+    <string name="vvm3_error_mailbox_not_initialized_message" msgid="6411209982463628638">"Da biste završili podešavanje Vizuelne govorne pošte, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9994."</string>
+    <string name="vvm3_error_service_not_provisioned_title" msgid="6200721664168681357">"Vizuelna govorna pošta"</string>
+    <string name="vvm3_error_service_not_provisioned_message" msgid="2652652017548677049">"Da biste završili podešavanje Vizuelne govorne pošte, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9995."</string>
+    <string name="vvm3_error_service_not_activated_title" msgid="8223482379756083354">"Vizuelna govorna pošta"</string>
+    <string name="vvm3_error_service_not_activated_message" msgid="3877179443583231620">"Da biste aktivirali Vizuelnu govornu poštu, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9996."</string>
+    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Nešto nije u redu"</string>
+    <string name="vvm3_error_user_blocked_message" msgid="5006388183845631086">"Da biste završili podešavanje Vizuelne govorne pošte, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9998."</string>
+    <string name="vvm3_error_subscriber_unknown_title" msgid="2327013918755472131">"Vizuelna govorna pošta je onemogućena"</string>
+    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> da biste aktivirali vizuelnu govornu poštu."</string>
+    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Nešto nije u redu"</string>
+    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9997."</string>
+    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Nešto nije u redu"</string>
+    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9989."</string>
+    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Nešto nije u redu"</string>
+    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9999."</string>
+    <string name="verizon_terms_and_conditions_title" msgid="9074967311276321500">"Uslovi i odredbe za vizuelnu govornu poštu"</string>
+    <string name="verizon_terms_and_conditions_message" msgid="271780225159084419">"Morate da prihvatite Verizon Wireless uslove i odredbe da biste koristili vizuelnu govornu poštu:\n\n%s"</string>
+    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ako odbijete uslove i odredbe, onemogućićete vizuelnu govornu poštu."</string>
+    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Onemogućite vizuelnu govornu poštu"</string>
+    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Govornoj pošti ćete moći da pristupite samo ako pozovete *86. Podesite novi PIN kôd govorne pošte da biste nastavili."</string>
+    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Podesite PIN"</string>
+</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-be/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-be/strings.xml
index 2ab2a5c..50f32af 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-be/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-be/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Вы не зможаце атрымліваць новыя галасавыя паведамленні, калі ваша папка ўваходных поўная."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Немагчыма атрымліваць новыя галасавыя паведамленні"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Ваша папка ўваходных запоўнена. Паспрабуйце выдаліць некалькі паведамленняў, каб атрымаць новую галасавую пошту."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Эксперыментальна] Уключыць дадатковае сховішча і рэзервовае капіраванне"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Ваша паштовая скрыня запоўнена. Каб вызваліць месца, уключыце дадатковае сховішча, каб Google мог кіраваць вашымі паведамленнямі галасавой пошты і рабіць іх рэзервовую копію. "<b><i>"Гэта характарыстыка тэсціруецца "</i></b>"і патэнцыяльна будзе выдаляць паведамленні галасавой пошты з вашага сервера галасавой пошты, але мы не абяцаем, што будзем падтрымліваць яе ў будучым. Але мы будзем вельмі ўдзячны за водгукі на гэту характарыстыку."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Эксперыментальна] Уключыць дадатковае сховішча і рэзервовае капіраванне"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Ваша паштовая скрыня запоўнена. Каб вызваліць месца, уключыце дадатковае сховішча, каб Google мог кіраваць вашымі паведамленнямі галасавой пошты і рабіць іх рэзервовую копію. "<b><i>"Гэта характарыстыка тэсціруецца "</i></b>"і патэнцыяльна будзе выдаляць паведамленні галасавой пошты з вашага сервера галасавой пошты, але мы не абяцаем, што будзем падтрымліваць яе ў будучым. Але мы будзем вельмі ўдзячны за водгукі на гэту характарыстыку."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Уключыць дадатковае сховішча і рэзервовае капіраванне"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Ваша паштовая скрыня запоўнена. Каб вызваліць месца, уключыце дадатковае сховішча, каб Google мог кіраваць вашымі паведамленнямі галасавой пошты і рабіць іх рэзервовую копію."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Уключыць дадатковае сховішча і рэзервовае капіраванне"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ваша паштовая скрыня амаль запоўнена. Каб вызваліць месца, уключыце дадатковае сховішча, каб Google мог кіраваць вашымі паведамленнямі галасавой пошты і рабіць іх рэзервовую копію."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Наладзьце PIN-код галасавой пошты"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Вам спатрэбіцца PIN-код галасавой пошты заўжды, калі вы тэлефануеце на сваю галасавую пошту."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Невядомая памылка"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-bg/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-bg/strings.xml
index e9200d1..dbca19e 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-bg/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-bg/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Няма да можете да получавате нова гласова поща, ако входящата ви поща е пълна."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Не могат да се получават нови гласови съобщения"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Входящата ви поща е пълна. Опитайте да изтриете съобщения, за да получавате нова гласова поща."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Експериментално] Включване на допълнително хранилище и резервни копия"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Пощенската ви кутия е пълна. За да освободите място, включете допълнителното хранилище, за да може Google да управлява и създава резервни копия на съобщенията в гласовата ви поща. "<b><i>"Тази функция понастоящем се тества"</i></b>". Тя потенциално може да изтрие гласови съобщения от сървъра ви за гласова поща и не обещаваме, че ще я поддържаме в бъдеще. Но ще се радваме на отзиви за нея."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Експериментално] Включване на допълнително хранилище и резервни копия"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Пощенската ви кутия е почти пълна. За да освободите място, включете допълнителното хранилище, за да може Google да управлява и създава резервни копия на съобщенията в гласовата ви поща. "<b><i>"Тази функция понастоящем се тества"</i></b>". Тя потенциално може да изтрие гласови съобщения от сървъра ви за гласова поща и не обещаваме, че ще я поддържаме в бъдеще. Но ще се радваме на отзиви за нея."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Включване на допълнително хранилище и създаване на резервно копие"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Пощенската ви кутия е пълна. За да освободите място, включете допълнително хранилище, така че Google да може да управлява и създаде резервно копие на съобщенията в гласовата ви поща."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Включване на допълнително хранилище и създаване на резервно копие"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Пощенската ви кутия е почти пълна. За да освободите място, включете допълнително хранилище, така че Google да може да управлява и създаде резервно копие на съобщенията в гласовата ви поща."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Задайте ПИН за гласовата си поща"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Ще ви е необходим ПИН за гласовата поща при всяко обаждане за достъп до съобщенията ви в нея."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Неизвестна грешка"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-bn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-bn/strings.xml
index b088f51..5954448 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-bn/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-bn/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"যদি আপনার ইনবক্সে পূর্ণ থাকে তাহলে আপনি নতুন ভয়েসমেল পেতে সক্ষম হবেন না।"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"নতুন ভয়েসমেলগুলি গ্রহণ করতে পারবেন না"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"আপনার ইনবক্স পূর্ণ। নতুন ভয়েসমেল পেতে কিছু বার্তা মুছে ফেলার চেষ্টা করুন।"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[পরীক্ষামূলক] অতিরিক্ত সঞ্চয়স্থান এবং ব্যাক আপ চালু করুন"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"আপনার মেলবক্স পূর্ণ। স্থান খালি করতে, অতিরিক্ত সঞ্চয়স্থান চালু করুন যাতে Google আপনার ভয়েসমেল বার্তাগুলি পরিচালনা করতে এবং ব্যাক আপ নিতে পারে। "<b><i>"এই বৈশিষ্ট্যটি বর্তমানে পরীক্ষা করা হচ্ছে "</i></b>"এবং সম্ভবত আপনার ভয়েসমেল সার্ভার থেকে ভয়েসমেলগুলি মুছবে এবং আমরা ভবিষ্যতে এই বৈশিষ্ট্যের উপর সমর্থন দেওয়ার কোন কথা দিচ্ছি না। যদিও আমরা এই বৈশিষ্ট্যটির উপর মতামত পেলে খুব খুশি হব।"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[পরীক্ষামূলক] অতিরিক্ত সঞ্চয়স্থান এবং ব্যাক আপ চালু করুন"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"আপনার মেলবক্স প্রায় পূর্ণ। স্থান খালি করতে, অতিরিক্ত সঞ্চয়স্থান চালু করুন যাতে Google আপনার ভয়েসমেল বার্তাগুলি পরিচালনা করতে এবং ব্যাক আপ নিতে পারে। "<b><i>"এই বৈশিষ্ট্যটি বর্তমানে পরীক্ষা করা হচ্ছে "</i></b>"এবং সম্ভবত আপনার ভয়েসমেল সার্ভার থেকে ভয়েসমেলগুলি মুছবে এবং আমরা ভবিষ্যতে এই বৈশিষ্ট্যেটি সমর্থন করব কিনা সেই নিয়ে কোন কথা দিচ্ছি না। যদিও আমরা এই বৈশিষ্ট্যটির উপর মতামত পেলে খুব খুশি হব।"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"অতিরিক্ত সঞ্চয়স্থান এবং ব্যাক আপ চালু করুন"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"আপনার মেলবক্স পূর্ণ। স্থান খালি করতে, অতিরিক্ত সঞ্চয়স্থান চালু করুন যাতে Google আপনার ভয়েসমেল বার্তাগুলি পরিচালনা করতে এবং ব্যাক আপ নিতে পারে।"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"অতিরিক্ত সঞ্চয়স্থান এবং ব্যাক আপ চালু করুন"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"আপনার মেলবক্স প্রায় পূর্ণ। স্থান খালি করতে, অতিরিক্ত সঞ্চয়স্থান চালু করুন যাতে Google আপনার ভয়েসমেল বার্তাগুলি পরিচালনা করতে এবং ব্যাক আপ নিতে পারে।"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"আপনার ভয়েসমেল পিন সেট করুন"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"যে কোনো সময়ে আপনার ভয়েসমেল অ্যাক্সেস করার জন্য আপনার একটি ভয়েসমেল পিন প্রয়োজন৷"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"অজানা ত্রুটি"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-bs/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-bs/strings.xml
index 32b4ea3..0352436 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-bs/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nećete moći primati novu govornu poštu ako je vam je pristigla pošta puna."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ne možete primati novu govornu poštu"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Vaša pristigla pošta je puna. Pokušajte izbrisati neke poruke da primite novu govornu poštu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimentalno] Uključite dodatnu pohranu i sigurnosnu kopiju"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Vaše poštansko sanduče je puno. Za oslobađanje prostora uključite dodatnu pohranu da Google može upravljati i kreirati sigurnosnu kopiju poruka vaše govorne pošte. "<b><i>"Ova funkcija se trenutno testira "</i></b>" i može izbrisati poruke govorne pošte sa servera govorne pošte. Iako ne obećavamo da ćemo podržavati ovu funkciju u budućnosti, ipak bismo željeli primiti vaše povratne informacije."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimentalno] Uključite dodatnu pohranu i sigurnosnu kopiju"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Vaše poštansko sanduče je puno. Za oslobađanje prostora uključite dodatnu pohranu da Google može upravljati i kreirati sigurnosnu kopiju poruka vaše govorne pošte. "<b><i>"Ova funkcija se trenutno testira "</i></b>"i može izbrisati poruke govorne pošte sa servera govorne pošte. Iako ne obećavamo da ćemo podržavati ovu funkciju u budućnosti, ipak bismo željeli primiti vaše povratne informacije."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Uključite dodatnu pohranu i sigurnosnu kopiju"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Poštanski pretinac je pun. Da oslobodite prostor, uključite dodatnu pohranu tako da Google može upravljati vašim porukama govorne pošte i praviti njihovu sigurnosnu kopiju."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Uključite dodatnu pohranu i sigurnosnu kopiju"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Poštanski pretinac je gotovo sasvim pun. Da oslobodite prostor, uključite dodatnu pohranu tako da Google može upravljati vašim porukama govorne pošte i praviti njihovu sigurnosnu kopiju."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Postavite PIN za govornu poštu"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN za govornu poštu trebat će vam svaki put kada zatražite pristup govornoj pošti."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Nepoznata greška"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ca/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ca/strings.xml
index cea2ed3..b6d844d 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ca/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ca/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"No podràs rebre missatges de veu nous si la safata d\'entrada està plena."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"No es poden rebre missatges de veu nous"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"La safata d\'entrada està plena. Per rebre missatges de veu nous, prova de suprimir alguns missatges."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Activa l\'emmagatzematge addicional i la còpia de seguretat"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"La bústia de veu està plena. Per alliberar espai, activa l\'emmagatzematge addicional perquè Google pugui gestionar els teus missatges de veu i crear-ne una còpia de seguretat. "<b><i>"Aquesta funció està en mode de prova "</i></b>"i és possible que suprimeixi els missatges de veu del servidor de la bústia. No podem garantir-ne la continuïtat en el futur. De tota manera, ens agradaria saber què en penses."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Activa l\'emmagatzematge addicional i la còpia de seguretat"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"La bústia de veu gairebé està plena. Per alliberar espai, activa l\'emmagatzematge addicional perquè Google pugui gestionar els teus missatges de veu i crear-ne una còpia de seguretat. "<b><i>"Aquesta funció està en mode de prova "</i></b>"i és possible que suprimeixi els missatges de veu del servidor de la bústia. No podem garantir-ne la continuïtat en el futur. De tota manera, ens agradaria saber què en penses."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activa l\'emmagatzematge addicional i la còpia de seguretat"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Tens la bústia plena. Per alliberar espai, activa l\'emmagatzematge addicional perquè Google pugui gestionar els missatges de veu i crear-ne una còpia de seguretat."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activa l\'emmagatzematge addicional i la còpia de seguretat"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Tens la bústia gairebé plena. Per alliberar espai, activa l\'emmagatzematge addicional perquè Google pugui gestionar els missatges de veu i crear-ne una còpia de seguretat."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Defineix el PIN per als missatges de veu"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Necessitaràs el PIN per als missatges de veu cada vegada que truquis per accedir-hi."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Error desconegut"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-cs/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-cs/strings.xml
index 9db7727..c52f7b0 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-cs/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-cs/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Pokud máte plnou schránku, nemůžete přijímat nové hlasové zprávy."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nemůžete přijímat nové hlasové zprávy"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Vaše schránka je plná. Abyste mohli přijímat nové hlasové zprávy, zkuste nějaké zprávy smazat."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimentální funkce] Zapněte si další úložiště a zálohování"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Vaše e-mailová schránka je plná. Pokud chcete uvolnit místo, zapněte si další úložiště, aby Google mohl spravovat a zálohovat vaše hlasové zprávy. "<b><i>"Tuto funkci právě testujeme."</i></b>" Funkce vám může smazat hlasové zprávy ze serveru hlasové schránky. Nemůžeme zaručit, že bude podporována i v budoucnu, budeme vám ale vděční za zpětnou vazbu."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimentální funkce] Zapněte si další úložiště a zálohování"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Vaše e-mailová schránka je téměř plná. Pokud chcete uvolnit místo, zapněte si další úložiště, aby Google mohl spravovat a zálohovat vaše hlasové zprávy. "<b><i>"Tuto funkci právě testujeme."</i></b>" Funkce vám může smazat hlasové zprávy ze serveru hlasové schránky. Nemůžeme zaručit, že bude podporována i v budoucnu, budeme vám ale vděční za zpětnou vazbu."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Zapněte si další úložiště a zálohování"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Vaše e-mailová schránka je plná. Pokud chcete uvolnit místo, zapněte si další úložiště, aby Google mohl spravovat a zálohovat vaše hlasové zprávy."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Zapněte si další úložiště a zálohování"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Vaše e-mailová schránka je téměř plná. Pokud chcete uvolnit místo, zapněte si další úložiště, aby Google mohl spravovat a zálohovat vaše hlasové zprávy."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nastavit kód PIN hlasové schránky"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN hlasové schránky budete potřebovat, kdykoli do své hlasové schránky zavoláte."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Neznámá chyba"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-da/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-da/strings.xml
index f04049a..26e5ede 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-da/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du vil ikke kunne modtage nye telefonsvarerbeskeder, hvis din indbakke er fuld."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Du kan ikke modtage nye telefonsvarerbeskeder"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Din indbakke er fuld. Prøv at slette nogle beskeder for at modtage nye telefonsvarerbeskeder."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimental] Slå ekstra lagerplads og sikkerhedskopiering til"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Din telefonsvarer er fuld. Frigør plads ved at slå ekstra lagerplads til, så Google kan administrere og sikkerhedskopiere dine talebeskeder. "<b><i>"Denne funktion bliver testet i øjeblikket "</i></b>"og vil muligvis slette talebeskeder fra din telefonsvarerserver. Vi lover desuden ikke, at denne funktion understøttes fremover. Vi vil dog stadig gerne have feedback fra dig."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimental] Slå ekstra lagerplads og sikkerhedskopiering til"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Din telefonsvarer er næsten fuld. Frigør plads ved at slå ekstra lagerplads til, så Google kan administrere og sikkerhedskopiere dine talebeskeder. "<b><i>"Denne funktion bliver testet i øjeblikket "</i></b>"og vil muligvis slette talebeskeder fra din telefonsvarerserver. Vi lover desuden ikke, at denne funktion understøttes fremover. Vi vil dog stadig gerne have feedback fra dig."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Slå ekstra lagerplads og sikkerhedskopiering til"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Din telefonsvarer er fuld. Du kan frigøre plads ved at slå ekstra lagerplads til, så Google kan administrere og sikkerhedskopiere dine talebeskeder."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Slå ekstra lagerplads og sikkerhedskopiering til"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Din telefonsvarer er næsten fuld. Du kan frigøre plads ved at slå ekstra lagerplads til, så Google kan administrere og sikkerhedskopiere dine talebeskeder."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Bestem pinkoden til din telefonsvarer"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du skal bruge en pinkode til din telefonsvarer, når du ringer for at få adgang til den."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Ukendt fejl"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-de/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-de/strings.xml
index 8939e68..865ddd9 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-de/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-de/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Wenn deine Mailbox voll ist, kannst du keine neuen Sprachnachrichten empfangen."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Es können keine neuen Mailboxnachrichten empfangen werden"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Deine Mailbox ist voll. Lösche einige Nachrichten, um neue empfangen zu können."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Testfunktion] Zusätzlichen Speicher und Sicherung aktivieren"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Dein Postfach ist voll. Aktivere zusätzlichen Speicher, um Speicherplatz freizugeben. So kann Google deine Mailboxnachrichten verwalten und sichern. "<b><i>"Diese Funktion wird gerade getestet."</i></b>" Hiermit werden möglicherweise Mailboxnachrichten von deinem Mailbox-Server gelöscht und es wird nicht garantiert, dass diese Funktion auch in Zukunft unterstützt wird. Wir würden uns aber sehr über Feedback dazu freuen."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Testfunktion] Zusätzlichen Speicher und Sicherung aktivieren"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Dein Postfach ist voll. Aktivere zusätzlichen Speicher, um Speicherplatz freizugeben. So kann Google deine Mailboxnachrichten verwalten und sichern. "<b><i>"Diese Funktion wird gerade getestet."</i></b>" Hiermit werden möglicherweise Mailboxnachrichten von deinem Mailbox-Server gelöscht und es wird nicht garantiert, dass diese Funktion auch in Zukunft unterstützt wird. Wir würden uns aber sehr über Feedback dazu freuen."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Zusätzlichen Speicher und Sicherung aktivieren"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Dein Postfach ist voll. Aktivere zusätzlichen Speicher, um Speicherplatz freizugeben. So kann Google deine Mailboxnachrichten verwalten und sichern."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Zusätzlichen Speicher und Sicherung aktivieren"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Dein Postfach fast ist voll. Aktivere zusätzlichen Speicher, um Speicherplatz freizugeben. So kann Google deine Mailboxnachrichten verwalten und sichern."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Mailbox-PIN festlegen"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Bei jedem Anruf auf deiner Mailbox benötigst du eine Mailbox-PIN."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Unbekannter Fehler"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-el/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-el/strings.xml
index 9c7c7da..acd1ca0 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-el/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-el/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Δεν θα είστε σε θέση να λάβετε νέα φωνητικά μηνύματα από τον αυτόματο τηλεφωνητή εάν τα εισερχόμενά σας είναι πλήρη."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Δεν μπορείτε να λάβετε νέα μηνύματα από τον αυτόματο τηλεφωνητή"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Τα εισερχόμενά σας είναι πλήρη. Δοκιμάστε να διαγράψετε μερικά μηνύματα, για να λάβετε νέα μηνύματα από τον αυτόματο τηλεφωνητή."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Πειραματική λειτουργία] Ενεργοποίηση επιπλέον αποθηκευτικού χώρου και αντιγράφων ασφαλείας"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Το γραμματοκιβώτιό σας είναι πλήρες. Για να ελευθερώσετε χώρο, ενεργοποιήστε επιπλέον αποθηκευτικό χώρο, ώστε η Google μπορεί να διαχειριστεί και να δημιουργήσει αντίγραφα ασφαλείας των μηνυμάτων του αυτόματου τηλεφωνητή σας. "<b><i>"Αυτή η λειτουργία βρίσκεται σε δοκιμαστική φάση "</i></b>", ενδέχεται να έχει ως αποτέλεσμα τη διαγραφή φωνητικών μηνυμάτων από τον διακομιστή αυτόματου τηλεφωνητή σας και δεν παρέχουμε εγγυήσεις για την υποστήριξη αυτής της λειτουργίας μελλοντικά. Ωστόσο, θα εκτιμούσαμε τα σχόλιά σας."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Πειραματική λειτουργία] Ενεργοποίηση επιπλέον αποθηκευτικού χώρου και αντιγράφων ασφαλείας"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Το γραμματοκιβώτιό σας είναι σχεδόν πλήρες. Για να ελευθερώσετε χώρο, ενεργοποιήστε επιπλέον αποθηκευτικό χώρο, ώστε η Google μπορεί να διαχειριστεί και να δημιουργήσει αντίγραφα ασφαλείας των μηνυμάτων του αυτόματου τηλεφωνητή σας. "<b><i>"Αυτή η λειτουργία βρίσκεται σε δοκιμαστική φάση "</i></b>", ενδέχεται να έχει ως αποτέλεσμα τη διαγραφή φωνητικών μηνυμάτων από τον διακομιστή αυτόματου τηλεφωνητή σας και δεν παρέχουμε εγγυήσεις για την υποστήριξη αυτής της λειτουργίας μελλοντικά. Ωστόσο, θα εκτιμούσαμε τα σχόλιά σας."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ενεργοποίηση επιπλέον αποθηκευτικού χώρου και αντιγράφων ασφαλείας"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Το γραμματοκιβώτιό σας είναι πλήρες. Για να ελευθερώσετε χώρο, ενεργοποιήστε επιπλέον αποθηκευτικό χώρο, ώστε η Google μπορεί να διαχειριστεί και να δημιουργήσει αντίγραφα ασφαλείας των μηνυμάτων του αυτόματου τηλεφωνητή σας."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ενεργοποίηση επιπλέον αποθηκευτικού χώρου και αντιγράφων ασφαλείας"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Το γραμματοκιβώτιό σας είναι σχεδόν πλήρες. Για να ελευθερώσετε χώρο, ενεργοποιήστε επιπλέον αποθηκευτικό χώρο, ώστε η Google μπορεί να διαχειριστεί και να δημιουργήσει αντίγραφα ασφαλείας των μηνυμάτων του αυτόματου τηλεφωνητή σας."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ορίστε PIN για τον αυτόματο τηλεφωνητή σας"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Θα χρειάζεστε ένα PIN φωνητικού τηλεφωνητή κάθε φορά που καλείτε, για να έχετε πρόσβαση στον τηλεφωνητή σας."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Άγνωστο σφάλμα"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-en-rAU/strings.xml
index c1455ca..a036950 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-en-rAU/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"You won\'t be able to receive new voicemail if your inbox is full."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Can\'t receive new voicemail"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Your inbox is full. Try deleting some messages to receive new voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages. "<b><i>"This feature is currently being tested "</i></b>"and will potentially delete voicemail from your voicemail server. We do not promise to support this feature in the future. We would love your feedback though."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages. "<b><i>"This feature is currently being tested "</i></b>"and will potentially delete voicemail from your voicemail server. We do not promise to support this feature in the future. We would love your feedback though."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Turn on extra storage and backup"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Turn on extra storage and backup"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Set your voicemail PIN"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"You\'ll need a voicemail PIN whenever you call to access your voicemail."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Unknown error"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-en-rGB/strings.xml
index c1455ca..a036950 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-en-rGB/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"You won\'t be able to receive new voicemail if your inbox is full."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Can\'t receive new voicemail"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Your inbox is full. Try deleting some messages to receive new voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages. "<b><i>"This feature is currently being tested "</i></b>"and will potentially delete voicemail from your voicemail server. We do not promise to support this feature in the future. We would love your feedback though."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages. "<b><i>"This feature is currently being tested "</i></b>"and will potentially delete voicemail from your voicemail server. We do not promise to support this feature in the future. We would love your feedback though."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Turn on extra storage and backup"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Turn on extra storage and backup"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Set your voicemail PIN"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"You\'ll need a voicemail PIN whenever you call to access your voicemail."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Unknown error"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-en-rIN/strings.xml
index c1455ca..a036950 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-en-rIN/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"You won\'t be able to receive new voicemail if your inbox is full."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Can\'t receive new voicemail"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Your inbox is full. Try deleting some messages to receive new voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages. "<b><i>"This feature is currently being tested "</i></b>"and will potentially delete voicemail from your voicemail server. We do not promise to support this feature in the future. We would love your feedback though."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages. "<b><i>"This feature is currently being tested "</i></b>"and will potentially delete voicemail from your voicemail server. We do not promise to support this feature in the future. We would love your feedback though."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Turn on extra storage and backup"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Turn on extra storage and backup"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Set your voicemail PIN"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"You\'ll need a voicemail PIN whenever you call to access your voicemail."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Unknown error"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-es-rUS/strings.xml
index be7eef1..485a78b 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-es-rUS/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Si la carpeta Recibidos está llena, no podrás recibir mensajes de voz nuevos."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"No se pueden recibir mensajes de voz nuevos"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"La carpeta Recibidos está llena. Intenta borrar algunos mensajes para recibir mensajes de voz nuevos."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Activar la copia de seguridad y el almacenamiento adicional"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Tu buzón está lleno. Para liberar espacio, obtén almacenamiento adicional para que Google pueda administrar tus mensajes de voz y hacer copias de seguridad de ellos. "<b><i>"Esta función se está probando"</i></b>", y es posible que borre los mensajes de voz del servidor correspondiente. No podemos garantizar la compatibilidad de la función en el futuro. Sin embargo, nos encantaría que nos hicieras comentarios acerca de ella."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Activar la copia de seguridad y el almacenamiento adicional"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Tu buzón está casi lleno. Para liberar espacio, obtén almacenamiento adicional para que Google pueda administrar tus mensajes de voz y hacer copias de seguridad de ellos. "<b><i>"Esta función se está probando"</i></b>", y es posible que borre los mensajes de voz del servidor correspondiente. No podemos garantizar la compatibilidad de la función en el futuro. Sin embargo, nos encantaría que nos hicieras comentarios acerca de ella."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activar la copia de seguridad y obtener almacenamiento adicional"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Tu buzón está lleno. Para liberar espacio, obtén almacenamiento adicional para que Google pueda administrar tus mensajes de voz y hacer copias de seguridad de ellos."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activar la copia de seguridad y obtener almacenamiento adicional"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Tu buzón está casi lleno. Para liberar espacio, obtén almacenamiento adicional para que Google pueda administrar tus mensajes de voz y hacer copias de seguridad de ellos."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Configura el PIN del buzón de voz"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Necesitas un PIN cada vez que llames para acceder al buzón de voz."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Error desconocido"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-es/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-es/strings.xml
index 01cccf3..d351f37 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-es/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-es/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Si la bandeja de entrada está llena, no podrás recibir los mensajes de voz nuevos."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"No puedes recibir los mensajes de voz nuevos"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Tienes la bandeja de entrada llena. Para recibir nuevos mensajes de voz, prueba a eliminar algunos antiguos."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"(Experimental) Habilita más espacio de almacenamiento y copias de seguridad"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Tu buzón de voz está lleno. Para liberar espacio, habilita más espacio de almacenamiento de forma que Google pueda gestionar tus mensajes de voz y hacer copias de seguridad de estos. "<b><i>"Esta función, que se encuentra actualmente en fase de prueba, "</i></b>"podría servir para eliminar los mensajes de tu servidor de buzón de voz. Aunque no garantizamos que se siga admitiendo en el futuro, nos encantaría conocer tu opinión."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"(Experimental) Habilita más espacio de almacenamiento y copias de seguridad"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Tu buzón de voz está casi lleno. Para liberar espacio, habilita más espacio de almacenamiento de forma que Google pueda gestionar tus mensajes de voz y hacer copias de seguridad de estos. "<b><i>"Esta función, que se encuentra actualmente en fase de prueba, "</i></b>"podría servir para eliminar los mensajes de tu servidor de buzón de voz. Aunque no garantizamos que se siga admitiendo en el futuro, nos encantaría conocer tu opinión."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Habilitar más espacio de almacenamiento y de copia de seguridad"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Tu buzón de voz está lleno. Para desocupar espacio, habilita más almacenamiento para que Google pueda hacer una copia de seguridad de tus mensajes del buzón de buzón y gestionarlos."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Habilitar más espacio de almacenamiento y de copia de seguridad"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Tu buzón de voz está prácticamente lleno. Para desocupar espacio, habilita más almacenamiento para que Google pueda hacer una copia de seguridad de tus mensajes del buzón de buzón y gestionarlos."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Configura el PIN del buzón de voz"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Deberás introducir un PIN del buzón de voz siempre que llames para escuchar los mensajes de voz."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Error desconocido"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-et/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-et/strings.xml
index bfbd977..e392f90 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-et/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-et/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Kui teie postkast on täis, ei saa te uusi kõnepostisõnumeid vastu võtta."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Uusi kõnepostisõnumeid ei saa vastu võtta"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Teie postkast on täis. Uute kõnepostisõnumite vastuvõtmiseks kustutage mõned sõnumid."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Katseline.] Lisasalvestusruumi ja -varunduse sisselülitamine"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Teie postkast on täis. Ruumi vabastamiseks lülitage sisse lisasalvestusruum, et Google saaks teie kõnepostisõnumeid hallata ja varundada. "<b><i>"Seda funktsiooni testitakse "</i></b>"ja see võib teie kõnepostisõnumid kõnepostiserverist kustutada. Me ei garanteeri, et seda funktsiooni tulevikus toetatakse. Soovime selle kohta siiski tagasisidet saada."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Katseline.] Lisasalvestusruumi ja -varunduse sisselülitamine"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Teie postkast on peaaegu täis. Ruumi vabastamiseks lülitage sisse lisasalvestusruum, et Google saaks teie kõnepostisõnumeid hallata ja varundada. "<b><i>"Seda funktsiooni testitakse "</i></b>"ja see võib teie kõnepostisõnumid kõnepostiserverist kustutada. Me ei garanteeri, et seda funktsiooni tulevikus toetatakse. Soovime selle kohta siiski tagasisidet saada."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Lisasalvestusruumi ja varundamise sisselülitamine"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Teie postkast on täis. Ruumi vabastamiseks lülitage sisse lisasalvestusruum, et Google saaks teie kõnepostisõnumeid hallata ja varundada."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Lisasalvestusruumi ja varundamise sisselülitamine"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Teie postkast on peaaegu täis. Ruumi vabastamiseks lülitage sisse lisasalvestusruum, et Google saaks teie kõnepostisõnumeid hallata ja varundada."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Määrake kõneposti PIN-kood"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vajate PIN-koodi juhul, kui helistate kõnepostile juurdepääsemiseks."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Tundmatu viga"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-eu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-eu/strings.xml
index a23d03e..af40192 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-eu/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-eu/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ezin izango duzu jaso ahots-mezu berririk sarrera-ontzia beteta badago."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ezin da jaso ahots-mezu berririk"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Beteta dago sarrera-ontzia. Ezabatu mezu batzuk ahots-mezu berriak jasotzeko."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Esperimentala] Lortu biltegiratze-toki gehiago eta egin babeskopiak"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Beteta dago postontzia. Tokia egiteko, lortu biltegiratze-toki gehiago, Google-k erantzungailuko mezuak kudeatu eta haien babeskopiak egin ahal izan ditzan. "<b><i>"Eginbide hau probatzen ari gara oraindik, "</i></b>"eta agian erantzungailuaren zerbitzarian gordetako mezuak ezabatuko ditu. Ez dugu bermatzen eginbide hau etorkizunean erabiltzeko aukera emango dugunik. Halere, bihotzez eskertuko genizuke iritzia emango bazenigu."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Esperimentala] Lortu biltegiratze-toki gehiago eta egin babeskopiak"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Ia beteta dago postontzia. Tokia egiteko, lortu biltegiratze-toki gehiago, Google-k erantzungailuko mezuak kudeatu eta haien babeskopiak egin ahal izan ditzan. "<b><i>"Eginbide hau probatzen ari gara oraindik, "</i></b>"eta agian erantzungailuaren zerbitzarian gordetako mezuak ezabatuko ditu. Ez dugu bermatzen eginbide hau etorkizunean erabiltzeko aukera emango dugunik. Halere, bihotzez eskertuko genizuke iritzia emango bazenigu."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Lortu biltegiratze-toki gehiago eta egin babeskopiak"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Beteta dago postontzia. Tokia egiteko, lortu biltegiratze-toki gehiago, Google-k erantzungailuko mezuak kudeatu eta haien babeskopiak egin ahal izan ditzan."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Lortu biltegiratze-toki gehiago eta egin babeskopiak"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ia beteta dago postontzia. Tokia egiteko, lortu biltegiratze-toki gehiago, Google-k erantzungailuko mezuak kudeatu eta haien babeskopiak egin ahal izan ditzan."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ezarri erantzungailuko PIN kodea"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Erantzungailua atzitzeko deitzen duzunerako behar duzu PIN kodea."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Errore ezezagun bat gertatu da"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fa/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fa/strings.xml
index 331ee9c..af79322 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-fa/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-fa/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"اگر صندوق ورودی‌تان پر باشد نمی‌توانید پست صوتی جدیدی دریافت کنید."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"پست‌های صوتی جدید دریافت نمی‌شود"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"صندوق ورودی‌تان پر است. بعضی از پیام‌ها را حذف کنید تا پست صوتی جدید دریافت کنید."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[آزمایشی] روشن کردن فضای ذخیره‌سازی اضافی و پشتیبان‌گیری"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"‏صندوق پستی‌تان پر است. برای آزاد کردن فضا، فضای ذخیره‌سازی اضافی را روشن کنید تا Google بتواند پیام‌های پست صوتی شما را مدیریت و پشتیبان‌گیری کند"<b><i>"این یک قابلیت درحال آزمایش شدن است"</i></b>"و به‌طور بالقوه پست‌های صوتی را از سرور پست صوتی شما حذف خواهد کرد و قول نمی‌دهیم در آینده از این قابلیت پشتیبانی کنیم. با این حال مشتاقیم درباره آن بازخورد دریافت کنیم."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[آزمایشی] روشن کردن فضای ذخیره‌سازی اضافی و پشتیبان‌گیری"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"‏صندوق پستی‌تان تقریباً پر است. برای آزاد کردن فضا، فضای ذخیره‌سازی اضافی را روشن کنید تا Google بتواند پیام‌های پست صوتی شما را مدیریت و پشتیبان‌گیری کند"<b><i>"این یک قابلیت درحال آزمایش شدن است"</i></b>"و به‌طور بالقوه پست‌های صوتی را از سرور پست صوتی شما حذف خواهد کرد و قول نمی‌دهیم در آینده از این قابلیت پشتیبانی کنیم. با این حال مشتاقیم درباره آن بازخورد دریافت کنیم."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"فعال‌سازی فضای ذخیره‌سازی اضافی و پشتیبان‌گیری"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏صندوق ورودی‌تان پر است. برای آزاد کردن فضا، فضای ذخیره‌سازی اضافی را فعال‌سازی کنید تا Google بتواند پیام‌های صندوق پستی‌تان را مدیریت و پشتیبان‌گیری کند."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"فعال‌سازی فضای ذخیره‌سازی اضافی و پشتیبان‌گیری"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏صندوق ورودی‌تان تقریباً پر است. برای آزاد کردن فضا، فضای ذخیره‌سازی اضافی را فعال‌سازی کنید تا Google بتواند پیام‌های صندوق پستی‌تان را مدیریت و پشتیبان‌گیری کند."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"تنظیم پین پست صوتی"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"هر بار که تماس می‌گیرید برای دسترسی به پست صوتی‌تان به پین پست صوتی نیاز دارید."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"خطای ناشناس"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fi/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fi/strings.xml
index 2807a22..5416765 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-fi/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-fi/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Uusia vastaajaviestejä ei voi vastaanottaa, jos postilaatikko on täynnä."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Uusien vastaajaviestien vastaanottaminen ei onnistu."</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Postilaatikkosi on täynnä. Poista viestejä, jotta voit vastaanottaa uusia vastaajaviestejä."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Kokeellinen] Ota käyttöön lisätallennustila ja ‑varmuuskopiointi"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Postilaatikkosi on täynnä. Vapauta tilaa ottamalla käyttöön lisätallennustila, jotta Google voi hallinnoida ja varmuuskopioida vastaajaviestejäsi. "<b><i>"Ominaisuus on testivaiheessa"</i></b>", ja se saattaa poistaa vastaajaviestejä vastaajapalvelimelta. Emme takaa ominaisuuden tukea tulevaisuudessa. Otamme kuitenkin mielellämme vastaan palautetta."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Kokeellinen] Ota käyttöön lisätallennustila ja ‑varmuuskopiointi"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Postilaatikkosi on lähes täynnä. Vapauta tilaa ottamalla käyttöön lisätallennustila, jotta Google voi hallinnoida ja varmuuskopioida vastaajaviestejäsi. "<b><i>"Ominaisuus on testivaiheessa"</i></b>", ja se saattaa poistaa vastaajaviestejä vastaajapalvelimelta. Emme takaa ominaisuuden tukea tulevaisuudessa. Otamme kuitenkin mielellämme vastaan palautetta."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ota käyttöön lisätallennustila ja ‑varmuuskopiointi"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Postilaatikkosi on täynnä. Jos haluat vapauttaa tilaa, ota käyttöön lisätallennustila, niin Google voi hallinnoida ja varmuuskopioida vastaajaviestisi."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ota käyttöön lisätallennustila ja ‑varmuuskopiointi"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Postilaatikkosi on lähes täynnä. Jos haluat vapauttaa tilaa, ota käyttöön lisätallennustila, niin Google voi hallinnoida ja varmuuskopioida vastaajaviestisi."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Aseta vastaajan PIN-koodi"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vastaajan PIN-koodi on annettava aina, kun käytät vastaajaa."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Tuntematon virhe"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fr-rCA/strings.xml
index b26f65b..ef88ecf 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-fr-rCA/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Vous ne pourrez pas recevoir de nouveaux messages vocaux si votre boîte de réception est pleine."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Impossible de recevoir de nouveaux messages vocaux"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Votre boîte de réception est pleine. Essayez de supprimer des messages pour pouvoir recevoir de nouveaux messages vocaux."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Fonction expérimentale] Activer l\'espace supplémentaire de stockage et de sauvegarde"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Votre boîte aux lettres est pleine. Pour libérer de l\'espace, activez l\'espace supplémentaire de stockage pour que Google puisse gérer et sauvegarder vos messages vocaux. "<b><i>"Cette fonction est en cours de test "</i></b>"et pourrait supprimer des messages de votre serveur de messagerie vocale. Nous ne pouvons pas garantir le maintien de cette fonction à l\'avenir. Nous voudrions toutefois savoir ce que vous en pensez."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Fonction expérimentale] Activer l\'espace supplémentaire de stockage et de sauvegarde"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Votre boîte aux lettres est presque pleine. Pour libérer de l\'espace, activez l\'espace supplémentaire de stockage pour que Google puisse gérer et sauvegarder vos messages vocaux. "<b><i>"Cette fonction est en cours de test "</i></b>"et pourrait supprimer des messages de votre serveur de messagerie vocale. Nous ne pouvons pas garantir le maintien de cette fonction à l\'avenir. Nous voudrions toutefois savoir ce que vous en pensez."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activer l\'espace supplémentaire de stockage et de sauvegarde"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Votre boîte aux lettres est pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire pour que Google puisse gérer et sauvegarder vos messages vocaux."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activer l\'espace supplémentaire de stockage et de sauvegarde"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Votre boîte aux lettres est presque pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire pour que Google puisse gérer et sauvegarder vos messages vocaux."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Définir votre NIP de messagerie vocale"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vous devez saisir un NIP de messagerie vocale chaque fois que vous appelez pour accéder à vos messages vocaux."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Erreur inconnue"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fr/strings.xml
index f10c038..eefd5ad 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-fr/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-fr/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Vous ne pouvez pas recevoir de nouveaux messages vocaux si votre boîte de réception est pleine."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Impossible de recevoir de nouveaux messages vocaux"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Votre boîte de réception est pleine. Supprimez des messages vocaux pour pouvoir en recevoir de nouveaux."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Fonctionnalité expérimentale] Activer l\'espace de stockage et de sauvegarde supplémentaire"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Votre messagerie est pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire pour permettre à Google de gérer et de sauvegarder vos messages vocaux. "<b><i>"Cette fonctionnalité est en cours de test. "</i></b>"Des messages risquent d\'être supprimés de votre serveur de messagerie vocale. Nous ne pouvons pas garantir le maintien de cette fonction. Toutefois, n\'hésitez pas à nous faire part de vos commentaires."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Fonctionnalité expérimentale] Activer l\'espace de stockage et de sauvegarde supplémentaire"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Votre messagerie est presque pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire pour permettre à Google de gérer et de sauvegarder vos messages vocaux. "<b><i>"Cette fonctionnalité est en cours de test. "</i></b>"Des messages risquent d\'être supprimés de votre serveur de messagerie vocale. Nous ne pouvons pas garantir le maintien de cette fonction. Toutefois, n\'hésitez pas à nous faire part de vos commentaires."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activer l\'espace de stockage et de sauvegarde supplémentaire"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Votre boîte aux lettres est pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire. Google pourra ainsi gérer vos messages vocaux et les sauvegarder."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activer l\'espace de stockage et de sauvegarde supplémentaire"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Votre boîte aux lettres est presque pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire. Google pourra ainsi gérer vos messages vocaux et les sauvegarder."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Définir le code de votre messagerie vocale"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vous devrez saisir ce code chaque fois que vous consulterez votre messagerie vocale."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Erreur inconnue"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-gl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-gl/strings.xml
index a4f8f56..efd174f 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-gl/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-gl/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Non poderás recibir correo de voz novo se a caixa de entrada está chea."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Non se poden recibir correos de voz novos"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"A caixa de entrada está chea. Proba a eliminar algunhas mensaxes para recibir correo de voz novo."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Activa a copia de seguranza e o almacenamento adicional"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"A túa caixa de correo está chea. Para liberar espazo, activa o almacenamento adicional de modo que Google poida xestionar e facer unha copia de seguranza das túas mensaxes do correo de voz. "<b><i>"Actualmente esta función está en modo de proba, "</i></b>"e é posible que elimine correos de voz do teu servidor de correo de voz. Non prometemos a súa continuidade no futuro. De todos modos, encantaríanos que nos deses a túa opinión."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Activa a copia de seguranza e o almacenamento adicional"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"O túa caixa de correo está case chea. Para liberar espazo, activa o almacenamento adicional de modo que Google poida xestionar e facer unha copia de seguranza das túas mensaxes do correo de voz. "<b><i>"Actualmente esta función está en modo de proba, "</i></b>"e é posible que elimine os correos de voz do teu servidor de correo de voz. Non prometemos a súa continuidade no futuro. De todos modos, encantaríanos que nos deses a túa opinión."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activa o almacenamento adicional e a copia de seguranza"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"A túa caixa de correo está chea. Para liberar espazo, activa o almacenamento adicional, de modo que Google poida xestionar as túas mensaxes do correo de voz e facer unha copia de seguranza."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activa o almacenamento adicional e a copia de seguranza"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"A túa caixa de correo está case chea. Para liberar espazo, activa o almacenamento adicional, de modo que Google poida xestionar as túas mensaxes do correo de voz e facer unha copia de seguranza."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Establece o PIN para o teu correo de voz"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Necesitarás o PIN cada vez que chames para acceder ao teu correo de voz."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Produciuse un erro descoñecido"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-gu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-gu/strings.xml
index 149c527..4463443 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-gu/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-gu/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"જો તમારું ઇનબોક્સ ભરાઈ ગયું હોય તો તમે નવી વૉઇસમેઇલ પ્રાપ્ત કરી શકશો નહીં."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"નવી વૉઇસમેઇલ્સ પ્રાપ્ત કરી શકતાંં નથી"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"તમારું ઇનબોક્સ ભરાઈ ગયું છે. નવી વૉઇસમેઇલ પ્રાપ્ત કરવા માટે કેટલા સંદેશા કાઢી નાખવાનો પ્રયાસ કરો."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[પ્રાયોગિક] અતિરિક્ત સ્ટોરેજ ચાલુ કરો અને બેકઅપ લો"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"તમારું મેઇલબૉક્સ ભરાઇ ગયું છે. સ્થાન ખાલી કરવા માટે, અતિરિક્ત સ્ટોરેજ ચાલુ કરો જેથી Google તમારા વૉઇસમેઇલ સંદેશા સંચાલિત કરી અને તેનું બેકઅપ લઈ શકે. "<b><i>"આ સુવિધાનું હાલમાં પરીક્ષણ થઈ રહ્યું છે "</i></b>"અને તમારા વૉઇસમેઇલ સર્વરમાંથી સંભવિત રૂપે વૉઇસમેઇલ કાઢી નાખશે અને આ સુવિધાનું ભવિષ્યમાં સમર્થન કરવાનું અમે વચન આપતા નથી. જોકે અમને આ સુવિધા પર પ્રતિસાદ ગમશે."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[પ્રાયોગિક] અતિરિક્ત સ્ટોરેજ ચાલુ કરો અને બેકઅપ લો"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"તમારું મેઇલબૉક્સ મોટે ભાગે ભરાઇ ગયું છે. સ્થાન ખાલી કરવા માટે, અતિરિક્ત સ્ટોરેજ ચાલુ કરો જેથી Google તમારા વૉઇસમેઇલ સંદેશા સંચાલિત કરી અને તેનું બેકઅપ લઈ શકે. "<b><i>"આ સુવિધાનું હાલમાં પરીક્ષણ થઈ રહ્યું છે "</i></b>"અને તમારા વૉઇસમેઇલ સર્વરમાંથી સંભવિત રૂપે વૉઇસમેઇલ કાઢી નાખશે અને આ સુવિધાનું ભવિષ્યમાં સમર્થન કરવાનું અમે વચન આપતા નથી. જોકે અમને આ સુવિધા પર પ્રતિસાદ ગમશે."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"અતિરિક્ત સ્ટોરેજ ચાલુ કરો અને બેકઅપ લો"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"તમારું મેઇલબોક્સ ભરાઇ ગયું છે. સ્થાન ખાલી કરવા માટે, અતિરિક્ત સ્ટોરેજ ખાલી કરો જેથી Google તમારા વૉઇસમેઇલ સંદેશા સંચાલિત કરી અને તેનું બેકઅપ લઈ શકે."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"અતિરિક્ત સ્ટોરેજ ચાલુ કરો અને બેકઅપ લો"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"તમારું મેઇલબોક્સ મોટાંભાગે ભરાઇ ગયું છે. સ્થાન ખાલી કરવા માટે, અતિરિક્ત સ્ટોરેજ ખાલી કરો જેથી Google તમારા વૉઇસમેઇલ સંદેશા સંચાલિત કરી અને તેનું બેકઅપ લઈ શકે."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"તમારો વૉઇસમેઇલ PIN સેટ કરો"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"તમારી વૉઇસમેઇલને ઍક્સેસ કરવા માટે તમે કોઈપણ સમયે કૉલ કરો છો, ત્યારે તમને વૉઇસમેઇલ PIN ની જરૂર પડશે."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"અજાણી ભૂલ"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
index 07cc9b7..bc9c463 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"यदि आपका इनबॉक्स भरा हुआ है, तो आप नया वॉइसमेल नहीं प्राप्त कर सकेंगे."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"नए वॉइसमेल प्राप्त नहीं किए जा सकते"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"आपका इनबॉक्स पूरा भर गया है. नया वॉइसमेल प्राप्त करने के लिए कुछ संदेश हटाने का प्रयास करें."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[प्रयोगात्मक] अतिरिक्त जगह और बैकअप चालू करें"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"आपका मेलबॉक्स भर चुका है. जगह खाली करने के लिए, अतिरिक्त मेमोरी चालू करें ताकि Google आपके वॉइसमेल संदेशों को प्रबंधित कर सके और उनका बैक अप ले सके. "<b><i>"इस सुविधा का अभी परीक्षण किया जा रहा है "</i></b>"और हो सकता है कि यह आपके वॉइसमेल सर्वर से वॉइसमेल हटा दे और हम भविष्य में इस सुविधा को देने का वादा नहीं करते. फिर भी आपका फ़ीडबैक हमें अच्छा लगेगा."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[प्रयोगात्मक] अतिरिक्त जगह और बैकअप चालू करें"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"आपका मेलबॉक्स लगभग भर चुका है. जगह खाली करने के लिए, अतिरिक्त मेमोरी चालू करें ताकि Google आपके वॉइसमेल संदेशों को प्रबंधित कर सके और उनका बैक अप ले सके. "<b><i>"इस सुविधा का अभी परीक्षण किया जा रहा है "</i></b>"और हो सकता है कि यह आपके वॉइसमेल सर्वर से वॉइसमेल हटा दे और हम भविष्य में इस सुविधा को देने का वादा नहीं करते. फिर भी आपका फ़ीडबैक हमें अच्छा लगेगा."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"अतिरिक्त जगह और बैकअप चालू करें"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"आपका मेलबॉक्स भर गया है. जगह खाली करने के लिए, अतिरिक्त जगह चालू करें ताकि Google आपके वॉइसमेल संदेशों को प्रबंधित कर सके और उनका बैकअप ले सके."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"अतिरिक्त जगह और बैकअप चालू करें"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"आपका मेलबॉक्स लगभग भर गया है. जगह खाली करने के लिए, अतिरिक्त जगह चालू करें ताकि Google आपके वॉइसमेल संदेशों को प्रबंधित कर सके और उनका बैकअप ले सके."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"अपना वॉइसमेल पिन सेट करें"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"आप जब भी अपना वॉइसमेल एक्सेस करने के लिए कॉल करते हैं, आपको वॉइसमेल पिन की आवश्यकता होगी."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"अज्ञात गड़बड़ी"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hr/strings.xml
index b41443b..a310d59 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-hr/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-hr/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ako je vaša pristigla pošta puna, nećete moći primiti novu govornu poruku."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Primanje nove govorne pošte nije moguće"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Pristigla pošta je puna. Izbrišite neke poruke da biste primili novu govornu poštu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimentalno] Uključivanje dodatne pohrane i sigurnosnog kopiranja"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Vaš je poštanski pretinac pun. Da biste oslobodili prostor, uključite dodatnu pohranu tako da Google može upravljati porukama u govornoj pošti i sigurnosno ih kopirati. "<b><i>"Ova se značajka trenutačno testira "</i></b>"i možda će izbrisati poruke govorne pošte s vašeg poslužitelja govorne pošte. Ne možemo obećati da ćemo ovu značajku podržati u budućnosti. Međutim, voljeli bismo dobiti povratne informacije o njoj."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimentalno] Uključivanje dodatne pohrane i sigurnosnog kopiranja"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Vaš je poštanski pretinac pun. Da biste oslobodili prostor, uključite dodatnu pohranu tako da Google može upravljati porukama u govornoj pošti i sigurnosno ih kopirati. "<b><i>"Ova se značajka trenutačno testira  "</i></b>"i možda će izbrisati poruke govorne pošte s vašeg poslužitelja govorne pošte. Ne možemo obećati da ćemo ovu značajku podržati u budućnosti. Međutim, voljeli bismo dobiti povratne informacije o njoj."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Uključivanje dodatne pohrane i sigurnosnog kopiranja"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Vaš je poštanski pretinac pun. Da biste oslobodili prostor, uključite dodatnu pohranu tako da Google može upravljati porukama u govornoj pošti i sigurnosno ih kopirati."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Uključivanje dodatne pohrane i sigurnosnog kopiranja"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Vaš je poštanski pretinac gotovo pun. Da biste oslobodili prostor, uključite dodatnu pohranu tako da Google može upravljati porukama u govornoj pošti i sigurnosno ih kopirati."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Postavljanje PIN-a za govornu poštu"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN za govornu poštu trebat će vam svaki put kad zatražite pristup govornoj pošti."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Nepoznata pogreška"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hu/strings.xml
index 2fc191a..cc3eb7e 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-hu/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-hu/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ha a postaláda megtelt, nem fogadhat új hangpostaüzeneteket."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nem tud új hangpostaüzeneteket fogadni"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"A postaláda megtelt. Ha meg szeretné kapni az új hangpostaüzeneteket, töröljön néhány üzenetet."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Kísérleti] Az extra tárhely és biztonsági mentés bekapcsolása"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"A postafiókja megtelt. Ha szeretne helyet felszabadítani, kapcsolja be az extra tárhely funkciót, így a Google kezelheti az Ön hangposta-üzeneteit, és biztonsági másolatot készíthet róluk. "<b><i>"Ezt a funkciót jelenleg teszteljük"</i></b>", és előfordulhat, hogy letörli az Ön hangüzeneteit a hangpostaszerverről. Nem garantáljuk, hogy a funkció a jövőben is megmarad, de nagy örömmel vennénk, ha megírná róla a véleményét."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Kísérleti] Az extra tárhely és biztonsági mentés bekapcsolása"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"A postafiókja majdnem megtelt. Ha szeretne helyet felszabadítani, kapcsolja be az extra tárhely funkciót, így a Google kezelheti az Ön hangposta-üzeneteit, és biztonsági másolatot készíthet róluk. "<b><i>"Ezt a funkciót jelenleg teszteljük"</i></b>", és előfordulhat, hogy letörli az Ön hangüzeneteit a hangpostaszerverről. Nem garantáljuk, hogy a funkció a jövőben is megmarad, de nagy örömmel vennénk, ha megírná róla a véleményét."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Az extra tárhely és biztonsági mentés bekapcsolása"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"A postaláda betelt. Ha szeretne helyet felszabadítani, kapcsolja be az extra tárhely funkciót, hogy a Google kezelhesse a hangpostaüzeneteket, és biztonsági mentést készíthessen róluk."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Az extra tárhely és biztonsági mentés bekapcsolása"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"A postaláda majdnem betelt. Ha szeretne helyet felszabadítani, kapcsolja be az extra tárhely funkciót, hogy a Google kezelhesse a hangpostaüzeneteket, és biztonsági mentést készíthessen róluk."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"A hangposta PIN-kódjának beállítása"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"A hangpostafiók eléréséhez PIN-kódra van szüksége."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Ismeretlen hiba"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hy/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hy/strings.xml
index 435f124..4a9c2ed 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-hy/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-hy/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Եթե մուտքի արկղը լցվի, նոր ձայնային հաղորդագրություններ չեք կարողանա ստանալ:"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Հնարավոր չէ ստանալ նոր ձայնային հաղորդագրություններ"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Մուտքի արկղը լիքն է: Նոր հաղոդագրություններ ստանալու համար ջնջեք հները:"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Փորձնական գործառույթ] Ակտիվացրեք լրացուցիչ տարածքն ու պահուստավորումը"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Ձեր փոստարկղը լիքն է: Ակտիվացրեք լրացուցիչ տարածք, որպեսզի Google-ը կարողանա կառավարել և պահուստավորել ձեր ձայնային փոստի հաղորդագրությունները: "<b><i>"Այս գործառույթը ներկայումս փորձարկման փուլում է, "</i></b>"և այս ընթացքում ձայնային հաղորդագրությունները ձեր ձայնային փոստի սերվերից կարող են ջնջվել: Մենք չենք կարող խոստանալ, որ այն հետագայում կաջակցվի: Այդուհանդերձ, կցանկանայինք ձեր կարծիքն իմանալ այս գործառույթի մասին:"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Փորձնական գործառույթ] Ակտիվացրեք լրացուցիչ տարածքն ու պահուստավորումը"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Ձեր փոստարկղը գրեթե լիքն է: Ակտիվացրեք լրացուցիչ տարածք, որպեսզի Google-ը կարողանա կառավարել և պահուստավորել ձեր ձայնային փոստի հաղորդագրությունները: "<b><i>"Այս գործառույթը ներկայումս փորձարկման փուլում է, "</i></b>"և այս ընթացքում ձայնային հաղորդագրությունները ձեր ձայնային փոստի սերվերից կարող են ջնջվել: Մենք չենք կարող խոստանալ, որ այն հետագայում կաջակցվի: Այդուհանդերձ, կցանկանայինք ձեր կարծիքն իմանալ այս գործառույթի մասին:"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Պահանջվում է լրացուցիչ տարածք"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Ձեր փոստարկղը լիքն է: Ակտիվացրեք լրացուցիչ տարածք, որպեսզի Google-ը կարողանա կառավարել և պահուստավորել ձեր ձայնային փոստի հաղորդագրությունները:"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Պահանջվում է լրացուցիչ տարածք"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ձեր փոստարկղը գրեթե լիքն է: Ակտիվացրեք լրացուցիչ տարածք, որպեսզի Google-ը կարողանա կառավարել և պահուստավորել ձեր ձայնային փոստի հաղորդագրությունները:"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ընտրել ձեր ձայնային փոստի PIN-ը"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Ամեն անգամ ձայնային փոստին զանգելիս ձեզանից կպահանջվի ձայնային փոստի PIN-ը:"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Անհայտ սխալ"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-in/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-in/strings.xml
index 5687aa9..948afae 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-in/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-in/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Pesan suara tidak dapat diterima jika kotak masuk Anda penuh."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Tidak dapat menerima pesan suara baru"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Kotak masuk Anda penuh. Coba hapus beberapa pesan untuk menerima pesan suara baru."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimental] Aktifkan penyimpanan dan backup ekstra"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Kotak surat Anda penuh. Untuk mengosongkan ruang penyimpanan, aktifkan penyimpanan ekstra sehingga Google dapat mengelola dan mem-backup pesan suara Anda. "<b><i>"Fitur ini sedang diuji "</i></b>"dan berpotensi menghapus pesan suara dari server pesan suara Anda, dan kami tidak berjanji akan mendukung fitur ini di masa mendatang. Namun, kami akan menerima masukan Anda dengan senang hati."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimental] Aktifkan penyimpanan dan backup ekstra"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Kotak surat Anda hampir penuh. Untuk mengosongkan ruang penyimpanan, aktifkan penyimpanan ekstra agar Google dapat mengelola dan mem-backup pesan suara Anda. "<b><i>"Fitur ini sedang diuji "</i></b>"dan berpotensi menghapus pesan suara dari server pesan suara Anda, dan kami tidak berjanji akan mendukung fitur ini di masa mendatang. Namun, kami akan menerima masukan Anda dengan senang hati."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Aktifkan penyimpanan dan backup ekstra"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Kotak surat Anda sudah penuh. Untuk mengosongkan ruang, aktifkan penyimpanan ekstra sehingga Google dapat mengelola dan melakukan backup pada pesan suara Anda."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Aktifkan penyimpanan dan backup ekstra"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Kotak surat Anda hampir penuh. Untuk mengosongkan ruang, aktifkan penyimpanan ekstra sehingga Google dapat mengelola dan melakukan backup pada pesan suara Anda."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Setel PIN pesan suara Anda"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Anda akan memerlukan PIN pesan suara setiap kali menelepon untuk mengakses pesan suara."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Kesalahan tidak dikenal"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-is/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-is/strings.xml
index 6aeb70f..ae0497e 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-is/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-is/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Þú getur ekki tekið á móti nýjum talhólfsskilaboðum ef pósthólfið er fullt."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ekki hægt að taka á móti nýjum talhólfsskilaboðum"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Pósthólfið er fullt. Prófaðu að eyða skilaboðum til að taka á móti nýjum talhólfsskilaboðum."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Tilraunaútgáfa] Kveikja á viðbótargeymslu og öryggisafritun"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Pósthólfið er fullt. Kveiktu á viðbótargeymslu svo Google geti haft umsjón með og tekið afrit af talhólfsskilaboðunum þínum. "<b><i>"Verið er að prófa þennan eiginleika "</i></b>"og mögulega gæti talhólfsskilaboðum verið eytt af vefþjóni talhólfsins og við ábyrgjumst ekki að eiginleikinn verði studdur í framtíðinni. Við kunnum virkilega að meta allar ábendingar varðandi þennan eiginleika."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Tilraunaútgáfa] Kveikja á viðbótargeymslu og öryggisafritun"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Pósthólfið er næstum fullt. Kveiktu á viðbótargeymslu svo Google geti haft umsjón með og tekið afrit af talhólfsskilaboðunum þínum. "<b><i>"Verið er að prófa þennan eiginleika "</i></b>"og mögulega gæti talhólfsskilaboðum verið eytt af vefþjóni talhólfsins og við ábyrgjumst ekki að eiginleikinn verði studdur í framtíðinni. Við kunnum virkilega að meta allar ábendingar varðandi þennan eiginleika."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Kveikja á viðbótargeymslu og öryggisafritun"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Pósthólfið þitt er fullt. Þú getur losað pláss með því að kveikja á viðbótargeymslu til að Google geti unnið með og tekið öryggisafrit af talhólfsskilaboðunum þínum."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Kveikja á viðbótargeymslu og öryggisafritun"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Pósthólfið þitt er næstum fullt. Þú getur losað pláss með því að kveikja á viðbótargeymslu til að Google geti unnið með og tekið öryggisafrit af talhólfsskilaboðunum þínum."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Stilla PIN-númer talhólfs"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Þú þarft að nota PIN-númer talhólfsins í hvert skipti sem þú hringir til að athuga það."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Óþekkt villa"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-it/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-it/strings.xml
index e0a4fe9..1df608a 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-it/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-it/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Se la casella della segreteria è piena non potrai ricevere nuovi messaggi vocali."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Impossibile ricevere nuovi messaggi vocali"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"La casella della segreteria è piena. Prova a eliminare alcuni messaggi per riceverne di nuovi."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Sperimentale] Attiva archiviazione supplementare e backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"La tua casella postale è piena. Per liberare spazio, attiva l\'archiviazione supplementare in modo che Google possa gestire i messaggi vocali ed effettuarne il backup. "<b><i>"Questa funzionalità al momento è in fase di test "</i></b>" possibile che i messaggi vocali vengano eliminati dal server della segreteria. Non ci sono garanzie che la funzionalità continui a essere supportata in futuro, ma ci piacerebbe ricevere il tuo feedback."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Sperimentale] Attiva archiviazione supplementare e backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"La tua casella postale è quasi piena. Per liberare spazio, attiva l\'archiviazione supplementare in modo che Google possa gestire i messaggi vocali ed effettuarne il backup. "<b><i>"Questa funzionalità al momento è in fase di test "</i></b>"È possibile che i messaggi vocali vengano eliminati dal server della segreteria. Non ci sono garanzie che la funzionalità continui a essere supportata in futuro, ma ci piacerebbe ricevere il tuo feedback."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Attiva spazio di archiviazione supplementare e backup"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"La tua casella di posta e piena. Per liberare spazio, attiva lo spazio di archiviazione supplementare in modo che Google possa gestire i messaggi vocali ed eseguirne il backup."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Attiva spazio di archiviazione supplementare e backup"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"La tua casella di posta e quasi piena. Per liberare spazio, attiva lo spazio di archiviazione supplementare in modo che Google possa gestire i messaggi vocali ed eseguirne il backup."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Imposta il PIN della segreteria"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Dovrai inserire il PIN della segreteria ogni volta che chiami per accedervi."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Errore sconosciuto"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-iw/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-iw/strings.xml
index 17c8e07..c05a02f 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-iw/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-iw/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"אם תיבת הדואר הנכנס מלאה, לא תוכל לקבל דואר קולי חדש."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"לא ניתן לקבל הודעות חדשות בדואר הקולי"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"תיבת הדואר הנכנס מלאה. נסה למחוק חלק מההודעות כדי שתוכל לקבל דואר קולי חדש."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[תכונה ניסיונית] הפעל את הגיבוי ופינוי המקום"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"‏תיבת הדואר שלך מלאה. הפעל את התכונה \'גיבוי ופינוי מקום\' כדי ש-Google תוכל לנהל ולגבות את ההודעות הקוליות שלך. "<b><i>"זוהי תכונה ניסיונית"</i></b>" שאנחנו בודקים כרגע. היא עלולה למחוק הודעות קוליות מתא הדואר הקולי שלך בשרת. אנחנו לא מתחייבים שהתכונה תהיה זמינה בעתיד, אך נשמח לקבל עליה משוב."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[תכונה ניסיונית] הפעל את הגיבוי ופינוי המקום"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"‏תיבת הדואר שלך כמעט מלאה. הפעל את התכונה \'גיבוי ופינוי מקום\' כדי ש-Google תוכל לנהל ולגבות את ההודעות הקוליות שלך. "<b><i>"זוהי תכונה ניסיונית"</i></b>" שאנחנו בודקים כרגע. היא עלולה למחוק הודעות קוליות מתא הדואר הקולי שלך בשרת. אנחנו לא מתחייבים שהתכונה תהיה זמינה בעתיד, אך נשמח לקבל עליה משוב."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"הפעל את הגיבוי ופינוי המקום"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏תיבת הדואר שלך מלאה. הפעל את הגיבוי ופינוי המקום כדי ש-Google תוכל לנהל ולגבות את ההודעות הקוליות שלך."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"הפעל את הגיבוי ופינוי המקום"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏תיבת הדואר שלך כמעט מלאה. הפעל את הגיבוי ופינוי המקום כדי ש-Google תוכל לנהל ולגבות את ההודעות הקוליות שלך."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"הגדר קוד גישה לדואר הקולי"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"בכל פעם שתשתמש בדואר הקולי תצטרך את קוד הגישה."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"שגיאה לא ידועה"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ja/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ja/strings.xml
index 41d32b0..5d47a9c 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ja/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ja/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"新しいボイスメールを受信できません。受信トレイがいっぱいです。"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"新しいボイスメールを受信できません"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"受信トレイがいっぱいです。新しいボイスメールを受信するには、古いメッセージをいくつか削除してみてください。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[試験運用機能] 追加の保存容量とバックアップを ON にしてください"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"メールボックスの容量が上限に達しました。空き容量を増やすには、追加の保存容量を ON にして、Google がボイスメールのメッセージの管理とバックアップを行えるようにしてください。"<b><i>"これは現在テスト中の機能"</i></b>"で、ボイスメール サーバーからボイスメールを削除することができます。今後この機能が正式にサポートされる保証はありませんが、フィードバックをお寄せいただければ幸いです。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[試験運用機能] 追加の保存容量とバックアップを ON にしてください"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"メールボックスの保存容量がもう少しで上限に達します。空き容量を増やすには、追加の保存容量を ON にして、Google がボイスメールのメッセージの管理とバックアップを行えるようにしてください。"<b><i>"これは現在テスト中の機能"</i></b>"で、ボイスメール サーバーからボイスメールを削除することができます。今後この機能が正式にサポートされる保証はありませんが、フィードバックをお寄せいただければ幸いです。"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"追加の保存容量とバックアップを ON にしてください"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"メールボックスの保存容量が上限に達しました。空き容量を増やすには、追加の保存容量を ON にして、Google がボイスメールのメッセージの管理とバックアップを行えるようにしてください。"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"追加の保存容量とバックアップを ON にしてください"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"メールボックスの保存容量がもう少しで上限に達します。空き容量を増やすには、追加の保存容量を ON にして、Google がボイスメールのメッセージの管理とバックアップを行えるようにしてください。"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ボイスメール PIN を設定"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ボイスメールを呼び出すには、ボイスメール PIN が必要です。"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"不明なエラー"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ka/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ka/strings.xml
index 4990066..c5f6a12 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ka/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ka/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"თუ თქვენი შემოსულები სავსეა, ახალ ხმოვან ფოსტას ვერ მიიღებთ."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ახალი ხმოვანი ფოსტის მიღება შეუძლებელია"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"თქვენი შემოსულები სავსეა. ახალი ხმოვანი ფოსტის მისაღებად სცადეთ რამდენიმე შეტყობინების წაშლა."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ექსპერიმენტული] დამატებითი მეხსიერების ჩართვა და სარეზერვო ასლების შექმნა"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"თქვენი საფოსტო ყუთი სავსეა. სივრცის გასათავისუფლებლად ჩართეთ დამატებითი მეხსიერება, რომ Google-მა შეძლოს თქვენი ხმოვანი ფოსტის შეტყობინებების მართვა და სარეზერვო ასლების შექმნა. "<b><i>"ეს ფუნქცია ამჟამად ტესტირების პროცესშია "</i></b>"და, სავარაუდოდ, წაშლის ხმოვან შეტყობინებებს თქვენი ხმოვანი ფოსტის სერვერიდან. ჩვენ ვერ დაგპირდებით, რომ მომავალში ეს ფუნქცია მხარდაჭერილი იქნება. თუმცა ამ ფუნქციის შესახებ გამოხმაურებას ინტერესით გავეცნობოდით."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ექსპერიმენტული] დამატებითი მეხსიერების ჩართვა და სარეზერვო ასლების შექმნა"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"თქვენი საფოსტო ყუთი თითქმის სავსეა. სივრცის გასათავისუფლებლად ჩართეთ დამატებითი მეხსიერება, რომ Google-მა შეძლოს თქვენი ხმოვანი ფოსტის შეტყობინებების მართვა და სარეზერვო ასლების შექმნა. "<b><i>"ეს ფუნქცია ამჟამად ტესტირების პროცესშია "</i></b>"და, სავარაუდოდ, წაშლის ხმოვან შეტყობინებებს თქვენი ხმოვანი ფოსტის სერვერიდან. ჩვენ ვერ დაგპირდებით, რომ მომავალში ეს ფუნქცია მხარდაჭერილი იქნება. თუმცა ამ ფუნქციის შესახებ გამოხმაურებას ინტერესით გავეცნობოდით."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"დამატებითი მეხსიერების ჩართვა და სარეზერვო ასლების შექმნა"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"თქვენი საფოსტო ყუთი სავსეა. ადგილის გასათავისუფლებლად ჩართეთ დამატებითი მეხსიერება, რათა Google-მა შეძლოს თქვენი ხმოვანი ფოსტის შეტყობინებების მართვა და სარეზერვო ასლების შექმნა."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"დამატებითი მეხსიერების ჩართვა და სარეზერვო ასლების შექმნა"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"თქვენი საფოსტო ყუთი თითქმის სავსეა. ადგილის გასათავისუფლებლად ჩართეთ დამატებითი მეხსიერება, რათა Google-მა შეძლოს თქვენი ხმოვანი ფოსტის შეტყობინებების მართვა და სარეზერვო ასლების შექმნა."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"დააყენეთ თქვენი ხმოვანი ფოსტის PIN-კოდი"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ნებისმიერ დროს, როდესაც დარეკავთ, რათა ხმოვან ფოსტაზე წვდომა იქონიოთ, ხმოვანი ფოსტის PIN-კოდი დაგჭირდებათ."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"უცნობი შეცდომა"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-kk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-kk/strings.xml
index f2ea205..ad164c8 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-kk/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-kk/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Кіріс қалтасы толы болса, жаңа дауыстық хабар ала алмайсыз."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Жаңа дауыстық хабарды алу мүмкін емес"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Кіріс қалтасы толы. Жаңа дауыстық хабарды алу үшін кейбір хабарларды жойып көріңіз."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Эксперименттік] Қосымша жадты қосып, сақтық көшірме жасау"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Пошта жәшігі толы. Орын босату үшін, қосымша жад функциясын қосып, Google-ға дауыстық хабарларыңызды басқарып, сақтық көшірмесін жасауға рұқсат беріңіз. "<b><i>"Бұл мүмкіндік қазір тексеріліп жатыр "</i></b>"және ол дауыстық хабарларды дауыстық хабар серверінен өшіруі мүмкін. Сондықтан осы мүмкіндікке алдағы уақытта қолдау көрсетілетініне уәде бермейміз. Сонда да осы мүмкіндікке қатысты пікір алғымыз келеді."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Эксперименттік] Қосымша жадты қосып, сақтық көшірме жасау"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Пошта жәшігі толы. Орын босату үшін, қосымша жад функциясын қосып, Google-ға дауыстық хабарларыңызды басқарып, сақтық көшірмесін жасауға рұқсат беріңіз. "<b><i>"Бұл мүмкіндік қазір тексеріліп жатыр "</i></b>"және ол дауыстық хабарларды дауыстық хабар серверінен өшіруі мүмкін. Сондықтан осы мүмкіндікке алдағы уақытта қолдау көрсетілетініне уәде бермейміз. Сонда да осы мүмкіндікке қатысты пікір алғымыз келеді."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Қосымша жадты қосып, сақтық көшірме жасау"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Кіріс жәшігі толы. Орын босату үшін, қосымша жад функциясын қосып, Google-ға дауыстық хабарларыңызды басқарып, сақтық көшірмесін жасауға рұқсат беріңіз."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Қосымша жадты қосып, сақтық көшірме жасау"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Кіріс жәшігі толы. Орын босату үшін, қосымша жад функциясын қосып, Google-ға дауыстық хабарларыңызды басқарып, сақтық көшірмесін жасауға рұқсат беріңіз."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Дауыстық пошта PIN кодын орнатыңыз"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Дауыстық поштаны тыңдау үшін кез келген уақытта қоңырау шалғанда, дауыстық пошта PIN коды сұралады."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Белгісіз қате"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-km/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-km/strings.xml
index ff2a283..f0ebf04 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-km/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-km/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"អ្នក​នឹង​មិន​អាច​ទទួល​សារ​ជា​សំឡេង​ថ្មី​បាន​ទេ បើ​ប្រអប់​សំបុត្រ​របស់​អ្នក​ពេញ។"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"មិនអាចទទួល​សារជា​សំឡេង​ថ្មី​បាន​ទេ"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ប្រអប់សំបុត្ររបស់អ្នកពេញ។ សូមព្យាយាមលុបសារមួយចំនួនដើម្បី​អាច​ទទួល​សារជាសំឡេងថ្មី​បាន។"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ការ​សាកល្បង] បើក​ទំហំ​ផ្ទុក​បន្ថែម រួច​បម្រុងទុក"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"ប្រអប់​​សារ​​របស់​អ្នក​ពេញហើយ។ ដើម្បី​បង្កើន​ទំហំ​ផ្ទុក​ទំនេរ សូម​បើក​ទំហំផ្ទុក​បន្ថែម ដើម្បី​ឲ្យ Google អាច​គ្រប់គ្រង និង​បម្រុងទុក​សារ​សារ​ជា​សំឡេង​របស់​អ្នក​បាន។ "<b><i>"មុខងារ​នេះ​កំពុង​ត្រូវ​បាន​សាកល្បង​នៅ​ពេល​នេះ "</i></b>"ហើយ​អាច​នឹង​លុប​សារ​ជា​សំឡេង​​ពី​ម៉ាស៊ីន​មេ​សារ​ជា​សំឡេង​របស់​អ្នក ហើយ​យើង​​មិន​សន្យា​​​ធ្វើ​ឲ្យ​មុខងារ​នេះ​ដំណើរការ​នៅ​ថ្ងៃ​ក្រោយ​ទេ។ យើង​ចង់​ដឹង​មតិ​ស្ថាបនា​អំពី​មុខងារនេះ​ផង​ដែរ។"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ការ​សាកល្បង] បើក​ទំហំ​ផ្ទុក​បន្ថែម រួច​បម្រុងទុក"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"ប្រអប់​​សារ​​របស់​អ្នក​ពេញហើយ។ ដើម្បី​បង្កើន​ទំហំ​ផ្ទុក​ទំនេរ សូម​បើក​ទំហំផ្ទុក​បន្ថែម ដើម្បី​ឲ្យ Google អាច​គ្រប់គ្រង និង​បម្រុងទុក​សារ​សារ​ជា​សំឡេង​របស់​អ្នក​បាន។ "<b><i>"មុខងារ​នេះ​កំពុង​ត្រូវ​បាន​សាកល្បង​នៅ​ពេល​នេះ "</i></b>"ហើយ​អាច​នឹង​លុប​សារ​ជា​សំឡេង​​ពី​ម៉ាស៊ីន​មេ​សារ​ជា​សំឡេង​របស់​អ្នក ហើយ​យើង​​មិន​សន្យា​​​ធ្វើ​ឲ្យ​មុខងារ​នេះ​ដំណើរការ​នៅ​ថ្ងៃ​ក្រោយ​ទេ។ យើង​ចង់​ដឹង​មតិ​ស្ថាបនា​អំពី​មុខងារនេះផង​ដែរ។"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"បើក​ទំហំ​ផ្ទុក​បន្ថែម រួច​បម្រុងទុក"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ប្រអប់​​សារ​​របស់​អ្នក​ពេញហើយ។ ដើម្បី​បង្កើន​ទំហំ​ផ្ទុក​ទំនេរ សូម​បើក​ទំហំផ្ទុក​បន្ថែម ដើម្បី​ឲ្យ Google អាច​គ្រប់គ្រង និង​បម្រុងទុក​សារ​សារ​ជា​សំឡេង​របស់​អ្នក​បាន។"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"បើក​ទំហំ​ផ្ទុក​បន្ថែម រួច​បម្រុងទុក"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ប្រអប់​សារ​របស់​អ្នក​ពេញហើយ។ ដើម្បី​បង្កើន​ទំហំ​ផ្ទុក​ទំនេរ សូម​បើក​ទំហំផ្ទុក​បន្ថែម ដើម្បី​ឲ្យ Google អាច​គ្រប់គ្រង និង​បម្រុងទុក​សារ​សារ​ជា​សំឡេង​របស់​អ្នក​បាន។"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"កំណត់កូដ PIN ​សារ​ជាសំឡេង​របស់​អ្នក"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"អ្នក​នឹង​ត្រូវការកូដ PIN សារ​ជាសំឡេងមួយ ​គ្រប់​ពេល​ដែល​អ្នក​ហៅ ​​ដើម្បី​ចូល​ដំណើរការ​សារ​ជា​សំឡេង​របស់​អ្នក។"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"បញ្ហាមិនស្គាល់"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-kn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-kn/strings.xml
index bf63903..7840fca 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-kn/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-kn/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ನಿಮ್ಮ ಇನ್‌ಬಾಕ್ಸ್ ಪೂರ್ಣವಾಗಿದ್ದಾಗ ಹೊಸ ಧ್ವನಿಮೇಲ್‌ ಅನ್ನು ಸ್ವೀಕರಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ಹೊಸ ಧ್ವನಿಮೇಲ್‌‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಲಾಗುವುದಿಲ್ಲ"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ನಿಮ್ಮ ಇನ್‌ಬಾಕ್ಸ್‌ ಪೂರ್ಣವಾಗಿದೆ. ಹೊಸ ಧ್ವನಿಮೇಲ್‌ ಸ್ವೀಕರಿಸಲು ಕೆಲವು ಸಂದೇಶಗಳನ್ನು ಅಳಿಸಲು ಪ್ರಯತ್ನಿಸಿ."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ಪ್ರಾಯೋಗಿಕ] ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಬ್ಯಾಕಪ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"ನಿಮ್ಮ ಮೇಲ್‌ಬಾಕ್ಸ್ ತುಂಬಿದೆ. ಸ್ಥಳಾವಕಾಶವನ್ನು ತೆರವುಗೊಳಿಸಲು, ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆಯನ್ನು ಆನ್ ಮಾಡಿ ಇದರಿಂದ Google ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಮತ್ತು ಬ್ಯಾಕಪ್ ಮಾಡಬಹುದು. "<b><i>"ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಪ್ರಸ್ತುತ ಪರೀಕ್ಷೆ ಮಾಡಲಾಗುತ್ತಿದೆ "</i></b>"ಮತ್ತು ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸರ್ವರ್‌ನಿಂದ ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಸಂಭಾವ್ಯವಾಗಿ ಅಳಿಸುತ್ತದೆ ಮತ್ತು ನಾವು ಭವಿಷ್ಯದಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬೆಂಬಲಿಸುವ ಭರವಸೆಯನ್ನು ನೀಡುವುದಿಲ್ಲ. ಆದರೂ ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಸ್ವಾಗತ."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ಪ್ರಾಯೋಗಿಕ] ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಬ್ಯಾಕಪ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"ನಿಮ್ಮ ಮೇಲ್‌ಬಾಕ್ಸ್ ಬಹುತೇಕ ತುಂಬಿದೆ. ಸ್ಥಳಾವಕಾಶವನ್ನು ತೆರವುಗೊಳಿಸಲು, ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆಯನ್ನು ಆನ್ ಮಾಡಿ ಇದರಿಂದ Google ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಮತ್ತು ಬ್ಯಾಕಪ್ ಮಾಡಬಹುದು. "<b><i>"ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಪ್ರಸ್ತುತವಾಗಿ ಪರೀಕ್ಷೆ ಮಾಡಲಾಗುತ್ತಿದೆ "</i></b>"ಮತ್ತು ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸರ್ವರ್‌ನಿಂದ ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಸಂಭಾವ್ಯವಾಗಿ ಅಳಿಸುತ್ತದೆ ಮತ್ತು ನಾವು ಭವಿಷ್ಯದಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬೆಂಬಲಿಸುವ ಭರವಸೆಯನ್ನು ನೀಡುವುದಿಲ್ಲ. ಆದರೂ ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಸ್ವಾಗತ."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಬ್ಯಾಕಪ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ನಿಮ್ಮ ಮೇಲ್‌ಬಾಕ್ಸ್ ತುಂಬಿದೆ. ಸ್ಥಳಾವಕಾಶವನ್ನು ತೆರವುಗೊಳಿಸಲು, ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹವನ್ನು ಆನ್ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ Google ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಮತ್ತು ಬ್ಯಾಕಪ್ ಮಾಡಬಹುದು."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಬ್ಯಾಕಪ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ನಿಮ್ಮ ಮೇಲ್‌ಬಾಕ್ಸ್ ಬಹುತೇಕ ತುಂಬಿದೆ. ಸ್ಥಳಾವಕಾಶವನ್ನು ತೆರವುಗೊಳಿಸಲು, ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹವನ್ನು ಆನ್ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ Google ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಮತ್ತು ಬ್ಯಾಕಪ್  ಮಾಡಬಹುದು."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪಿನ್ ಹೊಂದಿಸಿ"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ನೀವು ಕರೆ ಮಾಡಿದಾಗ ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪ್ರವೇಶಿಸಲು ನಿಮಗೆ ಯಾವಾಗಲೂ ಧ್ವನಿಮೇಲ್‌ ಪಿನ್ ಅಗತ್ಯವಿರುತ್ತದೆ."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"ಅಪರಿಚಿತ ದೋಷ"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ko/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ko/strings.xml
index fc4385b..092214d 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ko/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ko/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"받은편지함이 가득 차면 새로운 음성메시지를 받을 수 없습니다."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"새로운 음성메시지를 받을 수 없음"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"받은편지함이 가득 찼습니다. 새로운 음성메시지를 받으려면 일부 메시지를 삭제해 보세요."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[실험] 추가 저장용량 및 백업 사용 설정"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"편지함이 가득 찼습니다. 여유 공간을 확보하려면 Google에서 음성사서함 메시지를 관리하고 백업할 수 있도록 추가 저장용량을 사용 설정해 주세요. "<b><i>"이 기능은 현재 테스트 단계이며 "</i></b>"이 기능으로 인해 음성사서함 서버에서 메시지가 삭제될 수도 있습니다. 또한 Google에서는 추후 이 기능이 지원된다고 보장할 수 없습니다. 하지만 이 기능에 관해 의견을 주시면 감사하겠습니다."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[실험] 추가 저장용량 및 백업 사용 설정"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"사서함이 거의 가득 찼습니다. 여유 공간을 확보하려면 Google에서 음성사서함 메시지를 관리하고 백업할 수 있도록 추가 저장용량을 사용 설정해 주세요. "<b><i>"이 기능은 현재 테스트 단계이며 "</i></b>"이 기능으로 인해 음성사서함 서버에서 메시지가 삭제될 수도 있습니다. 또한 Google에서는 추후 이 기능이 지원된다고 보장할 수 없습니다. 하지만 이 기능에 관해 의견을 주시면 감사하겠습니다."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"추가 저장용량 및 백업 사용"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"음성사서함이 가득 찼습니다. Google에서 음성사서함 메시지를 관리하고 백업할 수 있도록 추가 저장용량을 사용 설정하여 여유 공간을 확보하세요."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"추가 저장용량 및 백업 사용"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"음성사서함이 거의 가득 찼습니다. Google에서 음성사서함 메시지를 관리하고 백업할 수 있도록 추가 저장용량을 사용 설정하여 여유 공간을 확보하세요."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"음성사서함 PIN 설정"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"음성사서함에 액세스하도록 호출할 때마다 음성사서함 PIN이 필요합니다."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"알 수 없는 오류"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ky/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ky/strings.xml
index 096b292..0fffb06 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ky/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ky/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Почтаңыз толуп калса, жаңы үн каттарын ала албай каласыз."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Жаңы үн каттары алынбай жатат"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"\"Келген каттар\" кутуңуз толуп калды. Үн каттарын алуу үчүн айрым билдирүүлөрдү өчүрүңүз."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Эксперименталдык] Кошумча мейкиндик жана камдык көчүрмөнү сактоону кошуңуз"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Үн почтаңызда бош орун жок. Үн каттарыңызды башкаруу жана алардын камдык көчүрмөлөрүн сактоо үчүн кошумча мейкиндикти күйгүзүп коюңуз. "<b><i>"Бул функция учурда сыноодон өтүп жатат "</i></b>"жана үн почтаңыздын сервериндеги үн каттарды өчүрүп салышы мүмкүн. Кийин бул функцияны колдоого алаарыбызга кепилдик бере албайбыз. Ошентсе да, функция тууралуу пикириңизди билгибиз келет."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Эксперименталдык] Кошумча мейкиндик жана камдык көчүрмөнү сактоону кошуңуз"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Үн почтаңыз толуп калды. Үн каттарыңызды башкаруу жана алардын камдык көчүрмөлөрүн сактоо үчүн кошумча мейкиндикти күйгүзүп коюңуз. "<b><i>"Бул функция учурда сыноодон өтүп жатат "</i></b>"жана үн почтаңыздын сервериндеги үн каттарды өчүрүп салышы мүмкүн. Кийин бул функцияны колдоого алаарыбызга кепилдик бере албайбыз. Ошентсе да, функция тууралуу пикириңизди билгибиз келет."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Кошумча мейкиндик талап кылынат"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Үн почтаңызда бош орун жок. Үн каттарыңызды башкаруу жана алардын камдык көчүрмөлөрүн сактоо үчүн кошумча мейкиндикти күйгүзүп коюңуз."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Кошумча мейкиндик талап кылынат"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Үн почтаңыз толуп калды. Үн каттарыңызды башкаруу жана алардын камдык көчүрмөлөрүн сактоо үчүн кошумча мейкиндикти күйгүзүп коюңуз."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Үн почтаңыздын PIN-кодун орнотуңуз"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN-код ар чалган сайын үн почтаңызды угуу үчүн керек."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Белгисиз ката"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-lo/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-lo/strings.xml
index bea1180..d6293d2 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-lo/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-lo/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ທ່ານຈະບໍ່ສາມາດຮັບຂໍ້ຄວາມສຽງໃໝ່ໄດ້ຫາກອິນບັອກຂອງທ່ານເຕັມ."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ບໍ່ສາມາດຮັບຂໍ້ຄວາມສຽງໃໝ່"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ອິນບັອກຂອງທ່ານເຕັມແລ້ວ. ໃຫ້ລອງລຶບບາງຂໍ້ຄວາມອອກເພື່ອຮັບຂໍ້ຄວາມສຽງໃໝ່."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ການທົດລອງ] ການສຳຮອງ ແລະ ບ່ອນຈັດເກັບຂໍ້ມູນພິເສດ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Your mailbox is full. To free up space, turn on extra storage so Google can manage and backup your voicemail messages. "<b><i>"This feature is currently being tested "</i></b>"and will potentially delete voicemails from your voicemail server, and we do not promise to support this feature in the future. We would love your feedback though."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ການທົດລອງ] ການສຳຮອງ ແລະ ບ່ອນຈັດເກັບຂໍ້ມູນພິເສດ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"ກ່ອງອີເມວຂອງທ່ານເຕັມແລ້ວ. ເພື່ອສ້າງພື້ນທີ່ຫວ່າງ, ໃຫ້ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນພິເສດເພື່ອໃຫ້ Google ສາມາດຈັດການ ແລະ ສຳຮອງຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້. "<b><i>"ຄຸນສົມບັດນີ້ກຳລັງຢູ່ໃນລະຫວ່າງການທົດສອບ "</i></b>"ແລະ ມັນອາດລຶບຂໍ້ຄວາມສຽງອອກຈາກເຊີບເວີຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້. ຈະບໍ່ມີການຮັບປະກັນການຊ່ວຍເຫຼືອຄຸນສົມບັດນີ້ໃນອະນາຄົດ. ຢ່າງໃດກໍຕາມພວກເຮົາຢາກຟັງຄຳຄິດເຫັນທີ່ມີຕໍ່ຄຸນສົມບັດດັ່ງກ່າວຈາກທ່ານ."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່ມເຕີມ ແລະ ການສຳຮອງຂໍ້ມູນ"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ກ່ອງອີເມວຂອງທ່ານເຕັມແລ້ວ. ເພື່ອເພີ່ມບ່ອນຈັດເກັບຂໍ້ມູນ, ໃຫ້ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່າມເຕີມເພື່ອໃຫ້ Google ສາມາດຈັດການ ແລະ ສຳຮອງຂໍ້ມູນຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່ມເຕີມ ແລະ ການສຳຮອງຂໍ້ມູນ"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ກ່ອງອີເມວຂອງທ່ານໃກ້ເຕັມແລ້ວ. ເພື່ອເພີ່ມບ່ອນຈັດເກັບຂໍ້ມູນ, ໃຫ້ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່າມເຕີມເພື່ອໃຫ້ Google ສາມາດຈັດການ ແລະ ສຳຮອງຂໍ້ມູນຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ຕັ້ງລະຫັດ PIN ຂໍ້ຄວາມສຽງຂອງທ່ານ"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ທ່ານຈະຕ້ອງໃຊ້ລະຫັດ PIN ໃນຕອນໃດກໍຕາມທີ່ທ່ານໂທເພື່ອເຂົ້າຟັງຂໍ້ຄວາມສຽງຂອງທ່ານ."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"ຄວາມຜິດພາດທີ່ບໍ່ຮູ້ຈັກ"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-lt/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-lt/strings.xml
index 8b4c639..92f3316 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-lt/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-lt/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Negalėsite gauti naujų balso pašto pranešimų, jei gautuosiuose nebeliks laisvos vietos."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nepavyksta gauti naujų balso pašto pranešimų"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Gautuosiuose nebėra laisvos vietos. Kad galėtumėte gauti naujus balso pašto pranešimus, pabandykite ištrinti keletą pranešimų."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimentinė] Įjunkite papildomos saugyklos vietos ir atsarginių kopijų kūrimo funkciją"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Pašto dėžutė pilna. Jei norite atlaisvinti vietos, įjunkite papildomos saugyklos vietos parinktį, kad „Google“ galėtų tvarkyti balso pašto pranešimus ir kurti atsargines jų kopijas. "<b><i>"Ši funkcija šiuo metu išbandoma "</i></b>"ir ją naudojant iš balso pašto serverio bus ištrinami balso pašto pranešimai. Nepažadame, kad ateityje ši funkcija bus palaikoma, tačiau norėtume gauti atsiliepimų apie ją."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimentinė] Įjunkite papildomos saugyklos vietos ir atsarginių kopijų kūrimo funkciją"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Pašto dėžutė beveik pilna. Jei norite atlaisvinti vietos, įjunkite papildomos saugyklos vietos parinktį, kad „Google“ galėtų tvarkyti balso pašto pranešimus ir kurti atsargines jų kopijas. "<b><i>"Ši funkcija šiuo metu išbandoma "</i></b>"ir ją naudojant iš balso pašto serverio bus ištrinami balso pašto pranešimai. Nepažadame, kad ateityje ši funkcija bus palaikoma, tačiau norėtume gauti atsiliepimų apie ją."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Įjunkite papildomos saugyklos vietos ir atsarginės kopijos kūrimo parinktį"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Jūsų pašto dėžutė pilna. Jei norite atlaisvinti vietos, įjunkite papildomos saugyklos vietos parinktį, kad „Google“ galėtų tvarkyti balso pašto pranešimus ir kurti atsargines jų kopijas."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Įjunkite papildomos saugyklos vietos ir atsarginės kopijos kūrimo parinktį"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Jūsų pašto dėžutė beveik pilna. Jei norite atlaisvinti vietos, įjunkite papildomos saugyklos vietos parinktį, kad „Google“ galėtų tvarkyti balso pašto pranešimus ir kurti atsargines jų kopijas."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nustatyti balso pašto PIN kodą"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Jums reikės balso pašto PIN kodo visada, kai skambinsite norėdami pasiekti balso paštą."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Nežinoma klaida"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-lv/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-lv/strings.xml
index cd8ed7a..e27de6f 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-lv/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-lv/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Jūs nevarēsiet saņemt jaunus balss pasta ziņojumus, ja iesūtne ir pilna."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nevar saņemt balss pasta ziņojumus."</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Iesūtne ir pilna. Izdzēsiet dažus ziņojumus, lai saņemtu jaunus balss pasta ziņojumus."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimentāli] Papildu krātuves un dublēšanas aktivizēšana"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Jūsu pastkaste ir pilna. Lai atbrīvotu vietu un Google varētu pārvaldīt un dublēt jūsu balss pasta ziņojumus, aktivizējiet papildu krātuvi. "<b><i>"Šī funkcija pašlaik tiek testēta, "</i></b>"un pastāv iespēja, ka no jūsu balss pasta servera tiks izdzēsti balss pasta ziņojumi. Mēs negarantējam šīs funkcijas turpmāku atbalstu, tomēr priecāsimies saņemt atsauksmes par to."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimentāli] Papildu krātuves un dublēšanas aktivizēšana"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Jūsu pastkaste ir gandrīz pilna. Lai atbrīvotu vietu un Google varētu pārvaldīt un dublēt jūsu balss pasta ziņojumus, aktivizējiet papildu krātuvi. "<b><i>"Šī funkcija pašlaik tiek testēta, "</i></b>"un pastāv iespēja, ka no jūsu balss pasta servera tiks izdzēsti balss pasta ziņojumi. Mēs negarantējam šīs funkcijas turpmāku atbalstu, tomēr priecāsimies saņemt atsauksmes par to."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Papildu krātuves un dublēšanas aktivizēšana"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Jūsu pastkaste ir pilna. Lai atbrīvotu vietu un Google varētu pārvaldīt un dublēt jūsu balss pasta ziņojumus, aktivizējiet papildu krātuvi."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Papildu krātuves un dublēšanas aktivizēšana"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Jūsu pastkaste ir gandrīz pilna. Lai atbrīvotu vietu un Google varētu pārvaldīt un dublēt jūsu balss pasta ziņojumus, aktivizējiet papildu krātuvi."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Balss pasta PIN iestatīšana"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Lai piekļūtu balss pastam zvanot, būs vajadzīgs balss pasta PIN."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Nezināma kļūda"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-mk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-mk/strings.xml
index 19aaa42..3ff8b87 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-mk/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-mk/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Нема да може да добивате нова говорна пошта ако вашето приемно сандаче е полно."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Не може да добивате нова говорна пошта"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Вашето приемно сандаче е полно. Обидете се да избришете неколку пораки за да добиете нова говорна пошта."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Експериментално] Вклучете дополнителен простор и бекап"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Вашето поштенско сандаче е полно. За да ослободите простор, вклучете дополнителен простор за да може Google да управува и да прави бекап на пораките од вашата говорна пошта. "<b><i>"Функцијава е во фаза на тестирање во моментов "</i></b>"и постои можност да брише говорни пораки од вашиот сервер за говорна пошта. Не ветуваме поддршка за функцијава во иднина. Сепак, многу би ни значеле вашите повратни информации."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Експериментално] Вклучете дополнителен простор и бекап"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Вашето поштенско сандаче е речиси полно. За да ослободите простор, вклучете дополнителен простор за да може Google да управува и да прави бекап на пораките од вашата говорна пошта. "<b><i>"Функцијава е во фаза на тестирање во моментов "</i></b>"и постои можност да брише говорни пораки од вашиот сервер за говорна пошта. Не ветуваме поддршка за функцијава во иднина. Сепак, многу би ни значеле вашите повратни информации."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Вклучете дополнителен простор и бекап"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Вашето поштенско сандаче е полно. За да ослободите простор, вклучете дополнителен простор за да може Google да управува и да прави бекап на пораките од вашата говорна пошта."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Вклучете дополнителен простор и бекап"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Вашето поштенско сандаче е речиси полно. За да ослободите простор, вклучете дополнителен простор за да може Google да управува и да прави бекап на пораките од вашата говорна пошта."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Поставете PIN за говорната пошта"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Секогаш кога ќе повикате за да пристапите до говорната пошта, ќе треба да внесете PIN за говорна пошта."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Непозната грешка"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ml/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ml/strings.xml
index 896b770..84d221e 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ml/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ml/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ഇൻബോക്‌സ്‌ നിറഞ്ഞിരിക്കുകയാണെങ്കിൽ നിങ്ങൾക്ക് പുതിയ വോയ്‌സ്‌മെയിൽ സ്വീകരിക്കാനാവില്ല."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"പുതിയ വോയ്‌സ്‌മെയിലുകൾ സ്വീകരിക്കാനാകുന്നില്ല"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"നിങ്ങളുടെ ഇൻബോക്‌സ്‌ നിറഞ്ഞിരിക്കുകയാണ്. പുതിയ വോയ്‌സ്‌മെയിൽ സ്വീകരിക്കാൻ ചില സന്ദേശങ്ങൾ ഇല്ലാതാക്കുന്നത് പരീക്ഷിച്ചുനോക്കൂ."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[പരീക്ഷണാത്മകം] അധിക സ്‌റ്റോറേജും ബായ്‌ക്കപ്പും ഓണാക്കുക"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"നിങ്ങളുടെ മെയിൽബോക്‌സ് നിറഞ്ഞിരിക്കുന്നു. ഇടം സൃഷ്‌ടിക്കാൻ അധിക സ്‌റ്റോറേജ് ഓണാക്കുക, തുടർന്ന് Google-ന് നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ മാനേജുചെയ്യാനും ബായ്‌ക്കപ്പെടുക്കാനുമാകും. "<b><i>"നിലവിൽ ഈ ഫീച്ചർ പരീക്ഷണ ഘട്ടത്തിലായതിനാൽ "</i></b>"നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സെർവറിലെ വോയ്‌സ്‌മെയിലുകൾ ഇല്ലാതാക്കാൻ സാധ്യതയുണ്ട്, ഒപ്പം ഭാവിയിൽ ഈ ഫീച്ചർ ഉപയോഗിക്കാനാവുമെന്നും ഞങ്ങൾ ഉറപ്പുനൽകുന്നില്ല. എങ്കിലും ഇതിനെക്കുറിച്ചുള്ള ഫീഡ്‌ബാക്ക് അറിയാൻ ഞങ്ങൾ താൽപ്പര്യപ്പെടുന്നു."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[പരീക്ഷണാത്മകം] അധിക സ്‌റ്റോറേജും ബായ്‌ക്കപ്പും ഓണാക്കുക"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"നിങ്ങളുടെ മെയിൽബോക്‌സ്‌ ഏകദേശം നിറഞ്ഞിരിക്കുന്നു. ഇടം സൃഷ്‌ടിക്കാൻ അധിക സ്‌റ്റോറേജ് ഓണാക്കുക, തുടർന്ന് Google-ന് നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ മാനേജുചെയ്യാനും ബായ്‌ക്കപ്പെടുക്കാനുമാകും. "<b><i>"നിലവിൽ ഈ ഫീച്ചർ പരീക്ഷണ ഘട്ടത്തിലായതിനാൽ "</i></b>"നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സെർവറിലെ വോയ്‌സ്‌മെയിലുകൾ ഇല്ലാതാക്കാൻ സാധ്യതയുണ്ട്, ഒപ്പം ഭാവിയിൽ ഈ ഫീച്ചർ ഉപയോഗിക്കാനാവുമെന്നും ഞങ്ങൾ ഉറപ്പുനൽകുന്നില്ല. എങ്കിലും ഇതിനെക്കുറിച്ചുള്ള ഫീഡ്‌ബാക്ക് അറിയാൻ ഞങ്ങൾ താൽപ്പര്യപ്പെടുന്നു."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"അധിക സ്‌റ്റോറേജും ബായ്‌ക്കപ്പും ഓണാക്കുക"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"നിങ്ങളുടെ മെയിൽബോക്‌സ് നിറഞ്ഞിരിക്കുന്നു. ഇടം സൃഷ്‌ടിക്കാൻ, അധിക സ്‌റ്റോറേജ് ഓണാക്കുക, തുടർന്ന് Google-ന് നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ മാനേജുചെയ്യാനും ബായ്‌ക്കപ്പെടുക്കാനുമാകും."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"അധിക സ്‌റ്റോറേജും ബായ്‌ക്കപ്പും ഓണാക്കുക"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"നിങ്ങളുടെ മെയിൽബോക്‌സ്‌ ഏകദേശം നിറഞ്ഞിരിക്കുന്നു. ഇടം സൃഷ്‌ടിക്കാൻ അധിക സ്‌റ്റോറേജ് ഓണാക്കുക, തുടർന്ന് Google-ന് നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ മാനേജുചെയ്യാനും ബായ്‌ക്കപ്പെടുക്കാനുമാകും."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"നിങ്ങളുടെ വോയ്‌സ്മെയിൽ പിൻ സജ്ജമാക്കുക"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"വോയ്‌സ്മെയിൽ ആക്‌സസ് ചെയ്യാൻ ശ്രമിക്കുമ്പോഴെല്ലാം നിങ്ങൾക്കൊരു വോയ്‌സ്‌മെയിൽ പിൻ ആവശ്യമാണ്."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"തിരിച്ചറിയാനാകാത്ത പിശക്"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-mn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-mn/strings.xml
index b4b01f7..99fc29d 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-mn/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-mn/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ирсэн имэйл хайрцаг дүүрсэн бол та шинэ дуут шуудан хүлээж авах боломжгүй."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Шинэ дуут шуудан хүлээж авах боломжгүй"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Таны ирсэн имэйл хайрцаг дүүрэн байна. Шинэ дуут шуудан авахын тулд зарим зурвасыг устгаж үзнэ үү."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Туршилтын] Гадаад хадгалах сан болон нөөцлөлтийг асаана уу"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Таны имэйл хайрцаг дүүрсэн байна. Сул зай гаргахын тулд гадаад хадгалах санг асааж өөрийн дуут шуудангийн зурвасуудыг удирдах, нөөцлөх боломжийг Google-д олгоно уу."<b><i>"Энэ функцийг одоо шалгаж байгаа"</i></b>" бөгөөд таны дуут шуудангийн серверээс дуут шуудангуудыг устгах магадлалтай, бид цаашид энэ функцийг дэмжинэ гэсэн баталгаа өгөхгүй. Гэхдээ энэ функцийн талаар санал хүсэлт илгээвэл талархах болно."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Туршилтын] Гадаад хадгалах сан болон нөөцлөлтийг асаана уу"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Таны имэйл хайрцаг дүүрсэн байна. Сул зай гаргахын тулд гадаад хадгалах санг асааж өөрийн дуут шуудангийн зурвасуудыг удирдах, нөөцлөх боломжийг Google-д олгоно уу."<b><i>"Энэ функцийг одоо шалгаж байгаа"</i></b>" бөгөөд таны дуут шуудангийн серверээс дуут шуудангуудыг устгах магадлалтай, бид цаашид энэ функцийг дэмжинэ гэсэн баталгаа өгөхгүй. Гэхдээ энэ функцийн талаар санал хүсэлт илгээвэл талархах болно."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Гадаад хадгалах сан болон нөөцлөлтийг асаана уу"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Таны имэйл хайрцаг дүүрсэн байна. Сул зай гаргахын тулд гадаад хадгалах санг асааж өөрийн дуут шуудангийн зурвасуудыг удирдах, нөөцлөх боломжийг Google-д олгоно уу."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Гадаад хадгалах сан болон нөөцлөлтийг асаана уу"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Таны имэйл хайрцаг бараг дүүрсэн байна. Сул зай гаргахын тулд гадаад хадгалах санг асааж өөрийн дуут шуудангийн зурвасуудыг удирдах, нөөцлөх боломжийг Google-д олгоно уу."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Өөрийн дуут шуудангийн PIN-г тохируулна уу"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Та дуут шуудандаа хандахаар дуудлага хийх бүрт дуут шуудангийн PIN шаардлагатай болно."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Тодорхойгүй алдаа"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-mr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-mr/strings.xml
index 04f48b8..43c8bdd 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-mr/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-mr/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"आपला इनबॉक्स भरलेला असल्यास आपण नवीन व्हॉइसमेल प्राप्त करण्यात सक्षम असणार नाही."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"नवीन व्हॉइसमेल प्राप्त करू शकत नाही"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"आपला इनबॉक्स भरलेला आहे. नवीन व्हॉइसमेल प्राप्त करण्यासाठी काही संदेश हटविण्याचा प्रयत्न करा."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[प्रायोगिक] अतिरिक्त संचय आणि बॅक अप चालू करा"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"आपला मेलबॉक्स पूर्ण भरला आहे. स्थान मोकळे करण्यासाठी, अतिरिक्त संचय चालू करा त्यामुळे Google आपले व्हॉइसमेल संदेश व्यवस्थापित करू शकते आणि त्यांचा बॅक अप घेऊ शकते. "<b><i>"या वैशिष्ट्याची सध्‍या चाचणी घेतली जात आहे "</i></b>"आणि आपल्या व्हॉइसमेल सर्व्हर मधून संभाव्यपणे व्हॉइसमेल हटवेल आणि आम्ही भविष्‍यात या वैशिष्‍ट्यास समर्थन देण्याचे वचन देत नाही. तरीही आम्ही आपला अभिप्राय घेऊ इच्छितो."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[प्रायोगिक] अतिरिक्त संचय आणि बॅक अप चालू करा"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"आपला मेलबॉक्स जवळजवळ पूर्ण भरला आहे. स्थान मोकळे करण्यासाठी, अतिरिक्त संचय चालू करा त्यामुळे Google आपले व्हॉइसमेल संदेश व्यवस्थापित करू शकते आणि त्यांचा बॅक अप घेऊ शकते. "<b><i>"या वैशिष्ट्याची सध्‍या चाचणी घेतली जात आहे "</i></b>"आणि आपल्या व्हॉइसमेल सर्व्हर मधून संभाव्यपणे व्हॉइसमेल हटवेल आणि आम्ही भविष्‍यात या वैशिष्‍ट्यास समर्थन देण्याचे वचन देत नाही. तरीही आम्ही आपला अभिप्राय घेऊ इच्छितो."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"अतिरिक्त संचय आणि बॅक अप चालू करा"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"आपला मेलबॉक्स पूर्ण भरला आहे. स्थान मोकळे करण्यासाठी, अतिरिक्त संचय चालू करा त्यामुळे Google आपले व्हॉइसमेल संदेश व्यवस्थापित करू शकते आणि त्यांचा बॅक अप घेऊ शकते."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"अतिरिक्त संचय आणि बॅक अप चालू करा"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"आपला मेलबॉक्स जवळजवळ पूर्ण भरला आहे. स्थान मोकळे करण्यासाठी, अतिरिक्त संचय चालू करा त्यामुळे Google आपले व्हॉइसमेल संदेश व्यवस्थापित करू शकते आणि त्यांचा बॅक अप घेऊ शकते."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"आपला व्हॉइसमेल पिन सेट करा"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"आपल्या व्हॉइसमेलमध्ये प्रवेश करण्यासाठी आपण कधीही कॉल करता तेव्हा आपल्याला व्हॉइसमेल पिन आवश्यक असेल."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"अज्ञात त्रुटी"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ms/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ms/strings.xml
index e011de1..c8b70d5 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ms/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ms/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Anda tidak akan dapat menerima mel suara baharu jika peti masuk anda penuh."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Tidak dapat menerima mel suara baharu"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Peti masuk anda penuh. Cuba padamkan beberapa mesej untuk menerima mel suara baharu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Percubaan] Hidupkan storan tambahan dan sandaran"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Peti mel anda penuh. Untuk mengosongkan ruang, hidupkan storan tambahan supaya Google boleh mengurus dan menyandarkan mesej mel suara anda. "<b><i>"Ciri ini sedang diuji"</i></b>" dan berupaya memadamkan mel suara daripada pelayan mel suara anda. Kami tidak menjamin bahawa ciri ini akan disokong pada masa hadapan. Namun begitu, kami berharap untuk menerima maklum balas anda tentang ciri ini."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Percubaan] Hidupkan storan tambahan dan sandaran"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Peti mel anda hampir penuh. Untuk mengosongkan ruang, hidupkan storan tambahan supaya Google boleh mengurus dan menyandarkan mesej mel suara anda. "<b><i>"Ciri ini sedang diuji"</i></b>" dan berupaya memadamkan mel suara daripada pelayan mel suara anda. Kami tidak menjamin bahawa ciri ini akan disokong pada masa hadapan. Namun begitu, kami berharap untuk menerima maklum balas anda tentang ciri ini."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Hidupkan storan tambahan dan sandaran"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Peti mel anda penuh. Untuk mengosongkan ruang, hidupkan storan tambahan supaya Google boleh mengurus dan menyandarkan mesej mel suara anda."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Hidupkan storan tambahan dan sandaran"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Peti mel anda hampir penuh. Untuk mengosongkan ruang, hidupkan storan tambahan supaya Google boleh mengurus dan menyandarkan mesej mel suara anda."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Tetapkan PIN mel suara anda"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Anda memerlukan PIN mel suara setiap kali anda memanggil untuk mengakses mel suara anda."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Ralat tidak diketahui"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-my/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-my/strings.xml
index d755850..686d37d 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-my/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-my/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"သင့်ဝင်စာပြည့်နေပါက အသံမေးလ်အသစ်များ လက်ခံရယူနိုင်မည်မဟုတ်ပါ။"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"အသံမေးလ်အသစ် လက်ခံ၍မရပါ"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"သင့်ဝင်စာပြည့်နေပါသည်။ အသံမေးလ်အသစ်များ လက်ခံရယူနိုင်ရန် မက်ဆေ့ဂျ်အချို့ဖျက်ကြည့်ပါ။"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[စမ်းသပ်ဆဲ] အပိုဆောင်း သိုလှောင်မှုနှင့် မိတ္တူတို့ကို ဖွင့်ပါ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"သင့်ဝင်စာ ပြည့်နေပါပြီ။ နေရာလွတ်ရရှိရန်အတွက် အပိုသိုလှောင်မှုကို ဖွင့်လျှင် Google က သင်၏အသံမေးလ်မက်ဆေ့ဂျ်များကို စီမံခန့်ခွဲပြီး မိတ္တူကူးနိုင်ပါမည်။ "<b><i>"ဤဝန်ဆောင်မှုကို လတ်တလောတွင် စမ်းသပ်နေ "</i></b>"ပါသည်၊ ဤဝန်ဆောင်မှုသည် သင်၏အသံမေးလ်ဆာဗာမှ အသံမေးလ်များကို ဖျက်ပစ်နိုင်ပြီး အနာဂတ်တွင် ၎င်းကို ဆက်လက်ရရှိနိုင်မည်ဟု အာမခံပေးမထားပါ။ သို့သော် သင့်အကြံပြုချက်များကို ရရှိလိုပါသည်။"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[စမ်းသပ်ဆဲ] အပိုဆောင်း သိုလှောင်မှုနှင့် မိတ္တူတို့ကို ဖွင့်ပါ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"သင့်ဝင်စာ ပြည့်နေပါပြီ။ နေရာလွတ်ရရှိရန်အတွက် အပိုသိုလှောင်မှုကို ဖွင့်လျှင် Google က သင်၏အသံမေးလ်မက်ဆေ့ဂျ်များကို စီမံခန့်ခွဲပြီး မိတ္တူကူးနိုင်ပါမည်။ "<b><i>"ဤဝန်ဆောင်မှုကို လတ်တလောတွင် စမ်းသပ်နေ "</i></b>"ပါသည်၊ ဤဝန်ဆောင်မှုသည် သင်၏အသံမေးလ်ဆာဗာမှ အသံမေးလ်များကို ဖျက်ပစ်နိုင်ပြီး အနာဂတ်တွင် ၎င်းကို ဆက်လက်ရရှိနိုင်မည်ဟု အာမခံပေးမထားပါ။ သို့သော် သင့်အကြံပြုချက်များကို ရရှိလိုပါသည်။"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"အပိုသိုလှောင်မှုနှင့် မိတ္တူ ဖွင့်ရန်"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"သင့်ဝင်စာ ပြည့်နေပါပြီ။ နေရာလွတ်ရရှိရန်အတွက် Google က သင်၏အသံမေးလ်မက်ဆေ့ဂျ်များကို စီမံခန့်ခွဲပြီး မိတ္တူကူးနိုင်ရန် အပိုသိုလှောင်မှုကို ဖွင့်ပါ။"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"အပိုသိုလှောင်မှုနှင့် မိတ္တူ ဖွင့်ရန်"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"သင့်ဝင်စာ ပြည့်လုပါပြီ။ နေရာလွတ်ရရှိရန်အတွက် Google က သင်၏အသံမေးလ်မက်ဆေ့ဂျ်များကို စီမံခန့်ခွဲပြီး မိတ္တူကူးနိုင်ရန် အပိုသိုလှောင်မှုကို ဖွင့်ပါ။"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"သင်၏အသံမေးလ်ပင်နံပါတ် သတ်မှတ်ပါ"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"သင်၏အသံမေးလ်ကို သုံးစွဲရန်အတွက် သင်ခေါ်ဆိုသည့်အခါတိုင်း အသံမေးလ်ပင်နံပါတ်တစ်ခု လိုအပ်ပါမည်။"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"အမျိုးအမည်မသိမှားယွင်းမှု"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-nb/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-nb/strings.xml
index 9dff46d..6fc7561 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-nb/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-nb/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du kan ikke motta ny talepost hvis innboksen din er full."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan ikke motta ny talepost"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Innboksen din er full. Prøv å slette noen meldinger for å motta ny talepost."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"Slå på ekstra lagring og sikkerhetskopi"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Postkassen din er full. For å frigjøre plass, kan du slå på ekstra lagring sånn at Google kan administrere og sikkerhetskopiere talepostmeldingene dine. "<b><i>"Denne funksjonen er fortsatt under utforskning "</i></b>", og det kan føre til at noen av talepostmelingene dine slettes. Vi kan dessverre ikke love at denne funksjonen støttes i fremtiden, men vi vil gjerne høre om hva du mener om den."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"Slå på ekstra lagring og sikkerhetskopi"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Postkassen din er nesten full. For å frigjøre plass, kan du slå på ekstra lagring sånn at Google kan administrere og sikkerhetskopiere talepostmeldingene dine. "<b><i>"Denne funksjonen er fortsatt under utforskning "</i></b>", og det kan føre til at noen av talepostmelingene dine slettes. Vi kan dessverre ikke love at denne funksjonen støttes i fremtiden, men vi vil gjerne høre om hva du mener om den."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Talepostkassen din er full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Talepostkassen din er nesten full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Angi PIN-koden din for talepost"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du trenger PIN-koden hver gang du ringer for å sjekke taleposten din."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Ukjent feil"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ne/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ne/strings.xml
index 1f7f771..ff06fa0 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ne/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ne/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"तपाईंको इनबक्स भरिएको छ भने तपाईंले नयाँ भ्वाइस मेल प्राप्त गर्न सक्नुहुने छैन।"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"नयाँ भ्वाइस मेलहरू प्राप्त गर्न सकिँदैन"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"तपाईँको इनबक्स भरिएको छ। नयाँ भ्वाइस मेलहरू प्राप्त गर्न कृपया केही सन्देशहरू मेटी हेर्नुहोस्।"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[प्रयोगात्मक] अतिरिक्त भण्डारण र ब्याकअप सेवा सक्रिय पार्नुहोस्"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"तपाईंको मेल बक्स झन्डै झन्डै भरिएको छ। Google ले तपाईंका भ्वाइस मेल सम्बन्धी सन्देशहरूको व्यवस्थापन गर्न र ब्याकअप गर्नका लागि स्थान खाली गर्न अतिरिक्त भण्डारणलाई सक्रिय पार्नुहोस् । "<b><i>"हाल यो विशेषताको परीक्षण गरिँदै छ "</i></b>" र सम्भवत: तपाईंको भ्वाइस मेल सर्भरबाट भ्वाइस मेलहरू मेट्ने छ, र हामी यो विशेषतालाई भविष्यमा पनि समर्थन गरिने कुराको वाचा गर्दैनौं। तथापि तपाईंको प्रतिक्रियाको अपेक्षा गर्दछौं।"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[प्रयोगात्मक] अतिरिक्त भण्डारण र ब्याकअप सेवा सक्रिय पार्नुहोस्"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"तपाईंको मेल बक्स झन्डै झन्डै भरिएको छ। Google ले तपाईंका भ्वाइस मेल सन्देशहरूखो व्यवस्थापन गर्न र ब्याकअप गर्न सकोस् भन्नका खातिर स्थान खाली गर्न अतिरिक्त भण्डारणलाई सक्रिय पार्नुहोस् । "<b><i>"हाल यो विशेषताको परीक्षण गरिँदै छ "</i></b>" र यसले सम्भवत: तपाईंको भ्वाइस मेल सर्भरका भ्वाइस मेलहरू मेट्ने छ, र हामी यो विशेषतालाई भविष्यमा पनि समर्थन गरिने कुराको वाचा गर्दैनौं। तथापि तपाईंको प्रतिक्रियाको अपेक्षा गर्दछौं।"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"अतिरिक्त भण्डारण र ब्याकअप सेवा सक्रिय पार्नुहोस्"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"तपाईंको मेल बक्स भरिएको छ। ठाउँ खाली गर्न, Google ले तपाईंका भ्वाइस मेल सन्देशहरूको व्यवस्थापन र ब्याकअप गर्न सकोस् भन्नाका खातिर अतिरिक्त भण्डारणलाई सक्रिय पार्नुहोस्।"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"अतिरिक्त भण्डारण र ब्याकअप सेवा सक्रिय पार्नुहोस्"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"तपाईंको मेल बक्स लगभग भरिएको छ। ठाउँ खाली गर्न Google ले तपाईंका भ्वाइस मेल सन्देशहरूको व्यवस्थापन र ब्याकअप गर्न सकोस् भन्नाका खातिर अतिरिक्त भण्डारणलाई सक्रिय पार्नुहोस्।"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"आफ्नो भ्वाइस मेलको PIN सेट गर्नुहोस्"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"तपाईँलाई जुनसुकै समयमा आफ्नो भ्वाइस मेलमा पहुँच गर्न कल गर्दा भ्वाइस मेल PIN को आवश्यकता पर्दछ।"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"अज्ञात त्रुटि"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-nl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-nl/strings.xml
index 4a31fd3..f74a37d 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-nl/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-nl/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Je kunt geen nieuwe voicemails ontvangen als je inbox vol is."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan geen nieuwe voicemails ontvangen"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Je inbox is vol. Verwijder enkele berichten om nieuwe voicemails te ontvangen."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimenteel] Extra opslag en back-up inschakelen"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Je mailbox is vol. Schakel extra opslag in om ruimte vrij te maken, zodat Google je voicemailberichten kan beheren en back-ups kan maken. "<b><i>"Deze functie wordt momenteel getest "</i></b>"en het is mogelijk dat hierdoor voicemails van de voicemailserver worden verwijderd. We kunnen niet beloven dat we deze functie in de toekomst blijven ondersteunen. We zijn wel heel benieuwd naar jullie feedback over de functie."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimenteel] Extra opslag en back-up inschakelen"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Je mailbox is bijna vol. Schakel extra opslag in om ruimte vrij te maken, zodat Google je voicemailberichten kan beheren en back-ups kan maken. "<b><i>"Deze functie wordt momenteel getest "</i></b>"en het is mogelijk dat hierdoor voicemails van de voicemailserver worden verwijderd. We kunnen niet beloven dat we deze functie in de toekomst blijven ondersteunen. We zijn wel heel benieuwd naar jullie feedback over de functie."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Extra opslag en back-up inschakelen"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Je mailbox is vol. Als je ruimte wilt vrijmaken, schakel je extra opslagruimte in zodat Google je voicemailberichten kan beheren en er back-ups van kan maken."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Extra opslag en back-up inschakelen"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Je mailbox is bijna vol. Als je ruimte wilt vrijmaken, schakel je extra opslagruimte in zodat Google je voicemailberichten kan beheren en er back-ups van kan maken."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Een pincode voor je voicemail instellen"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Je hebt een pincode voor de voicemail nodig wanneer je belt om toegang tot je voicemail te krijgen."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Onbekende fout"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-no/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-no/strings.xml
index 9dff46d..6fc7561 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-no/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-no/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du kan ikke motta ny talepost hvis innboksen din er full."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan ikke motta ny talepost"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Innboksen din er full. Prøv å slette noen meldinger for å motta ny talepost."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"Slå på ekstra lagring og sikkerhetskopi"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Postkassen din er full. For å frigjøre plass, kan du slå på ekstra lagring sånn at Google kan administrere og sikkerhetskopiere talepostmeldingene dine. "<b><i>"Denne funksjonen er fortsatt under utforskning "</i></b>", og det kan føre til at noen av talepostmelingene dine slettes. Vi kan dessverre ikke love at denne funksjonen støttes i fremtiden, men vi vil gjerne høre om hva du mener om den."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"Slå på ekstra lagring og sikkerhetskopi"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Postkassen din er nesten full. For å frigjøre plass, kan du slå på ekstra lagring sånn at Google kan administrere og sikkerhetskopiere talepostmeldingene dine. "<b><i>"Denne funksjonen er fortsatt under utforskning "</i></b>", og det kan føre til at noen av talepostmelingene dine slettes. Vi kan dessverre ikke love at denne funksjonen støttes i fremtiden, men vi vil gjerne høre om hva du mener om den."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Talepostkassen din er full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Talepostkassen din er nesten full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Angi PIN-koden din for talepost"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du trenger PIN-koden hver gang du ringer for å sjekke taleposten din."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Ukjent feil"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pa/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pa/strings.xml
index 3437271..2a07b45 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-pa/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-pa/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ਜੇਕਰ ਤੁਹਾਡਾ ਇਨਬਾਕਸ ਭਰਿਆ ਹੋਇਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਨਵੀਂ ਵੌਇਸਮੇਲ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕੋਂਗੇ।"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ਨਵੀਆਂ ਵੌਇਸਮੇਲਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ਤੁਹਾਡਾ ਇਨਬਾਕਸ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਨਵੀਂ ਵੌਇਸਮੇਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੁਝ ਸੁਨੇਹਿਆਂ ਨੂੰ ਮਿਟਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ਪ੍ਰਯੋਗਿਕ] ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਬੈਕਅੱਪ ਲਓ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"ਤੁਹਾਡਾ ਮੇਲਬਾਕਸ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ, ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਤਾਂ ਕਿ Google ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕੇ ਅਤੇ ਬੈਕਅੱਪ ਲੈ ਸਕੇ। "<b><i>"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਇਸ ਵੇਲੇ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ "</i></b>"ਅਤੇ ਇਹ ਸੰਭਾਵੀ ਤੌਰ \'ਤੇ ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸਰਵਰ ਤੋਂ ਵੌਇਸਮੇਲਾਂ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗੀ, ਅਤੇ ਅਸੀਂ ਭਵਿੱਖ ਵਿੱਚ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦਾ ਸਮਰਥਨ ਕਰਨ ਦਾ ਵਾਅਦਾ ਨਹੀਂ ਕਰਦੇ ਹਾਂ। ਅਸੀਂ ਹਾਲਾਂਕਿ ਤੁਹਾਡੇ ਪ੍ਰਤੀਕਰਮ ਨੂੰ ਪਸੰਦ ਕਰਾਂਗੇ।"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ਪ੍ਰਯੋਗਿਕ] ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਬੈਕਅੱਪ ਲਓ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"ਤੁਹਾਡਾ ਮੇਲਬਾਕਸ ਲਗਭਗ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ, ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਤਾਂ ਕਿ Google ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕੇ ਅਤੇ ਬੈਕਅੱਪ ਲੈ ਸਕੇ। "<b><i>"ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਇਸ ਵੇਲੇ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ "</i></b>"ਅਤੇ ਇਹ ਸੰਭਾਵੀ ਤੌਰ \'ਤੇ ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸਰਵਰ ਤੋਂ ਵੌਇਸਮੇਲਾਂ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗੀ, ਅਤੇ ਅਸੀਂ ਭਵਿੱਖ ਵਿੱਚ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦਾ ਸਮਰਥਨ ਕਰਨ ਦਾ ਵਾਅਦਾ ਨਹੀਂ ਕਰਦੇ ਹਾਂ। ਅਸੀਂ ਹਾਲਾਂਕਿ ਤੁਹਾਡੇ ਪ੍ਰਤੀਕਰਮ ਨੂੰ ਪਸੰਦ ਕਰਾਂਗੇ।"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਬੈਕਅੱਪ ਲਓ"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ਤੁਹਾਡਾ ਮੇਲਬਾਕਸ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ, ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਤਾਂ ਕਿ Google ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕੇ ਅਤੇ ਬੈਕਅੱਪ ਲੈ ਸਕੇ।"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਬੈਕਅੱਪ ਲਓ"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ਤੁਹਾਡਾ ਮੇਲਬਾਕਸ ਲਗਭਗ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ, ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਤਾਂ ਕਿ Google ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕੇ ਅਤੇ ਬੈਕਅੱਪ ਲੈ ਸਕੇ।"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ਆਪਣਾ ਵੌਇਸਮੇਲ PIN ਸੈੱਟ ਕਰੋ"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਆਪਣੀ ਵੌਇਸਮੇਲ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰੋਂਗੇ ਤਾਂ ਤੁਹਾਨੂੰ ਇੱਕ ਵੌਇਸਮੇਲ PIN ਦੀ ਲੋੜ ਪਵੇਗੀ।"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"ਅਗਿਆਤ ਗੜਬੜ"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pl/strings.xml
index 1b88481..b122908 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-pl/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-pl/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nie otrzymasz nowych wiadomości głosowych, gdy Twoja skrzynka odbiorcza jest pełna."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nie udało się odebrać nowych wiadomości głosowych"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Twoja skrzynka odbiorcza jest pełna. Spróbuj usunąć kilka wiadomości głosowych, aby odebrać nowe."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"(Funkcja eksperymentalna) Włącz dodatkowe miejsce i kopię zapasową"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Twoja skrzynka pocztowa jest pełna. Jeśli chcesz zwolnić miejsce, włącz dodatkowe miejsce, aby umożliwić Google zarządzanie Twoimi wiadomościami głosowymi i tworzenie ich kopii zapasowej. "<b><i>"Ta funkcja jest obecnie w fazie testów"</i></b>" i może usunąć wiadomości głosowe z Twojego serwera poczty głosowej. Nie gwarantujemy, że ta funkcja będzie w przyszłości obsługiwana. Chętnie jednak dowiemy się, co o niej sądzisz."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"(Funkcja eksperymentalna) Włącz dodatkowe miejsce i kopię zapasową"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Twoja skrzynka pocztowa jest prawie pełna. Jeśli chcesz zwolnić miejsce, włącz dodatkowe miejsce, aby umożliwić Google zarządzanie Twoimi wiadomościami głosowymi i tworzenie ich kopii zapasowej. "<b><i>"Ta funkcja jest obecnie w fazie testów"</i></b>" i może usunąć wiadomości głosowe z Twojego serwera poczty głosowej. Nie gwarantujemy, że ta funkcja będzie w przyszłości obsługiwana. Chętnie jednak dowiemy się, co o niej sądzisz."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Włącz dodatkowe miejsce i kopię zapasową"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Twoja skrzynka pocztowa jest pełna. Jeśli chcesz zwolnić miejsce, włącz dodatkowe miejsce, aby umożliwić Google zarządzanie Twoimi wiadomościami głosowymi i tworzenie ich kopii zapasowej."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Włącz dodatkowe miejsce i kopię zapasową"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Twoja skrzynka pocztowa jest prawie pełna. Jeśli chcesz zwolnić miejsce, włącz dodatkowe miejsce, aby umożliwić Google zarządzanie Twoimi wiadomościami głosowymi i tworzenie ich kopii zapasowej."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ustaw kod PIN do poczty głosowej"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Za każdym razem, gdy zadzwonisz pod numer poczty głosowej, będzie konieczne wpisanie kodu PIN."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Nieznany błąd"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pt-rBR/strings.xml
index e286a4d..bbe9340 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-pt-rBR/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Não será possível receber novos correios de voz se sua Caixa de entrada estiver cheia."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Não é possível receber novos correios de voz"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Sua Caixa de entrada está cheia. Exclua algumas mensagens para receber novos correios de voz."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz. "<b><i>"Este recurso está sendo testado no momento "</i></b>"e talvez exclua os correios de voz do seu servidor de correio de voz. Não há garantias de suporte no futuro, mas gostaríamos de receber seu feedback."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz. "<b><i>"Este recurso está sendo testado no momento "</i></b>"e talvez exclua os correios de voz do seu servidor de correio de voz. Não há garantias de suporte no futuro, mas gostaríamos de receber seu feedback."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ativar armazenamento extra e fazer backup"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ativar armazenamento extra e fazer backup"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Sua caixa de correio está quase cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Definir seu PIN do correio de voz"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Você precisará de um PIN do correio de voz sempre que ligar para acessar seu correio de voz."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Erro desconhecido"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pt-rPT/strings.xml
index ad7ee75..364b278 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-pt-rPT/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Se a sua caixa de entrada estiver cheia, não irá receber novas mensagens de correio de voz."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Não é possível receber novas mensagens de correio de voz"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"A sua caixa de entrada está cheia. Tente eliminar algumas mensagens para receber novas mensagens de correio de voz."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Ativar a cópia de segurança e o armazenamento adicional"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"A sua caixa de correio está cheia. Para libertar espaço, ative o armazenamento adicional para que a Google possa gerir e criar uma cópia de segurança das suas mensagens de correio de voz. "<b><i>"Esta funcionalidade está a ser testada "</i></b>"e poderá eliminar mensagens de correio de voz do seu servidor de correio de voz. Não podemos garantir compatibilidade com esta funcionalidade no futuro. No entanto, gostaríamos de receber os seus comentários."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Ativar a cópia de segurança e o armazenamento adicional"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"A sua caixa de correio está quase cheia. Para libertar espaço, ative o armazenamento adicional para que a Google possa gerir e criar uma cópia de segurança das suas mensagens de correio de voz. "<b><i>"Esta funcionalidade está a ser testada "</i></b>"e poderá eliminar mensagens de correio de voz do seu servidor de correio de voz. Não podemos garantir compatibilidade com esta funcionalidade no futuro. No entanto, gostaríamos de receber os seus comentários."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ativar o armazenamento adicional e a cópia de segurança"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"A sua caixa de correio está cheia. Para libertar espaço, ative o armazenamento adicional para que a Google possa gerir e criar uma cópia de segurança das suas mensagens de correio de voz."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ativar o armazenamento adicional e a cópia de segurança"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"A sua caixa de correio está quase cheia. Para libertar espaço, ative o armazenamento adicional para que a Google possa gerir e criar uma cópia de segurança das suas mensagens de correio de voz."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Definir o seu PIN do correio de voz"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Irá precisar de um PIN do correio de voz sempre que efetuar uma chamada para aceder ao seu correio de voz."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Erro desconhecido"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pt/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pt/strings.xml
index e286a4d..bbe9340 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-pt/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-pt/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Não será possível receber novos correios de voz se sua Caixa de entrada estiver cheia."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Não é possível receber novos correios de voz"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Sua Caixa de entrada está cheia. Exclua algumas mensagens para receber novos correios de voz."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz. "<b><i>"Este recurso está sendo testado no momento "</i></b>"e talvez exclua os correios de voz do seu servidor de correio de voz. Não há garantias de suporte no futuro, mas gostaríamos de receber seu feedback."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz. "<b><i>"Este recurso está sendo testado no momento "</i></b>"e talvez exclua os correios de voz do seu servidor de correio de voz. Não há garantias de suporte no futuro, mas gostaríamos de receber seu feedback."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ativar armazenamento extra e fazer backup"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ativar armazenamento extra e fazer backup"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Sua caixa de correio está quase cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Definir seu PIN do correio de voz"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Você precisará de um PIN do correio de voz sempre que ligar para acessar seu correio de voz."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Erro desconhecido"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ro/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ro/strings.xml
index f576cf6..263ab00 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ro/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ro/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nu veți putea primi mesaje vocale noi dacă aveți căsuța de mesaje plină."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nu puteți primi mesaje vocale noi"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Căsuța de mesaje este plină. Încercați să ștergeți câteva mesaje pentru a putea primi unele noi."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] Activați spațiul de stocare suplimentar și backupul."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Căsuța dvs. de mesaje este plină. Pentru a elibera spațiu, activați spațiul de stocare suplimentar pentru ca Google să poată gestiona și face backup pentru mesajele dvs. vocale. "<b><i>"Această funcție este în curs de testare "</i></b>"și e posibil să șteargă mesajele vocale de pe serverul de mesagerie vocală. Nu se poate garanta acceptarea acestei funcții pe viitor, însă feedbackul dvs. e bine-venit."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] Activați spațiul de stocare suplimentar și backupul."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Căsuța dvs. de mesaje este aproape plină. Pentru a elibera spațiu, activați spațiul de stocare suplimentar pentru ca Google să poată gestiona și face backup pentru mesajele dvs. vocale. "<b><i>"Această funcție este în curs de testare "</i></b>"și e posibil să șteargă mesajele vocale de pe serverul de mesagerie vocală. Nu se poate garanta acceptarea acestei funcții pe viitor, însă feedbackul dvs. e bine-venit."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activați spațiul de stocare suplimentar și backupul"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Căsuța dvs. de e-mail este plină. Pentru a elibera spațiu, activați spațiul de stocare suplimentar și astfel Google poate să vă gestioneze mesajele vocale și să facă backup pentru acestea."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activați spațiul de stocare suplimentar și backupul"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Căsuța dvs. de e-mail este aproape plină. Pentru a elibera spațiu, activați spațiul de stocare suplimentar și astfel Google poate să vă gestioneze mesajele vocale și să facă backup pentru acestea."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Setați un cod PIN pentru mesageria vocală"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Aveți nevoie de un cod PIN pentru mesageria vocală când sunați pentru a o accesa."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Eroare necunoscută"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ru/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ru/strings.xml
index f0a1048..1989f26 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ru/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ru/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Когда почтовый ящик будет заполнен, вы не сможете получать новые голосовые сообщения."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Нет свободного места"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Почтовый ящик заполнен. Чтобы получать новые голосовые сообщения, удалите старые."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Экспериментальная функция] Активируйте дополнительное пространство для хранения и резервного копирования"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Почтовый ящик заполнен. Чтобы освободить место, активируйте дополнительное пространство. После этого Google сможет управлять вашими голосовыми сообщениями и сохранять их резервные копии. "<b><i>"Эта функция сейчас проходит тестирование."</i></b>" Возможно, ваши голосовые сообщения будут удалены с вашего сервера. Поддержка этой функции в дальнейшем не гарантируется. Мы бы хотели узнать ваше мнение о ней."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Экспериментальная функция] Активируйте дополнительное пространство для хранения и резервного копирования"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Почтовый ящик почти заполнен. Чтобы освободить место, активируйте дополнительное пространство. После этого Google сможет управлять вашими голосовыми сообщениями и сохранять их резервные копии. "<b><i>"Эта функция сейчас проходит тестирование."</i></b>" Возможно, ваши голосовые сообщения будут удалены с вашего сервера. Поддержка этой функции в дальнейшем не гарантируется. Мы бы хотели узнать ваше мнение о ней."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Требуется дополнительное пространство"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Почтовый ящик заполнен. Чтобы освободить место, активируйте дополнительное пространство. После этого Google сможет управлять вашими голосовыми сообщениями и сохранять их резервные копии."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Требуется дополнительное пространство"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Почтовый ящик почти заполнен. Чтобы освободить место, активируйте дополнительное пространство. После этого Google сможет управлять вашими голосовыми сообщениями и сохранять их резервные копии."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Установите PIN-код голосовой почты"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Он будет нужен вам каждый раз, когда вы звоните, чтобы прослушать голосовую почту."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Неизвестная ошибка"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-si/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-si/strings.xml
index f0c58b1..2a057fa 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-si/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-si/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ඔබේ එන ලිපි පිරී ඇති නම් ඔබට නව හඩ තැපැල් ලැබීමට නොහැකි වනු ඇත."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"නව හඬ තැපැල් ලැබීමට නොහැකිය"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ඔබේ එන ලිපි පිරී ඇත. නව හඬ තැපැල් ලබා ගැනීමට පණිවිඩ සමහරක් මැකීම උත්සාහ කරන්න."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimental] අතිරේක ගබඩාව සහ උපස්ථය ක්‍රියාත්මක කරන්න"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"ඔබේ තැපැල් පෙට්ටිය පිරී ඇත. ඉඩ නිදහස් කර ගැනීමට, අතිරේක ගබඩාව ක්‍රියාත්මක කරන්න. එවිට Google හට ඔබේ හඬ තැපැල් පණිවිඩ කළමනාකරණය කිරීමට සහ උපස්ථ කිරීමට හැකිය. "<b><i>"මෙම විශේෂාංගය දැන් පරීක්ෂා කරමින් සිටින අතර "</i></b>"විභව්‍යව හඬ තැපැල් ඔබේ හඬ තැපැල් සේවාදායකයෙන් මකනු ඇති අතර, අපි අනාගතයේදී මෙම විශේෂාංගයට සහාය දැක්වීමට පොරොන්දු නොවෙමු. එසේ වුවත් අපි ඔබේ විශේෂාංගය ගැන ප්‍රතිපෝෂණවලට ආදරය කරන්නෙමු."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimental] අතිරේක ගබඩාව සහ උපස්ථය ක්‍රියාත්මක කරන්න"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"ඔබේ තැපැල් පෙට්ටිය මුළුමනින්ම පාහේ පිරී ඇත. ඉඩ නිදහස් කර ගැනීමට, අතිරේක ගබඩාව ක්‍රියාත්මක කරන්න. එවිට Google හට ඔබේ හඬ තැපැල් පණිවිඩ කළමනාකරණය කිරීමට සහ උපස්ථ කිරීමට හැකිය. "<b><i>"මෙම විශේෂාංගය දැන් පරීක්ෂා කරමින් සිටින අතර"</i></b>"විභව්‍යව හඬ තැපැල් ඔබේ හඬ තැපැල් සේවාදායකයෙන් මකනු ඇති අතර, අපි අනාගතයේදී මෙම විශේෂාංගයට සහාය දැක්වීමට පොරොන්දු නොවෙමු. එසේ වුවත් අපි ඔබේ විශේෂාංගය ගැන ප්‍රතිපෝෂණවලට ආදරය කරන්නෙමු."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"අතිරේක ගබඩාව සහ උපස්ථය ක්‍රියාත්මක කරන්න"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ඔබේ තැපැල් පෙට්ටිය පිරී ඇත. ඉඩ නිදහස් කර ගැනීමට, අතිරේක ගබඩාව ක්‍රියාත්මක කරන්න. එවිට Google හට ඔබේ හඬ තැපැල් පණිවිඩ කළමනාකරණය කිරීමට සහ උපස්ථ කිරීමට හැකිය."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"අතිරේක ගබඩාව සහ උපස්ථය ක්‍රියාත්මක කරන්න"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ඔබේ තැපැල් පෙට්ටිය මුළුමනින්ම පාහේ පිරී ඇත. ඉඩ නිදහස් කර ගැනීමට, අතිරේක ගබඩාව ක්‍රියාත්මක කරන්න. එවිට Google හට ඔබේ හඬ තැපැල් පණිවිඩ කළමනාකරණය කිරීමට සහ උපස්ථ කිරීමට හැකිය."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ඔබේ හඬ තැපැල් PIN අංකය සකසන්න"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ඔබ ඔබේ හඬ තැපෑලට ප්‍රවේශ වීමට අමතන ඕනෑම අවස්ථාවක ඔබට හඬ තැපැල් PIN අංකයක් අවශ්‍ය වනු ඇත."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"නොදන්නා දෝෂයකි"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sk/strings.xml
index ecf0a21..165a9f5 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-sk/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-sk/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"S plnou doručenou poštou nebudete môcť prijímať nové hlasové správy."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nemôžete prijímať nové hlasové správy"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Máte plnú doručenú poštu. Skúste odstrániť niekoľko správ, aby ste mohli prijať novú hlasovú správu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimentálna funkcia] Zapnite si ďalšie úložisko a zálohovanie"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Poštovú schránku máte plnú. Ak chcete uvoľniť miesto, zapnite ďalšie úložisko, aby mohol Google spravovať a zálohovať vaše hlasové správy. "<b><i>"Túto funkciu práve testujeme "</i></b>"a môže vám odstrániť hlasové správy zo servera hlasovej schránky. Nemôžeme zaručiť, že bude podporovaná aj v budúcnosti, no budeme vám vďační za poskytnutie spätnej väzby."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimentálna funkcia] Zapnite si ďalšie úložisko a zálohovanie"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Poštovú schránku máte takmer plnú. Ak chcete uvoľniť miesto, zapnite ďalšie úložisko, aby mohol Google spravovať a zálohovať vaše hlasové správy. "<b><i>"Túto funkciu práve testujeme "</i></b>"a môže vám odstrániť hlasové správy zo servera hlasovej schránky. Nemôžeme zaručiť, že bude podporovaná aj v budúcnosti, no budeme vám vďační za poskytnutie spätnej väzby."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Zapnite si ďalšie úložisko a zálohovanie"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Poštovú schránku máte plnú. Ak chcete uvoľniť miesto, zapnite si ďalšie úložisko, aby mohol Google spravovať a zálohovať vaše hlasové správy."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Zapnite si ďalšie úložisko a zálohovanie"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Poštovú schránku máte takmer plnú. Ak chcete uvoľniť miesto, zapnite si ďalšie úložisko, aby mohol Google spravovať a zálohovať vaše hlasové správy."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nastaviť kód PIN hlasovej schránky"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Kód PIN hlasovej schránky budete potrebovať vždy, keď zavoláte do svojej hlasovej schránky."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Neznáma chyba"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sl/strings.xml
index c2ef327..d4f63c1 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-sl/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-sl/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Če je nabiralnik poln, ne boste mogli prejemati novih sporočil v odzivniku."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Vizualnih sporočil v odzivniku ni mogoče prejemati"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Nabiralnik je poln. Poskusite izbrisati nekaj sporočil, da bo mogoče prejeti nova sporočila v odzivniku."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Poskusno] Vklop dodatne shrambe in varnostnega kopiranja"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Odzivnik je poln. Če želite sprostiti prostor, vklopite dodatno shrambo, da bo lahko Google upravljal vaša sporočila v odzivniku in jih varnostno kopiral. "<b><i>"Za to funkcijo se trenutno izvajajo preskusi"</i></b>", zato bodo sporočila v odzivniku morda izbrisana iz strežnika za sporočila v odzivniku, pri čemer ne obljubljamo, da bomo to funkcijo podpirali tudi v prihodnje. Kljub temu bomo veseli vaših povratnih informacij o funkciji."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Poskusno] Vklop dodatne shrambe in varnostnega kopiranja"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Odzivnik je skoraj poln. Če želite sprostiti prostor, vklopite dodatno shrambo, da bo lahko Google upravljal vaša sporočila v odzivniku in jih varnostno kopiral. "<b><i>"Za to funkcijo se trenutno izvajajo preskusi"</i></b>", zato bodo sporočila v odzivniku morda izbrisana iz strežnika za sporočila v odzivniku, pri čemer ne obljubljamo, da bomo to funkcijo podpirali tudi v prihodnje. Kljub temu bomo veseli vaših povratnih informacij o funkciji."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Vklop dodatnega prostora za shranjevanje in varnostno kopiranje"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Odzivnik je poln. Če želite sprostiti prostor, vklopite dodaten prostor za shranjevanje, da bo Google lahko upravljal vaša sporočila v odzivniku in jih varnostno kopiral."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Vklop dodatnega prostora za shranjevanje in varnostno kopiranje"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Odzivnik je skoraj poln. Če želite sprostiti prostor, vklopite dodaten prostor za shranjevanje, da bo Google lahko upravljal vaša sporočila v odzivniku in jih varnostno kopiral."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nastavite kodo PIN za glasovno pošto"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Kodo PIN za glasovno pošto boste potrebovali ob vsakem klicu za dostop do glasovne pošte."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Neznana napaka"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sq/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sq/strings.xml
index 7beb458..d400cd8 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-sq/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nuk mund të marrësh postë zanore të re nëse kutia hyrëse është plot."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Posta zanore nuk mund të merret"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Kutia hyrëse është plot. Provo të fshish disa mesazhe për të marrë postë zanore të re."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimentale] Aktivizo rezervimin dhe hapësirën ruajtëse shtesë"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Kutia jote postare është plot. Për të liruar hapësirën, aktivizo hapësirën ruajtëse shtesë që Google të mund të menaxhojë dhe të rezervojë mesazhet e tua të postës zanore. "<b><i>"Ky funksion po testohet aktualisht "</i></b>"dhe mund të fshijë posta zanore nga serveri i postës zanore, si dhe nuk premtojmë mbështetjen për këtë funksion në të ardhmen. Megjithatë do të na pëlqente të merrnim komentet e tua."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimentale] Aktivizo rezervimin dhe hapësirën ruajtëse shtesë"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Kutia jote postare është plot. Për të liruar hapësirën, aktivizo hapësirën ruajtëse shtesë që Google të mund të menaxhojë dhe të rezervojë mesazhet e tua të postës zanore. "<b><i>"Ky funksion po testohet aktualisht "</i></b>"dhe mund të fshijë posta zanore nga serveri i postës zanore, si dhe nuk premtojmë mbështetjen për këtë funksion në të ardhmen. Megjithatë do të na pëlqente të merrnim komentet e tua."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Aktivizo hapësirën ruajtëse shtesë dhe rezervimin"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Kutia jote postare është plot. Për të liruar hapësirën, aktivizo hapësirën ruajtëse shtesë që Google të mund të menaxhojë dhe të rezervojë mesazhet e tua të postës zanore."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Aktivizo hapësirën ruajtëse shtesë dhe rezervimin"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Kutia jote postare është thuajse plot. Për të liruar hapësirën, aktivizo hapësirën ruajtëse shtesë që Google të mund të menaxhojë dhe të rezervojë mesazhet e tua të postës zanore."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Vendos kodin PIN të postës zanore"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Të duhet një kod PIN për postën zanore në çdo kohë që telefonon për të hyrë te posta zanore."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Gabim i panjohur"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sr/strings.xml
index ebbee77..da1853a 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-sr/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-sr/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Нећете моћи да примате нову говорну пошту ако је пријемно сандуче пуно."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Не можете да примате нове говорне поруке"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Пријемно сандуче је пуно. Избришите неке поруке да бисте примили нову говорну пошту."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Експериментално] Укључите додатни меморијски простор и резервне копије"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Ваше поштанско сандуче је пуно. Да бисте ослободили простор, укључите додатни меморијски простор како би Google могао да управља вашим порукама говорне поште и прави њихове резервне копије. "<b><i>"Ова функција се тренутно тестира "</i></b>", може да избрише говорне поруке са сервера говорне поште и не гарантујемо да ћемо је подржавати у будућности. Ипак, желели бисмо да добијамо повратне информације од вас."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Експериментално] Укључите додатни меморијски простор и резервне копије"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Ваше поштанско сандуче је скоро пуно. Да бисте ослободили простор, укључите додатни меморијски простор како би Google могао да управља вашим порукама говорне поште и прави њихове резервне копије. "<b><i>"Ова функција се тренутно тестира "</i></b>", може да избрише говорне поруке са сервера говорне поште и не гарантујемо да ћемо је подржавати у будућности. Ипак, желели бисмо да добијамо повратне информације од вас."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Укључите додатни меморијски простор и резервне копије"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Поштанско сандуче је пуно. Да бисте ослободили простор, укључите додатни меморијски простор, па ће Google моћи да управља вашим говорним порукама и прави њихове резервне копије."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Укључите додатни меморијски простор и резервне копије"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Поштанско сандуче је скоро пуно. Да бисте ослободили простор, укључите додатни меморијски простор, па ће Google моћи да управља вашим говорним порукама и прави њихове резервне копије."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Подесите PIN говорне поште"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN говорне поште вам треба сваки пут кад упућујете позив да бисте приступили говорној пошти."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Непозната грешка"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sv/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sv/strings.xml
index b74be61..cfab830 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-sv/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-sv/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du kan inte ta emot nya röstmeddelanden om inkorgen är full."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Du kan inte ta emot nya röstmeddelanden."</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Inkorgen är full. Testa att radera några meddelanden om du vill kunna ta emot nya röstmeddelanden."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Experimentell] Aktivera extra lagring och säkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Din brevlåda är full. Frigör utrymme genom att aktivera extra lagring så att Google hanterar och säkerhetskopierar dina röstmeddelanden. "<b><i>"Det här är en experimentfunktion"</i></b>" som vi för närvarande testar. Den kan potentiellt radera röstmeddelanden på röstbrevlådans server och vi garanterar inte support för den här funktionen i framtiden. Vi är dock tacksamma för synpunkter om den."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Experimentell] Aktivera extra lagring och säkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Din brevlåda är nästan full. Frigör utrymme genom att aktivera extra lagring så att Google hanterar och säkerhetskopierar dina röstmeddelanden. "<b><i>"Det här är en experimentfunktion"</i></b>" som vi för närvarande testar. Den kan potentiellt radera röstmeddelanden på röstbrevlådans server och vi garanterar inte support för den här funktionen i framtiden. Vi är dock tacksamma för synpunkter om den."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Aktivera extra lagring och säkerhetskopiering"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Din postlåda är full. Frigör utrymme genom att aktivera extra lagringsutrymme så att Google kan hantera och säkerhetskopiera dina röstmeddelanden."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Aktivera extra lagring och säkerhetskopiering"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Din postlåda är nästan full. Frigör utrymme genom att aktivera extra lagringsutrymme så att Google kan hantera och säkerhetskopiera dina röstmeddelanden."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ange PIN-kod till röstbrevlåda"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du måste ha en PIN-kod till röstbrevlådan varje gång du ringer till den."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Okänt fel"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sw/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sw/strings.xml
index 098fbe0..56aad21 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-sw/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-sw/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Hutaweza kupokea ujumbe mpya wa sauti kama kikasha chako kimejaa."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Huwezi kupokea ujumbe mpya wa sauti"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Kikasha chako kimejaa. Jaribu kufuta baadhi ili uweze kupokea ujumbe mpya wa sauti."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Majaribio] Washa nafasi ya ziada halafu uhifadhi nakala rudufu"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Sanduku lako la ujumbe wa sauti limejaa. Ili upate nafasi, washa hifadhi ya ziada ili Google idhibiti na kuweka nakala rudufu ya ujumbe wako wa sauti. "<b><i>"Kipengele hiki kinajaribiwa kwa sasa "</i></b>"na huenda kitafuta ujumbe wa sauti kutoka kwenye seva yako ya ujumbe wa sauti, na hatuwezi kutoa ahadi kwamba kipengele hiki kitatumika katika siku zijazo. Hata hivyo, tungependa kupata maoni yako kuhusu kipengele hiki."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Majaribio] Washa nafasi ya ziada halafu uhifadhi nakala rudufu"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Sanduku lako la ujumbe wa sauti limejaa. Ili upate nafasi, washa hifadhi ya ziada ili Google idhibiti na kuweka nakala rudufu ya ujumbe wako wa sauti. "<b><i>"Kipengele hiki kinajaribiwa kwa sasa "</i></b>"na huenda kitafuta ujumbe wa sauti kutoka kwenye seva yako ya ujumbe wa sauti, na hatuwezi kutoa ahadi kwamba kipengele hiki kitatumika katika siku zijazo. Hata hivyo, tungependa kupata maoni yako kuhusu kipengele hiki."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Washa nafasi ya ziada halafu uhifadhi nakala rudufu"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Sanduku lako la ujumbe wa sauti limejaa. Ili upate nafasi, washa hifadhi ya ziada ili Google idhibiti na kuweka nakala rudufu ya ujumbe wako wa sauti."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Washa nafasi ya ziada halafu uhifadhi nakala rudufu"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Sanduku lako la ujumbe wa sauti linakaribia kujaa. Ili upate nafasi, washa hifadhi ya ziada ili Google idhibiti na kuweka nakala rudufu ya ujumbe wako wa sauti."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Weka PIN yako ya ujumbe wa sauti"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Utahitaji PIN ya ujumbe wa sauti wakati wowote unapopiga simu ili ufikie ujumbe wako wa sauti."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Hitilafu isiyojulikana"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ta/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ta/strings.xml
index f8ab381..f2613f0 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ta/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ta/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"இன்பாக்ஸ் நிரம்பியிருந்தால், புதிய குரலஞ்சலைப் பெற முடியாது."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"புதிய குரலஞ்சல்களைப் பெற முடியவில்லை"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"இன்பாக்ஸ் நிரம்பிவிட்டது. புதிய குரலஞ்சல்களைப் பெற, சில செய்திகளை நீக்கவும்."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[சோதனை முயற்சி] கூடுதல் சேமிப்பகத்தையும் காப்புப் பிரதியையும் இயக்கு"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"உங்கள் அஞ்சல்பெட்டி நிரம்பிவிட்டது. இடத்தைக் காலியாக்க, கூடுதல் சேமிப்பகத்தை இயக்கவும். இதன் மூலம் Google உங்கள் குரலஞ்சல் செய்திகளை நிர்வகித்து, காப்புப் பிரதி எடுக்கலாம். "<b><i>" இந்த அம்சம் தற்போது சோதனை செய்யப்படுகிறது "</i></b>", இது உங்கள் குரலஞ்சல் சேவையகத்திலிருந்து குரலஞ்சல்களை நீக்கச் சாத்தியமுள்ளது. இந்த அம்சம் எதிர்காலத்தில் ஆதரிப்படும் என்பதற்குஉத்திரவாதம் இல்லை. இருப்பினும் உங்கள் கருத்தை வரவேற்கிறோம்."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[சோதனை முயற்சி] கூடுதல் சேமிப்பகத்தையும் காப்புப் பிரதியையும் இயக்கு"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"உங்கள் அஞ்சல்பெட்டி கிட்டத்தட்ட நிரம்பிவிட்டது. இடத்தைக் காலியாக்க, கூடுதல் சேமிப்பகத்தை இயக்கவும். இதன் மூலம் Google உங்கள் குரலஞ்சல் செய்திகளை நிர்வகித்து, காப்புப் பிரதி எடுக்கலாம். "<b><i>" இந்த அம்சம் தற்போது சோதனை செய்யப்படுகிறது "</i></b>", இது உங்கள் குரலஞ்சல் சேவையகத்திலிருந்து குரலஞ்சல்களை நீக்கச் சாத்தியமுள்ளது. இந்த அம்சம் எதிர்காலத்தில் ஆதரிப்படும் என்பதற்குஉத்திரவாதம் இல்லை. இருப்பினும் உங்கள் கருத்தை வரவேற்கிறோம்."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"கூடுதல் சேமிப்பகத்தையும் காப்புப் பிரதியையும் இயக்கு"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"உங்கள் அஞ்சல்பெட்டி நிரம்பிவிட்டது. இடத்தைக் காலியாக்க, கூடுதல் சேமிப்பகத்தை இயக்கவும். இதன் மூலம் Google உங்கள் குரலஞ்சல் செய்திகளை நிர்வகித்து, காப்புப் பிரதி எடுக்கலாம்."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"கூடுதல் சேமிப்பகத்தையும் காப்புப் பிரதியையும் இயக்கு"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"உங்கள் அஞ்சல்பெட்டி கிட்டத்தட்ட நிரம்பிவிட்டது. இடத்தைக் காலியாக்க, கூடுதல் சேமிப்பகத்தை இயக்கவும். இதன் மூலம் Google உங்கள் குரலஞ்சல் செய்திகளை நிர்வகித்து, காப்புப் பிரதி எடுக்கலாம்."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"உங்கள் குரலஞ்சல் பின்னை அமைக்கவும்"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"உங்கள் குரலஞ்சலை அணுகுவதற்கு நீங்கள் எப்போது அழைத்தாலும் குரலஞ்சல் பின் அவசியம்."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"அறியப்படாத பிழை"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-te/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-te/strings.xml
index c2a818f..a881550 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-te/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-te/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"మీ ఇన్‌బాక్స్ నిండిపోయి ఉంటే, కొత్త వాయిస్ మెయిల్‌ను స్వీకరించలేరు."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"కొత్త వాయిస్ మెయిల్‌లను స్వీకరించలేరు"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"మీ ఇన్‌బాక్స్ నిండింది. కొత్త వాయిస్ మెయిల్‌ను స్వీకరించడానికి కొన్ని సందేశాలను తొలగించడానికి ప్రయత్నించండి."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ప్రయోగాత్మకం] అదనపు నిల్వ మరియు బ్యాకప్‌ను ఆన్ చేయండి"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"మీ మెయిల్‌బాక్స్ నిండింది. స్థలాన్ని ఖాళీ చేసేందుకు అదనపు నిల్వను ఆన్ చేయండి, అప్పుడు Google మీ వాయిస్ మెయిల్ సందేశాలను నిర్వహించగలదు మరియు బ్యాకప్ చేయగలదు. "<b><i>"ప్రస్తుతం ఈ లక్షణం పరీక్షించబడుతున్నందున "</i></b>"మీ వాయిస్ మెయిల్ సర్వర్ నుండి సంభావ్యంగా వాయిస్ మెయిల్‌లు తొలగించబడతాయి, అలాగే మేము భవిష్యత్తులో ఈ లక్షణానికి మద్దతు ఇస్తామని ఎలాంటి వాగ్దానం చేయము. అయితే, మీ అభిప్రాయాన్ని అందిస్తే మేము సంతోషిస్తాము."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ప్రయోగాత్మకం] అదనపు నిల్వ మరియు బ్యాకప్‌ను ఆన్ చేయండి"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"మీ మెయిల్‌బాక్స్ దాదాపు నిండింది. స్థలాన్ని ఖాళీ చేసేందుకు అదనపు నిల్వను ఆన్ చేయండి, అప్పుడు Google మీ వాయిస్ మెయిల్ సందేశాలను నిర్వహించగలదు మరియు బ్యాకప్ చేయగలదు. "<b><i>"ప్రస్తుతం ఈ లక్షణం పరీక్షించబడుతున్నందున "</i></b>"మీ వాయిస్ మెయిల్ సర్వర్ నుండి సంభావ్యంగా వాయిస్ మెయిల్‌లు తొలగించబడతాయి మరియు మేము భవిష్యత్తులో ఈ లక్షణానికి మద్దతు ఇస్తామని ఎలాంటి వాగ్దానం చేయము. అయితే, మీ అభిప్రాయాన్ని అందిస్తే మేము సంతోషిస్తాము."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"అదనపు నిల్వ మరియు బ్యాకప్‌ను ఆన్ చేయండి"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"మీ మెయిల్‌బాక్స్ నిండింది. స్థలాన్ని ఖాళీ చేసేందుకు అదనపు నిల్వను ఆన్ చేయండి, దీని వలన Google మీ వాయిస్ మెయిల్ సందేశాలను నిర్వహించగలదు మరియు బ్యాకప్ చేయగలదు."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"అదనపు నిల్వ మరియు బ్యాకప్‌ను ఆన్ చేయండి"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"మీ మెయిల్‌బాక్స్ దాదాపు నిండిపోయింది. స్థలాన్ని ఖాళీ చేసేందుకు అదనపు నిల్వను ఆన్ చేయండి, దీని వలన Google మీ వాయిస్ మెయిల్ సందేశాలను నిర్వహించగలదు మరియు బ్యాకప్ చేయగలదు."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"మీ వాయిస్ మెయిల్ PIN సెట్ చేయండి"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"మీరు మీ వాయిస్ మెయిల్‌ను ప్రాప్యత చేయడానికి కాల్ చేసే ప్రతిసారి మీకు వాయిస్ మెయిల్ PIN అవసరమవుతుంది."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"తెలియని లోపం"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-th/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-th/strings.xml
index 97ceee7..31302cc 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-th/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-th/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"คุณจะไม่สามารถรับข้อความเสียงใหม่ได้ ถ้ากล่องจดหมายเต็ม"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ไม่สามารถรับข้อความเสียงใหม่ได้"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"กล่องจดหมายเต็ม ลองลบข้อความบางส่วนออกเพื่อรับข้อความเสียงใหม่"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[ทดสอบ] เปิดพื้นที่เก็บข้อมูลและการสำรองข้อมูลเพิ่มเติม"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"กล่องจดหมายเต็มแล้ว หากต้องการทำให้พื้นที่ว่างมากขึ้น โปรดเปิดพื้นที่เก็บข้อมูลเพิ่มเติมเพื่อให้ Google จัดการและสำรองข้อมูลข้อความเสียงได้ "<b><i>"คุณลักษณะนี้อยู่ในระหว่างการทดสอบ"</i></b>"และอาจลบข้อความเสียงออกจากเซิร์ฟเวอร์ข้อความเสียงได้ เราไม่สัญญาว่าจะรองรับคุณลักษณะนี้ในอนาคต แต่ยินดีรับฟังความคิดเห็น"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[ทดสอบ] เปิดพื้นที่เก็บข้อมูลและการสำรองข้อมูลเพิ่มเติม"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"กล่องจดหมายใกล้จะเต็มแล้ว หากต้องการทำให้พื้นที่ว่างมากขึ้น โปรดเปิดพื้นที่เก็บข้อมูลเพิ่มเติมเพื่อให้ Google จัดการและสำรองข้อมูลข้อความเสียงได้ "<b><i>"คุณลักษณะนี้อยู่ในระหว่างการทดสอบ"</i></b>"และอาจลบข้อความเสียงออกจากเซิร์ฟเวอร์ข้อความเสียงได้ เราไม่สัญญาว่าจะรองรับคุณลักษณะนี้ในอนาคต แต่ยินดีรับฟังความคิดเห็น"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"เปิดพื้นที่เก็บข้อมูลเพิ่มเติมและการสำรองข้อมูล"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"กล่องจดหมายของคุณเต็มแล้ว หากต้องการเพิ่มพื้นที่ว่าง โปรดเปิดพื้นที่เก็บข้อมูลเพิ่มเติมเพื่อให้ Google สามารถจัดการและเก็บสำรองข้อความเสียงได้"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"เปิดพื้นที่เก็บข้อมูลเพิ่มเติมและการสำรองข้อมูล"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"กล่องจดหมายของคุณใกล้เต็มแล้ว หากต้องการเพิ่มพื้นที่ว่าง โปรดเปิดพื้นที่เก็บข้อมูลเพิ่มเติมเพื่อให้ Google สามารถจัดการและเก็บสำรองข้อความเสียงได้"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ตั้งค่า PIN ข้อความเสียง"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"คุณต้องใช้ PIN ข้อความเสียงทุกครั้งที่โทรหาบริการข้อความเสียง"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"ข้อผิดพลาดที่ไม่ทราบสาเหตุ"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-tl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-tl/strings.xml
index f8bcc95..b99d0c3 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-tl/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-tl/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Hindi ka makakatanggap ng bagong voicemail kung puno na ang inbox mo."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Hindi makatanggap ng mga bagong voicemail"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Puno na ang inbox mo. Subukang i-delete ang ilang mensahe upang makatanggap ng bagong voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Eksperimental] I-on ang karagdagang storage at backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Puno na ang iyong mailbox. Upang magbakante ng space, i-on ang karagdagang storage para mapamahalaan at ma-back up ng Google ang iyong mga mensahe sa voicemail. "<b><i>"Kasalukuyang sinusubukan ang feature na ito "</i></b>"at posibleng i-delete ang mga voicemail mula sa iyong server ng voicemail, at hindi namin ipinapangakong susuportahan ang feature na ito sa hinaharap. Gayunpaman, gusto naming makuha ang iyong feedback."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Eksperimental] I-on ang karagdagang storage at backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Malapit nang mapuno ang iyong mailbox. Upang magbakante ng space, i-on ang karagdagang storage para mapamahalaan at ma-back up ng Google ang iyong mga mensahe sa voicemail. "<b><i>"Kasalukuyang sinusubukan ang feature na ito "</i></b>"at posibleng i-delete ang mga voicemail mula sa iyong server ng voicemail, at hindi namin ipinapangakong susuportahan ang feature na ito sa hinaharap. Gayunpaman, gusto naming makuha ang iyong feedback."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"I-on ang karagdagang storage at backup"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Puno na ang iyong mailbox. Upang magbakante ng space, i-on ang karagdagang storage para pamahalaan at i-back up ng Google ang iyong mga mensahe sa voicemail."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"I-on ang karagdagang storage at backup"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Malapit nang mapuno ang iyong mailbox. Upang magbakante ng space, i-on ang karagdagang storage para pamahalaan at i-back up ng Google ang iyong mga mensahe sa voicemail."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Itakda ang iyong PIN sa voicemail"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Kakailanganin mo ng isang PIN sa voicemail sa tuwing tatawag ka upang ma-access ang iyong voicemail."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Hindi alam na error"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-tr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-tr/strings.xml
index 428543d..be5cbb0 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-tr/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-tr/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Gelen kutunuz dolarsa yeni sesli mesajları alamayacaksınız."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Yeni sesli mesajlar alınamıyor"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Gelen kutunuz doldu. Yeni sesli mesajları almak için bazı mesajları silmeyi deneyin."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Deneysel] Ekstra depolama alanını ve yedeklemeyi etkinleştirin"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Posta kutunuz dolu. Google\'ın sesli mesajlarınızı yönetebileceği ve yedekleyebileceği şekilde yer açmak için ekstra depolama alanını etkinleştirin. "<b><i>"Bu özellik henüz test edilmektedir "</i></b>"ve sesli mesaj sunucunuzdaki sesli mesajların silinmesine neden olabilir. Ayrıca, bu özelliğin gelecekte destekleneceğine dair bir garanti vermiyoruz. Yine de geri bildirimlerinizi öğrenmek isteriz."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Deneysel] Ekstra depolama alanını ve yedeklemeyi etkinleştirin"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Posta kutunuz dolmak üzere. Google\'ın sesli mesajlarınızı yönetebileceği ve yedekleyebileceği şekilde yer açmak için ekstra depolama alanını etkinleştirin. "<b><i>"Bu özellik henüz test edilmektedir "</i></b>"ve sesli mesaj sunucunuzdaki sesli mesajların silinmesine neden olabilir. Ayrıca, bu özelliğin gelecekte destekleneceğine dair bir garanti vermiyoruz. Yine de geri bildirimlerinizi öğrenmek isteriz."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ekstra depolama alanını ve yedeklemeyi etkinleştirin"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Posta kutunuz dolu. Google\'ın sesli mesajlarınızı yönetebileceği ve yedekleyebileceği şekilde yer açmak için ekstra depolama alanını etkinleştirin."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ekstra depolama alanını ve yedeklemeyi etkinleştirin"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Posta kutunuz dolmak üzere. Google\'ın sesli mesajlarınızı yönetebileceği ve yedekleyebileceği şekilde yer açmak için ekstra depolama alanını etkinleştirin."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Sesli mesaj PIN\'inizi ayarlayın"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Sesli mesajlarınıza erişmek için her aradığınızda bir sesli mesaj PIN\'i girmeniz gerekecek."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Bilinmeyen hata"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-uk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-uk/strings.xml
index 30e83f2..6adf49a 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-uk/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-uk/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Якщо папка вхідної голосової пошти заповнена, ви не зможете отримувати нові повідомлення."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Неможливо отримати нові голосові повідомлення"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Папка вхідної голосової пошти заповнена. Видаліть деякі повідомлення, щоб отримати нові."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Експериментальна функція] Увімкніть додаткову пам’ять і резервне копіювання"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"У поштовій скриньці не залишилося місця. Щоб звільнити його, увімкніть додаткову пам’ять, і тоді Google робитиме резервні копії вашої голосової пошти та керуватиме нею. "<b><i>"Ця функція зараз тестується, "</i></b>"і в результаті її використання голосові повідомлення може бути видалено із сервера голосової пошти. Ми не гарантуємо, що вона підтримуватиметься в майбутньому, однак хочемо отримати ваш відгук."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Експериментальна функція] Увімкніть додаткову пам’ять і резервне копіювання"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"У поштовій скриньці майже не залишилося місця. Щоб звільнити його, увімкніть додаткову пам’ять, і тоді Google робитиме резервні копії вашої голосової пошти та керуватиме нею. "<b><i>"Ця функція зараз тестується, "</i></b>"і в результаті її використання голосові повідомлення може бути видалено із сервера голосової пошти. Ми не гарантуємо, що вона підтримуватиметься в майбутньому, однак хочемо отримати ваш відгук."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Увімкніть додаткову пам’ять і резервне копіювання"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"У поштовій скриньці не залишилося місця. Щоб звільнити його, увімкніть додаткову пам’ять, і тоді Google почне робити резервні копії вашої голосової пошти й керувати нею."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Увімкніть додаткову пам’ять і резервне копіювання"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"У поштовій скриньці майже не залишилося місця. Щоб звільнити його, увімкніть додаткову пам’ять, і тоді Google почне робити резервні копії вашої голосової пошти й керувати нею."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Установіть PIN-код голосової пошти"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN-код буде потрібен під час кожного дзвінка на голосову пошту."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Невідома помилка"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ur/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ur/strings.xml
index ab640ff..e6fd9f7 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-ur/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"اگر آپ کا ان باکس بھرا ہوا ہوگا تو آپ نئی صوتی میل موصول نہیں کر پائیں گے۔"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"نئی صوتی میلز موصول نہیں ہو سکتی"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"آپ کا ان باکس بھرا ہوا ہے۔ نئی صوتی میل موصول کرنے کیلئے کچھ پیغامات حذف کرنے کی کوشش کریں۔"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[تجرباتی] اضافی اسٹوریج اور بیک اپ آن کریں"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"‏آپ کا میل باکس تقریبا بھرا ہوا ہے۔ جگہ خالی کرنے کیلئے، اضافی اسٹوریج آن کریں تاکہ Google آپ کے صوتی میل پیغامات کا بیک اپ اور نظم کر سکے۔ "<b><i>"یہ خصوصیت ابھی  ٹیسٹ کی جا رہی ہے "</i></b>"اور ممکنہ طور پر آپ کے صوتی میل سرور پر سے آپ کی صوتی میلز کو حذف کر دے گی اور مستقبل میں اس خصوصیت کی معاونت کا ہم وعدہ نہیں کرتے۔ لیکن ہم آپ کے تاثرات کو پسند کریں گے۔"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[تجرباتی] اضافی اسٹوریج اور بیک اپ آن کریں"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"‏آپ کا میل باکس تقریبا بھرا ہوا ہے۔ جگہ خالی کرنے کیلئے، اضافی اسٹوریج آن کریں تاکہ Google آپ کے صوتی میل پیغامات کا بیک اپ اور نظم کر سکے۔ "<b><i>"یہ خصوصیت ابھی  ٹیسٹ کی جا رہی ہے "</i></b>"اور ممکنہ طور پر آپ کے صوتی میل سرور پر سے آپ کی صوتی میلز کو حذف کر دے گی اور مستقبل میں اس خصوصیت کی معاونت کا ہم وعدہ نہیں کرتے۔ لیکن ہم آپ کے تاثرات کو پسند کریں گے۔"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"اضافی اسٹوریج اور بیک اپ آن کریں"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏آپ کا میل باکس بھر گیا ہے۔ جگہ خالی کرنے کیلئے، اضافی اسٹوریج کو آن کریں تا کہ Google آپ کے صوتی میل پیغامات کا بیک اپ اور ان کا نظم کر سکے۔"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"اضافی اسٹوریج اور بیک اپ آن کریں"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏آپ کا میل باکس تقریباً بھر گیا ہے۔ جگہ خالی کرنے کیلئے، اضافی اسٹوریج کو آن کریں تا کہ Google آپ کے صوتی میل پیغامات کا بیک اپ اور ان کا نظم کر سکے۔"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"‏اپنی صوتی میل PIN سیٹ کریں"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"‏آپ جب بھی صوتی میل تک رسائی کیلئے کال کریں گے تو آپ کو صوتی میل PIN چاہئیے ہوگی۔"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"نامعلوم خرابی"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-uz/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-uz/strings.xml
index 0cfd29c..5583e27 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-uz/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-uz/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Agar ovozli pochta qutisi to‘lib qolsa, yangi xabarlar qabul qilishning imkoni bo‘lmay qoladi."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Yangi ovozli pochta xabarlarini qabul qilib bo‘lmadi"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Ovozli pochta qutisi to‘lgan. Yangi xabarlar qabul qilish uchun eskilaridan bir nechtasini o‘chirib tashlang."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Tajribaviy xususiyat] Zaxiralash va saqlash uchun qo‘shimcha xotirani faollashtiring"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Pochta qutisi to‘lgan. Unda joy bo‘shatish uchun qo‘shimcha xotirani faollashtiring. Bu – Google’ga ovozli xabarlaringizni boshqarish va ularning nusxasini zaxiralashga imkon beradi. "<b><i>"Bu xususiyat ayni vaqtda sinovdan o‘tkazilmoqda."</i></b>" Sizning ovozli xabarlaringiz, ehtimol, ovozli pochta serveridan o‘chirib tashlanadi. Bu xususiyatning keyinchalik qo‘llab-quvvatlanishi kafolatlanmaydi. Shunday bo‘lsa-da, u haqda fikr-mulohaza bildirishingizni xohlaymiz."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Tajribaviy xususiyat] Zaxiralash va saqlash uchun qo‘shimcha xotirani faollashtiring"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Pochta qutisi deyarli to‘lgan. Unda joy bo‘shatish uchun qo‘shimcha xotirani faollashtiring. Bu – Google’ga ovozli xabarlaringizni boshqarish va ularning nusxasini zaxiralashga imkon beradi. "<b><i>"Bu xususiyat ayni vaqtda sinovdan o‘tkazilmoqda."</i></b>" Sizning ovozli xabarlaringiz, ehtimol, ovozli pochta serveridan o‘chirib tashlanadi. Bu xususiyatning keyinchalik qo‘llab-quvvatlanishi kafolatlanmaydi. Shunday bo‘lsa-da, u haqda fikr-mulohaza bildirishingizni xohlaymiz."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Qo‘shimcha xotira va zaxiralash xususiyatini yoqish"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Pochtangiz qutisi deyarli to‘lgan. Unda joy bo‘shatish uchun qo‘shimcha xotirani yoqing. Google esa, ovozli xabarlaringiz nusxasini zaxiralashni hamda ularni boshqarishni boshlaydi."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Qo‘shimcha xotira va zaxiralash xususiyatini yoqish"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Pochtangiz qutisi deyarli to‘lgan. Unda joy bo‘shatish uchun qo‘shimcha xotirani yoqing. Google esa, ovozli xabarlaringiz nusxasini zaxiralashni hamda ularni boshqarishni boshlaydi."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ovozli pochta uchun PIN kod o‘rnatish"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Ovozli pochtaga har safar qo‘ng‘iroq qilinganda PIN kod so‘raladi."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Noma’lum xatolik"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-vi/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-vi/strings.xml
index 819b351..029396e 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-vi/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-vi/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Bạn sẽ không thể nhận được thư thoại mới nếu hộp thư đến của bạn đã đầy."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Không nhận được thư thoại mới"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Hộp thư đến của bạn đã đầy. Hãy thử xóa một vài thư để nhận thư thoại mới."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Thử nghiệm] Bật bộ nhớ và bản sao lưu bổ sung"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Hộp thư của bạn đã đầy. Để tạo thêm dung lượng, hãy bật bộ nhớ bổ sung để Google có thể quản lý và sao lưu tin nhắn thoại của bạn. "<b><i>"Tính năng này hiện đang được thử nghiệm "</i></b>"và có khả năng sẽ xóa thư thoại của bạn khỏi máy chủ thư thoại. Ngoài ra, chúng tôi không cam kết hỗ trợ tính năng này trong tương lai. Mặc dù vậy, chúng tôi vẫn mong muốn nhận được phản hồi của bạn."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Thử nghiệm] Bật bộ nhớ và bản sao lưu bổ sung"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Hộp thư của bạn sắp đầy. Để tạo thêm dung lượng, hãy bật bộ nhớ bổ sung để Google có thể quản lý và sao lưu tin nhắn thoại của bạn. "<b><i>"Tính năng này hiện đang được thử nghiệm "</i></b>"và có khả năng sẽ xóa thư thoại của bạn khỏi máy chủ thư thoại. Ngoài ra, chúng tôi không cam kết hỗ trợ tính năng này trong tương lai. Mặc dù vậy, chúng tôi vẫn mong muốn nhận được phản hồi của bạn."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Bật sao lưu và bộ nhớ bổ sung"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Hộp thư của bạn đã đầy. Để giải phóng dung lượng, hãy bật bộ nhớ bổ sung để Google có thể quản lý và sao lưu thư thoại của bạn."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Bật sao lưu và bộ nhớ bổ sung"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Hộp thư của bạn đã gần đầy. Để giải phóng dung lượng, hãy bật bộ nhớ bổ sung để Google có thể quản lý và sao lưu thư thoại của bạn."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Đặt mã PIN thư thoại của bạn"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Bạn cần có mã PIN thư thoại mỗi khi gọi để truy cập thư thoại của mình."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Lỗi không xác định"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zh-rCN/strings.xml
index 4efebc5..faa36de 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-zh-rCN/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"如果收件箱已满，您将无法接收新的语音邮件。"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"无法接收新的语音邮件"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"您的收件箱已满。请尝试删除部分邮件，以便接收新的语音邮件。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[试验性功能] 启用额外存储空间和备份功能"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"您的邮箱已满。要释放空间，请启用额外存储空间，以便 Google 管理和备份您的语音邮件。"<b><i>"此功能目前正处于测试阶段"</i></b>"并且可能会将语音邮件从您的语音邮件服务器上删除。我们不保证将来会支持此功能，但希望能收到您的反馈。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[试验性功能] 启用额外存储空间和备份功能"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"您的邮箱已满。要释放空间，请启用额外存储空间，以便 Google 管理和备份您的语音邮件。"<b><i>"此功能目前正处于测试阶段"</i></b>"并且可能会将语音邮件从您的语音邮件服务器上删除。我们不保证将来会支持此功能，但希望能收到您的反馈。"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"启用额外存储空间和备份功能"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"您的邮箱已满。要释放空间，请启用额外存储空间，以便 Google 管理和备份您的语音邮件。"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"启用额外存储空间和备份功能"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"您的邮箱快满了。要释放空间，请启用额外存储空间，以便 Google 管理和备份您的语音邮件。"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"设置语音信箱 PIN 码"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"您必须使用语音信箱 PIN 码，才能访问您的语音信箱。"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"未知错误"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zh-rHK/strings.xml
index 0ef798e..e51a0a9 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-zh-rHK/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"如果您的收件箱已滿，就無法接收新留言。"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"無法接收新留言"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"您的收件箱已滿。建議您刪除部分訊息以接收新留言。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[實驗性] 啟用額外儲存裝置和備份功能"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"您的信箱已滿。若要騰出空間，請啟用額外儲存空間，以便 Google 管理及備份您的留言訊息。"<b><i>"此功能目前處於測試階段，"</i></b>"有可能會將您的留言從留言伺服器刪除。我們不保證日後會支援此功能，但還是歡迎您提供相關意見。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[實驗性] 啟用額外儲存裝置和備份功能"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"您的信箱將滿。若要騰出空間，請啟用額外儲存空間，以便 Google 管理及備份您的留言訊息。"<b><i>"此功能目前處於測試階段，"</i></b>"有可能會將您的留言從留言伺服器刪除。我們不保證日後會支援此功能，但還是歡迎您提供相關意見。"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"啟用額外儲存裝置和備份功能"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"您的信箱已滿。若要騰出空間，請啟用額外儲存裝置，以便 Google 管理並備份您的留言訊息。"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"啟用額外儲存裝置和備份功能"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"您的信箱快要滿了。若要騰出空間，請啟用額外儲存裝置，以便 Google 管理並備份您的留言訊息。"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"設定留言信箱 PIN"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"您必須輸入留言信箱 PIN 才可收聽留言。"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"不明錯誤"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zh-rTW/strings.xml
index 9b22c40..7f2e1d6 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-zh-rTW/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"收件匣已滿時無法接收新的語音留言。"</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"無法接收新的語音留言"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"您的收件匣已滿。請刪除部分訊息，以便接收新的語音留言。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[實驗性] 啟用額外的儲存空間和備份功能"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"你的信箱容量已滿。如要釋出空間，請啟用額外的儲存空間，方便 Google 管理及備份你的語音留言。"<b>"這項功能目前正在測試階段"<i></i></b>"，可能會從你的語音信箱伺服器中刪除語音留言。我們不保證日後會支援此功能，但還是希望聽聽你的寶貴意見。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[實驗性] 啟用額外的儲存空間和備份功能"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"你的信箱容量幾乎已滿。如要釋出空間，請啟用額外的儲存空間，方便 Google 管理及備份你的語音留言。"<b>"這項功能目前正在測試階段"<i></i></b>"，可能會從你的語音信箱伺服器中刪除語音留言。我們不保證日後會支援此功能，但還是希望聽聽你的寶貴意見。"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"啟用額外的儲存空間和備份功能"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"你的信箱容量已滿。如要釋出空間，請啟用額外的儲存空間，方便 Google 管理及備份你的語音留言。"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"啟用額外的儲存空間和備份功能"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"你的信箱容量幾乎已滿。如要釋出空間，請啟用額外的儲存空間，方便 Google 管理及備份你的語音留言。"</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"設定您的語音信箱 PIN 碼"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"您必須輸入語音信箱 PIN 碼才能存取您的語音信箱。"</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"不明錯誤"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zu/strings.xml
index fa26132..8d3cd79 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values-zu/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values-zu/strings.xml
@@ -44,10 +44,10 @@
     <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ngeke uze ukwazi ukuthola ivoyisimeyili entsha uma ibhokisi lakho lokungenayo ligcwele."</string>
     <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ayikwazi ukwamukela amavoyisimeyili amasha"</string>
     <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Ibhokisi lakho lokungenayo ligcwele. Zama ukususa eminye imilayezo ukuze uthole ivoyisimeyili entsha."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="3083779676549536189">"[Ukuhlolwa] Vula isitoreji esingeziwe nesipele"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="4236256841748725792">"Ibhokisi lakho lemeyili ligcwele. Ukuze ukhulule isikhala, vula isitoreji esingeziwe ukuze i-Google ikwazi ukuphatha iphinde yenze isipele imilayezo yakho yevoyisimeyili. "<b><i>"Lesi sici manje siyahlolwa "</i></b>"futhi sinamandla okususa amavoyisimeyili kusukela kuseva yakho yevoyisimeyili, futhi asithembisi ukusekela lesi sici ngokuzayo. Singayijabulela impendulo yakho yize kunjalo."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="6118464905488477869">"[Ukuhlolwa] Vula isitoreji esingeziwe nesipele"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="7289015622668426730">"Ibhokisi lakho lemeyili selicishe ligcwele. Ukuze ukhulule isikhala, vula isitoreji esingeziwe ukuze i-Google ikwazi ukuphatha iphinde yenze isipele imilayezo yakho yevoyisimeyili. "<b><i>"Lesi sici manje siyahlolwa "</i></b>"futhi sinamandla okususa amavoyisimeyili kusukela kuseva yakho yevoyisimeyili, futhi asithembisi ukusekela lesi sici ngokuzayo. Singayijabulela impendulo yakho yize kunjalo."</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Vula isitoreji esingeziwe nesipele"</string>
+    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Ibhokisi lakho lemeyili ligcwele. Ukuze ukhulule isikhala, vula isitoreji esingeziwe ukuze i-Google ikwazi ukuphatha futhi yenze isipele imilTo free up space, turn on extra storage so Google can manage and backup your voicemail messages."</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Vula isitoreji esingeziwe nesipele"</string>
+    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ibhokisi lakho lemeyili cishe ligcwele. Ukuze ukhulule isikhala, vula isitoreji esingeziwe ukuze i-Google ikwazi ukuphatha nokwenza isipele imilayezo yakho yevoyisimeyili."</string>
     <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Setha iphini yakho yevoyisimeyili"</string>
     <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Udinga iphini yevoyisimeyili noma kunini uma wenza ikholi ukufinyelela ivoyisimeyili yakho."</string>
     <string name="voicemail_error_unknown_title" msgid="7214482611706360680">"Iphutha elingaziwa"</string>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values/dimens.xml b/java/com/android/dialer/app/voicemail/error/res/values/dimens.xml
index 20dd40a..090311f 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values/dimens.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values/dimens.xml
@@ -9,4 +9,17 @@
   <dimen name="alert_action_horizontal_padding">4dp</dimen>
   <dimen name="alert_action_between_padding">11dp</dimen>
   <dimen name="alert_line_spacing">4dp</dimen>
+
+  <!-- Dimensions for promo card -->
+  <dimen name="voicemail_promo_card_icon_size">24dp</dimen>
+  <dimen name="voicemail_promo_card_start_padding">16dp</dimen>
+  <dimen name="voicemail_promo_card_top_padding">21dp</dimen>
+  <dimen name="voicemail_promo_card_main_padding">24dp</dimen>
+  <dimen name="voicemail_promo_card_title_padding">12dp</dimen>
+  <dimen name="voicemail_promo_card_action_vertical_padding">4dp</dimen>
+  <dimen name="voicemail_promo_card_action_end_padding">4dp</dimen>
+  <dimen name="voicemail_promo_card_action_between_padding">11dp</dimen>
+  <dimen name="voicemail_promo_card_line_spacing">4dp</dimen>
+  <dimen name="voicemail_promo_card_title_text_size">16sp</dimen>
+  <dimen name="voicemail_promo_card_message_size">14sp</dimen>
 </resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/app/voicemail/error/res/values/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values/strings.xml
index d146525..94d3dba 100644
--- a/java/com/android/dialer/app/voicemail/error/res/values/strings.xml
+++ b/java/com/android/dialer/app/voicemail/error/res/values/strings.xml
@@ -54,11 +54,11 @@
   <string name="voicemail_error_inbox_full_title">Can\'t receive new voicemails</string>
   <string name="voicemail_error_inbox_full_message">Your inbox is full. Try deleting some messages to receive new voicemail.</string>
 
-  <string name="voicemail_error_inbox_full_turn_archive_on_title">[Experimental] Turn on extra storage and backup</string>
-  <string name="voicemail_error_inbox_full_turn_archive_on_message">Your mailbox is full. To free up space, turn on extra storage so Google can manage and backup your voicemail messages. <b><i>This feature is currently being tested </i></b>and will potentially delete voicemails from your voicemail server, and we do not promise to support this feature in the future. We would love your feedback though.</string>
+  <string name="voicemail_error_inbox_full_turn_archive_on_title">Turn on extra storage and backup</string>
+  <string name="voicemail_error_inbox_full_turn_archive_on_message">Your mailbox is full. To free up space, turn on extra storage so Google can manage and backup your voicemail messages.</string>
 
-  <string name="voicemail_error_inbox_almost_full_turn_archive_on_title">[Experimental] Turn on extra storage and backup</string>
-  <string name="voicemail_error_inbox_almost_full_turn_archive_on_message">Your mailbox is almost full. To free up space, turn on extra storage so Google can manage and backup your voicemail messages. <b><i>This feature is currently being tested </i></b>and will potentially delete voicemails from your voicemail server, and we do not promise to support this feature in the future. We would love your feedback though.</string>
+  <string name="voicemail_error_inbox_almost_full_turn_archive_on_title">Turn on extra storage and backup</string>
+  <string name="voicemail_error_inbox_almost_full_turn_archive_on_message">Your mailbox is almost full. To free up space, turn on extra storage so Google can manage and backup your voicemail messages.</string>
 
   <string name="voicemail_error_pin_not_set_title">Set your voicemail PIN</string>
   <string name="voicemail_error_pin_not_set_message">You\'ll need a voicemail PIN anytime you call to access your voicemail.</string>
diff --git a/java/com/android/dialer/backup/DialerBackupAgent.java b/java/com/android/dialer/backup/DialerBackupAgent.java
index 0841e82..27dfc29 100644
--- a/java/com/android/dialer/backup/DialerBackupAgent.java
+++ b/java/com/android/dialer/backup/DialerBackupAgent.java
@@ -33,12 +33,11 @@
 import android.provider.VoicemailContract.Voicemails;
 import android.telecom.PhoneAccountHandle;
 import android.util.Pair;
-import com.android.dialer.backup.nano.VoicemailInfo;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.ConfigProviderBindings;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.telecom.TelecomUtil;
 import java.io.File;
 import java.io.IOException;
@@ -59,7 +58,7 @@
   // Voicemail Uri Column
   public static final String VOICEMAIL_URI = "voicemail_uri";
   // Voicemail packages to backup
-  public static final String VOICEMAIL_SOURCE_PACKAGE = "com.android.phone";
+  public static final String VOICEMAIL_SOURCE_PACKAGE = "com.google.android.dialer";
 
   private long voicemailsBackedupSoFar = 0;
   private long sizeOfVoicemailsBackedupSoFar = 0;
diff --git a/java/com/android/dialer/backup/DialerBackupUtils.java b/java/com/android/dialer/backup/DialerBackupUtils.java
index 410772f..17e82e4 100644
--- a/java/com/android/dialer/backup/DialerBackupUtils.java
+++ b/java/com/android/dialer/backup/DialerBackupUtils.java
@@ -30,16 +30,14 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.util.Pair;
-import com.android.dialer.backup.nano.VoicemailInfo;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.ConfigProviderBindings;
 import com.android.dialer.common.LogUtil;
 import com.android.voicemail.VoicemailComponent;
 import com.google.common.io.ByteStreams;
 import com.google.common.io.Files;
-import com.google.protobuf.nano.MessageNano;
+import com.google.protobuf.ByteString;
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -66,15 +64,14 @@
     ByteStreams.copy(decodedStream, restoreStream);
   }
 
-  public static @Nullable byte[] audioStreamToByteArray(@NonNull InputStream stream)
+  public static @Nullable ByteString audioStreamToByteString(@NonNull InputStream stream)
       throws IOException {
-    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
     if (stream.available() > 0) {
-      ByteStreams.copy(stream, buffer);
+      return ByteString.readFrom(stream);
     } else {
       LogUtil.i("DialerBackupUtils.audioStreamToByteArray", "no audio stream to backup");
     }
-    return buffer.toByteArray();
+    return ByteString.EMPTY;
   }
 
   public static void writeProtoToFile(@NonNull File file, @NonNull VoicemailInfo voicemailInfo)
@@ -83,7 +80,7 @@
         "DialerBackupUtils.writeProtoToFile",
         "backup " + voicemailInfo + " to " + file.getAbsolutePath());
 
-    byte[] bytes = MessageNano.toByteArray(voicemailInfo);
+    byte[] bytes = voicemailInfo.toByteArray();
     Files.write(bytes, file);
   }
 
@@ -111,7 +108,7 @@
   public static VoicemailInfo convertVoicemailCursorRowToProto(
       @NonNull Cursor cursor, @NonNull ContentResolver contentResolver) throws IOException {
 
-    VoicemailInfo voicemailInfo = new VoicemailInfo();
+    VoicemailInfo.Builder voicemailInfo = VoicemailInfo.newBuilder();
 
     for (int i = 0; i < cursor.getColumnCount(); ++i) {
       String name = cursor.getColumnName(i);
@@ -126,56 +123,56 @@
 
       switch (name) {
         case Voicemails.DATE:
-          voicemailInfo.date = value;
+          voicemailInfo.setDate(value);
           break;
         case Voicemails.DELETED:
-          voicemailInfo.deleted = value;
+          voicemailInfo.setDeleted(value);
           break;
         case Voicemails.DIRTY:
-          voicemailInfo.dirty = value;
+          voicemailInfo.setDirty(value);
           break;
         case Voicemails.DIR_TYPE:
-          voicemailInfo.dirType = value;
+          voicemailInfo.setDirType(value);
           break;
         case Voicemails.DURATION:
-          voicemailInfo.duration = value;
+          voicemailInfo.setDuration(value);
           break;
         case Voicemails.HAS_CONTENT:
-          voicemailInfo.hasContent = value;
+          voicemailInfo.setHasContent(value);
           break;
         case Voicemails.IS_READ:
-          voicemailInfo.isRead = value;
+          voicemailInfo.setIsRead(value);
           break;
         case Voicemails.ITEM_TYPE:
-          voicemailInfo.itemType = value;
+          voicemailInfo.setItemType(value);
           break;
         case Voicemails.LAST_MODIFIED:
-          voicemailInfo.lastModified = value;
+          voicemailInfo.setLastModified(value);
           break;
         case Voicemails.MIME_TYPE:
-          voicemailInfo.mimeType = value;
+          voicemailInfo.setMimeType(value);
           break;
         case Voicemails.NUMBER:
-          voicemailInfo.number = value;
+          voicemailInfo.setNumber(value);
           break;
         case Voicemails.PHONE_ACCOUNT_COMPONENT_NAME:
-          voicemailInfo.phoneAccountComponentName = value;
+          voicemailInfo.setPhoneAccountComponentName(value);
           break;
         case Voicemails.PHONE_ACCOUNT_ID:
-          voicemailInfo.phoneAccountId = value;
+          voicemailInfo.setPhoneAccountId(value);
           break;
         case Voicemails.SOURCE_DATA:
-          voicemailInfo.sourceData = value;
+          voicemailInfo.setSourceData(value);
           break;
         case Voicemails.SOURCE_PACKAGE:
-          voicemailInfo.sourcePackage = value;
+          voicemailInfo.setSourcePackage(value);
           break;
         case Voicemails.TRANSCRIPTION:
-          voicemailInfo.transcription = value;
+          voicemailInfo.setTranscription(value);
           break;
         case DialerBackupAgent.VOICEMAIL_URI:
           try (InputStream audioStream = contentResolver.openInputStream(Uri.parse(value))) {
-            voicemailInfo.encodedVoicemailKey = audioStreamToByteArray(audioStream);
+            voicemailInfo.setEncodedVoicemailKey(audioStreamToByteString(audioStream));
           }
           break;
         default:
@@ -187,7 +184,7 @@
           break;
       }
     }
-    return voicemailInfo;
+    return voicemailInfo.build();
   }
 
   public static Pair<ContentValues, byte[]> convertVoicemailProtoFileToContentValueAndAudioBytes(
@@ -209,45 +206,45 @@
     } else {
       ContentValues contentValues = new ContentValues();
 
-      if (!voicemailInfo.date.isEmpty()) {
-        contentValues.put(Voicemails.DATE, voicemailInfo.date);
+      if (voicemailInfo.hasDate()) {
+        contentValues.put(Voicemails.DATE, voicemailInfo.getDate());
       }
-      if (!voicemailInfo.deleted.isEmpty()) {
-        contentValues.put(Voicemails.DELETED, voicemailInfo.deleted);
+      if (voicemailInfo.hasDeleted()) {
+        contentValues.put(Voicemails.DELETED, voicemailInfo.getDeleted());
       }
-      if (!voicemailInfo.dirty.isEmpty()) {
-        contentValues.put(Voicemails.DIRTY, voicemailInfo.dirty);
+      if (!voicemailInfo.hasDirty()) {
+        contentValues.put(Voicemails.DIRTY, voicemailInfo.getDirty());
       }
-      if (!voicemailInfo.duration.isEmpty()) {
-        contentValues.put(Voicemails.DURATION, voicemailInfo.duration);
+      if (!voicemailInfo.hasDuration()) {
+        contentValues.put(Voicemails.DURATION, voicemailInfo.getDuration());
       }
-      if (!voicemailInfo.isRead.isEmpty()) {
-        contentValues.put(Voicemails.IS_READ, voicemailInfo.isRead);
+      if (!voicemailInfo.hasIsRead()) {
+        contentValues.put(Voicemails.IS_READ, voicemailInfo.getIsRead());
       }
-      if (!voicemailInfo.lastModified.isEmpty()) {
-        contentValues.put(Voicemails.LAST_MODIFIED, voicemailInfo.lastModified);
+      if (!voicemailInfo.hasLastModified()) {
+        contentValues.put(Voicemails.LAST_MODIFIED, voicemailInfo.getLastModified());
       }
-      if (!voicemailInfo.mimeType.isEmpty()) {
-        contentValues.put(Voicemails.MIME_TYPE, voicemailInfo.mimeType);
+      if (!voicemailInfo.hasMimeType()) {
+        contentValues.put(Voicemails.MIME_TYPE, voicemailInfo.getMimeType());
       }
-      if (!voicemailInfo.number.isEmpty()) {
-        contentValues.put(Voicemails.NUMBER, voicemailInfo.number);
+      if (!voicemailInfo.hasNumber()) {
+        contentValues.put(Voicemails.NUMBER, voicemailInfo.getNumber());
       }
-      if (!voicemailInfo.phoneAccountComponentName.isEmpty()) {
+      if (!voicemailInfo.hasPhoneAccountComponentName()) {
         contentValues.put(
-            Voicemails.PHONE_ACCOUNT_COMPONENT_NAME, voicemailInfo.phoneAccountComponentName);
+            Voicemails.PHONE_ACCOUNT_COMPONENT_NAME, voicemailInfo.getPhoneAccountComponentName());
       }
-      if (!voicemailInfo.phoneAccountId.isEmpty()) {
-        contentValues.put(Voicemails.PHONE_ACCOUNT_ID, voicemailInfo.phoneAccountId);
+      if (!voicemailInfo.hasPhoneAccountId()) {
+        contentValues.put(Voicemails.PHONE_ACCOUNT_ID, voicemailInfo.getPhoneAccountId());
       }
-      if (!voicemailInfo.sourceData.isEmpty()) {
-        contentValues.put(Voicemails.SOURCE_DATA, voicemailInfo.sourceData);
+      if (!voicemailInfo.hasSourceData()) {
+        contentValues.put(Voicemails.SOURCE_DATA, voicemailInfo.getSourceData());
       }
-      if (!voicemailInfo.sourcePackage.isEmpty()) {
-        contentValues.put(Voicemails.SOURCE_PACKAGE, voicemailInfo.sourcePackage);
+      if (!voicemailInfo.hasSourcePackage()) {
+        contentValues.put(Voicemails.SOURCE_PACKAGE, voicemailInfo.getSourcePackage());
       }
-      if (!voicemailInfo.transcription.isEmpty()) {
-        contentValues.put(Voicemails.TRANSCRIPTION, voicemailInfo.transcription);
+      if (!voicemailInfo.hasTranscription()) {
+        contentValues.put(Voicemails.TRANSCRIPTION, voicemailInfo.getTranscription());
       }
       contentValues.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
       contentValues.put(RESTORED_COLUMN, "1");
@@ -257,7 +254,7 @@
           "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio",
           "cv: " + contentValues);
 
-      return Pair.create(contentValues, voicemailInfo.encodedVoicemailKey);
+      return Pair.create(contentValues, voicemailInfo.getEncodedVoicemailKey().toByteArray());
     }
   }
 
@@ -276,7 +273,7 @@
     }
     if (ConfigProviderBindings.get(context)
         .getBoolean("voicemail_restore_check_archive_for_source_package", true)) {
-      if ("1".equals(voicemailInfo.archived)) {
+      if ("1".equals(voicemailInfo.getArchived())) {
         LogUtil.i(
             "DialerBackupUtils.getSourcePackage",
             "voicemail was archived, using app source package");
@@ -312,7 +309,9 @@
                 String.format(
                     "(%s = ? AND %s = ? AND %s = ?)",
                     Voicemails.NUMBER, Voicemails.DATE, Voicemails.DURATION),
-                new String[] {voicemailInfo.number, voicemailInfo.date, voicemailInfo.duration},
+                new String[] {
+                  voicemailInfo.getNumber(), voicemailInfo.getDate(), voicemailInfo.getDuration()
+                },
                 null,
                 null)) {
       if (cursor.moveToFirst()
diff --git a/java/com/android/dialer/backup/nano/VoicemailInfo.java b/java/com/android/dialer/backup/nano/VoicemailInfo.java
deleted file mode 100644
index f11595e..0000000
--- a/java/com/android/dialer/backup/nano/VoicemailInfo.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.backup.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class VoicemailInfo
-    extends com.google.protobuf.nano.ExtendableMessageNano<VoicemailInfo> {
-
-  private static volatile VoicemailInfo[] _emptyArray;
-
-  public static VoicemailInfo[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new VoicemailInfo[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // optional string date = 1;
-  public java.lang.String date;
-
-  // optional string deleted = 2;
-  public java.lang.String deleted;
-
-  // optional string dirty = 3;
-  public java.lang.String dirty;
-
-  // optional string dir_type = 4;
-  public java.lang.String dirType;
-
-  // optional string duration = 5;
-  public java.lang.String duration;
-
-  // optional string has_content = 6;
-  public java.lang.String hasContent;
-
-  // optional string is_read = 7;
-  public java.lang.String isRead;
-
-  // optional string item_type = 8;
-  public java.lang.String itemType;
-
-  // optional string last_modified = 9;
-  public java.lang.String lastModified;
-
-  // optional string mime_type = 10;
-  public java.lang.String mimeType;
-
-  // optional string number = 11;
-  public java.lang.String number;
-
-  // optional string phone_account_component_name = 12;
-  public java.lang.String phoneAccountComponentName;
-
-  // optional string phone_account_id = 13;
-  public java.lang.String phoneAccountId;
-
-  // optional string source_data = 14;
-  public java.lang.String sourceData;
-
-  // optional string source_package = 15;
-  public java.lang.String sourcePackage;
-
-  // optional string transcription = 16;
-  public java.lang.String transcription;
-
-  // optional string voicemail_uri = 17;
-  public java.lang.String voicemailUri;
-
-  // optional bytes encoded_voicemail_key = 18;
-  public byte[] encodedVoicemailKey;
-
-  // optional string archived = 19;
-  public java.lang.String archived;
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.backup.VoicemailInfo)
-
-  public VoicemailInfo() {
-    clear();
-  }
-
-  public VoicemailInfo clear() {
-    date = "";
-    deleted = "";
-    dirty = "";
-    dirType = "";
-    duration = "";
-    hasContent = "";
-    isRead = "";
-    itemType = "";
-    lastModified = "";
-    mimeType = "";
-    number = "";
-    phoneAccountComponentName = "";
-    phoneAccountId = "";
-    sourceData = "";
-    sourcePackage = "";
-    transcription = "";
-    voicemailUri = "";
-    encodedVoicemailKey = com.google.protobuf.nano.WireFormatNano.EMPTY_BYTES;
-    archived = "";
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output)
-      throws java.io.IOException {
-    if (this.date != null && !this.date.equals("")) {
-      output.writeString(1, this.date);
-    }
-    if (this.deleted != null && !this.deleted.equals("")) {
-      output.writeString(2, this.deleted);
-    }
-    if (this.dirty != null && !this.dirty.equals("")) {
-      output.writeString(3, this.dirty);
-    }
-    if (this.dirType != null && !this.dirType.equals("")) {
-      output.writeString(4, this.dirType);
-    }
-    if (this.duration != null && !this.duration.equals("")) {
-      output.writeString(5, this.duration);
-    }
-    if (this.hasContent != null && !this.hasContent.equals("")) {
-      output.writeString(6, this.hasContent);
-    }
-    if (this.isRead != null && !this.isRead.equals("")) {
-      output.writeString(7, this.isRead);
-    }
-    if (this.itemType != null && !this.itemType.equals("")) {
-      output.writeString(8, this.itemType);
-    }
-    if (this.lastModified != null && !this.lastModified.equals("")) {
-      output.writeString(9, this.lastModified);
-    }
-    if (this.mimeType != null && !this.mimeType.equals("")) {
-      output.writeString(10, this.mimeType);
-    }
-    if (this.number != null && !this.number.equals("")) {
-      output.writeString(11, this.number);
-    }
-    if (this.phoneAccountComponentName != null && !this.phoneAccountComponentName.equals("")) {
-      output.writeString(12, this.phoneAccountComponentName);
-    }
-    if (this.phoneAccountId != null && !this.phoneAccountId.equals("")) {
-      output.writeString(13, this.phoneAccountId);
-    }
-    if (this.sourceData != null && !this.sourceData.equals("")) {
-      output.writeString(14, this.sourceData);
-    }
-    if (this.sourcePackage != null && !this.sourcePackage.equals("")) {
-      output.writeString(15, this.sourcePackage);
-    }
-    if (this.transcription != null && !this.transcription.equals("")) {
-      output.writeString(16, this.transcription);
-    }
-    if (this.voicemailUri != null && !this.voicemailUri.equals("")) {
-      output.writeString(17, this.voicemailUri);
-    }
-    if (!java.util.Arrays.equals(
-        this.encodedVoicemailKey, com.google.protobuf.nano.WireFormatNano.EMPTY_BYTES)) {
-      output.writeBytes(18, this.encodedVoicemailKey);
-    }
-    if (this.archived != null && !this.archived.equals("")) {
-      output.writeString(19, this.archived);
-    }
-    super.writeTo(output);
-  }
-
-  @Override
-  protected int computeSerializedSize() {
-    int size = super.computeSerializedSize();
-    if (this.date != null && !this.date.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(1, this.date);
-    }
-    if (this.deleted != null && !this.deleted.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(2, this.deleted);
-    }
-    if (this.dirty != null && !this.dirty.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(3, this.dirty);
-    }
-    if (this.dirType != null && !this.dirType.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(4, this.dirType);
-    }
-    if (this.duration != null && !this.duration.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(5, this.duration);
-    }
-    if (this.hasContent != null && !this.hasContent.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(6, this.hasContent);
-    }
-    if (this.isRead != null && !this.isRead.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(7, this.isRead);
-    }
-    if (this.itemType != null && !this.itemType.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(8, this.itemType);
-    }
-    if (this.lastModified != null && !this.lastModified.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              9, this.lastModified);
-    }
-    if (this.mimeType != null && !this.mimeType.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(10, this.mimeType);
-    }
-    if (this.number != null && !this.number.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(11, this.number);
-    }
-    if (this.phoneAccountComponentName != null && !this.phoneAccountComponentName.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              12, this.phoneAccountComponentName);
-    }
-    if (this.phoneAccountId != null && !this.phoneAccountId.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              13, this.phoneAccountId);
-    }
-    if (this.sourceData != null && !this.sourceData.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(14, this.sourceData);
-    }
-    if (this.sourcePackage != null && !this.sourcePackage.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              15, this.sourcePackage);
-    }
-    if (this.transcription != null && !this.transcription.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              16, this.transcription);
-    }
-    if (this.voicemailUri != null && !this.voicemailUri.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              17, this.voicemailUri);
-    }
-    if (!java.util.Arrays.equals(
-        this.encodedVoicemailKey, com.google.protobuf.nano.WireFormatNano.EMPTY_BYTES)) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeBytesSize(
-              18, this.encodedVoicemailKey);
-    }
-    if (this.archived != null && !this.archived.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(19, this.archived);
-    }
-    return size;
-  }
-
-  @Override
-  public VoicemailInfo mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-        case 10:
-          {
-            this.date = input.readString();
-            break;
-          }
-        case 18:
-          {
-            this.deleted = input.readString();
-            break;
-          }
-        case 26:
-          {
-            this.dirty = input.readString();
-            break;
-          }
-        case 34:
-          {
-            this.dirType = input.readString();
-            break;
-          }
-        case 42:
-          {
-            this.duration = input.readString();
-            break;
-          }
-        case 50:
-          {
-            this.hasContent = input.readString();
-            break;
-          }
-        case 58:
-          {
-            this.isRead = input.readString();
-            break;
-          }
-        case 66:
-          {
-            this.itemType = input.readString();
-            break;
-          }
-        case 74:
-          {
-            this.lastModified = input.readString();
-            break;
-          }
-        case 82:
-          {
-            this.mimeType = input.readString();
-            break;
-          }
-        case 90:
-          {
-            this.number = input.readString();
-            break;
-          }
-        case 98:
-          {
-            this.phoneAccountComponentName = input.readString();
-            break;
-          }
-        case 106:
-          {
-            this.phoneAccountId = input.readString();
-            break;
-          }
-        case 114:
-          {
-            this.sourceData = input.readString();
-            break;
-          }
-        case 122:
-          {
-            this.sourcePackage = input.readString();
-            break;
-          }
-        case 130:
-          {
-            this.transcription = input.readString();
-            break;
-          }
-        case 138:
-          {
-            this.voicemailUri = input.readString();
-            break;
-          }
-        case 146:
-          {
-            this.encodedVoicemailKey = input.readBytes();
-            break;
-          }
-        case 154:
-          {
-            this.archived = input.readString();
-            break;
-          }
-      }
-    }
-  }
-
-  public static VoicemailInfo parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new VoicemailInfo(), data);
-  }
-
-  public static VoicemailInfo parseFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    return new VoicemailInfo().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/backup/proto/voicemail_info.proto b/java/com/android/dialer/backup/proto/voicemail_info.proto
new file mode 100644
index 0000000..b74cce9
--- /dev/null
+++ b/java/com/android/dialer/backup/proto/voicemail_info.proto
@@ -0,0 +1,30 @@
+syntax = "proto2";
+
+option java_package = "com.android.dialer.backup";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+package com.android.dialer.backup;
+
+// Next id: 20
+message VoicemailInfo {
+  optional string date = 1;
+  optional string deleted = 2;
+  optional string dirty = 3;
+  optional string dir_type = 4;
+  optional string duration = 5;
+  optional string has_content = 6;
+  optional string is_read = 7;
+  optional string item_type = 8;
+  optional string last_modified = 9;
+  optional string mime_type = 10;
+  optional string number = 11;
+  optional string phone_account_component_name = 12;
+  optional string phone_account_id = 13;
+  optional string source_data = 14;
+  optional string source_package = 15;
+  optional string transcription = 16;
+  optional string voicemail_uri = 17;
+  optional bytes encoded_voicemail_key = 18;
+  optional string archived = 19;
+}
diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
index 3a2f3cf..595401c 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
@@ -17,6 +17,7 @@
 package com.android.dialer.binary.aosp;
 
 import com.android.dialer.binary.basecomponent.BaseDialerRootComponent;
+import com.android.dialer.calllog.CallLogModule;
 import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
 import com.android.dialer.inject.ContextModule;
 import com.android.dialer.lightbringer.stub.StubLightbringerModule;
@@ -31,6 +32,7 @@
 @Singleton
 @Component(
   modules = {
+    CallLogModule.class,
     ContextModule.class,
     SimulatorModule.class,
     StubCallLocationModule.class,
diff --git a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
index e8962c2..2deb7fd 100644
--- a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
+++ b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
@@ -16,6 +16,7 @@
 
 package com.android.dialer.binary.basecomponent;
 
+import com.android.dialer.calllog.CallLogComponent;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.lightbringer.LightbringerComponent;
 import com.android.dialer.simulator.SimulatorComponent;
@@ -24,11 +25,12 @@
 import com.android.voicemail.VoicemailComponent;
 
 /**
- * Base class for the core application-wide {@link Component}. All variants of the Dialer app should
- * extend from this component.
+ * Base class for the core application-wide component. All variants of the Dialer app should extend
+ * from this component.
  */
 public interface BaseDialerRootComponent
     extends CallLocationComponent.HasComponent,
+        CallLogComponent.HasComponent,
         EnrichedCallComponent.HasComponent,
         MapsComponent.HasComponent,
         SimulatorComponent.HasComponent,
diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java
index 352c4eb..b4ee75c 100644
--- a/java/com/android/dialer/binary/common/DialerApplication.java
+++ b/java/com/android/dialer/binary/common/DialerApplication.java
@@ -23,6 +23,7 @@
 import com.android.dialer.blocking.BlockedNumbersAutoMigrator;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
 import com.android.dialer.buildtype.BuildType;
+import com.android.dialer.calllog.CallLogComponent;
 import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.persistentlog.PersistentLogger;
@@ -44,6 +45,7 @@
             new FilteredNumberAsyncQueryHandler(this),
             new DefaultDialerExecutorFactory())
         .asyncAutoMigrate();
+    CallLogComponent.get(this).callLogFramework().registerContentObservers(getApplicationContext());
     PersistentLogger.initialize(this);
     Trace.endSection();
   }
diff --git a/java/com/android/dialer/blocking/BlockNumberDialogFragment.java b/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
index c405b2f..7ef77c4 100644
--- a/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
+++ b/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
@@ -33,8 +33,8 @@
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnBlockNumberListener;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnUnblockNumberListener;
+import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.InteractionEvent;
 import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
 
 /**
diff --git a/java/com/android/dialer/blocking/FilteredNumbersUtil.java b/java/com/android/dialer/blocking/FilteredNumbersUtil.java
index 8908238..cbef73c 100644
--- a/java/com/android/dialer/blocking/FilteredNumbersUtil.java
+++ b/java/com/android/dialer/blocking/FilteredNumbersUtil.java
@@ -34,8 +34,8 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.InteractionEvent;
 import com.android.dialer.notification.NotificationChannelManager;
 import com.android.dialer.notification.NotificationChannelManager.Channel;
 import com.android.dialer.util.PermissionsUtil;
diff --git a/java/com/android/dialer/blocking/res/drawable-hdpi/ic_block_24dp.png b/java/com/android/dialer/blocking/res/drawable-hdpi/ic_block_24dp.png
new file mode 100644
index 0000000..2ccc89d
--- /dev/null
+++ b/java/com/android/dialer/blocking/res/drawable-hdpi/ic_block_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/blocking/res/drawable-hdpi/ic_report_24dp.png b/java/com/android/dialer/blocking/res/drawable-hdpi/ic_report_24dp.png
new file mode 100644
index 0000000..dc0c995
--- /dev/null
+++ b/java/com/android/dialer/blocking/res/drawable-hdpi/ic_report_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/blocking/res/drawable-hdpi/ic_report_white_36dp.png b/java/com/android/dialer/blocking/res/drawable-hdpi/ic_report_white_36dp.png
new file mode 100644
index 0000000..919a872
--- /dev/null
+++ b/java/com/android/dialer/blocking/res/drawable-hdpi/ic_report_white_36dp.png
Binary files differ
diff --git a/java/com/android/dialer/blocking/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/blocking/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..238dde0
--- /dev/null
+++ b/java/com/android/dialer/blocking/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="migrate_blocked_numbers_dialog_title" msgid="7823962296457673809">"Novo, jednostavnije blokiranje"</string>
+    <string name="migrate_blocked_numbers_dialog_message" msgid="8309736147266462485">"Telefon treba da promeni način na koji blokiranje funkcioniše da bi vam pružio bolju zaštitu. Sa blokiranih brojeva više nećete primati ni pozive ni SMS-ove, ali možete da ih delite sa drugim aplikacijama."</string>
+    <string name="migrate_blocked_numbers_dialog_allow_button" msgid="5192836471557751367">"Dozvoli"</string>
+    <string name="block_number_confirmation_title" msgid="2699521227461376076">"Želite li da blokirate <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="6501105244172290939">"Pozivi sa ovog broja će biti blokirani i poruke govorne pošte će se automatski brisati."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="8236641245709649882">"Pozivi sa ovog broja će biti blokirani, ali pozivalac i dalje može da vam ostavlja poruke govorne pošte."</string>
+    <string name="block_number_confirmation_message_new_filtering" msgid="8487449683723062644">"Više nećete primati pozive ni SMS-ove sa ovog broja."</string>
+    <string name="block_number_ok" msgid="739786082788038932">"BLOKIRAJ"</string>
+    <string name="unblock_number_confirmation_title" msgid="7897778825085659941">"Želite li da deblokirate <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_ok" msgid="5089057152966269355">"DEBLOKIRAJ"</string>
+    <string name="invalidNumber" msgid="6270918250761754967">"<xliff:g id="NUMBER">%1$s</xliff:g> je nevažeći."</string>
+    <string name="snackbar_number_blocked" msgid="5760234822413921845">"<xliff:g id="NUMBER">%1$s</xliff:g> je blokiran"</string>
+    <string name="snackbar_number_unblocked" msgid="7941296274123990585">"<xliff:g id="NUMBER">%1$s</xliff:g> je deblokiran"</string>
+    <string name="block_number_undo" msgid="5158120911892491697">"OPOZOVI"</string>
+    <string name="send_to_voicemail_import_failed" msgid="1012752662074208237">"Uvoz nije uspeo"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="7211352205255347489">"Blokiranje poziva je onemogućeno na 48 sati"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="141384084865180722">"Onemogućeno je zato što je upućen hitan poziv."</string>
+    <string name="block_report_number_alert_title" msgid="2740581989824959611">"Želite li da blokirate <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_report_number_alert_details" msgid="2652479394593143562">"Više nećete primati pozive sa ovog broja."</string>
+    <string name="block_number_alert_details" msgid="715942751312046429">"<xliff:g id="TEXT">%1$s</xliff:g> Prijavićemo ovaj poziv kao nepoželjan."</string>
+    <string name="unblock_number_alert_details" msgid="8696070817026870606">"Deblokiraćemo broj i prijaviti da nije nepoželjan. Budući pozivi neće biti označavani kao nepoželjni."</string>
+    <string name="unblock_report_number_alert_title" msgid="2221901995393696882">"Želite li da deblokirate <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="report_not_spam_alert_button" msgid="3244953565919894995">"Prijavi"</string>
+    <string name="report_not_spam_alert_title" msgid="395961923213504916">"Želite da prijavite grešku?"</string>
+    <string name="report_not_spam_alert_details" msgid="4463730683530824797">"Budući pozivi sa <xliff:g id="NUMBER">%1$s</xliff:g> više neće biti označavani kao nepoželjni."</string>
+    <string name="checkbox_report_as_spam_action" msgid="1549159682170273798">"Prijavi poziv kao nepoželjan"</string>
+</resources>
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index 3c0beb1..e8ca72e 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -25,7 +25,6 @@
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.v4.content.ContextCompat;
@@ -50,28 +49,25 @@
 import android.widget.TextView;
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.callcomposer.CallComposerFragment.CallComposerListener;
-import com.android.dialer.callcomposer.nano.CallComposerContact;
-import com.android.dialer.callcomposer.util.CopyAndResizeImageTask;
-import com.android.dialer.callcomposer.util.CopyAndResizeImageTask.Callback;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.nano.CallInitiationType;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.UiUtil;
+import com.android.dialer.common.concurrent.DialerExecutors;
 import com.android.dialer.constants.Constants;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.enrichedcall.EnrichedCallManager.State;
 import com.android.dialer.enrichedcall.Session;
 import com.android.dialer.enrichedcall.extensions.StateExtension;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.multimedia.MultimediaData;
-import com.android.dialer.protos.ProtoParsers;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.ViewUtil;
 import com.android.dialer.widget.DialerToolbar;
-import com.google.protobuf.nano.InvalidProtocolBufferNanoException;
+import com.google.protobuf.InvalidProtocolBufferException;
 import java.io.File;
 
 /**
@@ -133,7 +129,7 @@
 
   public static Intent newIntent(Context context, CallComposerContact contact) {
     Intent intent = new Intent(context, CallComposerActivity.class);
-    ProtoParsers.put(intent, ARG_CALL_COMPOSER_CONTACT, contact);
+    intent.putExtra(ARG_CALL_COMPOSER_CONTACT, contact.toByteArray());
     return intent;
   }
 
@@ -195,7 +191,7 @@
           runEntranceAnimation();
         });
 
-    setMediaIconSelected(0);
+    setMediaIconSelected(currentIndex);
   }
 
   @Override
@@ -204,11 +200,11 @@
     getEnrichedCallManager().registerStateChangedListener(this);
     if (sessionId == Session.NO_SESSION_ID) {
       LogUtil.i("CallComposerActivity.onResume", "creating new session");
-      sessionId = getEnrichedCallManager().startCallComposerSession(contact.number);
+      sessionId = getEnrichedCallManager().startCallComposerSession(contact.getNumber());
     } else if (getEnrichedCallManager().getSession(sessionId) == null) {
       LogUtil.i(
           "CallComposerActivity.onResume", "session closed while activity paused, creating new");
-      sessionId = getEnrichedCallManager().startCallComposerSession(contact.number);
+      sessionId = getEnrichedCallManager().startCallComposerSession(contact.getNumber());
     } else {
       LogUtil.i("CallComposerActivity.onResume", "session still open, using old");
     }
@@ -294,29 +290,28 @@
       GalleryComposerFragment galleryComposerFragment = (GalleryComposerFragment) fragment;
       // If the current data is not a copy, make one.
       if (!galleryComposerFragment.selectedDataIsCopy()) {
-        new CopyAndResizeImageTask(
-                CallComposerActivity.this,
-                galleryComposerFragment.getGalleryData().getFileUri(),
-                new Callback() {
-                  @Override
-                  public void onCopySuccessful(File file, String mimeType) {
-                    Uri shareableUri =
-                        FileProvider.getUriForFile(
-                            CallComposerActivity.this,
-                            Constants.get().getFileProviderAuthority(),
-                            file);
+        DialerExecutors.createUiTaskBuilder(
+                getFragmentManager(),
+                "copyAndResizeImageToSend",
+                new CopyAndResizeImageWorker(this.getApplicationContext()))
+            .onSuccess(
+                output -> {
+                  Uri shareableUri =
+                      FileProvider.getUriForFile(
+                          CallComposerActivity.this,
+                          Constants.get().getFileProviderAuthority(),
+                          output.first);
 
-                    builder.setImage(grantUriPermission(shareableUri), mimeType);
-                    placeRCSCall(builder);
-                  }
-
-                  @Override
-                  public void onCopyFailed(Throwable throwable) {
-                    // TODO(b/34279096) - gracefully handle message failure
-                    LogUtil.e("CallComposerActivity.onCopyFailed", "copy Failed", throwable);
-                  }
+                  builder.setImage(grantUriPermission(shareableUri), output.second);
+                  placeRCSCall(builder);
                 })
-            .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+            .onFailure(
+                throwable -> {
+                  // TODO(b/34279096) - gracefully handle message failure
+                  LogUtil.e("CallComposerActivity.onCopyFailed", "copy Failed", throwable);
+                })
+            .build()
+            .executeParallel(galleryComposerFragment.getGalleryData().getFileUri());
       } else {
         Uri shareableUri =
             FileProvider.getUriForFile(
@@ -355,7 +350,8 @@
     Logger.get(this).logImpression(DialerImpression.Type.CALL_COMPOSER_ACTIVITY_PLACE_RCS_CALL);
     getEnrichedCallManager().sendCallComposerData(sessionId, builder.build());
     TelecomUtil.placeCall(
-        this, new CallIntentBuilder(contact.number, CallInitiationType.Type.CALL_COMPOSER).build());
+        this,
+        new CallIntentBuilder(contact.getNumber(), CallInitiationType.Type.CALL_COMPOSER).build());
     setResult(RESULT_OK);
     finish();
   }
@@ -461,13 +457,15 @@
       byte[] bytes = Base64.decode(arguments.getString(ARG_CALL_COMPOSER_CONTACT), Base64.DEFAULT);
       try {
         contact = CallComposerContact.parseFrom(bytes);
-      } catch (InvalidProtocolBufferNanoException e) {
+      } catch (InvalidProtocolBufferException e) {
         Assert.fail(e.toString());
       }
     } else {
-      contact =
-          ProtoParsers.getFromInstanceState(
-              arguments, ARG_CALL_COMPOSER_CONTACT, new CallComposerContact());
+      try {
+        contact = CallComposerContact.parseFrom(arguments.getByteArray(ARG_CALL_COMPOSER_CONTACT));
+      } catch (InvalidProtocolBufferException e) {
+        throw Assert.createIllegalStateFailException(e.toString());
+      }
     }
     updateContactInfo();
   }
@@ -480,22 +478,24 @@
   /** Populates the contact info fields based on the current contact information. */
   private void updateContactInfo() {
     ContactPhotoManager.getInstance(this)
-        .loadDialerThumbnail(
+        .loadDialerThumbnailOrPhoto(
             contactPhoto,
-            contact.contactUri == null ? null : Uri.parse(contact.contactUri),
-            contact.photoId,
-            contact.nameOrNumber,
-            contact.contactType);
+            contact.hasContactUri() ? Uri.parse(contact.getContactUri()) : null,
+            contact.getPhotoId(),
+            contact.hasPhotoUri() ? Uri.parse(contact.getPhotoUri()) : null,
+            contact.getNameOrNumber(),
+            contact.getContactType());
 
-    nameView.setText(contact.nameOrNumber);
-    toolbar.setTitle(contact.nameOrNumber);
-    if (!TextUtils.isEmpty(contact.numberLabel) && !TextUtils.isEmpty(contact.displayNumber)) {
+    nameView.setText(contact.getNameOrNumber());
+    toolbar.setTitle(contact.getNameOrNumber());
+    if (!TextUtils.isEmpty(contact.getNumberLabel())
+        && !TextUtils.isEmpty(contact.getDisplayNumber())) {
       numberView.setVisibility(View.VISIBLE);
       String secondaryInfo =
           getString(
               com.android.contacts.common.R.string.call_subject_type_and_number,
-              contact.numberLabel,
-              contact.displayNumber);
+              contact.getNumberLabel(),
+              contact.getDisplayNumber());
       numberView.setText(secondaryInfo);
       toolbar.setSubtitle(secondaryInfo);
     } else {
@@ -663,7 +663,8 @@
   }
 
   private void setFailedResultAndFinish() {
-    setResult(RESULT_FIRST_USER, new Intent().putExtra(KEY_CONTACT_NAME, contact.nameOrNumber));
+    setResult(
+        RESULT_FIRST_USER, new Intent().putExtra(KEY_CONTACT_NAME, contact.getNameOrNumber()));
     finish();
   }
 
diff --git a/java/com/android/dialer/callcomposer/CameraComposerFragment.java b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
index ceefc06..f65207f 100644
--- a/java/com/android/dialer/callcomposer/CameraComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
@@ -48,8 +48,8 @@
 import com.android.dialer.callcomposer.cameraui.CameraMediaChooserView;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.util.PermissionsUtil;
 
 /** Fragment used to compose call with image from the user's camera. */
diff --git a/java/com/android/dialer/callcomposer/CopyAndResizeImageWorker.java b/java/com/android/dialer/callcomposer/CopyAndResizeImageWorker.java
new file mode 100644
index 0000000..aeb8e03
--- /dev/null
+++ b/java/com/android/dialer/callcomposer/CopyAndResizeImageWorker.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2016 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 com.android.dialer.callcomposer;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.CompressFormat;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.Build.VERSION_CODES;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.util.Pair;
+import com.android.dialer.callcomposer.util.BitmapResizer;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.util.DialerUtils;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/** Task for copying and resizing images to be shared with RCS process. */
+@TargetApi(VERSION_CODES.M)
+class CopyAndResizeImageWorker implements Worker<Uri, Pair<File, String>> {
+  private static final String MIME_TYPE = "image/jpeg";
+
+  private final Context context;
+
+  CopyAndResizeImageWorker(@NonNull Context context) {
+    this.context = Assert.isNotNull(context);
+  }
+
+  /**
+   * @param input The input Uri is expected to be a image openable by {@link
+   *     android.content.ContentResolver#openInputStream(Uri)}.
+   * @return a Pair where the File contains the resized image, and the String is the result File's
+   *     MIME type.
+   */
+  @Nullable
+  @Override
+  public Pair<File, String> doInBackground(@Nullable Uri input) throws Throwable {
+    try (InputStream inputStream = context.getContentResolver().openInputStream(input)) {
+      Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
+      bitmap = BitmapResizer.resizeForEnrichedCalling(bitmap);
+
+      File outputFile = DialerUtils.createShareableFile(context);
+      try (OutputStream outputStream = new FileOutputStream(outputFile)) {
+        // Encode images to jpeg as it is better for camera pictures which we expect to be sending
+        bitmap.compress(CompressFormat.JPEG, 80, outputStream);
+        return new Pair<>(outputFile, MIME_TYPE);
+      }
+    }
+  }
+}
diff --git a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java b/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
index 1d684a2..01e0674 100644
--- a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
@@ -28,6 +28,7 @@
 import android.provider.Settings;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
 import android.support.v4.app.LoaderManager.LoaderCallbacks;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.content.CursorLoader;
@@ -39,13 +40,14 @@
 import android.widget.GridView;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.dialer.callcomposer.util.CopyAndResizeImageTask;
-import com.android.dialer.callcomposer.util.CopyAndResizeImageTask.Callback;
+import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
+import com.android.dialer.common.concurrent.DialerExecutor;
+import com.android.dialer.common.concurrent.DialerExecutorFactory;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.util.PermissionsUtil;
-import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -60,6 +62,8 @@
   private static final int RESULT_LOAD_IMAGE = 1;
   private static final int RESULT_OPEN_SETTINGS = 2;
 
+  private DialerExecutorFactory executorFactory = new DefaultDialerExecutorFactory();
+
   private GalleryGridAdapter adapter;
   private GridView galleryGridView;
   private View permissionView;
@@ -71,10 +75,17 @@
   private boolean selectedDataIsCopy;
   private List<GalleryGridItemData> insertedImages = new ArrayList<>();
 
+  private DialerExecutor<Uri> copyAndResizeImage;
+
   public static GalleryComposerFragment newInstance() {
     return new GalleryComposerFragment();
   }
 
+  @VisibleForTesting
+  void setExecutorFactory(@NonNull DialerExecutorFactory executorFactory) {
+    this.executorFactory = Assert.isNotNull(executorFactory);
+  }
+
   @Nullable
   @Override
   public View onCreateView(
@@ -107,6 +118,32 @@
     return view;
   }
 
+  @Override
+  public void onActivityCreated(@Nullable Bundle bundle) {
+    super.onActivityCreated(bundle);
+
+    copyAndResizeImage =
+        executorFactory
+            .createUiTaskBuilder(
+                getActivity().getFragmentManager(),
+                "copyAndResizeImage",
+                new CopyAndResizeImageWorker(getActivity().getApplicationContext()))
+            .onSuccess(
+                output -> {
+                  GalleryGridItemData data1 =
+                      adapter.insertEntry(output.first.getAbsolutePath(), output.second);
+                  insertedImages.add(0, data1);
+                  setSelected(data1, true);
+                })
+            .onFailure(
+                throwable -> {
+                  // TODO(b/34279096) - gracefully handle message failure
+                  LogUtil.e(
+                      "GalleryComposerFragment.onFailure", "data preparation failed", throwable);
+                })
+            .build();
+  }
+
   private void setupGallery() {
     adapter = new GalleryGridAdapter(getContext(), null, this);
     galleryGridView.setAdapter(adapter);
@@ -264,25 +301,7 @@
     // This should never happen, but just in case..
     // Guard against null uri cases for when the activity returns a null/invalid intent.
     if (url != null) {
-      new CopyAndResizeImageTask(
-              getContext(),
-              Uri.parse(url),
-              new Callback() {
-                @Override
-                public void onCopySuccessful(File file, String mimeType) {
-                  GalleryGridItemData data = adapter.insertEntry(file.getAbsolutePath(), mimeType);
-                  insertedImages.add(0, data);
-                  setSelected(data, true);
-                }
-
-                @Override
-                public void onCopyFailed(Throwable throwable) {
-                  // TODO(b/34279096) - gracefully handle message failure
-                  LogUtil.e(
-                      "GalleryComposerFragment.onFailure", "Data preparation failed", throwable);
-                }
-              })
-          .execute();
+      copyAndResizeImage.executeParallel(Uri.parse(url));
     } else {
       // TODO(b/34279096) - gracefully handle message failure
     }
diff --git a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java b/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
index 80921cd..31751e5 100644
--- a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
+++ b/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
@@ -27,7 +27,7 @@
 import android.support.v4.content.FileProvider;
 import com.android.dialer.callcomposer.camera.exif.ExifInterface;
 import com.android.dialer.callcomposer.camera.exif.ExifTag;
-import com.android.dialer.callcomposer.util.CopyAndResizeImageTask;
+import com.android.dialer.callcomposer.util.BitmapResizer;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.FallibleAsyncTask;
 import com.android.dialer.constants.Constants;
@@ -75,7 +75,7 @@
         writeClippedBitmap(outputStream);
       } else {
         Bitmap bitmap = BitmapFactory.decodeByteArray(mBytes, 0, mBytes.length);
-        bitmap = CopyAndResizeImageTask.resizeForEnrichedCalling(bitmap);
+        bitmap = BitmapResizer.resizeForEnrichedCalling(bitmap);
         bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
       }
     }
@@ -131,7 +131,7 @@
     matrix.postTranslate(-offsetLeft, -offsetTop);
     clippedBitmapCanvas.drawBitmap(bitmap, matrix, null /* paint */);
     clippedBitmapCanvas.save();
-    clippedBitmap = CopyAndResizeImageTask.resizeForEnrichedCalling(clippedBitmap);
+    clippedBitmap = BitmapResizer.resizeForEnrichedCalling(clippedBitmap);
     // EXIF data can take a big chunk of the file size and is often cleared by the
     // carrier, only store orientation since that's critical
     final ExifTag orientationTag = exifInterface.getTag(ExifInterface.TAG_ORIENTATION);
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..aad8d9d
--- /dev/null
+++ b/java/com/android/dialer/callcomposer/cameraui/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="camera_switch_full_screen" msgid="8940026902611470063">"Pređite na prikaz kamere preko celog ekrana"</string>
+    <string name="camera_switch_camera_facing" msgid="6965029101223590384">"Dugme sad aktivira prednju kameru"</string>
+    <string name="camera_switch_camera_rear" msgid="2518207979995455566">"Dugme sad aktivira zadnju kameru"</string>
+    <string name="camera_cancel_recording" msgid="1957458244979306869">"Zaustavite snimanje videa"</string>
+    <string name="using_front_camera" msgid="6734227994972108992">"Koristimo prednju kameru"</string>
+    <string name="using_back_camera" msgid="2143070243242164971">"Koristimo zadnju kameru"</string>
+    <string name="camera_take_picture" msgid="2366908858042883376">"Snimite sliku"</string>
+</resources>
diff --git a/java/com/android/dialer/callcomposer/nano/CallComposerContact.java b/java/com/android/dialer/callcomposer/nano/CallComposerContact.java
deleted file mode 100644
index dcda571..0000000
--- a/java/com/android/dialer/callcomposer/nano/CallComposerContact.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.callcomposer.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class CallComposerContact
-    extends com.google.protobuf.nano.ExtendableMessageNano<CallComposerContact> {
-
-  private static volatile CallComposerContact[] _emptyArray;
-  public static CallComposerContact[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new CallComposerContact[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // optional fixed64 photo_id = 1;
-  public long photoId;
-
-  // optional string photo_uri = 2;
-  public java.lang.String photoUri;
-
-  // optional string contact_uri = 3;
-  public java.lang.String contactUri;
-
-  // optional string name_or_number = 4;
-  public java.lang.String nameOrNumber;
-
-  // optional string number = 6;
-  public java.lang.String number;
-
-  // optional string display_number = 7;
-  public java.lang.String displayNumber;
-
-  // optional string number_label = 8;
-  public java.lang.String numberLabel;
-
-  // optional int32 contact_type = 9;
-  public int contactType;
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.callcomposer.CallComposerContact)
-
-  public CallComposerContact() {
-    clear();
-  }
-
-  public CallComposerContact clear() {
-    photoId = 0L;
-    photoUri = "";
-    contactUri = "";
-    nameOrNumber = "";
-    number = "";
-    displayNumber = "";
-    numberLabel = "";
-    contactType = 0;
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output)
-      throws java.io.IOException {
-    if (this.photoId != 0L) {
-      output.writeFixed64(1, this.photoId);
-    }
-    if (this.photoUri != null && !this.photoUri.equals("")) {
-      output.writeString(2, this.photoUri);
-    }
-    if (this.contactUri != null && !this.contactUri.equals("")) {
-      output.writeString(3, this.contactUri);
-    }
-    if (this.nameOrNumber != null && !this.nameOrNumber.equals("")) {
-      output.writeString(4, this.nameOrNumber);
-    }
-    if (this.number != null && !this.number.equals("")) {
-      output.writeString(6, this.number);
-    }
-    if (this.displayNumber != null && !this.displayNumber.equals("")) {
-      output.writeString(7, this.displayNumber);
-    }
-    if (this.numberLabel != null && !this.numberLabel.equals("")) {
-      output.writeString(8, this.numberLabel);
-    }
-    if (this.contactType != 0) {
-      output.writeInt32(9, this.contactType);
-    }
-    super.writeTo(output);
-  }
-
-  @Override
-  protected int computeSerializedSize() {
-    int size = super.computeSerializedSize();
-    if (this.photoId != 0L) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeFixed64Size(1, this.photoId);
-    }
-    if (this.photoUri != null && !this.photoUri.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(2, this.photoUri);
-    }
-    if (this.contactUri != null && !this.contactUri.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(3, this.contactUri);
-    }
-    if (this.nameOrNumber != null && !this.nameOrNumber.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              4, this.nameOrNumber);
-    }
-    if (this.number != null && !this.number.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(6, this.number);
-    }
-    if (this.displayNumber != null && !this.displayNumber.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              7, this.displayNumber);
-    }
-    if (this.numberLabel != null && !this.numberLabel.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(8, this.numberLabel);
-    }
-    if (this.contactType != 0) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt32Size(9, this.contactType);
-    }
-    return size;
-  }
-
-  @Override
-  public CallComposerContact mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-        case 9:
-          {
-            this.photoId = input.readFixed64();
-            break;
-          }
-        case 18:
-          {
-            this.photoUri = input.readString();
-            break;
-          }
-        case 26:
-          {
-            this.contactUri = input.readString();
-            break;
-          }
-        case 34:
-          {
-            this.nameOrNumber = input.readString();
-            break;
-          }
-        case 50:
-          {
-            this.number = input.readString();
-            break;
-          }
-        case 58:
-          {
-            this.displayNumber = input.readString();
-            break;
-          }
-        case 66:
-          {
-            this.numberLabel = input.readString();
-            break;
-          }
-        case 72:
-          {
-            this.contactType = input.readInt32();
-            break;
-          }
-      }
-    }
-  }
-
-  public static CallComposerContact parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new CallComposerContact(), data);
-  }
-
-  public static CallComposerContact parseFrom(
-      com.google.protobuf.nano.CodedInputByteBufferNano input) throws java.io.IOException {
-    return new CallComposerContact().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/proto/call_composer_contact.proto b/java/com/android/dialer/callcomposer/proto/call_composer_contact.proto
new file mode 100644
index 0000000..99766aa
--- /dev/null
+++ b/java/com/android/dialer/callcomposer/proto/call_composer_contact.proto
@@ -0,0 +1,18 @@
+syntax = "proto2";
+
+option java_package = "com.android.dialer.callcomposer";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+package com.android.dialer.callcomposer;
+
+message CallComposerContact {
+  optional fixed64 photo_id = 1;
+  optional string photo_uri = 2;
+  optional string contact_uri = 3;
+  optional string name_or_number = 4;
+  optional string number = 6;
+  optional string display_number = 7;
+  optional string number_label = 8;
+  optional int32 contact_type = 9;
+}
diff --git a/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..c357d50
--- /dev/null
+++ b/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="urgent" msgid="5271653973625093934">"Hitno je! Javi se!"</string>
+    <string name="want_to_chat" msgid="847333669248949914">"Želiš da ćaskaš?"</string>
+    <string name="quick_question" msgid="3501160802390214092">"Kratko pitanje…"</string>
+    <string name="message_composer_custom_message_hint" msgid="2061100708804604835">"Napišite prilagođenu poruku"</string>
+    <string name="send_and_call" msgid="3749091015058610762">"Pošalji i pozovi"</string>
+    <string name="share_and_call" msgid="8934144481838868674">"Deli i pozovi"</string>
+    <string name="gallery_item_description" msgid="7600601724204579471">"slika, <xliff:g id="DATE">%1$tB %1$te %1$tY %1$tl %1$tM %1$tp</xliff:g>"</string>
+    <string name="gallery_item_description_no_date" msgid="2059198895441426838">"slika"</string>
+    <string name="camera_switch_to_still_mode" msgid="1881982437979592567">"Slikajte"</string>
+    <string name="camera_media_failure" msgid="8979549551450965882">"Učitavanje slike sa kamere nije uspelo"</string>
+    <string name="allow" msgid="8637148297403066623">"Dozvoli"</string>
+    <string name="camera_permission_text" msgid="7863231776480341614">"Odobrite pristup Kameri da biste snimili sliku"</string>
+    <string name="gallery_permission_text" msgid="4102566850658919346">"Odobrite pristup Medijima da biste delili sliku"</string>
+</resources>
diff --git a/java/com/android/dialer/callcomposer/util/BitmapResizer.java b/java/com/android/dialer/callcomposer/util/BitmapResizer.java
new file mode 100644
index 0000000..658462d
--- /dev/null
+++ b/java/com/android/dialer/callcomposer/util/BitmapResizer.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.callcomposer.util;
+
+import android.graphics.Bitmap;
+import android.support.annotation.VisibleForTesting;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+
+/** Utility class for resizing images before sending them as enriched call attachments. */
+public final class BitmapResizer {
+  @VisibleForTesting static final int MAX_OUTPUT_RESOLUTION = 640;
+
+  /**
+   * Returns a bitmap that is a resized version of the parameter image. The image will only be
+   * resized down and sized to be appropriate for an enriched call.
+   */
+  public static Bitmap resizeForEnrichedCalling(Bitmap image) {
+    Assert.isWorkerThread();
+
+    int width = image.getWidth();
+    int height = image.getHeight();
+
+    LogUtil.i(
+        "BitmapResizer.resizeForEnrichedCalling", "starting height: %d, width: %d", height, width);
+
+    if (width <= MAX_OUTPUT_RESOLUTION && height <= MAX_OUTPUT_RESOLUTION) {
+      LogUtil.i("BitmapResizer.resizeForEnrichedCalling", "no resizing needed");
+      return image;
+    }
+
+    if (width > height) {
+      // landscape
+      float ratio = width / (float) MAX_OUTPUT_RESOLUTION;
+      width = MAX_OUTPUT_RESOLUTION;
+      height = (int) (height / ratio);
+    } else if (height > width) {
+      // portrait
+      float ratio = height / (float) MAX_OUTPUT_RESOLUTION;
+      height = MAX_OUTPUT_RESOLUTION;
+      width = (int) (width / ratio);
+    } else {
+      // square
+      height = MAX_OUTPUT_RESOLUTION;
+      width = MAX_OUTPUT_RESOLUTION;
+    }
+
+    LogUtil.i(
+        "BitmapResizer.resizeForEnrichedCalling", "ending height: %d, width: %d", height, width);
+
+    return Bitmap.createScaledBitmap(image, width, height, true);
+  }
+}
diff --git a/java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java b/java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java
deleted file mode 100644
index 81511d2..0000000
--- a/java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.dialer.callcomposer.util;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.CompressFormat;
-import android.graphics.BitmapFactory;
-import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.FallibleAsyncTask;
-import com.android.dialer.util.DialerUtils;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-
-/** Task for copying and resizing images to be shared with RCS process. */
-@TargetApi(VERSION_CODES.M)
-public class CopyAndResizeImageTask extends FallibleAsyncTask<Void, Void, File> {
-  public static final int MAX_OUTPUT_RESOLUTION = 640;
-  private static final String MIME_TYPE = "image/jpeg";
-
-  private final Context context;
-  private final Uri uri;
-  private final Callback callback;
-
-  public CopyAndResizeImageTask(
-      @NonNull Context context, @NonNull Uri uri, @NonNull Callback callback) {
-    this.context = Assert.isNotNull(context);
-    this.uri = Assert.isNotNull(uri);
-    this.callback = Assert.isNotNull(callback);
-  }
-
-  @Nullable
-  @Override
-  protected File doInBackgroundFallible(Void... params) throws Throwable {
-    Bitmap bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri));
-    bitmap = resizeForEnrichedCalling(bitmap);
-
-    File outputFile = DialerUtils.createShareableFile(context);
-    try (OutputStream outputStream = new FileOutputStream(outputFile)) {
-      // Encode images to jpeg as it is better for camera pictures which we expect to be sending
-      bitmap.compress(CompressFormat.JPEG, 80, outputStream);
-      return outputFile;
-    }
-  }
-
-  @Override
-  protected void onPostExecute(FallibleTaskResult<File> result) {
-    if (result.isFailure()) {
-      callback.onCopyFailed(result.getThrowable());
-    } else {
-      callback.onCopySuccessful(result.getResult(), MIME_TYPE);
-    }
-  }
-
-  public static Bitmap resizeForEnrichedCalling(Bitmap image) {
-    Assert.isWorkerThread();
-
-    int width = image.getWidth();
-    int height = image.getHeight();
-
-    LogUtil.i(
-        "CopyAndResizeImageTask.resizeForEnrichedCalling",
-        "starting height: %d, width: %d",
-        height,
-        width);
-
-    if (width <= MAX_OUTPUT_RESOLUTION && height <= MAX_OUTPUT_RESOLUTION) {
-      LogUtil.i("CopyAndResizeImageTask.resizeForEnrichedCalling", "no resizing needed");
-      return image;
-    }
-
-    if (width > height) {
-      // landscape
-      float ratio = width / (float) MAX_OUTPUT_RESOLUTION;
-      width = MAX_OUTPUT_RESOLUTION;
-      height = (int) (height / ratio);
-    } else if (height > width) {
-      // portrait
-      float ratio = height / (float) MAX_OUTPUT_RESOLUTION;
-      height = MAX_OUTPUT_RESOLUTION;
-      width = (int) (width / ratio);
-    } else {
-      // square
-      height = MAX_OUTPUT_RESOLUTION;
-      width = MAX_OUTPUT_RESOLUTION;
-    }
-
-    LogUtil.i(
-        "CopyAndResizeImageTask.resizeForEnrichedCalling",
-        "ending height: %d, width: %d",
-        height,
-        width);
-
-    return Bitmap.createScaledBitmap(image, width, height, true);
-  }
-
-  /** Callback for callers to know when the task has finished */
-  public interface Callback {
-    void onCopySuccessful(File file, String mimeType);
-
-    void onCopyFailed(Throwable throwable);
-  }
-}
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java
index 757c6ee..41d1765 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java
@@ -29,14 +29,14 @@
 import android.support.v7.widget.Toolbar;
 import android.support.v7.widget.Toolbar.OnMenuItemClickListener;
 import android.view.MenuItem;
-import com.android.dialer.callcomposer.nano.CallComposerContact;
-import com.android.dialer.calldetails.nano.CallDetailsEntries;
-import com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry;
+import com.android.dialer.callcomposer.CallComposerContact;
+import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
-import com.android.dialer.protos.ProtoParsers;
+import com.google.protobuf.InvalidProtocolBufferException;
+import java.util.List;
 
 /** Displays the details of a specific call log entry. */
 public class CallDetailsActivity extends AppCompatActivity implements OnMenuItemClickListener {
@@ -45,7 +45,7 @@
   private static final String EXTRA_CONTACT = "contact";
   private static final String TASK_DELETE = "task_delete";
 
-  private CallDetailsEntry[] entries;
+  private List<CallDetailsEntry> entries;
 
   public static Intent newInstance(
       Context context, @NonNull CallDetailsEntries details, @NonNull CallComposerContact contact) {
@@ -53,8 +53,8 @@
     Assert.isNotNull(contact);
 
     Intent intent = new Intent(context, CallDetailsActivity.class);
-    ProtoParsers.put(intent, EXTRA_CONTACT, contact);
-    ProtoParsers.put(intent, EXTRA_CALL_DETAILS_ENTRIES, details);
+    intent.putExtra(EXTRA_CONTACT, contact.toByteArray());
+    intent.putExtra(EXTRA_CALL_DETAILS_ENTRIES, details.toByteArray());
     return intent;
   }
 
@@ -77,12 +77,15 @@
 
   private void onHandleIntent(Intent intent) {
     Bundle arguments = intent.getExtras();
-    CallComposerContact contact =
-        ProtoParsers.getFromInstanceState(arguments, EXTRA_CONTACT, new CallComposerContact());
-    entries =
-        ProtoParsers.getFromInstanceState(
-                arguments, EXTRA_CALL_DETAILS_ENTRIES, new CallDetailsEntries())
-            .entries;
+    CallComposerContact contact = CallComposerContact.getDefaultInstance();
+    try {
+      contact = CallComposerContact.parseFrom(arguments.getByteArray(EXTRA_CONTACT));
+      entries =
+          CallDetailsEntries.parseFrom(arguments.getByteArray(EXTRA_CALL_DETAILS_ENTRIES))
+              .getEntriesList();
+    } catch (InvalidProtocolBufferException e) {
+      throw Assert.createIllegalStateFailException(e.toString());
+    }
     RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
     recyclerView.setLayoutManager(new LinearLayoutManager(this));
     recyclerView.setAdapter(new CallDetailsAdapter(this, contact, entries));
@@ -110,7 +113,7 @@
         if (callIds.length() != 0) {
           callIds.append(",");
         }
-        callIds.append(entry.callId);
+        callIds.append(entry.getCallId());
       }
       this.callIds = callIds.toString();
     }
diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
index 7471c9c..7250779 100644
--- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java
+++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
@@ -17,14 +17,16 @@
 package com.android.dialer.calldetails;
 
 import android.content.Context;
+import android.support.annotation.NonNull;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.LayoutInflater;
 import android.view.ViewGroup;
-import com.android.dialer.callcomposer.nano.CallComposerContact;
-import com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry;
+import com.android.dialer.callcomposer.CallComposerContact;
+import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.calllogutils.CallTypeHelper;
 import com.android.dialer.common.Assert;
+import java.util.List;
 
 /** Adapter for RecyclerView in {@link CallDetailsActivity}. */
 public class CallDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@@ -34,13 +36,15 @@
   private static final int FOOTER_VIEW_TYPE = 3;
 
   private final CallComposerContact contact;
-  private final CallDetailsEntry[] callDetailsEntries;
+  private final List<CallDetailsEntry> callDetailsEntries;
   private final CallTypeHelper callTypeHelper;
 
   public CallDetailsAdapter(
-      Context context, CallComposerContact contact, CallDetailsEntry[] callDetailsEntries) {
+      Context context,
+      @NonNull CallComposerContact contact,
+      @NonNull List<CallDetailsEntry> callDetailsEntries) {
     this.contact = Assert.isNotNull(contact);
-    this.callDetailsEntries = Assert.isNotNull(callDetailsEntries);
+    this.callDetailsEntries = callDetailsEntries;
     callTypeHelper = new CallTypeHelper(context.getResources());
   }
 
@@ -68,15 +72,15 @@
     if (position == 0) { // Header
       ((CallDetailsHeaderViewHolder) holder).updateContactInfo(contact);
     } else if (position == getItemCount() - 1) {
-      ((CallDetailsFooterViewHolder) holder).setPhoneNumber(contact.number);
+      ((CallDetailsFooterViewHolder) holder).setPhoneNumber(contact.getNumber());
     } else {
       CallDetailsEntryViewHolder viewHolder = (CallDetailsEntryViewHolder) holder;
-      CallDetailsEntry entry = callDetailsEntries[position - 1];
+      CallDetailsEntry entry = callDetailsEntries.get(position - 1);
       viewHolder.setCallDetails(
-          contact.number,
+          contact.getNumber(),
           entry,
           callTypeHelper,
-          entry.historyResults.length > 0 && position != getItemCount() - 2);
+          !entry.getHistoryResultsList().isEmpty() && position != getItemCount() - 2);
     }
   }
 
@@ -93,6 +97,6 @@
 
   @Override
   public int getItemCount() {
-    return callDetailsEntries.length + 2; // Header + footer
+    return callDetailsEntries.size() + 2; // Header + footer
   }
 }
diff --git a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
index a8958d9..156fa42 100644
--- a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
@@ -27,14 +27,14 @@
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry;
+import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.calllogutils.CallEntryFormatter;
 import com.android.dialer.calllogutils.CallTypeHelper;
 import com.android.dialer.calllogutils.CallTypeIconsView;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.AppCompatConstants;
-import com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult;
-import com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type;
+import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
+import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult.Type;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.util.CallUtil;
 import com.android.dialer.util.DialerUtils;
@@ -87,40 +87,46 @@
       CallDetailsEntry entry,
       CallTypeHelper callTypeHelper,
       boolean showMultimediaDivider) {
-    int callType = entry.callType;
+    int callType = entry.getCallType();
     boolean isVideoCall =
-        (entry.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO
+        (entry.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO
             && CallUtil.isVideoEnabled(context);
     boolean isPulledCall =
-        (entry.features & Calls.FEATURES_PULLED_EXTERNALLY) == Calls.FEATURES_PULLED_EXTERNALLY;
+        (entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY)
+            == Calls.FEATURES_PULLED_EXTERNALLY;
 
     callTime.setTextColor(getColorForCallType(context, callType));
     callTypeIcon.clear();
     callTypeIcon.add(callType);
-    callTypeIcon.setShowVideo((entry.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO);
-    callTypeIcon.setShowHd(MotorolaUtils.shouldShowHdIconInCallLog(context, entry.features));
-    callTypeIcon.setShowWifi(MotorolaUtils.shouldShowWifiIconInCallLog(context, entry.features));
+    callTypeIcon.setShowVideo((entry.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO);
+    callTypeIcon.setShowHd(MotorolaUtils.shouldShowHdIconInCallLog(context, entry.getFeatures()));
+    callTypeIcon.setShowWifi(
+        MotorolaUtils.shouldShowWifiIconInCallLog(context, entry.getFeatures()));
 
     callTypeText.setText(callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall));
-    callTime.setText(CallEntryFormatter.formatDate(context, entry.date));
+    callTime.setText(CallEntryFormatter.formatDate(context, entry.getDate()));
     if (CallTypeHelper.isMissedCallType(callType)) {
       callDuration.setVisibility(View.GONE);
     } else {
       callDuration.setVisibility(View.VISIBLE);
       callDuration.setText(
-          CallEntryFormatter.formatDurationAndDataUsage(context, entry.duration, entry.dataUsage));
+          CallEntryFormatter.formatDurationAndDataUsage(
+              context, entry.getDuration(), entry.getDataUsage(), false /* a11y */));
+      callDuration.setContentDescription(
+          CallEntryFormatter.formatDurationAndDataUsage(
+              context, entry.getDuration(), entry.getDataUsage(), true /* a11y */));
     }
     setMultimediaDetails(number, entry, showMultimediaDivider);
   }
 
   private void setMultimediaDetails(String number, CallDetailsEntry entry, boolean showDivider) {
     multimediaDivider.setVisibility(showDivider ? View.VISIBLE : View.GONE);
-    if (entry.historyResults == null || entry.historyResults.length <= 0) {
+    if (entry.getHistoryResultsList().isEmpty()) {
       LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "no data, hiding UI");
       multimediaDetailsContainer.setVisibility(View.GONE);
     } else {
 
-      HistoryResult historyResult = entry.historyResults[0];
+      HistoryResult historyResult = entry.getHistoryResults(0);
       multimediaDetailsContainer.setVisibility(View.VISIBLE);
       multimediaDetailsContainer.setOnClickListener(
           (v) -> {
@@ -128,10 +134,10 @@
           });
       multimediaImageContainer.setClipToOutline(true);
 
-      if (!TextUtils.isEmpty(historyResult.imageUri)) {
+      if (!TextUtils.isEmpty(historyResult.getImageUri())) {
         LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "setting image");
         multimediaImageContainer.setVisibility(View.VISIBLE);
-        multimediaImage.setImageURI(Uri.parse(historyResult.imageUri));
+        multimediaImage.setImageURI(Uri.parse(historyResult.getImageUri()));
         multimediaDetails.setText(
             isIncoming(historyResult) ? R.string.received_a_photo : R.string.sent_a_photo);
       } else {
@@ -139,19 +145,20 @@
       }
 
       // Set text after image to overwrite the received/sent a photo text
-      if (!TextUtils.isEmpty(historyResult.text)) {
+      if (!TextUtils.isEmpty(historyResult.getText())) {
         LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "showing text");
         multimediaDetails.setText(
-            context.getString(R.string.message_in_quotes, historyResult.text));
+            context.getString(R.string.message_in_quotes, historyResult.getText()));
       } else {
         LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "no text");
       }
 
-      if (entry.historyResults.length > 1 && !TextUtils.isEmpty(entry.historyResults[1].text)) {
+      if (entry.getHistoryResultsList().size() > 1
+          && !TextUtils.isEmpty(entry.getHistoryResults(1).getText())) {
         LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "showing post call note");
         postCallNote.setVisibility(View.VISIBLE);
         postCallNote.setText(
-            context.getString(R.string.message_in_quotes, entry.historyResults[1].text));
+            context.getString(R.string.message_in_quotes, entry.getHistoryResults(1).getText()));
       } else {
         LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "no post call note");
       }
@@ -159,8 +166,8 @@
   }
 
   private static boolean isIncoming(@NonNull HistoryResult historyResult) {
-    return historyResult.type == Type.INCOMING_POST_CALL
-        || historyResult.type == Type.INCOMING_CALL_COMPOSER;
+    return historyResult.getType() == Type.INCOMING_POST_CALL
+        || historyResult.getType() == Type.INCOMING_CALL_COMPOSER;
   }
 
   private static @ColorInt int getColorForCallType(Context context, int callType) {
diff --git a/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java
index 36662ba..3f89436 100644
--- a/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java
@@ -19,12 +19,13 @@
 import android.content.Context;
 import android.content.Intent;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
 import com.android.contacts.common.ClipboardUtils;
 import com.android.dialer.common.Assert;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.util.CallUtil;
 import com.android.dialer.util.DialerUtils;
 
@@ -32,6 +33,7 @@
 public class CallDetailsFooterViewHolder extends RecyclerView.ViewHolder
     implements OnClickListener {
 
+  private final View container;
   private final View copy;
   private final View edit;
 
@@ -39,6 +41,7 @@
 
   public CallDetailsFooterViewHolder(View view) {
     super(view);
+    container = view.findViewById(R.id.footer_container);
     copy = view.findViewById(R.id.call_detail_action_copy);
     edit = view.findViewById(R.id.call_detail_action_edit_before_call);
 
@@ -48,6 +51,9 @@
 
   public void setPhoneNumber(String number) {
     this.number = number;
+    if (TextUtils.isEmpty(number)) {
+      container.setVisibility(View.GONE);
+    }
   }
 
   @Override
diff --git a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
index 416c521..437c260 100644
--- a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
@@ -25,12 +25,12 @@
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
 import com.android.contacts.common.ContactPhotoManager;
-import com.android.dialer.callcomposer.nano.CallComposerContact;
+import com.android.dialer.callcomposer.CallComposerContact;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.nano.CallInitiationType;
 import com.android.dialer.common.Assert;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.util.DialerUtils;
 
 /** ViewHolder for Header/Contact in {@link CallDetailsActivity}. */
@@ -56,29 +56,37 @@
   }
 
   /** Populates the contact info fields based on the current contact information. */
-  public void updateContactInfo(CallComposerContact contact) {
+  void updateContactInfo(CallComposerContact contact) {
     this.contact = contact;
     ContactPhotoManager.getInstance(context)
-        .loadDialerThumbnail(
+        .loadDialerThumbnailOrPhoto(
             contactPhoto,
-            contact.contactUri == null ? null : Uri.parse(contact.contactUri),
-            contact.photoId,
-            contact.nameOrNumber,
-            contact.contactType);
+            contact.hasContactUri() ? Uri.parse(contact.getContactUri()) : null,
+            contact.getPhotoId(),
+            contact.hasPhotoUri() ? Uri.parse(contact.getPhotoUri()) : null,
+            contact.getNameOrNumber(),
+            contact.getContactType());
 
-    nameView.setText(contact.nameOrNumber);
-    if (!TextUtils.isEmpty(contact.numberLabel) && !TextUtils.isEmpty(contact.displayNumber)) {
+    contactPhoto.setContentDescription(
+        context.getString(R.string.description_contact_photo_details, contact.getNameOrNumber()));
+    nameView.setText(contact.getNameOrNumber());
+    if (!TextUtils.isEmpty(contact.getNumberLabel())
+        && !TextUtils.isEmpty(contact.getDisplayNumber())) {
       numberView.setVisibility(View.VISIBLE);
       String secondaryInfo =
           context.getString(
               com.android.contacts.common.R.string.call_subject_type_and_number,
-              contact.numberLabel,
-              contact.displayNumber);
+              contact.getNumberLabel(),
+              contact.getDisplayNumber());
       numberView.setText(secondaryInfo);
     } else {
       numberView.setVisibility(View.GONE);
       numberView.setText(null);
     }
+
+    if (TextUtils.isEmpty(contact.getNumber())) {
+      callBackButton.setVisibility(View.GONE);
+    }
   }
 
   @Override
@@ -87,7 +95,7 @@
       Logger.get(view.getContext()).logImpression(DialerImpression.Type.CALL_DETAILS_CALL_BACK);
       DialerUtils.startActivityWithErrorToast(
           view.getContext(),
-          new CallIntentBuilder(contact.number, CallInitiationType.Type.CALL_DETAILS).build());
+          new CallIntentBuilder(contact.getNumber(), CallInitiationType.Type.CALL_DETAILS).build());
     } else {
       Assert.fail("View OnClickListener not implemented: " + view);
     }
diff --git a/java/com/android/dialer/calldetails/nano/CallDetailsEntries.java b/java/com/android/dialer/calldetails/nano/CallDetailsEntries.java
deleted file mode 100644
index aee8f36..0000000
--- a/java/com/android/dialer/calldetails/nano/CallDetailsEntries.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.calldetails.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class CallDetailsEntries
-    extends com.google.protobuf.nano.ExtendableMessageNano<CallDetailsEntries> {
-
-  /** This file is autogenerated, but javadoc required. */
-  public static final class CallDetailsEntry
-      extends com.google.protobuf.nano.ExtendableMessageNano<CallDetailsEntry> {
-
-    private static volatile CallDetailsEntry[] _emptyArray;
-    public static CallDetailsEntry[] emptyArray() {
-      // Lazily initializes the empty array
-      if (_emptyArray == null) {
-        synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-          if (_emptyArray == null) {
-            _emptyArray = new CallDetailsEntry[0];
-          }
-        }
-      }
-      return _emptyArray;
-    }
-
-    // optional int64 call_id = 1;
-    public long callId;
-
-    // optional int32 call_type = 2;
-    public int callType;
-
-    // optional int32 features = 3;
-    public int features;
-
-    // optional int64 date = 4;
-    public long date;
-
-    // optional int64 duration = 5;
-    public long duration;
-
-    // optional int64 data_usage = 6;
-    public long dataUsage;
-
-    // repeated .com.android.dialer.enrichedcall.historyquery.proto.
-    // HistoryResult history_results = 7;
-    public com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult[] historyResults;
-
-    // @@protoc_insertion_point(class_scope:com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry)
-
-    public CallDetailsEntry() {
-      clear();
-    }
-
-    public CallDetailsEntry clear() {
-      callId = 0L;
-      callType = 0;
-      features = 0;
-      date = 0L;
-      duration = 0L;
-      dataUsage = 0L;
-      historyResults =
-          com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.emptyArray();
-      unknownFieldData = null;
-      cachedSize = -1;
-      return this;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (o == this) {
-        return true;
-      }
-      if (!(o instanceof CallDetailsEntry)) {
-        return false;
-      }
-      CallDetailsEntry other = (CallDetailsEntry) o;
-      if (this.callId != other.callId) {
-        return false;
-      }
-      if (this.callType != other.callType) {
-        return false;
-      }
-      if (this.features != other.features) {
-        return false;
-      }
-      if (this.date != other.date) {
-        return false;
-      }
-      if (this.duration != other.duration) {
-        return false;
-      }
-      if (this.dataUsage != other.dataUsage) {
-        return false;
-      }
-      if (!com.google.protobuf.nano.InternalNano.equals(
-          this.historyResults, other.historyResults)) {
-        return false;
-      }
-      if (unknownFieldData == null || unknownFieldData.isEmpty()) {
-        return other.unknownFieldData == null || other.unknownFieldData.isEmpty();
-      } else {
-        return unknownFieldData.equals(other.unknownFieldData);
-      }
-    }
-
-    @Override
-    public int hashCode() {
-      int result = 17;
-      result = 31 * result + getClass().getName().hashCode();
-      result = 31 * result + (int) (this.callId ^ (this.callId >>> 32));
-      result = 31 * result + this.callType;
-      result = 31 * result + this.features;
-      result = 31 * result + (int) (this.date ^ (this.date >>> 32));
-      result = 31 * result + (int) (this.duration ^ (this.duration >>> 32));
-      result = 31 * result + (int) (this.dataUsage ^ (this.dataUsage >>> 32));
-      result = 31 * result + com.google.protobuf.nano.InternalNano.hashCode(this.historyResults);
-      result =
-          31 * result
-              + (unknownFieldData == null || unknownFieldData.isEmpty()
-                  ? 0
-                  : unknownFieldData.hashCode());
-      return result;
-    }
-
-    @Override
-    public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output)
-        throws java.io.IOException {
-      if (this.callId != 0L) {
-        output.writeInt64(1, this.callId);
-      }
-      if (this.callType != 0) {
-        output.writeInt32(2, this.callType);
-      }
-      if (this.features != 0) {
-        output.writeInt32(3, this.features);
-      }
-      if (this.date != 0L) {
-        output.writeInt64(4, this.date);
-      }
-      if (this.duration != 0L) {
-        output.writeInt64(5, this.duration);
-      }
-      if (this.dataUsage != 0L) {
-        output.writeInt64(6, this.dataUsage);
-      }
-      if (this.historyResults != null && this.historyResults.length > 0) {
-        for (int i = 0; i < this.historyResults.length; i++) {
-          com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult element =
-              this.historyResults[i];
-          if (element != null) {
-            output.writeMessage(7, element);
-          }
-        }
-      }
-      super.writeTo(output);
-    }
-
-    @Override
-    protected int computeSerializedSize() {
-      int size = super.computeSerializedSize();
-      if (this.callId != 0L) {
-        size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt64Size(1, this.callId);
-      }
-      if (this.callType != 0) {
-        size +=
-            com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt32Size(2, this.callType);
-      }
-      if (this.features != 0) {
-        size +=
-            com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt32Size(3, this.features);
-      }
-      if (this.date != 0L) {
-        size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt64Size(4, this.date);
-      }
-      if (this.duration != 0L) {
-        size +=
-            com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt64Size(5, this.duration);
-      }
-      if (this.dataUsage != 0L) {
-        size +=
-            com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt64Size(6, this.dataUsage);
-      }
-      if (this.historyResults != null && this.historyResults.length > 0) {
-        for (int i = 0; i < this.historyResults.length; i++) {
-          com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult element =
-              this.historyResults[i];
-          if (element != null) {
-            size +=
-                com.google.protobuf.nano.CodedOutputByteBufferNano.computeMessageSize(7, element);
-          }
-        }
-      }
-      return size;
-    }
-
-    @Override
-    public CallDetailsEntry mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-        throws java.io.IOException {
-      while (true) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            return this;
-          default:
-            {
-              if (!super.storeUnknownField(input, tag)) {
-                return this;
-              }
-              break;
-            }
-          case 8:
-            {
-              this.callId = input.readInt64();
-              break;
-            }
-          case 16:
-            {
-              this.callType = input.readInt32();
-              break;
-            }
-          case 24:
-            {
-              this.features = input.readInt32();
-              break;
-            }
-          case 32:
-            {
-              this.date = input.readInt64();
-              break;
-            }
-          case 40:
-            {
-              this.duration = input.readInt64();
-              break;
-            }
-          case 48:
-            {
-              this.dataUsage = input.readInt64();
-              break;
-            }
-          case 58:
-            {
-              int arrayLength =
-                  com.google.protobuf.nano.WireFormatNano.getRepeatedFieldArrayLength(input, 58);
-              int i = this.historyResults == null ? 0 : this.historyResults.length;
-              com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult[] newArray =
-                  new com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult
-                      [i + arrayLength];
-              if (i != 0) {
-                java.lang.System.arraycopy(this.historyResults, 0, newArray, 0, i);
-              }
-              for (; i < newArray.length - 1; i++) {
-                newArray[i] =
-                    new com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult();
-                input.readMessage(newArray[i]);
-                input.readTag();
-              }
-              // Last one without readTag.
-              newArray[i] =
-                  new com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult();
-              input.readMessage(newArray[i]);
-              this.historyResults = newArray;
-              break;
-            }
-        }
-      }
-    }
-
-    public static CallDetailsEntry parseFrom(byte[] data)
-        throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-      return com.google.protobuf.nano.MessageNano.mergeFrom(new CallDetailsEntry(), data);
-    }
-
-    public static CallDetailsEntry parseFrom(
-        com.google.protobuf.nano.CodedInputByteBufferNano input) throws java.io.IOException {
-      return new CallDetailsEntry().mergeFrom(input);
-    }
-  }
-
-  private static volatile CallDetailsEntries[] _emptyArray;
-  public static CallDetailsEntries[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new CallDetailsEntries[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // repeated .com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry entries = 1;
-  public com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry[] entries;
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.calldetails.CallDetailsEntries)
-
-  public CallDetailsEntries() {
-    clear();
-  }
-
-  public CallDetailsEntries clear() {
-    entries = com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry.emptyArray();
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (o == this) {
-      return true;
-    }
-    if (!(o instanceof CallDetailsEntries)) {
-      return false;
-    }
-    CallDetailsEntries other = (CallDetailsEntries) o;
-    if (!com.google.protobuf.nano.InternalNano.equals(this.entries, other.entries)) {
-      return false;
-    }
-    if (unknownFieldData == null || unknownFieldData.isEmpty()) {
-      return other.unknownFieldData == null || other.unknownFieldData.isEmpty();
-    } else {
-      return unknownFieldData.equals(other.unknownFieldData);
-    }
-  }
-
-  @Override
-  public int hashCode() {
-    int result = 17;
-    result = 31 * result + getClass().getName().hashCode();
-    result = 31 * result + com.google.protobuf.nano.InternalNano.hashCode(this.entries);
-    result =
-        31 * result
-            + (unknownFieldData == null || unknownFieldData.isEmpty()
-                ? 0
-                : unknownFieldData.hashCode());
-    return result;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output)
-      throws java.io.IOException {
-    if (this.entries != null && this.entries.length > 0) {
-      for (int i = 0; i < this.entries.length; i++) {
-        com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry element =
-            this.entries[i];
-        if (element != null) {
-          output.writeMessage(1, element);
-        }
-      }
-    }
-    super.writeTo(output);
-  }
-
-  @Override
-  protected int computeSerializedSize() {
-    int size = super.computeSerializedSize();
-    if (this.entries != null && this.entries.length > 0) {
-      for (int i = 0; i < this.entries.length; i++) {
-        com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry element =
-            this.entries[i];
-        if (element != null) {
-          size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeMessageSize(1, element);
-        }
-      }
-    }
-    return size;
-  }
-
-  @Override
-  public CallDetailsEntries mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-        case 10:
-          {
-            int arrayLength =
-                com.google.protobuf.nano.WireFormatNano.getRepeatedFieldArrayLength(input, 10);
-            int i = this.entries == null ? 0 : this.entries.length;
-            com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry[] newArray =
-                new com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry
-                    [i + arrayLength];
-            if (i != 0) {
-              java.lang.System.arraycopy(this.entries, 0, newArray, 0, i);
-            }
-            for (; i < newArray.length - 1; i++) {
-              newArray[i] =
-                  new com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry();
-              input.readMessage(newArray[i]);
-              input.readTag();
-            }
-            // Last one without readTag.
-            newArray[i] =
-                new com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry();
-            input.readMessage(newArray[i]);
-            this.entries = newArray;
-            break;
-          }
-      }
-    }
-  }
-
-  public static CallDetailsEntries parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new CallDetailsEntries(), data);
-  }
-
-  public static CallDetailsEntries parseFrom(
-      com.google.protobuf.nano.CodedInputByteBufferNano input) throws java.io.IOException {
-    return new CallDetailsEntries().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/calldetails/proto/call_details_entries.proto b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
new file mode 100644
index 0000000..e254b77
--- /dev/null
+++ b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
@@ -0,0 +1,23 @@
+syntax = "proto2";
+
+option java_package = "com.android.dialer.calldetails";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+import "java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto";
+
+package com.android.dialer.calldetails;
+
+message CallDetailsEntries {
+  message CallDetailsEntry {
+    optional int64 call_id = 1;
+    optional int32 call_type = 2;
+    optional int32 features = 3;
+    optional int64 date = 4;
+    optional int64 duration = 5;
+    optional int64 data_usage = 6;
+    repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7;
+  }
+
+  repeated CallDetailsEntry entries = 1;
+}
diff --git a/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml b/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml
index 885cb09..ccfa4e7 100644
--- a/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml
+++ b/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml
@@ -14,6 +14,7 @@
      limitations under the License.
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:id="@+id/footer_container"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical">
diff --git a/java/com/android/dialer/calldetails/res/layout/contact_container.xml b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
index bcda55e..daf465b 100644
--- a/java/com/android/dialer/calldetails/res/layout/contact_container.xml
+++ b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
@@ -20,14 +20,19 @@
     android:layout_height="wrap_content"
     android:layout_marginTop="@dimen/call_details_top_margin"
     android:gravity="center_vertical"
-    android:padding="@dimen/contact_container_padding">
+    android:paddingTop="@dimen/contact_container_padding_top_start"
+    android:paddingStart="@dimen/contact_container_padding_top_start"
+    android:paddingBottom="@dimen/contact_container_padding_bottom_end"
+    android:paddingEnd="@dimen/contact_container_padding_bottom_end">
 
   <QuickContactBadge
       android:id="@+id/quick_contact_photo"
       android:layout_width="@dimen/call_details_contact_photo_size"
       android:layout_height="@dimen/call_details_contact_photo_size"
       android:layout_marginTop="2dp"
-      android:focusable="true"/>
+      android:padding="@dimen/call_details_contact_photo_padding"
+      android:focusable="true"
+      android:contentDescription="@string/description_quick_contact_for"/>
 
   <LinearLayout
       android:orientation="vertical"
@@ -60,6 +65,7 @@
       android:layout_centerVertical="true"
       android:background="?android:attr/selectableItemBackgroundBorderless"
       android:contentDescription="@string/description_call_log_call_action"
+      android:scaleType="center"
       android:src="@drawable/quantum_ic_call_white_24"
       android:tint="@color/secondary_text_color"/>
 </RelativeLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/calldetails/res/values-af/strings.xml b/java/com/android/dialer/calldetails/res/values-af/strings.xml
index 674ea2d..86bef4b 100644
--- a/java/com/android/dialer/calldetails/res/values-af/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-af/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Het \'n foto gestuur"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Het \'n foto ontvang"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontakbesonderhede vir <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-am/strings.xml b/java/com/android/dialer/calldetails/res/values-am/strings.xml
index e9c597b..2a23945 100644
--- a/java/com/android/dialer/calldetails/res/values-am/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-am/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"አንድ ፎቶ ተልኳል"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"አንድ ፎቶ ደርሷል"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"የ<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> የእውቂያ ዝርዝሮች"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ar/strings.xml b/java/com/android/dialer/calldetails/res/values-ar/strings.xml
index 12dfed8..6b0d8a7 100644
--- a/java/com/android/dialer/calldetails/res/values-ar/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ar/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"تم إرسال صورة"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"تم تلقي صورة"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"تفاصيل الاتصال بالمستخدم <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-az/strings.xml b/java/com/android/dialer/calldetails/res/values-az/strings.xml
index 282e7c9..479837c 100644
--- a/java/com/android/dialer/calldetails/res/values-az/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-az/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Foto göndərildi"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Foto alındı"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> üçün kontakt detalları"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..01141ff
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_details" msgid="5063658079729839605">"Detalji poziva"</string>
+    <string name="delete" msgid="2141020674108406737">"Izbriši"</string>
+    <string name="call_details_copy_number" msgid="4265479408878990796">"Kopiraj broj"</string>
+    <string name="call_details_edit_number" msgid="8718476514903513624">"Izmenite broj pre poziva"</string>
+    <string name="description_call_log_call_action" msgid="1421313064764221900">"Pozovi"</string>
+    <string name="sent_a_photo" msgid="3978670717462979502">"Slika je poslata"</string>
+    <string name="received_a_photo" msgid="3528953225576480505">"Slika je primljena"</string>
+    <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontakt informacije za <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-be/strings.xml b/java/com/android/dialer/calldetails/res/values-be/strings.xml
index 27f07a0..683f29b 100644
--- a/java/com/android/dialer/calldetails/res/values-be/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-be/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Адпраўлена фота"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Атрымана фота"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Кантактныя даныя абанента <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-bg/strings.xml b/java/com/android/dialer/calldetails/res/values-bg/strings.xml
index b4378eb..9cd70e2 100644
--- a/java/com/android/dialer/calldetails/res/values-bg/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bg/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Изпратена бе снимка"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Получена бе снимка"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Подробности за контакта за <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-bn/strings.xml b/java/com/android/dialer/calldetails/res/values-bn/strings.xml
index c96159f..148f61a 100644
--- a/java/com/android/dialer/calldetails/res/values-bn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bn/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"একটি ফটো পাঠিয়েছেন"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"একটি ফটো পেয়েছেন"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> পরিচিতির বিশদ বিবরণ"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-bs/strings.xml b/java/com/android/dialer/calldetails/res/values-bs/strings.xml
index 01b5f9b..6f164b2 100644
--- a/java/com/android/dialer/calldetails/res/values-bs/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bs/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Fotografija poslana"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Fotografija primljena"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detalji o kontaktu <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ca/strings.xml b/java/com/android/dialer/calldetails/res/values-ca/strings.xml
index 0974303..0e33e60 100644
--- a/java/com/android/dialer/calldetails/res/values-ca/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ca/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"S\'ha enviat una foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"S\'ha rebut una foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"<xliff:g id="MESSAGE">%1$s</xliff:g>"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Dades de contacte de: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-cs/strings.xml b/java/com/android/dialer/calldetails/res/values-cs/strings.xml
index 6eebd14..9747ee1 100644
--- a/java/com/android/dialer/calldetails/res/values-cs/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-cs/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Byla poslána fotka"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Byla přijata fotka"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Podrobnosti kontaktu <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-da/strings.xml b/java/com/android/dialer/calldetails/res/values-da/strings.xml
index b7ebdb0..41bc252 100644
--- a/java/com/android/dialer/calldetails/res/values-da/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-da/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Der blev sendt et billede"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Der blev modtaget et billede"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontaktoplysninger for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-de/strings.xml b/java/com/android/dialer/calldetails/res/values-de/strings.xml
index 14d16ae..014666b 100644
--- a/java/com/android/dialer/calldetails/res/values-de/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-de/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Hat ein Foto gesendet"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Hat ein Foto empfangen"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontaktdetails für <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-el/strings.xml b/java/com/android/dialer/calldetails/res/values-el/strings.xml
index e12b09f..6b51fc7 100644
--- a/java/com/android/dialer/calldetails/res/values-el/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-el/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Έγινε αποστολή φωτογραφίας"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Έγινε λήψη φωτογραφίας"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Στοιχεία επικοινωνίας επαφής <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
index 0f69f1e..2d5210e 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Sent a photo"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Received a photo"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
index 0f69f1e..2d5210e 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Sent a photo"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Received a photo"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
index 0f69f1e..2d5210e 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Sent a photo"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Received a photo"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml b/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
index 9c4649c..d9db282 100644
--- a/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Enviaste una foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Recibiste una foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Datos de contacto de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-es/strings.xml b/java/com/android/dialer/calldetails/res/values-es/strings.xml
index 33889f2..e72e898 100644
--- a/java/com/android/dialer/calldetails/res/values-es/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-es/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Se ha enviado una foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Se ha recibido una foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Información de contacto de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-et/strings.xml b/java/com/android/dialer/calldetails/res/values-et/strings.xml
index c1c2f6e..496459d 100644
--- a/java/com/android/dialer/calldetails/res/values-et/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-et/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Saatis foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Sai foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontakti <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> üksikasjad"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-eu/strings.xml b/java/com/android/dialer/calldetails/res/values-eu/strings.xml
index 3cd78e0..913082f 100644
--- a/java/com/android/dialer/calldetails/res/values-eu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-eu/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Argazki bat bidali duzu"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Argazki bat jaso duzu"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> kontaktuaren xehetasunak"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-fa/strings.xml b/java/com/android/dialer/calldetails/res/values-fa/strings.xml
index 700c4ff..cad85a2 100644
--- a/java/com/android/dialer/calldetails/res/values-fa/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fa/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"عکسی ارسال کرد"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"عکسی دریافت کرد"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"جزئیات تماس <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-fi/strings.xml b/java/com/android/dialer/calldetails/res/values-fi/strings.xml
index 5443236..c16110d 100644
--- a/java/com/android/dialer/calldetails/res/values-fi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fi/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Lähetetty kuva"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Vastaanotettu kuva"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Yhteystiedot: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml b/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
index 6433de7..676861f 100644
--- a/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Photo envoyée"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Photo reçue"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"« <xliff:g id="MESSAGE">%1$s</xliff:g> »"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Coordonnées de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-fr/strings.xml b/java/com/android/dialer/calldetails/res/values-fr/strings.xml
index 180b52b..606cb10 100644
--- a/java/com/android/dialer/calldetails/res/values-fr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fr/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Envoi d\'une photo"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Réception d\'une photo"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Coordonnées associées à <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-gl/strings.xml b/java/com/android/dialer/calldetails/res/values-gl/strings.xml
index a3eb9ab..aa5ff14 100644
--- a/java/com/android/dialer/calldetails/res/values-gl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-gl/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Enviouse unha foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Recibiuse unha foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detalles de contacto de: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-gu/strings.xml b/java/com/android/dialer/calldetails/res/values-gu/strings.xml
index 71ced24..ccb8755 100644
--- a/java/com/android/dialer/calldetails/res/values-gu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-gu/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"એક ફોટો મોકલ્યો"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"એક ફોટો પ્રાપ્ત કર્યો"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> માટે સંપર્ક વિગતો"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-hi/strings.xml b/java/com/android/dialer/calldetails/res/values-hi/strings.xml
index e4596c0..517fbe5 100644
--- a/java/com/android/dialer/calldetails/res/values-hi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hi/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"फ़ोटो भेजी गई"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"फ़ोटो मिली"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> का संपर्क विवरण"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-hr/strings.xml b/java/com/android/dialer/calldetails/res/values-hr/strings.xml
index 84149fc..687a65e 100644
--- a/java/com/android/dialer/calldetails/res/values-hr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hr/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Šalje fotografiju"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Prima fotografiju"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Pojedinosti o kontaktu <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-hu/strings.xml b/java/com/android/dialer/calldetails/res/values-hu/strings.xml
index b6c38e3..66863e8 100644
--- a/java/com/android/dialer/calldetails/res/values-hu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hu/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Küldött egy fotót"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Kapott egy fotót"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> részletes adatai."</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-hy/strings.xml b/java/com/android/dialer/calldetails/res/values-hy/strings.xml
index 8d90cf8..a1e84e9 100644
--- a/java/com/android/dialer/calldetails/res/values-hy/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hy/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Ուղարկվել է լուսանկար"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Ստացվել է լուսանկար"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>-ի կոնտակտային տվյալները"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-in/strings.xml b/java/com/android/dialer/calldetails/res/values-in/strings.xml
index 811cf05..ba58ba0 100644
--- a/java/com/android/dialer/calldetails/res/values-in/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-in/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Mengirim foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Menerima foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detail kontak <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-is/strings.xml b/java/com/android/dialer/calldetails/res/values-is/strings.xml
index 1d92d4c..0770814 100644
--- a/java/com/android/dialer/calldetails/res/values-is/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-is/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Sendi mynd"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Tók á móti mynd"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Tengiliðaupplýsingar um <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-it/strings.xml b/java/com/android/dialer/calldetails/res/values-it/strings.xml
index aef76a4..97af251 100644
--- a/java/com/android/dialer/calldetails/res/values-it/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-it/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Foto inviata"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Foto ricevuta"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Dettagli contatto <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-iw/strings.xml b/java/com/android/dialer/calldetails/res/values-iw/strings.xml
index 934edd1..329eded 100644
--- a/java/com/android/dialer/calldetails/res/values-iw/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-iw/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"נשלחה תמונה"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"התקבלה תמונה"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"פרטי ההתקשרות של <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ja/strings.xml b/java/com/android/dialer/calldetails/res/values-ja/strings.xml
index 4c308e0..7aef345 100644
--- a/java/com/android/dialer/calldetails/res/values-ja/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ja/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"写真を送信しました"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"写真を受信しました"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"「<xliff:g id="MESSAGE">%1$s</xliff:g>」"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>の連絡先の詳細"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ka/strings.xml b/java/com/android/dialer/calldetails/res/values-ka/strings.xml
index b181aa4..1cd7bc2 100644
--- a/java/com/android/dialer/calldetails/res/values-ka/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ka/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ფოტო გაიგზავნა"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"მიღებულია ფოტო"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>-ის საკონტაქტო დეტალები"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-kk/strings.xml b/java/com/android/dialer/calldetails/res/values-kk/strings.xml
index 2608945..1923cf7 100644
--- a/java/com/android/dialer/calldetails/res/values-kk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-kk/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Сурет жіберілді"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Сурет қабылданды"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> контакт деректері"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-km/strings.xml b/java/com/android/dialer/calldetails/res/values-km/strings.xml
index 0455034..e047279 100644
--- a/java/com/android/dialer/calldetails/res/values-km/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-km/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"បានផ្ញើរូបថត"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"បាន​ទទួល​រូបថត"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"ព័ត៌មាន​ទំនាក់​ទំនង​លម្អិត​សម្រាប់ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-kn/strings.xml b/java/com/android/dialer/calldetails/res/values-kn/strings.xml
index 0f9e0f8..66c0d63 100644
--- a/java/com/android/dialer/calldetails/res/values-kn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-kn/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ಫೋಟೋ ಕಳುಹಿಸಲಾಗಿದೆ"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ಫೋಟೋ ಸ್ವೀಕರಿಸಲಾಗಿದೆ"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕ ವಿವರಗಳು"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ko/strings.xml b/java/com/android/dialer/calldetails/res/values-ko/strings.xml
index aec06cb..35c5038 100644
--- a/java/com/android/dialer/calldetails/res/values-ko/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ko/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"사진 전송됨"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"사진 수신됨"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\'<xliff:g id="MESSAGE">%1$s</xliff:g>\'"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>의 연락처 세부정보"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ky/strings.xml b/java/com/android/dialer/calldetails/res/values-ky/strings.xml
index 2f87e24..fe37b33 100644
--- a/java/com/android/dialer/calldetails/res/values-ky/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ky/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Сүрөт жөнөтүлдү"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Сүрөт алынды"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> байланыш маалыматтары"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-lo/strings.xml b/java/com/android/dialer/calldetails/res/values-lo/strings.xml
index 864bbf6..85b636a 100644
--- a/java/com/android/dialer/calldetails/res/values-lo/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lo/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ສົ່ງຮູບພາບ"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ໄດ້ຮັບຮູບພາບແລ້ວ"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"ລາຍລະອຽດ​ການຕິດຕໍ່​ສຳລັບ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-lt/strings.xml b/java/com/android/dialer/calldetails/res/values-lt/strings.xml
index 084eb51..9c8ad7b 100644
--- a/java/com/android/dialer/calldetails/res/values-lt/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lt/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Išsiuntė nuotrauką"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Gavo nuotrauką"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Išsami kontaktinė informacija: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-lv/strings.xml b/java/com/android/dialer/calldetails/res/values-lv/strings.xml
index 53880a6..d878393 100644
--- a/java/com/android/dialer/calldetails/res/values-lv/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lv/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Nosūtīja fotoattēlu"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Saņēma fotoattēlu"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"“<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontaktpersonas informācija: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-mk/strings.xml b/java/com/android/dialer/calldetails/res/values-mk/strings.xml
index 394ab27..9388ae0 100644
--- a/java/com/android/dialer/calldetails/res/values-mk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mk/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Испрати фотографија"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Прими фотографија"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Детали за контакт за <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ml/strings.xml b/java/com/android/dialer/calldetails/res/values-ml/strings.xml
index 7767ef4..d296911 100644
--- a/java/com/android/dialer/calldetails/res/values-ml/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ml/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ഒരു ഫോട്ടോ അയച്ചു"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ഒരു ഫോട്ടോ ലഭിച്ചു"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> എന്നതിന്റെ കോൺ‌ടാക്റ്റ് വിശദാംശങ്ങൾ"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-mn/strings.xml b/java/com/android/dialer/calldetails/res/values-mn/strings.xml
index 1a02f1c..cb264e0 100644
--- a/java/com/android/dialer/calldetails/res/values-mn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mn/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Зураг илгээсэн"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Зураг хүлээн авсан"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>-н харилцагчийн мэдээлэл"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-mr/strings.xml b/java/com/android/dialer/calldetails/res/values-mr/strings.xml
index d76dec4..5c31e36 100644
--- a/java/com/android/dialer/calldetails/res/values-mr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mr/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"एक फोटो पाठविला"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"एक फोटो प्राप्त झाला"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> साठी संपर्क तपशील"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ms/strings.xml b/java/com/android/dialer/calldetails/res/values-ms/strings.xml
index d9dbfc6..da17d6e 100644
--- a/java/com/android/dialer/calldetails/res/values-ms/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ms/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Menghantar foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Foto diterima"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Butiran hubungan untuk <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-my/strings.xml b/java/com/android/dialer/calldetails/res/values-my/strings.xml
index dc3cc5a..75508d8 100644
--- a/java/com/android/dialer/calldetails/res/values-my/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-my/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ဓာတ်ပုံ ပို့လိုက်သည်"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ဓာတ်ပုံ လက်ခံရရှိသည်"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ၏ အဆက်အသွယ် အသေးစိတ်"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-nb/strings.xml b/java/com/android/dialer/calldetails/res/values-nb/strings.xml
index a391f15..022025f 100644
--- a/java/com/android/dialer/calldetails/res/values-nb/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-nb/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Et bilde ble sendt"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Et bilde ble mottatt"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontaktinformasjon for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ne/strings.xml b/java/com/android/dialer/calldetails/res/values-ne/strings.xml
index 7ceb866..8fe355b 100644
--- a/java/com/android/dialer/calldetails/res/values-ne/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ne/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"एउटा तस्बिर पठाइयो"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"एउटा तस्बिर प्राप्त भयो"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> का सम्पर्क विवरणहरू"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-nl/strings.xml b/java/com/android/dialer/calldetails/res/values-nl/strings.xml
index 4498753..71657b8 100644
--- a/java/com/android/dialer/calldetails/res/values-nl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-nl/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Foto verzonden"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Foto ontvangen"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\'<xliff:g id="MESSAGE">%1$s</xliff:g>\'"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Contactgegevens voor <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-no/strings.xml b/java/com/android/dialer/calldetails/res/values-no/strings.xml
index a391f15..022025f 100644
--- a/java/com/android/dialer/calldetails/res/values-no/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-no/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Et bilde ble sendt"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Et bilde ble mottatt"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"«<xliff:g id="MESSAGE">%1$s</xliff:g>»"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontaktinformasjon for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pa/strings.xml b/java/com/android/dialer/calldetails/res/values-pa/strings.xml
index 9bf3ed0..d4f1759 100644
--- a/java/com/android/dialer/calldetails/res/values-pa/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pa/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ਇੱਕ ਫ਼ੋਟੋ ਭੇਜੀ ਗਈ"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ਇੱਕ ਫ਼ੋਟੋ ਪ੍ਰਾਪਤ ਹੋਈ"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ਲਈ ਸੰਪਰਕ ਵੇਰਵੇ"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pl/strings.xml b/java/com/android/dialer/calldetails/res/values-pl/strings.xml
index 55cc159..9644600 100644
--- a/java/com/android/dialer/calldetails/res/values-pl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pl/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Wysłano zdjęcie"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Odebrano zdjęcie"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Informacje kontaktowe: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
index 6dd9750..467973d 100644
--- a/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Enviou uma foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Recebeu uma foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detalhes de contato para <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
index 0172634..cfbbc02 100644
--- a/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Enviou uma foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Recebeu uma foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detalhes de contacto de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pt/strings.xml b/java/com/android/dialer/calldetails/res/values-pt/strings.xml
index 6dd9750..467973d 100644
--- a/java/com/android/dialer/calldetails/res/values-pt/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Enviou uma foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Recebeu uma foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detalhes de contato para <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ro/strings.xml b/java/com/android/dialer/calldetails/res/values-ro/strings.xml
index 7d0eec9..e9281ae 100644
--- a/java/com/android/dialer/calldetails/res/values-ro/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ro/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"A fost trimisă o fotografie."</string>
     <string name="received_a_photo" msgid="3528953225576480505">"A fost primită o fotografie."</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detalii de contact pentru <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ru/strings.xml b/java/com/android/dialer/calldetails/res/values-ru/strings.xml
index 7ce2a9b..bf981e2 100644
--- a/java/com/android/dialer/calldetails/res/values-ru/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ru/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Отправлена фотография"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Получена фотография"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Сведения о контакте <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-si/strings.xml b/java/com/android/dialer/calldetails/res/values-si/strings.xml
index a2dfc36..5fdca0d 100644
--- a/java/com/android/dialer/calldetails/res/values-si/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-si/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ඡායාරූපයක් යැවිණි"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ඡායාරූපයක් ලැබිණි"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> සඳහා සම්බන්ධතා විස්තර"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sk/strings.xml b/java/com/android/dialer/calldetails/res/values-sk/strings.xml
index 4c6e68d..db04787 100644
--- a/java/com/android/dialer/calldetails/res/values-sk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sk/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Bola odoslaná fotka"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Bola prijatá fotka"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> – podrobnosti kontaktu"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sl/strings.xml b/java/com/android/dialer/calldetails/res/values-sl/strings.xml
index 7ff4322..98975f4 100644
--- a/java/com/android/dialer/calldetails/res/values-sl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sl/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Poslana fotografija"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Prejeta fotografija"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"»<xliff:g id="MESSAGE">%1$s</xliff:g>«"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Podrobnosti stika za <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sq/strings.xml b/java/com/android/dialer/calldetails/res/values-sq/strings.xml
index cd90c5c..dd9915d 100644
--- a/java/com/android/dialer/calldetails/res/values-sq/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sq/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"U dërgua një fotografi"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"U mor një fotografi"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Detajet e kontaktit për <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sr/strings.xml b/java/com/android/dialer/calldetails/res/values-sr/strings.xml
index cdb6835..7f4005d 100644
--- a/java/com/android/dialer/calldetails/res/values-sr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sr/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Слика је послата"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Слика је примљена"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"„<xliff:g id="MESSAGE">%1$s</xliff:g>“"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Контакт информације за <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sv/strings.xml b/java/com/android/dialer/calldetails/res/values-sv/strings.xml
index b33a468..3967b4f 100644
--- a/java/com/android/dialer/calldetails/res/values-sv/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sv/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Skickade ett foto"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Tog emot ett foto"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"<xliff:g id="MESSAGE">%1$s</xliff:g>"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Kontaktuppgifter för <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sw/strings.xml b/java/com/android/dialer/calldetails/res/values-sw/strings.xml
index 976d1f8..e5df823 100644
--- a/java/com/android/dialer/calldetails/res/values-sw/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sw/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Picha imetumwa"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Picha imepokelewa"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Maelezo ya <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ta/strings.xml b/java/com/android/dialer/calldetails/res/values-ta/strings.xml
index abff58f..840ad87 100644
--- a/java/com/android/dialer/calldetails/res/values-ta/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ta/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"படம் அனுப்பப்பட்டது"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"படம் பெறப்பட்டது"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>க்கான தொடர்பு விவரங்கள்"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-te/strings.xml b/java/com/android/dialer/calldetails/res/values-te/strings.xml
index 9a09800..3054444 100644
--- a/java/com/android/dialer/calldetails/res/values-te/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-te/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ఫోటో పంపబడింది"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ఫోటో స్వీకరించబడింది"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> యొక్క సంప్రదింపు వివరాలు"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-th/strings.xml b/java/com/android/dialer/calldetails/res/values-th/strings.xml
index aacebbb..e22aec7 100644
--- a/java/com/android/dialer/calldetails/res/values-th/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-th/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ส่งรูปภาพแล้ว"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ได้รับรูปภาพแล้ว"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"รายละเอียดรายชื่อติดต่อ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-tl/strings.xml b/java/com/android/dialer/calldetails/res/values-tl/strings.xml
index 74ec6bf..81c148e 100644
--- a/java/com/android/dialer/calldetails/res/values-tl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-tl/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Nagpadala ng larawan"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Nakatanggap ng larawan"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Mga detalye sa pakikipag-ugnayan para kay/sa <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-tr/strings.xml b/java/com/android/dialer/calldetails/res/values-tr/strings.xml
index 35a5ecf..ade4018 100644
--- a/java/com/android/dialer/calldetails/res/values-tr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-tr/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Bir fotoğraf gönderildi"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Bir fotoğraf alındı"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> için kişi ayrıntıları"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-uk/strings.xml b/java/com/android/dialer/calldetails/res/values-uk/strings.xml
index 6ef6fc2..6538d66 100644
--- a/java/com/android/dialer/calldetails/res/values-uk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uk/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Надіслано фотографію"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Отримано фотографію"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Відомості про контакт <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ur/strings.xml b/java/com/android/dialer/calldetails/res/values-ur/strings.xml
index 8188abe..90c3a59 100644
--- a/java/com/android/dialer/calldetails/res/values-ur/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ur/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"ایک تصویر بھیجی"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"ایک تصویر موصول ہوئی"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> کیلئے رابطہ کی تفصیلات"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-uz/strings.xml b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
index 91f2a70..7b443ca 100644
--- a/java/com/android/dialer/calldetails/res/values-uz/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Rasm yuborildi"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Rasm qabul qilindi"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"“<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> kontakt ma’lumotlari"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-vi/strings.xml b/java/com/android/dialer/calldetails/res/values-vi/strings.xml
index 7446e23..7a95021 100644
--- a/java/com/android/dialer/calldetails/res/values-vi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-vi/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Đã gửi một ảnh"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Đã nhận một ảnh"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Chi tiết liên hệ cho <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
index c083136..aad695a 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"发送了一张照片"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"收到了一张照片"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"“<xliff:g id="MESSAGE">%1$s</xliff:g>”"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>的详细联系信息"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
index a7cbe90..eb5b606 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"已傳送相片"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"已收到相片"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"「<xliff:g id="MESSAGE">%1$s</xliff:g>」"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"「<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>」的聯絡人詳細資料"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
index 3f2b382..fd426c0 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"傳送了 1 張相片"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"收到了 1 張相片"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"「<xliff:g id="MESSAGE">%1$s</xliff:g>」"</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"「<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>」的聯絡詳細資料"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values-zu/strings.xml b/java/com/android/dialer/calldetails/res/values-zu/strings.xml
index a4fe447..d41d1f5 100644
--- a/java/com/android/dialer/calldetails/res/values-zu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zu/strings.xml
@@ -25,4 +25,5 @@
     <string name="sent_a_photo" msgid="3978670717462979502">"Uthumele isithombe"</string>
     <string name="received_a_photo" msgid="3528953225576480505">"Uthole isithombe"</string>
     <string name="message_in_quotes" msgid="3270574830115828365">"\"<xliff:g id="MESSAGE">%1$s</xliff:g>\""</string>
+    <string name="description_contact_photo_details" msgid="3035869307063629315">"Imininingwane yokuxhumana ka-<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calldetails/res/values/dimens.xml b/java/com/android/dialer/calldetails/res/values/dimens.xml
index 2ca7ea8..054cd69 100644
--- a/java/com/android/dialer/calldetails/res/values/dimens.xml
+++ b/java/com/android/dialer/calldetails/res/values/dimens.xml
@@ -20,10 +20,12 @@
   <dimen name="call_details_top_margin">6dp</dimen>
 
   <!-- contact container -->
-  <dimen name="contact_container_padding">16dp</dimen>
-  <dimen name="call_details_contact_photo_size">40dp</dimen>
-  <dimen name="photo_text_margin">16dp</dimen>
-  <dimen name="call_back_button_size">24dp</dimen>
+  <dimen name="contact_container_padding_bottom_end">16dp</dimen>
+  <dimen name="contact_container_padding_top_start">12dp</dimen>
+  <dimen name="call_details_contact_photo_size">48dp</dimen>
+  <dimen name="call_details_contact_photo_padding">4dp</dimen>
+  <dimen name="photo_text_margin">12dp</dimen>
+  <dimen name="call_back_button_size">48dp</dimen>
 
   <!-- call entry container -->
   <dimen name="call_entry_icon_size">24dp</dimen>
diff --git a/java/com/android/dialer/calldetails/res/values/strings.xml b/java/com/android/dialer/calldetails/res/values/strings.xml
index 8a7cc4c..4471605 100644
--- a/java/com/android/dialer/calldetails/res/values/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values/strings.xml
@@ -39,4 +39,11 @@
 
   <!-- Messages shown to the user are wrapped in quotes, e.g. the user would see "Some text" -->
   <string name="message_in_quotes">\"<xliff:g id="message">%1$s</xliff:g>\"</string>
+
+  <!-- String describing the button to access the contact details for a name or number.
+
+      Note: AccessibilityServices use this attribute to announce what the view represents.
+            This is especially valuable for views without textual representation like ImageView.
+  -->
+  <string name="description_contact_photo_details">Contact details for <xliff:g id="nameOrNumber">%1$s</xliff:g></string>
 </resources>
diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java
index a2fb564..6066f66 100644
--- a/java/com/android/dialer/callintent/CallIntentBuilder.java
+++ b/java/com/android/dialer/callintent/CallIntentBuilder.java
@@ -26,8 +26,6 @@
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
 import android.text.TextUtils;
-import com.android.dialer.callintent.nano.CallInitiationType;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
 import com.android.dialer.common.Assert;
 import com.android.dialer.util.CallUtil;
 
@@ -43,10 +41,10 @@
     this.uri = Assert.isNotNull(uri);
     this.callSpecificAppData = Assert.isNotNull(callSpecificAppData);
     Assert.checkArgument(
-        callSpecificAppData.callInitiationType != CallInitiationType.Type.UNKNOWN_INITIATION);
+        callSpecificAppData.getCallInitiationType() != CallInitiationType.Type.UNKNOWN_INITIATION);
   }
 
-  public CallIntentBuilder(@NonNull Uri uri, int callInitiationType) {
+  public CallIntentBuilder(@NonNull Uri uri, CallInitiationType.Type callInitiationType) {
     this(uri, createCallSpecificAppData(callInitiationType));
   }
 
@@ -55,7 +53,7 @@
     this(CallUtil.getCallUri(Assert.isNotNull(number)), callSpecificAppData);
   }
 
-  public CallIntentBuilder(@NonNull String number, int callInitiationType) {
+  public CallIntentBuilder(@NonNull String number, CallInitiationType.Type callInitiationType) {
     this(CallUtil.getCallUri(Assert.isNotNull(number)), callInitiationType);
   }
 
@@ -100,9 +98,10 @@
     return intent;
   }
 
-  private static @NonNull CallSpecificAppData createCallSpecificAppData(int callInitiationType) {
-    CallSpecificAppData callSpecificAppData = new CallSpecificAppData();
-    callSpecificAppData.callInitiationType = callInitiationType;
+  private static @NonNull CallSpecificAppData createCallSpecificAppData(
+      CallInitiationType.Type callInitiationType) {
+    CallSpecificAppData callSpecificAppData =
+        CallSpecificAppData.newBuilder().setCallInitiationType(callInitiationType).build();
     return callSpecificAppData;
   }
 }
diff --git a/java/com/android/dialer/callintent/CallIntentParser.java b/java/com/android/dialer/callintent/CallIntentParser.java
index 40c8ee3..b54f7c7 100644
--- a/java/com/android/dialer/callintent/CallIntentParser.java
+++ b/java/com/android/dialer/callintent/CallIntentParser.java
@@ -19,10 +19,8 @@
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
 import com.android.dialer.common.Assert;
-import com.google.protobuf.nano.InvalidProtocolBufferNanoException;
-import com.google.protobuf.nano.MessageNano;
+import com.google.protobuf.InvalidProtocolBufferException;
 
 /** Parses data for a call extra to get any dialer specific app data. */
 public class CallIntentParser {
@@ -38,7 +36,7 @@
     }
     try {
       return CallSpecificAppData.parseFrom(flatArray);
-    } catch (InvalidProtocolBufferNanoException e) {
+    } catch (InvalidProtocolBufferException e) {
       Assert.fail("unexpected exception: " + e);
       return null;
     }
@@ -46,8 +44,7 @@
 
   public static void putCallSpecificAppData(
       @NonNull Bundle extras, @NonNull CallSpecificAppData callSpecificAppData) {
-    extras.putByteArray(
-        Constants.EXTRA_CALL_SPECIFIC_APP_DATA, MessageNano.toByteArray(callSpecificAppData));
+    extras.putByteArray(Constants.EXTRA_CALL_SPECIFIC_APP_DATA, callSpecificAppData.toByteArray());
   }
 
   private CallIntentParser() {}
diff --git a/java/com/android/dialer/callintent/call_initiation_type.proto b/java/com/android/dialer/callintent/call_initiation_type.proto
new file mode 100644
index 0000000..994399f
--- /dev/null
+++ b/java/com/android/dialer/callintent/call_initiation_type.proto
@@ -0,0 +1,60 @@
+syntax = "proto2";
+
+option java_package = "com.android.dialer.callintent";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+package com.android.dialer.callintent;
+
+
+// Different ways a call can be initiated.
+message CallInitiationType {
+  enum Type {
+    // Initiation type unknown
+    UNKNOWN_INITIATION = 0;
+
+    // Incoming call initiated by Telecom.
+    INCOMING_INITIATION = 1;
+
+    DIALPAD = 2;
+
+    SPEED_DIAL = 3;
+
+    REMOTE_DIRECTORY = 4;
+
+    // Call placed via a search result returned by typing into the dialpad.
+    SMART_DIAL = 5;
+
+    // Call placed via a search result returned by typing into the search box.
+    REGULAR_SEARCH = 6;
+
+    // Call placed via the call log fragment displayed in the main Dialer
+    // activity.
+    CALL_LOG = 7;
+
+    // Call placed via a call log fragment displaying a filtered list of
+    // voicemails.
+    CALL_LOG_FILTER = 8;
+
+    // Call placed via the call log fragment containing voicemails only.
+    VOICEMAIL_LOG = 9;
+
+    // Call placed via the call details screen
+    CALL_DETAILS = 10;
+
+    // Call placed via the quick contacts card
+    QUICK_CONTACTS = 11;
+
+    // Call was placed from outside the Dialer (e.g. CALL intent sent
+    // via third party app)
+    EXTERNAL_INITIATION = 12;
+
+    LAUNCHER_SHORTCUT = 13;
+
+    CALL_COMPOSER = 14;
+
+    MISSED_CALL_NOTIFICATION = 15;
+
+    CALL_SUBJECT_DIALOG = 16;
+  }
+}
diff --git a/java/com/android/dialer/callintent/call_specific_app_data.proto b/java/com/android/dialer/callintent/call_specific_app_data.proto
new file mode 100644
index 0000000..20ffc1f
--- /dev/null
+++ b/java/com/android/dialer/callintent/call_specific_app_data.proto
@@ -0,0 +1,20 @@
+syntax = "proto2";
+
+option java_package = "com.android.dialer.callintent";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+package com.android.dialer.callintent;
+
+import "java/com/android/dialer/callintent/call_initiation_type.proto";
+
+// Miscellaneous data that's included in a new outgoing call initiated by
+// Dialer. The system will pass this data to the InCallUi which can use it
+// for logging or for something else.
+message CallSpecificAppData {
+  optional CallInitiationType.Type call_initiation_type = 1;
+
+  optional int32 position_of_selected_search_result = 2;
+
+  optional int32 characters_in_search_string = 3;
+}
diff --git a/java/com/android/dialer/callintent/nano/CallInitiationType.java b/java/com/android/dialer/callintent/nano/CallInitiationType.java
deleted file mode 100644
index 1dddb6c..0000000
--- a/java/com/android/dialer/callintent/nano/CallInitiationType.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.callintent.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class CallInitiationType
-    extends com.google.protobuf.nano.ExtendableMessageNano<CallInitiationType> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int UNKNOWN_INITIATION = 0;
-    public static final int INCOMING_INITIATION = 1;
-    public static final int DIALPAD = 2;
-    public static final int SPEED_DIAL = 3;
-    public static final int REMOTE_DIRECTORY = 4;
-    public static final int SMART_DIAL = 5;
-    public static final int REGULAR_SEARCH = 6;
-    public static final int CALL_LOG = 7;
-    public static final int CALL_LOG_FILTER = 8;
-    public static final int VOICEMAIL_LOG = 9;
-    public static final int CALL_DETAILS = 10;
-    public static final int QUICK_CONTACTS = 11;
-    public static final int EXTERNAL_INITIATION = 12;
-    public static final int LAUNCHER_SHORTCUT = 13;
-    public static final int CALL_COMPOSER = 14;
-    public static final int MISSED_CALL_NOTIFICATION = 15;
-    public static final int CALL_SUBJECT_DIALOG = 16;
-  }
-
-  private static volatile CallInitiationType[] _emptyArray;
-
-  public static CallInitiationType[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new CallInitiationType[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.callintent.CallInitiationType)
-
-  public CallInitiationType() {
-    clear();
-  }
-
-  public CallInitiationType clear() {
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public CallInitiationType mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-      }
-    }
-  }
-
-  public static CallInitiationType parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new CallInitiationType(), data);
-  }
-
-  public static CallInitiationType parseFrom(
-      com.google.protobuf.nano.CodedInputByteBufferNano input) throws java.io.IOException {
-    return new CallInitiationType().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/callintent/nano/CallSpecificAppData.java b/java/com/android/dialer/callintent/nano/CallSpecificAppData.java
deleted file mode 100644
index fd00b0a..0000000
--- a/java/com/android/dialer/callintent/nano/CallSpecificAppData.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.callintent.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class CallSpecificAppData
-    extends com.google.protobuf.nano.ExtendableMessageNano<CallSpecificAppData> {
-
-  private static volatile CallSpecificAppData[] _emptyArray;
-
-  public static CallSpecificAppData[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new CallSpecificAppData[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // optional int32 call_initiation_type = 1;
-  public int callInitiationType;
-
-  // optional int32 position_of_selected_search_result = 2;
-  public int positionOfSelectedSearchResult;
-
-  // optional int32 characters_in_search_string = 3;
-  public int charactersInSearchString;
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.callintent.CallSpecificAppData)
-
-  public CallSpecificAppData() {
-    clear();
-  }
-
-  public CallSpecificAppData clear() {
-    callInitiationType = 0;
-    positionOfSelectedSearchResult = 0;
-    charactersInSearchString = 0;
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output)
-      throws java.io.IOException {
-    if (this.callInitiationType != 0) {
-      output.writeInt32(1, this.callInitiationType);
-    }
-    if (this.positionOfSelectedSearchResult != 0) {
-      output.writeInt32(2, this.positionOfSelectedSearchResult);
-    }
-    if (this.charactersInSearchString != 0) {
-      output.writeInt32(3, this.charactersInSearchString);
-    }
-    super.writeTo(output);
-  }
-
-  @Override
-  protected int computeSerializedSize() {
-    int size = super.computeSerializedSize();
-    if (this.callInitiationType != 0) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt32Size(
-              1, this.callInitiationType);
-    }
-    if (this.positionOfSelectedSearchResult != 0) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt32Size(
-              2, this.positionOfSelectedSearchResult);
-    }
-    if (this.charactersInSearchString != 0) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt32Size(
-              3, this.charactersInSearchString);
-    }
-    return size;
-  }
-
-  @Override
-  public CallSpecificAppData mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-        case 8:
-          {
-            this.callInitiationType = input.readInt32();
-            break;
-          }
-        case 16:
-          {
-            this.positionOfSelectedSearchResult = input.readInt32();
-            break;
-          }
-        case 24:
-          {
-            this.charactersInSearchString = input.readInt32();
-            break;
-          }
-      }
-    }
-  }
-
-  public static CallSpecificAppData parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new CallSpecificAppData(), data);
-  }
-
-  public static CallSpecificAppData parseFrom(
-      com.google.protobuf.nano.CodedInputByteBufferNano input) throws java.io.IOException {
-    return new CallSpecificAppData().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/calllog/CallLogComponent.java b/java/com/android/dialer/calllog/CallLogComponent.java
new file mode 100644
index 0000000..5cdd2b4
--- /dev/null
+++ b/java/com/android/dialer/calllog/CallLogComponent.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog;
+
+import android.content.Context;
+import com.android.dialer.inject.HasRootComponent;
+import dagger.Subcomponent;
+
+/** Dagger component for the call log package. */
+@Subcomponent
+public abstract class CallLogComponent {
+
+  public abstract CallLogFramework callLogFramework();
+
+  public static CallLogComponent get(Context context) {
+    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
+        .callLogComponent();
+  }
+
+  /** Used to refer to the root application component. */
+  public interface HasComponent {
+    CallLogComponent callLogComponent();
+  }
+}
diff --git a/java/com/android/dialer/calllog/CallLogFramework.java b/java/com/android/dialer/calllog/CallLogFramework.java
new file mode 100644
index 0000000..508413b
--- /dev/null
+++ b/java/com/android/dialer/calllog/CallLogFramework.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.support.annotation.MainThread;
+import android.support.annotation.Nullable;
+import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.ConfigProviderBindings;
+import com.android.dialer.common.LogUtil;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Coordinates work across CallLog data sources to detect if the annotated call log is out of date
+ * ("dirty") and update it if necessary.
+ *
+ * <p>All methods should be called on the main thread.
+ */
+@Singleton
+public final class CallLogFramework implements CallLogDataSource.ContentObserverCallbacks {
+
+  static final String PREF_FORCE_REBUILD = "callLogFrameworkForceRebuild";
+  static final String PREF_LAST_REBUILD_TIMESTAMP_MILLIS = "callLogFrameworkLastRebuild";
+
+  private final DataSources dataSources;
+
+  @Nullable private CallLogUi ui;
+
+  @Inject
+  CallLogFramework(DataSources dataSources) {
+    this.dataSources = dataSources;
+  }
+
+  public boolean isNewCallLogEnabled(Context context) {
+    return ConfigProviderBindings.get(context).getBoolean("enable_new_call_log_tab", false);
+  }
+
+  /** Registers the content observers for all data sources. */
+  public void registerContentObservers(Context appContext) {
+    LogUtil.enterBlock("CallLogFramework.registerContentObservers");
+
+    if (!isNewCallLogEnabled(appContext)) {
+      return;
+    }
+
+    for (CallLogDataSource dataSource : dataSources.getDataSourcesIncludingSystemCallLog()) {
+      dataSource.registerContentObservers(appContext, this);
+    }
+  }
+
+  /**
+   * Attach a UI component to the framework so that it may be notified of changes to the annotated
+   * call log.
+   */
+  public void attachUi(CallLogUi ui) {
+    LogUtil.enterBlock("CallLogFramework.attachUi");
+    this.ui = ui;
+  }
+
+  /**
+   * Detaches the UI from the framework. This should be called when the UI is hidden or destroyed
+   * and no longer needs to be notified of changes to the annotated call log.
+   */
+  public void detachUi() {
+    LogUtil.enterBlock("CallLogFramework.detachUi");
+    this.ui = null;
+  }
+
+  /**
+   * Marks the call log as dirty and notifies any attached UI components. If there are no UI
+   * components currently attached, this is an efficient operation since it is just writing a shared
+   * pref.
+   *
+   * <p>We don't want to actually force a rebuild when there is no UI running because we don't want
+   * to be constantly rebuilding the database when the device is sitting on a desk and receiving a
+   * lot of calls, for example.
+   */
+  @Override
+  @MainThread
+  public void markDirtyAndNotify(Context appContext) {
+    Assert.isMainThread();
+    LogUtil.enterBlock("CallLogFramework.markDirtyAndNotify");
+
+    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(appContext);
+    sharedPreferences.edit().putBoolean(PREF_FORCE_REBUILD, true).apply();
+
+    if (ui != null) {
+      ui.invalidateUi();
+    }
+  }
+
+  /** Callbacks invoked on listening UI components. */
+  public interface CallLogUi {
+
+    /** Notifies the call log UI that the annotated call log is out of date. */
+    @MainThread
+    void invalidateUi();
+  }
+}
diff --git a/java/com/android/dialer/calllog/CallLogModule.java b/java/com/android/dialer/calllog/CallLogModule.java
new file mode 100644
index 0000000..d7473a7
--- /dev/null
+++ b/java/com/android/dialer/calllog/CallLogModule.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog;
+
+import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.contacts.ContactsDataSource;
+import com.android.dialer.calllog.datasources.systemcalllog.SystemCallLogDataSource;
+import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory;
+import com.android.dialer.common.concurrent.DialerExecutorFactory;
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/** Dagger module which satisfies call log dependencies. */
+@Module
+public abstract class CallLogModule {
+
+  @Binds
+  abstract DialerExecutorFactory bindDialerExecutorFactory(
+      DefaultDialerExecutorFactory defaultDialerExecutorFactory);
+
+  @Provides
+  static DataSources provideCallLogDataSources(
+      SystemCallLogDataSource systemCallLogDataSource, ContactsDataSource contactsDataSource) {
+    // System call log must be first, see getDataSourcesExcludingSystemCallLog below.
+    List<CallLogDataSource> allDataSources =
+        Collections.unmodifiableList(Arrays.asList(systemCallLogDataSource, contactsDataSource));
+    return new DataSources() {
+      @Override
+      public SystemCallLogDataSource getSystemCallLogDataSource() {
+        return systemCallLogDataSource;
+      }
+
+      @Override
+      public List<CallLogDataSource> getDataSourcesIncludingSystemCallLog() {
+        return allDataSources;
+      }
+
+      @Override
+      public List<CallLogDataSource> getDataSourcesExcludingSystemCallLog() {
+        return allDataSources.subList(1, allDataSources.size());
+      }
+    };
+  }
+}
diff --git a/java/com/android/dialer/calllog/DataSources.java b/java/com/android/dialer/calllog/DataSources.java
new file mode 100644
index 0000000..21d1901
--- /dev/null
+++ b/java/com/android/dialer/calllog/DataSources.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog;
+
+import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.calllog.datasources.systemcalllog.SystemCallLogDataSource;
+import java.util.List;
+
+/** Immutable lists of data sources used to populate the annotated call log. */
+interface DataSources {
+
+  SystemCallLogDataSource getSystemCallLogDataSource();
+
+  List<CallLogDataSource> getDataSourcesIncludingSystemCallLog();
+
+  List<CallLogDataSource> getDataSourcesExcludingSystemCallLog();
+}
diff --git a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
new file mode 100644
index 0000000..f9f0c99
--- /dev/null
+++ b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Build;
+import android.preference.PreferenceManager;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.calllog.database.AnnotatedCallLog;
+import com.android.dialer.calllog.database.CallLogMutations;
+import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import javax.inject.Inject;
+
+/**
+ * Worker which brings the annotated call log up to date, if necessary.
+ *
+ * <p>Accepts a boolean which indicates if the dirty check should be skipped, and returns true if
+ * the annotated call log was updated.
+ */
+public class RefreshAnnotatedCallLogWorker implements Worker<Boolean, Boolean> {
+
+  private final Context appContext;
+  private final DataSources dataSources;
+
+  @Inject
+  public RefreshAnnotatedCallLogWorker(Context appContext, DataSources dataSources) {
+    this.appContext = appContext;
+    this.dataSources = dataSources;
+  }
+
+  @Override
+  public Boolean doInBackground(Boolean skipDirtyCheck) {
+    LogUtil.enterBlock("RefreshAnnotatedCallLogWorker.doInBackgroundFallible");
+
+    long startTime = System.currentTimeMillis();
+    boolean annotatedCallLogUpdated = checkDirtyAndRebuildIfNecessary(appContext, skipDirtyCheck);
+    LogUtil.i(
+        "RefreshAnnotatedCallLogWorker.doInBackgroundFallible",
+        "updated? %s, took %dms",
+        annotatedCallLogUpdated,
+        System.currentTimeMillis() - startTime);
+    return annotatedCallLogUpdated;
+  }
+
+  @WorkerThread
+  private boolean checkDirtyAndRebuildIfNecessary(Context appContext, boolean skipDirtyCheck) {
+    Assert.isWorkerThread();
+
+    long startTime = System.currentTimeMillis();
+
+    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(appContext);
+    long lastRebuildTimeMillis =
+        sharedPreferences.getLong(CallLogFramework.PREF_LAST_REBUILD_TIMESTAMP_MILLIS, 0);
+    if (lastRebuildTimeMillis == 0) {
+      LogUtil.i(
+          "RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
+          "annotated call log has never been built, marking it dirty");
+    }
+    boolean forceRebuildPrefValue =
+        sharedPreferences.getBoolean(CallLogFramework.PREF_FORCE_REBUILD, false);
+    if (forceRebuildPrefValue) {
+      LogUtil.i(
+          "RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
+          "call log has been marked dirty");
+    }
+
+    boolean isDirty =
+        lastRebuildTimeMillis == 0
+            || skipDirtyCheck
+            || forceRebuildPrefValue
+            || isDirty(appContext);
+    LogUtil.i(
+        "RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
+        "isDirty took: %dms",
+        System.currentTimeMillis() - startTime);
+    if (isDirty) {
+      startTime = System.currentTimeMillis();
+      rebuild(appContext, lastRebuildTimeMillis);
+      LogUtil.i(
+          "RefreshAnnotatedCallLogWorker.checkDirtyAndRebuildIfNecessary",
+          "rebuild took: %dms",
+          System.currentTimeMillis() - startTime);
+      return true; // Annotated call log was updated.
+    }
+    return false; // Annotated call log was not updated.
+  }
+
+  @WorkerThread
+  private boolean isDirty(Context appContext) {
+    Assert.isWorkerThread();
+
+    for (CallLogDataSource dataSource : dataSources.getDataSourcesIncludingSystemCallLog()) {
+      String dataSourceName = getName(dataSource);
+      long startTime = System.currentTimeMillis();
+      LogUtil.i("RefreshAnnotatedCallLogWorker.isDirty", "running isDirty for %s", dataSourceName);
+      boolean isDirty = dataSource.isDirty(appContext);
+      LogUtil.i(
+          "RefreshAnnotatedCallLogWorker.isDirty",
+          "%s.isDirty returned %b in %dms",
+          dataSourceName,
+          isDirty,
+          System.currentTimeMillis() - startTime);
+      if (isDirty) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
+  @WorkerThread
+  private void rebuild(Context appContext, long lastRebuildTimeMillis) {
+    Assert.isWorkerThread();
+
+    // TODO: Start a transaction?
+    try (SQLiteDatabase database = AnnotatedCallLog.getWritableDatabase(appContext)) {
+
+      CallLogMutations mutations = new CallLogMutations();
+
+      // System call log data source must go first!
+      CallLogDataSource systemCallLogDataSource = dataSources.getSystemCallLogDataSource();
+      String dataSourceName = getName(systemCallLogDataSource);
+      LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "filling %s", dataSourceName);
+      long startTime = System.currentTimeMillis();
+      systemCallLogDataSource.fill(appContext, database, lastRebuildTimeMillis, mutations);
+      LogUtil.i(
+          "RefreshAnnotatedCallLogWorker.rebuild",
+          "%s.fill took: %dms",
+          dataSourceName,
+          System.currentTimeMillis() - startTime);
+
+      for (CallLogDataSource dataSource : dataSources.getDataSourcesExcludingSystemCallLog()) {
+        dataSourceName = getName(dataSource);
+        LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "filling %s", dataSourceName);
+        startTime = System.currentTimeMillis();
+        dataSource.fill(appContext, database, lastRebuildTimeMillis, mutations);
+        LogUtil.i(
+            "CallLogFramework.rebuild",
+            "%s.fill took: %dms",
+            dataSourceName,
+            System.currentTimeMillis() - startTime);
+      }
+      LogUtil.i("RefreshAnnotatedCallLogWorker.rebuild", "applying mutations to database");
+      startTime = System.currentTimeMillis();
+      mutations.applyToDatabase(database);
+      LogUtil.i(
+          "RefreshAnnotatedCallLogWorker.rebuild",
+          "applyToDatabase took: %dms",
+          System.currentTimeMillis() - startTime);
+    }
+
+    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(appContext);
+    sharedPreferences
+        .edit()
+        .putBoolean(CallLogFramework.PREF_FORCE_REBUILD, false)
+        .putLong(CallLogFramework.PREF_LAST_REBUILD_TIMESTAMP_MILLIS, System.currentTimeMillis())
+        .commit();
+  }
+
+  private static String getName(CallLogDataSource dataSource) {
+    return dataSource.getClass().getSimpleName();
+  }
+}
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLog.java b/java/com/android/dialer/calllog/database/AnnotatedCallLog.java
new file mode 100644
index 0000000..7dca44a
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLog.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.database;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.common.Assert;
+
+/** Static methods and constants for interacting with the annotated call log table. */
+public final class AnnotatedCallLog {
+
+  private static final String DATABASE_NAME = "annotated_call_log.db";
+
+  public static final String TABLE_NAME = "AnnotatedCallLog";
+
+  /** Column names for the annotated call log table. */
+  public static final class Columns {
+    public static final String ID = "_id";
+    public static final String TIMESTAMP = "timestamp";
+    public static final String CONTACT_NAME = "contact_name";
+  }
+
+  private AnnotatedCallLog() {}
+
+  @WorkerThread
+  public static SQLiteDatabase getWritableDatabase(Context appContext) {
+    Assert.isWorkerThread();
+
+    return new AnnotatedCallLogDatabaseHelper(appContext, DATABASE_NAME).getWritableDatabase();
+  }
+
+  @WorkerThread
+  public static SQLiteDatabase getReadableDatabase(Context appContext) {
+    Assert.isWorkerThread();
+
+    return new AnnotatedCallLogDatabaseHelper(appContext, DATABASE_NAME).getReadableDatabase();
+  }
+}
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
new file mode 100644
index 0000000..7b28e55
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.database;
+
+import static com.android.dialer.calllog.database.AnnotatedCallLog.Columns.CONTACT_NAME;
+import static com.android.dialer.calllog.database.AnnotatedCallLog.Columns.ID;
+import static com.android.dialer.calllog.database.AnnotatedCallLog.Columns.TIMESTAMP;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import com.android.dialer.common.LogUtil;
+
+/** {@link SQLiteOpenHelper} for the AnnotatedCallLog database. */
+class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper {
+
+  AnnotatedCallLogDatabaseHelper(Context appContext, String databaseName) {
+    super(appContext, databaseName, null, 1);
+  }
+
+  private static final String CREATE_SQL =
+      new StringBuilder()
+          .append("create table if not exists " + AnnotatedCallLog.TABLE_NAME + " (")
+          .append(ID + " integer primary key, ")
+          .append(TIMESTAMP + " integer, ")
+          .append(CONTACT_NAME + " string")
+          .append(");")
+          .toString();
+
+  @Override
+  public void onCreate(SQLiteDatabase db) {
+    LogUtil.enterBlock("AnnotatedCallLogDatabaseHelper.onCreate");
+    long startTime = System.currentTimeMillis();
+    db.execSQL(CREATE_SQL);
+    // TODO: Consider logging impression.
+    LogUtil.i(
+        "AnnotatedCallLogDatabaseHelper.onCreate",
+        "took: %dms",
+        System.currentTimeMillis() - startTime);
+  }
+
+  @Override
+  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
+}
diff --git a/java/com/android/dialer/calllog/database/CallLogMutations.java b/java/com/android/dialer/calllog/database/CallLogMutations.java
new file mode 100644
index 0000000..ec020c6
--- /dev/null
+++ b/java/com/android/dialer/calllog/database/CallLogMutations.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.database;
+
+import android.content.ContentValues;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.WorkerThread;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import com.android.dialer.common.Assert;
+
+/** A collection of mutations to the annotated call log. */
+public final class CallLogMutations {
+
+  private final ArrayMap<Integer, ContentValues> inserts = new ArrayMap<>();
+  private final ArrayMap<Integer, ContentValues> updates = new ArrayMap<>();
+  private final ArraySet<Integer> deletes = new ArraySet<>();
+
+  /** @param contentValues an entire row not including the ID */
+  public void insert(int id, ContentValues contentValues) {
+    inserts.put(id, contentValues);
+  }
+
+  /** @param contentValues the specific columns to update, not including the ID. */
+  public void update(int id, ContentValues contentValues) {
+    // TODO: Consider merging automatically.
+    updates.put(id, contentValues);
+  }
+
+  public void delete(int id) {
+    deletes.add(id);
+  }
+
+  public boolean isEmpty() {
+    return inserts.isEmpty() && updates.isEmpty() && deletes.isEmpty();
+  }
+
+  @WorkerThread
+  public void applyToDatabase(SQLiteDatabase writableDatabase) {
+    Assert.isWorkerThread();
+
+    // TODO: Implementation.
+  }
+}
diff --git a/java/com/android/dialer/calllog/datasources/CallLogDataSource.java b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
new file mode 100644
index 0000000..13d0b84
--- /dev/null
+++ b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.datasources;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.MainThread;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.calllog.database.CallLogMutations;
+
+/** A source of data for one or more columns in the annotated call log. */
+public interface CallLogDataSource {
+
+  /**
+   * A lightweight check which runs frequently to detect if the annotated call log is out of date
+   * with respect to this data source.
+   *
+   * <p>This is typically used to detect external changes to the underlying data source which have
+   * been made in such a way that the dialer application was not notified.
+   *
+   * <p>Most implementations of this method will rely on some sort of last modified timestamp. If it
+   * is impossible for a data source to be modified without the dialer application being notified,
+   * this method may immediately return false.
+   */
+  @WorkerThread
+  boolean isDirty(Context appContext);
+
+  /**
+   * Computes the set of mutations necessary to update the annotated call log with respect to this
+   * data source.
+   *
+   * @param mutations the set of mutations which this method should contribute to. Note that it may
+   *     contain inserts from the system call log, and these inserts should be modified by each data
+   *     source.
+   */
+  @WorkerThread
+  void fill(
+      Context appContext,
+      SQLiteDatabase readableDatabase,
+      long lastRebuildTimeMillis,
+      CallLogMutations mutations);
+
+  @MainThread
+  void registerContentObservers(
+      Context appContext, ContentObserverCallbacks contentObserverCallbacks);
+
+  /**
+   * Methods which may optionally be called as a result of a data source's content observer firing.
+   */
+  interface ContentObserverCallbacks {
+    @MainThread
+    void markDirtyAndNotify(Context appContext);
+  }
+}
diff --git a/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
new file mode 100644
index 0000000..241be5d
--- /dev/null
+++ b/java/com/android/dialer/calllog/datasources/contacts/ContactsDataSource.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.datasources.contacts;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.MainThread;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.calllog.database.CallLogMutations;
+import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.common.Assert;
+import javax.inject.Inject;
+
+/** Responsible for maintaining the contacts related columns in the annotated call log. */
+public final class ContactsDataSource implements CallLogDataSource {
+
+  @Inject
+  public ContactsDataSource() {}
+
+  @WorkerThread
+  @Override
+  public boolean isDirty(Context appContext) {
+    Assert.isWorkerThread();
+
+    // TODO: Implementation.
+    return false;
+  }
+
+  @WorkerThread
+  @Override
+  public void fill(
+      Context appContext,
+      SQLiteDatabase readableDatabase,
+      long lastRebuildTimeMillis,
+      CallLogMutations mutations) {
+    Assert.isWorkerThread();
+    // TODO: Implementation.
+  }
+
+  @MainThread
+  @Override
+  public void registerContentObservers(
+      Context appContext, ContentObserverCallbacks contentObserverCallbacks) {}
+}
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
new file mode 100644
index 0000000..1cc51ee
--- /dev/null
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.datasources.systemcalllog;
+
+import android.content.Context;
+import android.database.ContentObserver;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.os.Handler;
+import android.provider.CallLog;
+import android.support.annotation.MainThread;
+import android.support.annotation.WorkerThread;
+import com.android.dialer.calllog.database.CallLogMutations;
+import com.android.dialer.calllog.datasources.CallLogDataSource;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.ThreadUtil;
+import javax.inject.Inject;
+
+/**
+ * Responsible for defining the rows in the annotated call log and maintaining the columns in it
+ * which are derived from the system call log.
+ */
+public class SystemCallLogDataSource implements CallLogDataSource {
+
+  @Inject
+  public SystemCallLogDataSource() {}
+
+  @MainThread
+  @Override
+  public void registerContentObservers(
+      Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
+    Assert.isMainThread();
+
+    appContext
+        .getContentResolver()
+        .registerContentObserver(
+            CallLog.Calls.CONTENT_URI,
+            true,
+            new CallLogObserver(
+                ThreadUtil.getUiThreadHandler(), appContext, contentObserverCallbacks));
+  }
+
+  @WorkerThread
+  @Override
+  public boolean isDirty(Context appContext) {
+    Assert.isWorkerThread();
+
+    /*
+     * The system call log has a last updated timestamp, but deletes are physical (the "deleted"
+     * column is unused). This means that we can't detect deletes without scanning the entire table,
+     * which would be too slow. So, we just rely on content observers to trigger rebuilds when any
+     * change is made to the system call log.
+     */
+    return false;
+  }
+
+  @WorkerThread
+  @Override
+  public void fill(
+      Context appContext,
+      SQLiteDatabase readableDatabase,
+      long lastRebuildTimeMillis,
+      CallLogMutations mutations) {
+    Assert.isWorkerThread();
+
+    // This data source should always run first so the mutations should always be empty.
+    Assert.checkState(mutations.isEmpty());
+
+    // TODO: Implementation.
+  }
+
+  private static class CallLogObserver extends ContentObserver {
+    private final Context appContext;
+    private final ContentObserverCallbacks contentObserverCallbacks;
+
+    CallLogObserver(
+        Handler handler, Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
+      super(handler);
+      this.appContext = appContext;
+      this.contentObserverCallbacks = contentObserverCallbacks;
+    }
+
+    @MainThread
+    @Override
+    public void onChange(boolean selfChange, Uri uri) {
+      Assert.isMainThread();
+      LogUtil.enterBlock("SystemCallLogDataSource.CallLogObserver.onChange");
+      super.onChange(selfChange, uri);
+
+      /*
+       * The system call log has a last updated timestamp, but deletes are physical (the "deleted"
+       * column is unused). This means that we can't detect deletes without scanning the entire
+       * table, which would be too slow. So, we just rely on content observers to trigger rebuilds
+       * when any change is made to the system call log.
+       */
+      contentObserverCallbacks.markDirtyAndNotify(appContext);
+    }
+  }
+}
diff --git a/java/com/android/dialer/calllog/ui/AndroidManifest.xml b/java/com/android/dialer/calllog/ui/AndroidManifest.xml
new file mode 100644
index 0000000..2281677
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ Copyright (C) 2017 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 package="com.android.dialer.calllog"/>
diff --git a/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java b/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java
new file mode 100644
index 0000000..cd8622e
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.ui;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Build;
+import com.android.dialer.calllog.database.AnnotatedCallLog;
+import com.android.dialer.calllog.database.AnnotatedCallLog.Columns;
+
+/** CursorLoader which reads the annotated call log. */
+class AnnotatedCallLogCursorLoader extends CursorLoader {
+
+  AnnotatedCallLogCursorLoader(Context context) {
+    super(context);
+  }
+
+  @TargetApi(Build.VERSION_CODES.M) // Uses try-with-resources
+  @Override
+  public Cursor loadInBackground() {
+    try (SQLiteDatabase readableDatabase = AnnotatedCallLog.getReadableDatabase(getContext())) {
+      return readableDatabase.rawQuery(
+          "SELECT * FROM "
+              + AnnotatedCallLog.TABLE_NAME
+              + " ORDER BY "
+              + Columns.TIMESTAMP
+              + " DESC",
+          null /* selectionArgs */);
+    }
+  }
+}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
new file mode 100644
index 0000000..b8f2b13
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.calllog.ui;
+
+import android.app.Fragment;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Context;
+import android.content.Loader;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CursorAdapter;
+import android.widget.ListView;
+import android.widget.SimpleCursorAdapter;
+import android.widget.TextView;
+import com.android.dialer.calllog.CallLogComponent;
+import com.android.dialer.calllog.CallLogFramework;
+import com.android.dialer.calllog.CallLogFramework.CallLogUi;
+import com.android.dialer.calllog.database.AnnotatedCallLog.Columns;
+import com.android.dialer.common.LogUtil;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+/** The "new" call log fragment implementation, which is built on top of the annotated call log. */
+public final class NewCallLogFragment extends Fragment
+    implements CallLogUi, LoaderCallbacks<Cursor> {
+
+  private CursorAdapter cursorAdapter;
+
+  public NewCallLogFragment() {
+    LogUtil.enterBlock("NewCallLogFragment.NewCallLogFragment");
+  }
+
+  @Override
+  public void onCreate(Bundle state) {
+    super.onCreate(state);
+
+    LogUtil.enterBlock("NewCallLogFragment.onCreate");
+
+    CallLogFramework callLogFramework = CallLogComponent.get(getContext()).callLogFramework();
+    callLogFramework.attachUi(this);
+  }
+
+  @Override
+  public void onResume() {
+    super.onResume();
+
+    LogUtil.enterBlock("NewCallLogFragment.onResume");
+
+    CallLogFramework callLogFramework = CallLogComponent.get(getContext()).callLogFramework();
+    callLogFramework.attachUi(this);
+  }
+
+  @Override
+  public void onPause() {
+    super.onPause();
+
+    LogUtil.enterBlock("NewCallLogFragment.onPause");
+
+    CallLogFramework callLogFramework = CallLogComponent.get(getContext()).callLogFramework();
+    callLogFramework.detachUi();
+  }
+
+  @Override
+  public View onCreateView(
+      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+    LogUtil.enterBlock("NewCallLogFragment.onCreateView");
+
+    View view = inflater.inflate(R.layout.new_call_log_fragment, container, false);
+    ListView listView = (ListView) view.findViewById(R.id.list);
+
+    this.cursorAdapter =
+        new MyCursorAdapter(
+            getContext(),
+            R.layout.new_call_log_entry,
+            null /* cursor */,
+            new String[] {Columns.TIMESTAMP, Columns.CONTACT_NAME},
+            new int[] {R.id.timestamp, R.id.contact_name},
+            0);
+    listView.setAdapter(cursorAdapter);
+
+    getLoaderManager().initLoader(0, null, this);
+
+    return view;
+  }
+
+  @Override
+  public void invalidateUi() {
+    LogUtil.enterBlock("NewCallLogFragment.invalidateUi");
+    // TODO: Implementation.
+  }
+
+  @Override
+  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+    // TODO: This is sort of weird, do we need to implement a content provider?
+    return new AnnotatedCallLogCursorLoader(getContext());
+  }
+
+  @Override
+  public void onLoadFinished(Loader<Cursor> loader, Cursor newCursor) {
+    cursorAdapter.swapCursor(newCursor);
+  }
+
+  @Override
+  public void onLoaderReset(Loader<Cursor> loader) {
+    cursorAdapter.swapCursor(null);
+  }
+
+  private static class MyCursorAdapter extends SimpleCursorAdapter {
+
+    MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
+      super(context, layout, c, from, to, flags);
+    }
+
+    @Override
+    public void setViewText(TextView view, String text) {
+      if (view.getId() == R.id.timestamp) {
+        text = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US).format(Long.valueOf(text));
+      }
+      view.setText(text);
+    }
+  }
+}
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
new file mode 100644
index 0000000..ee3efd0
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="horizontal">
+
+  <TextView
+      android:id="@+id/timestamp"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"/>
+
+  <TextView
+      android:id="@+id/contact_name"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml
new file mode 100644
index 0000000..433dbdd
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+
+<ListView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/list"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
diff --git a/java/com/android/dialer/calllogutils/CallEntryFormatter.java b/java/com/android/dialer/calllogutils/CallEntryFormatter.java
index bd6d53f..bd184bb 100644
--- a/java/com/android/dialer/calllogutils/CallEntryFormatter.java
+++ b/java/com/android/dialer/calllogutils/CallEntryFormatter.java
@@ -76,7 +76,7 @@
         UCharacter.TITLECASE_NO_LOWERCASE);
   }
 
-  private static CharSequence formatDuration(Context context, long elapsedSeconds) {
+  private static CharSequence formatDuration(Context context, long elapsedSeconds, boolean a11y) {
     long minutes = 0;
     long seconds = 0;
 
@@ -84,10 +84,16 @@
       minutes = elapsedSeconds / 60;
       elapsedSeconds -= minutes * 60;
       seconds = elapsedSeconds;
-      return context.getString(R.string.call_details_duration_format, minutes, seconds);
+      int stringId =
+          a11y ? R.string.call_details_duration_format_a11y : R.string.call_details_duration_format;
+      return context.getString(stringId, minutes, seconds);
     } else {
       seconds = elapsedSeconds;
-      return context.getString(R.string.call_details_short_duration_format, seconds);
+      int stringId =
+          a11y
+              ? R.string.call_details_short_duration_format_a11y
+              : R.string.call_details_short_duration_format;
+      return context.getString(stringId, seconds);
     }
   }
 
@@ -96,13 +102,14 @@
    *
    * @param elapsedSeconds Total elapsed seconds.
    * @param dataUsage Data usage in bytes, or null if not specified.
+   * @param a11y {@code true} if string should be talk back friendly.
    * @return String containing call duration and data usage.
    */
   public static CharSequence formatDurationAndDataUsage(
-      Context context, long elapsedSeconds, Long dataUsage) {
-    CharSequence duration = formatDuration(context, elapsedSeconds);
+      Context context, long elapsedSeconds, long dataUsage, boolean a11y) {
+    CharSequence duration = formatDuration(context, elapsedSeconds, a11y);
     List<CharSequence> durationItems = new ArrayList<>();
-    if (dataUsage != null) {
+    if (dataUsage > 0) {
       durationItems.add(duration);
       durationItems.add(Formatter.formatShortFileSize(context, dataUsage));
       return DialerUtils.join(durationItems);
diff --git a/java/com/android/dialer/calllogutils/CallTypeIconsView.java b/java/com/android/dialer/calllogutils/CallTypeIconsView.java
index 55672ca..58e4acf 100644
--- a/java/com/android/dialer/calllogutils/CallTypeIconsView.java
+++ b/java/com/android/dialer/calllogutils/CallTypeIconsView.java
@@ -232,44 +232,56 @@
      * Configures the call icon drawables. A single white call arrow which points down and left is
      * used as a basis for all of the call arrow icons, applying rotation and colors as needed.
      *
+     * <p>For each drawable we call mutate so that a new instance of the drawable is created. This
+     * is done so that when we apply a color filter to the drawables, they are recolored across
+     * dialer.
+     *
      * @param context The current context.
      */
     public Resources(Context context, boolean largeIcons) {
       final android.content.res.Resources r = context.getResources();
 
       int iconId = R.drawable.quantum_ic_call_received_white_24;
-      incoming = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      Drawable drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      incoming = drawable.mutate();
       incoming.setColorFilter(r.getColor(R.color.answered_call), PorterDuff.Mode.MULTIPLY);
 
       // Create a rotated instance of the call arrow for outgoing calls.
       iconId = R.drawable.quantum_ic_call_made_white_24;
-      outgoing = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      outgoing = drawable.mutate();
       outgoing.setColorFilter(r.getColor(R.color.answered_call), PorterDuff.Mode.MULTIPLY);
 
       // Need to make a copy of the arrow drawable, otherwise the same instance colored
       // above will be recolored here.
       iconId = R.drawable.quantum_ic_call_missed_white_24;
-      missed = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      missed = drawable.mutate();
       missed.setColorFilter(r.getColor(R.color.missed_call), PorterDuff.Mode.MULTIPLY);
 
       iconId = R.drawable.quantum_ic_voicemail_white_24;
-      voicemail = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      voicemail = drawable.mutate();
       voicemail.setColorFilter(r.getColor(R.color.call_type_icon_color), PorterDuff.Mode.MULTIPLY);
 
       iconId = R.drawable.quantum_ic_block_white_24;
-      blocked = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      blocked = drawable.mutate();
       blocked.setColorFilter(r.getColor(R.color.blocked_call), PorterDuff.Mode.MULTIPLY);
 
       iconId = R.drawable.quantum_ic_videocam_white_24;
-      videoCall = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      videoCall = drawable.mutate();
       videoCall.setColorFilter(r.getColor(R.color.call_type_icon_color), PorterDuff.Mode.MULTIPLY);
 
       iconId = R.drawable.quantum_ic_hd_white_24;
-      hdCall = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      hdCall = drawable.mutate();
       hdCall.setColorFilter(r.getColor(R.color.call_type_icon_color), PorterDuff.Mode.MULTIPLY);
 
       iconId = R.drawable.quantum_ic_signal_wifi_4_bar_white_24;
-      wifiCall = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
+      wifiCall = drawable.mutate();
       wifiCall.setColorFilter(r.getColor(R.color.call_type_icon_color), PorterDuff.Mode.MULTIPLY);
 
       iconMargin = largeIcons ? 0 : r.getDimensionPixelSize(R.dimen.call_log_icon_margin);
diff --git a/java/com/android/dialer/calllogutils/PhoneCallDetails.java b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
index 6fa5073..13c528a 100644
--- a/java/com/android/dialer/calllogutils/PhoneCallDetails.java
+++ b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
@@ -27,7 +27,7 @@
 import com.android.contacts.common.ContactsUtils.UserType;
 import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo.ContactSourceType;
+import com.android.dialer.logging.ContactSource;
 import com.android.dialer.phonenumbercache.ContactInfo;
 
 /** The details of a phone call to be shown in the UI. */
@@ -82,7 +82,7 @@
   public Uri photoUri;
 
   // The source type of the contact associated with this call.
-  public @ContactSourceType int sourceType;
+  public ContactSource.Type sourceType;
 
   // The object id type of the contact associated with this call.
   public String objectId;
diff --git a/java/com/android/dialer/calllogutils/res/values-af/strings.xml b/java/com/android/dialer/calllogutils/res/values-af/strings.xml
index d4d615e..1858a72 100644
--- a/java/com/android/dialer/calllogutils/res/values-af/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-af/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"op <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Stemboodskap"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> m. <xliff:g id="SECONDS">%s</xliff:g> s."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> m. <xliff:g id="SECONDS">%d</xliff:g> s."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minute <xliff:g id="SECONDS">%d</xliff:g> sekondes"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekondes"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-am/strings.xml b/java/com/android/dialer/calllogutils/res/values-am/strings.xml
index 80a71c9..2d4f10d 100644
--- a/java/com/android/dialer/calllogutils/res/values-am/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-am/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"በ <xliff:g id="NUMBER">%1$s</xliff:g> በኩል"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"በ <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> ላይ፣ በ <xliff:g id="NUMBER">%2$s</xliff:g> በኩል"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"የድምፅ መልእክት"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>ደ <xliff:g id="SECONDS">%s</xliff:g>ሰ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> ሰከንዶች"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>ደ <xliff:g id="SECONDS">%d</xliff:g>ሰ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> ሰከንዶች"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> ደቂቃዎች <xliff:g id="SECONDS">%d</xliff:g> ሰከንዶች"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> ሰከንዶች"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
index 04cc6d9..49a96ff 100644
--- a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"من خلال <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"على <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> من خلال <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"البريد الصوتي"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> د <xliff:g id="SECONDS">%s</xliff:g> ث"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> ثانية"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> د <xliff:g id="SECONDS">%d</xliff:g> ث"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> ثانية"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> دقيقة <xliff:g id="SECONDS">%d</xliff:g> ثانية"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> ثانية"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-az/strings.xml b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
index 7672612..8bf5c03 100644
--- a/java/com/android/dialer/calllogutils/res/values-az/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> vasitəsilə"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="NUMBER">%2$s</xliff:g> vasitəsilə <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> hesabında"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Səsli e-məktub"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> dəq <xliff:g id="SECONDS">%s</xliff:g> san"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>san"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> dəq <xliff:g id="SECONDS">%d</xliff:g> san"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>san"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> dəqiqə <xliff:g id="SECONDS">%d</xliff:g> saniyə"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> saniyə"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/calllogutils/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..0d658c4
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~      http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="type_incoming" msgid="5727636795656199810">"Dolazni poziv"</string>
+    <string name="type_incoming_pulled" msgid="8434723359163965796">"Dolazni poziv je prenet na drugi uređaj"</string>
+    <string name="type_outgoing" msgid="764896746073942963">"Odlazni poziv"</string>
+    <string name="type_outgoing_pulled" msgid="1648517538371704193">"Odlazni poziv je prenet na drugi uređaj"</string>
+    <string name="type_missed" msgid="2997043831022028176">"Propušten poziv"</string>
+    <string name="type_incoming_video" msgid="7507180294202642554">"Dolazni video poziv"</string>
+    <string name="type_incoming_video_pulled" msgid="7879031598844023977">"Dolazni video poziv je prenet na drugi uređaj"</string>
+    <string name="type_outgoing_video" msgid="309370072333983910">"Odlazni video poziv"</string>
+    <string name="type_outgoing_video_pulled" msgid="3924450629684331345">"Odlazni video poziv je prenet na drugi uređaj"</string>
+    <string name="type_missed_video" msgid="4350107016317603785">"Propušten video poziv"</string>
+    <string name="type_voicemail" msgid="1877524395253846684">"Govorna pošta"</string>
+    <string name="type_rejected" msgid="5632107438472996198">"Odbijen poziv"</string>
+    <string name="type_blocked" msgid="9177237294052244929">"Blokiran poziv"</string>
+    <string name="type_answered_elsewhere" msgid="411958582555881640">"Poziv je prihvaćen na drugom uređaju"</string>
+    <string name="description_phone_account" msgid="4382951172691362244">"na <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_via_number" msgid="7682575124846343076">"preko <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="description_via_number_phone_account" msgid="4345445677508018830">"na <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, preko <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
+    <string name="voicemail_string" msgid="6029775151483803006">"Govorna pošta"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> m <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> sek"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sek"</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-be/strings.xml b/java/com/android/dialer/calllogutils/res/values-be/strings.xml
index fbb7bf2..e04d815 100644
--- a/java/com/android/dialer/calllogutils/res/values-be/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-be/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"праз <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"на <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, праз <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Галасавая пошта"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> хв <xliff:g id="SECONDS">%s</xliff:g> с"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> хв <xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"Хвілін: <xliff:g id="MINUTES">%d</xliff:g>; секунд: <xliff:g id="SECONDS">%d</xliff:g>"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> с"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bg/strings.xml b/java/com/android/dialer/calllogutils/res/values-bg/strings.xml
index 4f21eb3..716cecb 100644
--- a/java/com/android/dialer/calllogutils/res/values-bg/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-bg/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"през <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"в/ъв <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, през <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Гласова поща"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> мин <xliff:g id="SECONDS">%d</xliff:g> сек"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> сек"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> минути и <xliff:g id="SECONDS">%d</xliff:g> секунди"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> секунди"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bn/strings.xml b/java/com/android/dialer/calllogutils/res/values-bn/strings.xml
index 28b40b4..ab2862e 100644
--- a/java/com/android/dialer/calllogutils/res/values-bn/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-bn/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> এর মাধ্যমে"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> এ, <xliff:g id="NUMBER">%2$s</xliff:g> এর মাধ্যমে"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"ভয়েসমেল"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>মিনিট <xliff:g id="SECONDS">%s</xliff:g>সেকেন্ড"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>সেকেন্ড"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>মিনিট <xliff:g id="SECONDS">%d</xliff:g>সেকেন্ড"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>সেকেন্ড"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> মিনিট <xliff:g id="SECONDS">%d</xliff:g> সেকেন্ড"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> সেকেন্ড"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bs/strings.xml b/java/com/android/dialer/calllogutils/res/values-bs/strings.xml
index c6693d3..27bf8a4 100644
--- a/java/com/android/dialer/calllogutils/res/values-bs/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-bs/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"preko <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"na <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, preko <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Govorna pošta"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min. <xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sek."</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ca/strings.xml b/java/com/android/dialer/calllogutils/res/values-ca/strings.xml
index 45b5814..eb26926 100644
--- a/java/com/android/dialer/calllogutils/res/values-ca/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ca/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"al número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"a <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, al número <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Bústia de veu"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minuts <xliff:g id="SECONDS">%d</xliff:g> segons"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segons"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-cs/strings.xml b/java/com/android/dialer/calllogutils/res/values-cs/strings.xml
index f2de1f8..66b5881 100644
--- a/java/com/android/dialer/calllogutils/res/values-cs/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-cs/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"z čísla <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"na účet <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, z čísla <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Hlasová schránka"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-da/strings.xml b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
index 09f5b3d..aa6ba8a 100644
--- a/java/com/android/dialer/calllogutils/res/values-da/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"til <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Telefonsvarer"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min. <xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutter <xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-de/strings.xml b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
index b714874..7fd087f 100644
--- a/java/com/android/dialer/calllogutils/res/values-de/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"über <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"mit <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, über <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Mailbox"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> Minuten <xliff:g id="SECONDS">%d</xliff:g> Sekunden"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> Sekunden"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-el/strings.xml b/java/com/android/dialer/calllogutils/res/values-el/strings.xml
index ab9b5e3..7a3db9a 100644
--- a/java/com/android/dialer/calllogutils/res/values-el/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-el/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"μέσω <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"στον λογαριασμό <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, μέσω <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Αυτόματος τηλεφωνητής"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>λ <xliff:g id="SECONDS">%s</xliff:g>δ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>δ"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>λ <xliff:g id="SECONDS">%d</xliff:g>δ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>δ"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> λεπτά, <xliff:g id="SECONDS">%d</xliff:g> δευτερόλεπτα"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> δευτερόλεπτα"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml
index c1105af..97ed6cf 100644
--- a/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"on <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Voicemail"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>m <xliff:g id="SECONDS">%s</xliff:g>s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>m <xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutes <xliff:g id="SECONDS">%d</xliff:g> seconds"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> seconds"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml
index c1105af..97ed6cf 100644
--- a/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"on <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Voicemail"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>m <xliff:g id="SECONDS">%s</xliff:g>s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>m <xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutes <xliff:g id="SECONDS">%d</xliff:g> seconds"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> seconds"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml
index c1105af..97ed6cf 100644
--- a/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"on <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Voicemail"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>m <xliff:g id="SECONDS">%s</xliff:g>s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>m <xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutes <xliff:g id="SECONDS">%d</xliff:g> seconds"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> seconds"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml b/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml
index 74906bd..8d25bde 100644
--- a/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"por medio de <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"en <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> por medio de <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Buzón de voz"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutos, <xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-es/strings.xml b/java/com/android/dialer/calllogutils/res/values-es/strings.xml
index 9ed0b64..5ad0f5e 100644
--- a/java/com/android/dialer/calllogutils/res/values-es/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-es/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"a través del <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"en <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, a través del <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Buzón de voz"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutos <xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-et/strings.xml b/java/com/android/dialer/calllogutils/res/values-et/strings.xml
index a6a8b91..9e2cd14 100644
--- a/java/com/android/dialer/calllogutils/res/values-et/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-et/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"numbri <xliff:g id="NUMBER">%1$s</xliff:g> kaudu"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"kontol <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, numbri <xliff:g id="NUMBER">%2$s</xliff:g> kaudu"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Kõnepost"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutit <xliff:g id="SECONDS">%d</xliff:g> sekundit"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekundit"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
index 8c960ba..e1a6b3f 100644
--- a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> bidez"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> kontuan, <xliff:g id="NUMBER">%2$s</xliff:g> bidez"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Erantzungailua"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min eta <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min eta <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutu eta <xliff:g id="SECONDS">%d</xliff:g> segundo"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segundo"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fa/strings.xml b/java/com/android/dialer/calllogutils/res/values-fa/strings.xml
index adb3d9d..13c92b8 100644
--- a/java/com/android/dialer/calllogutils/res/values-fa/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fa/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"ازطریق <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"در <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>، ازطریق <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"پست صوتی"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> دقیقه <xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> دقیقه <xliff:g id="SECONDS">%d</xliff:g> ثانیه"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> ثانیه"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> دقیقه و <xliff:g id="SECONDS">%d</xliff:g> ثانیه"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> ثانیه"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fi/strings.xml b/java/com/android/dialer/calllogutils/res/values-fi/strings.xml
index 2838e0d..1b08ea9 100644
--- a/java/com/android/dialer/calllogutils/res/values-fi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fi/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"numerosta <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"tililtä <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> numerosta <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Vastaaja"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minuuttia <xliff:g id="SECONDS">%d</xliff:g> sekuntia"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekuntia"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml b/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml
index bf4ba17..1288ae3 100644
--- a/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"au <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"sur <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, au <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Messagerie vocale"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min et <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutes et <xliff:g id="SECONDS">%d</xliff:g> secondes"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> secondes"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fr/strings.xml b/java/com/android/dialer/calllogutils/res/values-fr/strings.xml
index 584c53a..a0cee2a 100644
--- a/java/com/android/dialer/calllogutils/res/values-fr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fr/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"au <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"sur <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, au <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Messagerie vocale"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min et <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutes <xliff:g id="SECONDS">%d</xliff:g> secondes"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> secondes"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-gl/strings.xml b/java/com/android/dialer/calllogutils/res/values-gl/strings.xml
index ace85e4..a2a33f7 100644
--- a/java/com/android/dialer/calllogutils/res/values-gl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-gl/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"a través do <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"en <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, a través do <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Correo de voz"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutos e <xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-gu/strings.xml b/java/com/android/dialer/calllogutils/res/values-gu/strings.xml
index 0e8e021..5980488 100644
--- a/java/com/android/dialer/calllogutils/res/values-gu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-gu/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> મારફતે"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> પર, <xliff:g id="NUMBER">%2$s</xliff:g> મારફતે"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"વૉઇસમેઇલ"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>મિ <xliff:g id="SECONDS">%s</xliff:g>સે"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>સે"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>મિ <xliff:g id="SECONDS">%d</xliff:g>સે"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>સે"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> મિનિટ <xliff:g id="SECONDS">%d</xliff:g> સેકંડ"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> સેકંડ"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
index 59a6aff..e8994bd 100644
--- a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> से"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> पर, <xliff:g id="NUMBER">%2$s</xliff:g> से"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"वॉइसमेल"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> मि <xliff:g id="SECONDS">%s</xliff:g> से"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> से"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> मि <xliff:g id="SECONDS">%d</xliff:g> से"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> से"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> मिनट <xliff:g id="SECONDS">%d</xliff:g> सेकंड"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> सेकंड"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hr/strings.xml b/java/com/android/dialer/calllogutils/res/values-hr/strings.xml
index 38843f1..ef60cd2 100644
--- a/java/com/android/dialer/calllogutils/res/values-hr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hr/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"putem broja <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"na računu <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, putem broja <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Govorna pošta"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hu/strings.xml b/java/com/android/dialer/calllogutils/res/values-hu/strings.xml
index e2849b1..566bf27 100644
--- a/java/com/android/dialer/calllogutils/res/values-hu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hu/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"szám: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"fiók: <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, szám: <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Hangposta"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> p <xliff:g id="SECONDS">%s</xliff:g> mp"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> mp"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> p <xliff:g id="SECONDS">%d</xliff:g> mp"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> mp"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> perc, <xliff:g id="SECONDS">%d</xliff:g> másodperc"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> másodperc"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hy/strings.xml b/java/com/android/dialer/calllogutils/res/values-hy/strings.xml
index 58d51a6..1b939ec 100644
--- a/java/com/android/dialer/calllogutils/res/values-hy/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hy/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> համարից"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>-ին <xliff:g id="NUMBER">%2$s</xliff:g> համարից"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Ձայնային փոստ"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> ր <xliff:g id="SECONDS">%s</xliff:g> վ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> վ"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> ր <xliff:g id="SECONDS">%d</xliff:g> վ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> վ"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> րոպե <xliff:g id="SECONDS">%d</xliff:g> վայրկյան"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> վայրկյան"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-in/strings.xml b/java/com/android/dialer/calllogutils/res/values-in/strings.xml
index faf9362..f734419 100644
--- a/java/com/android/dialer/calllogutils/res/values-in/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-in/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"melalui <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"di <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, melalui <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Pesan suara"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>m <xliff:g id="SECONDS">%s</xliff:g>d"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>d"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>m <xliff:g id="SECONDS">%d</xliff:g>d"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>d"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> menit <xliff:g id="SECONDS">%d</xliff:g> detik"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> detik"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-is/strings.xml b/java/com/android/dialer/calllogutils/res/values-is/strings.xml
index e7bbbe1..5643aee 100644
--- a/java/com/android/dialer/calllogutils/res/values-is/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-is/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"í gegnum <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"á <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, í gegnum <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Talhólf"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> mín. og <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> mín. og <xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> mínútur <xliff:g id="SECONDS">%d</xliff:g> sekúndur"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekúndur"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-it/strings.xml b/java/com/android/dialer/calllogutils/res/values-it/strings.xml
index 04a0e1b..808d4e4 100644
--- a/java/com/android/dialer/calllogutils/res/values-it/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-it/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"tramite <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"su <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, tramite <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Messaggi vocali"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> m <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minuti <xliff:g id="SECONDS">%d</xliff:g> secondi"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> secondi"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
index 1df6961..069a8b8 100644
--- a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"דרך <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"בחשבון <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, דרך <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"דואר קולי"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> דקות ו-<xliff:g id="SECONDS">%s</xliff:g> שניות"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> שניות"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> דקות ו-<xliff:g id="SECONDS">%d</xliff:g> שניות"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> שניות"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> דקות ו-<xliff:g id="SECONDS">%d</xliff:g> שניות"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> שניות"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ja/strings.xml b/java/com/android/dialer/calllogutils/res/values-ja/strings.xml
index 4baeecc..81e8ee5 100644
--- a/java/com/android/dialer/calllogutils/res/values-ja/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ja/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> で受信"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>（<xliff:g id="NUMBER">%2$s</xliff:g>）で受信"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"ボイスメール"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> 分 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> 分 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ka/strings.xml b/java/com/android/dialer/calllogutils/res/values-ka/strings.xml
index b1a4a41..6bfe5d3 100644
--- a/java/com/android/dialer/calllogutils/res/values-ka/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ka/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g>-ის მეშვეობით"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>-ზე, <xliff:g id="NUMBER">%2$s</xliff:g>-ის მეშვეობით"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"ხმოვანი ფოსტა"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>წთ <xliff:g id="SECONDS">%s</xliff:g>წმ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>წმ"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>წთ <xliff:g id="SECONDS">%d</xliff:g>წმ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>წმ"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> წუთი, <xliff:g id="SECONDS">%d</xliff:g> წამი"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> წამი"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-kk/strings.xml b/java/com/android/dialer/calllogutils/res/values-kk/strings.xml
index efaef23..8302bb3 100644
--- a/java/com/android/dialer/calllogutils/res/values-kk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-kk/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> арқылы"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, <xliff:g id="NUMBER">%2$s</xliff:g> арқылы"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Дауыстық хабар"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>м <xliff:g id="SECONDS">%s</xliff:g>с"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>м <xliff:g id="SECONDS">%d</xliff:g>с"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> минут <xliff:g id="SECONDS">%d</xliff:g> секунд"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> секунд"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-km/strings.xml b/java/com/android/dialer/calllogutils/res/values-km/strings.xml
index b5e6c5d..91b6d9a 100644
--- a/java/com/android/dialer/calllogutils/res/values-km/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-km/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"នៅ​លើ <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> តាមរយៈ <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"សារ​ជា​សំឡេង"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>m <xliff:g id="SECONDS">%s</xliff:g>s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>m <xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> នាទី <xliff:g id="SECONDS">%d</xliff:g> វិនាទី"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> វិនាទី"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-kn/strings.xml b/java/com/android/dialer/calllogutils/res/values-kn/strings.xml
index 44feee9..6d6f886 100644
--- a/java/com/android/dialer/calllogutils/res/values-kn/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-kn/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> ಮೂಲಕ"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> ರಲ್ಲಿ, <xliff:g id="NUMBER">%2$s</xliff:g> ಮೂಲಕ"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"ಧ್ವನಿಮೇಲ್"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>ನಿ <xliff:g id="SECONDS">%s</xliff:g>ಸೆ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>ಸೆ"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>ನಿ <xliff:g id="SECONDS">%d</xliff:g>ಸೆ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>ಸೆ"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> ನಿಮಿಷಗಳು <xliff:g id="SECONDS">%d</xliff:g> ಸೆಕೆಂಡುಗಳು"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> ಸೆಕೆಂಡುಗಳು"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ko/strings.xml b/java/com/android/dialer/calllogutils/res/values-ko/strings.xml
index 76ba89b..ff49d5b 100644
--- a/java/com/android/dialer/calllogutils/res/values-ko/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ko/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g>번으로 수신"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>에서 <xliff:g id="NUMBER">%2$s</xliff:g>번으로 수신"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"음성사서함"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>초"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>분 <xliff:g id="SECONDS">%d</xliff:g>초"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>초"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g>분 <xliff:g id="SECONDS">%d</xliff:g>초"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g>초"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
index a91f0bd..9ec8ca2 100644
--- a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> аркылуу"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> боюнча <xliff:g id="NUMBER">%2$s</xliff:g> аркылуу"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Үн почтасы"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>мүн. <xliff:g id="SECONDS">%s</xliff:g>сек."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>сек."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>мүн. <xliff:g id="SECONDS">%d</xliff:g>сек."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>сек."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> мүнөт <xliff:g id="SECONDS">%d</xliff:g> секунд"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> секунд"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-lo/strings.xml b/java/com/android/dialer/calllogutils/res/values-lo/strings.xml
index 343fc60..72efbd8 100644
--- a/java/com/android/dialer/calllogutils/res/values-lo/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-lo/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"ຜ່ານ <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"ຢູ່ <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, ຜ່ານ <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"ຂໍ້ຄວາມສຽງ"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>ນທ <xliff:g id="SECONDS">%s</xliff:g>ວິ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>ວິ"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>ນທ <xliff:g id="SECONDS">%d</xliff:g>ວິ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>ວິ"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> ນາທີ <xliff:g id="SECONDS">%d</xliff:g> ວິນາທີ"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> ວິນາທີ"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-lt/strings.xml b/java/com/android/dialer/calllogutils/res/values-lt/strings.xml
index 779e952..7eaa42b 100644
--- a/java/com/android/dialer/calllogutils/res/values-lt/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-lt/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"numeriu <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, numeriu <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Balso paštas"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min. <xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min. <xliff:g id="SECONDS">%d</xliff:g> sek."</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sek."</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-lv/strings.xml b/java/com/android/dialer/calllogutils/res/values-lv/strings.xml
index d02d7ec..cf6b32e 100644
--- a/java/com/android/dialer/calllogutils/res/values-lv/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-lv/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"izmantojot numuru <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"kontā <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, izmantojot numuru <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Balss pasts"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minūtes <xliff:g id="SECONDS">%d</xliff:g> sekundes"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekundes"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-mk/strings.xml b/java/com/android/dialer/calllogutils/res/values-mk/strings.xml
index 21872a8..5747c25 100644
--- a/java/com/android/dialer/calllogutils/res/values-mk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mk/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"на <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"на <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, на <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Говорна пошта"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> мин. <xliff:g id="SECONDS">%d</xliff:g> сек."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> сек."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> минути <xliff:g id="SECONDS">%d</xliff:g> секунди"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> секунди"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ml/strings.xml b/java/com/android/dialer/calllogutils/res/values-ml/strings.xml
index f6507ae..fcd5995 100644
--- a/java/com/android/dialer/calllogutils/res/values-ml/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ml/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> നമ്പർ വഴി"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="NUMBER">%2$s</xliff:g> നമ്പർ വഴി, <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> അക്കൗണ്ടിൽ"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>മിനിറ്റ് <xliff:g id="SECONDS">%s</xliff:g>സെക്കന്‍ഡ്"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>സെക്കൻഡ്"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>മിനിറ്റ് <xliff:g id="SECONDS">%d</xliff:g>സെക്കന്‍ഡ്"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>സെക്കൻഡ്"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> മിനിറ്റ് <xliff:g id="SECONDS">%d</xliff:g> സെക്കൻഡ്"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> സെക്കൻഡ്"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-mn/strings.xml b/java/com/android/dialer/calllogutils/res/values-mn/strings.xml
index 3f5bbd3..cc20439 100644
--- a/java/com/android/dialer/calllogutils/res/values-mn/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mn/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g>-р"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> дээр, <xliff:g id="NUMBER">%2$s</xliff:g>-р"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Дуут шуудан"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>м <xliff:g id="SECONDS">%s</xliff:g>с"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>с"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>м <xliff:g id="SECONDS">%d</xliff:g>с"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>с"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> минут <xliff:g id="SECONDS">%d</xliff:g> секунд"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> секунд"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
index 893851f..eb10802 100644
--- a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> द्वारे"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> वर, <xliff:g id="NUMBER">%2$s</xliff:g> द्वारे"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"व्हॉइसमेल"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>मि <xliff:g id="SECONDS">%s</xliff:g>से"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>से"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>मि <xliff:g id="SECONDS">%d</xliff:g>से"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>से"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> मिनिटे <xliff:g id="SECONDS">%d</xliff:g> सेकंद"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> सेकंद"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ms/strings.xml b/java/com/android/dialer/calllogutils/res/values-ms/strings.xml
index 1f7a221..03e7516 100644
--- a/java/com/android/dialer/calllogutils/res/values-ms/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ms/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"melalui <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"pada <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, melalui <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Mel suara"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>m <xliff:g id="SECONDS">%s</xliff:g>s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>m <xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minit <xliff:g id="SECONDS">%d</xliff:g> saat"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> saat"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-my/strings.xml b/java/com/android/dialer/calllogutils/res/values-my/strings.xml
index 8b1337e..07f0f89 100644
--- a/java/com/android/dialer/calllogutils/res/values-my/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-my/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> မှတစ်ဆင့်"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> တွင်၊ <xliff:g id="NUMBER">%2$s</xliff:g> မှတစ်ဆင့်"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"အသံမေးလ်"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>မိနစ် <xliff:g id="SECONDS">%s</xliff:g>စက္ကန့်"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>စက္ကန့်"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>မိနစ် <xliff:g id="SECONDS">%d</xliff:g>စက္ကန့်"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>စက္ကန့်"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> မိနစ် <xliff:g id="SECONDS">%d</xliff:g> စက္ကန့်"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> စက္ကန့်"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
index 7d46220..0596aa1 100644
--- a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"på <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Talepost"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> m og <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> m og <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutter, <xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ne/strings.xml b/java/com/android/dialer/calllogutils/res/values-ne/strings.xml
index d498395..31e1e32 100644
--- a/java/com/android/dialer/calllogutils/res/values-ne/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ne/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> मार्फत"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> मा, <xliff:g id="NUMBER">%2$s</xliff:g> मार्फत"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"भ्वाइस मेल"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>मिनेट <xliff:g id="SECONDS">%s</xliff:g>सेकेन्ड"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>सेकेन्ड"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>मिनेट <xliff:g id="SECONDS">%d</xliff:g>सेकेन्ड"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>सेकेन्ड"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> मिनेट <xliff:g id="SECONDS">%d</xliff:g> सेकेन्ड"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> सेकेन्ड"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
index 0fcc6ca..6801082 100644
--- a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"op <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Voicemail"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> m <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minuten, <xliff:g id="SECONDS">%d</xliff:g> seconden"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> seconden"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-no/strings.xml b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
index 7d46220..0596aa1 100644
--- a/java/com/android/dialer/calllogutils/res/values-no/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"via <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"på <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> via <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Talepost"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> m og <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> m og <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutter, <xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pa/strings.xml b/java/com/android/dialer/calllogutils/res/values-pa/strings.xml
index f4cde52..e7c6119 100644
--- a/java/com/android/dialer/calllogutils/res/values-pa/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pa/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> ਰਾਹੀਂ"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> \'ਤੇ, <xliff:g id="NUMBER">%2$s</xliff:g> ਰਾਹੀਂ"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"ਵੌਇਸਮੇਲ"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>ਮਿੰ <xliff:g id="SECONDS">%s</xliff:g>ਸਕਿੰ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>ਸਕਿੰ"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>ਮਿੰ <xliff:g id="SECONDS">%d</xliff:g>ਸਕਿੰ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>ਸਕਿੰ"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> ਮਿੰਟ <xliff:g id="SECONDS">%d</xliff:g> ਸਕਿੰਟ"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> ਸਕਿੰਟ"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pl/strings.xml b/java/com/android/dialer/calllogutils/res/values-pl/strings.xml
index f1396cd..d863c1d 100644
--- a/java/com/android/dialer/calllogutils/res/values-pl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pl/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"przez <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"na koncie <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, przez <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Poczta głosowa"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
index 1e8b733..5182576 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"pelo número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"em <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, pelo número <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Correio de voz"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutos <xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
index f24b83a..b9c4d24 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"através do número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"em <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, através do número <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Correio de voz"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutos <xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
index 1e8b733..5182576 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"pelo número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"em <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, pelo número <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Correio de voz"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minutos <xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> segundos"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ro/strings.xml b/java/com/android/dialer/calllogutils/res/values-ro/strings.xml
index 8449754..fb4ad6b 100644
--- a/java/com/android/dialer/calllogutils/res/values-ro/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ro/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"prin <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"pe <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, prin <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Mesagerie vocală"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min. <xliff:g id="SECONDS">%d</xliff:g> sec."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> sec."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minute, <xliff:g id="SECONDS">%d</xliff:g> secunde"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> secunde"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ru/strings.xml b/java/com/android/dialer/calllogutils/res/values-ru/strings.xml
index 8e6120a..7fc772b 100644
--- a/java/com/android/dialer/calllogutils/res/values-ru/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ru/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"Номер <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, номер <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Голосовая почта"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> мин. <xliff:g id="SECONDS">%d</xliff:g> сек."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> сек."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> мин. <xliff:g id="SECONDS">%d</xliff:g> сек."</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> сек."</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-si/strings.xml b/java/com/android/dialer/calllogutils/res/values-si/strings.xml
index fa24c1c..5a6e9e6 100644
--- a/java/com/android/dialer/calllogutils/res/values-si/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-si/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> හරහා"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> මත, <xliff:g id="NUMBER">%2$s</xliff:g> හරහා"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"හඬ තැපෑල"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"මි<xliff:g id="MINUTES">%s</xliff:g> ත<xliff:g id="SECONDS">%s</xliff:g>"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"තත්<xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"මි<xliff:g id="MINUTES">%d</xliff:g> ත<xliff:g id="SECONDS">%d</xliff:g>"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"තත්<xliff:g id="SECONDS">%d</xliff:g>"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"මිනිත්තු <xliff:g id="MINUTES">%d</xliff:g> තත්පර <xliff:g id="SECONDS">%d</xliff:g>"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"තත්පර <xliff:g id="SECONDS">%d</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sk/strings.xml b/java/com/android/dialer/calllogutils/res/values-sk/strings.xml
index ee32a08..edd431a 100644
--- a/java/com/android/dialer/calllogutils/res/values-sk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sk/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"prostredníctvom čísla <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"v účte <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, prostredníctvom čísla <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Hlasová schránka"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min, <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sl/strings.xml b/java/com/android/dialer/calllogutils/res/values-sl/strings.xml
index 0cf0ab2..ee2a641 100644
--- a/java/com/android/dialer/calllogutils/res/values-sl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sl/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"prek številke <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"v računu <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, prek številke <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Odzivnik"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> min <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> min in <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sq/strings.xml b/java/com/android/dialer/calllogutils/res/values-sq/strings.xml
index b2a2835..764a35d 100644
--- a/java/com/android/dialer/calllogutils/res/values-sq/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sq/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"nëpërmjet <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"në <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, nëpërmjet <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Posta zanore"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> minuta e <xliff:g id="SECONDS">%s</xliff:g> sekonda"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> sekonda"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> minuta e <xliff:g id="SECONDS">%d</xliff:g> sekonda"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> sekonda"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minuta <xliff:g id="SECONDS">%d</xliff:g> sekonda"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekonda"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sr/strings.xml b/java/com/android/dialer/calllogutils/res/values-sr/strings.xml
index 49f7473..bef1b16 100644
--- a/java/com/android/dialer/calllogutils/res/values-sr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sr/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"преко <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"на <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, преко <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Говорна пошта"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> м <xliff:g id="SECONDS">%s</xliff:g> с"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> м <xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> мин <xliff:g id="SECONDS">%d</xliff:g> сек"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> сек"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sv/strings.xml b/java/com/android/dialer/calllogutils/res/values-sv/strings.xml
index eff7210..630af12 100644
--- a/java/com/android/dialer/calllogutils/res/values-sv/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sv/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"med <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"på <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, med <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Röstbrevlåda"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> m <xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> minuter, <xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> sekunder"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
index 7810fb1..fae34e4 100644
--- a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"kupitia <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"kwenye <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, kupitia <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Ujumbe wa sauti"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"Dakika <xliff:g id="MINUTES">%s</xliff:g> sekunde <xliff:g id="SECONDS">%s</xliff:g>"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"Sekunde <xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"Dakika <xliff:g id="MINUTES">%d</xliff:g> sekunde <xliff:g id="SECONDS">%d</xliff:g>"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"Sekunde <xliff:g id="SECONDS">%d</xliff:g>"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"Dakika <xliff:g id="MINUTES">%d</xliff:g> sekunde <xliff:g id="SECONDS">%d</xliff:g>"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"Sekunde <xliff:g id="SECONDS">%d</xliff:g>"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ta/strings.xml b/java/com/android/dialer/calllogutils/res/values-ta/strings.xml
index b3e60bb..4adbe0e 100644
--- a/java/com/android/dialer/calllogutils/res/values-ta/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ta/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> மூலம்"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> இல் <xliff:g id="NUMBER">%2$s</xliff:g> மூலம்"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"குரலஞ்சல்"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>நி <xliff:g id="SECONDS">%s</xliff:g>வி"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>வி"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>நி <xliff:g id="SECONDS">%d</xliff:g>வி"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>வி"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> நிமிடங்கள் <xliff:g id="SECONDS">%d</xliff:g> விநாடிகள்"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> விநாடிகள்"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-te/strings.xml b/java/com/android/dialer/calllogutils/res/values-te/strings.xml
index 4d65537..9147153 100644
--- a/java/com/android/dialer/calllogutils/res/values-te/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-te/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> ద్వారా"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>లో, <xliff:g id="NUMBER">%2$s</xliff:g> ద్వారా"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"వాయిస్ మెయిల్"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>ని <xliff:g id="SECONDS">%s</xliff:g>సె"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>సె"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>ని <xliff:g id="SECONDS">%d</xliff:g>సె"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>సె"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> నిమిషాల <xliff:g id="SECONDS">%d</xliff:g> సెకన్లు"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> సెకన్లు"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-th/strings.xml b/java/com/android/dialer/calllogutils/res/values-th/strings.xml
index 46d9ec0..33bf725 100644
--- a/java/com/android/dialer/calllogutils/res/values-th/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-th/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"ผ่าน <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"ใน <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> ผ่าน <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"ข้อความเสียง"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> นาที <xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> นาที <xliff:g id="SECONDS">%d</xliff:g> วินาที"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> วินาที"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> นาที <xliff:g id="SECONDS">%d</xliff:g> วินาที"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> วินาที"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-tl/strings.xml b/java/com/android/dialer/calllogutils/res/values-tl/strings.xml
index b4f4045..b4d3e49 100644
--- a/java/com/android/dialer/calllogutils/res/values-tl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-tl/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"sa pamamagitan ng <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"sa <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, sa pamamagitan ng <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Voicemail"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> (na) min. <xliff:g id="SECONDS">%s</xliff:g> (na) segundo"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> (na) segundo"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> (na) min. <xliff:g id="SECONDS">%d</xliff:g> (na) segundo"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> (na) segundo"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> (na) minuto <xliff:g id="SECONDS">%d</xliff:g> (na) segundo"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> (na) segundo"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
index 1a2e762..b8dc84c 100644
--- a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> kullanılarak"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="NUMBER">%2$s</xliff:g> kullanılarak <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> hesabında"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Sesli mesaj"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> dk. <xliff:g id="SECONDS">%s</xliff:g> sn."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> sn."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> dk. <xliff:g id="SECONDS">%d</xliff:g> sn."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> sn."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> dakika <xliff:g id="SECONDS">%d</xliff:g> saniye"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> saniye"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-uk/strings.xml b/java/com/android/dialer/calllogutils/res/values-uk/strings.xml
index 5f3e0ae..c62f2b0 100644
--- a/java/com/android/dialer/calllogutils/res/values-uk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-uk/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"на номер <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"на <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> на номер <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Голосова пошта"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> хв <xliff:g id="SECONDS">%s</xliff:g> с"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> хв <xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> хв <xliff:g id="SECONDS">%d</xliff:g> с"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> с"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ur/strings.xml b/java/com/android/dialer/calllogutils/res/values-ur/strings.xml
index 9872d43..e9a1154 100644
--- a/java/com/android/dialer/calllogutils/res/values-ur/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ur/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"بذریعہ <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g> پر، بذریعہ <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"صوتی میل"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>منٹ <xliff:g id="SECONDS">%s</xliff:g>سیکنڈ"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>سیکنڈ"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>منٹ <xliff:g id="SECONDS">%d</xliff:g>سیکنڈ"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>سیکنڈ"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> منٹ <xliff:g id="SECONDS">%d</xliff:g> سیکنڈ"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> سیکنڈ"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-uz/strings.xml b/java/com/android/dialer/calllogutils/res/values-uz/strings.xml
index 7917f47..b1fe269 100644
--- a/java/com/android/dialer/calllogutils/res/values-uz/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-uz/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, <xliff:g id="NUMBER">%2$s</xliff:g> raqami orqali"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Ovozli pochta"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> daq. <xliff:g id="SECONDS">%s</xliff:g> son."</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> son."</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> daq. <xliff:g id="SECONDS">%d</xliff:g> son."</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> son."</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> daqiqa <xliff:g id="SECONDS">%d</xliff:g> soniya"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> soniya"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-vi/strings.xml b/java/com/android/dialer/calllogutils/res/values-vi/strings.xml
index b722dc2..7909975 100644
--- a/java/com/android/dialer/calllogutils/res/values-vi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-vi/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"qua <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"trên <xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, qua <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Thư thoại"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> phút <xliff:g id="SECONDS">%s</xliff:g> giây"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> giây"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> phút <xliff:g id="SECONDS">%d</xliff:g> giây"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> giây"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> phút <xliff:g id="SECONDS">%d</xliff:g> giây"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> giây"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml
index 6f20642..0fd41e8 100644
--- a/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"通过 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"帐号：<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>，通过 <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"语音邮件"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> 分 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> 分 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml
index 83b68ac..57c6693 100644
--- a/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"透過 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"在 <xliff:g id="PHONEACCOUNT">%1$s</xliff:g> 上透過 <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"留言"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> 分 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> 分鐘 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml
index 1566f05..e981648 100644
--- a/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"透過 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>，透過 <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"語音留言"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g> 分鐘 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g> 分鐘 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> 分 <xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> 秒"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zu/strings.xml b/java/com/android/dialer/calllogutils/res/values-zu/strings.xml
index 289ff34..226d07d 100644
--- a/java/com/android/dialer/calllogutils/res/values-zu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zu/strings.xml
@@ -35,6 +35,8 @@
     <string name="description_via_number" msgid="7682575124846343076">"nge-<xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="description_via_number_phone_account" msgid="4345445677508018830">"ku-<xliff:g id="PHONEACCOUNT">%1$s</xliff:g>, nge-<xliff:g id="NUMBER">%2$s</xliff:g>"</string>
     <string name="voicemail_string" msgid="6029775151483803006">"Ivoyisimeyili"</string>
-    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%s</xliff:g>m <xliff:g id="SECONDS">%s</xliff:g>s"</string>
-    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%s</xliff:g>s"</string>
+    <string name="call_details_duration_format" msgid="296780245582838089">"<xliff:g id="MINUTES">%d</xliff:g>m <xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_short_duration_format" msgid="8079910850626312453">"<xliff:g id="SECONDS">%d</xliff:g>s"</string>
+    <string name="call_details_duration_format_a11y" msgid="5116338920917720252">"<xliff:g id="MINUTES">%d</xliff:g> amaminithi <xliff:g id="SECONDS">%d</xliff:g> amasekhondi"</string>
+    <string name="call_details_short_duration_format_a11y" msgid="4971559778168100952">"<xliff:g id="SECONDS">%d</xliff:g> amasekhondi"</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values/strings.xml b/java/com/android/dialer/calllogutils/res/values/strings.xml
index 01a5a9b..22bfb7b 100644
--- a/java/com/android/dialer/calllogutils/res/values/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values/strings.xml
@@ -83,8 +83,14 @@
   <string name="voicemail_string">Voicemail</string>
 
   <!-- A nicely formatted call duration displayed when viewing call details. For example "42m 28s" -->
-  <string name="call_details_duration_format"><xliff:g example="42" id="minutes">%s</xliff:g>m <xliff:g example="28" id="seconds">%s</xliff:g>s</string>
+  <string name="call_details_duration_format"><xliff:g example="42" id="minutes">%d</xliff:g>m <xliff:g example="28" id="seconds">%d</xliff:g>s</string>
 
   <!-- A nicely formatted call duration displayed when viewing call details for duration less than 1 minute. For example "28s" -->
-  <string name="call_details_short_duration_format"><xliff:g example="28" id="seconds">%s</xliff:g>s</string>
+  <string name="call_details_short_duration_format"><xliff:g example="28" id="seconds">%d</xliff:g>s</string>
+
+  <!-- A call duration announced when viewing call details for accessibility. For example "42 minutes 28 seconds".-->
+  <string name="call_details_duration_format_a11y"><xliff:g example="42" id="minutes">%d</xliff:g> minutes <xliff:g example="28" id="seconds">%d</xliff:g> seconds</string>
+
+  <!-- A call duration announced when viewing call details for accessibility. For example "28 sec" -->
+  <string name="call_details_short_duration_format_a11y"><xliff:g example="28" id="seconds">%d</xliff:g> seconds</string>
 </resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
index 80ed725..4b6d81a 100644
--- a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
@@ -28,10 +28,14 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
+import javax.inject.Inject;
 
 /** The production {@link DialerExecutorFactory}. */
 public class DefaultDialerExecutorFactory implements DialerExecutorFactory {
 
+  @Inject
+  public DefaultDialerExecutorFactory() {}
+
   @Override
   @NonNull
   public <InputT, OutputT> DialerExecutor.Builder<InputT, OutputT> createUiTaskBuilder(
@@ -116,14 +120,15 @@
     @NonNull
     @Override
     public DialerExecutor<InputT> build() {
-      dialerUiTaskFragment = DialerUiTaskFragment.create(
-          fragmentManager,
-          id,
-          super.worker,
-          super.successListener,
-          super.failureListener,
-          serialExecutorService,
-          parallelExecutorService);
+      dialerUiTaskFragment =
+          DialerUiTaskFragment.create(
+              fragmentManager,
+              id,
+              super.worker,
+              super.successListener,
+              super.failureListener,
+              serialExecutorService,
+              parallelExecutorService);
       return new UiDialerExecutor<>(dialerUiTaskFragment);
     }
   }
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutor.java b/java/com/android/dialer/common/concurrent/DialerExecutor.java
index b0d1eac..0237e3a 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutor.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutor.java
@@ -33,7 +33,7 @@
   interface Worker<InputT, OutputT> {
     @WorkerThread
     @Nullable
-    OutputT doInBackground(@Nullable InputT input);
+    OutputT doInBackground(@Nullable InputT input) throws Throwable;
   }
 
   /** Functional interface for handling the result of background work. */
diff --git a/java/com/android/dialer/common/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/common/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..52b5f67
--- /dev/null
+++ b/java/com/android/dialer/common/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="network_name_wifi" msgid="3026388992566895417">"Wi-Fi"</string>
+    <string name="network_name_mobile" msgid="7655711935020766459">"Mobilni uređaji"</string>
+</resources>
diff --git a/java/com/android/dialer/constants/ScheduledJobIds.java b/java/com/android/dialer/constants/ScheduledJobIds.java
index 88e9a3d..fdb3fac 100644
--- a/java/com/android/dialer/constants/ScheduledJobIds.java
+++ b/java/com/android/dialer/constants/ScheduledJobIds.java
@@ -28,4 +28,7 @@
 
   // This job refreshes dynamic launcher shortcuts.
   public static final int SHORTCUT_PERIODIC_JOB = 100;
+
+  public static final int VVM_TASK_SCHEDULER_JOB = 200;
+  public static final int VVM_STATUS_CHECK_JOB = 201;
 }
diff --git a/java/com/android/dialer/contactsfragment/AndroidManifest.xml b/java/com/android/dialer/contactsfragment/AndroidManifest.xml
new file mode 100644
index 0000000..3c27500
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/AndroidManifest.xml
@@ -0,0 +1,16 @@
+<!--
+ ~ Copyright (C) 2017 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  package="com.android.dialer.contactsfragment"/>
diff --git a/java/com/android/dialer/contactsfragment/ContactViewHolder.java b/java/com/android/dialer/contactsfragment/ContactViewHolder.java
new file mode 100644
index 0000000..5df106d
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/ContactViewHolder.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.contactsfragment;
+
+import android.net.Uri;
+import android.provider.ContactsContract.QuickContact;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+import com.android.dialer.common.Assert;
+
+/** View holder for a contact. */
+final class ContactViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
+
+  private final TextView header;
+  private final TextView name;
+  private final QuickContactBadge photo;
+
+  private String headerText;
+  private Uri contactUri;
+
+  public ContactViewHolder(View itemView) {
+    super(itemView);
+    itemView.findViewById(R.id.click_target).setOnClickListener(this);
+    header = (TextView) itemView.findViewById(R.id.header);
+    name = (TextView) itemView.findViewById(R.id.contact_name);
+    photo = (QuickContactBadge) itemView.findViewById(R.id.photo);
+  }
+
+  /**
+   * Binds the ViewHolder with relevant data.
+   *
+   * @param headerText populates the header view.
+   * @param displayName populates the name view.
+   * @param contactUri to be shown by the contact card on photo click.
+   * @param showHeader if header view should be shown {@code True}, {@code False} otherwise.
+   */
+  public void bind(String headerText, String displayName, Uri contactUri, boolean showHeader) {
+    Assert.checkArgument(!TextUtils.isEmpty(displayName));
+    this.contactUri = contactUri;
+    this.headerText = headerText;
+
+    name.setText(displayName);
+    header.setText(headerText);
+    header.setVisibility(showHeader ? View.VISIBLE : View.INVISIBLE);
+  }
+
+  public QuickContactBadge getPhoto() {
+    return photo;
+  }
+
+  public String getHeader() {
+    return headerText;
+  }
+
+  public TextView getHeaderView() {
+    return header;
+  }
+
+  @Override
+  public void onClick(View v) {
+    QuickContact.showQuickContact(
+        photo.getContext(), photo, contactUri, QuickContact.MODE_LARGE, null /* excludeMimes */);
+  }
+}
diff --git a/java/com/android/dialer/contactsfragment/ContactsAdapter.java b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
new file mode 100644
index 0000000..4692eff
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.contactsfragment;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract.Contacts;
+import android.support.v4.util.ArrayMap;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.dialer.common.Assert;
+
+/** List adapter for the union of all contacts associated with every account on the device. */
+final class ContactsAdapter extends RecyclerView.Adapter<ContactViewHolder> {
+
+  private final ArrayMap<ContactViewHolder, Integer> holderMap = new ArrayMap<>();
+  private final Context context;
+  private final Cursor cursor;
+
+  // List of contact sublist headers
+  private final String[] headers;
+
+  // Number of contacts that correspond to each header in {@code headers}.
+  private final int[] counts;
+
+  public ContactsAdapter(Context context, Cursor cursor) {
+    this.context = context;
+    this.cursor = cursor;
+    headers = cursor.getExtras().getStringArray(Contacts.EXTRA_ADDRESS_BOOK_INDEX_TITLES);
+    counts = cursor.getExtras().getIntArray(Contacts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS);
+  }
+
+  @Override
+  public ContactViewHolder onCreateViewHolder(ViewGroup parent, int position) {
+    return new ContactViewHolder(
+        LayoutInflater.from(context).inflate(R.layout.contact_row, parent, false));
+  }
+
+  @Override
+  public void onBindViewHolder(ContactViewHolder contactViewHolder, int position) {
+    holderMap.put(contactViewHolder, position);
+    cursor.moveToPosition(position);
+
+    String name = getDisplayName(cursor);
+    String header = getHeaderString(position);
+    Uri contactUri = getContactUri(cursor);
+
+    ContactPhotoManager.getInstance(context)
+        .loadDialerThumbnailOrPhoto(
+            contactViewHolder.getPhoto(),
+            contactUri,
+            getPhotoId(cursor),
+            getPhotoUri(cursor),
+            name,
+            0);
+
+    String photoDescription =
+        context.getString(com.android.contacts.common.R.string.description_quick_contact_for, name);
+    contactViewHolder.getPhoto().setContentDescription(photoDescription);
+
+    // Always show the view holder's header if it's the first item in the list. Otherwise, compare
+    // it to the previous element and only show the anchored header if the row elements fall into
+    // the same sublists.
+    if (position == 0) {
+      contactViewHolder.bind(header, name, contactUri, true);
+    } else {
+      boolean showHeader = !header.equals(getHeaderString(position - 1));
+      contactViewHolder.bind(header, name, contactUri, showHeader);
+    }
+  }
+
+  public void refreshHeaders() {
+    for (ContactViewHolder holder : holderMap.keySet()) {
+      onBindViewHolder(holder, holderMap.get(holder));
+    }
+  }
+
+  @Override
+  public int getItemCount() {
+    return cursor == null ? 0 : cursor.getCount();
+  }
+
+  public String getHeader(int position) {
+    return getHolderAt(position).getHeader();
+  }
+
+  public TextView getHeaderView(int position) {
+    return getHolderAt(position).getHeaderView();
+  }
+
+  public void setHeaderVisibility(int position, int visibility) {
+    getHolderAt(position).getHeaderView().setVisibility(visibility);
+  }
+
+  private ContactViewHolder getHolderAt(int position) {
+    for (ContactViewHolder holder : holderMap.keySet()) {
+      if (holderMap.get(holder) == position) {
+        return holder;
+      }
+    }
+    throw Assert.createIllegalStateFailException("No holder for position: " + position);
+  }
+
+  private static String getDisplayName(Cursor cursor) {
+    return cursor.getString(ContactsCursorLoader.CONTACT_DISPLAY_NAME);
+  }
+
+  private static long getPhotoId(Cursor cursor) {
+    return cursor.getLong(ContactsCursorLoader.CONTACT_PHOTO_ID);
+  }
+
+  private static Uri getPhotoUri(Cursor cursor) {
+    String photoUri = cursor.getString(ContactsCursorLoader.CONTACT_PHOTO_URI);
+    return photoUri == null ? null : Uri.parse(photoUri);
+  }
+
+  private static Uri getContactUri(Cursor cursor) {
+    long contactId = cursor.getLong(ContactsCursorLoader.CONTACT_ID);
+    String lookupKey = cursor.getString(ContactsCursorLoader.CONTACT_LOOKUP_KEY);
+    return Contacts.getLookupUri(contactId, lookupKey);
+  }
+
+  private String getHeaderString(int position) {
+    int index = -1;
+    int sum = 0;
+    while (sum <= position) {
+      sum += counts[++index];
+    }
+    return headers[index];
+  }
+}
diff --git a/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
new file mode 100644
index 0000000..6d4d210
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.contactsfragment;
+
+import android.content.Context;
+import android.content.CursorLoader;
+import android.provider.ContactsContract.Contacts;
+
+/** Cursor Loader for {@link ContactsFragment}. */
+final class ContactsCursorLoader extends CursorLoader {
+
+  public static final int CONTACT_ID = 0;
+  public static final int CONTACT_DISPLAY_NAME = 1;
+  public static final int CONTACT_PHOTO_ID = 2;
+  public static final int CONTACT_PHOTO_URI = 3;
+  public static final int CONTACT_LOOKUP_KEY = 4;
+
+  public static final String[] CONTACTS_PROJECTION =
+      new String[] {
+        Contacts._ID, // 0
+        Contacts.DISPLAY_NAME_PRIMARY, // 1
+        Contacts.PHOTO_ID, // 2
+        Contacts.PHOTO_THUMBNAIL_URI, // 3
+        Contacts.LOOKUP_KEY, // 4
+      };
+
+  public ContactsCursorLoader(Context context) {
+    super(
+        context,
+        Contacts.CONTENT_URI
+            .buildUpon()
+            .appendQueryParameter(Contacts.EXTRA_ADDRESS_BOOK_INDEX, "true")
+            .build(),
+        CONTACTS_PROJECTION,
+        null,
+        null,
+        Contacts.SORT_KEY_PRIMARY + " ASC");
+  }
+}
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
new file mode 100644
index 0000000..1822060
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2017 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 com.android.dialer.contactsfragment;
+
+import android.app.Fragment;
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Loader;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnScrollChangeListener;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+/** Fragment containing a list of all contacts. */
+public class ContactsFragment extends Fragment
+    implements LoaderCallbacks<Cursor>, OnScrollChangeListener {
+
+  private TextView anchoredHeader;
+  private RecyclerView recyclerView;
+  private LinearLayoutManager manager;
+  private ContactsAdapter adapter;
+
+  @Nullable
+  @Override
+  public View onCreateView(
+      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+    View view = inflater.inflate(R.layout.fragment_contacts, container, false);
+    anchoredHeader = (TextView) view.findViewById(R.id.header);
+    manager = new LinearLayoutManager(getContext());
+
+    // TODO: Handle contacts permission denied view
+    // TODO: Handle 0 contacts layout
+    recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
+    recyclerView.setLayoutManager(manager);
+    getLoaderManager().initLoader(0, null, this);
+    return view;
+  }
+
+  @Override
+  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+    return new ContactsCursorLoader(getContext());
+  }
+
+  @Override
+  public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
+    // TODO setup fast scroller.
+    adapter = new ContactsAdapter(getContext(), cursor);
+    recyclerView.setAdapter(adapter);
+    if (adapter.getItemCount() > 1) {
+      recyclerView.setOnScrollChangeListener(this);
+    }
+  }
+
+  @Override
+  public void onLoaderReset(Loader<Cursor> loader) {
+    recyclerView.setAdapter(null);
+    recyclerView.setOnScrollChangeListener(null);
+    adapter = null;
+  }
+
+  /*
+   * When our recycler view updates, we need to ensure that our row headers and anchored header
+   * are in the correct state.
+   *
+   * The general rule is, when the row headers are shown, our anchored header is hidden. When the
+   * recycler view is scrolling through a sublist that has more than one element, we want to show
+   * out anchored header, to create the illusion that our row header has been anchored. In all
+   * other situations, we want to hide the anchor because that means we are transitioning between
+   * two sublists.
+   */
+  @Override
+  public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
+    int firstVisibleItem = manager.findFirstVisibleItemPosition();
+    int firstCompletelyVisible = manager.findFirstCompletelyVisibleItemPosition();
+
+    // If the user swipes to the top of the list very quickly, there is some strange behavior
+    // between this method updating headers and adapter#onBindViewHolder updating headers.
+    // To overcome this, we refresh the headers to ensure they are correct.
+    if (firstVisibleItem == firstCompletelyVisible && firstVisibleItem == 0) {
+      adapter.refreshHeaders();
+      anchoredHeader.setVisibility(View.INVISIBLE);
+    } else {
+      boolean showAnchor =
+          adapter.getHeader(firstVisibleItem).equals(adapter.getHeader(firstCompletelyVisible));
+      anchoredHeader.setText(adapter.getHeader(firstCompletelyVisible));
+      anchoredHeader.setVisibility(showAnchor ? View.VISIBLE : View.INVISIBLE);
+
+      int rowHeaderVisibility = showAnchor ? View.INVISIBLE : View.VISIBLE;
+      adapter.setHeaderVisibility(firstVisibleItem, rowHeaderVisibility);
+      adapter.setHeaderVisibility(firstCompletelyVisible, rowHeaderVisibility);
+    }
+  }
+}
diff --git a/java/com/android/dialer/contactsfragment/res/layout/contact_row.xml b/java/com/android/dialer/contactsfragment/res/layout/contact_row.xml
new file mode 100644
index 0000000..af87c7f
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/res/layout/contact_row.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/row_height">
+
+  <include layout="@layout/header"/>
+
+  <LinearLayout
+      android:id="@+id/click_target"
+      android:orientation="horizontal"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:layout_marginStart="@dimen/header_width"
+      android:layout_marginEnd="@dimen/row_end_margin"
+      android:paddingTop="@dimen/row_top_bottom_padding"
+      android:paddingBottom="@dimen/row_top_bottom_padding"
+      android:paddingStart="@dimen/row_start_padding"
+      android:gravity="center_vertical"
+      android:background="?android:attr/selectableItemBackground">
+
+    <QuickContactBadge
+        android:id="@+id/photo"
+        android:layout_width="@dimen/photo_size"
+        android:layout_height="@dimen/photo_size"
+        android:clickable="false"/>
+
+    <TextView
+        android:id="@+id/contact_name"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingStart="@dimen/text_padding_start"
+        android:paddingEnd="@dimen/text_padding_end"
+        android:gravity="center_vertical|start"
+        android:textSize="@dimen/text_size"
+        android:textColor="@color/dialer_primary_text_color"
+        android:fontFamily="sans-serif"/>
+  </LinearLayout>
+</FrameLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml b/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
new file mode 100644
index 0000000..67b490f
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+  <android.support.v7.widget.RecyclerView
+      android:id="@+id/recycler_view"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:background="@color/background_dialer_white"/>
+
+  <!-- Anchored header view -->
+  <include layout="@layout/header"/>
+</FrameLayout>
diff --git a/java/com/android/dialer/contactsfragment/res/layout/header.xml b/java/com/android/dialer/contactsfragment/res/layout/header.xml
new file mode 100644
index 0000000..cb5e78a
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/res/layout/header.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<TextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/header"
+    android:layout_width="@dimen/header_width"
+    android:layout_height="@dimen/row_height"
+    android:textColor="@color/dialer_theme_color"
+    android:gravity="center"
+    android:textSize="@dimen/text_size"
+    android:textStyle="bold"
+    android:fontFamily="sans-serif-medium"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/contactsfragment/res/values/dimens.xml b/java/com/android/dialer/contactsfragment/res/values/dimens.xml
new file mode 100644
index 0000000..e9d73e9
--- /dev/null
+++ b/java/com/android/dialer/contactsfragment/res/values/dimens.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+  <dimen name="photo_size">40dp</dimen>
+  <dimen name="header_width">56dp</dimen>
+  <dimen name="row_height">56dp</dimen>
+  <dimen name="row_start_padding">16dp</dimen>
+  <dimen name="row_end_margin">16dp</dimen>
+  <dimen name="row_top_bottom_padding">8dp</dimen>
+
+  <dimen name="text_padding_start">16dp</dimen>
+  <dimen name="text_padding_end">8dp</dimen>
+  <dimen name="text_size">16sp</dimen>
+</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_close_black_24dp.png b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_close_black_24dp.png
new file mode 100644
index 0000000..1a9cd75
--- /dev/null
+++ b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_close_black_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_dialpad_delete.png b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_dialpad_delete.png
new file mode 100644
index 0000000..e588d90
--- /dev/null
+++ b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_dialpad_delete.png
Binary files differ
diff --git a/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_dialpad_voicemail.png b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_dialpad_voicemail.png
new file mode 100644
index 0000000..4706112
--- /dev/null
+++ b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_dialpad_voicemail.png
Binary files differ
diff --git a/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_overflow_menu.png b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_overflow_menu.png
new file mode 100644
index 0000000..262e9df
--- /dev/null
+++ b/java/com/android/dialer/dialpadview/res/drawable-hdpi/ic_overflow_menu.png
Binary files differ
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_view.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_view.xml
index 47112fb..7787186 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_view.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_view.xml
@@ -18,6 +18,8 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
+  android:clipChildren="false"
+  android:clipToPadding="false"
   android:theme="?attr/dialpad_style">
   <include layout="@layout/dialpad_view_unthemed"/>
 </FrameLayout>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml
index 9f69f98..838f1ec 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml
@@ -21,6 +21,7 @@
   android:layout_gravity="bottom"
   android:background="?attr/dialpad_background"
   android:clickable="true"
+  android:elevation="?attr/dialpad_elevation"
   android:layoutDirection="ltr"
   android:orientation="vertical">
 
diff --git a/java/com/android/dialer/dialpadview/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/dialpadview/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..24ea308
--- /dev/null
+++ b/java/com/android/dialer/dialpadview/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="description_dialpad_back" msgid="6226488105558971135">"Idite nazad"</string>
+    <string name="description_dialpad_overflow" msgid="5984341386518189787">"Još opcija"</string>
+    <string name="description_delete_button" msgid="8431313818404527096">"backspace"</string>
+    <string name="description_image_button_plus" msgid="8936338119824589388">"plus"</string>
+    <string name="description_voicemail_button" msgid="4187006295368768215">"govorna pošta"</string>
+</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values/attrs.xml b/java/com/android/dialer/dialpadview/res/values/attrs.xml
index 273879f..d73946e 100644
--- a/java/com/android/dialer/dialpadview/res/values/attrs.xml
+++ b/java/com/android/dialer/dialpadview/res/values/attrs.xml
@@ -35,5 +35,6 @@
     <attr format="color" name="dialpad_icon_tint"/>
     <attr format="color" name="dialpad_voicemail_tint"/>
     <attr format="color" name="dialpad_background"/>
+    <attr format="dimension" name="dialpad_elevation"/>
   </declare-styleable>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values/styles.xml b/java/com/android/dialer/dialpadview/res/values/styles.xml
index 2fa2c3f..9d30021 100644
--- a/java/com/android/dialer/dialpadview/res/values/styles.xml
+++ b/java/com/android/dialer/dialpadview/res/values/styles.xml
@@ -96,6 +96,7 @@
       @dimen/dialpad_zero_key_number_default_margin_bottom
     </item>
     <item name="dialpad_end_key_spacing">@dimen/dialpad_bottom_space_height</item>
+    <item name="dialpad_elevation">0dp</item>
   </style>
 
   <style name="Dialpad.Light">
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
index 978fb13..fa822a6 100644
--- a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
+++ b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
@@ -20,9 +20,9 @@
 import android.support.annotation.MainThread;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import com.android.dialer.calldetails.nano.CallDetailsEntries;
-import com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry;
-import com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult;
+import com.android.dialer.calldetails.CallDetailsEntries;
+import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
+import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
 import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
 import com.android.dialer.multimedia.MultimediaData;
 import java.lang.annotation.Retention;
diff --git a/java/com/android/dialer/enrichedcall/historyquery/nano/HistoryResult.java b/java/com/android/dialer/enrichedcall/historyquery/nano/HistoryResult.java
deleted file mode 100644
index 2fdc2da..0000000
--- a/java/com/android/dialer/enrichedcall/historyquery/nano/HistoryResult.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.enrichedcall.historyquery.proto.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class HistoryResult
-    extends com.google.protobuf.nano.ExtendableMessageNano<HistoryResult> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int INCOMING_CALL_COMPOSER = 1;
-    public static final int OUTGOING_CALL_COMPOSER = 2;
-    public static final int INCOMING_POST_CALL = 3;
-    public static final int OUTGOING_POST_CALL = 4;
-  }
-
-  private static volatile HistoryResult[] _emptyArray;
-
-  public static HistoryResult[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new HistoryResult[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // optional .com.android.dialer.enrichedcall.historyquery.proto.HistoryResult.Type type = 1;
-  public int type;
-
-  // optional string text = 2;
-  public java.lang.String text;
-
-  // optional string image_uri = 4;
-  public java.lang.String imageUri;
-
-  // optional string image_content_type = 5;
-  public java.lang.String imageContentType;
-
-  // optional int64 timestamp = 7;
-  public long timestamp;
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.enrichedcall.historyquery.proto.HistoryResult)
-
-  public HistoryResult() {
-    clear();
-  }
-
-  public HistoryResult clear() {
-    type =
-        com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type
-            .INCOMING_CALL_COMPOSER;
-    text = "";
-    imageUri = "";
-    imageContentType = "";
-    timestamp = 0L;
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output)
-      throws java.io.IOException {
-    if (this.type
-        != com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type
-            .INCOMING_CALL_COMPOSER) {
-      output.writeInt32(1, this.type);
-    }
-    if (this.text != null && !this.text.equals("")) {
-      output.writeString(2, this.text);
-    }
-    if (this.imageUri != null && !this.imageUri.equals("")) {
-      output.writeString(4, this.imageUri);
-    }
-    if (this.imageContentType != null && !this.imageContentType.equals("")) {
-      output.writeString(5, this.imageContentType);
-    }
-    if (this.timestamp != 0L) {
-      output.writeInt64(7, this.timestamp);
-    }
-    super.writeTo(output);
-  }
-
-  @Override
-  protected int computeSerializedSize() {
-    int size = super.computeSerializedSize();
-    if (this.type
-        != com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type
-            .INCOMING_CALL_COMPOSER) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt32Size(1, this.type);
-    }
-    if (this.text != null && !this.text.equals("")) {
-      size += com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(2, this.text);
-    }
-    if (this.imageUri != null && !this.imageUri.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(4, this.imageUri);
-    }
-    if (this.imageContentType != null && !this.imageContentType.equals("")) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeStringSize(
-              5, this.imageContentType);
-    }
-    if (this.timestamp != 0L) {
-      size +=
-          com.google.protobuf.nano.CodedOutputByteBufferNano.computeInt64Size(7, this.timestamp);
-    }
-    return size;
-  }
-
-  @Override
-  public HistoryResult mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-        case 8:
-          {
-            int initialPos = input.getPosition();
-            int value = input.readInt32();
-            switch (value) {
-              case com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type
-                  .INCOMING_CALL_COMPOSER:
-              case com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type
-                  .OUTGOING_CALL_COMPOSER:
-              case com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type
-                  .INCOMING_POST_CALL:
-              case com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult.Type
-                  .OUTGOING_POST_CALL:
-                this.type = value;
-                break;
-              default:
-                input.rewindToPosition(initialPos);
-                storeUnknownField(input, tag);
-                break;
-            }
-            break;
-          }
-        case 18:
-          {
-            this.text = input.readString();
-            break;
-          }
-        case 34:
-          {
-            this.imageUri = input.readString();
-            break;
-          }
-        case 42:
-          {
-            this.imageContentType = input.readString();
-            break;
-          }
-        case 56:
-          {
-            this.timestamp = input.readInt64();
-            break;
-          }
-      }
-    }
-  }
-
-  public static HistoryResult parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new HistoryResult(), data);
-  }
-
-  public static HistoryResult parseFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    return new HistoryResult().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto b/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto
new file mode 100644
index 0000000..62d013a
--- /dev/null
+++ b/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto
@@ -0,0 +1,23 @@
+syntax = "proto2";
+
+option java_package = "com.android.dialer.enrichedcall.historyquery.proto";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+package com.android.dialer.enrichedcall.historyquery.proto;
+
+// Holds data that was used in an enrichedcall in the past
+message HistoryResult {
+  optional Type type = 1;
+  optional string text = 2;
+  optional string image_uri = 4;
+  optional string image_content_type = 5;
+  optional int64 timestamp = 7;
+
+  enum Type {
+    INCOMING_CALL_COMPOSER = 1;
+    OUTGOING_CALL_COMPOSER = 2;
+    INCOMING_POST_CALL = 3;
+    OUTGOING_POST_CALL = 4;
+  }
+}
diff --git a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
index bedfdae..1d008ca 100644
--- a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
+++ b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
@@ -19,13 +19,13 @@
 import android.support.annotation.MainThread;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import com.android.dialer.calldetails.nano.CallDetailsEntries;
-import com.android.dialer.calldetails.nano.CallDetailsEntries.CallDetailsEntry;
+import com.android.dialer.calldetails.CallDetailsEntries;
+import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.common.Assert;
 import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.enrichedcall.Session;
-import com.android.dialer.enrichedcall.historyquery.proto.nano.HistoryResult;
+import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
 import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
 import com.android.dialer.multimedia.MultimediaData;
 import java.util.List;
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index f333419..52f9d20 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -56,7 +56,7 @@
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.callintent.CallIntentParser;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.DialerUtils;
diff --git a/java/com/android/dialer/interactions/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/interactions/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..46db1d6
--- /dev/null
+++ b/java/com/android/dialer/interactions/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sms_disambig_title" msgid="369677069797534410">"Izbor broja"</string>
+    <string name="call_disambig_title" msgid="2395382326030227603">"Izbor broja"</string>
+    <string name="make_primary" msgid="9069345357862475091">"Zapamti ovaj izbor"</string>
+</resources>
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
index cf921c3..526cb20 100644
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ b/java/com/android/dialer/logging/LoggingBindings.java
@@ -14,17 +14,25 @@
 
 package com.android.dialer.logging;
 
+
 import android.app.Activity;
 
 /** Allows the container application to gather analytics. */
 public interface LoggingBindings {
 
   /**
+   * Logs an DialerImpression event that's not associated with a specific call.
+   *
+   * @param dialerImpression an integer representing what event occurred.
+   */
+  void logImpression(DialerImpression.Type dialerImpression);
+
+  /**
    * Logs an impression for a general dialer event that's not associated with a specific call.
    *
    * @param dialerImpression an integer representing what event occurred.
-   * @see com.android.dialer.logging.nano.DialerImpression
    */
+  @Deprecated
   void logImpression(int dialerImpression);
 
   /**
@@ -33,26 +41,26 @@
    * @param dialerImpression an integer representing what event occurred.
    * @param callId unique ID of the call.
    * @param callStartTimeMillis the absolute time when the call started.
-   * @see com.android.dialer.logging.nano.DialerImpression
    */
-  void logCallImpression(int dialerImpression, String callId, long callStartTimeMillis);
+  void logCallImpression(
+      DialerImpression.Type dialerImpression, String callId, long callStartTimeMillis);
 
   /**
    * Logs an interaction that occurred.
    *
    * @param interaction an integer representing what interaction occurred.
-   * @see com.android.dialer.logging.nano.InteractionEvent
+   * @see com.android.dialer.logging.InteractionEvent
    */
-  void logInteraction(int interaction);
+  void logInteraction(InteractionEvent.Type interaction);
 
   /**
    * Logs an event indicating that a screen was displayed.
    *
    * @param screenEvent an integer representing the displayed screen.
    * @param activity Parent activity of the displayed screen.
-   * @see com.android.dialer.logging.nano.ScreenEvent
+   * @see com.android.dialer.logging.ScreenEvent
    */
-  void logScreenView(int screenEvent, Activity activity);
+  void logScreenView(com.android.dialer.logging.ScreenEvent.Type screenEvent, Activity activity);
 
   /** Logs a hit event to the analytics server. */
   void sendHitEventAnalytics(String category, String action, String label, long value);
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
index 89c56eb..f7ca6ec 100644
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ b/java/com/android/dialer/logging/LoggingBindingsStub.java
@@ -20,16 +20,20 @@
 public class LoggingBindingsStub implements LoggingBindings {
 
   @Override
+  public void logImpression(DialerImpression.Type dialerImpression) {}
+
+  @Override
   public void logImpression(int dialerImpression) {}
 
   @Override
-  public void logCallImpression(int dialerImpression, String callId, long callStartTimeMillis) {}
+  public void logCallImpression(
+      DialerImpression.Type dialerImpression, String callId, long callStartTimeMillis) {}
 
   @Override
-  public void logInteraction(int interaction) {}
+  public void logInteraction(InteractionEvent.Type interaction) {}
 
   @Override
-  public void logScreenView(int screenEvent, Activity activity) {}
+  public void logScreenView(ScreenEvent.Type screenEvent, Activity activity) {}
 
   @Override
   public void sendHitEventAnalytics(String category, String action, String label, long value) {}
diff --git a/java/com/android/dialer/logging/contact_lookup_result.proto b/java/com/android/dialer/logging/contact_lookup_result.proto
new file mode 100644
index 0000000..c9624af
--- /dev/null
+++ b/java/com/android/dialer/logging/contact_lookup_result.proto
@@ -0,0 +1,32 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+message ContactLookupResult {
+  // The different results of a contact lookup done using a phone number.
+  enum Type {
+    UNKNOWN_LOOKUP_RESULT_TYPE = 0;
+
+    // Contact was not found in any of the sources.
+    NOT_FOUND = 1;
+
+    // Contact was found in the local database.
+    LOCAL_CONTACT = 2;
+
+    // Contact was found in Google Dialer's internal phone number cache
+    LOCAL_CACHE = 3;
+
+    // Contact was found via Google Caller ID
+    REMOTE = 4;
+
+    // Phone number was an emergency phone number
+    EMERGENCY = 5;
+
+    // Phone number was the SIM card's voicemail number
+    VOICEMAIL = 6;
+  }
+}
diff --git a/java/com/android/dialer/logging/contact_source.proto b/java/com/android/dialer/logging/contact_source.proto
new file mode 100644
index 0000000..ffd32de
--- /dev/null
+++ b/java/com/android/dialer/logging/contact_source.proto
@@ -0,0 +1,38 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+message ContactSource {
+  // Applies only to reports made from call history. If we have contact
+  // information for the phone number, this field indicates its source.
+  // Note that it represents the contact's status on the user's device at the
+  // time they made the spam report, which could be different from the
+  // number's status at the time they made or received the call.
+  // Type definitions are from the CachedContactInfo interface in
+  // google3/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
+  enum Type {
+    UNKNOWN_SOURCE_TYPE = 0;
+
+    // Personal contact
+    SOURCE_TYPE_DIRECTORY = 1;
+
+    // Contact from a custom extended directory
+    SOURCE_TYPE_EXTENDED = 2;
+
+    // Business number found via the People API
+    SOURCE_TYPE_PLACES = 3;
+
+    // Non-business number found via the People API
+    SOURCE_TYPE_PROFILE = 4;
+
+    // Number has Caller Name Presentation (CNAP) information. Calls in this
+    // category would have had ContactLookupResultType NOT_FOUND originally.
+    SOURCE_TYPE_CNAP = 5;
+
+    SOURCE_TYPE_CEQUINT_CALLER_ID = 6;
+  }
+}
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
new file mode 100644
index 0000000..e3369d3
--- /dev/null
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -0,0 +1,384 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+message DialerImpression {
+  // Event enums to be used for Impression Logging in Dialer.
+  // It's perfectly acceptable for this enum to be large
+  // Values should be from 1000 to 100000.
+  // Next Tag:1190
+  enum Type {
+
+    UNKNOWN_AOSP_EVENT_TYPE = 1000;
+
+    // User opened the app
+    APP_LAUNCHED = 1001;
+
+    // User pressed the speaker phone button
+    IN_CALL_SCREEN_TURN_ON_SPEAKERPHONE = 1002;
+
+    // User pressed the speaker phone button again
+    IN_CALL_SCREEN_TURN_ON_WIRED_OR_EARPIECE = 1003;
+
+    // Number not identified as spam and the user tapped the block/report spam button in the
+    // call log
+    CALL_LOG_BLOCK_REPORT_SPAM = 1004;
+
+    // Number identified as spam and the user tapped on the block number call log item
+    CALL_LOG_BLOCK_NUMBER = 1005;
+
+    // User tapped on the unblock number in the call log
+    // This does not deal with whether the user reported this spam or not while initially blocking
+    // For that refer to REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER. If the user had not reported it as
+    // spam they then have the option of directly unblocking the number, a success of which is
+    // logged in USER_ACTION_UNBLOCKED_NUMBER
+    CALL_LOG_UNBLOCK_NUMBER = 1006;
+
+    // Number was identified as spam, and the user tapped that it was not spam
+    CALL_LOG_REPORT_AS_NOT_SPAM = 1007;
+
+    // Confirmation dialog in which the user confirmed that the number was not spam
+    DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM = 1008;
+
+    // User unblocked a number and also acknowledged that the number is not spam
+    // This happens when the user had initially blocked a number and also claimed the number was
+    // spam and had now proceeded to undo that.
+    REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER = 1009
+      ;
+
+    // A number that was identified as spam and the user proceeded to block it. However this
+    // impression was to make sure that while blocking the number the user also acknowledged that
+    // they were going to be reporting this as spam. There is no option for the user in this case
+    // to not report it as spam and block it only. The only flow is:
+    // system identified number as spam -> user wants to block it -> confirmation dialog shows up
+    // asking user to acknowledge they want to block and report as spam -> user acknowledges and
+    // this is when this impression is sent
+    DIALOG_ACTION_CONFIRM_NUMBER_SPAM_INDIRECTLY_VIA_BLOCK_NUMBER = 1010;
+
+    // User reported the number as spam by tick marking on report spam when blocking
+    // the number via call log. This is for case where the user wants to block a number and also
+    // report it as spam
+    REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG = 1011
+      ;
+
+    // User made it to the last step and actually blocked the number
+    USER_ACTION_BLOCKED_NUMBER = 1012
+      ;
+
+    // User made it to the last step and actually unblocked the number
+    USER_ACTION_UNBLOCKED_NUMBER = 1013;
+
+    // User blocked a number, does not guarantee if the number was reported as spam or not
+    // To compute the number of blocked numbers that were reported as not spam and yet blocked
+    // Subtract this value from SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM. It would be
+    // interesting to see how this value compares with
+    // SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM
+    SPAM_AFTER_CALL_NOTIFICATION_BLOCK_NUMBER = 1014;
+
+    // Displays the dialog for first time spam calls with actions "Not spam", "Block", and
+    // "Dismiss".
+    SPAM_AFTER_CALL_NOTIFICATION_SHOW_SPAM_DIALOG = 1015;
+
+    // Displays the dialog for the first time unknown calls with actions "Add contact",
+    // "Block/report spam", and "Dismiss".
+    SPAM_AFTER_CALL_NOTIFICATION_SHOW_NON_SPAM_DIALOG = 1016;
+
+    // User added the number to contacts from the after call notification
+    SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS = 1019
+      ;
+
+    // User marked the number as spam on the after call notification flow
+    SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM = 1020
+      ;
+
+    SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_NOT_SPAM_AND_BLOCKED = 1021;
+
+    // User reported the number as not spam
+    SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM = 1022
+      ;
+
+    // User dismissed the spam notification
+    SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_SPAM_DIALOG = 1024;
+
+    // User dismissed the non spam notification
+    SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_NON_SPAM_DIALOG = 1025;
+
+    // From the service instead of an activity logs the number of times the number was marked as
+    // Spam by the user (e.g from the feedback prompt)
+    SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_SPAM = 1026;
+
+    // From the service instead of an activity logs the number of times the number was marked as
+    // Not Spam by the user (e.g from the feedback prompt)
+    SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_NOT_SPAM = 1027;
+
+    // User is in a active call i.e either incoming or outgoing
+    // This is mainly so we can assign an impression event to a call event i.e so that we may be
+    // able to stitch different types of events if they make sense e.g user pressed a speaker button
+    // and we want to associate that to a call event
+    USER_PARTICIPATED_IN_A_CALL = 1028
+      ;
+
+    // Incoming call is a spam call
+    INCOMING_SPAM_CALL = 1029;
+
+    // Incoming call is a non spam call
+    INCOMING_NON_SPAM_CALL = 1030;
+
+    // Spam notifications shown despite throttling
+    SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1041;
+
+    // Spam notifications not shown due to throttling
+    SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1042;
+
+    // Non spam notifications shown despite throttling
+    NON_SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1043;
+
+    // Non spam notifications not shown due to throttling
+    NON_SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1044;
+
+    // Voicemail status has updated in the voicemail tab and the change PIN
+    // prompt is shown.
+    VOICEMAIL_ALERT_SET_PIN_SHOWN = 1045;
+
+    // User has clicked the change PIN action in the voicemail tab
+    VOICEMAIL_ALERT_SET_PIN_CLICKED = 1046;
+
+    // User was not able to or did not participate in the call e.g missed calls, rejected calls
+    USER_DID_NOT_PARTICIPATE_IN_CALL = 1047;
+
+    // User deleted a call log entry
+    USER_DELETED_CALL_LOG_ITEM = 1048
+      ;
+
+    // User tapped on "Send a message"
+    CALL_LOG_SEND_MESSAGE = 1049
+      ;
+
+    // User tapped on "Add to contact"
+    CALL_LOG_ADD_TO_CONTACT = 1050
+      ;
+
+    // User tapped on "Create new contact"
+    CALL_LOG_CREATE_NEW_CONTACT = 1051
+      ;
+
+    // User deleted an entry from the voicemail tab
+    VOICEMAIL_DELETE_ENTRY = 1052
+      ;
+
+    // Voicemail call log entry was expanded. Could be either if the user tapped the voicemail
+    // call log entry or pressed the play button when the voicemail call log entry was not expanded
+    VOICEMAIL_EXPAND_ENTRY = 1053
+      ;
+
+    // The play button for voicemail call log entry was tapped directly (i.e when the voicemail
+    // call log entry was not expanded and the playbutton was tapped)
+    VOICEMAIL_PLAY_AUDIO_DIRECTLY= 1054
+      ;
+
+    // The play button after expanding the voicemail call log entry was tapped
+    VOICEMAIL_PLAY_AUDIO_AFTER_EXPANDING_ENTRY= 1055
+      ;
+
+    // Incoming call was rejected from the notifications
+    REJECT_INCOMING_CALL_FROM_NOTIFICATION= 1056
+      ;
+
+    // Incoming call was rejected from the answer screen including rejecting via sms and talkback
+    REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN= 1057
+      ;
+
+    // User tapped block and spam buttons in context menu, same as buttons in
+    // call log drop down
+    // menu (See 1004-1007).
+    CALL_LOG_CONTEXT_MENU_BLOCK_REPORT_SPAM = 1058;
+    CALL_LOG_CONTEXT_MENU_BLOCK_NUMBER = 1059;
+    CALL_LOG_CONTEXT_MENU_UNBLOCK_NUMBER = 1060;
+    CALL_LOG_CONTEXT_MENU_REPORT_AS_NOT_SPAM = 1061;
+
+    NEW_CONTACT_OVERFLOW = 1062;
+    NEW_CONTACT_FAB = 1063;
+
+    // The ToS is shown the user
+    VOICEMAIL_VVM3_TOS_SHOWN = 1064;
+
+    // The user has accepted the ToS
+    VOICEMAIL_VVM3_TOS_ACCEPTED = 1065;
+
+    // The user has went through the decline ToS dialog and VVM is disabled
+    VOICEMAIL_VVM3_TOS_DECLINED = 1066;
+
+    // The user has clicked the decline ToS button, and a conformation dialog
+    // was shown
+    VOICEMAIL_VVM3_TOS_DECLINE_CLICKED = 1067;
+
+    // The use has clicked the decline ToS button but the PIN has been
+    // randomized. A dialog to instruct the user to set the PIN has been shown
+    VOICEMAIL_VVM3_TOS_DECLINE_CHANGE_PIN_SHOWN = 1068;
+
+    // The user does not have a permission and are presented with a
+    // non-framework UI to request permission.
+    STORAGE_PERMISSION_DISPLAYED = 1069;
+    CAMERA_PERMISSION_DISPLAYED = 1074;
+
+    // The user is being shown the Android framework UI to request a permission.
+    STORAGE_PERMISSION_REQUESTED = 1070;
+    CAMERA_PERMISSION_REQUESTED = 1075;
+
+    // The user has permenantly denied a permission, so the user is being
+    // sent to dialer settings to grant permission.
+    STORAGE_PERMISSION_SETTINGS = 1071;
+    CAMERA_PERMISSION_SETTINGS = 1076;
+
+    // The user granted a permission.
+    STORAGE_PERMISSION_GRANTED = 1072;
+    CAMERA_PERMISSION_GRANTED = 1077;
+
+    // The user denied a permission.
+    STORAGE_PERMISSION_DENIED = 1073;
+    CAMERA_PERMISSION_DENIED = 1078;
+
+    // Voicemail config corruption is detected when in dialtacts activity.
+    VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_ACTIVITY = 1079;
+    // Voicemail config corruption is detected when a new voicemail notification
+    // has arrived.
+    VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_NOTIFICATION = 1080;
+
+    // Android Auto Backup and Restore (Dolly)
+    BACKUP_ON_BACKUP = 1081;
+    BACKUP_ON_FULL_BACKUP = 1082;
+    BACKUP_ON_BACKUP_DISABLED = 1083;
+    BACKUP_VOICEMAIL_BACKED_UP = 1084;
+    BACKUP_FULL_BACKED_UP = 1085;
+    BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086;
+
+    BACKUP_ON_QUOTA_EXCEEDED = 1087;
+
+    BACKUP_ON_RESTORE = 1088;
+    BACKUP_RESTORED_FILE = 1089;
+    BACKUP_RESTORED_VOICEMAIL = 1090;
+    BACKUP_ON_RESTORE_FINISHED = 1091;
+    BACKUP_ON_RESTORE_DISABLED = 1092;
+    BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093;
+    BACKUP_ON_RESTORE_IO_EXCEPTION = 1094;
+
+    BACKUP_MAX_VM_BACKUP_REACHED = 1095;
+
+    EVENT_ANSWER_HINT_ACTIVATED = 1096;
+    EVENT_ANSWER_HINT_DEACTIVATED = 1097;
+
+    VVM_TAB_VIEWED = 1098;
+
+    VVM_SHARE_VISIBLE = 1099;
+    VVM_SHARE_PRESSED = 1100;
+
+    OUTGOING_VIDEO_CALL = 1101;
+    INCOMING_VIDEO_CALL = 1102;
+    USER_PARTICIPATED_IN_A_VIDEO_CALL = 1103;
+
+    BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104;
+
+    // User tapped the 'Share and call' button to start the call composer
+    CALL_LOG_SHARE_AND_CALL = 1105;
+    CALL_COMPOSER_ACTIVITY_PLACE_RCS_CALL = 1106;
+    CALL_COMPOSER_ACTIVITY_SEND_AND_CALL_PRESSED_WHEN_SESSION_NOT_READY = 1107;
+
+    POST_CALL_PROMPT_USER_TO_SEND_MESSAGE_CLICKED = 1108;
+    POST_CALL_PROMPT_USER_TO_SEND_MESSAGE = 1109;
+    POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE = 1110;
+    POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE_CLICKED = 1111;
+
+    IN_CALL_SCREEN_TURN_ON_MUTE = 1112;
+    IN_CALL_SCREEN_TURN_OFF_MUTE = 1113;
+    IN_CALL_SCREEN_SWAP_CAMERA = 1114;
+    IN_CALL_SCREEN_TURN_ON_VIDEO = 1115;
+    IN_CALL_SCREEN_TURN_OFF_VIDEO = 1116;
+
+    VIDEO_CALL_WITH_INCOMING_VOICE_CALL = 1117;
+    VIDEO_CALL_WITH_INCOMING_VIDEO_CALL = 1118;
+    VOICE_CALL_WITH_INCOMING_VOICE_CALL = 1119;
+    VOICE_CALL_WITH_INCOMING_VIDEO_CALL = 1120;
+
+    CALL_DETAILS_COPY_NUMBER = 1121;
+    CALL_DETAILS_EDIT_BEFORE_CALL = 1122;
+    CALL_DETAILS_CALL_BACK = 1123;
+
+    VVM_USER_DISMISSED_VM_ALMOST_FULL_PROMO = 1124;
+    VVM_USER_DISMISSED_VM_FULL_PROMO = 1125;
+    VVM_USER_ENABLED_ARCHIVE_FROM_VM_ALMOST_FULL_PROMO = 1126;
+    VVM_USER_ENABLED_ARCHIVE_FROM_VM_FULL_PROMO = 1127;
+    VVM_USER_SHOWN_VM_ALMOST_FULL_PROMO = 1128;
+    VVM_USER_SHOWN_VM_FULL_PROMO = 1129;
+    VVM_USER_SHOWN_VM_ALMOST_FULL_ERROR_MESSAGE = 1130;
+    VVM_USER_SHOWN_VM_FULL_ERROR_MESSAGE = 1131;
+    VVM_USER_TURNED_ARCHIVE_ON_FROM_SETTINGS = 1132;
+    VVM_USER_TURNED_ARCHIVE_OFF_FROM_SETTINGS = 1133;
+    VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER = 1134;
+    VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF = 1135;
+
+    VVM_TAB_VISIBLE = 1136;
+    VVM_UNBUNDLED_EVENT_RECEIVED = 1137;
+    VVM_ACTIVATION_STARTED = 1138;
+    VVM_ACTIVATION_COMPLETED = 1139;
+    VVM_AUTO_RETRY_ACTIVATION = 1140;
+    VVM_PROVISIONING_STARTED = 1141;
+    VVM_PROVISIONING_COMPLETED = 1142;
+    VVM_SYNC_STARTED = 1143;
+    VVM_SYNC_COMPLETED = 1144;
+    VVM_AUTO_RETRY_SYNC = 1145;
+    VVM_USER_RETRY = 1146;
+    VVM_USER_SYNC = 1147;
+    VVM_SETTINGS_VIEWED = 1148;
+    VVM_CHANGE_PIN_CLICKED = 1149;
+    VVM_CHANGE_PIN_COMPLETED = 1150;
+    VVM_CHANGE_RINGTONE_CLICKED = 1151;
+    VVM_CHANGE_VIBRATION_CLICKED = 1152;
+    VVM_USER_ENABLED_IN_SETTINGS = 1153;
+    VVM_USER_DISABLED_IN_SETTINGS = 1154;
+    VVM_ADVANCED_SETINGS_CLICKED = 1155;
+    VVM_NOTIFICATION_CLICKED = 1156;
+    VVM_NOTIFICATION_CREATED = 1157;
+    VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION = 1158;
+    VVM_TRANSCRIPTION_DOWNLOADED = 1159;
+    VVM_CHANGE_AIRPLANE_MODE_CLICKED = 1160;
+    VVM_CALL_VOICEMAIL_CLICKED = 1161;
+    VVM_QUOTA_CHECK_UNAVAILABLE = 1162;
+
+    // Emergency location impressions
+    EMERGENCY_NEW_EMERGENCY_CALL = 1163;
+    EMERGENCY_CALLBACK = 1164;
+    EMERGENCY_NO_LOCATION_PERMISSION = 1165;
+    EMERGENCY_BATTERY_TOO_LOW_TO_GET_LOCATION = 1166;
+    EMERGENCY_CANT_GET_LOCATION = 1167;
+    EMERGENCY_STALE_LOCATION = 1168;
+    EMERGENCY_INACCURATE_LOCATION = 1169;
+    EMERGENCY_GOT_LOCATION = 1170;
+    EMERGENCY_GOT_ADDRESS = 1171;
+    EMERGENCY_GOT_MAP = 1172;
+    EMERGENCY_LAUNCHED_MAP = 1173;
+
+    VIDEO_CALL_UPGRADE_REQUESTED = 1174;
+    VIDEO_CALL_REQUEST_ACCEPTED = 1175;
+    VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO = 1176;
+    VIDEO_CALL_REQUEST_DECLINED = 1177;
+    VIDEO_CALL_REQUEST_RECEIVED = 1178;
+
+    RCS_VIDEO_SHARE_UPGRADE_REQUESTED = 1179;
+    RCS_VIDEO_SHARE_REQUEST_ACCEPTED = 1180;
+    RCS_VIDEO_SHARE_REQUEST_DECLINED = 1181;
+    RCS_VIDEO_SHARE_REQUEST_RECEIVED = 1182;
+
+    IMS_VIDEO_UPGRADE_REQUESTED = 1183;
+    IMS_VIDEO_REQUEST_ACCEPTED = 1184;
+    IMS_VIDEO_REQUEST_ACCEPTED_AS_AUDIO = 1185;
+    IMS_VIDEO_REQUEST_DECLINED = 1186;
+    IMS_VIDEO_REQUEST_RECEIVED = 1187;
+
+    VVM_STATUS_CHECK_READY = 1188;
+    VVM_STATUS_CHECK_REACTIVATION = 1189;
+  }
+}
diff --git a/java/com/android/dialer/logging/interaction_event.proto b/java/com/android/dialer/logging/interaction_event.proto
new file mode 100644
index 0000000..1075b1f
--- /dev/null
+++ b/java/com/android/dialer/logging/interaction_event.proto
@@ -0,0 +1,46 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+message InteractionEvent {
+  enum Type {
+
+    UNKNOWN = 0;
+
+    // Leaving tags 1-14 for more frequent interactions, e.g. ANSWERED_CALL
+
+    // An incoming call was blocked
+    CALL_BLOCKED = 15;
+
+    // The user blocked a number from the Call Log screen
+    BLOCK_NUMBER_CALL_LOG = 16;
+
+    // The user blocked a number from the Call details screen
+    BLOCK_NUMBER_CALL_DETAIL = 17;
+
+    // The user blocked a number from the Management screen
+    BLOCK_NUMBER_MANAGEMENT_SCREEN = 18;
+
+    // The user unblocked a number from the Call Log screen
+    UNBLOCK_NUMBER_CALL_LOG = 19;
+
+    // The user unblocked a number from the Call details screen
+    UNBLOCK_NUMBER_CALL_DETAIL = 20;
+
+    // The user unblocked a number from the Management screen
+    UNBLOCK_NUMBER_MANAGEMENT_SCREEN = 21;
+
+    // The user blocked numbers from contacts marked as send to voicemail
+    IMPORT_SEND_TO_VOICEMAIL = 22;
+
+    // The user blocked a number then undid the block
+    UNDO_BLOCK_NUMBER = 23;
+
+    // The user unblocked a number then undid the unblock
+    UNDO_UNBLOCK_NUMBER = 24;
+  }
+}
diff --git a/java/com/android/dialer/logging/nano/ContactLookupResult.java b/java/com/android/dialer/logging/nano/ContactLookupResult.java
deleted file mode 100644
index 93f5f01..0000000
--- a/java/com/android/dialer/logging/nano/ContactLookupResult.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.logging.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class ContactLookupResult
-    extends com.google.protobuf.nano.ExtendableMessageNano<ContactLookupResult> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int UNKNOWN_LOOKUP_RESULT_TYPE = 0;
-    public static final int NOT_FOUND = 1;
-    public static final int LOCAL_CONTACT = 2;
-    public static final int LOCAL_CACHE = 3;
-    public static final int REMOTE = 4;
-    public static final int EMERGENCY = 5;
-    public static final int VOICEMAIL = 6;
-  }
-
-  private static volatile ContactLookupResult[] _emptyArray;
-
-  public static ContactLookupResult[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new ContactLookupResult[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.logging.ContactLookupResult)
-
-  public ContactLookupResult() {
-    clear();
-  }
-
-  public ContactLookupResult clear() {
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public ContactLookupResult mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-      }
-    }
-  }
-
-  public static ContactLookupResult parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new ContactLookupResult(), data);
-  }
-
-  public static ContactLookupResult parseFrom(
-      com.google.protobuf.nano.CodedInputByteBufferNano input) throws java.io.IOException {
-    return new ContactLookupResult().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/logging/nano/ContactSource.java b/java/com/android/dialer/logging/nano/ContactSource.java
deleted file mode 100644
index dbe40cd..0000000
--- a/java/com/android/dialer/logging/nano/ContactSource.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.logging.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class ContactSource
-    extends com.google.protobuf.nano.ExtendableMessageNano<ContactSource> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int UNKNOWN_SOURCE_TYPE = 0;
-    public static final int SOURCE_TYPE_DIRECTORY = 1;
-    public static final int SOURCE_TYPE_EXTENDED = 2;
-    public static final int SOURCE_TYPE_PLACES = 3;
-    public static final int SOURCE_TYPE_PROFILE = 4;
-    public static final int SOURCE_TYPE_CNAP = 5;
-  }
-
-  private static volatile ContactSource[] _emptyArray;
-
-  public static ContactSource[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new ContactSource[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.logging.ContactSource)
-
-  public ContactSource() {
-    clear();
-  }
-
-  public ContactSource clear() {
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public ContactSource mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-      }
-    }
-  }
-
-  public static ContactSource parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new ContactSource(), data);
-  }
-
-  public static ContactSource parseFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    return new ContactSource().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/logging/nano/DialerImpression.java b/java/com/android/dialer/logging/nano/DialerImpression.java
deleted file mode 100644
index 9f3f961..0000000
--- a/java/com/android/dialer/logging/nano/DialerImpression.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.logging.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class DialerImpression
-    extends com.google.protobuf.nano.ExtendableMessageNano<DialerImpression> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int UNKNOWN_AOSP_EVENT_TYPE = 1000;
-    public static final int APP_LAUNCHED = 1001;
-    public static final int IN_CALL_SCREEN_TURN_ON_SPEAKERPHONE = 1002;
-    public static final int IN_CALL_SCREEN_TURN_ON_WIRED_OR_EARPIECE = 1003;
-    public static final int CALL_LOG_BLOCK_REPORT_SPAM = 1004;
-    public static final int CALL_LOG_BLOCK_NUMBER = 1005;
-    public static final int CALL_LOG_UNBLOCK_NUMBER = 1006;
-    public static final int CALL_LOG_REPORT_AS_NOT_SPAM = 1007;
-    public static final int DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM = 1008;
-    public static final int REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER = 1009;
-    public static final int DIALOG_ACTION_CONFIRM_NUMBER_SPAM_INDIRECTLY_VIA_BLOCK_NUMBER = 1010;
-    public static final int
-        REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG = 1011;
-    public static final int USER_ACTION_BLOCKED_NUMBER = 1012;
-    public static final int USER_ACTION_UNBLOCKED_NUMBER = 1013;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_BLOCK_NUMBER = 1014;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_SHOW_SPAM_DIALOG = 1015;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_SHOW_NON_SPAM_DIALOG = 1016;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS = 1019;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM = 1020;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_NOT_SPAM_AND_BLOCKED =
-        1021;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM = 1022;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_SPAM_DIALOG = 1024;
-    public static final int SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_NON_SPAM_DIALOG = 1025;
-    public static final int SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_SPAM = 1026;
-    public static final int SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_NOT_SPAM = 1027;
-    public static final int USER_PARTICIPATED_IN_A_CALL = 1028;
-    public static final int INCOMING_SPAM_CALL = 1029;
-    public static final int INCOMING_NON_SPAM_CALL = 1030;
-    public static final int SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1041;
-    public static final int SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1042;
-    public static final int NON_SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1043;
-    public static final int NON_SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1044;
-    public static final int VOICEMAIL_ALERT_SET_PIN_SHOWN = 1045;
-    public static final int VOICEMAIL_ALERT_SET_PIN_CLICKED = 1046;
-    public static final int USER_DID_NOT_PARTICIPATE_IN_CALL = 1047;
-    public static final int USER_DELETED_CALL_LOG_ITEM = 1048;
-    public static final int CALL_LOG_SEND_MESSAGE = 1049;
-    public static final int CALL_LOG_ADD_TO_CONTACT = 1050;
-    public static final int CALL_LOG_CREATE_NEW_CONTACT = 1051;
-    public static final int VOICEMAIL_DELETE_ENTRY = 1052;
-    public static final int VOICEMAIL_EXPAND_ENTRY = 1053;
-    public static final int VOICEMAIL_PLAY_AUDIO_DIRECTLY = 1054;
-    public static final int VOICEMAIL_PLAY_AUDIO_AFTER_EXPANDING_ENTRY = 1055;
-    public static final int REJECT_INCOMING_CALL_FROM_NOTIFICATION = 1056;
-    public static final int REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN = 1057;
-    public static final int CALL_LOG_CONTEXT_MENU_BLOCK_REPORT_SPAM = 1058;
-    public static final int CALL_LOG_CONTEXT_MENU_BLOCK_NUMBER = 1059;
-    public static final int CALL_LOG_CONTEXT_MENU_UNBLOCK_NUMBER = 1060;
-    public static final int CALL_LOG_CONTEXT_MENU_REPORT_AS_NOT_SPAM = 1061;
-    public static final int NEW_CONTACT_OVERFLOW = 1062;
-    public static final int NEW_CONTACT_FAB = 1063;
-    public static final int VOICEMAIL_VVM3_TOS_SHOWN = 1064;
-    public static final int VOICEMAIL_VVM3_TOS_ACCEPTED = 1065;
-    public static final int VOICEMAIL_VVM3_TOS_DECLINED = 1066;
-    public static final int VOICEMAIL_VVM3_TOS_DECLINE_CLICKED = 1067;
-    public static final int VOICEMAIL_VVM3_TOS_DECLINE_CHANGE_PIN_SHOWN = 1068;
-    public static final int STORAGE_PERMISSION_DISPLAYED = 1069;
-    public static final int CAMERA_PERMISSION_DISPLAYED = 1074;
-    public static final int STORAGE_PERMISSION_REQUESTED = 1070;
-    public static final int CAMERA_PERMISSION_REQUESTED = 1075;
-    public static final int STORAGE_PERMISSION_SETTINGS = 1071;
-    public static final int CAMERA_PERMISSION_SETTINGS = 1076;
-    public static final int STORAGE_PERMISSION_GRANTED = 1072;
-    public static final int CAMERA_PERMISSION_GRANTED = 1077;
-    public static final int STORAGE_PERMISSION_DENIED = 1073;
-    public static final int CAMERA_PERMISSION_DENIED = 1078;
-    public static final int VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_ACTIVITY = 1079;
-    public static final int VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_NOTIFICATION =
-        1080;
-    public static final int BACKUP_ON_BACKUP = 1081;
-    public static final int BACKUP_ON_FULL_BACKUP = 1082;
-    public static final int BACKUP_ON_BACKUP_DISABLED = 1083;
-    public static final int BACKUP_VOICEMAIL_BACKED_UP = 1084;
-    public static final int BACKUP_FULL_BACKED_UP = 1085;
-    public static final int BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086;
-    public static final int BACKUP_ON_QUOTA_EXCEEDED = 1087;
-    public static final int BACKUP_ON_RESTORE = 1088;
-    public static final int BACKUP_RESTORED_FILE = 1089;
-    public static final int BACKUP_RESTORED_VOICEMAIL = 1090;
-    public static final int BACKUP_ON_RESTORE_FINISHED = 1091;
-    public static final int BACKUP_ON_RESTORE_DISABLED = 1092;
-    public static final int BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093;
-    public static final int BACKUP_ON_RESTORE_IO_EXCEPTION = 1094;
-    public static final int BACKUP_MAX_VM_BACKUP_REACHED = 1095;
-    public static final int EVENT_ANSWER_HINT_ACTIVATED = 1096;
-    public static final int EVENT_ANSWER_HINT_DEACTIVATED = 1097;
-    public static final int VVM_TAB_VIEWED = 1098;
-    public static final int VVM_SHARE_VISIBLE = 1099;
-    public static final int VVM_SHARE_PRESSED = 1100;
-    public static final int OUTGOING_VIDEO_CALL = 1101;
-    public static final int INCOMING_VIDEO_CALL = 1102;
-    public static final int USER_PARTICIPATED_IN_A_VIDEO_CALL = 1103;
-    public static final int BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104;
-    public static final int CALL_LOG_SHARE_AND_CALL = 1105;
-    public static final int CALL_COMPOSER_ACTIVITY_PLACE_RCS_CALL = 1106;
-    public static final int CALL_COMPOSER_ACTIVITY_SEND_AND_CALL_PRESSED_WHEN_SESSION_NOT_READY =
-        1107;
-    public static final int POST_CALL_PROMPT_USER_TO_SEND_MESSAGE_CLICKED = 1108;
-    public static final int POST_CALL_PROMPT_USER_TO_SEND_MESSAGE = 1109;
-    public static final int POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE = 1110;
-    public static final int POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE_CLICKED = 1111;
-    public static final int IN_CALL_SCREEN_TURN_ON_MUTE = 1112;
-    public static final int IN_CALL_SCREEN_TURN_OFF_MUTE = 1113;
-    public static final int IN_CALL_SCREEN_SWAP_CAMERA = 1114;
-    public static final int IN_CALL_SCREEN_TURN_ON_VIDEO = 1115;
-    public static final int IN_CALL_SCREEN_TURN_OFF_VIDEO = 1116;
-    public static final int VIDEO_CALL_WITH_INCOMING_VOICE_CALL = 1117;
-    public static final int VIDEO_CALL_WITH_INCOMING_VIDEO_CALL = 1118;
-    public static final int VOICE_CALL_WITH_INCOMING_VOICE_CALL = 1119;
-    public static final int VOICE_CALL_WITH_INCOMING_VIDEO_CALL = 1120;
-    public static final int CALL_DETAILS_COPY_NUMBER = 1121;
-    public static final int CALL_DETAILS_EDIT_BEFORE_CALL = 1122;
-    public static final int CALL_DETAILS_CALL_BACK = 1123;
-    public static final int VVM_USER_DISMISSED_VM_ALMOST_FULL_PROMO = 1124;
-    public static final int VVM_USER_DISMISSED_VM_FULL_PROMO = 1125;
-    public static final int VVM_USER_ENABLED_ARCHIVE_FROM_VM_ALMOST_FULL_PROMO = 1126;
-    public static final int VVM_USER_ENABLED_ARCHIVE_FROM_VM_FULL_PROMO = 1127;
-    public static final int VVM_USER_SHOWN_VM_ALMOST_FULL_PROMO = 1128;
-    public static final int VVM_USER_SHOWN_VM_FULL_PROMO = 1129;
-    public static final int VVM_USER_SHOWN_VM_ALMOST_FULL_ERROR_MESSAGE = 1130;
-    public static final int VVM_USER_SHOWN_VM_FULL_ERROR_MESSAGE = 1131;
-    public static final int VVM_USER_TURNED_ARCHIVE_ON_FROM_SETTINGS = 1132;
-    public static final int VVM_USER_TURNED_ARCHIVE_OFF_FROM_SETTINGS = 1133;
-    public static final int VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER = 1134;
-    public static final int VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF = 1135;
-    public static final int VVM_TAB_VISIBLE = 1136;
-    public static final int VVM_UNBUNDLED_EVENT_RECEIVED = 1137;
-    public static final int VVM_ACTIVATION_STARTED = 1138;
-    public static final int VVM_ACTIVATION_COMPLETED = 1139;
-    public static final int VVM_AUTO_RETRY_ACTIVATION = 1140;
-    public static final int VVM_PROVISIONING_STARTED = 1141;
-    public static final int VVM_PROVISIONING_COMPLETED = 1142;
-    public static final int VVM_SYNC_STARTED = 1143;
-    public static final int VVM_SYNC_COMPLETED = 1144;
-    public static final int VVM_AUTO_RETRY_SYNC = 1145;
-    public static final int VVM_USER_RETRY = 1146;
-    public static final int VVM_USER_SYNC = 1147;
-    public static final int VVM_SETTINGS_VIEWED = 1148;
-    public static final int VVM_CHANGE_PIN_CLICKED = 1149;
-    public static final int VVM_CHANGE_PIN_COMPLETED = 1150;
-    public static final int VVM_CHANGE_RINGTONE_CLICKED = 1151;
-    public static final int VVM_CHANGE_VIBRATION_CLICKED = 1152;
-    public static final int VVM_USER_ENABLED_IN_SETTINGS = 1153;
-    public static final int VVM_USER_DISABLED_IN_SETTINGS = 1154;
-    public static final int VVM_ADVANCED_SETINGS_CLICKED = 1155;
-    public static final int VVM_NOTIFICATION_CLICKED = 1156;
-    public static final int VVM_NOTIFICATION_CREATED = 1157;
-    public static final int VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION = 1158;
-    public static final int VVM_TRANSCRIPTION_DOWNLOADED = 1159;
-    public static final int VVM_CHANGE_AIRPLANE_MODE_CLICKED = 1160;
-    public static final int VVM_CALL_VOICEMAIL_CLICKED = 1161;
-    public static final int VVM_QUOTA_CHECK_UNAVAILABLE = 1162;
-    public static final int EMERGENCY_NEW_EMERGENCY_CALL = 1163;
-    public static final int EMERGENCY_CALLBACK = 1164;
-    public static final int EMERGENCY_NO_LOCATION_PERMISSION = 1165;
-    public static final int EMERGENCY_BATTERY_TOO_LOW_TO_GET_LOCATION = 1166;
-    public static final int EMERGENCY_CANT_GET_LOCATION = 1167;
-    public static final int EMERGENCY_STALE_LOCATION = 1168;
-    public static final int EMERGENCY_INACCURATE_LOCATION = 1169;
-    public static final int EMERGENCY_GOT_LOCATION = 1170;
-    public static final int EMERGENCY_GOT_ADDRESS = 1171;
-    public static final int EMERGENCY_GOT_MAP = 1172;
-    public static final int EMERGENCY_LAUNCHED_MAP = 1173;
-  }
-
-  private static volatile DialerImpression[] _emptyArray;
-  public static DialerImpression[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new DialerImpression[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.logging.DialerImpression)
-
-  public DialerImpression() {
-    clear();
-  }
-
-  public DialerImpression clear() {
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public DialerImpression mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-      }
-    }
-  }
-
-  public static DialerImpression parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new DialerImpression(), data);
-  }
-
-  public static DialerImpression parseFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    return new DialerImpression().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/logging/nano/InteractionEvent.java b/java/com/android/dialer/logging/nano/InteractionEvent.java
deleted file mode 100644
index 7ca95fa..0000000
--- a/java/com/android/dialer/logging/nano/InteractionEvent.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.logging.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class InteractionEvent
-    extends com.google.protobuf.nano.ExtendableMessageNano<InteractionEvent> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int UNKNOWN = 0;
-    public static final int CALL_BLOCKED = 15;
-    public static final int BLOCK_NUMBER_CALL_LOG = 16;
-    public static final int BLOCK_NUMBER_CALL_DETAIL = 17;
-    public static final int BLOCK_NUMBER_MANAGEMENT_SCREEN = 18;
-    public static final int UNBLOCK_NUMBER_CALL_LOG = 19;
-    public static final int UNBLOCK_NUMBER_CALL_DETAIL = 20;
-    public static final int UNBLOCK_NUMBER_MANAGEMENT_SCREEN = 21;
-    public static final int IMPORT_SEND_TO_VOICEMAIL = 22;
-    public static final int UNDO_BLOCK_NUMBER = 23;
-    public static final int UNDO_UNBLOCK_NUMBER = 24;
-  }
-
-  private static volatile InteractionEvent[] _emptyArray;
-  public static InteractionEvent[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new InteractionEvent[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.logging.InteractionEvent)
-
-  public InteractionEvent() {
-    clear();
-  }
-
-  public InteractionEvent clear() {
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public InteractionEvent mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-      }
-    }
-  }
-
-  public static InteractionEvent parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new InteractionEvent(), data);
-  }
-
-  public static InteractionEvent parseFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    return new InteractionEvent().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/logging/nano/ReportingLocation.java b/java/com/android/dialer/logging/nano/ReportingLocation.java
deleted file mode 100644
index 08ee04e..0000000
--- a/java/com/android/dialer/logging/nano/ReportingLocation.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.logging.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class ReportingLocation
-    extends com.google.protobuf.nano.ExtendableMessageNano<ReportingLocation> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int UNKNOWN_REPORTING_LOCATION = 0;
-    public static final int CALL_LOG_HISTORY = 1;
-    public static final int FEEDBACK_PROMPT = 2;
-  }
-
-  private static volatile ReportingLocation[] _emptyArray;
-
-  public static ReportingLocation[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new ReportingLocation[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.logging.ReportingLocation)
-
-  public ReportingLocation() {
-    clear();
-  }
-
-  public ReportingLocation clear() {
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public ReportingLocation mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-      }
-    }
-  }
-
-  public static ReportingLocation parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new ReportingLocation(), data);
-  }
-
-  public static ReportingLocation parseFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    return new ReportingLocation().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/logging/nano/ScreenEvent.java b/java/com/android/dialer/logging/nano/ScreenEvent.java
deleted file mode 100644
index bd5b817..0000000
--- a/java/com/android/dialer/logging/nano/ScreenEvent.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-package com.android.dialer.logging.nano;
-
-/** This file is autogenerated, but javadoc required. */
-@SuppressWarnings("hiding")
-public final class ScreenEvent extends com.google.protobuf.nano.ExtendableMessageNano<ScreenEvent> {
-
-  /** This file is autogenerated, but javadoc required. */
-  // enum Type
-  public interface Type {
-    public static final int UNKNOWN = 0;
-    public static final int DIALPAD = 1;
-    public static final int SPEED_DIAL = 2;
-    public static final int CALL_LOG = 3;
-    public static final int VOICEMAIL_LOG = 4;
-    public static final int ALL_CONTACTS = 5;
-    public static final int REGULAR_SEARCH = 6;
-    public static final int SMART_DIAL_SEARCH = 7;
-    public static final int CALL_LOG_FILTER = 8;
-    public static final int SETTINGS = 9;
-    public static final int IMPORT_EXPORT_CONTACTS = 10;
-    public static final int CLEAR_FREQUENTS = 11;
-    public static final int SEND_FEEDBACK = 12;
-    public static final int INCALL = 13;
-    public static final int INCOMING_CALL = 14;
-    public static final int CONFERENCE_MANAGEMENT = 15;
-    public static final int INCALL_DIALPAD = 16;
-    public static final int CALL_LOG_CONTEXT_MENU = 17;
-    public static final int BLOCKED_NUMBER_MANAGEMENT = 18;
-    public static final int BLOCKED_NUMBER_ADD_NUMBER = 19;
-    public static final int CALL_DETAILS = 20;
-  }
-
-  private static volatile ScreenEvent[] _emptyArray;
-  public static ScreenEvent[] emptyArray() {
-    // Lazily initializes the empty array
-    if (_emptyArray == null) {
-      synchronized (com.google.protobuf.nano.InternalNano.LAZY_INIT_LOCK) {
-        if (_emptyArray == null) {
-          _emptyArray = new ScreenEvent[0];
-        }
-      }
-    }
-    return _emptyArray;
-  }
-
-  // @@protoc_insertion_point(class_scope:com.android.dialer.logging.ScreenEvent)
-
-  public ScreenEvent() {
-    clear();
-  }
-
-  public ScreenEvent clear() {
-    unknownFieldData = null;
-    cachedSize = -1;
-    return this;
-  }
-
-  @Override
-  public ScreenEvent mergeFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    while (true) {
-      int tag = input.readTag();
-      switch (tag) {
-        case 0:
-          return this;
-        default:
-          {
-            if (!super.storeUnknownField(input, tag)) {
-              return this;
-            }
-            break;
-          }
-      }
-    }
-  }
-
-  public static ScreenEvent parseFrom(byte[] data)
-      throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {
-    return com.google.protobuf.nano.MessageNano.mergeFrom(new ScreenEvent(), data);
-  }
-
-  public static ScreenEvent parseFrom(com.google.protobuf.nano.CodedInputByteBufferNano input)
-      throws java.io.IOException {
-    return new ScreenEvent().mergeFrom(input);
-  }
-}
diff --git a/java/com/android/dialer/logging/reporting_location.proto b/java/com/android/dialer/logging/reporting_location.proto
new file mode 100644
index 0000000..d436564
--- /dev/null
+++ b/java/com/android/dialer/logging/reporting_location.proto
@@ -0,0 +1,16 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+message ReportingLocation {
+  // Spam reporting location
+  enum Type {
+    UNKNOWN_REPORTING_LOCATION = 0;
+    CALL_LOG_HISTORY = 1;
+    FEEDBACK_PROMPT = 2;
+  }
+}
diff --git a/java/com/android/dialer/logging/screen_event.proto b/java/com/android/dialer/logging/screen_event.proto
new file mode 100644
index 0000000..ca62477
--- /dev/null
+++ b/java/com/android/dialer/logging/screen_event.proto
@@ -0,0 +1,71 @@
+syntax = "proto2";
+
+package com.android.dialer.logging;
+option java_package = "com.android.dialer.logging";
+option java_multiple_files = true;
+option optimize_for = LITE_RUNTIME;
+
+
+message ScreenEvent {
+  enum Type {
+
+    UNKNOWN = 0;
+
+    DIALPAD = 1;
+
+    SPEED_DIAL = 2;
+
+    CALL_LOG = 3;
+
+    // The tab containing the list of voicemails only.
+    VOICEMAIL_LOG = 4;
+
+    // The tab containing the list of all contacts.
+    ALL_CONTACTS = 5;
+
+    // List of search results returned by typing into the search box.
+    REGULAR_SEARCH = 6;
+
+    // List of search results returned by typing into the dialpad.
+    SMART_DIAL_SEARCH = 7;
+
+    CALL_LOG_FILTER = 8;
+
+    SETTINGS = 9;
+
+    // The "Import/export contacts" dialog launched via the overflow menu.
+    IMPORT_EXPORT_CONTACTS = 10;
+
+    // The "Clear frequents" dialog launched via the overflow menu.
+    CLEAR_FREQUENTS = 11;
+
+    // The "Send feedback" dialog launched via the overflow menu.
+    SEND_FEEDBACK = 12;
+
+    // The main in call screen that displays caller details and contact photos
+    INCALL = 13;
+
+    // The screen that displays the glowpad widget (slide right to answer,
+    // slide left to dismiss).
+    INCOMING_CALL = 14;
+
+    // Conference management fragment displayed for conferences that support
+    // management of individual calls within the conference.
+    CONFERENCE_MANAGEMENT = 15;
+
+    // The dialpad displayed in-call that is used to send dtmf tones.
+    INCALL_DIALPAD = 16;
+
+    // Menu options displayed when long pressing on a call log entry
+    CALL_LOG_CONTEXT_MENU = 17;
+
+    // Screen displayed to allow the user to see an overview of all blocked
+    // numbers
+    BLOCKED_NUMBER_MANAGEMENT = 18;
+
+    // Screen displayed to allow the user to add a new blocked number
+    BLOCKED_NUMBER_ADD_NUMBER = 19;
+
+    CALL_DETAILS = 20;
+  }
+}
diff --git a/java/com/android/dialer/notification/NotificationChannelManager.java b/java/com/android/dialer/notification/NotificationChannelManager.java
index b795ffe..db7ded7 100644
--- a/java/com/android/dialer/notification/NotificationChannelManager.java
+++ b/java/com/android/dialer/notification/NotificationChannelManager.java
@@ -159,7 +159,7 @@
           "Null PhoneAccountHandle with channel " + channelName);
     }
 
-    Uri silentRingtone = Uri.parse("");
+    Uri silentRingtone = Uri.EMPTY;
 
     CharSequence name;
     int importance;
diff --git a/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..c5fd5e7
--- /dev/null
+++ b/java/com/android/dialer/notification/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="notification_channel_incoming_call" msgid="2478740764736158630">"Dolazni pozivi"</string>
+    <string name="notification_channel_ongoing_call" msgid="5593444445363940672">"Pozivi u toku"</string>
+    <string name="notification_channel_missed_call" msgid="5820652855908217695">"Propušteni pozivi"</string>
+    <string name="notification_channel_voicemail" msgid="9206363659849426204">"Govorne poruke"</string>
+    <string name="notification_channel_external_call" msgid="2200143959948071132">"Spoljni pozivi"</string>
+    <string name="notification_channel_misc" msgid="5181419532951960166">"Razno"</string>
+</resources>
diff --git a/java/com/android/dialer/notification/res/values/ids.xml b/java/com/android/dialer/notification/res/values/ids.xml
index 6bdb489..dc071e2 100644
--- a/java/com/android/dialer/notification/res/values/ids.xml
+++ b/java/com/android/dialer/notification/res/values/ids.xml
@@ -19,7 +19,8 @@
   <item name="notification_incoming_call" type="id"/>
   <item name="notification_ongoing_call" type="id"/>
   <item name="notification_missed_call" type="id"/>
-  <item name="notification_voicemail" type="id"/>
+  <item name="notification_visual_voicemail" type="id"/>
+  <item name="notification_legacy_voicemail" type="id"/>
   <item name="notification_external_call" type="id"/>
   <item name="notification_call_blocking_disabled_by_emergency_call" type="id"/>
   <item name="notification_spam_call" type="id"/>
diff --git a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
index bb51fa8..c113559 100644
--- a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
+++ b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
@@ -155,6 +155,9 @@
   private File[] getLogFiles() {
     logDirectory.mkdirs();
     File[] files = logDirectory.listFiles();
+    if (files == null) {
+      files = new File[0];
+    }
     Arrays.sort(
         files,
         (File lhs, File rhs) ->
diff --git a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
index e589a68..2aed9e7 100644
--- a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
+++ b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
@@ -18,13 +18,11 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.IntDef;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.WorkerThread;
+import com.android.dialer.logging.ContactSource;
 import java.io.InputStream;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
 
 public interface CachedNumberLookupService {
 
@@ -47,9 +45,9 @@
 
   boolean isCacheUri(String uri);
 
-  boolean isBusiness(int sourceType);
+  boolean isBusiness(ContactSource.Type sourceType);
 
-  boolean canReportAsInvalid(int sourceType, String objectId);
+  boolean canReportAsInvalid(ContactSource.Type sourceType, String objectId);
 
   /** @return return {@link Uri} to the photo or return {@code null} when failing to add photo */
   @Nullable
@@ -64,28 +62,10 @@
 
   interface CachedContactInfo {
 
-    int SOURCE_TYPE_DIRECTORY = 1;
-    int SOURCE_TYPE_EXTENDED = 2;
-    int SOURCE_TYPE_PLACES = 3;
-    int SOURCE_TYPE_PROFILE = 4;
-    int SOURCE_TYPE_CNAP = 5;
-    int SOURCE_TYPE_CEQUINT_CALLER_ID = 6;
-
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef({
-      SOURCE_TYPE_DIRECTORY,
-      SOURCE_TYPE_EXTENDED,
-      SOURCE_TYPE_PLACES,
-      SOURCE_TYPE_PROFILE,
-      SOURCE_TYPE_CNAP,
-      SOURCE_TYPE_CEQUINT_CALLER_ID
-    })
-    public @interface ContactSourceType {}
-
     @NonNull
     ContactInfo getContactInfo();
 
-    void setSource(@ContactSourceType int sourceType, String name, long directoryId);
+    void setSource(ContactSource.Type sourceType, String name, long directoryId);
 
     void setDirectorySource(String name, long directoryId);
 
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfo.java b/java/com/android/dialer/phonenumbercache/ContactInfo.java
index dab5e4b..9def939 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfo.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfo.java
@@ -20,7 +20,7 @@
 import android.text.TextUtils;
 import com.android.contacts.common.ContactsUtils.UserType;
 import com.android.contacts.common.util.UriUtils;
-import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo.ContactSourceType;
+import com.android.dialer.logging.ContactSource;
 
 /** Information for a contact as needed by the Call Log. */
 public class ContactInfo {
@@ -58,7 +58,12 @@
   public boolean isBadData;
   public String objectId;
   public @UserType long userType;
-  public @ContactSourceType int sourceType = 0;
+  public ContactSource.Type sourceType;
+  /**
+   * True if local contact exists. This is only used for Cequint Caller ID so it won't overwrite
+   * photo if local contact exists.
+   */
+  boolean contactExists;
 
   /** @see android.provider.ContactsContract.CommonDataKinds.Phone#CARRIER_PRESENCE */
   public int carrierPresence;
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index dc11c1b..a9a5edc 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -41,6 +41,7 @@
 import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.ContactSource;
 import com.android.dialer.oem.CequintCallerIdManager;
 import com.android.dialer.oem.CequintCallerIdManager.CequintCallerIdContact;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo;
@@ -370,6 +371,7 @@
     info.formattedNumber = null;
     info.userType =
         ContactsUtils.determineUserType(null, phoneLookupCursor.getLong(PhoneQuery.PERSON_ID));
+    info.contactExists = true;
 
     return info;
   }
@@ -577,7 +579,7 @@
    * @param sourceType sourceType of the contact. This is usually populated by {@link
    *     #mCachedNumberLookupService}.
    */
-  public boolean isBusiness(int sourceType) {
+  public boolean isBusiness(ContactSource.Type sourceType) {
     return mCachedNumberLookupService != null && mCachedNumberLookupService.isBusiness(sourceType);
   }
 
@@ -589,7 +591,7 @@
    * @param objectId The ID of the Contact object.
    * @return true if contacts from this source can be marked with an invalid caller id
    */
-  public boolean canReportAsInvalid(int sourceType, String objectId) {
+  public boolean canReportAsInvalid(ContactSource.Type sourceType, String objectId) {
     return mCachedNumberLookupService != null
         && mCachedNumberLookupService.canReportAsInvalid(sourceType, objectId);
   }
@@ -614,9 +616,10 @@
     }
     if (!TextUtils.isEmpty(cequintCallerIdContact.geoDescription)) {
       info.geoDescription = cequintCallerIdContact.geoDescription;
-      info.sourceType = CachedContactInfo.SOURCE_TYPE_CEQUINT_CALLER_ID;
+      info.sourceType = ContactSource.Type.SOURCE_TYPE_CEQUINT_CALLER_ID;
     }
-    if (info.photoUri == null && cequintCallerIdContact.imageUrl != null) {
+    // Only update photo if local lookup has no result.
+    if (!info.contactExists && info.photoUri == null && cequintCallerIdContact.imageUrl != null) {
       info.photoUri = UriUtils.parseUriOrNull(cequintCallerIdContact.imageUrl);
     }
   }
diff --git a/java/com/android/dialer/phonenumberutil/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..bab794c
--- /dev/null
+++ b/java/com/android/dialer/phonenumberutil/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="private_num_verizon" msgid="3281061244372204957">"Ograničeno"</string>
+    <string name="private_num_non_verizon" msgid="5829254390933301216">"Privatan broj"</string>
+</resources>
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index bb60bcc..e27a9b5 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -30,8 +30,8 @@
 import com.android.dialer.common.ConfigProvider;
 import com.android.dialer.common.ConfigProviderBindings;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
 
diff --git a/java/com/android/dialer/postcall/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/postcall/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..a745967
--- /dev/null
+++ b/java/com/android/dialer/postcall/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="post_call_message" msgid="3541277172068556862">"Recite zašto zovete"</string>
+    <string name="post_call_message_1" msgid="4827849136801228106">"Hitno je. Uzvratite mi poziv."</string>
+    <string name="post_call_message_2" msgid="5310301526176003385">"Pozovite me kad budete imali vremena."</string>
+    <string name="post_call_message_3" msgid="3932759658420368056">"Nije hitno, možemo da ćaskamo kasnije."</string>
+    <string name="post_call_add_message" msgid="8298853527467080463">"Dodaj poruku"</string>
+    <string name="post_call_message_sent" msgid="832757977985265036">"Poruka je poslata"</string>
+    <string name="view" msgid="8572192949673703830">"Prikaži"</string>
+</resources>
diff --git a/java/com/android/dialer/protos/ProtoParsers.java b/java/com/android/dialer/protos/ProtoParsers.java
deleted file mode 100644
index 7dfbc7c..0000000
--- a/java/com/android/dialer/protos/ProtoParsers.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.dialer.protos;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-import com.android.dialer.common.Assert;
-import com.google.protobuf.nano.CodedOutputByteBufferNano;
-import com.google.protobuf.nano.InvalidProtocolBufferNanoException;
-import com.google.protobuf.nano.MessageNano;
-import java.io.IOException;
-
-/** Useful methods for using Protocol Buffers with Android. */
-public final class ProtoParsers {
-
-  private ProtoParsers() {}
-
-  /** Retrieve a proto from a Bundle */
-  @SuppressWarnings("unchecked") // We want to eventually optimize away parser classes, so cast
-  public static <T extends MessageNano> T get(Bundle bundle, String key, T defaultInstance)
-      throws InvalidProtocolBufferNanoException {
-    InternalDontUse parcelable = bundle.getParcelable(key);
-    return (T) parcelable.getMessageUnsafe(defaultInstance);
-  }
-
-  /**
-   * Retrieve a proto from a trusted bundle
-   *
-   * @throws RuntimeException if the proto cannot be parsed
-   */
-  public static <T extends MessageNano> T getFromInstanceState(
-      Bundle bundle, String key, T defaultInstance) {
-    try {
-      return get(bundle, key, defaultInstance);
-    } catch (InvalidProtocolBufferNanoException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  /**
-   * Stores a proto in a Bundle, for later retrieval by {@link #get(Bundle, String, MessageNano)} or
-   * {@link #getFromInstanceState(Bundle, String, MessageNano)}.
-   */
-  public static void put(Bundle bundle, String key, MessageNano message) {
-    bundle.putParcelable(key, new InternalDontUse<>(null, message));
-  }
-
-  /**
-   * Stores a proto in an Intent, for later retrieval by {@link #get(Bundle, String, MessageNano)}.
-   * Needs separate method because Intent has similar to but different API than Bundle.
-   */
-  public static void put(Intent intent, String key, MessageNano message) {
-    intent.putExtra(key, new InternalDontUse<>(null, message));
-  }
-
-  /** Returns a {@linkplain Parcelable} representation of this protobuf message. */
-  public static <T extends MessageNano> ParcelableProto<T> asParcelable(T message) {
-    return new InternalDontUse<>(null, message);
-  }
-
-  /**
-   * A protobuf message that can be stored in a {@link Parcel}.
-   *
-   * <p><b>Note:</b> This <code>Parcelable</code> can only be used in single app. Attempting to send
-   * it to another app through an <code>Intent</code> will result in an exception due to Proguard
-   * obfusation when the target application attempts to load the <code>ParcelableProto</code> class.
-   */
-  public interface ParcelableProto<T extends MessageNano> extends Parcelable {
-    /**
-     * @throws IllegalStateException if the parceled data does not correspond to the defaultInstance
-     *     type.
-     */
-    T getMessage(T defaultInstance);
-  }
-
-  /** Public because of Parcelable requirements. Do not use. */
-  public static final class InternalDontUse<T extends MessageNano> implements ParcelableProto<T> {
-    /* One of these two fields is always populated - since the bytes field never escapes this
-     * object, there is no risk of concurrent modification by multiple threads, and volatile
-     * is sufficient to be thread-safe. */
-    private volatile byte[] bytes;
-    private volatile T message;
-
-    /**
-     * Ideally, we would have type safety here. However, a static field {@link Creator} is required
-     * by {@link Parcelable}. Static fields are inherently not type safe, since only 1 exists per
-     * class (rather than 1 per type).
-     */
-    public static final Parcelable.Creator<InternalDontUse<?>> CREATOR =
-        new Creator<InternalDontUse<?>>() {
-          @Override
-          public InternalDontUse<?> createFromParcel(Parcel parcel) {
-            int serializedSize = parcel.readInt();
-            byte[] array = new byte[serializedSize];
-            parcel.readByteArray(array);
-            return new InternalDontUse<>(array, null);
-          }
-
-          @Override
-          public InternalDontUse<?>[] newArray(int i) {
-            return new InternalDontUse[i];
-          }
-        };
-
-    private InternalDontUse(byte[] bytes, T message) {
-      Assert.checkArgument(bytes != null || message != null);
-      this.bytes = bytes;
-      this.message = message;
-    }
-
-    @Override
-    public int describeContents() {
-      return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel parcel, int i) {
-      if (bytes == null) {
-        final byte[] flatArray = new byte[message.getSerializedSize()];
-        try {
-          message.writeTo(CodedOutputByteBufferNano.newInstance(flatArray));
-          bytes = flatArray;
-        } catch (IOException impossible) {
-          throw new AssertionError(impossible);
-        }
-      }
-      parcel.writeInt(bytes.length);
-      parcel.writeByteArray(bytes);
-    }
-
-    @Override
-    public T getMessage(T defaultInstance) {
-      try {
-        // The proto should never be invalid if it came from our application, so if it is, throw.
-        return getMessageUnsafe(defaultInstance);
-      } catch (InvalidProtocolBufferNanoException e) {
-        throw new IllegalStateException(e);
-      }
-    }
-
-    @SuppressWarnings("unchecked") // We're being deserialized, so there's no real type safety
-    T getMessageUnsafe(T defaultInstance) throws InvalidProtocolBufferNanoException {
-      // There's a risk that we'll double-parse the bytes, but that's OK, because it'll end up
-      // as the same immutable object anyway.
-      if (message == null) {
-        message = MessageNano.mergeFrom(defaultInstance, bytes);
-      }
-      return message;
-    }
-  }
-}
diff --git a/java/com/android/dialer/shortcuts/CallContactActivity.java b/java/com/android/dialer/shortcuts/CallContactActivity.java
index d2c9a76..b807979 100644
--- a/java/com/android/dialer/shortcuts/CallContactActivity.java
+++ b/java/com/android/dialer/shortcuts/CallContactActivity.java
@@ -21,8 +21,8 @@
 import android.os.Bundle;
 import android.support.v4.app.ActivityCompat;
 import android.widget.Toast;
-import com.android.dialer.callintent.nano.CallInitiationType;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.interactions.PhoneNumberInteraction;
 import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
@@ -68,8 +68,10 @@
    * user can choose to grant or deny them.
    */
   private void makeCall() {
-    CallSpecificAppData callSpecificAppData = new CallSpecificAppData();
-    callSpecificAppData.callInitiationType = CallInitiationType.Type.LAUNCHER_SHORTCUT;
+    CallSpecificAppData callSpecificAppData =
+        CallSpecificAppData.newBuilder()
+            .setCallInitiationType(CallInitiationType.Type.LAUNCHER_SHORTCUT)
+            .build();
     PhoneNumberInteraction.startInteractionForPhoneCall(
         this, contactUri, false /* isVideoCall */, callSpecificAppData);
   }
diff --git a/java/com/android/dialer/shortcuts/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/shortcuts/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..86ce915
--- /dev/null
+++ b/java/com/android/dialer/shortcuts/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="dialer_shortcut_add_contact_short" msgid="7587385197258884650">"Novo"</string>
+    <string name="dialer_shortcut_add_contact_long" msgid="7573187314386728329">"Novi kontakt"</string>
+    <string name="dialer_shortcut_disabled_message" msgid="7713603194332953571">"Prečica ne funkcioniše. Prevucite da biste je uklonili."</string>
+    <string name="dialer_shortcut_contact_not_found_or_has_no_number" msgid="3538594504123040498">"Kontakt više nije dostupan."</string>
+    <string name="dialer_shortcut_no_permissions" msgid="4422956724546867357">"Ne možete da pozovete jer nemate dozvole."</string>
+</resources>
diff --git a/java/com/android/dialer/spam/SpamBindings.java b/java/com/android/dialer/spam/SpamBindings.java
index b5d18b8..5631da6 100644
--- a/java/com/android/dialer/spam/SpamBindings.java
+++ b/java/com/android/dialer/spam/SpamBindings.java
@@ -18,6 +18,9 @@
 
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.logging.ContactSource;
+import com.android.dialer.logging.ReportingLocation;
 
 /** Allows the container application to mark calls as spam. */
 public interface SpamBindings {
@@ -85,12 +88,16 @@
    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
    * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.nano.ReportingLocation}.
+   *     com.android.dialer.logging.ReportingLocation}.
    * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
-   *     one of {@link com.android.dialer.logging.nano.ContactLookupResult}.
+   *     one of {@link com.android.dialer.logging.ContactLookupResult}.
    */
   void reportSpamFromAfterCallNotification(
-      String number, String countryIso, int callType, int from, int contactLookupResultType);
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactLookupResult.Type contactLookupResultType);
 
   /**
    * Reports number as spam.
@@ -100,12 +107,16 @@
    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
    * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.nano.ReportingLocation}.
+   *     com.android.dialer.logging.ReportingLocation}.
    * @param contactSourceType If we have cached contact information for the phone number, this
-   *     indicates its source. Must be one of {@link com.android.dialer.logging.nano.ContactSource}.
+   *     indicates its source. Must be one of {@link com.android.dialer.logging.ContactSource}.
    */
   void reportSpamFromCallHistory(
-      String number, String countryIso, int callType, int from, int contactSourceType);
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactSource.Type contactSourceType);
 
   /**
    * Reports number as not spam.
@@ -115,12 +126,16 @@
    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
    * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.nano.ReportingLocation}.
+   *     com.android.dialer.logging.ReportingLocation}.
    * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
-   *     one of {@link com.android.dialer.logging.nano.ContactLookupResult}.
+   *     one of {@link com.android.dialer.logging.ContactLookupResult}.
    */
   void reportNotSpamFromAfterCallNotification(
-      String number, String countryIso, int callType, int from, int contactLookupResultType);
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactLookupResult.Type contactLookupResultType);
 
   /**
    * Reports number as not spam.
@@ -130,12 +145,16 @@
    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
    * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.nano.ReportingLocation}.
+   *     com.android.dialer.logging.ReportingLocation}.
    * @param contactSourceType If we have cached contact information for the phone number, this
-   *     indicates its source. Must be one of {@link com.android.dialer.logging.nano.ContactSource}.
+   *     indicates its source. Must be one of {@link com.android.dialer.logging.ContactSource}.
    */
   void reportNotSpamFromCallHistory(
-      String number, String countryIso, int callType, int from, int contactSourceType);
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactSource.Type contactSourceType);
 
   /** Callback to be invoked when data is fetched. */
   interface Listener {
diff --git a/java/com/android/dialer/spam/SpamBindingsStub.java b/java/com/android/dialer/spam/SpamBindingsStub.java
index 0893953..b815dc9 100644
--- a/java/com/android/dialer/spam/SpamBindingsStub.java
+++ b/java/com/android/dialer/spam/SpamBindingsStub.java
@@ -16,6 +16,10 @@
 
 package com.android.dialer.spam;
 
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.logging.ContactSource;
+import com.android.dialer.logging.ReportingLocation;
+
 /** Default implementation of SpamBindings. */
 public class SpamBindingsStub implements SpamBindings {
 
@@ -76,17 +80,33 @@
 
   @Override
   public void reportSpamFromAfterCallNotification(
-      String number, String countryIso, int callType, int from, int contactLookupResultType) {}
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactLookupResult.Type contactLookupResultType) {}
 
   @Override
   public void reportSpamFromCallHistory(
-      String number, String countryIso, int callType, int from, int contactSourceType) {}
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactSource.Type contactSourceType) {}
 
   @Override
   public void reportNotSpamFromAfterCallNotification(
-      String number, String countryIso, int callType, int from, int contactLookupResultType) {}
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactLookupResult.Type contactLookupResultType) {}
 
   @Override
   public void reportNotSpamFromCallHistory(
-      String number, String countryIso, int callType, int from, int contactSourceType) {}
+      String number,
+      String countryIso,
+      int callType,
+      ReportingLocation.Type from,
+      ContactSource.Type contactSourceType) {}
 }
diff --git a/java/com/android/dialer/speeddial/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/speeddial/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..b0c27bc
--- /dev/null
+++ b/java/com/android/dialer/speeddial/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+</resources>
diff --git a/java/com/android/dialer/theme/res/drawable-hdpi/ic_block_24dp.png b/java/com/android/dialer/theme/res/drawable-hdpi/ic_block_24dp.png
new file mode 100644
index 0000000..2ccc89d
--- /dev/null
+++ b/java/com/android/dialer/theme/res/drawable-hdpi/ic_block_24dp.png
Binary files differ
diff --git a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..bd719ec
--- /dev/null
+++ b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="unknown" msgid="7932659017139013277">"Nepoznato"</string>
+    <string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
+    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
+</resources>
diff --git a/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..8f16f82
--- /dev/null
+++ b/java/com/android/dialer/util/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="default_notification_description" msgid="4304424287748323094">"Podrazumevani zvuk (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_silent" msgid="946744257396998305">"Ništa"</string>
+    <string name="ringtone_unknown" msgid="1310974715243581582">"Nepoznati zvuk zvona"</string>
+    <string name="activity_not_available" msgid="8360067109103762211">"Na ovom uređaju nema aplikacija za to"</string>
+    <string name="outgoing_wps_warning" msgid="7505673114152005234">"Ako uputite WPS poziv, prekinućete postojeći poziv."</string>
+    <string name="dialog_continue" msgid="4070630558441163574">"Nastavi"</string>
+</resources>
diff --git a/java/com/android/dialer/voicemailstatus/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/voicemailstatus/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..37aa773
--- /dev/null
+++ b/java/com/android/dialer/voicemailstatus/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="voicemail_status_voicemail_not_available" msgid="5853033558114540057">"Ažuriranja govorne pošte nisu dostupna"</string>
+    <string name="voicemail_status_messages_waiting" msgid="8900895357460505877">"Imate novu govornu poštu. Trenutno ne može da se učita."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8642831215097798709">"Podesite govornu poštu"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2341871147130931237">"Audio nije dostupan"</string>
+    <string name="voicemail_status_action_configure" msgid="4445818528232235329">"Podesi"</string>
+    <string name="voicemail_status_action_call_server" msgid="3189606267631644507">"Zovi govornu poštu"</string>
+</resources>
diff --git a/java/com/android/dialer/widget/DialerToolbar.java b/java/com/android/dialer/widget/DialerToolbar.java
index 715a277..9e10583 100644
--- a/java/com/android/dialer/widget/DialerToolbar.java
+++ b/java/com/android/dialer/widget/DialerToolbar.java
@@ -39,6 +39,7 @@
     setElevation(getResources().getDimensionPixelSize(R.dimen.toolbar_elevation));
     setBackgroundColor(getResources().getColor(R.color.dialer_theme_color));
     setNavigationIcon(R.drawable.quantum_ic_close_white_24);
+    setNavigationContentDescription(R.string.toolbar_close);
     setNavigationOnClickListener(v -> ((Activity) context).finish());
   }
 
diff --git a/java/com/android/dialer/widget/MessageFragment.java b/java/com/android/dialer/widget/MessageFragment.java
index ab47f24..b136f47 100644
--- a/java/com/android/dialer/widget/MessageFragment.java
+++ b/java/com/android/dialer/widget/MessageFragment.java
@@ -21,6 +21,7 @@
 import android.support.v4.app.Fragment;
 import android.text.Editable;
 import android.text.InputFilter;
+import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -43,6 +44,7 @@
 
   private EditText customMessage;
   private ImageView sendMessage;
+  private View sendMessageContainer;
   private TextView remainingChar;
   private int charLimit;
 
@@ -68,10 +70,11 @@
     View view = inflater.inflate(R.layout.fragment_message, container, false);
 
     sendMessage = (ImageView) view.findViewById(R.id.send_message);
+    sendMessageContainer = view.findViewById(R.id.count_and_send_container);
     if (getArguments().getBoolean(SHOW_SEND_ICON_KEY, false)) {
       sendMessage.setVisibility(View.VISIBLE);
       sendMessage.setEnabled(false);
-      sendMessage.setOnClickListener(this);
+      sendMessageContainer.setOnClickListener(this);
     }
 
     customMessage = (EditText) view.findViewById(R.id.custom_message);
@@ -97,8 +100,10 @@
 
   @Override
   public void onClick(View view) {
-    if (view == sendMessage) {
-      getListener().onMessageFragmentSendMessage(customMessage.getText().toString());
+    if (view == sendMessageContainer) {
+      if (!TextUtils.isEmpty(customMessage.getText())) {
+        getListener().onMessageFragmentSendMessage(customMessage.getText().toString());
+      }
     } else if (view.getId() == R.id.selectable_text_view) {
       customMessage.setText(((TextView) view).getText());
       customMessage.setSelection(customMessage.getText().length());
diff --git a/java/com/android/dialer/widget/res/layout/fragment_message.xml b/java/com/android/dialer/widget/res/layout/fragment_message.xml
index f09c54f..e39e03a 100644
--- a/java/com/android/dialer/widget/res/layout/fragment_message.xml
+++ b/java/com/android/dialer/widget/res/layout/fragment_message.xml
@@ -53,11 +53,11 @@
     <LinearLayout
       android:id="@+id/count_and_send_container"
       android:orientation="vertical"
-      android:layout_width="wrap_content"
+      android:layout_width="@dimen/send_container_width"
       android:layout_height="wrap_content"
       android:layout_alignParentEnd="true"
       android:layout_centerVertical="true"
-      android:layout_marginEnd="@dimen/textview_item_padding"
+      android:paddingEnd="@dimen/textview_item_padding"
       android:gravity="center">
 
       <ImageView
diff --git a/java/com/android/dialer/widget/res/values-af/strings.xml b/java/com/android/dialer/widget/res/values-af/strings.xml
index 1d6f958..7c5e83a 100644
--- a/java/com/android/dialer/widget/res/values-af/strings.xml
+++ b/java/com/android/dialer/widget/res/values-af/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Skryf \'n gepasmaakte boodskap"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Maak toe"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-am/strings.xml b/java/com/android/dialer/widget/res/values-am/strings.xml
index e3d75a3..f11b468 100644
--- a/java/com/android/dialer/widget/res/values-am/strings.xml
+++ b/java/com/android/dialer/widget/res/values-am/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"ብጁ መልዕክት ይጻፉ"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"ዝጋ"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ar/strings.xml b/java/com/android/dialer/widget/res/values-ar/strings.xml
index 51ddb05..cb2e733 100644
--- a/java/com/android/dialer/widget/res/values-ar/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ar/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"كتابة رسالة مخصصة"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"إغلاق"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-az/strings.xml b/java/com/android/dialer/widget/res/values-az/strings.xml
index 346bf37..3860a58 100644
--- a/java/com/android/dialer/widget/res/values-az/strings.xml
+++ b/java/com/android/dialer/widget/res/values-az/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Fərdi mesaj yazın"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Bağlayın"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..daefd90
--- /dev/null
+++ b/java/com/android/dialer/widget/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="custom_message_hint" msgid="2179012696339457461">"Napišite prilagođenu poruku"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Zatvorite"</string>
+</resources>
diff --git a/java/com/android/dialer/widget/res/values-be/strings.xml b/java/com/android/dialer/widget/res/values-be/strings.xml
index ca35481..8786132 100644
--- a/java/com/android/dialer/widget/res/values-be/strings.xml
+++ b/java/com/android/dialer/widget/res/values-be/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Напісаць карыстальніцкае паведамленне"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Закрыць"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-bg/strings.xml b/java/com/android/dialer/widget/res/values-bg/strings.xml
index e787030..35e980c 100644
--- a/java/com/android/dialer/widget/res/values-bg/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bg/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Напишете свое съобщение"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Затваряне"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-bn/strings.xml b/java/com/android/dialer/widget/res/values-bn/strings.xml
index f76f425..9e17071 100644
--- a/java/com/android/dialer/widget/res/values-bn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bn/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"একটি কাস্টম বার্তা লিখুন"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"বন্ধ করুন"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-bs/strings.xml b/java/com/android/dialer/widget/res/values-bs/strings.xml
index 7fdec7b..0bc1a9c 100644
--- a/java/com/android/dialer/widget/res/values-bs/strings.xml
+++ b/java/com/android/dialer/widget/res/values-bs/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Napišite prilagođenu poruku"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Zatvori"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ca/strings.xml b/java/com/android/dialer/widget/res/values-ca/strings.xml
index ce0a449..8639300 100644
--- a/java/com/android/dialer/widget/res/values-ca/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ca/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Escriu un miss. personalitzat"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Tanca"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-cs/strings.xml b/java/com/android/dialer/widget/res/values-cs/strings.xml
index c827578..829aab8 100644
--- a/java/com/android/dialer/widget/res/values-cs/strings.xml
+++ b/java/com/android/dialer/widget/res/values-cs/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Napište vlastní zprávu"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Zavřít"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-da/strings.xml b/java/com/android/dialer/widget/res/values-da/strings.xml
index da76f04..9381f36 100644
--- a/java/com/android/dialer/widget/res/values-da/strings.xml
+++ b/java/com/android/dialer/widget/res/values-da/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Skriv en tilpasset besked"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Luk"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-de/strings.xml b/java/com/android/dialer/widget/res/values-de/strings.xml
index ddd7e91..949fe9e 100644
--- a/java/com/android/dialer/widget/res/values-de/strings.xml
+++ b/java/com/android/dialer/widget/res/values-de/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Eigene Nachricht schreiben"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Schließen"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-el/strings.xml b/java/com/android/dialer/widget/res/values-el/strings.xml
index dcbbea6..21e049b 100644
--- a/java/com/android/dialer/widget/res/values-el/strings.xml
+++ b/java/com/android/dialer/widget/res/values-el/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Γράψτε ένα προσαρμ. μήνυμα"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Κλείσιμο"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
index d303014..7f22b46 100644
--- a/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rAU/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Write a custom message"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Close"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
index d303014..7f22b46 100644
--- a/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rGB/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Write a custom message"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Close"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
index d303014..7f22b46 100644
--- a/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/widget/res/values-en-rIN/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Write a custom message"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Close"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
index 438f0f4..c7fbdaa 100644
--- a/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/widget/res/values-es-rUS/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Escribe tu propio mensaje"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Cerrar"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-es/strings.xml b/java/com/android/dialer/widget/res/values-es/strings.xml
index fcab71b..507e8af 100644
--- a/java/com/android/dialer/widget/res/values-es/strings.xml
+++ b/java/com/android/dialer/widget/res/values-es/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Mensaje personalizado"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Cerrar"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-et/strings.xml b/java/com/android/dialer/widget/res/values-et/strings.xml
index 6b857fe..71dab42 100644
--- a/java/com/android/dialer/widget/res/values-et/strings.xml
+++ b/java/com/android/dialer/widget/res/values-et/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Kirjutage kohandatud sõnum"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Sule"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-eu/strings.xml b/java/com/android/dialer/widget/res/values-eu/strings.xml
index a8d3d52..b8e4085 100644
--- a/java/com/android/dialer/widget/res/values-eu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-eu/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Idatzi mezu bat"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Itxi"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-fa/strings.xml b/java/com/android/dialer/widget/res/values-fa/strings.xml
index 34c30cc..0c3b1d4 100644
--- a/java/com/android/dialer/widget/res/values-fa/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fa/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"پیام سفارشی بنویسید"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"بستن"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-fi/strings.xml b/java/com/android/dialer/widget/res/values-fi/strings.xml
index 5d596fa..e0e971c 100644
--- a/java/com/android/dialer/widget/res/values-fi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fi/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Kirjoita oma viesti"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Sulje"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
index 092efb6..9776385 100644
--- a/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fr-rCA/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Rédiger message personnalisé"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Fermer"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-fr/strings.xml b/java/com/android/dialer/widget/res/values-fr/strings.xml
index e29274d..fececd8 100644
--- a/java/com/android/dialer/widget/res/values-fr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-fr/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Écrire mon propre message"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Fermer"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-gl/strings.xml b/java/com/android/dialer/widget/res/values-gl/strings.xml
index 1c4670a..6a75681 100644
--- a/java/com/android/dialer/widget/res/values-gl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-gl/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Escribe unha mensaxe personalizada"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Pechar"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-gu/strings.xml b/java/com/android/dialer/widget/res/values-gu/strings.xml
index afbf1b3..c2f8cf0 100644
--- a/java/com/android/dialer/widget/res/values-gu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-gu/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"એક કસ્ટમ સંદેશ લખો"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"બંધ કરો"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-hi/strings.xml b/java/com/android/dialer/widget/res/values-hi/strings.xml
index 556e193..63c94e7 100644
--- a/java/com/android/dialer/widget/res/values-hi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hi/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"कोई कस्टम संदेश लिखें"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"बंद करें"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-hr/strings.xml b/java/com/android/dialer/widget/res/values-hr/strings.xml
index 7fdec7b..28a58d4 100644
--- a/java/com/android/dialer/widget/res/values-hr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hr/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Napišite prilagođenu poruku"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Zatvaranje"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-hu/strings.xml b/java/com/android/dialer/widget/res/values-hu/strings.xml
index a778ab1..dcd2b36 100644
--- a/java/com/android/dialer/widget/res/values-hu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hu/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Egyéni üzenet írása"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Bezárás"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-hy/strings.xml b/java/com/android/dialer/widget/res/values-hy/strings.xml
index 79216d6..7b78bb2 100644
--- a/java/com/android/dialer/widget/res/values-hy/strings.xml
+++ b/java/com/android/dialer/widget/res/values-hy/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Գրել տեքստն ինքնուրույն"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Փակել"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-in/strings.xml b/java/com/android/dialer/widget/res/values-in/strings.xml
index 4e1076d..b4b6550 100644
--- a/java/com/android/dialer/widget/res/values-in/strings.xml
+++ b/java/com/android/dialer/widget/res/values-in/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Tulis pesan khusus"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Tutup"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-is/strings.xml b/java/com/android/dialer/widget/res/values-is/strings.xml
index 9fbf9bd..fd84419 100644
--- a/java/com/android/dialer/widget/res/values-is/strings.xml
+++ b/java/com/android/dialer/widget/res/values-is/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Skrifa sérsniðin skilaboð"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Loka"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-it/strings.xml b/java/com/android/dialer/widget/res/values-it/strings.xml
index 257ed26..0af3fd2 100644
--- a/java/com/android/dialer/widget/res/values-it/strings.xml
+++ b/java/com/android/dialer/widget/res/values-it/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Scrivi un messaggio personalizzato"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Chiudi"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-iw/strings.xml b/java/com/android/dialer/widget/res/values-iw/strings.xml
index 298bc40..a485888 100644
--- a/java/com/android/dialer/widget/res/values-iw/strings.xml
+++ b/java/com/android/dialer/widget/res/values-iw/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"כתוב הודעה מותאמת אישית"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"סגירה"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ja/strings.xml b/java/com/android/dialer/widget/res/values-ja/strings.xml
index 39081d5..9fd65a8 100644
--- a/java/com/android/dialer/widget/res/values-ja/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ja/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"カスタム メッセージを入力"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"閉じる"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ka/strings.xml b/java/com/android/dialer/widget/res/values-ka/strings.xml
index 3e65a6a..6dde044 100644
--- a/java/com/android/dialer/widget/res/values-ka/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ka/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"დაწერეთ მორგებ. შეტყობინება"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"დახურვა"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-kk/strings.xml b/java/com/android/dialer/widget/res/values-kk/strings.xml
index eca687f..334d915 100644
--- a/java/com/android/dialer/widget/res/values-kk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-kk/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Арнаулы хабар жазу"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Жабу"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-km/strings.xml b/java/com/android/dialer/widget/res/values-km/strings.xml
index 37253c4..d0f5633 100644
--- a/java/com/android/dialer/widget/res/values-km/strings.xml
+++ b/java/com/android/dialer/widget/res/values-km/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"សរសេរ​សារ​ផ្ទាល់ខ្លួន"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"បិទ"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-kn/strings.xml b/java/com/android/dialer/widget/res/values-kn/strings.xml
index 66fcc25..3535bfc 100644
--- a/java/com/android/dialer/widget/res/values-kn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-kn/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"ಕಸ್ಟಮ್ ಸಂದೇಶವನ್ನು ಬರೆಯಿರಿ"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"ಮುಚ್ಚಿ"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ko/strings.xml b/java/com/android/dialer/widget/res/values-ko/strings.xml
index 8b5f619..8c00cea 100644
--- a/java/com/android/dialer/widget/res/values-ko/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ko/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"맞춤 메시지를 작성하세요."</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"닫기"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ky/strings.xml b/java/com/android/dialer/widget/res/values-ky/strings.xml
index a13f795..46ea851 100644
--- a/java/com/android/dialer/widget/res/values-ky/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ky/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Башка билдирүүнү жазыңыз"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Жабуу"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-lo/strings.xml b/java/com/android/dialer/widget/res/values-lo/strings.xml
index 598a2c9..0db64a7 100644
--- a/java/com/android/dialer/widget/res/values-lo/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lo/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"ຂຽນຂໍ້ຄວາມດ້ວຍຕົນເອງ"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"ປິດ"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-lt/strings.xml b/java/com/android/dialer/widget/res/values-lt/strings.xml
index d09ba16..a10b91e 100644
--- a/java/com/android/dialer/widget/res/values-lt/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lt/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Parašykite tinkintą praneš."</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Uždaryti"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-lv/strings.xml b/java/com/android/dialer/widget/res/values-lv/strings.xml
index a3eab39..8ff0793 100644
--- a/java/com/android/dialer/widget/res/values-lv/strings.xml
+++ b/java/com/android/dialer/widget/res/values-lv/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Rakstīt pielāgotu ziņojumu"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Aizvērt"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-mk/strings.xml b/java/com/android/dialer/widget/res/values-mk/strings.xml
index f4230d2..aa9be30 100644
--- a/java/com/android/dialer/widget/res/values-mk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mk/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Напиши приспособена порака"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Затвори"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ml/strings.xml b/java/com/android/dialer/widget/res/values-ml/strings.xml
index 947e6cc..b52ee40 100644
--- a/java/com/android/dialer/widget/res/values-ml/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ml/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"ഒരു ഇ‌ഷ്‌ടാനുസൃത സന്ദേശം രചിക്കൂ"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"അടയ്‌ക്കുക"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-mn/strings.xml b/java/com/android/dialer/widget/res/values-mn/strings.xml
index 21de0a5..6bdad89 100644
--- a/java/com/android/dialer/widget/res/values-mn/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mn/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Тусгай зурвас бичих"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Хаах"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-mr/strings.xml b/java/com/android/dialer/widget/res/values-mr/strings.xml
index 9a7adc5..5661fa8 100644
--- a/java/com/android/dialer/widget/res/values-mr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-mr/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"एक सानुकूल संदेश लिहा"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"बंद करा"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ms/strings.xml b/java/com/android/dialer/widget/res/values-ms/strings.xml
index 41071ce..8889ccc 100644
--- a/java/com/android/dialer/widget/res/values-ms/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ms/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Tulis mesej tersuai"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Tutup"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-my/strings.xml b/java/com/android/dialer/widget/res/values-my/strings.xml
index 2508083..9a69f29 100644
--- a/java/com/android/dialer/widget/res/values-my/strings.xml
+++ b/java/com/android/dialer/widget/res/values-my/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"စိတ်ကြိုက် မက်ဆေ့ဂျ်တစ်ခု ရေးပါ"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"ပိတ်ရန်"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-nb/strings.xml b/java/com/android/dialer/widget/res/values-nb/strings.xml
index ef6b545..100156b 100644
--- a/java/com/android/dialer/widget/res/values-nb/strings.xml
+++ b/java/com/android/dialer/widget/res/values-nb/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Skriv egendefinert melding"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Lukk"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ne/strings.xml b/java/com/android/dialer/widget/res/values-ne/strings.xml
index ab3697d..abb8bb0 100644
--- a/java/com/android/dialer/widget/res/values-ne/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ne/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"आफू अनुकूल सन्देश लेख्‍ने"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"बन्द गर्नुहोस्"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-nl/strings.xml b/java/com/android/dialer/widget/res/values-nl/strings.xml
index 3e569d9..5560288 100644
--- a/java/com/android/dialer/widget/res/values-nl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-nl/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Schrijf zelf een bericht"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Sluiten"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-no/strings.xml b/java/com/android/dialer/widget/res/values-no/strings.xml
index ef6b545..100156b 100644
--- a/java/com/android/dialer/widget/res/values-no/strings.xml
+++ b/java/com/android/dialer/widget/res/values-no/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Skriv egendefinert melding"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Lukk"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-pa/strings.xml b/java/com/android/dialer/widget/res/values-pa/strings.xml
index 6cdbb70..4c69c2c 100644
--- a/java/com/android/dialer/widget/res/values-pa/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pa/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਸੰਦੇਸ਼ ਲਿਖੋ"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"ਬੰਦ ਕਰੋ"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-pl/strings.xml b/java/com/android/dialer/widget/res/values-pl/strings.xml
index d6e8447..cec7a40 100644
--- a/java/com/android/dialer/widget/res/values-pl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pl/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Wpisz wiadomość"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Zamknij"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
index de4215f..b15bfac 100644
--- a/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt-rBR/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Escreva sua mensagem"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Fechar"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
index 88b9612..ece2ef2 100644
--- a/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt-rPT/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Escreva uma mensagem"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Fechar"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-pt/strings.xml b/java/com/android/dialer/widget/res/values-pt/strings.xml
index de4215f..b15bfac 100644
--- a/java/com/android/dialer/widget/res/values-pt/strings.xml
+++ b/java/com/android/dialer/widget/res/values-pt/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Escreva sua mensagem"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Fechar"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ro/strings.xml b/java/com/android/dialer/widget/res/values-ro/strings.xml
index 31e0d99..753b920 100644
--- a/java/com/android/dialer/widget/res/values-ro/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ro/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Scrieți mesaj personalizat"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Închideți"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ru/strings.xml b/java/com/android/dialer/widget/res/values-ru/strings.xml
index 20f0a7f..bdebd3c 100644
--- a/java/com/android/dialer/widget/res/values-ru/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ru/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Добавьте свой текст"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Закрыть"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-si/strings.xml b/java/com/android/dialer/widget/res/values-si/strings.xml
index f1fa77c..4988259 100644
--- a/java/com/android/dialer/widget/res/values-si/strings.xml
+++ b/java/com/android/dialer/widget/res/values-si/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"අභිරුචි පණිවිඩයක් ලියන්න"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"වසන්න"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-sk/strings.xml b/java/com/android/dialer/widget/res/values-sk/strings.xml
index 8947017..5dc1bd5 100644
--- a/java/com/android/dialer/widget/res/values-sk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sk/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Napíšte vlastnú správu"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Zavrieť"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-sl/strings.xml b/java/com/android/dialer/widget/res/values-sl/strings.xml
index a46f854..0ba965b 100644
--- a/java/com/android/dialer/widget/res/values-sl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sl/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Napišite sporočilo po meri"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Zapri"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-sq/strings.xml b/java/com/android/dialer/widget/res/values-sq/strings.xml
index baa0f52..7f5e0f2 100644
--- a/java/com/android/dialer/widget/res/values-sq/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sq/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Shkruaj mesazh të person."</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Mbyll"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-sr/strings.xml b/java/com/android/dialer/widget/res/values-sr/strings.xml
index f17531c..446c273 100644
--- a/java/com/android/dialer/widget/res/values-sr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sr/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Напишите прилагођену поруку"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Затворите"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-sv/strings.xml b/java/com/android/dialer/widget/res/values-sv/strings.xml
index a4c45f9..7d2f44c 100644
--- a/java/com/android/dialer/widget/res/values-sv/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sv/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Skriv anpassat meddelande"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Stäng"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-sw/strings.xml b/java/com/android/dialer/widget/res/values-sw/strings.xml
index 4adbd6e..d2c2a97 100644
--- a/java/com/android/dialer/widget/res/values-sw/strings.xml
+++ b/java/com/android/dialer/widget/res/values-sw/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Andika ujumbe maalum"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Funga"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ta/strings.xml b/java/com/android/dialer/widget/res/values-ta/strings.xml
index ea099f1..4061c16 100644
--- a/java/com/android/dialer/widget/res/values-ta/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ta/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"தனிப்பயன் செய்தியை எழுதவும்"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"மூடு"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-te/strings.xml b/java/com/android/dialer/widget/res/values-te/strings.xml
index 2789713..c2474b7 100644
--- a/java/com/android/dialer/widget/res/values-te/strings.xml
+++ b/java/com/android/dialer/widget/res/values-te/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"అనుకూల సందేశాన్ని వ్రాయండి"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"మూసివేయి"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-th/strings.xml b/java/com/android/dialer/widget/res/values-th/strings.xml
index 4662968..d450b4b 100644
--- a/java/com/android/dialer/widget/res/values-th/strings.xml
+++ b/java/com/android/dialer/widget/res/values-th/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"เขียนข้อความที่กำหนดเอง"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"ปิด"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-tl/strings.xml b/java/com/android/dialer/widget/res/values-tl/strings.xml
index 60850f2..ee7c52f 100644
--- a/java/com/android/dialer/widget/res/values-tl/strings.xml
+++ b/java/com/android/dialer/widget/res/values-tl/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Sumulat ng custom na mensahe"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Isara"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-tr/strings.xml b/java/com/android/dialer/widget/res/values-tr/strings.xml
index 32ebdc7..64e2ea5 100644
--- a/java/com/android/dialer/widget/res/values-tr/strings.xml
+++ b/java/com/android/dialer/widget/res/values-tr/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Özel bir mesaj yazın"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Kapat"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-uk/strings.xml b/java/com/android/dialer/widget/res/values-uk/strings.xml
index d26d888..f8d9bb8 100644
--- a/java/com/android/dialer/widget/res/values-uk/strings.xml
+++ b/java/com/android/dialer/widget/res/values-uk/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Ваше власне повідомлення"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Закрити"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-ur/strings.xml b/java/com/android/dialer/widget/res/values-ur/strings.xml
index d8023db..6edeb5c 100644
--- a/java/com/android/dialer/widget/res/values-ur/strings.xml
+++ b/java/com/android/dialer/widget/res/values-ur/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"ایک حسب ضرورت پیغام لکھیں"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"بند کریں"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-uz/strings.xml b/java/com/android/dialer/widget/res/values-uz/strings.xml
index 7c6eabc..434464a 100644
--- a/java/com/android/dialer/widget/res/values-uz/strings.xml
+++ b/java/com/android/dialer/widget/res/values-uz/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Boshqa xabar yozing"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Yopish"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-vi/strings.xml b/java/com/android/dialer/widget/res/values-vi/strings.xml
index 6111ce3..1a30f7c 100644
--- a/java/com/android/dialer/widget/res/values-vi/strings.xml
+++ b/java/com/android/dialer/widget/res/values-vi/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Viết tin nhắn tùy chỉnh"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Đóng"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
index b41e758..7999723 100644
--- a/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rCN/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"自行撰写信息"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"关闭"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
index f6e0afe..b0bfcc8 100644
--- a/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rHK/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"撰寫自訂訊息"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"關閉"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
index f6e0afe..b0bfcc8 100644
--- a/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zh-rTW/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"撰寫自訂訊息"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"關閉"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values-zu/strings.xml b/java/com/android/dialer/widget/res/values-zu/strings.xml
index c908618..074aa58 100644
--- a/java/com/android/dialer/widget/res/values-zu/strings.xml
+++ b/java/com/android/dialer/widget/res/values-zu/strings.xml
@@ -2,4 +2,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="custom_message_hint" msgid="2179012696339457461">"Bhala umlayezo wangokwezifiso"</string>
+    <string name="toolbar_close" msgid="1081308076149879833">"Vala"</string>
 </resources>
diff --git a/java/com/android/dialer/widget/res/values/dimens.xml b/java/com/android/dialer/widget/res/values/dimens.xml
index 0b1c1f1..20393a8 100644
--- a/java/com/android/dialer/widget/res/values/dimens.xml
+++ b/java/com/android/dialer/widget/res/values/dimens.xml
@@ -20,6 +20,7 @@
   <dimen name="textview_item_padding">16dp</dimen>
   <dimen name="message_remaining_char_text_size">12sp</dimen>
   <dimen name="message_divider_height">1dp</dimen>
+  <dimen name="send_container_width">48dp</dimen>
 
   <dimen name="toolbar_title_text_size">20sp</dimen>
   <dimen name="toolbar_title_small_text_size">14sp</dimen>
diff --git a/java/com/android/dialer/widget/res/values/strings.xml b/java/com/android/dialer/widget/res/values/strings.xml
index 6904c2d..a5829bb 100644
--- a/java/com/android/dialer/widget/res/values/strings.xml
+++ b/java/com/android/dialer/widget/res/values/strings.xml
@@ -2,4 +2,7 @@
 <resources>
   <!-- Hint in a text field to compose a custom message to send with a phone call [CHAR LIMIT=27] -->
   <string name="custom_message_hint">Write a custom message</string>
+
+  <!-- Accessibility string for close/navigation icon in DialerToolbar -->
+  <string name="toolbar_close">Close</string>
 </resources>
\ No newline at end of file
diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java
index f48413d..8116f13 100644
--- a/java/com/android/incallui/AnswerScreenPresenter.java
+++ b/java/com/android/incallui/AnswerScreenPresenter.java
@@ -23,6 +23,8 @@
 import android.telecom.VideoProfile;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
 import com.android.incallui.answer.protocol.AnswerScreen;
 import com.android.incallui.answer.protocol.AnswerScreenDelegate;
 import com.android.incallui.answerproximitysensor.AnswerProximitySensor;
@@ -77,8 +79,18 @@
   public void onAnswer(boolean answerVideoAsAudio) {
     if (answerScreen.isVideoUpgradeRequest()) {
       if (answerVideoAsAudio) {
+        Logger.get(context)
+            .logCallImpression(
+                DialerImpression.Type.VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO,
+                call.getUniqueCallId(),
+                call.getTimeAddedMs());
         call.getVideoTech().acceptVideoRequestAsAudio();
       } else {
+        Logger.get(context)
+            .logCallImpression(
+                DialerImpression.Type.VIDEO_CALL_REQUEST_ACCEPTED,
+                call.getUniqueCallId(),
+                call.getTimeAddedMs());
         call.getVideoTech().acceptVideoRequest();
       }
     } else {
@@ -93,6 +105,11 @@
   @Override
   public void onReject() {
     if (answerScreen.isVideoUpgradeRequest()) {
+      Logger.get(context)
+          .logCallImpression(
+              DialerImpression.Type.VIDEO_CALL_REQUEST_DECLINED,
+              call.getUniqueCallId(),
+              call.getTimeAddedMs());
       call.getVideoTech().declineVideoRequest();
     } else {
       call.reject(false /* rejectWithMessage */, null);
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index d2bd319..b0c3a99 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -24,15 +24,16 @@
 import com.android.contacts.common.compat.CallCompat;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
-import com.android.incallui.AudioModeProvider.AudioModeListener;
 import com.android.incallui.InCallCameraManager.Listener;
 import com.android.incallui.InCallPresenter.CanAddCallListener;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
 import com.android.incallui.InCallPresenter.IncomingCallListener;
+import com.android.incallui.audiomode.AudioModeProvider;
+import com.android.incallui.audiomode.AudioModeProvider.AudioModeListener;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCall.CameraDirection;
@@ -270,6 +271,11 @@
   @Override
   public void changeToVideoClicked() {
     LogUtil.enterBlock("CallButtonPresenter.changeToVideoClicked");
+    Logger.get(mContext)
+        .logCallImpression(
+            DialerImpression.Type.VIDEO_CALL_UPGRADE_REQUESTED,
+            mCall.getUniqueCallId(),
+            mCall.getTimeAddedMs());
     mCall.getVideoTech().upgradeToVideo();
   }
 
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 6a34688..a51f54e 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -50,8 +50,8 @@
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.enrichedcall.Session;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
@@ -663,10 +663,13 @@
 
     MultimediaData multimediaData = null;
     if (mPrimary.getNumber() != null) {
+      EnrichedCallManager manager = EnrichedCallComponent.get(mContext).getEnrichedCallManager();
       Session enrichedCallSession =
-          EnrichedCallComponent.get(mContext)
-              .getEnrichedCallManager()
-              .getSession(mPrimary.getUniqueCallId(), mPrimary.getNumber());
+          manager.getSession(mPrimary.getUniqueCallId(), mPrimary.getNumber());
+
+      mPrimary.setEnrichedCallSession(enrichedCallSession);
+      mPrimary.setEnrichedCallCapabilities(manager.getCapabilities(mPrimary.getNumber()));
+
       if (enrichedCallSession != null) {
         enrichedCallSession.setUniqueDialerCallId(mPrimary.getUniqueCallId());
         multimediaData = enrichedCallSession.getMultimediaData();
diff --git a/java/com/android/incallui/ConferenceManagerFragment.java b/java/com/android/incallui/ConferenceManagerFragment.java
index 8696bb8..cef8a38 100644
--- a/java/com/android/incallui/ConferenceManagerFragment.java
+++ b/java/com/android/incallui/ConferenceManagerFragment.java
@@ -23,7 +23,7 @@
 import android.widget.ListView;
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.ScreenEvent;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.incallui.ConferenceManagerPresenter.ConferenceManagerUi;
 import com.android.incallui.baseui.BaseFragment;
 import com.android.incallui.call.CallList;
diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java
index 9e696b5..3014de3 100644
--- a/java/com/android/incallui/ContactInfoCache.java
+++ b/java/com/android/incallui/ContactInfoCache.java
@@ -45,7 +45,8 @@
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutors;
-import com.android.dialer.logging.nano.ContactLookupResult;
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.logging.ContactSource;
 import com.android.dialer.oem.CequintCallerIdManager;
 import com.android.dialer.oem.CequintCallerIdManager.CequintCallerIdContact;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
@@ -98,7 +99,7 @@
       }
       ContactInfo contactInfo = new ContactInfo();
       CachedContactInfo cacheInfo = input.service.buildCachedContactInfo(contactInfo);
-      cacheInfo.setSource(CachedContactInfo.SOURCE_TYPE_CNAP, "CNAP", 0);
+      cacheInfo.setSource(ContactSource.Type.SOURCE_TYPE_CNAP, "CNAP", 0);
       contactInfo.name = input.cnapName;
       contactInfo.number = input.number;
       contactInfo.type = ContactsContract.CommonDataKinds.Phone.TYPE_MAIN;
@@ -143,8 +144,7 @@
 
     // TODO: get rid of caller info.
     final CallerInfo info = CallerInfoUtils.buildCallerInfo(context, call);
-    ContactInfoCache.populateCacheEntry(
-        context, info, entry, call.getNumberPresentation(), isIncoming);
+    ContactInfoCache.populateCacheEntry(context, info, entry, call.getNumberPresentation());
     return entry;
   }
 
@@ -153,8 +153,7 @@
       @NonNull Context context,
       @NonNull CallerInfo info,
       @NonNull ContactCacheEntry cce,
-      int presentation,
-      boolean isIncoming) {
+      int presentation) {
     Objects.requireNonNull(info);
     String displayName = null;
     String displayNumber = null;
@@ -442,7 +441,7 @@
     }
 
     // We always replace the entry. The only exception is the same photo case.
-    ContactCacheEntry cacheEntry = buildEntry(mContext, callerInfo, presentationMode, isIncoming);
+    ContactCacheEntry cacheEntry = buildEntry(mContext, callerInfo, presentationMode);
     cacheEntry.queryId = queryToken.mQueryId;
 
     ContactCacheEntry existingCacheEntry = mInfoMap.get(callId);
@@ -509,20 +508,26 @@
     if (cequintCallerIdContact == null) {
       return;
     }
+    boolean hasUpdate = false;
 
     if (TextUtils.isEmpty(callerInfo.name) && !TextUtils.isEmpty(cequintCallerIdContact.name)) {
       callerInfo.name = cequintCallerIdContact.name;
-      callerInfo.contactExists = true;
+      hasUpdate = true;
     }
     if (!TextUtils.isEmpty(cequintCallerIdContact.geoDescription)) {
       callerInfo.geoDescription = cequintCallerIdContact.geoDescription;
       callerInfo.shouldShowGeoDescription = true;
-      callerInfo.contactExists = true;
+      hasUpdate = true;
     }
-    if (callerInfo.contactDisplayPhotoUri == null && cequintCallerIdContact.imageUrl != null) {
+    // Don't overwrite photo in local contacts.
+    if (!callerInfo.contactExists
+        && callerInfo.contactDisplayPhotoUri == null
+        && cequintCallerIdContact.imageUrl != null) {
       callerInfo.contactDisplayPhotoUri = Uri.parse(cequintCallerIdContact.imageUrl);
-      callerInfo.contactExists = true;
+      hasUpdate = true;
     }
+    // Set contact to exist to avoid phone number service lookup.
+    callerInfo.contactExists = hasUpdate;
   }
 
   /**
@@ -600,10 +605,9 @@
     mQueryId = 0;
   }
 
-  private ContactCacheEntry buildEntry(
-      Context context, CallerInfo info, int presentation, boolean isIncoming) {
+  private ContactCacheEntry buildEntry(Context context, CallerInfo info, int presentation) {
     final ContactCacheEntry cce = new ContactCacheEntry();
-    populateCacheEntry(context, info, cce, presentation, isIncoming);
+    populateCacheEntry(context, info, cce, presentation);
 
     // This will only be true for emergency numbers
     if (info.photoResource != 0) {
@@ -712,7 +716,7 @@
 
     public Uri lookupUri; // Sent to NotificationMananger
     public String lookupKey;
-    public int contactLookupResult = ContactLookupResult.Type.NOT_FOUND;
+    public ContactLookupResult.Type contactLookupResult = ContactLookupResult.Type.NOT_FOUND;
     public long userType = ContactsUtils.USER_TYPE_CURRENT;
     Uri contactRingtoneUri;
     /** Query id to identify the query session. */
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 90eb0aa..03e5ab2 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -38,7 +38,7 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.ScreenEvent;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.incallui.answer.bindings.AnswerBindings;
 import com.android.incallui.answer.protocol.AnswerScreen;
 import com.android.incallui.answer.protocol.AnswerScreenDelegate;
diff --git a/java/com/android/incallui/InCallActivityCommon.java b/java/com/android/incallui/InCallActivityCommon.java
index 2cdb913..01dc1bb 100644
--- a/java/com/android/incallui/InCallActivityCommon.java
+++ b/java/com/android/incallui/InCallActivityCommon.java
@@ -55,8 +55,9 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.CompatUtils;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.ScreenEvent;
+import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.util.ViewUtil;
+import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCall.State;
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index d3d8399..a1643d6 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -41,8 +41,8 @@
 import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
+import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.InteractionEvent;
 import com.android.dialer.postcall.PostCall;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.TouchPointManager;
@@ -914,24 +914,6 @@
         && !mInCallActivity.isFinishing());
   }
 
-  private boolean isActivityVisible() {
-    return mInCallActivity != null && mInCallActivity.isVisible();
-  }
-
-  boolean shouldShowFullScreenNotification() {
-    /**
-     * This is to cover the case where the incall activity is started but in the background, e.g.
-     * when the user pressed Home from the account selection dialog or an existing call. In the case
-     * that incall activity is already visible, there's no need to configure the notification with a
-     * full screen intent.
-     */
-    LogUtil.d(
-        "InCallPresenter.shouldShowFullScreenNotification",
-        "isActivityVisible: %b",
-        isActivityVisible());
-    return !isActivityVisible();
-  }
-
   /**
    * Determines if the In-Call app is currently changing configuration.
    *
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index 33e8393..4fed014 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -22,6 +22,7 @@
 import android.telecom.Call;
 import android.telecom.CallAudioState;
 import android.telecom.InCallService;
+import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.ExternalCallList;
 import com.android.incallui.call.TelecomAdapter;
diff --git a/java/com/android/incallui/NotificationBroadcastReceiver.java b/java/com/android/incallui/NotificationBroadcastReceiver.java
index cef1895..5e757cf 100644
--- a/java/com/android/incallui/NotificationBroadcastReceiver.java
+++ b/java/com/android/incallui/NotificationBroadcastReceiver.java
@@ -23,8 +23,8 @@
 import android.support.annotation.RequiresApi;
 import android.telecom.VideoProfile;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 
diff --git a/java/com/android/incallui/ProximitySensor.java b/java/com/android/incallui/ProximitySensor.java
index 229b58c..653d85b 100644
--- a/java/com/android/incallui/ProximitySensor.java
+++ b/java/com/android/incallui/ProximitySensor.java
@@ -24,9 +24,10 @@
 import android.telecom.CallAudioState;
 import android.view.Display;
 import com.android.dialer.common.LogUtil;
-import com.android.incallui.AudioModeProvider.AudioModeListener;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
+import com.android.incallui.audiomode.AudioModeProvider;
+import com.android.incallui.audiomode.AudioModeProvider.AudioModeListener;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index 405eede..a6a81c6 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -119,7 +119,6 @@
   private String mSavedContentTitle;
   private Uri mRingtone;
   private StatusBarCallListener mStatusBarCallListener;
-  private boolean mShowFullScreenIntent;
 
   public StatusBarNotifier(@NonNull Context context, @NonNull ContactInfoCache contactInfoCache) {
     Objects.requireNonNull(context);
@@ -224,7 +223,7 @@
       setStatusBarCallListener(null);
     }
     if (mCurrentNotification != NOTIFICATION_NONE) {
-      LogUtil.d("StatusBarNotifier.cancelNotification", "cancel");
+      LogUtil.i("StatusBarNotifier.cancelNotification", "cancel");
       mNotificationManager.cancel(mCurrentNotification);
     }
     mCurrentNotification = NOTIFICATION_NONE;
@@ -324,8 +323,7 @@
         contentTitle,
         callState,
         notificationType,
-        contactInfo.contactRingtoneUri,
-        InCallPresenter.getInstance().shouldShowFullScreenNotification())) {
+        contactInfo.contactRingtoneUri)) {
       return;
     }
 
@@ -361,10 +359,8 @@
     if (notificationType == NOTIFICATION_INCOMING_CALL) {
       NotificationChannelManager.applyChannel(
           builder, mContext, Channel.INCOMING_CALL, accountHandle);
-      if (InCallPresenter.getInstance().shouldShowFullScreenNotification()) {
-        configureFullScreenIntent(
-            builder, createLaunchPendingIntent(true /* isFullScreen */), callList, call);
-      }
+      configureFullScreenIntent(
+          builder, createLaunchPendingIntent(true /* isFullScreen */), callList, call);
       // Set the notification category and bump the priority for incoming calls
       builder.setCategory(Notification.CATEGORY_CALL);
       builder.setPriority(Notification.PRIORITY_MAX);
@@ -501,8 +497,7 @@
       String contentTitle,
       int state,
       int notificationType,
-      Uri ringtone,
-      boolean showFullScreenIntent) {
+      Uri ringtone) {
 
     // The two are different:
     // if new title is not null, it should be different from saved version OR
@@ -511,15 +506,17 @@
         (contentTitle != null && !contentTitle.equals(mSavedContentTitle))
             || (contentTitle == null && mSavedContentTitle != null);
 
+    boolean largeIconChanged =
+        mSavedLargeIcon == null ? largeIcon != null : !mSavedLargeIcon.sameAs(largeIcon);
+
     // any change means we are definitely updating
     boolean retval =
         (mSavedIcon != icon)
             || !Objects.equals(mSavedContent, content)
             || (mCallState != state)
-            || (mSavedLargeIcon != largeIcon)
+            || largeIconChanged
             || contentTitleChanged
-            || !Objects.equals(mRingtone, ringtone)
-            || mShowFullScreenIntent != showFullScreenIntent;
+            || !Objects.equals(mRingtone, ringtone);
 
     // If we aren't showing a notification right now or the notification type is changing,
     // definitely do an update.
@@ -537,7 +534,6 @@
     mSavedLargeIcon = largeIcon;
     mSavedContentTitle = contentTitle;
     mRingtone = ringtone;
-    mShowFullScreenIntent = showFullScreenIntent;
 
     if (retval) {
       LogUtil.d(
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 9eb29ac..7fa559d 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -53,8 +53,8 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.MathUtil;
 import com.android.dialer.compat.ActivityCompat;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.util.ViewUtil;
 import com.android.incallui.answer.impl.CreateCustomSmsDialogFragment.CreateCustomSmsHolder;
diff --git a/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java b/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java
index 6e8e1f7..5c1ee47 100644
--- a/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java
+++ b/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java
@@ -131,6 +131,7 @@
   private ImageView contactPuckBackground;
   private ImageView contactPuckIcon;
   private View incomingDisconnectText;
+  private View spaceHolder;
   private Animator lockBounceAnim;
   private AnimatorSet lockEntryAnim;
   private AnimatorSet lockHintAnim;
@@ -193,33 +194,39 @@
     swipeToAnswerText = (TextView) view.findViewById(R.id.incoming_swipe_to_answer_text);
     swipeToRejectText = (TextView) view.findViewById(R.id.incoming_swipe_to_reject_text);
     incomingDisconnectText = view.findViewById(R.id.incoming_will_disconnect_text);
+    incomingDisconnectText.setVisibility(incomingWillDisconnect ? View.VISIBLE : View.GONE);
     incomingDisconnectText.setAlpha(incomingWillDisconnect ? 1 : 0);
+    spaceHolder = view.findViewById(R.id.incoming_bouncer_space_holder);
+    spaceHolder.setVisibility(incomingWillDisconnect ? View.GONE : View.VISIBLE);
 
-    view.setAccessibilityDelegate(
-        new AccessibilityDelegate() {
-          @Override
-          public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
-            super.onInitializeAccessibilityNodeInfo(host, info);
-            info.addAction(
-                new AccessibilityAction(
-                    R.id.accessibility_action_answer, getString(R.string.call_incoming_answer)));
-            info.addAction(
-                new AccessibilityAction(
-                    R.id.accessibility_action_decline, getString(R.string.call_incoming_decline)));
-          }
+    view.findViewById(R.id.incoming_swipe_to_answer_container)
+        .setAccessibilityDelegate(
+            new AccessibilityDelegate() {
+              @Override
+              public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
+                super.onInitializeAccessibilityNodeInfo(host, info);
+                info.addAction(
+                    new AccessibilityAction(
+                        R.id.accessibility_action_answer,
+                        getString(R.string.call_incoming_answer)));
+                info.addAction(
+                    new AccessibilityAction(
+                        R.id.accessibility_action_decline,
+                        getString(R.string.call_incoming_decline)));
+              }
 
-          @Override
-          public boolean performAccessibilityAction(View host, int action, Bundle args) {
-            if (action == R.id.accessibility_action_answer) {
-              performAccept();
-              return true;
-            } else if (action == R.id.accessibility_action_decline) {
-              performReject();
-              return true;
-            }
-            return super.performAccessibilityAction(host, action, args);
-          }
-        });
+              @Override
+              public boolean performAccessibilityAction(View host, int action, Bundle args) {
+                if (action == R.id.accessibility_action_answer) {
+                  performAccept();
+                  return true;
+                } else if (action == R.id.accessibility_action_decline) {
+                  performReject();
+                  return true;
+                }
+                return super.performAccessibilityAction(host, action, args);
+              }
+            });
 
     swipeProgress = 0;
 
@@ -367,7 +374,24 @@
   public void setShowIncomingWillDisconnect(boolean incomingWillDisconnect) {
     this.incomingWillDisconnect = incomingWillDisconnect;
     if (incomingDisconnectText != null) {
-      incomingDisconnectText.animate().alpha(incomingWillDisconnect ? 1 : 0);
+      if (incomingWillDisconnect) {
+        incomingDisconnectText.setVisibility(View.VISIBLE);
+        spaceHolder.setVisibility(View.GONE);
+        incomingDisconnectText.animate().alpha(1);
+      } else {
+        incomingDisconnectText
+            .animate()
+            .alpha(0)
+            .setListener(
+                new AnimatorListenerAdapter() {
+                  @Override
+                  public void onAnimationEnd(Animator animation) {
+                    super.onAnimationEnd(animation);
+                    incomingDisconnectText.setVisibility(View.GONE);
+                    spaceHolder.setVisibility(View.VISIBLE);
+                  }
+                });
+      }
     }
   }
 
diff --git a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml
index 42b55cf..9a49075 100644
--- a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml
+++ b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml
@@ -16,101 +16,108 @@
   -->
 
 <FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  xmlns:tools="http://schemas.android.com/tools"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:layout_marginStart="@dimen/answer_swipe_dead_zone_sides"
-  android:clipChildren="false"
-  android:clipToPadding="false"
-  android:layout_marginEnd="@dimen/answer_swipe_dead_zone_sides">
-  <LinearLayout
-    android:id="@+id/incoming_swipe_to_answer_container"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:accessibilityLiveRegion="polite"
+    android:layout_marginStart="@dimen/answer_swipe_dead_zone_sides"
+    android:layout_marginEnd="@dimen/answer_swipe_dead_zone_sides"
     android:clipChildren="false"
-    android:clipToPadding="false"
-    android:gravity="center_horizontal|bottom"
-    android:orientation="vertical"
-    android:visibility="visible">
-    <TextView
-      android:id="@+id/incoming_will_disconnect_text"
-      android:layout_width="wrap_content"
+    android:clipToPadding="false">
+  <LinearLayout
+      android:id="@+id/incoming_swipe_to_answer_container"
+      android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:layout_marginBottom="116dp"
-      android:layout_gravity="center_horizontal"
-      android:alpha="0"
-      android:text="@string/call_incoming_will_disconnect"
-      android:textColor="@color/blue_grey_100"
-      android:textSize="16sp"
-      tools:alpha="1"/>
-    <TextView
-      android:id="@+id/incoming_swipe_to_answer_text"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginBottom="18dp"
-      android:layout_gravity="center_horizontal"
-      android:textAlignment="center"
-      android:focusable="false"
-      android:text="@string/call_incoming_swipe_to_answer"
-      android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint"/>
-
-    <FrameLayout
-      android:id="@+id/incoming_call_puck_container"
-      android:layout_width="@dimen/answer_contact_puck_size_photo"
-      android:layout_height="@dimen/answer_contact_puck_size_photo"
-      android:layout_marginBottom="10dp"
-      android:layout_gravity="center_horizontal"
+      android:layout_gravity="center_horizontal|bottom"
+      android:accessibilityLiveRegion="polite"
       android:clipChildren="false"
       android:clipToPadding="false"
-      android:contentDescription="@string/a11y_incoming_call_swipe_to_answer">
+      android:orientation="vertical"
+      android:visibility="visible">
+    <TextView
+        android:id="@+id/incoming_will_disconnect_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="116dp"
+        android:layout_gravity="center_horizontal"
+        android:alpha="0"
+        android:text="@string/call_incoming_will_disconnect"
+        android:textColor="@color/blue_grey_100"
+        android:textSize="16sp"
+        android:visibility="gone"
+        tools:alpha="1"/>
+    <!-- Space holder for animation. -->
+    <Space
+        android:id="@+id/incoming_bouncer_space_holder"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:visibility="visible"/>
+    <TextView
+        android:id="@+id/incoming_swipe_to_answer_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="18dp"
+        android:layout_gravity="center_horizontal"
+        android:focusable="false"
+        android:text="@string/call_incoming_swipe_to_answer"
+        android:textAlignment="center"
+        android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint"/>
+
+    <FrameLayout
+        android:id="@+id/incoming_call_puck_container"
+        android:layout_width="@dimen/answer_contact_puck_size_photo"
+        android:layout_height="@dimen/answer_contact_puck_size_photo"
+        android:layout_marginBottom="10dp"
+        android:layout_gravity="center_horizontal"
+        android:clipChildren="false"
+        android:clipToPadding="false"
+        android:contentDescription="@string/a11y_incoming_call_swipe_to_answer">
 
       <!-- Puck background and icon are hosted in the separated views to animate separately. -->
       <ImageView
-        android:id="@+id/incoming_call_puck_bg"
-        android:layout_width="@dimen/answer_contact_puck_size_no_photo"
-        android:layout_height="@dimen/answer_contact_puck_size_no_photo"
-        android:layout_gravity="center"
-        android:background="@drawable/circular_background"
-        android:contentDescription="@null"
-        android:duplicateParentState="true"
-        android:elevation="8dp"
-        android:focusable="false"
-        android:stateListAnimator="@animator/activated_button_elevation"/>
+          android:id="@+id/incoming_call_puck_bg"
+          android:layout_width="@dimen/answer_contact_puck_size_no_photo"
+          android:layout_height="@dimen/answer_contact_puck_size_no_photo"
+          android:layout_gravity="center"
+          android:background="@drawable/circular_background"
+          android:contentDescription="@null"
+          android:duplicateParentState="true"
+          android:elevation="8dp"
+          android:focusable="false"
+          android:stateListAnimator="@animator/activated_button_elevation"/>
 
       <ImageView
-        android:id="@+id/incoming_call_puck_icon"
-        android:layout_width="30dp"
-        android:layout_height="30dp"
-        android:layout_gravity="center"
-        android:contentDescription="@null"
-        android:duplicateParentState="true"
-        android:elevation="16dp"
-        android:focusable="false"
-        android:outlineProvider="none"
-        android:src="@drawable/quantum_ic_call_white_24"
-        android:tint="@color/incoming_answer_icon"
-        android:tintMode="src_atop"
-        tools:outlineProvider="background"/>
+          android:id="@+id/incoming_call_puck_icon"
+          android:layout_width="30dp"
+          android:layout_height="30dp"
+          android:layout_gravity="center"
+          android:contentDescription="@null"
+          android:duplicateParentState="true"
+          android:elevation="16dp"
+          android:focusable="false"
+          android:outlineProvider="none"
+          android:src="@drawable/quantum_ic_call_white_24"
+          android:tint="@color/incoming_answer_icon"
+          android:tintMode="src_atop"
+          tools:outlineProvider="background"/>
 
     </FrameLayout>
     <TextView
-      android:id="@+id/incoming_swipe_to_reject_text"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginBottom="20dp"
-      android:layout_gravity="center_horizontal"
-      android:alpha="0"
-      android:focusable="false"
-      android:text="@string/call_incoming_swipe_to_reject"
-      android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint"
-      tools:alpha="1"/>
+        android:id="@+id/incoming_swipe_to_reject_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="20dp"
+        android:layout_gravity="center_horizontal"
+        android:alpha="0"
+        android:focusable="false"
+        android:text="@string/call_incoming_swipe_to_reject"
+        android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint"
+        tools:alpha="1"/>
   </LinearLayout>
   <FrameLayout
-    android:id="@+id/hint_container"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:clipChildren="false"
-    android:clipToPadding="false"/>
+      android:id="@+id/hint_container"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:clipChildren="false"
+      android:clipToPadding="false"/>
 </FrameLayout>
diff --git a/java/com/android/incallui/answer/impl/answermethod/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/answer/impl/answermethod/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..3f8ad95
--- /dev/null
+++ b/java/com/android/incallui/answer/impl/answermethod/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_incoming_swipe_to_answer" msgid="2959042172304267183">"Prevucite nagore da biste odgovorili"</string>
+    <string name="call_incoming_swipe_to_reject" msgid="463322705441386885">"Prevucite nadole da biste odbili"</string>
+    <string name="a11y_incoming_call_swipe_to_answer" msgid="6992663569851713736">"Pomoću dva prsta prevucite nagore da biste odgovorili na poziv ili nadole da biste ga odbili"</string>
+    <string name="call_incoming_will_disconnect" msgid="7095934149229485541">"Ako odgovorite na ovaj poziv, prekinućete video poziv"</string>
+    <string name="a11y_call_incoming_decline_description" msgid="4441041052558364987">"Odbijte"</string>
+    <string name="call_incoming_decline" msgid="2982110738106661231">"Odbij"</string>
+    <string name="a11y_call_incoming_answer_description" msgid="1623200501347799736">"Odgovorite"</string>
+    <string name="call_incoming_answer" msgid="841798555883717852">"Odgovori"</string>
+</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
index b4fc19c..a8737c3 100644
--- a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
+++ b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
@@ -27,8 +27,8 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.ConfigProviderBindings;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression.Type;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression.Type;
 import java.util.Random;
 
 /**
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..c36e4c2
--- /dev/null
+++ b/java/com/android/incallui/answer/impl/hint/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="event_activated" msgid="4737012691463830969">"Omogućen je režim šape"</string>
+    <string name="event_deactivated" msgid="4504516573331084650">"Onemogućen je režim šape"</string>
+</resources>
diff --git a/java/com/android/incallui/answer/impl/res/layout/fragment_avatar.xml b/java/com/android/incallui/answer/impl/res/layout/fragment_avatar.xml
index d656ceb..f8e4894 100644
--- a/java/com/android/incallui/answer/impl/res/layout/fragment_avatar.xml
+++ b/java/com/android/incallui/answer/impl/res/layout/fragment_avatar.xml
@@ -21,6 +21,5 @@
   android:id="@id/contactgrid_avatar"
   android:layout_width="@dimen/answer_avatar_size"
   android:layout_height="@dimen/answer_avatar_size"
-  android:layout_marginTop="20dp"
-  android:layout_gravity="center_horizontal"
+  android:layout_gravity="center"
   android:elevation="@dimen/answer_data_elevation"/>
diff --git a/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml b/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml
index 2e42a6a..cd85e2f 100644
--- a/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml
+++ b/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml
@@ -15,15 +15,15 @@
   ~ limitations under the License
   -->
 <com.android.incallui.answer.impl.AffordanceHolderLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  xmlns:app="http://schemas.android.com/apk/res-auto"
-  xmlns:tools="http://schemas.android.com/tools"
-  android:id="@+id/incoming_container"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:clipChildren="false"
-  android:clipToPadding="false"
-  android:keepScreenOn="true">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/incoming_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="false"
+    android:clipToPadding="false"
+    android:keepScreenOn="true">
 
   <TextureView
       android:id="@+id/incoming_preview_texture_view"
@@ -38,124 +38,131 @@
       android:layout_height="match_parent"
       android:importantForAccessibility="no"
       android:visibility="gone"
-      app:scaleWidth="@bool/scale_width"
-      app:scaleHeight="@bool/scale_height"/>
+      app:scaleHeight="@bool/scale_height"
+      app:scaleWidth="@bool/scale_width"/>
 
   <View
-    android:id="@+id/incoming_preview_texture_view_overlay"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/videocall_overlay_background_color"
-    android:visibility="gone"/>
-
-  <FrameLayout
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:fitsSystemWindows="true">
-
-    <TextView
-      android:id="@+id/videocall_video_off"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center"
-      android:padding="64dp"
-      android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
-      android:drawablePadding="8dp"
-      android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
-      android:gravity="center"
-      android:text="@string/call_incoming_video_is_off"
-      android:textAppearance="@style/Dialer.Incall.TextAppearance"
-      android:visibility="gone"/>
-
-    <LinearLayout
-      android:id="@+id/incall_contact_grid"
+      android:id="@+id/incoming_preview_texture_view_overlay"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
-      android:layout_marginTop="24dp"
-      android:clipChildren="false"
-      android:clipToPadding="false"
-      android:gravity="top|center_horizontal"
-      android:orientation="vertical">
+      android:background="@color/videocall_overlay_background_color"
+      android:visibility="gone"/>
 
-      <include
-        android:id="@id/contactgrid_top_row"
-        layout="@layout/incall_contactgrid_top_row"
+  <FrameLayout
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:fitsSystemWindows="true">
+
+    <TextView
+        android:id="@+id/videocall_video_off"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginBottom="8dp"
-        android:layout_marginStart="24dp"
-        android:layout_marginEnd="24dp"/>
+        android:layout_gravity="center"
+        android:padding="64dp"
+        android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
+        android:drawablePadding="8dp"
+        android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
+        android:gravity="center"
+        android:text="@string/call_incoming_video_is_off"
+        android:textAppearance="@style/Dialer.Incall.TextAppearance"
+        android:visibility="gone"/>
+
+    <LinearLayout
+        android:id="@+id/incall_contact_grid"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="24dp"
+        android:clipChildren="false"
+        android:clipToPadding="false"
+        android:gravity="top|center_horizontal"
+        android:orientation="vertical">
+
+      <include
+          android:id="@id/contactgrid_top_row"
+          layout="@layout/incall_contactgrid_top_row"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:layout_marginBottom="8dp"
+          android:layout_marginStart="24dp"
+          android:layout_marginEnd="24dp"/>
 
       <!-- We have to keep deprecated singleLine to allow long text being truncated with ellipses.
            b/31396406 -->
       <com.android.incallui.autoresizetext.AutoResizeTextView
-        android:id="@id/contactgrid_contact_name"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginBottom="8dp"
-        android:layout_marginStart="24dp"
-        android:layout_marginEnd="24dp"
-        android:singleLine="true"
-        android:textAppearance="@style/Dialer.Incall.TextAppearance.Large"
-        android:textSize="@dimen/answer_contact_name_text_size"
-        app:autoResizeText_minTextSize="@dimen/answer_contact_name_min_size"
-        tools:ignore="Deprecated"
-        tools:text="Jake Peralta"/>
+          android:id="@id/contactgrid_contact_name"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:layout_marginBottom="8dp"
+          android:layout_marginStart="24dp"
+          android:layout_marginEnd="24dp"
+          android:singleLine="true"
+          android:textAppearance="@style/Dialer.Incall.TextAppearance.Large"
+          android:textSize="@dimen/answer_contact_name_text_size"
+          app:autoResizeText_minTextSize="@dimen/answer_contact_name_min_size"
+          tools:ignore="Deprecated"
+          tools:text="Jake Peralta"/>
 
       <include
-        android:id="@id/contactgrid_bottom_row"
-        layout="@layout/incall_contactgrid_bottom_row"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="24dp"
-        android:layout_marginEnd="24dp"/>
+          android:id="@id/contactgrid_bottom_row"
+          layout="@layout/incall_contactgrid_bottom_row"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:layout_marginStart="24dp"
+          android:layout_marginEnd="24dp"/>
 
       <TextView
-        android:id="@+id/incall_important_call_badge"
-        android:layout_width="wrap_content"
-        android:layout_height="48dp"
-        android:layout_marginTop="4dp"
-        android:layout_marginBottom="@dimen/answer_importance_margin_bottom"
-        android:elevation="@dimen/answer_data_elevation"
-        android:gravity="center"
-        android:singleLine="true"
-        android:text="@string/call_incoming_important"
-        android:textAllCaps="true"
-        android:textAppearance="@style/Dialer.Incall.TextAppearance"
-        android:textColor="@android:color/black"/>
+          android:id="@+id/incall_important_call_badge"
+          android:layout_width="wrap_content"
+          android:layout_height="48dp"
+          android:layout_marginTop="4dp"
+          android:layout_marginBottom="@dimen/answer_importance_margin_bottom"
+          android:elevation="@dimen/answer_data_elevation"
+          android:gravity="center"
+          android:singleLine="true"
+          android:text="@string/call_incoming_important"
+          android:textAllCaps="true"
+          android:textAppearance="@style/Dialer.Incall.TextAppearance"
+          android:textColor="@android:color/black"/>
 
       <FrameLayout
-        android:id="@+id/incall_location_holder"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
+          android:id="@+id/incall_location_holder"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"/>
 
       <FrameLayout
-        android:id="@+id/incall_data_container"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/answer_data_size"
-        android:clipChildren="false"
-        android:clipToPadding="false"/>
+          android:id="@+id/incall_data_container"
+          android:layout_width="match_parent"
+          android:layout_height="0dp"
+          android:layout_weight="1"
+          android:clipChildren="false"
+          android:clipToPadding="false"/>
+
+      <!-- Space holder for answer method. This is used to get better scaling to make room for
+      incall_data_container on different screen size. -->
+      <Space
+          android:layout_width="match_parent"
+          android:layout_height="220dp"/>
 
     </LinearLayout>
 
     <FrameLayout
-      android:id="@+id/answer_method_container"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:clipChildren="false"
-      android:clipToPadding="false"/>
+        android:id="@+id/answer_method_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:clipChildren="false"
+        android:clipToPadding="false"/>
 
   </FrameLayout>
 
   <com.android.incallui.answer.impl.affordance.SwipeButtonView
-    android:id="@+id/incoming_secondary_button"
-    android:layout_width="56dp"
-    android:layout_height="56dp"
-    android:layout_gravity="bottom|start"
-    android:scaleType="center"
-    android:src="@drawable/quantum_ic_message_white_24"
-    android:visibility="invisible"
-    tools:visibility="visible"/>
+      android:id="@+id/incoming_secondary_button"
+      android:layout_width="56dp"
+      android:layout_height="56dp"
+      android:layout_gravity="bottom|start"
+      android:scaleType="center"
+      android:src="@drawable/quantum_ic_message_white_24"
+      android:visibility="invisible"
+      tools:visibility="visible"/>
 
   <com.android.incallui.answer.impl.affordance.SwipeButtonView
       android:id="@+id/incoming_secondary_button2"
diff --git a/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..593778b
--- /dev/null
+++ b/java/com/android/incallui/answer/impl/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_incoming_swipe_to_decline_with_message" msgid="2426342919316424240">"Prevucite od ikone da biste odbili porukom"</string>
+    <string name="call_incoming_swipe_to_answer_video_as_audio" msgid="2656902519734774070">"Prevucite od ikone da biste odgovorili audio pozivom"</string>
+    <string name="call_incoming_default_label_answer_and_release_second" msgid="4543429977872844314">"Prevucite nagore da biste odgovorili i zadržali poziv koji je u toku"</string>
+    <string name="call_incoming_default_label_answer_and_release_third" msgid="1738895612225349741">"Prevucite nagore da biste odgovorili i završili poziv koji je na čekanju"</string>
+    <string name="call_incoming_swipe_to_answer_and_release" msgid="662432029870261061">"Prevucite od ikone da biste se javili i završili poziv koji je u toku"</string>
+    <string name="call_incoming_message_custom" msgid="5819492800418293238">"Napišite sami…"</string>
+    <string name="call_incoming_audio_handset" msgid="2299009191401671619">"Telefon"</string>
+    <string name="call_incoming_audio_speakerphone" msgid="5632622369522427991">"Spikerfon"</string>
+    <string name="call_incoming_respond_via_sms_custom_message" msgid="6808438125627371020">"Napišite sami…"</string>
+    <string name="call_incoming_custom_message_cancel" msgid="5231860339073505201">"Otkaži"</string>
+    <string name="call_incoming_custom_message_send" msgid="3826716354040318205">"Pošalji"</string>
+    <string name="a11y_incoming_call_reject_with_sms" msgid="6101839791429796754">"Odbijte ovaj poziv porukom"</string>
+    <string name="a11y_incoming_call_answer_video_as_audio" msgid="3890612269318682756">"Odgovorite audio pozivom"</string>
+    <string name="a11y_incoming_call_answer_and_release" msgid="4896746774725239464">"Javite se i završite poziv koji je u toku"</string>
+    <string name="a11y_description_incoming_call_reject_with_sms" msgid="4705064921696291310">"Odbijte porukom"</string>
+    <string name="a11y_description_incoming_call_answer_video_as_audio" msgid="1562530317428907884">"Odgovorite audio pozivom"</string>
+    <string name="a11y_description_incoming_call_answer_and_release" msgid="8511087499748888476">"Javite se i završite poziv koji je u toku"</string>
+    <string name="call_incoming_video_is_off" msgid="3216603035158629403">"Kamera je isključena"</string>
+    <string name="a11y_incoming_call_swipe_gesture_prompt" msgid="8682480557168484972">"Prevucite nagore pomoću dva prsta da biste odgovorili. Prevucite nadole pomoću dva prsta da biste odbili."</string>
+    <string name="call_incoming_important" msgid="6477906345540334049">"Važan poziv"</string>
+</resources>
diff --git a/java/com/android/incallui/answer/impl/res/values-h480dp/dimens.xml b/java/com/android/incallui/answer/impl/res/values-h480dp/dimens.xml
index 5dc3f2a..eab321f 100644
--- a/java/com/android/incallui/answer/impl/res/values-h480dp/dimens.xml
+++ b/java/com/android/incallui/answer/impl/res/values-h480dp/dimens.xml
@@ -15,7 +15,6 @@
   ~ limitations under the License
   -->
 <resources>
-  <dimen name="answer_data_size">150dp</dimen>
   <dimen name="answer_avatar_size">100dp</dimen>
   <dimen name="answer_importance_margin_bottom">8dp</dimen>
   <bool name="answer_important_call_allowed">true</bool>
diff --git a/java/com/android/incallui/answer/impl/res/values-h540dp/dimens.xml b/java/com/android/incallui/answer/impl/res/values-h540dp/dimens.xml
index 69716e0..d5e8299 100644
--- a/java/com/android/incallui/answer/impl/res/values-h540dp/dimens.xml
+++ b/java/com/android/incallui/answer/impl/res/values-h540dp/dimens.xml
@@ -15,7 +15,6 @@
   ~ limitations under the License
   -->
 <resources>
-  <dimen name="answer_data_size">258dp</dimen>
   <dimen name="answer_avatar_size">172dp</dimen>
   <dimen name="answer_importance_margin_bottom">8dp</dimen>
 </resources>
diff --git a/java/com/android/incallui/answer/impl/res/values/dimens.xml b/java/com/android/incallui/answer/impl/res/values/dimens.xml
index 50aec03..0bda9d3 100644
--- a/java/com/android/incallui/answer/impl/res/values/dimens.xml
+++ b/java/com/android/incallui/answer/impl/res/values/dimens.xml
@@ -17,7 +17,6 @@
 <resources>
   <dimen name="answer_contact_name_text_size">24sp</dimen>
   <dimen name="answer_contact_name_min_size">24sp</dimen>
-  <dimen name="answer_data_size">0dp</dimen>
   <dimen name="answer_avatar_size">0dp</dimen>
   <dimen name="answer_importance_margin_bottom">0dp</dimen>
   <bool name="answer_important_call_allowed">false</bool>
diff --git a/java/com/android/incallui/AudioModeProvider.java b/java/com/android/incallui/audiomode/AudioModeProvider.java
similarity index 97%
rename from java/com/android/incallui/AudioModeProvider.java
rename to java/com/android/incallui/audiomode/AudioModeProvider.java
index 698db0a..f62afa7 100644
--- a/java/com/android/incallui/AudioModeProvider.java
+++ b/java/com/android/incallui/audiomode/AudioModeProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.incallui;
+package com.android.incallui.audiomode;
 
 import android.telecom.CallAudioState;
 import java.util.ArrayList;
diff --git a/java/com/android/incallui/audioroute/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/audioroute/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..0df469f
--- /dev/null
+++ b/java/com/android/incallui/audioroute/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="audioroute_bluetooth" msgid="3426527851663711141">"Bluetooth"</string>
+    <string name="audioroute_speaker" msgid="3269659224838962927">"Zvučnik"</string>
+    <string name="audioroute_phone" msgid="4006113852056568310">"Telefon"</string>
+    <string name="audioroute_headset" msgid="3911496379650036544">"Žičane slušalice"</string>
+</resources>
diff --git a/java/com/android/incallui/bindings/PhoneNumberService.java b/java/com/android/incallui/bindings/PhoneNumberService.java
index bd2741a..c40891a 100644
--- a/java/com/android/incallui/bindings/PhoneNumberService.java
+++ b/java/com/android/incallui/bindings/PhoneNumberService.java
@@ -17,6 +17,7 @@
 package com.android.incallui.bindings;
 
 import android.graphics.Bitmap;
+import com.android.dialer.logging.ContactLookupResult;
 
 /** Provides phone number lookup services. */
 public interface PhoneNumberService {
@@ -72,6 +73,6 @@
 
     boolean isBusiness();
 
-    int getLookupSource();
+    ContactLookupResult.Type getLookupSource();
   }
 }
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index ab2feba..26fd926 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -33,8 +33,8 @@
 import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.shortcuts.ShortcutUsageReporter;
 import com.android.dialer.spam.Spam;
 import com.android.dialer.spam.SpamBindings;
@@ -198,7 +198,7 @@
   private void logSecondIncomingCall(@NonNull Context context, @NonNull DialerCall incomingCall) {
     DialerCall firstCall = getFirstCall();
     if (firstCall != null) {
-      int impression = 0;
+      DialerImpression.Type impression;
       if (firstCall.isVideoCall()) {
         if (incomingCall.isVideoCall()) {
           impression = DialerImpression.Type.VIDEO_CALL_WITH_INCOMING_VIDEO_CALL;
@@ -212,7 +212,7 @@
           impression = DialerImpression.Type.VOICE_CALL_WITH_INCOMING_VOICE_CALL;
         }
       }
-      Assert.checkArgument(impression != 0);
+      Assert.checkArgument(impression != null);
       Logger.get(context)
           .logCallImpression(
               impression, incomingCall.getUniqueCallId(), incomingCall.getTimeAddedMs());
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index f37ce27..71dfd4c 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -28,6 +28,7 @@
 import android.support.annotation.Nullable;
 import android.telecom.Call;
 import android.telecom.Call.Details;
+import android.telecom.CallAudioState;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
 import android.telecom.GatewayInfo;
@@ -42,15 +43,20 @@
 import com.android.contacts.common.compat.CallCompat;
 import com.android.contacts.common.compat.TelephonyManagerCompat;
 import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentParser;
-import com.android.dialer.callintent.nano.CallInitiationType;
-import com.android.dialer.callintent.nano.CallSpecificAppData;
+import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.ConfigProviderBindings;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
+import com.android.dialer.enrichedcall.Session;
 import com.android.dialer.lightbringer.LightbringerComponent;
-import com.android.dialer.logging.nano.ContactLookupResult;
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.latencyreport.LatencyReport;
 import com.android.incallui.util.TelecomCallUtil;
 import com.android.incallui.videotech.VideoTech;
@@ -125,6 +131,8 @@
   private String callProviderLabel;
   private String callbackNumber;
   private int mCameraDirection = CameraDirection.CAMERA_DIRECTION_UNKNOWN;
+  private EnrichedCallCapabilities mEnrichedCallCapabilities;
+  private Session mEnrichedCallSession;
 
   public static String getNumberFromHandle(Uri handle) {
     return handle == null ? "" : handle.getSchemeSpecificPart();
@@ -793,13 +801,19 @@
 
     mLogState.callSpecificAppData = CallIntentParser.getCallSpecificAppData(getIntentExtras());
     if (mLogState.callSpecificAppData == null) {
-      mLogState.callSpecificAppData = new CallSpecificAppData();
-      mLogState.callSpecificAppData.callInitiationType =
-          CallInitiationType.Type.EXTERNAL_INITIATION;
+
+      mLogState.callSpecificAppData =
+          CallSpecificAppData.newBuilder()
+              .setCallInitiationType(CallInitiationType.Type.EXTERNAL_INITIATION)
+              .build();
     }
     if (getState() == State.INCOMING) {
-      mLogState.callSpecificAppData.callInitiationType =
-          CallInitiationType.Type.INCOMING_INITIATION;
+      mLogState.callSpecificAppData =
+          mLogState
+              .callSpecificAppData
+              .toBuilder()
+              .setCallInitiationType(CallInitiationType.Type.INCOMING_INITIATION)
+              .build();
     }
   }
 
@@ -900,6 +914,25 @@
     return mLatencyReport;
   }
 
+  @Nullable
+  public EnrichedCallCapabilities getEnrichedCallCapabilities() {
+    return mEnrichedCallCapabilities;
+  }
+
+  public void setEnrichedCallCapabilities(
+      @Nullable EnrichedCallCapabilities mEnrichedCallCapabilities) {
+    this.mEnrichedCallCapabilities = mEnrichedCallCapabilities;
+  }
+
+  @Nullable
+  public Session getEnrichedCallSession() {
+    return mEnrichedCallSession;
+  }
+
+  public void setEnrichedCallSession(@Nullable Session mEnrichedCallSession) {
+    this.mEnrichedCallSession = mEnrichedCallSession;
+  }
+
   public void unregisterCallback() {
     mTelecomCall.unregisterCallback(mTelecomCallCallback);
   }
@@ -1063,6 +1096,34 @@
     }
 
     update();
+
+    Logger.get(mContext)
+        .logCallImpression(
+            DialerImpression.Type.VIDEO_CALL_REQUEST_RECEIVED, getUniqueCallId(), getTimeAddedMs());
+  }
+
+  @Override
+  public void onUpgradedToVideo(boolean switchToSpeaker) {
+    LogUtil.enterBlock("DialerCall.onUpgradedToVideo");
+
+    if (!switchToSpeaker) {
+      return;
+    }
+
+    CallAudioState audioState = AudioModeProvider.getInstance().getAudioState();
+
+    if (0 != (CallAudioState.ROUTE_BLUETOOTH & audioState.getSupportedRouteMask())) {
+      LogUtil.e(
+          "DialerCall.onUpgradedToVideo",
+          "toggling speakerphone not allowed when bluetooth supported.");
+      return;
+    }
+
+    if (audioState.getRoute() == CallAudioState.ROUTE_SPEAKER) {
+      return;
+    }
+
+    TelecomAdapter.getInstance().setAudioRoute(CallAudioState.ROUTE_SPEAKER);
   }
 
   /**
@@ -1174,24 +1235,25 @@
 
     public DisconnectCause disconnectCause;
     public boolean isIncoming = false;
-    public int contactLookupResult = ContactLookupResult.Type.UNKNOWN_LOOKUP_RESULT_TYPE;
+    public ContactLookupResult.Type contactLookupResult =
+        ContactLookupResult.Type.UNKNOWN_LOOKUP_RESULT_TYPE;
     public CallSpecificAppData callSpecificAppData;
     // If this was a conference call, the total number of calls involved in the conference.
     public int conferencedCalls = 0;
     public long duration = 0;
     public boolean isLogged = false;
 
-    private static String lookupToString(int lookupType) {
+    private static String lookupToString(ContactLookupResult.Type lookupType) {
       switch (lookupType) {
-        case ContactLookupResult.Type.LOCAL_CONTACT:
+        case LOCAL_CONTACT:
           return "Local";
-        case ContactLookupResult.Type.LOCAL_CACHE:
+        case LOCAL_CACHE:
           return "Cache";
-        case ContactLookupResult.Type.REMOTE:
+        case REMOTE:
           return "Remote";
-        case ContactLookupResult.Type.EMERGENCY:
+        case EMERGENCY:
           return "Emergency";
-        case ContactLookupResult.Type.VOICEMAIL:
+        case VOICEMAIL:
           return "Voicemail";
         default:
           return "Not found";
@@ -1202,35 +1264,35 @@
       if (callSpecificAppData == null) {
         return "null";
       }
-      switch (callSpecificAppData.callInitiationType) {
-        case CallInitiationType.Type.INCOMING_INITIATION:
+      switch (callSpecificAppData.getCallInitiationType()) {
+        case INCOMING_INITIATION:
           return "Incoming";
-        case CallInitiationType.Type.DIALPAD:
+        case DIALPAD:
           return "Dialpad";
-        case CallInitiationType.Type.SPEED_DIAL:
+        case SPEED_DIAL:
           return "Speed Dial";
-        case CallInitiationType.Type.REMOTE_DIRECTORY:
+        case REMOTE_DIRECTORY:
           return "Remote Directory";
-        case CallInitiationType.Type.SMART_DIAL:
+        case SMART_DIAL:
           return "Smart Dial";
-        case CallInitiationType.Type.REGULAR_SEARCH:
+        case REGULAR_SEARCH:
           return "Regular Search";
-        case CallInitiationType.Type.CALL_LOG:
+        case CALL_LOG:
           return "DialerCall Log";
-        case CallInitiationType.Type.CALL_LOG_FILTER:
+        case CALL_LOG_FILTER:
           return "DialerCall Log Filter";
-        case CallInitiationType.Type.VOICEMAIL_LOG:
+        case VOICEMAIL_LOG:
           return "Voicemail Log";
-        case CallInitiationType.Type.CALL_DETAILS:
+        case CALL_DETAILS:
           return "DialerCall Details";
-        case CallInitiationType.Type.QUICK_CONTACTS:
+        case QUICK_CONTACTS:
           return "Quick Contacts";
-        case CallInitiationType.Type.EXTERNAL_INITIATION:
+        case EXTERNAL_INITIATION:
           return "External";
-        case CallInitiationType.Type.LAUNCHER_SHORTCUT:
+        case LAUNCHER_SHORTCUT:
           return "Launcher Shortcut";
         default:
-          return "Unknown: " + callSpecificAppData.callInitiationType;
+          return "Unknown: " + callSpecificAppData.getCallInitiationType();
       }
     }
 
@@ -1264,10 +1326,11 @@
 
       String phoneNumber = call.getNumber();
       phoneNumber = phoneNumber != null ? phoneNumber : "";
+      phoneNumber = phoneNumber.replaceAll("[^0-9]", "");
 
       // Insert order here determines the priority of that video tech option
-      this.videoTechs = new ArrayList<>();
-      videoTechs.add(new ImsVideoTech(call, call.mTelecomCall));
+      videoTechs = new ArrayList<>();
+      videoTechs.add(new ImsVideoTech(Logger.get(call.mContext), call, call.mTelecomCall));
 
       VideoTech rcsVideoTech =
           EnrichedCallComponent.get(call.mContext)
diff --git a/java/com/android/incallui/calllocation/impl/LocationFragment.java b/java/com/android/incallui/calllocation/impl/LocationFragment.java
index 3c5d2f9..c0592b6 100644
--- a/java/com/android/incallui/calllocation/impl/LocationFragment.java
+++ b/java/com/android/incallui/calllocation/impl/LocationFragment.java
@@ -30,8 +30,8 @@
 import android.widget.TextView;
 import android.widget.ViewAnimator;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.incallui.baseui.BaseFragment;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
diff --git a/java/com/android/incallui/calllocation/impl/LocationPresenter.java b/java/com/android/incallui/calllocation/impl/LocationPresenter.java
index 155d9fd..1199308 100644
--- a/java/com/android/incallui/calllocation/impl/LocationPresenter.java
+++ b/java/com/android/incallui/calllocation/impl/LocationPresenter.java
@@ -21,8 +21,8 @@
 import android.location.Location;
 import android.os.AsyncTask;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.incallui.baseui.Presenter;
 import com.android.incallui.baseui.Ui;
 import com.google.android.gms.location.LocationListener;
diff --git a/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..36430c4
--- /dev/null
+++ b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_content_description_end_call" msgid="8232796487777787200">"Završi poziv"</string>
+    <string name="incall_content_description_muted" msgid="2130133443150389474">"Zvuk je isključen"</string>
+    <string name="incall_content_description_unmuted" msgid="4023577547526525202">"Zvuk je uključen"</string>
+    <string name="incall_content_description_swap_calls" msgid="5233257839262161417">"Zameni pozive"</string>
+    <string name="incall_content_description_merge_calls" msgid="5198778837993669729">"Objedini pozive"</string>
+    <string name="incall_content_description_earpiece" msgid="2786221842272370555">"Slušalica telefona"</string>
+    <string name="incall_content_description_speaker" msgid="7837829930201265549">"Zvučnik"</string>
+    <string name="incall_content_description_bluetooth" msgid="6988919010980910001">"Bluetooth"</string>
+    <string name="incall_content_description_headset" msgid="3170439802944346719">"Žičane slušalice"</string>
+    <string name="incall_content_description_hold" msgid="3335508251734906019">"Stavi poziv na čekanje"</string>
+    <string name="incall_content_description_unhold" msgid="3862584118869933593">"Nastavi poziv"</string>
+    <string name="incall_content_description_video_on" msgid="899266487647420613">"Uključi video"</string>
+    <string name="incall_content_description_video_off" msgid="762985912616707076">"Isključi video"</string>
+    <string name="incall_content_description_swap_video" msgid="297943299827908998">"Zameni video"</string>
+</resources>
diff --git a/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..f1a938e
--- /dev/null
+++ b/java/com/android/incallui/contactgrid/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_calling_via_template" msgid="3416867359475780924">"Pozivamo preko <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="incall_connecting" msgid="1708280493198276616">"Pozivamo…"</string>
+    <string name="incall_transferring" msgid="7909128243635579407">"Prenosimo…"</string>
+    <string name="incall_video_call_requesting" msgid="5251915562785911238">"Upućujemo video poziv…"</string>
+    <string name="incall_wifi_video_call_requesting" msgid="8783968191180862607">"Upućuje se Wi-Fi video poziv…"</string>
+    <string name="incall_video_call_request_failed" msgid="5014067473831870379">"Povezivanje nije uspelo"</string>
+    <string name="incall_video_call_request_rejected" msgid="5357441169519503234">"Poziv je odbijen"</string>
+    <string name="incall_video_call_request_timed_out" msgid="6804535684856203120">"Vremensko ograničenje poziva je isteklo"</string>
+    <string name="incall_hanging_up" msgid="2166116351937190949">"Prekidamo vezu"</string>
+    <string name="incall_call_ended" msgid="6294704948774348480">"Poziv je završen"</string>
+    <string name="incall_remotely_held" msgid="8561379039177396615">"Na čekanju"</string>
+    <string name="contact_grid_incoming_video_call" msgid="4935122585117803710">"Video poziv od"</string>
+    <string name="contact_grid_incoming_wifi_video_call" msgid="5938822096623593533">"Wi-Fi video poziv od"</string>
+    <string name="contact_grid_incoming_voice_call" msgid="7165853925114955346">"Poziv od"</string>
+    <string name="contact_grid_incoming_work_call" msgid="837605505036615004">"Poslovni poziv od"</string>
+    <string name="contact_grid_incoming_via_template" msgid="7747391077955623969">"Dolazni poziv preko <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="contact_grid_incoming_suspected_spam" msgid="285365265897630425">"Potencijalno nepoželjan pozivalac"</string>
+    <string name="contact_grid_callback_number" msgid="1284649030313415807">"Broj za povratni poziv: <xliff:g id="DARK_NUMBER">%1$s</xliff:g>"</string>
+</resources>
diff --git a/java/com/android/incallui/hold/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/hold/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..cc132ca
--- /dev/null
+++ b/java/com/android/incallui/hold/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_on_hold" msgid="5618253281695138626">"Na čekanju"</string>
+</resources>
diff --git a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
index 1b168a6..0dcfdb5 100644
--- a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
+++ b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
@@ -71,6 +71,8 @@
     mapping.put(
         InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE,
         MappingInfo.builder(4).setSlotOrder(0).build());
+    mapping.put(
+        InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO, MappingInfo.builder(4).setSlotOrder(10).build());
     mapping.put(InCallButtonIds.BUTTON_SWAP, MappingInfo.builder(5).setSlotOrder(0).build());
 
     return new ButtonChooser(new MappedButtonConfig(mapping));
@@ -82,7 +84,9 @@
         InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY, MappingInfo.builder(4).setSlotOrder(0).build());
     mapping.put(
         InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE,
-        MappingInfo.builder(4).setSlotOrder(10).build());
+        MappingInfo.builder(4).setSlotOrder(5).build());
+    mapping.put(
+        InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO, MappingInfo.builder(4).setSlotOrder(10).build());
     mapping.put(InCallButtonIds.BUTTON_HOLD, MappingInfo.builder(5).setSlotOrder(0).build());
 
     return new ButtonChooser(new MappedButtonConfig(mapping));
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index b02237d..ac3c57c 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -272,9 +272,9 @@
       paginator.setupWithViewPager(pager);
       if (!stateRestored) {
         handler.postDelayed(pagerRunnable, 4_000);
-      } else {
-        paginator.setVisibility(View.GONE);
       }
+    } else {
+      paginator.setVisibility(View.GONE);
     }
   }
 
diff --git a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
index e4bc942..4443141 100644
--- a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
+++ b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
@@ -12,6 +12,8 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:clipChildren="false"
+    android:clipToPadding="false"
     android:fitsSystemWindows="true">
 
     <LinearLayout
@@ -82,6 +84,8 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
+      android:clipChildren="false"
+      android:clipToPadding="false"
       tools:background="@android:color/white"
       tools:visibility="gone"/>
     <ImageButton
diff --git a/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..bff7ed0
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_label_videocall" msgid="2208755440134676113">"Video poziv"</string>
+    <string name="incall_label_hold" msgid="4223472584896867896">"Na čekanje"</string>
+    <string name="incall_label_add_call" msgid="5641663436373994915">"Dodaj poziv"</string>
+    <string name="incall_label_mute" msgid="2180667027331706737">"Isključi zvuk"</string>
+    <string name="incall_label_dialpad" msgid="8609779533654156550">"Tastatura"</string>
+    <string name="incall_label_speaker" msgid="8100402799687856933">"Zvučnik"</string>
+    <string name="incall_talkback_speaker_on" msgid="5819463769258124228">", uključen"</string>
+    <string name="incall_talkback_speaker_off" msgid="7486836772563090186">", isključen"</string>
+    <string name="incall_label_merge" msgid="720076442985913175">"Objedini"</string>
+    <string name="incall_label_manage" msgid="2175471192903568159">"Upravljaj"</string>
+    <string name="a11y_description_incall_label_manage_content" msgid="8298638893449287602">"Upravljajte pozivaocima"</string>
+    <string name="incall_label_swap" msgid="10458642864243507">"Zameni"</string>
+    <string name="incall_label_audio" msgid="8616473242030174797">"Zvuk"</string>
+    <string name="incall_note_sent" msgid="4524130323127388367">"Beleška je poslata"</string>
+</resources>
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_block_grey600_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_block_grey600_24dp.png
new file mode 100644
index 0000000..1e9294c
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_block_grey600_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_call_end_white_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_call_end_white_24dp.png
new file mode 100644
index 0000000..757d339
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_call_end_white_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_call_split_white_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_call_split_white_24dp.png
new file mode 100644
index 0000000..4e3dbf5
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_call_split_white_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_close_grey600_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_close_grey600_24dp.png
new file mode 100644
index 0000000..9ab350e
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_close_grey600_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_location_on_white_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_location_on_white_24dp.png
new file mode 100644
index 0000000..7c281c3
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_location_on_white_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_01.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_01.png
new file mode 100644
index 0000000..e4ff6db
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_01.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_02.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_02.png
new file mode 100644
index 0000000..bc2b3d2
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_02.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_03.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_03.png
new file mode 100644
index 0000000..fa936cb
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_03.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_04.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_04.png
new file mode 100644
index 0000000..ef51379
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_04.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_05.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_05.png
new file mode 100644
index 0000000..3712d16
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_05.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_06.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_06.png
new file mode 100644
index 0000000..c6a4216
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_06.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_07.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_07.png
new file mode 100644
index 0000000..e4ff6db
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_07.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_08.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_08.png
new file mode 100644
index 0000000..e4ff6db
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_08.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_09.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_09.png
new file mode 100644
index 0000000..e4ff6db
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_09.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_person_add_grey600_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_person_add_grey600_24dp.png
new file mode 100644
index 0000000..185d033
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_person_add_grey600_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_phone_paused_white_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_phone_paused_white_24dp.png
new file mode 100644
index 0000000..a2177f5
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_phone_paused_white_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_question_mark.png b/java/com/android/incallui/res/drawable-hdpi/ic_question_mark.png
new file mode 100644
index 0000000..bd9489c
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_question_mark.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_schedule_white_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_schedule_white_24dp.png
new file mode 100644
index 0000000..f3581d1
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/ic_schedule_white_24dp.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/img_business.png b/java/com/android/incallui/res/drawable-hdpi/img_business.png
new file mode 100644
index 0000000..f706342
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/img_business.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/img_conference.png b/java/com/android/incallui/res/drawable-hdpi/img_conference.png
new file mode 100644
index 0000000..3d9f683
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/img_conference.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/img_no_image.png b/java/com/android/incallui/res/drawable-hdpi/img_no_image.png
new file mode 100644
index 0000000..fd0ab32
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/img_no_image.png
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/img_phone.png b/java/com/android/incallui/res/drawable-hdpi/img_phone.png
new file mode 100644
index 0000000..748312e
--- /dev/null
+++ b/java/com/android/incallui/res/drawable-hdpi/img_phone.png
Binary files differ
diff --git a/java/com/android/incallui/res/layout/incall_dialpad_fragment.xml b/java/com/android/incallui/res/layout/incall_dialpad_fragment.xml
index 0621d48..075a46b 100644
--- a/java/com/android/incallui/res/layout/incall_dialpad_fragment.xml
+++ b/java/com/android/incallui/res/layout/incall_dialpad_fragment.xml
@@ -19,6 +19,8 @@
   class="com.android.incallui.DialpadFragment$DialpadSlidingLinearLayout"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
+  android:clipToPadding="false"
+  android:clipChildren="false"
   android:orientation="vertical">
   <include layout="@layout/dialpad_view"/>
 </view>
diff --git a/java/com/android/incallui/res/values-af/strings.xml b/java/com/android/incallui/res/values-af/strings.xml
index a46963f..5dacaaa 100644
--- a/java/com/android/incallui/res/values-af/strings.xml
+++ b/java/com/android/incallui/res/values-af/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Inkomende Wi-Fi-werkoproep"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Inkomende verdagte strooipos-oproep"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Inkomende videoversoek"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nuwe stemboodskap"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nuwe stemboodskap (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Bel <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Stemboodskapnommer onbekend"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Geen diens nie"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Gekose netwerk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nie beskikbaar nie"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Antwoord"</string>
diff --git a/java/com/android/incallui/res/values-am/strings.xml b/java/com/android/incallui/res/values-am/strings.xml
index 4bbbe3a..249447f 100644
--- a/java/com/android/incallui/res/values-am/strings.xml
+++ b/java/com/android/incallui/res/values-am/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"ገቢ የWi-Fi የሥራ ጥሪ"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"መጪ የተጠረጠረ የአይፈለጌ መልዕክት ጥሪ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"ገቢ የቪዲዮ ጥያቄ"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"አዲስ የድምፅ መልዕክት"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"አዲስ የድምፅ መልዕክት<xliff:g id="COUNT">%d</xliff:g>"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"ደውል <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"የማይታወቅ የድምፅ መልዕክት ቁጥር"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"ምንም አገልግሎት የለም"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"የተመረጠ አውታረመረብ(<xliff:g id="OPERATOR_NAME">%s</xliff:g>) የለም"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"መልስ"</string>
diff --git a/java/com/android/incallui/res/values-ar/strings.xml b/java/com/android/incallui/res/values-ar/strings.xml
index d6bdaf5..7c3585c 100644
--- a/java/com/android/incallui/res/values-ar/strings.xml
+++ b/java/com/android/incallui/res/values-ar/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"‏مكالمة عمل واردة عبر اتصال Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"مكالمة واردة يشتبه في كونها غير مرغوب فيها"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"طلب فيديو وارد"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"بريد صوتي جديد"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"بريد صوتي جديد (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"طلب <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"رقم البريد الصوتي غير معروف"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"لا خدمة"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"الشبكة المحددة (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) غير متاحة"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"رد"</string>
diff --git a/java/com/android/incallui/res/values-az/strings.xml b/java/com/android/incallui/res/values-az/strings.xml
index 0f03d1d..dc43014 100644
--- a/java/com/android/incallui/res/values-az/strings.xml
+++ b/java/com/android/incallui/res/values-az/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Daxil olan Wi-Fi iş çağrısı"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Şübhəli spam zəngi"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Gələn video çağrı"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Yeni səsli poçt"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Yeni səsli poçt (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Yığın <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Səsli poçt nömrəsi naməlumdur"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Xidmət yoxdur"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Seçilmiş (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) şəbəkə əlçatmazdır"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Cavab"</string>
diff --git a/java/com/android/incallui/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..3dddf65
--- /dev/null
+++ b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2013 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="default" msgid="4266606423746318128">"Telefon"</string>
+    <string name="inCallLabel" msgid="8627766543550519912">"InCallUI"</string>
+    <string name="confCall" msgid="36560628097626181">"Konferencijski poziv"</string>
+    <string name="call_lost" msgid="2082971531689406145">"Poziv je prekinut"</string>
+    <string name="wait_prompt_str" msgid="3509685348904329594">"Želite li da pošaljete sledeće tonove?\n"</string>
+    <string name="pause_prompt_str" msgid="5712344742516488080">"Tonovi slanja\n"</string>
+    <string name="send_button" msgid="6976782353456252579">"Pošalji"</string>
+    <string name="pause_prompt_yes" msgid="4642047011233552973">"Da"</string>
+    <string name="pause_prompt_no" msgid="4691320111774935838">"Ne"</string>
+    <string name="wild_prompt_str" msgid="1399377741491574104">"Zamenite džoker znak sa"</string>
+    <string name="caller_manage_header" msgid="7358710345135355578">"Konferencijski poziv <xliff:g id="CONF_CALL_TIME">%s</xliff:g>"</string>
+    <string name="voicemail_settings_number_label" msgid="8935904934161608885">"Broj govorne pošte"</string>
+    <string name="notification_dialing" msgid="9072177265772083826">"Poziva se"</string>
+    <string name="notification_missedCallTicker" msgid="238492086972857643">"Propušten poziv od: <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+    <string name="notification_ongoing_call" msgid="8712641937577776125">"Aktuelni poziv"</string>
+    <string name="notification_ongoing_work_call" msgid="3189581218078981547">"Tekući poziv za Work"</string>
+    <string name="notification_ongoing_call_wifi" msgid="297183051021070949">"Tekući Wi-Fi poziv"</string>
+    <string name="notification_ongoing_work_call_wifi" msgid="6769311641293583197">"Tekući poziv za Work preko Wi-Fi-ja"</string>
+    <string name="notification_on_hold" msgid="7141827443379205682">"Na čekanju"</string>
+    <string name="notification_incoming_call" msgid="7520580807513849283">"Dolazni poziv"</string>
+    <string name="notification_incoming_call_with_photo" msgid="4360505044807517422">"Dolazni poziv sa slikom"</string>
+    <string name="notification_incoming_call_with_message" msgid="5608687985694956601">"Dolazni poziv sa porukom"</string>
+    <string name="notification_incoming_call_with_location" msgid="4519498445081598767">"Dolazni poziv sa lokacijom"</string>
+    <string name="notification_incoming_call_with_photo_message" msgid="316806247057497525">"Dolazni poziv sa slikom i porukom"</string>
+    <string name="notification_incoming_call_with_photo_location" msgid="3523930283842222367">"Dolazni poziv sa slikom i lokacijom"</string>
+    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"Dolazni poziv sa porukom i lokacijom"</string>
+    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"Dolazni poziv sa slikom, porukom i lokacijom"</string>
+    <string name="notification_incoming_call_attachments" msgid="3708414495376236948">"Dolazni poziv sa prilozima"</string>
+    <string name="important_notification_incoming_call" msgid="2867013954509930989">"Važan dolazni poziv"</string>
+    <string name="important_notification_incoming_call_with_photo" msgid="4908333121583658560">"Važan dolazni poziv sa slikom"</string>
+    <string name="important_notification_incoming_call_with_message" msgid="1614505248246685319">"Važan dolazni poziv sa porukom"</string>
+    <string name="important_notification_incoming_call_with_location" msgid="7387284065036564352">"Važan dolazni poziv sa lokacijom"</string>
+    <string name="important_notification_incoming_call_with_photo_message" msgid="4577220919701434817">"Važan dolazni poziv sa slikom i porukom"</string>
+    <string name="important_notification_incoming_call_with_photo_location" msgid="7172208615619394502">"Važan dolazni poziv sa slikom i lokacijom"</string>
+    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"Važan dolazni poziv sa porukom i lokacijom"</string>
+    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"Važan dolazni poziv sa slikom, porukom i lokacijom"</string>
+    <string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"Važan dolazni poziv sa prilozima"</string>
+    <string name="notification_incoming_work_call" msgid="5291275092734261918">"Dolazni poziv za Work"</string>
+    <string name="notification_incoming_call_wifi" msgid="1039173395425774684">"Dolazni Wi-Fi poziv"</string>
+    <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Dolazni poziv za Work preko Wi-Fi-ja"</string>
+    <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Sumnja na nepoželjan dolazni poziv"</string>
+    <string name="notification_requesting_video_call" msgid="1807679328811515758">"Zahtev za dolazni video poziv"</string>
+    <string name="notification_network_selection_title" msgid="8639159088474275747">"Nema usluge"</string>
+    <string name="notification_network_selection_text" msgid="7190860774239009625">"Izabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nije dostupna"</string>
+    <string name="notification_action_answer" msgid="8748275902211192568">"Odgovori"</string>
+    <string name="notification_action_end_call" msgid="7467258454170007765">"Prekini vezu"</string>
+    <string name="notification_action_answer_video" msgid="8488108892919917287">"Video"</string>
+    <string name="notification_action_answer_voice" msgid="6237890905749760509">"Glasovni"</string>
+    <string name="notification_action_accept" msgid="1272761514200507143">"Prihvati"</string>
+    <string name="notification_action_dismiss" msgid="3128241581632616226">"Odbij"</string>
+    <string name="notification_external_call" msgid="2504334597315343920">"Poziv je u toku na drugom uređaju"</string>
+    <string name="notification_external_video_call" msgid="7709394856028436683">"Video poziv je u toku na drugom uređaju"</string>
+    <string name="notification_take_call" msgid="5631659438864492229">"Preuzmi poziv"</string>
+    <string name="notification_take_video_call" msgid="4473387503712341390">"Preuzmi video poziv"</string>
+    <string name="incall_error_power_off" msgid="3244691852792529453">"Da biste uputili poziv, prvo isključite režim rada u avionu."</string>
+    <string name="incall_error_emergency_only" msgid="8313690034696753566">"Nije registrovano na mreži."</string>
+    <string name="incall_error_out_of_service" msgid="539611768312332950">"Mobilna mreža nije dostupna."</string>
+    <string name="incall_error_no_phone_number_supplied" msgid="293343960362630925">"Da biste uputili poziv, unesite važeći broj."</string>
+    <string name="incall_error_call_failed" msgid="5560521345862514733">"Poziv nije uspeo."</string>
+    <string name="incall_status_dialed_mmi" msgid="3341365334358686873">"Pokretanje MMI sekvence"</string>
+    <string name="incall_error_supp_service_unknown" msgid="3062751096566282959">"Usluga nije podržana."</string>
+    <string name="incall_error_supp_service_switch" msgid="759346040980722884">"Zamena poziva nije uspela."</string>
+    <string name="incall_error_supp_service_separate" msgid="5250304200901095519">"Razdvajanje poziva nije uspelo."</string>
+    <string name="incall_error_supp_service_transfer" msgid="556522021433482116">"Prebacivanje nije uspelo."</string>
+    <string name="incall_error_supp_service_conference" msgid="9211560861266632111">"Konferencijski poziv nije uspeo."</string>
+    <string name="incall_error_supp_service_reject" msgid="2724981515194352120">"Odbijanje poziva nije uspelo."</string>
+    <string name="incall_error_supp_service_hangup" msgid="4659922482839313098">"Uspostavljanje poziva nije uspelo."</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="5964415982020440543">"Hitan poziv"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="6927454354381787268">"Uključivanje radija…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="8760220613410560290">"Nema mreže. Ponovni pokušaj…"</string>
+    <string name="dial_emergency_error" msgid="6953255422990366011">"Poziv nije uspeo. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nije broj za hitne slučajeve."</string>
+    <string name="dial_emergency_empty_error" msgid="6668006522178181198">"Poziv nije uspeo. Pozovite broj za hitne slučajeve."</string>
+    <string name="dialerKeyboardHintText" msgid="6275105254377292585">"Koristite tastaturu za pozivanje"</string>
+    <string name="player_started" msgid="9177182657338033086">"Plejer je pokrenut"</string>
+    <string name="player_stopped" msgid="5040965200339765956">"Plejer je zaustavljen"</string>
+    <string name="camera_not_ready" msgid="3629017450703828964">"Kamera nije spremna"</string>
+    <string name="camera_ready" msgid="4312684554501216898">"Kamera je spremna"</string>
+    <string name="unknown_call_session_event" msgid="797786212356595358">"Nepoznat događaj sesije poziva"</string>
+    <string name="other_settings" msgid="2537377721890761197">"Druga podešavanja poziva"</string>
+    <string name="goPrivate" msgid="5269514638004595378">"idi na privatno"</string>
+    <string name="selectContact" msgid="1703433172800564849">"izaberite kontakt"</string>
+    <string name="preference_category_ringtone" msgid="8566115267004890115">"Melodija zvona i vibracija"</string>
+    <string name="manageConferenceLabel" msgid="3589379023518128318">"Upravljaj konferencijskim pozivom"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="461645337084699104">"Broj za hitne slučajeve"</string>
+    <string name="child_number" msgid="3398257437107259682">"na <xliff:g id="CHILD_NUMBER">%s</xliff:g>"</string>
+    <string name="person_contact_context_title" msgid="9186980175313563725">"Nedavne poruke"</string>
+    <string name="business_contact_context_title" msgid="4796616668776688978">"Informacije o preduzeću"</string>
+    <string name="distance_imperial_away" msgid="66546464027126106">"Udaljenost je <xliff:g id="DISTANCE">%.1f</xliff:g> mi"</string>
+    <string name="distance_metric_away" msgid="4535553190850854545">"Udaljenost je <xliff:g id="DISTANCE">%.1f</xliff:g> km"</string>
+    <string name="display_address" msgid="2909385132133621873">"<xliff:g id="STREET_ADDRESS">%1$s</xliff:g>, <xliff:g id="LOCALITY">%2$s</xliff:g>"</string>
+    <string name="open_time_span" msgid="3333746415188434992">"<xliff:g id="OPEN_TIME">%1$s</xliff:g>–<xliff:g id="CLOSE_TIME">%2$s</xliff:g>"</string>
+    <string name="opening_hours" msgid="2908934145495754020">"<xliff:g id="EARLIER_TIMES">%1$s</xliff:g>, <xliff:g id="LATER_TIME">%2$s</xliff:g>"</string>
+    <string name="opens_tomorrow_at" msgid="2896787795283597856">"Otvara se sutra u <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="opens_today_at" msgid="4701005560156621184">"Otvara se danas u <xliff:g id="OPEN_TIME">%s</xliff:g>"</string>
+    <string name="closes_today_at" msgid="2668928851103904896">"Zatvara se u <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="closed_today_at" msgid="4203311397205549440">"Zatvorilo se danas u <xliff:g id="CLOSE_TIME">%s</xliff:g>"</string>
+    <string name="open_now" msgid="5897306702060039512">"Trenutno otvoreno"</string>
+    <string name="closed_now" msgid="3962291301467974921">"Trenutno zatvoreno"</string>
+    <string name="non_spam_notification_title" msgid="3290544768406546372">"Poznat vam je broj <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="spam_notification_title" msgid="2439276063775520534">"Da li je <xliff:g id="NUMBER">%1$s</xliff:g> nepoželjan?"</string>
+    <string name="spam_notification_block_report_toast_text" msgid="6844067640633690292">"Blokirali ste <xliff:g id="NUMBER">%1$s</xliff:g>, a poziv ste prijavili kao nepoželjan."</string>
+    <string name="spam_notification_not_spam_toast_text" msgid="8321993839027073785">"Prijavili ste da poziv sa <xliff:g id="NUMBER">%1$s</xliff:g> nije nepoželjan."</string>
+    <string name="spam_notification_non_spam_call_collapsed_text" msgid="6482092382445364016">"Dodirnite da biste dodali kontakte ili blokirali nepoželjan broj."</string>
+    <string name="spam_notification_non_spam_call_expanded_text" msgid="3598209932872915536">"Prvi put ste primili poziv sa ovog broja. Ako je nepoželjan, možete da ga blokirate i prijavite."</string>
+    <string name="spam_notification_spam_call_collapsed_text" msgid="3865687645128037638">"Dodirnite da biste prijavili da poziv NIJE NEPOŽELJAN ili blokirajte broj."</string>
+    <string name="spam_notification_spam_call_expanded_text" msgid="1062029525759401658">"Sumnjamo da je ovaj poziv nepoželjan. Ako nije, dodirnite NIJE NEPOŽELJNO da biste prijavili grešku."</string>
+    <string name="spam_notification_report_spam_action_text" msgid="4829510418690824538">"Blokiraj i prijavi"</string>
+    <string name="spam_notification_add_contact_action_text" msgid="307315138401483232">"Dodaj kontakt"</string>
+    <string name="spam_notification_not_spam_action_text" msgid="2576048366011852090">"Nije nepoželjan"</string>
+    <string name="spam_notification_block_spam_action_text" msgid="80045727259264724">"Blokiraj broj"</string>
+    <string name="spam_notification_dialog_add_contact_action_text" msgid="5619696845681999506">"Dodaj u kontakte"</string>
+    <string name="spam_notification_dialog_block_report_spam_action_text" msgid="1821506089128547428">"Blokiraj i prijavi nepoželjan poziv"</string>
+    <string name="spam_notification_dialog_was_not_spam_action_text" msgid="4953789750391355251">"Nije nepoželjan"</string>
+    <string name="callFailed_simError" msgid="4587775795711340072">"Nema SIM kartice ili postoji greška na njoj"</string>
+    <string name="conference_caller_disconnect_content_description" msgid="2821988368803183644">"Završite poziv"</string>
+    <string name="conference_call_name" msgid="8189987124611337174">"Konferencijski poziv"</string>
+    <string name="generic_conference_call_name" msgid="1546941472424243894">"U pozivu"</string>
+    <string name="video_call_wifi_to_lte_handover_toast" msgid="2495974172657183700">"Poziv se nastavlja pomoću mobilnih podataka…"</string>
+    <string name="video_call_lte_to_wifi_failed_title" msgid="2793524281399509056">"Prebacivanje na Wi-Fi mrežu nije uspelo"</string>
+    <string name="video_call_lte_to_wifi_failed_message" msgid="5950700221126447109">"Video poziv će ostati na mobilnoj mreži. Mogu da važe standardne naknade za prenos podataka."</string>
+    <string name="video_call_lte_to_wifi_failed_do_not_show" msgid="7609115874511223150">"Ne prikazuj ovo ponovo"</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-be/strings.xml b/java/com/android/incallui/res/values-be/strings.xml
index 6509bde..46b5d39 100644
--- a/java/com/android/incallui/res/values-be/strings.xml
+++ b/java/com/android/incallui/res/values-be/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Уваходны выклік па працы праз Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Уваходны выклiк ад абанента, якога падазраваюць у спаме"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Запыт уваходнага відэавыкліку"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Новая галасавая пошта"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Новыя паведамленнi галасавой пошты (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Набраць <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Невядомы нумар галасавой пошты"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Не абслугоўваецца"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Выбраная сетка (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) недаступная"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Адказаць"</string>
diff --git a/java/com/android/incallui/res/values-bg/strings.xml b/java/com/android/incallui/res/values-bg/strings.xml
index 1f37ac6..84bffa0 100644
--- a/java/com/android/incallui/res/values-bg/strings.xml
+++ b/java/com/android/incallui/res/values-bg/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Входящо служебно обаждане през Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Входящо обаждане – възможен спам"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Входяща заявка за видеовръзка"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Нова гласова поща"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Нова гласова поща на (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Набиране на <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Неизвестен номер за гласова поща"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Няма покритие"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Избраната мрежа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) не е налична"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Отговор"</string>
diff --git a/java/com/android/incallui/res/values-bn/strings.xml b/java/com/android/incallui/res/values-bn/strings.xml
index 6382367..fc93830 100644
--- a/java/com/android/incallui/res/values-bn/strings.xml
+++ b/java/com/android/incallui/res/values-bn/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"আগত ওয়াই-ফাই কাজের কল"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"আগত সন্দেহভাজন স্প্যাম কল"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"আগত ভিডিও অনুরোধ"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"নতুন ভয়েসমেল"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"নতুন ভয়েসমেল (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> এ ডায়াল করুন"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"ভয়েসমেল নম্বর অজানা"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"কোনো পরিষেবা নেই"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"নির্বাচিত নেটওয়ার্ক (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) অনুপলব্ধ"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"উত্তর"</string>
diff --git a/java/com/android/incallui/res/values-bs/strings.xml b/java/com/android/incallui/res/values-bs/strings.xml
index 4f4bfc7..c695080 100644
--- a/java/com/android/incallui/res/values-bs/strings.xml
+++ b/java/com/android/incallui/res/values-bs/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Dolazni Wi-Fi poslovni poziv"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Mogući neželjeni dolazni poziv"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Zahtjev za dolazni videopoziv"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nova govorna pošta"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nova govorna pošta (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Pozovi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nepoznat broj govorne pošte"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nema mreže"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Odabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) je nedostupna"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Odgovori"</string>
@@ -140,6 +136,6 @@
     <string name="generic_conference_call_name" msgid="1546941472424243894">"Poziv u toku"</string>
     <string name="video_call_wifi_to_lte_handover_toast" msgid="2495974172657183700">"Poziv se nastavlja pomoću mobilnih podataka…"</string>
     <string name="video_call_lte_to_wifi_failed_title" msgid="2793524281399509056">"Prebacivanje na Wi-Fi mrežu nije moguće"</string>
-    <string name="video_call_lte_to_wifi_failed_message" msgid="5950700221126447109">"Videopoziv će ostati na mobilnoj mreži. Moguće je naplaćivanje standardnih naknada za prijenos podataka."</string>
+    <string name="video_call_lte_to_wifi_failed_message" msgid="5950700221126447109">"Videopoziv će ostati na mobilnoj mreži. Mogu nastati standardni troškovi prijenosa podataka."</string>
     <string name="video_call_lte_to_wifi_failed_do_not_show" msgid="7609115874511223150">"Ne prikazuj ponovo"</string>
 </resources>
diff --git a/java/com/android/incallui/res/values-ca/strings.xml b/java/com/android/incallui/res/values-ca/strings.xml
index 102e2fe..b961c62 100644
--- a/java/com/android/incallui/res/values-ca/strings.xml
+++ b/java/com/android/incallui/res/values-ca/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Trucada de feina per Wi-Fi entrant"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Presumpta trucada brossa entrant"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Sol·licitud de vídeo entrant"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Missatge de veu nou"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Bústia de veu nou (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Marca <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Número de la bústia de veu desconegut"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Sense servei"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"La xarxa seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) no està disponible"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Respon"</string>
diff --git a/java/com/android/incallui/res/values-cs/strings.xml b/java/com/android/incallui/res/values-cs/strings.xml
index 2ec55e2..9d69cfa 100644
--- a/java/com/android/incallui/res/values-cs/strings.xml
+++ b/java/com/android/incallui/res/values-cs/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Příchozí pracovní hovor (Wi-Fi)"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"U příchozího hovoru máme podezření, že se jedná o spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Příchozí žádost o videohovor"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nová hlasová zpráva"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nová hlasová zpráva (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Volat hlasovou schránku <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Číslo hlasové schránky je neznámé."</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Žádný signál"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Vybraná síť (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) není k dispozici"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Přijmout"</string>
diff --git a/java/com/android/incallui/res/values-da/strings.xml b/java/com/android/incallui/res/values-da/strings.xml
index 0745035..19de783 100644
--- a/java/com/android/incallui/res/values-da/strings.xml
+++ b/java/com/android/incallui/res/values-da/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Indgående Wi-Fi-opkald i forbindelse med arbejde"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Indgående formodet spamopkald"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Indgående videoanmodning"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Ny telefonsvarerbesked"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nye telefonsvarerbeskeder (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Ring til <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Telefonsvarernummeret er ukendt"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ingen dækning"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Det valgte netværk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ikke tilgængeligt"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Svar"</string>
diff --git a/java/com/android/incallui/res/values-de/strings.xml b/java/com/android/incallui/res/values-de/strings.xml
index 178dbbe..a5f9602 100644
--- a/java/com/android/incallui/res/values-de/strings.xml
+++ b/java/com/android/incallui/res/values-de/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Eingehender geschäftlicher WLAN-Anruf"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Verdacht auf eingehenden Spam-Anruf"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Eingehende Videoanfrage"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Neue Nachricht"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Neue Nachricht (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> wählen"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Mailboxnummer unbekannt"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"kein Dienst"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Ausgewähltes Netzwerk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nicht verfügbar"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Annehmen"</string>
diff --git a/java/com/android/incallui/res/values-el/strings.xml b/java/com/android/incallui/res/values-el/strings.xml
index cd2834f..8ff6d2f 100644
--- a/java/com/android/incallui/res/values-el/strings.xml
+++ b/java/com/android/incallui/res/values-el/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Εισερχόμενη κλήση εργασίας μέσω Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Πιθανώς ανεπιθύμητη εισερχόμενη κλήση"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Αίτημα εισερχόμενου βίντεο"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Νέο μήνυμα στον αυτόματο τηλεφωνητή"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Νέο μήνυμα στον αυτόματο τηλεφωνητή (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Καλέστε <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Ο αριθμός αυτόματου τηλεφωνητή είναι άγνωστος"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Δίκτυο μη διαθέσιμο"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Επιλεγμένο δίκτυο (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) μη διαθέσιμο"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Απάντηση"</string>
diff --git a/java/com/android/incallui/res/values-en-rAU/strings.xml b/java/com/android/incallui/res/values-en-rAU/strings.xml
index 67eab79..5e0d207 100644
--- a/java/com/android/incallui/res/values-en-rAU/strings.xml
+++ b/java/com/android/incallui/res/values-en-rAU/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Incoming Wi-Fi work call"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Incoming suspected spam call"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Incoming video request"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"New voicemail"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"New voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Voicemail number unknown"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"No service"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Answer"</string>
diff --git a/java/com/android/incallui/res/values-en-rGB/strings.xml b/java/com/android/incallui/res/values-en-rGB/strings.xml
index 67eab79..5e0d207 100644
--- a/java/com/android/incallui/res/values-en-rGB/strings.xml
+++ b/java/com/android/incallui/res/values-en-rGB/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Incoming Wi-Fi work call"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Incoming suspected spam call"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Incoming video request"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"New voicemail"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"New voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Voicemail number unknown"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"No service"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Answer"</string>
diff --git a/java/com/android/incallui/res/values-en-rIN/strings.xml b/java/com/android/incallui/res/values-en-rIN/strings.xml
index 67eab79..5e0d207 100644
--- a/java/com/android/incallui/res/values-en-rIN/strings.xml
+++ b/java/com/android/incallui/res/values-en-rIN/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Incoming Wi-Fi work call"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Incoming suspected spam call"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Incoming video request"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"New voicemail"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"New voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Voicemail number unknown"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"No service"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Answer"</string>
diff --git a/java/com/android/incallui/res/values-es-rUS/strings.xml b/java/com/android/incallui/res/values-es-rUS/strings.xml
index a25b0ee..d016711 100644
--- a/java/com/android/incallui/res/values-es-rUS/strings.xml
+++ b/java/com/android/incallui/res/values-es-rUS/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Llamada de trabajo con Wi-Fi entrante"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Posible llamada entrante de spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Solicitud de videollamada entrante"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Correo de voz nuevo"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Correo de voz nuevo (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Marcar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Número de correo de voz desconocido"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Sin servicio"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"La red seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) no está disponible"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Responder"</string>
diff --git a/java/com/android/incallui/res/values-es/strings.xml b/java/com/android/incallui/res/values-es/strings.xml
index 8a42515..e6e5185 100644
--- a/java/com/android/incallui/res/values-es/strings.xml
+++ b/java/com/android/incallui/res/values-es/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Llamada Wi-Fi de trabajo entrante"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Llamada entrante sospechosa de spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Solicitud de videollamada entrante"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nuevo mensaje de voz"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Buzón de voz nuevo (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Marcar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Número del buzón de voz desconocido"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Sin servicio"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"La red seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) no está disponible."</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Responder"</string>
diff --git a/java/com/android/incallui/res/values-et/strings.xml b/java/com/android/incallui/res/values-et/strings.xml
index d34980e..9eaa65f 100644
--- a/java/com/android/incallui/res/values-et/strings.xml
+++ b/java/com/android/incallui/res/values-et/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Sissetulev töökõne WiFi kaudu"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Arvatav sissetulev rämpskõne"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Sissetulev videotaotlus"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Uus kõnepost"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Uus kõnepost (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Valige <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Kõneposti number teadmata"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Teenus puudub"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Valitud võrk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) pole saadaval"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Vastamine"</string>
diff --git a/java/com/android/incallui/res/values-eu/strings.xml b/java/com/android/incallui/res/values-eu/strings.xml
index 0d3ce76..4db9e10 100644
--- a/java/com/android/incallui/res/values-eu/strings.xml
+++ b/java/com/android/incallui/res/values-eu/strings.xml
@@ -37,49 +37,28 @@
     <string name="notification_ongoing_work_call_wifi" msgid="6769311641293583197">"Wi-Fi bidezko laneko dei bat abian da"</string>
     <string name="notification_on_hold" msgid="7141827443379205682">"Zain"</string>
     <string name="notification_incoming_call" msgid="7520580807513849283">"Sarrerako deia"</string>
-    <!-- no translation found for notification_incoming_call_with_photo (4360505044807517422) -->
-    <skip />
-    <!-- no translation found for notification_incoming_call_with_message (5608687985694956601) -->
-    <skip />
-    <!-- no translation found for notification_incoming_call_with_location (4519498445081598767) -->
-    <skip />
-    <!-- no translation found for notification_incoming_call_with_photo_message (316806247057497525) -->
-    <skip />
-    <!-- no translation found for notification_incoming_call_with_photo_location (3523930283842222367) -->
-    <skip />
-    <!-- no translation found for notification_incoming_call_with_message_location (319374298517482028) -->
-    <skip />
-    <!-- no translation found for notification_incoming_call_with_photo_message_location (596658237891406809) -->
-    <skip />
-    <!-- no translation found for notification_incoming_call_attachments (3708414495376236948) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call (2867013954509930989) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_with_photo (4908333121583658560) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_with_message (1614505248246685319) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_with_location (7387284065036564352) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_with_photo_message (4577220919701434817) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_with_photo_location (7172208615619394502) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_with_message_location (7244079127080064796) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_with_photo_message_location (513692941317253479) -->
-    <skip />
-    <!-- no translation found for important_notification_incoming_call_attachments (4594375776340303751) -->
-    <skip />
+    <string name="notification_incoming_call_with_photo" msgid="4360505044807517422">"Jasotako deia, argazkia duena"</string>
+    <string name="notification_incoming_call_with_message" msgid="5608687985694956601">"Jasoka deia, mezua duena"</string>
+    <string name="notification_incoming_call_with_location" msgid="4519498445081598767">"Jasotako deia, kokapena duena"</string>
+    <string name="notification_incoming_call_with_photo_message" msgid="316806247057497525">"Jasotako deia, argazkia eta mezua dituena"</string>
+    <string name="notification_incoming_call_with_photo_location" msgid="3523930283842222367">"Jasotako deia, argazkia eta kokapena dituena"</string>
+    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"Jasotako deia, mezua eta kokapena dituena"</string>
+    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"Jasotako deia, argazkia, mezua eta kokap. dituena"</string>
+    <string name="notification_incoming_call_attachments" msgid="3708414495376236948">"Jasotako deia, eranskinak dituena"</string>
+    <string name="important_notification_incoming_call" msgid="2867013954509930989">"Jasotako dei garrantzitsua"</string>
+    <string name="important_notification_incoming_call_with_photo" msgid="4908333121583658560">"Jasotako dei garrantzitsua, argazkia duena"</string>
+    <string name="important_notification_incoming_call_with_message" msgid="1614505248246685319">"Jasotako dei garrantzitsua, mezua duena"</string>
+    <string name="important_notification_incoming_call_with_location" msgid="7387284065036564352">"Jasotako dei garrantzitsua, kokapena duena"</string>
+    <string name="important_notification_incoming_call_with_photo_message" msgid="4577220919701434817">"Jasotako dei garrantz., argazkia eta mezua dituena"</string>
+    <string name="important_notification_incoming_call_with_photo_location" msgid="7172208615619394502">"Jasotako dei garrantz., argazkia eta kok. dituena"</string>
+    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"Jasotako dei garrantz., mezua eta kokapena dituena"</string>
+    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"Jasotako dei garrant., arg., mez. eta kok. dituena"</string>
+    <string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"Jasotako dei garrantzitsua, eranskinak dituena"</string>
     <string name="notification_incoming_work_call" msgid="5291275092734261918">"Laneko dei bat jaso da"</string>
     <string name="notification_incoming_call_wifi" msgid="1039173395425774684">"Sarrerako Wi-Fi deia"</string>
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Wi-Fi bidezko laneko dei bat jaso da"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Ustezko spam-deia jaso duzu"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Sarrerako bideo-eskaera"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Ahots-mezu berria"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Ahots-mezu berriak (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Markatu <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Erantzungailuaren zenbakia ezezaguna da"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ez dago zerbitzurik"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Hautatutako sarea (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ez dago erabilgarri"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Erantzun"</string>
diff --git a/java/com/android/incallui/res/values-fa/strings.xml b/java/com/android/incallui/res/values-fa/strings.xml
index bce99b7..f816bd0 100644
--- a/java/com/android/incallui/res/values-fa/strings.xml
+++ b/java/com/android/incallui/res/values-fa/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"‏تماس کاری Wi-Fi ورودی"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"تماس هرزنامه احتمالی ورودی"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"درخواست تماس ویدئویی ورودی"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"پست صوتی جدید"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"پست صوتی جدید (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"شماره گیری <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"شماره پست صوتی ناشناس"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"بدون سرویس"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"شبکه انتخابی (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) قابل دسترس نیست"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"پاسخ"</string>
diff --git a/java/com/android/incallui/res/values-fi/strings.xml b/java/com/android/incallui/res/values-fi/strings.xml
index 57b4449..995e7a3 100644
--- a/java/com/android/incallui/res/values-fi/strings.xml
+++ b/java/com/android/incallui/res/values-fi/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Saapuva Wi-Fi-työpuhelu"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Tämä puhelu saattaa olla häirikköpuhelu."</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Saapuva videopyyntö"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Uusia viestejä vastaajassa"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Uusia viestejä vastaajassa (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Soita numeroon <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Puhelinvastaajan numero tuntematon"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Katvealueella"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Valittu verkko (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ei käytettävissä."</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Vastaa"</string>
diff --git a/java/com/android/incallui/res/values-fr-rCA/strings.xml b/java/com/android/incallui/res/values-fr-rCA/strings.xml
index b0b01fc..6f4d8da 100644
--- a/java/com/android/incallui/res/values-fr-rCA/strings.xml
+++ b/java/com/android/incallui/res/values-fr-rCA/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Appel Wi-Fi entrant - travail"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"L\'appel entrant est suspect"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Demande de vidéo reçue"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nouveau message vocal"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nouveaux messages vocaux (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Composer <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Numéro de messagerie vocale inconnu"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Aucun service"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Réseau sélectionné (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non disponible"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Répondre"</string>
diff --git a/java/com/android/incallui/res/values-fr/strings.xml b/java/com/android/incallui/res/values-fr/strings.xml
index 0a9d4a0..c77fc19 100644
--- a/java/com/android/incallui/res/values-fr/strings.xml
+++ b/java/com/android/incallui/res/values-fr/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Appel Wi-Fi professionnel entrant"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Appel entrant indésirable suspecté"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Demande de vidéo reçue"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nouveau message vocal"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nouveaux messages vocaux (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Composer le <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Numéro de messagerie vocale inconnu"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Aucun service"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Réseau sélectionné (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non disponible"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Répondre"</string>
diff --git a/java/com/android/incallui/res/values-gl/strings.xml b/java/com/android/incallui/res/values-gl/strings.xml
index 675a77f..53278e5 100644
--- a/java/com/android/incallui/res/values-gl/strings.xml
+++ b/java/com/android/incallui/res/values-gl/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Chamada wifi de traballo entrante"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Chamada entrante sospeitosa de spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Solicitude de vídeo entrante"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Novo correo de voz"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Novo correo de voz (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Marcar o <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Número de correo de voz descoñecido"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Sen servizo"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Rede seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non dispoñible"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Responder"</string>
diff --git a/java/com/android/incallui/res/values-gu/strings.xml b/java/com/android/incallui/res/values-gu/strings.xml
index 9088624..8b1ebe8 100644
--- a/java/com/android/incallui/res/values-gu/strings.xml
+++ b/java/com/android/incallui/res/values-gu/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"ઇનકમિંગ Wi-Fi કાર્ય કૉલ"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"ઇનકમિંગ શંકાસ્પદ સ્પામ કૉલ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"આવનાર વિડિઓ વિનંતી"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"નવો વૉઇસમેઇલ"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"નવો વૉઇસમેઇલ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ડાયલ કરો"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"વૉઇસમેઇલ નંબર અજાણ"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"કોઈ સેવા નથી"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"પસંદ કરેલ નેટવર્ક (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) અનુપલબ્ધ"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"જવાબ"</string>
diff --git a/java/com/android/incallui/res/values-hi/strings.xml b/java/com/android/incallui/res/values-hi/strings.xml
index 8d5e1bb..09563df 100644
--- a/java/com/android/incallui/res/values-hi/strings.xml
+++ b/java/com/android/incallui/res/values-hi/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"कार्यस्थल की वाई-फ़ाई आवक कॉल"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"संदिग्ध आवक स्पैम कॉल"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"इनकमिंग वीडियो अनुरोध"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"नया वॉयस मेल"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"नई वॉयस मेल (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> डायल करें"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"वॉयस मेल नंबर अज्ञात"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"कोई सेवा नहीं"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"चयनित नेटवर्क (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) अनुपलब्ध"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"उत्तर"</string>
diff --git a/java/com/android/incallui/res/values-hr/strings.xml b/java/com/android/incallui/res/values-hr/strings.xml
index ff43e68..6b07bed 100644
--- a/java/com/android/incallui/res/values-hr/strings.xml
+++ b/java/com/android/incallui/res/values-hr/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Dolazni poslovni Wi-Fi poziv"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Mogući neželjeni dolazni poziv"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Dolazni zahtjev za videopoziv"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nova govorna pošta"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nova govorna pošta (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Biraj <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nepoznat je broj govorne pošte"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nema usluge"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Odabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) je onemogućena"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Odgovori"</string>
diff --git a/java/com/android/incallui/res/values-hu/strings.xml b/java/com/android/incallui/res/values-hu/strings.xml
index 3fad071..08d374b 100644
--- a/java/com/android/incallui/res/values-hu/strings.xml
+++ b/java/com/android/incallui/res/values-hu/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Bejövő munkahelyi hívás Wi-Fin keresztül"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Bejövő gyanús spamhívás"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Bejövő videokérés"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Új hangposta"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Új hangpostaüzenet (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> tárcsázása"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"A hangposta száma ismeretlen"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nincs szolgáltatás"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"A kiválasztott hálózat (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nem érhető el"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Fogadás"</string>
diff --git a/java/com/android/incallui/res/values-hy/strings.xml b/java/com/android/incallui/res/values-hy/strings.xml
index aabeae2..759581b 100644
--- a/java/com/android/incallui/res/values-hy/strings.xml
+++ b/java/com/android/incallui/res/values-hy/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Մուտքային աշխատանքային Wi-Fi զանգ"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Մուտքային զանգը հավանաբար լցոն է"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Մուտքային տեսազանգի հայցում"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Նոր ձայնային հաղորդագրություն"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Նոր ձայնային նամակ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Զանգել <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Ձայնային փոստի համարն անհայտ է"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ծառայություններ չկան"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Ընտրված ցանցը (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) անհասանելի է"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Պատասխանել"</string>
diff --git a/java/com/android/incallui/res/values-in/strings.xml b/java/com/android/incallui/res/values-in/strings.xml
index e2b0405..279e72d 100644
--- a/java/com/android/incallui/res/values-in/strings.xml
+++ b/java/com/android/incallui/res/values-in/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Panggilan telepon Wi-Fi kerja yang masuk"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Panggilan masuk yang diduga spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Permintaan video masuk"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Kotak pesan baru"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Kotak pesan baru (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Telepon <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nomor kotak pesan tidak dikenal"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Tidak ada layanan"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Jaringan yang dipilih (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) tidak tersedia"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Jawab"</string>
diff --git a/java/com/android/incallui/res/values-is/strings.xml b/java/com/android/incallui/res/values-is/strings.xml
index ede4a4c..795e952 100644
--- a/java/com/android/incallui/res/values-is/strings.xml
+++ b/java/com/android/incallui/res/values-is/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Vinnusímtal berst um Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Símtal sem berst er hugsanlega úr ruslnúmeri"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Myndbeiðni berst"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Ný skilaboð í talhólfinu"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Ný skilaboð í talhólfinu (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Hringja í <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Talhólfsnúmer ekki þekkt"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ekkert símasamband"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Valið símkerfi (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ekki tiltækt"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Svara"</string>
diff --git a/java/com/android/incallui/res/values-it/strings.xml b/java/com/android/incallui/res/values-it/strings.xml
index 8e872b8..836b934 100644
--- a/java/com/android/incallui/res/values-it/strings.xml
+++ b/java/com/android/incallui/res/values-it/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Chiamata di lavoro in arrivo tramite Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Chiamata di presunto spam in arrivo"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Richiesta video in arrivo"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nuovo msg vocale"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nuovo msg vocale (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Componi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Numero segreteria sconosciuto"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nessun servizio"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Rete selezionata (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non disponibile"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Rispondi"</string>
diff --git a/java/com/android/incallui/res/values-iw/strings.xml b/java/com/android/incallui/res/values-iw/strings.xml
index 6310aa1..195cb0f 100644
--- a/java/com/android/incallui/res/values-iw/strings.xml
+++ b/java/com/android/incallui/res/values-iw/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"‏שיחת עבודה נכנסת ברשת WiFi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"השיחה הנכנסת חשודה כספאם"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"בקשת וידאו נכנסת"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"דואר קולי חדש"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"דואר קולי חדש (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"‏חייג ‎<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>‎"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"המספר של הדואר הקולי אינו ידוע"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"אין שירות"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"הרשת שנבחרה (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) לא זמינה"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"ענה"</string>
diff --git a/java/com/android/incallui/res/values-ja/strings.xml b/java/com/android/incallui/res/values-ja/strings.xml
index b621250..0e186fa 100644
--- a/java/com/android/incallui/res/values-ja/strings.xml
+++ b/java/com/android/incallui/res/values-ja/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"仕事の Wi-Fi 通話が着信中"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"迷惑電話の疑いがある通話を着信しています"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"ビデオハングアウトリクエスト着信"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"新しいボイスメール"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"新しいボイスメール（<xliff:g id="COUNT">%d</xliff:g>）"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>にダイヤル"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"ボイスメールの番号が不明です"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"通信サービスなし"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"選択したネットワーク（<xliff:g id="OPERATOR_NAME">%s</xliff:g>）が利用できません"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"電話に出る"</string>
diff --git a/java/com/android/incallui/res/values-ka/strings.xml b/java/com/android/incallui/res/values-ka/strings.xml
index 1bb9ae7..6c46bd0 100644
--- a/java/com/android/incallui/res/values-ka/strings.xml
+++ b/java/com/android/incallui/res/values-ka/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"შემომავალი Wi-Fi ზარი (სამსახური)"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"შემომავალი ზარი - სავარაუდოდ სპამი"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"შემომავალი ვიდეოს მოთხოვნა"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"ახალი ხმოვანი ფოსტა"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"ახალი ხმოვანი ფოსტა (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>-ზე დარეკვა"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"ხმოვანი ფოსტის ნომერი უცნობია"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"სერვისი არ არის"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"ხელმისაწვდომია არჩეული ქსელი (<xliff:g id="OPERATOR_NAME">%s</xliff:g>)"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"პასუხი"</string>
diff --git a/java/com/android/incallui/res/values-kk/strings.xml b/java/com/android/incallui/res/values-kk/strings.xml
index a08bf54..310ba4d 100644
--- a/java/com/android/incallui/res/values-kk/strings.xml
+++ b/java/com/android/incallui/res/values-kk/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Кіріс Wi-Fi жұмыс қоңырауы"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Кіріс қоңырауы спам болуы мүмкін"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Кіріс бейне сұрау"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Жаңа дауыс хабары"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"(<xliff:g id="COUNT">%d</xliff:g>) дауыс хабары"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> нөмірін теру"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Дауыс хабарының нөмірі белгісіз"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Қызмет көрсетілмейді"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Таңдалған (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) желісі қол жетімсіз"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Жауап"</string>
diff --git a/java/com/android/incallui/res/values-km/strings.xml b/java/com/android/incallui/res/values-km/strings.xml
index 6b2c65e..4fbafef 100644
--- a/java/com/android/incallui/res/values-km/strings.xml
+++ b/java/com/android/incallui/res/values-km/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"កំពុងហៅចូលពីកន្លែងការងារតាម Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"ការ​ហៅ​បន្លំ​​ចូល​​​ដែល​សង្ស័យ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"សំណើ​ការ​ហៅ​ជា​វីដេអូ​ចូល"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"សារ​ជា​សំឡេង​ថ្មី"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"សារ​ជា​សំឡេង​ថ្មី (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"ចុច <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"មិន​ស្គាល់​ចំនួន​សារ​ជា​សំឡេង"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"គ្មាន​សេវា"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"បណ្ដាញ​ដែល​បាន​ជ្រើស ( <xliff:g id="OPERATOR_NAME">%s</xliff:g> ) មិន​អាច​ប្រើ​បាន​ទេ"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"ឆ្លើយតប"</string>
diff --git a/java/com/android/incallui/res/values-kn/strings.xml b/java/com/android/incallui/res/values-kn/strings.xml
index 7559d1b..5d47c7e 100644
--- a/java/com/android/incallui/res/values-kn/strings.xml
+++ b/java/com/android/incallui/res/values-kn/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"ಒಳಬರುವ ವೈ-ಫೈ ಕೆಲಸದ ಕರೆ"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"ಒಳಬರುವ ಶಂಕಿತ ಸ್ಪ್ಯಾಮ್ ಕರೆ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"ಒಳಬರುವ ವೀಡಿಯೊ ವಿನಂತಿ"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"ಹೊಸ ಧ್ವನಿಮೇಲ್‌"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"ಹೊಸ ಧ್ವನಿಮೇಲ್‌‌ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ಗೆ ಡಯಲ್‌‌ ಮಾಡು"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"ಅಪರಿಚಿತ ಧ್ವನಿಮೇಲ್‌ ಸಂಖ್ಯೆ"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"ಯಾವುದೇ ಸೇವೆಯಿಲ್ಲ"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"ಆಯ್ಕೆಮಾಡಿದ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"ಉತ್ತರ"</string>
diff --git a/java/com/android/incallui/res/values-ko/strings.xml b/java/com/android/incallui/res/values-ko/strings.xml
index 3778b58..44c5338 100644
--- a/java/com/android/incallui/res/values-ko/strings.xml
+++ b/java/com/android/incallui/res/values-ko/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"수신 Wi-Fi 업무 전화"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"의심스러운 스팸 발신자로부터 온 전화"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"수신 동영상 요청"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"새 음성사서함"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"새 음성사서함(<xliff:g id="COUNT">%d</xliff:g>개)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>(으)로 전화걸기"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"알 수 없는 음성사서함 번호"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"서비스 불가"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"선택한 네트워크(<xliff:g id="OPERATOR_NAME">%s</xliff:g>)를 사용할 수 없음"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"통화"</string>
diff --git a/java/com/android/incallui/res/values-ky/strings.xml b/java/com/android/incallui/res/values-ky/strings.xml
index e010022..0f8ee3c 100644
--- a/java/com/android/incallui/res/values-ky/strings.xml
+++ b/java/com/android/incallui/res/values-ky/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Жумуш боюнча келип жаткан Wi-Fi чалуу"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Келип жаткан чалуу спам окшойт"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Келип жаткан видео сурамы"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Жаңы үн почтасы"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Жаңы үн почтасы (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> номерин терүү"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Үн почтасынын номери белгисиз"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Байланыш жок"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Тандалган тармак (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) жеткиликсиз"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Жооп берүү"</string>
diff --git a/java/com/android/incallui/res/values-lo/strings.xml b/java/com/android/incallui/res/values-lo/strings.xml
index fcd7f5f..56335d4 100644
--- a/java/com/android/incallui/res/values-lo/strings.xml
+++ b/java/com/android/incallui/res/values-lo/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"ສາຍໂທເຂົ້າ Wi-Fi ຈາກບ່ອນເຮັດວຽກ"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"ມີການໂທທີ່ຄາດວ່າເປັນສະແປມໂທເຂົ້າມາ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"​ຄຳ​ຮ້ອງ​ຂໍ​ວິ​ດີ​ໂອ​ເຂົ້າ​ມາ"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"ຂໍ້ຄວາມສຽງໃໝ່"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"ຂໍ້ຄວາມສຽງໃໝ່ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"ໂທຫາ <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"ບໍ່ຮູ້ຈັກເບີຂໍ້ຄວາມສຽງ"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"ບໍ່ມີບໍລິການ"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"ບໍ່ສາມາດໃຊ້ເຄືອຂ່າຍທີ່ເລືອກ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ໄດ້"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"ຄໍາ​ຕອບ"</string>
diff --git a/java/com/android/incallui/res/values-lt/strings.xml b/java/com/android/incallui/res/values-lt/strings.xml
index 7d79fce..4d4a0c0 100644
--- a/java/com/android/incallui/res/values-lt/strings.xml
+++ b/java/com/android/incallui/res/values-lt/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Gaunamasis „Wi-Fi“ darbo skambutis"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Gaunamasis įtartinas šlamšto skambutis"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Gaunama vaizdo skambučio užklausa"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Naujas balso pašto pranešimas"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Naujas balso pašto pranešimas (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Rinkti <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nežinomas balso pašto numeris"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nėra paslaugos"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Pasirinktas tinklas (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) negalimas"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Atsakyti"</string>
diff --git a/java/com/android/incallui/res/values-lv/strings.xml b/java/com/android/incallui/res/values-lv/strings.xml
index f144a9a..9be46c4 100644
--- a/java/com/android/incallui/res/values-lv/strings.xml
+++ b/java/com/android/incallui/res/values-lv/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Ienākošs darba Wi-Fi zvans"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Ienākošs, iespējams, nevēlams zvans"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Ienākošs video pieprasījums"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Jauns balss pasts"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Jauns balss pasts (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Sastādiet šādu numuru: <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Balss pasta numurs nav zināms."</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nav pakalpojuma"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Atlasītais tīkls (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nav pieejams"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Atbildēt"</string>
diff --git a/java/com/android/incallui/res/values-mk/strings.xml b/java/com/android/incallui/res/values-mk/strings.xml
index 4bc848e..8c641fb 100644
--- a/java/com/android/incallui/res/values-mk/strings.xml
+++ b/java/com/android/incallui/res/values-mk/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Дојдовен работен повик преку Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Дојдовниот повик може да е спам"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Дојдовно побарување за видео"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Нова говорна пошта"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Нова говорна пошта (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Бирај <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Бројот на говорна пошта е непознат"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Нема услуга"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Одбраната мрежа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) е недостапна"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Одговори"</string>
diff --git a/java/com/android/incallui/res/values-ml/strings.xml b/java/com/android/incallui/res/values-ml/strings.xml
index 4364f8a..e207ccd 100644
--- a/java/com/android/incallui/res/values-ml/strings.xml
+++ b/java/com/android/incallui/res/values-ml/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"ഇൻകമിംഗ് വൈഫൈ ഔദ്യോഗിക കോൾ"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"സംശയാസ്‌പദമായ ഇൻകമിംഗ് സ്‌പാം കോൾ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"ഇൻകമിംഗ് വീഡിയോ അഭ്യർത്ഥന"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"പുതിയ വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"പുതിയ വോയ്‌സ്‌മെയിൽ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ഡയൽ ചെയ്യുക"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"വോയ്‌സ്‌മെയിൽ നമ്പർ അജ്ഞാതമാണ്"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"സേവനമില്ല"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"തിരഞ്ഞെടുത്ത നെറ്റ്‌വർക്ക് (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ലഭ്യമല്ല"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"മറുപടി"</string>
diff --git a/java/com/android/incallui/res/values-mn/strings.xml b/java/com/android/incallui/res/values-mn/strings.xml
index 25d788d..0e26917 100644
--- a/java/com/android/incallui/res/values-mn/strings.xml
+++ b/java/com/android/incallui/res/values-mn/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Ирж буй Wi-Fi албаны дуудлага"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Орж ирсэн сэжигтэй спам дуудлага"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Ирж буй видео хүсэлт"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Шинэ дуут шуудан"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Шинэ дуут шуудан (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> руу залгах"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Дуут шуудангийн дугаар тодорхойгүй"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Үйлчилгээ байхгүй"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Сонгосон сүлжээ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ашиглах боломжгүй"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Хариулах"</string>
diff --git a/java/com/android/incallui/res/values-mr/strings.xml b/java/com/android/incallui/res/values-mr/strings.xml
index d966e14..c56c610 100644
--- a/java/com/android/incallui/res/values-mr/strings.xml
+++ b/java/com/android/incallui/res/values-mr/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"येणारा वाय-फाय कार्य कॉल"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"येणारा संशयित स्पॅम कॉल"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"येणारी व्हिडिओ विनंती"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"नवीन व्हॉइसमेल"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"नवीन व्हॉइसमेल (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> डायल करा"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"व्हॉइसमेल नंबर अज्ञात"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"सेवा नाही"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"निवडलेले नेटवर्क (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) अनुपलब्‍ध"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"उत्तर"</string>
diff --git a/java/com/android/incallui/res/values-ms/strings.xml b/java/com/android/incallui/res/values-ms/strings.xml
index 2268a59..a5be593 100644
--- a/java/com/android/incallui/res/values-ms/strings.xml
+++ b/java/com/android/incallui/res/values-ms/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Panggilan masuk melalui Wi-Fi daripada tempat kerja"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Disyaki panggilan spam masuk"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Permintaan video masuk"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Mel suara baharu"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Mel suara baharu (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Dail <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nombor mel suara tidak dikenali"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Tiada perkhidmatan"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Rangkaian pilihan (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) tidak tersedia"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Jawapan"</string>
diff --git a/java/com/android/incallui/res/values-my/strings.xml b/java/com/android/incallui/res/values-my/strings.xml
index a1c8bea..5cca498 100644
--- a/java/com/android/incallui/res/values-my/strings.xml
+++ b/java/com/android/incallui/res/values-my/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Wi-Fi အလုပ်မှ အဝင် ခေါ်ဆိုမှု"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"ခေါ်နေသော မသင်္ကာဖွယ်ရာ စပမ်းခေါ်ဆိုမှု"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"အသံ ခေါ်ဆိုမှုအဖြစ် တောင်းဆိုမှု"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"အသံမေးလ်အသစ်"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"အသံစာ အသစ် (<xliff:g id="COUNT">%d</xliff:g>) စောင်"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ကိုခေါ်ပါ"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"အသံဖုန်းခေါ်မှုနံပါတ် မသိပါ"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"ဝန်ဆောင်မှု မရှိပါ"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"ရွေးချယ်ထားသော ကွန်ရက် (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) မရရှိနိုင်ပါ"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"အဖြေ"</string>
diff --git a/java/com/android/incallui/res/values-nb/strings.xml b/java/com/android/incallui/res/values-nb/strings.xml
index bb2cf69..d0883a2 100644
--- a/java/com/android/incallui/res/values-nb/strings.xml
+++ b/java/com/android/incallui/res/values-nb/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Innkommende jobbanrop via Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Innkommende anrop fra en mulig useriøs oppringer"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Innkommende videoforespørsel"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Ny talemelding"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nye talemeldinger (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Ring <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Mangler nummer til talepostkasse"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ingen tjeneste"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Valgt nettverk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ikke tilgjengelig"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Svar"</string>
diff --git a/java/com/android/incallui/res/values-ne/strings.xml b/java/com/android/incallui/res/values-ne/strings.xml
index 5b5ff1b..b589479 100644
--- a/java/com/android/incallui/res/values-ne/strings.xml
+++ b/java/com/android/incallui/res/values-ne/strings.xml
@@ -37,32 +37,28 @@
     <string name="notification_ongoing_work_call_wifi" msgid="6769311641293583197">"चालू रहेको Wi-Fi कार्यको कल"</string>
     <string name="notification_on_hold" msgid="7141827443379205682">"होल्डमा"</string>
     <string name="notification_incoming_call" msgid="7520580807513849283">"आगमन कल"</string>
-    <string name="notification_incoming_call_with_photo" msgid="4360505044807517422">"तस्बिर सहितको आगमन कल"</string>
-    <string name="notification_incoming_call_with_message" msgid="5608687985694956601">"सन्देश सहितको आगमन कल"</string>
-    <string name="notification_incoming_call_with_location" msgid="4519498445081598767">"स्थान सहितको आगमन कल"</string>
-    <string name="notification_incoming_call_with_photo_message" msgid="316806247057497525">"तस्बिर र सन्देश सहितको आगमन कल"</string>
-    <string name="notification_incoming_call_with_photo_location" msgid="3523930283842222367">"तस्बिर र स्थान सहितको आगमन कल"</string>
-    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"सन्देश र स्थान सहितको आगमन कल"</string>
-    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"तस्बिर, सन्देश र स्थान सहितको आगमन कल"</string>
-    <string name="notification_incoming_call_attachments" msgid="3708414495376236948">"समावेश गरिएको वस्तु सहितको आगमन कल"</string>
+    <string name="notification_incoming_call_with_photo" msgid="4360505044807517422">"तस्बिरसहितको आगमन कल"</string>
+    <string name="notification_incoming_call_with_message" msgid="5608687985694956601">"सन्देशसहितको आगमन कल"</string>
+    <string name="notification_incoming_call_with_location" msgid="4519498445081598767">"स्थानसहितको आगमन कल"</string>
+    <string name="notification_incoming_call_with_photo_message" msgid="316806247057497525">"तस्बिर र सन्देशसहितको आगमन कल"</string>
+    <string name="notification_incoming_call_with_photo_location" msgid="3523930283842222367">"तस्बिर र स्थानसहितको आगमन कल"</string>
+    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"सन्देश र स्थानसहितको आगमन कल"</string>
+    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"तस्बिर, सन्देश र स्थानसहितको आगमन कल"</string>
+    <string name="notification_incoming_call_attachments" msgid="3708414495376236948">"समावेश गरिएको वस्तुसहितको आगमन कल"</string>
     <string name="important_notification_incoming_call" msgid="2867013954509930989">"महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_with_photo" msgid="4908333121583658560">"तस्बिर सहितको महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_with_message" msgid="1614505248246685319">"सन्देश सहितको महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_with_location" msgid="7387284065036564352">"स्थान सहितको महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_with_photo_message" msgid="4577220919701434817">"तस्बिर र सन्देश सहितको महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_with_photo_location" msgid="7172208615619394502">"तस्बिर र स्थान सहितको महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"सन्देश र स्थान सहितको महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"तस्बिर, सन्देश र स्थान सहितको महत्त्वपूर्ण आगमन कल"</string>
-    <string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"समावेश गरिएको वस्तु सहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_with_photo" msgid="4908333121583658560">"तस्बिरसहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_with_message" msgid="1614505248246685319">"सन्देशसहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_with_location" msgid="7387284065036564352">"स्थानसहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_with_photo_message" msgid="4577220919701434817">"तस्बिर र सन्देशसहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_with_photo_location" msgid="7172208615619394502">"तस्बिर र स्थानसहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"सन्देश र स्थानसहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"तस्बिर, सन्देश र स्थानसहितको महत्त्वपूर्ण आगमन कल"</string>
+    <string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"समावेश गरिएको वस्तुसहितको महत्त्वपूर्ण आगमन कल"</string>
     <string name="notification_incoming_work_call" msgid="5291275092734261918">"आगमन कार्यको कल"</string>
     <string name="notification_incoming_call_wifi" msgid="1039173395425774684">"आगमन Wi-Fi कल"</string>
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"आगमन Wi-Fi कार्यको कल"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"शंकास्पद आगमन स्प्याम कल"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"आगमन भिडियो अनुरोध"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"नयाँ भ्वाइस मेल"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"नयाँ भ्वाइसमेल ( <xliff:g id="COUNT">%d</xliff:g> )"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>मा डायल गर्नुहोस्"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"अज्ञात भवाइसमेल नम्बर"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"सेवा छैन"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"चयन गरिएको नेटवर्क ( <xliff:g id="OPERATOR_NAME">%s</xliff:g> ) अनुपलब्ध"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"उत्तर"</string>
diff --git a/java/com/android/incallui/res/values-nl/strings.xml b/java/com/android/incallui/res/values-nl/strings.xml
index 8601fe2..930acdc 100644
--- a/java/com/android/incallui/res/values-nl/strings.xml
+++ b/java/com/android/incallui/res/values-nl/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Inkomende zakelijke oproep via wifi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Inkomende vermoedelijke spamoproep"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Binnenkomend videoverzoek"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nieuwe voicemail"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nieuwe voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> bellen"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Voicemailnummer onbekend"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Geen service"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Geselecteerd netwerk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) niet beschikbaar"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Antwoord"</string>
diff --git a/java/com/android/incallui/res/values-no/strings.xml b/java/com/android/incallui/res/values-no/strings.xml
index bb2cf69..d0883a2 100644
--- a/java/com/android/incallui/res/values-no/strings.xml
+++ b/java/com/android/incallui/res/values-no/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Innkommende jobbanrop via Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Innkommende anrop fra en mulig useriøs oppringer"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Innkommende videoforespørsel"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Ny talemelding"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nye talemeldinger (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Ring <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Mangler nummer til talepostkasse"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ingen tjeneste"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Valgt nettverk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ikke tilgjengelig"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Svar"</string>
diff --git a/java/com/android/incallui/res/values-pa/strings.xml b/java/com/android/incallui/res/values-pa/strings.xml
index ebd8a25..22cd7da 100644
--- a/java/com/android/incallui/res/values-pa/strings.xml
+++ b/java/com/android/incallui/res/values-pa/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"ਕੰਮ ਸਬੰਧਿਤ ਆ ਰਹੀ Wi-Fi ਕਾਲ"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"ਸ਼ੱਕੀ ਸਪੈਮ ਕਾਲ ਆ ਰਹੀ ਹੈ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਬੇਨਤੀ"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"ਨਵੀਂ ਵੌਇਸਮੇਲ"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"ਨਵੀਂ ਵੌਇਸਮੇਲ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ਡਾਇਲ ਕਰੋ"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"ਵੌਇਸਮੇਲ ਨੰਬਰ ਅਗਿਆਤ"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"ਚੁਣੇ ਗਏ ਨੈਟਵਰਕ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ਅਣਉਪਲਬਧ"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"ਜਵਾਬ ਦਿਓ"</string>
diff --git a/java/com/android/incallui/res/values-pl/strings.xml b/java/com/android/incallui/res/values-pl/strings.xml
index 5f818ae..77c8339 100644
--- a/java/com/android/incallui/res/values-pl/strings.xml
+++ b/java/com/android/incallui/res/values-pl/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Przychodzące połączenie służbowe przez Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Przychodzące połączenie podejrzanie o spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Przychodzące żądanie wideo"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nowa poczta głosowa"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nowa poczta głosowa (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Zadzwoń do <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nieznany numer poczty głosowej"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Brak usługi"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Wybrana sieć (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) jest niedostępna"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Odbierz"</string>
diff --git a/java/com/android/incallui/res/values-pt-rBR/strings.xml b/java/com/android/incallui/res/values-pt-rBR/strings.xml
index 29254dc..b0e46df 100644
--- a/java/com/android/incallui/res/values-pt-rBR/strings.xml
+++ b/java/com/android/incallui/res/values-pt-rBR/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Chamada de trabalho recebida por Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Chamada recebida suspeita (spam)"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Recebendo solicitação de vídeo"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Novo correio de voz"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Novo correio de voz (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Discar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Número correio de voz desconhecido"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Sem serviço"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"A rede selecionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) não está disponível"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Atender"</string>
diff --git a/java/com/android/incallui/res/values-pt-rPT/strings.xml b/java/com/android/incallui/res/values-pt-rPT/strings.xml
index 7ec6bfe..b42b0e5 100644
--- a/java/com/android/incallui/res/values-pt-rPT/strings.xml
+++ b/java/com/android/incallui/res/values-pt-rPT/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Chamada de trabalho recebida por Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"A receber chamada spam suspeita"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Pedido de vídeo recebido"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Novo correio de voz"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Novo correio de voz (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Marcar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Número do correio de voz desconhecido"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nenhum serviço"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Rede selecionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) indisponível"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Atender"</string>
diff --git a/java/com/android/incallui/res/values-pt/strings.xml b/java/com/android/incallui/res/values-pt/strings.xml
index 29254dc..b0e46df 100644
--- a/java/com/android/incallui/res/values-pt/strings.xml
+++ b/java/com/android/incallui/res/values-pt/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Chamada de trabalho recebida por Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Chamada recebida suspeita (spam)"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Recebendo solicitação de vídeo"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Novo correio de voz"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Novo correio de voz (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Discar <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Número correio de voz desconhecido"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Sem serviço"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"A rede selecionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) não está disponível"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Atender"</string>
diff --git a/java/com/android/incallui/res/values-ro/strings.xml b/java/com/android/incallui/res/values-ro/strings.xml
index cd31f80..db8be10 100644
--- a/java/com/android/incallui/res/values-ro/strings.xml
+++ b/java/com/android/incallui/res/values-ro/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Apel de serviciu prin Wi-Fi primit"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Un apel primit posibil spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Solicitare de trecere la apel video"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Mesaj vocal nou"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Mesaj vocal nou (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Apelați <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Număr mesagerie vocală necunoscut"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Fără serviciu"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Rețeaua selectată (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nu este disponibilă"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Răspundeți"</string>
diff --git a/java/com/android/incallui/res/values-ru/strings.xml b/java/com/android/incallui/res/values-ru/strings.xml
index fd0773d..8fd924e 100644
--- a/java/com/android/incallui/res/values-ru/strings.xml
+++ b/java/com/android/incallui/res/values-ru/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Входящий Wi-Fi-звонок (работа)"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Входящий вызов: подозрение на спам"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Входящий видеовызов"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Новое сообщение голосовой почты"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Новое сообщение голосовой почты (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Позвонить <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Номер голосовой почты неизвестен"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Сеть не найдена"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Выбранная сеть (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) недоступна."</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Ответить"</string>
diff --git a/java/com/android/incallui/res/values-si/strings.xml b/java/com/android/incallui/res/values-si/strings.xml
index 1d24a5b..989879a 100644
--- a/java/com/android/incallui/res/values-si/strings.xml
+++ b/java/com/android/incallui/res/values-si/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"පැමිණෙන Wi-Fi කාර්යාල ඇමතුම"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"එන සැකසහිත අයාචිත තැපැල් ඇමතුම"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"පැමිණෙන වීඩියෝ ඉල්ලීම"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"නව හඬතැපෑල"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"නව හඬ තැපැල් (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> අමතන්න"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"හඬතැපැල් අංකය නොදනී"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"සේවාව නැත"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"තෝරා ඇති ජාලය (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) නොමැත"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"පිළිතුරු දෙන්න"</string>
diff --git a/java/com/android/incallui/res/values-sk/strings.xml b/java/com/android/incallui/res/values-sk/strings.xml
index 38326bc..d09ba44 100644
--- a/java/com/android/incallui/res/values-sk/strings.xml
+++ b/java/com/android/incallui/res/values-sk/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Prichádzajúci pracovný hovor cez Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Prichádzajúci hovor, pri ktorom je podozrenie, že ide o spam"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Prichádzajúca žiadosť o video"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nová hlasová správa"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nová hlasová správa (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Zavolať hlasovú schránku <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Číslo hlasovej schránky je neznáme"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Žiadny signál"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Vybratá sieť (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nie je k dispozícii"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Prijať"</string>
diff --git a/java/com/android/incallui/res/values-sl/strings.xml b/java/com/android/incallui/res/values-sl/strings.xml
index 0b360d3..b083e1b 100644
--- a/java/com/android/incallui/res/values-sl/strings.xml
+++ b/java/com/android/incallui/res/values-sl/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Dohodni delovni klic prek omrežja Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Domnevno neželeni dohodni klic"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Dohodna zahteva za video"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nova glasovna pošta"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nova glasovna pošta (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Kliči <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Neznana številka glasovne pošte"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ni storitve"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Izbrano omrežje (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ni na voljo"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Odgovori"</string>
diff --git a/java/com/android/incallui/res/values-sq/strings.xml b/java/com/android/incallui/res/values-sq/strings.xml
index d154653..fd19642 100644
--- a/java/com/android/incallui/res/values-sq/strings.xml
+++ b/java/com/android/incallui/res/values-sq/strings.xml
@@ -39,30 +39,26 @@
     <string name="notification_incoming_call" msgid="7520580807513849283">"Telefonatë hyrëse"</string>
     <string name="notification_incoming_call_with_photo" msgid="4360505044807517422">"Telefonatë hyrëse me fotografi"</string>
     <string name="notification_incoming_call_with_message" msgid="5608687985694956601">"Telefonatë hyrëse me mesazh"</string>
-    <string name="notification_incoming_call_with_location" msgid="4519498445081598767">"Telefonatë hyrëse me vendndodhjen"</string>
+    <string name="notification_incoming_call_with_location" msgid="4519498445081598767">"Telefonatë hyrëse me vendndodhje"</string>
     <string name="notification_incoming_call_with_photo_message" msgid="316806247057497525">"Telefonatë hyrëse me fotografi dhe mesazh"</string>
-    <string name="notification_incoming_call_with_photo_location" msgid="3523930283842222367">"Telefonatë hyrëse me fotografi dhe vendndodhjen"</string>
-    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"Telefonatë hyrëse me mesazh dhe vendndodhjen"</string>
-    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"Telefonatë me fotografi, mesazh dhe vendndodhjen"</string>
+    <string name="notification_incoming_call_with_photo_location" msgid="3523930283842222367">"Telefonatë hyrëse me fotografi dhe vendndodhje"</string>
+    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"Telefonatë hyrëse me mesazh dhe vendndodhje"</string>
+    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"Telefonatë me fotografi, mesazh dhe vendndodhje"</string>
     <string name="notification_incoming_call_attachments" msgid="3708414495376236948">"Telefonatë hyrëse me bashkëngjitje"</string>
     <string name="important_notification_incoming_call" msgid="2867013954509930989">"Telefonatë hyrëse e rëndësishme"</string>
     <string name="important_notification_incoming_call_with_photo" msgid="4908333121583658560">"Telefonatë hyrëse e rëndësishme me fotografi"</string>
     <string name="important_notification_incoming_call_with_message" msgid="1614505248246685319">"Telefonatë hyrëse e rëndësishme me mesazh"</string>
-    <string name="important_notification_incoming_call_with_location" msgid="7387284065036564352">"Telefonatë hyrëse e rëndësishme me vendndodhjen"</string>
+    <string name="important_notification_incoming_call_with_location" msgid="7387284065036564352">"Telefonatë hyrëse e rëndësishme me vendndodhje"</string>
     <string name="important_notification_incoming_call_with_photo_message" msgid="4577220919701434817">"Telefonatë e rëndësishme me fotografi dhe mesazh"</string>
-    <string name="important_notification_incoming_call_with_photo_location" msgid="7172208615619394502">"Telefonatë e rëndësishme me foto dhe vendndodhjen"</string>
-    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"Telefonatë e rëndësishme me mesazh e vendndodhjen"</string>
-    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"Tel. e rëndësishme me foto, mesazh e vendndodhjen"</string>
+    <string name="important_notification_incoming_call_with_photo_location" msgid="7172208615619394502">"Telefonatë e rëndësishme me foto dhe vendndodhje"</string>
+    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"Telefonatë e rëndësishme me mesazh e vendndodhje"</string>
+    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"Tel. e rëndësishme me foto, mesazh e vendndodhje"</string>
     <string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"Telefonatë hyrëse e rëndësishme me bashkëngjitje"</string>
     <string name="notification_incoming_work_call" msgid="5291275092734261918">"Telefonatë pune hyrëse"</string>
     <string name="notification_incoming_call_wifi" msgid="1039173395425774684">"Telefonatë hyrëse Wi-Fi"</string>
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Telefonatë pune hyrëse përmes Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Telefonatë e dyshuar si e padëshiruar"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Kërkesë për video hyrëse"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Postë e re zanore"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Postë e re zanore (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Formo numrin <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Numri i postës zanore është i panjohur"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Nuk ka shërbim"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Rrjeti i përzgjedhur (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nuk mundësohet"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Përgjigju"</string>
diff --git a/java/com/android/incallui/res/values-sr/strings.xml b/java/com/android/incallui/res/values-sr/strings.xml
index 89b3e7d..4fa7a61 100644
--- a/java/com/android/incallui/res/values-sr/strings.xml
+++ b/java/com/android/incallui/res/values-sr/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Долазни позив за Work преко Wi-Fi-ја"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Сумња на непожељан долазни позив"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Захтев за долазни видео позив"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Нова говорна пошта"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Нова говорна пошта (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Позови <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Непознат број говорне поште"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Нема услуге"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Изабрана мрежа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) није доступна"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Одговори"</string>
diff --git a/java/com/android/incallui/res/values-sv/strings.xml b/java/com/android/incallui/res/values-sv/strings.xml
index 66d2732..6d58d90 100644
--- a/java/com/android/incallui/res/values-sv/strings.xml
+++ b/java/com/android/incallui/res/values-sv/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Inkommande jobbsamtal via Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Inkommande misstänkt spamsamtal"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Inkommande begäran om videosamtal"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Nytt röstmeddelande"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Nytt röstmeddelande (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Ring <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nummer till röstbrevlåda okänt"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ingen tjänst"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Det valda nätverket (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) är inte tillgängligt"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Svara"</string>
diff --git a/java/com/android/incallui/res/values-sw/strings.xml b/java/com/android/incallui/res/values-sw/strings.xml
index 914e228..8b2fb95 100644
--- a/java/com/android/incallui/res/values-sw/strings.xml
+++ b/java/com/android/incallui/res/values-sw/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Simu ya Wi-Fi ya kazi inayoingia"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Simu inayoingia inashukiwa kuwa taka"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Ombi  linaloingia la video"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Ujumbe mpya wa sauti"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Barua mpya ya sauti <xliff:g id="COUNT">%d</xliff:g>"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Piga <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Nambari ya ujumbe wa sauti haijulikani."</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Hakuna huduma"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Mtandao uliochaguliwa <xliff:g id="OPERATOR_NAME">%s</xliff:g> haupatikani"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Jibu"</string>
diff --git a/java/com/android/incallui/res/values-ta/strings.xml b/java/com/android/incallui/res/values-ta/strings.xml
index 1eb9ce5..bae8d6a 100644
--- a/java/com/android/incallui/res/values-ta/strings.xml
+++ b/java/com/android/incallui/res/values-ta/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"உள்வரும் வைஃபை அழைப்பு (பணி)"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"உள்வரும் சந்தேகத்திற்குரிய ஸ்பேம் அழைப்பு"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"உள்வரும் வீடியோ கோரிக்கை"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"புதிய குரலஞ்சல்"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"புதிய குரலஞ்சல் (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ஐ அழை"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"குரலஞ்சல் எண் அறியப்படவில்லை"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"சேவை இல்லை"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"தேர்ந்தெடுத்த நெட்வொர்க் (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) கிடைக்கவில்லை"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"பதிலளி"</string>
diff --git a/java/com/android/incallui/res/values-te/strings.xml b/java/com/android/incallui/res/values-te/strings.xml
index fc9723d..6b83388 100644
--- a/java/com/android/incallui/res/values-te/strings.xml
+++ b/java/com/android/incallui/res/values-te/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"ఇన్‌కమింగ్ Wi-Fi కార్యాలయ కాల్"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"అనుమానాస్పద స్పామ్ కాల్ వస్తోంది"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"ఇన్‌కమింగ్ వీడియో అభ్యర్థన"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"కొత్త వాయిస్ మెయిల్"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"కొత్త వాయిస్ మెయిల్ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>కు డయల్ చేయండి"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"వాయిస్ మెయిల్ నంబర్ తెలియదు"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"సేవ లేదు"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"ఎంచుకున్న నెట్‌వర్క్ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) అందుబాటులో లేదు"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"సమాధానం ఇవ్వండి"</string>
diff --git a/java/com/android/incallui/res/values-th/strings.xml b/java/com/android/incallui/res/values-th/strings.xml
index 8fef8a6..11023b9 100644
--- a/java/com/android/incallui/res/values-th/strings.xml
+++ b/java/com/android/incallui/res/values-th/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"มีสายเรียกเข้าจากที่ทำงานผ่าน Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"สายเรียกเข้าที่สงสัยว่าเป็นสแปม"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"คำขอโทรเข้าเป็นวิดีโอ"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"ข้อความเสียงใหม่"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"ข้อความเสียงใหม่ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"หมุนหมายเลข <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"ไม่ทราบหมายเลขข้อความเสียง"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"ไม่มีบริการ"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"เครือข่ายที่เลือกไว้ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ไม่พร้อมใช้งาน"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"รับสาย"</string>
diff --git a/java/com/android/incallui/res/values-tl/strings.xml b/java/com/android/incallui/res/values-tl/strings.xml
index 725fc48..00a4623 100644
--- a/java/com/android/incallui/res/values-tl/strings.xml
+++ b/java/com/android/incallui/res/values-tl/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Papasok na tawag sa trabaho sa pamamagitan ng Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Papasok na pinaghihinalaang spam na tawag"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Papasok na kahilingan ng video"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Bagong voicemail"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Bagong voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"I-dial ang <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Hindi kilala ang numero ng voicemail"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Walang serbisyo"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Hindi available ang mga piniling network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>)"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Sagutin"</string>
diff --git a/java/com/android/incallui/res/values-tr/strings.xml b/java/com/android/incallui/res/values-tr/strings.xml
index 1d88d5a..9820a69 100644
--- a/java/com/android/incallui/res/values-tr/strings.xml
+++ b/java/com/android/incallui/res/values-tr/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Gelen kablosuz iş çağrısı"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Spam olabilecek gelen arama"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Gelen video isteği"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Yeni sesli mesaj"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Yeni sesli mesaj (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Çevir: <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Sesli mesaj numarası bilinmiyor"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Hizmet yok"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Seçili ağ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) kullanılamıyor"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Yanıtla"</string>
diff --git a/java/com/android/incallui/res/values-uk/strings.xml b/java/com/android/incallui/res/values-uk/strings.xml
index 0916800..b3b297d 100644
--- a/java/com/android/incallui/res/values-uk/strings.xml
+++ b/java/com/android/incallui/res/values-uk/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Вхідний дзвінок на робочий телефон через Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Цей дзвінок може бути спамом"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Запит на вхідний відеодзвінок"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Нове голосове повідомлення"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Нове голосове повідомлення (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Набрати <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Невідомий номер голосової пошти"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Нема служби"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Вибрана мережа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) недоступна"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Відповісти"</string>
diff --git a/java/com/android/incallui/res/values-ur/strings.xml b/java/com/android/incallui/res/values-ur/strings.xml
index bf8c8e1..e3326a2 100644
--- a/java/com/android/incallui/res/values-ur/strings.xml
+++ b/java/com/android/incallui/res/values-ur/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"‏کام سے متعلق آنے والی Wi-Fi کال"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"آنے والی مشتبہ سپام کال"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"اِن کمنگ ویڈیو درخواست"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"نیا صوتی میل"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"نیا صوتی میل (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ڈائل کریں"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"صوتی میل نمبر نامعلوم ہے"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"کوئی سروس نہیں ہے"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"منتخب کردہ نیٹ ورک (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) دستیاب نہیں ہے"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"جواب دیں"</string>
diff --git a/java/com/android/incallui/res/values-uz/strings.xml b/java/com/android/incallui/res/values-uz/strings.xml
index 2577e19..14486c6 100644
--- a/java/com/android/incallui/res/values-uz/strings.xml
+++ b/java/com/android/incallui/res/values-uz/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Kiruvchi Wi-Fi ishchi qo‘ng‘irog‘i"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Shubhali kiruvchi qo‘ng‘iroq"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Kiruvchi video so\'rovi"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Yangi ovozli xabar"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Yangi ovozli xabar (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>ni terish"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Ovozli pochta raqami noma’lum"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Xizmat mavjud emas"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Tanlangan tarmoq (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) mavjud emas"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Javob"</string>
diff --git a/java/com/android/incallui/res/values-vi/strings.xml b/java/com/android/incallui/res/values-vi/strings.xml
index 845c9e8..b466b02 100644
--- a/java/com/android/incallui/res/values-vi/strings.xml
+++ b/java/com/android/incallui/res/values-vi/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Cuộc gọi đến qua Wi-Fi về công việc"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Cuộc gọi spam đến bị nghi ngờ"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Yêu cầu video đến"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Thư thoại mới"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Thư thoại mới (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Quay số <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Số thư thoại không xác định"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Không có dịch vụ nào"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Mạng được chọn (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) không khả dụng"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Trả lời"</string>
diff --git a/java/com/android/incallui/res/values-zh-rCN/strings.xml b/java/com/android/incallui/res/values-zh-rCN/strings.xml
index 7168254..e26ab0c 100644
--- a/java/com/android/incallui/res/values-zh-rCN/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rCN/strings.xml
@@ -38,31 +38,27 @@
     <string name="notification_on_hold" msgid="7141827443379205682">"保持"</string>
     <string name="notification_incoming_call" msgid="7520580807513849283">"来电"</string>
     <string name="notification_incoming_call_with_photo" msgid="4360505044807517422">"包含照片的来电"</string>
-    <string name="notification_incoming_call_with_message" msgid="5608687985694956601">"包含信息的来电"</string>
+    <string name="notification_incoming_call_with_message" msgid="5608687985694956601">"包含讯息的来电"</string>
     <string name="notification_incoming_call_with_location" msgid="4519498445081598767">"包含位置信息的来电"</string>
-    <string name="notification_incoming_call_with_photo_message" msgid="316806247057497525">"包含照片和信息的来电"</string>
+    <string name="notification_incoming_call_with_photo_message" msgid="316806247057497525">"包含照片和讯息的来电"</string>
     <string name="notification_incoming_call_with_photo_location" msgid="3523930283842222367">"包含照片和位置信息的来电"</string>
-    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"包含信息和位置信息的来电"</string>
-    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"包含照片、信息和位置信息的来电"</string>
+    <string name="notification_incoming_call_with_message_location" msgid="319374298517482028">"包含讯息和位置信息的来电"</string>
+    <string name="notification_incoming_call_with_photo_message_location" msgid="596658237891406809">"包含照片、讯息和位置信息的来电"</string>
     <string name="notification_incoming_call_attachments" msgid="3708414495376236948">"包含附件的来电"</string>
     <string name="important_notification_incoming_call" msgid="2867013954509930989">"重要来电"</string>
     <string name="important_notification_incoming_call_with_photo" msgid="4908333121583658560">"包含照片的重要来电"</string>
-    <string name="important_notification_incoming_call_with_message" msgid="1614505248246685319">"包含信息的重要来电"</string>
+    <string name="important_notification_incoming_call_with_message" msgid="1614505248246685319">"包含讯息的重要来电"</string>
     <string name="important_notification_incoming_call_with_location" msgid="7387284065036564352">"包含位置信息的重要来电"</string>
-    <string name="important_notification_incoming_call_with_photo_message" msgid="4577220919701434817">"包含照片和信息的重要来电"</string>
+    <string name="important_notification_incoming_call_with_photo_message" msgid="4577220919701434817">"包含照片和讯息的重要来电"</string>
     <string name="important_notification_incoming_call_with_photo_location" msgid="7172208615619394502">"包含照片和位置信息的重要来电"</string>
-    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"包含信息和位置信息的重要来电"</string>
-    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"包含照片、信息和位置信息的重要来电"</string>
+    <string name="important_notification_incoming_call_with_message_location" msgid="7244079127080064796">"包含讯息和位置信息的重要来电"</string>
+    <string name="important_notification_incoming_call_with_photo_message_location" msgid="513692941317253479">"包含照片、讯息和位置信息的重要来电"</string>
     <string name="important_notification_incoming_call_attachments" msgid="4594375776340303751">"包含附件的重要来电"</string>
     <string name="notification_incoming_work_call" msgid="5291275092734261918">"工作来电"</string>
     <string name="notification_incoming_call_wifi" msgid="1039173395425774684">"WLAN 来电"</string>
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"WLAN 工作来电"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"有疑似骚扰来电"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"收到视频通话邀请"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"新语音邮件"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"新语音邮件 (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"拨打 <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"语音信箱号码未知"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"无服务"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"所选网络（<xliff:g id="OPERATOR_NAME">%s</xliff:g>）不可用"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"接听"</string>
diff --git a/java/com/android/incallui/res/values-zh-rHK/strings.xml b/java/com/android/incallui/res/values-zh-rHK/strings.xml
index 00fe6f3..5eb8892 100644
--- a/java/com/android/incallui/res/values-zh-rHK/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rHK/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Wi-Fi 工作來電"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"疑似收到垃圾來電"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"收到視像要求"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"新留言"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"新留言 (<xliff:g id="COUNT">%d</xliff:g> 個)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"撥號 <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"沒有可用的留言信箱號碼"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"沒有服務"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"您所選取的網絡 (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) 無法使用"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"接聽"</string>
diff --git a/java/com/android/incallui/res/values-zh-rTW/strings.xml b/java/com/android/incallui/res/values-zh-rTW/strings.xml
index c9f4748..9f02866 100644
--- a/java/com/android/incallui/res/values-zh-rTW/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rTW/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"公司來電 (透過 Wi-Fi)"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"可疑的騷擾/廣告來電"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"收到視訊要求"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"新留言"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"新留言 (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"撥打 <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"無語音信箱號碼"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"沒有服務"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"您所選取的網路 (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) 無法使用"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"接聽"</string>
diff --git a/java/com/android/incallui/res/values-zu/strings.xml b/java/com/android/incallui/res/values-zu/strings.xml
index 7c5b1ab..db415cc 100644
--- a/java/com/android/incallui/res/values-zu/strings.xml
+++ b/java/com/android/incallui/res/values-zu/strings.xml
@@ -59,10 +59,6 @@
     <string name="notification_incoming_work_call_wifi" msgid="322580182203435905">"Ikholi engenayo yomsebenzi ye-Wi-Fi"</string>
     <string name="notification_incoming_spam_call" msgid="7591506944666791937">"Ikholi engenayo osolisayo kagaxekile"</string>
     <string name="notification_requesting_video_call" msgid="1807679328811515758">"Isicelo sevidiyo engenayo"</string>
-    <string name="notification_voicemail_title" msgid="3870308666991926655">"Umlayezo wezwi omusha"</string>
-    <string name="notification_voicemail_title_count" msgid="6918714157574015331">"Umyalezo wezwi omusha (<xliff:g id="COUNT">%d</xliff:g>)"</string>
-    <string name="notification_voicemail_text_format" msgid="6080732264937745523">"Dayela <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
-    <string name="notification_voicemail_no_vm_number" msgid="260803154697293622">"Inombolo yevoyisimeyili ayaziwa"</string>
     <string name="notification_network_selection_title" msgid="8639159088474275747">"Ayikho isevisi"</string>
     <string name="notification_network_selection_text" msgid="7190860774239009625">"Inethiwekhi ekhethiwe <xliff:g id="OPERATOR_NAME">%s</xliff:g> ayitholakali"</string>
     <string name="notification_action_answer" msgid="8748275902211192568">"Phendula"</string>
diff --git a/java/com/android/incallui/res/values/strings.xml b/java/com/android/incallui/res/values/strings.xml
index 18d5930..aede428 100644
--- a/java/com/android/incallui/res/values/strings.xml
+++ b/java/com/android/incallui/res/values/strings.xml
@@ -134,17 +134,6 @@
   <string name="notification_incoming_spam_call">Incoming suspected spam call</string>
   <!-- The "label" of the in-call Notification for upgrading an existing call to a video call. -->
   <string name="notification_requesting_video_call">Incoming video request</string>
-  <!-- Label for the "Voicemail" notification item, when expanded. -->
-  <string name="notification_voicemail_title">New voicemail</string>
-  <!-- Label for the expanded "Voicemail" notification item,
-       including a count of messages. -->
-  <string name="notification_voicemail_title_count">New voicemail (<xliff:g id="count">%d</xliff:g>)</string>
-  <!-- Message displayed in the "Voicemail" notification item, allowing the user
-       to dial the indicated number. -->
-  <string name="notification_voicemail_text_format">Dial <xliff:g id="voicemail_number">%s</xliff:g></string>
-  <!-- Message displayed in the "Voicemail" notification item,
-       indicating that there's no voicemail number available -->
-  <string name="notification_voicemail_no_vm_number">Voicemail number unknown</string>
   <!-- Label for the "No service" notification item, when expanded. -->
   <string name="notification_network_selection_title">No service</string>
   <!-- Label for the expanded "No service" notification item, including the
diff --git a/java/com/android/incallui/res/values/styles.xml b/java/com/android/incallui/res/values/styles.xml
index 96e3d4d..68a38f0 100644
--- a/java/com/android/incallui/res/values/styles.xml
+++ b/java/com/android/incallui/res/values/styles.xml
@@ -63,6 +63,7 @@
     <item name="dialpad_end_key_spacing">
       @dimen/incall_end_call_spacing
     </item>
+    <item name="dialpad_elevation">10dp</item>
   </style>
 
   <style name="AfterCallNotificationTheme" parent="@style/Theme.AppCompat.Light.Dialog.MinWidth">
diff --git a/java/com/android/incallui/spam/SpamCallListListener.java b/java/com/android/incallui/spam/SpamCallListListener.java
index ed0a99e..67dec93 100644
--- a/java/com/android/incallui/spam/SpamCallListListener.java
+++ b/java/com/android/incallui/spam/SpamCallListListener.java
@@ -31,9 +31,9 @@
 import com.android.dialer.blocking.FilteredNumberCompat;
 import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.ContactLookupResult;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.dialer.notification.NotificationChannelManager;
 import com.android.dialer.notification.NotificationChannelManager.Channel;
 import com.android.dialer.spam.Spam;
diff --git a/java/com/android/incallui/spam/SpamNotificationActivity.java b/java/com/android/incallui/spam/SpamNotificationActivity.java
index 88d6bdf..98cc2f3 100644
--- a/java/com/android/incallui/spam/SpamNotificationActivity.java
+++ b/java/com/android/incallui/spam/SpamNotificationActivity.java
@@ -34,9 +34,10 @@
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
 import com.android.dialer.blocking.FilteredNumberCompat;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
-import com.android.dialer.logging.nano.ReportingLocation;
+import com.android.dialer.logging.ReportingLocation;
 import com.android.dialer.spam.Spam;
 import com.android.incallui.R;
 import com.android.incallui.call.DialerCall;
@@ -108,7 +109,8 @@
     return PhoneNumberUtilsCompat.createTtsSpannable(number).toString();
   }
 
-  private static void logCallImpression(Context context, Bundle bundle, int impression) {
+  private static void logCallImpression(
+      Context context, Bundle bundle, DialerImpression.Type impression) {
     Logger.get(context)
         .logCallImpression(
             impression,
@@ -122,7 +124,8 @@
     bundle.putBoolean(CALL_INFO_KEY_IS_SPAM, call.isSpam());
     bundle.putString(CALL_INFO_KEY_CALL_ID, call.getUniqueCallId());
     bundle.putLong(CALL_INFO_KEY_START_TIME_MILLIS, call.getTimeAddedMs());
-    bundle.putInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, call.getLogState().contactLookupResult);
+    bundle.putInt(
+        CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, call.getLogState().contactLookupResult.getNumber());
     return bundle;
   }
 
@@ -142,7 +145,9 @@
     Intent intent = getIntent();
     String number = getCallInfo().getString(CALL_INFO_KEY_PHONE_NUMBER);
     boolean isSpam = getCallInfo().getBoolean(CALL_INFO_KEY_IS_SPAM);
-    int contactLookupResultType = getCallInfo().getInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, 0);
+    ContactLookupResult.Type contactLookupResultType =
+        ContactLookupResult.Type.forNumber(
+            getCallInfo().getInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, 0));
     switch (intent.getAction()) {
       case ACTION_ADD_TO_CONTACTS:
         logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS);
@@ -164,6 +169,7 @@
           showNonSpamDialog();
         }
         break;
+      default: // fall out
     }
   }
 
@@ -179,7 +185,8 @@
   }
 
   /** Creates and displays the dialog for whitelisting a number. */
-  private void maybeShowNotSpamDialog(final String number, final int contactLookupResultType) {
+  private void maybeShowNotSpamDialog(
+      final String number, final ContactLookupResult.Type contactLookupResultType) {
     if (Spam.get(this).isDialogEnabledForSpamNotification()) {
       BlockReportSpamDialogs.ReportNotSpamDialogFragment.newInstance(
               getFormattedNumber(number),
@@ -198,7 +205,7 @@
 
   /** Creates and displays the dialog for blocking/reporting a number as spam. */
   private void maybeShowBlockReportSpamDialog(
-      final String number, final int contactLookupResultType) {
+      final String number, final ContactLookupResult.Type contactLookupResultType) {
     if (Spam.get(this).isDialogEnabledForSpamNotification()) {
       maybeShowBlockNumberMigrationDialog(
           new BlockedNumbersMigrator.Listener() {
@@ -252,7 +259,7 @@
 
   /** Block and report the number as spam. */
   private void blockReportNumberAndFinish(
-      String number, boolean reportAsSpam, int contactLookupResultType) {
+      String number, boolean reportAsSpam, ContactLookupResult.Type contactLookupResultType) {
     if (reportAsSpam) {
       logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM);
       Spam.get(this)
@@ -271,7 +278,8 @@
   }
 
   /** Report the number as not spam. */
-  private void reportNotSpamAndFinish(String number, int contactLookupResultType) {
+  private void reportNotSpamAndFinish(
+      String number, ContactLookupResult.Type contactLookupResultType) {
     logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM);
     Spam.get(this)
         .reportNotSpamFromAfterCallNotification(
@@ -307,7 +315,7 @@
     return getIntent().getBundleExtra(EXTRA_CALL_INFO);
   }
 
-  private void logCallImpression(int impression) {
+  private void logCallImpression(DialerImpression.Type impression) {
     logCallImpression(this, getCallInfo(), impression);
   }
 
@@ -356,8 +364,9 @@
       final SpamNotificationActivity spamNotificationActivity =
           (SpamNotificationActivity) getActivity();
       final String number = getArguments().getString(CALL_INFO_KEY_PHONE_NUMBER);
-      final int contactLookupResultType =
-          getArguments().getInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, 0);
+      final ContactLookupResult.Type contactLookupResultType =
+          ContactLookupResult.Type.forNumber(
+              getArguments().getInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, 0));
 
       return new AlertDialog.Builder(getActivity())
           .setCancelable(false)
@@ -442,8 +451,9 @@
       final SpamNotificationActivity spamNotificationActivity =
           (SpamNotificationActivity) getActivity();
       final String number = getArguments().getString(CALL_INFO_KEY_PHONE_NUMBER);
-      final int contactLookupResultType =
-          getArguments().getInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, 0);
+      final ContactLookupResult.Type contactLookupResultType =
+          ContactLookupResult.Type.forNumber(
+              getArguments().getInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, 0));
       return new AlertDialog.Builder(getActivity())
           .setTitle(getString(R.string.non_spam_notification_title, getFormattedNumber(number)))
           .setCancelable(false)
diff --git a/java/com/android/incallui/spam/SpamNotificationService.java b/java/com/android/incallui/spam/SpamNotificationService.java
index bf107f7..dbea2cc 100644
--- a/java/com/android/incallui/spam/SpamNotificationService.java
+++ b/java/com/android/incallui/spam/SpamNotificationService.java
@@ -26,9 +26,10 @@
 import com.android.contacts.common.GeoUtil;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
-import com.android.dialer.logging.nano.ReportingLocation;
+import com.android.dialer.logging.ReportingLocation;
 import com.android.dialer.spam.Spam;
 import com.android.incallui.call.DialerCall;
 
@@ -81,7 +82,8 @@
     String number = intent.getStringExtra(EXTRA_PHONE_NUMBER);
     int notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, 1);
     String countryIso = GeoUtil.getCurrentCountryIso(this);
-    int contactLookupResultType = intent.getIntExtra(EXTRA_CONTACT_LOOKUP_RESULT_TYPE, 0);
+    ContactLookupResult.Type contactLookupResultType =
+        ContactLookupResult.Type.forNumber(intent.getIntExtra(EXTRA_CONTACT_LOOKUP_RESULT_TYPE, 0));
 
     ((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE))
         .cancel(number, notificationId);
@@ -110,6 +112,7 @@
                 ReportingLocation.Type.FEEDBACK_PROMPT,
                 contactLookupResultType);
         break;
+      default: // fall out
     }
     // TODO: call stopSelf() after async tasks complete (b/28441936)
     stopSelf();
@@ -122,7 +125,7 @@
     LogUtil.d(TAG, "onDestroy");
   }
 
-  private void logCallImpression(Intent intent, int impression) {
+  private void logCallImpression(Intent intent, DialerImpression.Type impression) {
     Logger.get(this)
         .logCallImpression(
             impression,
diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
index a652742..29aea14 100644
--- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
@@ -184,13 +184,7 @@
       LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
     LogUtil.i("SurfaceViewVideoCallFragment.onCreateView", null);
 
-    View view =
-        layoutInflater.inflate(
-            isLandscape()
-                ? R.layout.frag_videocall_land_surfaceview
-                : R.layout.frag_videocall_surfaceview,
-            viewGroup,
-            false);
+    View view = layoutInflater.inflate(R.layout.frag_videocall_surfaceview, viewGroup, false);
     contactGridManager =
         new ContactGridManager(view, null /* no avatar */, 0, false /* showAnonymousAvatar */);
 
@@ -639,12 +633,6 @@
         shouldShowPreview,
         shouldShowRemote);
 
-    if (this.shouldShowPreview == shouldShowPreview
-        && this.shouldShowRemote == shouldShowRemote
-        && this.isRemotelyHeld == isRemotelyHeld) {
-      return;
-    }
-
     this.shouldShowPreview = shouldShowPreview;
     this.shouldShowRemote = shouldShowRemote;
     this.isRemotelyHeld = isRemotelyHeld;
diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java
index 9605937..97d38cf 100644
--- a/java/com/android/incallui/video/impl/VideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/VideoCallFragment.java
@@ -1216,6 +1216,9 @@
     blurScript.setInput(allocationIn);
     blurScript.forEach(allocationOut);
     allocationOut.copyTo(image);
+    blurScript.destroy();
+    allocationIn.destroy();
+    allocationOut.destroy();
   }
 
   @Override
diff --git a/java/com/android/incallui/video/impl/res/layout-land/videocall_controls_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout-land/videocall_controls_surfaceview.xml
new file mode 100644
index 0000000..40b50bc
--- /dev/null
+++ b/java/com/android/incallui/video/impl/res/layout-land/videocall_controls_surfaceview.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<RelativeLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:id="@+id/videocall_video_controls_container"
+  android:fitsSystemWindows="true"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:orientation="vertical">
+
+  <include
+    android:id="@+id/incall_contact_grid"
+    layout="@layout/video_contact_grid"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="16dp"
+    android:layout_marginStart="24dp"
+    android:layout_marginEnd="24dp"/>
+
+  <!-- This placeholder matches the position of the preview UI and is used to
+     anchor video buttons. This is needed in greenscreen mode when the
+     preview is fullscreen but we want the controls to be positioned as
+     normal.  -->
+  <Space
+    android:id="@+id/videocall_video_preview_placeholder"
+    android:layout_width="@dimen/videocall_preview_long"
+    android:layout_height="@dimen/videocall_preview_height"
+    android:layout_marginEnd="@dimen/videocall_preview_margin_end"
+    android:layout_alignParentBottom="true"
+    android:layout_alignParentEnd="true"
+    android:visibility="invisible"/>
+
+  <LinearLayout
+    android:id="@+id/videocall_video_controls"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_alignBottom="@+id/videocall_video_preview_placeholder"
+    android:layout_alignTop="@+id/videocall_video_preview_placeholder"
+    android:layout_toStartOf="@+id/videocall_video_preview_placeholder"
+    android:gravity="center_horizontal"
+    android:orientation="horizontal"
+    android:visibility="invisible"
+    tools:visibility="visible">
+    <com.android.incallui.video.impl.CheckableImageButton
+      android:id="@+id/videocall_speaker_button"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginEnd="24dp"
+      android:checked="true"
+      android:src="@drawable/quantum_ic_volume_up_white_36"
+      app:contentDescriptionChecked="@string/incall_content_description_speaker"
+      app:contentDescriptionUnchecked="@string/incall_content_description_earpiece"
+      />
+    <com.android.incallui.video.impl.CheckableImageButton
+      android:id="@+id/videocall_mute_button"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginEnd="24dp"
+      android:scaleType="center"
+      android:src="@drawable/quantum_ic_mic_off_white_36"
+      app:contentDescriptionChecked="@string/incall_content_description_muted"
+      app:contentDescriptionUnchecked="@string/incall_content_description_unmuted"
+      />
+    <com.android.incallui.video.impl.CheckableImageButton
+      android:id="@+id/videocall_mute_video"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginEnd="24dp"
+      android:scaleType="center"
+      android:src="@drawable/quantum_ic_videocam_off_white_36"
+      app:contentDescriptionChecked="@string/incall_content_description_video_off"
+      app:contentDescriptionUnchecked="@string/incall_content_description_video_on"
+      />
+    <include
+      layout="@layout/switch_camera_button"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginEnd="24dp"/>
+  </LinearLayout>
+
+  <FrameLayout
+    android:id="@+id/videocall_switch_controls"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="36dp"
+    android:layout_marginEnd="36dp"
+    android:layout_alignParentEnd="true"
+    android:layout_alignParentTop="true">
+    <ImageButton
+      android:id="@+id/videocall_switch_on_hold"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:contentDescription="@string/incall_content_description_swap_calls"
+      android:src="@drawable/quantum_ic_swap_calls_white_36"
+      android:visibility="gone"
+      tools:visibility="visible"
+      />
+  </FrameLayout>
+
+  <ImageButton
+    android:id="@+id/videocall_end_call"
+    style="@style/Incall.Button.End"
+    android:layout_marginEnd="36dp"
+    android:layout_alignParentEnd="true"
+    android:layout_centerVertical="true"
+    android:contentDescription="@string/incall_content_description_end_call"
+    android:visibility="visible"/>
+
+</RelativeLayout>
diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_land_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_land_surfaceview.xml
deleted file mode 100644
index 4cafd68..0000000
--- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_land_surfaceview.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  xmlns:tools="http://schemas.android.com/tools"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="@android:color/black"
-  android:keepScreenOn="true">
-
-  <SurfaceView
-    android:id="@+id/videocall_video_remote"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:importantForAccessibility="no"/>
-
-  <TextView
-    android:gravity="center"
-    android:id="@+id/videocall_remote_video_off"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
-    android:drawablePadding="8dp"
-    android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
-    android:padding="64dp"
-    android:text="@string/videocall_remote_video_off"
-    android:textAppearance="@style/Dialer.Incall.TextAppearance"
-    android:visibility="gone"
-    tools:visibility="visible"/>
-
-  <View
-    android:id="@+id/videocall_fullscreen_background"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/videocall_overlay_background_color"/>
-
-  <FrameLayout
-    android:id="@+id/videocall_preview_root"
-    android:layout_width="@dimen/videocall_preview_width"
-    android:layout_height="@dimen/videocall_preview_height"
-    android:layout_marginBottom="@dimen/videocall_preview_margin_bottom"
-    android:layout_marginEnd="@dimen/videocall_preview_margin_end"
-    android:background="@android:color/black"
-    android:layout_gravity="bottom|end">
-
-    <SurfaceView
-      android:id="@+id/videocall_video_preview"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:importantForAccessibility="no"/>
-
-    <ImageView
-      android:id="@+id/videocall_video_preview_off_overlay"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center"
-      android:scaleType="center"
-      android:src="@drawable/quantum_ic_videocam_off_white_36"
-      android:visibility="gone"
-      android:importantForAccessibility="no"
-      tools:visibility="visible"/>
-
-    <ImageView
-      android:id="@+id/videocall_video_preview_mute_overlay"
-      android:layout_width="32dp"
-      android:layout_height="32dp"
-      android:layout_gravity="center"
-      android:background="@drawable/videocall_background_circle_white"
-      android:contentDescription="@string/incall_content_description_muted"
-      android:scaleType="center"
-      android:src="@drawable/quantum_ic_mic_off_black_24"
-      android:visibility="gone"
-      tools:visibility="visible"/>
-
-  </FrameLayout>
-
-  <View
-    android:id="@+id/videocall_green_screen_background"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/videocall_overlay_background_color"/>
-
-  <include
-    layout="@layout/videocall_controls_land"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"/>
-
-  <FrameLayout
-    android:id="@+id/videocall_on_hold_banner"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_alignParentTop="true"/>
-
-</FrameLayout>
diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
index fa4aaef..c672466 100644
--- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
+++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
@@ -1,10 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="@android:color/black"
-  android:orientation="vertical"
   android:keepScreenOn="true">
 
   <SurfaceView
@@ -33,17 +47,11 @@
     android:id="@+id/videocall_fullscreen_background"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/videocall_overlay_background_color"
-    tools:visibility="gone"/>
+    android:background="@color/videocall_overlay_background_color"/>
 
   <FrameLayout
-    android:id="@+id/videocall_preview_root"
-    android:layout_width="@dimen/videocall_preview_width"
-    android:layout_height="@dimen/videocall_preview_height"
-    android:layout_marginBottom="@dimen/videocall_preview_margin_bottom"
-    android:layout_marginStart="@dimen/videocall_preview_margin_start"
-    android:background="@android:color/black"
-    android:layout_gravity="bottom|start">
+    style="@style/VideoPreviewHolder"
+    android:id="@+id/videocall_preview_root">
 
     <SurfaceView
       android:id="@+id/videocall_video_preview"
@@ -81,11 +89,10 @@
     android:id="@+id/videocall_green_screen_background"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/videocall_overlay_background_color"
-    tools:visibility="gone"/>
+    android:background="@color/videocall_overlay_background_color"/>
 
   <include
-    layout="@layout/videocall_controls"
+    layout="@layout/videocall_controls_surfaceview"
     android:layout_width="match_parent"
     android:layout_height="match_parent"/>
 
diff --git a/java/com/android/incallui/video/impl/res/layout/videocall_controls_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/videocall_controls_surfaceview.xml
new file mode 100644
index 0000000..d2dc992
--- /dev/null
+++ b/java/com/android/incallui/video/impl/res/layout/videocall_controls_surfaceview.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 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
+  -->
+<RelativeLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:id="@+id/videocall_video_controls_container"
+  android:fitsSystemWindows="true"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:orientation="vertical">
+
+  <include
+    android:id="@+id/incall_contact_grid"
+    layout="@layout/video_contact_grid"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="16dp"
+    android:layout_marginStart="24dp"
+    android:layout_marginEnd="24dp"/>
+
+  <!-- This placeholder matches the position of the preview UI and is used to
+     anchor video buttons. This is needed in greenscreen mode when the
+     preview is fullscreen but we want the controls to be positioned as
+     normal.  -->
+  <Space
+    android:id="@+id/videocall_video_preview_placeholder"
+    android:layout_width="@dimen/videocall_preview_width"
+    android:layout_height="@dimen/videocall_preview_long"
+    android:layout_marginBottom="@dimen/videocall_preview_margin_bottom"
+    android:layout_marginStart="@dimen/videocall_preview_margin_start"
+    android:layout_alignParentBottom="true"
+    android:layout_alignParentStart="true"
+    android:visibility="invisible"/>
+
+  <LinearLayout
+    android:id="@+id/videocall_video_controls"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_above="@+id/videocall_video_preview_placeholder"
+    android:layout_alignEnd="@+id/videocall_video_preview_placeholder"
+    android:layout_alignStart="@+id/videocall_video_preview_placeholder"
+    android:gravity="center_horizontal"
+    android:orientation="vertical"
+    android:visibility="invisible"
+    tools:visibility="visible">
+    <com.android.incallui.video.impl.CheckableImageButton
+      android:id="@+id/videocall_speaker_button"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginBottom="@dimen/videocall_button_spacing"
+      android:checked="true"
+      android:src="@drawable/quantum_ic_volume_up_white_36"
+      app:contentDescriptionChecked="@string/incall_content_description_speaker"
+      app:contentDescriptionUnchecked="@string/incall_content_description_earpiece"
+      />
+    <com.android.incallui.video.impl.CheckableImageButton
+      android:id="@+id/videocall_mute_button"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginBottom="@dimen/videocall_button_spacing"
+      android:scaleType="center"
+      android:src="@drawable/quantum_ic_mic_off_white_36"
+      app:contentDescriptionChecked="@string/incall_content_description_muted"
+      app:contentDescriptionUnchecked="@string/incall_content_description_unmuted"
+      />
+    <com.android.incallui.video.impl.CheckableImageButton
+      android:id="@+id/videocall_mute_video"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginBottom="@dimen/videocall_button_spacing"
+      android:scaleType="center"
+      android:src="@drawable/quantum_ic_videocam_off_white_36"
+      app:contentDescriptionChecked="@string/incall_content_description_video_off"
+      app:contentDescriptionUnchecked="@string/incall_content_description_video_on"
+      />
+    <include
+      layout="@layout/switch_camera_button"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:layout_marginBottom="@dimen/videocall_button_spacing"/>
+  </LinearLayout>
+
+  <FrameLayout
+    android:id="@+id/videocall_switch_controls"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginBottom="36dp"
+    android:layout_marginEnd="24dp"
+    android:layout_alignParentBottom="true"
+    android:layout_alignParentEnd="true">
+    <ImageButton
+      android:id="@+id/videocall_switch_on_hold"
+      style="@style/Incall.Button.VideoCall"
+      android:layout_width="@dimen/videocall_button_size"
+      android:layout_height="@dimen/videocall_button_size"
+      android:contentDescription="@string/incall_content_description_swap_calls"
+      android:src="@drawable/quantum_ic_swap_calls_white_36"
+      android:visibility="gone"
+      tools:visibility="visible"
+      />
+  </FrameLayout>
+
+  <ImageButton
+    android:id="@+id/videocall_end_call"
+    style="@style/Incall.Button.End"
+    android:layout_marginBottom="36dp"
+    android:layout_alignParentBottom="true"
+    android:layout_centerHorizontal="true"
+    android:contentDescription="@string/incall_content_description_end_call"
+    android:visibility="visible"/>
+
+</RelativeLayout>
diff --git a/java/com/android/incallui/video/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/video/impl/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..5381ecc
--- /dev/null
+++ b/java/com/android/incallui/video/impl/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="videocall_remote_video_off" msgid="2959680546745902547">"Video je isključen"</string>
+    <string name="videocall_remote_video_on" msgid="6011817851703181639">"Kamera ove osobe je uključena"</string>
+    <string name="videocall_remotely_held" msgid="1295702896355732947">"Poziv je na čekanju"</string>
+    <string name="videocall_remotely_resumed" msgid="3331784411244773788">"Poziv je nastavljen"</string>
+    <string name="camera_permission_dialog_title" msgid="4901760354830982117">"Želite da dozvolite video?"</string>
+    <string name="camera_permission_dialog_message" msgid="2677490854794162699">"Aplikacija Telefon želi da koristi vašu kameru za video pozive."</string>
+    <string name="camera_permission_dialog_positive_button" msgid="9075818030671161374">"Dozvoli"</string>
+    <string name="camera_permission_dialog_negative_button" msgid="7538535842403837541">"Odbij"</string>
+</resources>
diff --git a/java/com/android/incallui/video/impl/res/values-h580dp-land/dimens.xml b/java/com/android/incallui/video/impl/res/values-h580dp-land/dimens.xml
new file mode 100644
index 0000000..ac2d031
--- /dev/null
+++ b/java/com/android/incallui/video/impl/res/values-h580dp-land/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+  <dimen name="videocall_preview_long">116dp</dimen>
+</resources>
diff --git a/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml b/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml
index b1a86a0..a53fb64 100644
--- a/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml
+++ b/java/com/android/incallui/video/impl/res/values-h580dp/dimens.xml
@@ -1,7 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
 <resources>
   <dimen name="videocall_button_spacing">16dp</dimen>
   <dimen name="videocall_button_size">72dp</dimen>
   <dimen name="videocall_preview_width">88dp</dimen>
   <dimen name="videocall_preview_height">88dp</dimen>
+  <dimen name="videocall_preview_long">104dp</dimen>
 </resources>
diff --git a/java/com/android/incallui/video/impl/res/values-land/dimens.xml b/java/com/android/incallui/video/impl/res/values-land/dimens.xml
new file mode 100644
index 0000000..6485735
--- /dev/null
+++ b/java/com/android/incallui/video/impl/res/values-land/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+  <dimen name="videocall_preview_long">92dp</dimen>
+</resources>
diff --git a/java/com/android/incallui/video/impl/res/values-land/styles.xml b/java/com/android/incallui/video/impl/res/values-land/styles.xml
new file mode 100644
index 0000000..a809708
--- /dev/null
+++ b/java/com/android/incallui/video/impl/res/values-land/styles.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+  <style name="VideoPreviewHolder">
+    <item name="android:layout_gravity">bottom|end</item>
+    <item name="android:layout_width">@dimen/videocall_preview_long</item>
+    <item name="android:layout_height">@dimen/videocall_preview_height</item>
+    <item name="android:layout_marginBottom">@dimen/videocall_preview_margin_bottom</item>
+    <item name="android:layout_marginEnd">@dimen/videocall_preview_margin_end</item>
+    <item name="android:background">@android:color/black</item>
+  </style>
+</resources>
diff --git a/java/com/android/incallui/video/impl/res/values-w460dp-land/dimens.xml b/java/com/android/incallui/video/impl/res/values-w460dp-land/dimens.xml
new file mode 100644
index 0000000..ac2d031
--- /dev/null
+++ b/java/com/android/incallui/video/impl/res/values-w460dp-land/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+  <dimen name="videocall_preview_long">116dp</dimen>
+</resources>
diff --git a/java/com/android/incallui/video/impl/res/values-w460dp/dimens.xml b/java/com/android/incallui/video/impl/res/values-w460dp/dimens.xml
index b1a86a0..a53fb64 100644
--- a/java/com/android/incallui/video/impl/res/values-w460dp/dimens.xml
+++ b/java/com/android/incallui/video/impl/res/values-w460dp/dimens.xml
@@ -1,7 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
 <resources>
   <dimen name="videocall_button_spacing">16dp</dimen>
   <dimen name="videocall_button_size">72dp</dimen>
   <dimen name="videocall_preview_width">88dp</dimen>
   <dimen name="videocall_preview_height">88dp</dimen>
+  <dimen name="videocall_preview_long">104dp</dimen>
 </resources>
diff --git a/java/com/android/incallui/video/impl/res/values/dimens.xml b/java/com/android/incallui/video/impl/res/values/dimens.xml
index 4586003..aa08c9d 100644
--- a/java/com/android/incallui/video/impl/res/values/dimens.xml
+++ b/java/com/android/incallui/video/impl/res/values/dimens.xml
@@ -1,7 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
 <resources>
   <dimen name="videocall_preview_width">72dp</dimen>
   <dimen name="videocall_preview_height">72dp</dimen>
+  <dimen name="videocall_preview_long">84dp</dimen>
   <dimen name="videocall_preview_margin_bottom">24dp</dimen>
   <dimen name="videocall_preview_margin_start">24dp</dimen>
   <dimen name="videocall_preview_margin_end">24dp</dimen>
diff --git a/java/com/android/incallui/video/impl/res/values/styles.xml b/java/com/android/incallui/video/impl/res/values/styles.xml
index b944008..f73075f 100644
--- a/java/com/android/incallui/video/impl/res/values/styles.xml
+++ b/java/com/android/incallui/video/impl/res/values/styles.xml
@@ -1,6 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
 <resources>
-
   <style name="Incall.Button.VideoCall" parent="Widget.AppCompat.ImageButton">
     <item name="android:background">@drawable/videocall_video_button_background</item>
     <item name="android:scaleType">center</item>
@@ -8,4 +22,12 @@
     <item name="android:tintMode">src_atop</item>
     <item name="android:stateListAnimator">@animator/disabled_alpha</item>
   </style>
+  <style name="VideoPreviewHolder">
+    <item name="android:layout_gravity">bottom|start</item>
+    <item name="android:layout_width">@dimen/videocall_preview_width</item>
+    <item name="android:layout_height">@dimen/videocall_preview_long</item>
+    <item name="android:layout_marginBottom">@dimen/videocall_preview_margin_bottom</item>
+    <item name="android:layout_marginStart">@dimen/videocall_preview_margin_start</item>
+    <item name="android:background">@android:color/black</item>
+  </style>
 </resources>
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 39998ad..7da74c0 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -78,5 +78,7 @@
     void onPeerDimensionsChanged(int width, int height);
 
     void onVideoUpgradeRequestReceived();
+
+    void onUpgradedToVideo(boolean switchToSpeaker);
   }
 }
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
index 9b5222e..17c2e65 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
@@ -24,6 +24,8 @@
 import android.telecom.VideoProfile;
 import android.telecom.VideoProfile.CameraCapabilities;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.LoggingBindings;
 import com.android.incallui.videotech.VideoTech.VideoTechListener;
 import com.android.incallui.videotech.utils.SessionModificationState;
 
@@ -31,12 +33,18 @@
 public class ImsVideoCallCallback extends VideoCall.Callback {
   private static final int CLEAR_FAILED_REQUEST_TIMEOUT_MILLIS = 4000;
   private final Handler handler = new Handler();
+  private final LoggingBindings logger;
   private final Call call;
   private final ImsVideoTech videoTech;
   private final VideoTechListener listener;
   private int requestedVideoState = VideoProfile.STATE_AUDIO_ONLY;
 
-  ImsVideoCallCallback(final Call call, ImsVideoTech videoTech, VideoTechListener listener) {
+  ImsVideoCallCallback(
+      final LoggingBindings logger,
+      final Call call,
+      ImsVideoTech videoTech,
+      VideoTechListener listener) {
+    this.logger = logger;
     this.call = call;
     this.videoTech = videoTech;
     this.listener = listener;
@@ -61,6 +69,7 @@
       videoTech.setSessionModificationState(
           SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST);
       listener.onVideoUpgradeRequestReceived();
+      logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_RECEIVED);
     }
   }
 
@@ -87,7 +96,10 @@
       handler.removeCallbacksAndMessages(null); // Clear everything
 
       final int newSessionModificationState = getSessionModificationStateFromTelecomStatus(status);
-      if (status != VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS) {
+      if (status == VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS) {
+        // Telecom manages audio route for us
+        listener.onUpgradedToVideo(false /* switchToSpeaker */);
+      } else {
         // This will update the video UI to display the error message.
         videoTech.setSessionModificationState(newSessionModificationState);
       }
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 66a7af5..40fdc6f 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -23,6 +23,8 @@
 import android.telecom.VideoProfile;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.LoggingBindings;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
 import com.android.incallui.videotech.VideoTech;
@@ -30,6 +32,7 @@
 
 /** ViLTE implementation */
 public class ImsVideoTech implements VideoTech {
+  private final LoggingBindings logger;
   private final Call call;
   private final VideoTechListener listener;
   private ImsVideoCallCallback callback;
@@ -37,7 +40,8 @@
       SessionModificationState.NO_REQUEST;
   private int previousVideoState = VideoProfile.STATE_AUDIO_ONLY;
 
-  public ImsVideoTech(VideoTechListener listener, Call call) {
+  public ImsVideoTech(LoggingBindings logger, VideoTechListener listener, Call call) {
+    this.logger = logger;
     this.listener = listener;
     this.call = call;
   }
@@ -87,7 +91,7 @@
     }
 
     if (callback == null) {
-      callback = new ImsVideoCallCallback(call, this, listener);
+      callback = new ImsVideoCallCallback(logger, call, this, listener);
       call.getVideoCall().registerCallback(callback);
     }
 
@@ -137,6 +141,7 @@
         .sendSessionModifyRequest(
             new VideoProfile(unpausedVideoState | VideoProfile.STATE_BIDIRECTIONAL));
     setSessionModificationState(SessionModificationState.WAITING_FOR_UPGRADE_TO_VIDEO_RESPONSE);
+    logger.logImpression(DialerImpression.Type.IMS_VIDEO_UPGRADE_REQUESTED);
   }
 
   @Override
@@ -146,6 +151,9 @@
     LogUtil.i("ImsVideoTech.acceptUpgradeRequest", "videoState: " + requestedVideoState);
     call.getVideoCall().sendSessionModifyResponse(new VideoProfile(requestedVideoState));
     setSessionModificationState(SessionModificationState.NO_REQUEST);
+    // Telecom manages audio route for us
+    listener.onUpgradedToVideo(false /* switchToSpeaker */);
+    logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_ACCEPTED);
   }
 
   @Override
@@ -153,6 +161,7 @@
     LogUtil.enterBlock("ImsVideoTech.acceptVideoRequestAsAudio");
     call.getVideoCall().sendSessionModifyResponse(new VideoProfile(VideoProfile.STATE_AUDIO_ONLY));
     setSessionModificationState(SessionModificationState.NO_REQUEST);
+    logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_ACCEPTED_AS_AUDIO);
   }
 
   @Override
@@ -161,6 +170,7 @@
     call.getVideoCall()
         .sendSessionModifyResponse(new VideoProfile(call.getDetails().getVideoState()));
     setSessionModificationState(SessionModificationState.NO_REQUEST);
+    logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_DECLINED);
   }
 
   @Override
@@ -172,20 +182,18 @@
   public void stopTransmission() {
     LogUtil.enterBlock("ImsVideoTech.stopTransmission");
 
-    int unpausedVideoState = getUnpausedVideoState(call.getDetails().getVideoState());
     call.getVideoCall()
         .sendSessionModifyRequest(
-            new VideoProfile(unpausedVideoState & ~VideoProfile.STATE_TX_ENABLED));
+            new VideoProfile(call.getDetails().getVideoState() & ~VideoProfile.STATE_TX_ENABLED));
   }
 
   @Override
   public void resumeTransmission() {
     LogUtil.enterBlock("ImsVideoTech.resumeTransmission");
 
-    int unpausedVideoState = getUnpausedVideoState(call.getDetails().getVideoState());
     call.getVideoCall()
         .sendSessionModifyRequest(
-            new VideoProfile(unpausedVideoState | VideoProfile.STATE_TX_ENABLED));
+            new VideoProfile(call.getDetails().getVideoState() | VideoProfile.STATE_TX_ENABLED));
     setSessionModificationState(SessionModificationState.WAITING_FOR_RESPONSE);
   }
 
diff --git a/java/com/android/incallui/wifi/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/wifi/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..51a57e4
--- /dev/null
+++ b/java/com/android/incallui/wifi/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_enable_wifi_calling_button" msgid="2741166159276797490">"Omogući"</string>
+</resources>
diff --git a/java/com/android/voicemail/VoicemailClient.java b/java/com/android/voicemail/VoicemailClient.java
index 7482338..97b824b 100644
--- a/java/com/android/voicemail/VoicemailClient.java
+++ b/java/com/android/voicemail/VoicemailClient.java
@@ -39,12 +39,34 @@
    * android.content.Intent#ACTION_PROVIDER_CHANGED} will always be a self-change even if the UI is
    * external to the client.
    */
-  String ACTION_UPLOAD = "com.android.voicemailomtp.VoicemailClient.ACTION_UPLOAD";
+  String ACTION_UPLOAD = "com.android.voicemail.VoicemailClient.ACTION_UPLOAD";
 
   /** Common key for passing {@link PhoneAccountHandle} in bundles. */
   String PARAM_PHONE_ACCOUNT_HANDLE = "phone_account_handle";
 
   /**
+   * Broadcast from the client to inform the app to show a legacy voicemail notification. This
+   * broadcast is same as {@link TelephonyManager#ACTION_SHOW_VOICEMAIL_NOTIFICATION}.
+   */
+  String ACTION_SHOW_LEGACY_VOICEMAIL =
+      "com.android.voicemail.VoicemailClient.ACTION_SHOW_LEGACY_VOICEMAIL";
+
+  /**
+   * Whether the visual voicemail service is enabled for the {@code phoneAccountHandle}. "Enable"
+   * means the user "wants" to have this service on, and does not mean the service is actually
+   * functional(For example, the service is blocked on the carrier side. The service will be
+   * "enabled" but all it will do is show the error).
+   */
+  boolean isVoicemailEnabled(Context context, PhoneAccountHandle phoneAccountHandle);
+
+  /**
+   * Enable or disable visual voicemail service for the {@code phoneAccountHandle}. Setting to
+   * enabled will initiate provisioning and activation. Setting to disabled will initiate
+   * deactivation.
+   */
+  void setVoicemailEnabled(Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled);
+
+  /**
    * Appends the selection to ignore voicemails from non-active OMTP voicemail package. In OC there
    * can be multiple packages handling OMTP voicemails which represents the same source of truth.
    * These packages should mark their voicemails as {@link Voicemails#IS_OMTP_VOICEMAIL} and only
@@ -92,4 +114,12 @@
    *     when calling into the mailbox.
    */
   Intent getSetPinIntent(Context context, PhoneAccountHandle phoneAccountHandle);
+
+  /**
+   * Whether the client is activated and handling visual voicemail for the {@code
+   * phoneAccountHandle}. "Enable" is the intention to use VVM. For example VVM can be enabled but
+   * prevented from working because the carrier blocked it, or a connection problem is blocking the
+   * provisioning. Being "activated" means all setup are completed, and VVM is expected to work.
+   */
+  boolean isActivated(Context context, PhoneAccountHandle phoneAccountHandle);
 }
diff --git a/java/com/android/voicemail/VoicemailPermissionHelper.java b/java/com/android/voicemail/VoicemailPermissionHelper.java
new file mode 100644
index 0000000..1a09d45
--- /dev/null
+++ b/java/com/android/voicemail/VoicemailPermissionHelper.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2017 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 com.android.voicemail;
+
+import android.Manifest.permission;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.support.annotation.NonNull;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Handles permission checking for the voicemail module. Currently "phone" and "sms" permissions are
+ * required.
+ */
+public class VoicemailPermissionHelper {
+
+  /** *_VOICEMAIL permissions are auto-granted by being the default dialer. */
+  private static final String[] VOICEMAIL_PERMISSIONS = {
+    permission.ADD_VOICEMAIL,
+    permission.WRITE_VOICEMAIL,
+    permission.READ_VOICEMAIL,
+    permission.READ_PHONE_STATE,
+    permission.SEND_SMS
+  };
+
+  /**
+   * Returns {@code true} if the app has all permissions required for the voicemail module to
+   * operate.
+   */
+  public static boolean hasPermissions(Context context) {
+    return getMissingPermissions(context).isEmpty();
+  }
+
+  /** Returns a list of permission that is missing for the voicemail module to operate. */
+  @NonNull
+  public static List<String> getMissingPermissions(Context context) {
+    List<String> result = new ArrayList<>();
+    for (String permission : VOICEMAIL_PERMISSIONS) {
+      if (context.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
+        result.add(permission);
+      }
+    }
+    return result;
+  }
+}
diff --git a/java/com/android/voicemail/impl/ActivationTask.java b/java/com/android/voicemail/impl/ActivationTask.java
index c53d3c7..b0ad3ba 100644
--- a/java/com/android/voicemail/impl/ActivationTask.java
+++ b/java/com/android/voicemail/impl/ActivationTask.java
@@ -29,8 +29,8 @@
 import android.telecom.PhoneAccountHandle;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.protocol.VisualVoicemailProtocol;
 import com.android.voicemail.impl.scheduling.BaseTask;
 import com.android.voicemail.impl.scheduling.RetryPolicy;
@@ -40,6 +40,7 @@
 import com.android.voicemail.impl.sync.OmtpVvmSyncService;
 import com.android.voicemail.impl.sync.SyncTask;
 import com.android.voicemail.impl.sync.VvmAccountManager;
+import com.android.voicemail.impl.utils.LoggerUtils;
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
@@ -55,6 +56,7 @@
  * spontaneously sent a STATUS SMS.
  */
 @TargetApi(VERSION_CODES.O)
+@UsedByReflection(value = "Tasks.java")
 public class ActivationTask extends BaseTask {
 
   private static final String TAG = "VvmActivationTask";
@@ -107,14 +109,15 @@
   }
 
   @Override
-  public void onCreate(Context context, Intent intent, int flags, int startId) {
-    super.onCreate(context, intent, flags, startId);
-    mMessageData = intent.getParcelableExtra(EXTRA_MESSAGE_DATA_BUNDLE);
+  public void onCreate(Context context, Bundle extras) {
+    super.onCreate(context, extras);
+    mMessageData = extras.getParcelable(EXTRA_MESSAGE_DATA_BUNDLE);
   }
 
   @Override
   public Intent createRestartIntent() {
-    Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_AUTO_RETRY_ACTIVATION);
+    LoggerUtils.logImpressionOnMainThread(
+        getContext(), DialerImpression.Type.VVM_AUTO_RETRY_ACTIVATION);
     Intent intent = super.createRestartIntent();
     // mMessageData is discarded, request a fresh STATUS SMS for retries.
     return intent;
@@ -124,7 +127,8 @@
   @WorkerThread
   public void onExecuteInBackgroundThread() {
     Assert.isNotMainThread();
-    Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_ACTIVATION_STARTED);
+    LoggerUtils.logImpressionOnMainThread(
+        getContext(), DialerImpression.Type.VVM_ACTIVATION_STARTED);
     PhoneAccountHandle phoneAccountHandle = getPhoneAccountHandle();
     if (phoneAccountHandle == null) {
       // This should never happen
@@ -234,7 +238,8 @@
         helper.handleEvent(status, OmtpEvents.CONFIG_SERVICE_NOT_AVAILABLE);
       }
     }
-    Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_ACTIVATION_COMPLETED);
+    LoggerUtils.logImpressionOnMainThread(
+        getContext(), DialerImpression.Type.VVM_ACTIVATION_COMPLETED);
   }
 
   public static void updateSource(
diff --git a/java/com/android/voicemail/impl/AndroidManifest.xml b/java/com/android/voicemail/impl/AndroidManifest.xml
index 97e3973..47a4b2d 100644
--- a/java/com/android/voicemail/impl/AndroidManifest.xml
+++ b/java/com/android/voicemail/impl/AndroidManifest.xml
@@ -80,6 +80,16 @@
       android:name="com.android.voicemail.impl.scheduling.TaskSchedulerService"
       android:exported="false"/>
 
+    <service
+        android:name="com.android.voicemail.impl.scheduling.TaskSchedulerJobService"
+        android:permission="android.permission.BIND_JOB_SERVICE"
+        android:exported="false"/>
+
+    <service
+        android:name="com.android.voicemail.impl.StatusCheckJobService"
+        android:permission="android.permission.BIND_JOB_SERVICE"
+        android:exported="false"/>
+
     <receiver android:name="com.android.voicemail.impl.OmtpReceiver"
       android:exported="true">
       <intent-filter>
@@ -92,5 +102,21 @@
       android:exported="false"
       android:windowSoftInputMode="stateVisible|adjustResize">
     </activity>
+
+    <receiver android:name="com.android.voicemail.impl.VoicemailBootReceiver"
+      android:exported="false">
+      <intent-filter>
+        <action android:name="android.intent.action.BOOT_COMPLETED" />
+      </intent-filter>
+    </receiver>
+
+    <receiver android:name="com.android.voicemail.impl.VvmPackageInstallReceiver">
+      <intent-filter>
+        <!-- New O broadcast, can be received in background. Only applies to installation and not
+           updates -->
+        <action android:name="android.intent.action.PACKAGE_FIRST_ADDED" />
+        <data android:scheme="package"/>
+      </intent-filter>
+    </receiver>
   </application>
 </manifest>
diff --git a/java/com/android/voicemail/impl/OmtpReceiver.java b/java/com/android/voicemail/impl/OmtpReceiver.java
index 239a544..9baf954 100644
--- a/java/com/android/voicemail/impl/OmtpReceiver.java
+++ b/java/com/android/voicemail/impl/OmtpReceiver.java
@@ -24,8 +24,8 @@
 import android.telecom.PhoneAccountHandle;
 import android.telephony.VisualVoicemailSms;
 import com.android.dialer.common.Assert;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 import com.android.voicemail.impl.sync.VvmAccountManager;
diff --git a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
index 095f00b..2f1df09 100644
--- a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
+++ b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
@@ -336,9 +336,11 @@
 
   public void startDeactivation() {
     Assert.checkArgument(isValid());
+    VvmLog.i(TAG, "startDeactivation");
     if (!isLegacyModeEnabled()) {
       // SMS should still be filtered in legacy mode
       VisualVoicemailService.setSmsFilterSettings(mContext, getPhoneAccountHandle(), null);
+      VvmLog.i(TAG, "filter disabled");
     }
     if (mProtocol != null) {
       mProtocol.startDeactivation(this);
diff --git a/java/com/android/voicemail/impl/StatusCheckJobService.java b/java/com/android/voicemail/impl/StatusCheckJobService.java
new file mode 100644
index 0000000..870c5b4
--- /dev/null
+++ b/java/com/android/voicemail/impl/StatusCheckJobService.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * <p>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
+ *
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * <p>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 com.android.voicemail.impl;
+
+import android.annotation.TargetApi;
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.os.Build.VERSION_CODES;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import com.android.dialer.constants.ScheduledJobIds;
+import com.android.voicemail.impl.sync.VvmAccountManager;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * A job to perform {@link StatusCheckTask} once per day, performing book keeping to ensure the
+ * credentials and status for a activated voicemail account is still correct. A task will be
+ * scheduled for each active voicemail account. The status is expected to be always in sync, the
+ * check is a failsafe to mimic the previous status check on signal return behavior.
+ */
+@TargetApi(VERSION_CODES.O)
+public class StatusCheckJobService extends JobService {
+
+  public static void schedule(Context context) {
+    JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
+    if (jobScheduler.getPendingJob(ScheduledJobIds.VVM_STATUS_CHECK_JOB) != null) {
+      VvmLog.i("StatusCheckJobService.schedule", "job already scheduled");
+      return;
+    }
+
+    jobScheduler.schedule(
+        new JobInfo.Builder(
+                ScheduledJobIds.VVM_STATUS_CHECK_JOB,
+                new ComponentName(context, StatusCheckJobService.class))
+            .setPeriodic(TimeUnit.DAYS.toMillis(1))
+            .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
+            .setRequiresCharging(true)
+            .build());
+  }
+
+  @Override
+  public boolean onStartJob(JobParameters params) {
+    for (PhoneAccountHandle phoneAccountHandle :
+        getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
+      if (VvmAccountManager.isAccountActivated(this, phoneAccountHandle)) {
+        StatusCheckTask.start(this, phoneAccountHandle);
+      }
+    }
+    return false; // not running in background
+  }
+
+  @Override
+  public boolean onStopJob(JobParameters params) {
+    return false; // don't retry
+  }
+}
diff --git a/java/com/android/voicemail/impl/StatusCheckTask.java b/java/com/android/voicemail/impl/StatusCheckTask.java
new file mode 100644
index 0000000..7699e98
--- /dev/null
+++ b/java/com/android/voicemail/impl/StatusCheckTask.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * <p>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
+ *
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * <p>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 com.android.voicemail.impl;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build.VERSION_CODES;
+import android.os.Bundle;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.proguard.UsedByReflection;
+import com.android.voicemail.impl.scheduling.BaseTask;
+import com.android.voicemail.impl.sms.StatusMessage;
+import com.android.voicemail.impl.sms.StatusSmsFetcher;
+import com.android.voicemail.impl.sync.VvmAccountManager;
+import com.android.voicemail.impl.utils.LoggerUtils;
+import java.io.IOException;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Task to verify the account status is still correct. This task is only for book keeping so any
+ * error is ignored and will not retry. If the provision status sent by the carrier is "ready" the
+ * access credentials will be updated (although it is not expected to change without the carrier
+ * actively sending out an STATUS SMS which will be handled by {@link
+ * com.android.voicemail.impl.sms.OmtpMessageReceiver}). If the provisioning status is not ready an
+ * {@link ActivationTask} will be launched to attempt to correct it.
+ */
+@TargetApi(VERSION_CODES.O)
+@UsedByReflection(value = "Tasks.java")
+public class StatusCheckTask extends BaseTask {
+
+  public StatusCheckTask() {
+    super(TASK_STATUS_CHECK);
+  }
+
+  public static void start(Context context, PhoneAccountHandle phoneAccountHandle) {
+    Intent intent = BaseTask.createIntent(context, StatusCheckTask.class, phoneAccountHandle);
+    context.startService(intent);
+  }
+
+  @Override
+  public void onExecuteInBackgroundThread() {
+    TelephonyManager telephonyManager =
+        getContext()
+            .getSystemService(TelephonyManager.class)
+            .createForPhoneAccountHandle(getPhoneAccountHandle());
+
+    if (telephonyManager == null) {
+      VvmLog.w(
+          "StatusCheckTask.onExecuteInBackgroundThread",
+          getPhoneAccountHandle() + " no longer valid");
+      return;
+    }
+    if (telephonyManager.getServiceState().getState() != ServiceState.STATE_IN_SERVICE) {
+      VvmLog.i(
+          "StatusCheckTask.onExecuteInBackgroundThread",
+          getPhoneAccountHandle() + " not in service");
+      return;
+    }
+    OmtpVvmCarrierConfigHelper config =
+        new OmtpVvmCarrierConfigHelper(getContext(), getPhoneAccountHandle());
+    if (!config.isValid()) {
+      VvmLog.e(
+          "StatusCheckTask.onExecuteInBackgroundThread",
+          "config no longer valid for " + getPhoneAccountHandle());
+      VvmAccountManager.removeAccount(getContext(), getPhoneAccountHandle());
+      return;
+    }
+
+    Bundle data;
+    try (StatusSmsFetcher fetcher = new StatusSmsFetcher(getContext(), getPhoneAccountHandle())) {
+      config.getProtocol().requestStatus(config, fetcher.getSentIntent());
+      // Both the fetcher and OmtpMessageReceiver will be triggered, but
+      // OmtpMessageReceiver will just route the SMS back to ActivationTask, which will be
+      // rejected because the task is still running.
+      data = fetcher.get();
+    } catch (TimeoutException e) {
+      VvmLog.e("StatusCheckTask.onExecuteInBackgroundThread", "timeout requesting status");
+      return;
+    } catch (CancellationException e) {
+      VvmLog.e("StatusCheckTask.onExecuteInBackgroundThread", "Unable to send status request SMS");
+      return;
+    } catch (InterruptedException | ExecutionException | IOException e) {
+      VvmLog.e("StatusCheckTask.onExecuteInBackgroundThread", "can't get future STATUS SMS", e);
+      return;
+    }
+
+    StatusMessage message = new StatusMessage(data);
+    VvmLog.i(
+        "StatusCheckTask.onExecuteInBackgroundThread",
+        "STATUS SMS received: st="
+            + message.getProvisioningStatus()
+            + ", rc="
+            + message.getReturnCode());
+    if (message.getProvisioningStatus().equals(OmtpConstants.SUBSCRIBER_READY)) {
+      VvmLog.i(
+          "StatusCheckTask.onExecuteInBackgroundThread",
+          "subscriber ready, no activation required");
+      LoggerUtils.logImpressionOnMainThread(
+          getContext(), DialerImpression.Type.VVM_STATUS_CHECK_READY);
+      VvmAccountManager.addAccount(getContext(), getPhoneAccountHandle(), message);
+    } else {
+      VvmLog.i(
+          "StatusCheckTask.onExecuteInBackgroundThread",
+          "subscriber not ready, attempting reactivation");
+      VvmAccountManager.removeAccount(getContext(), getPhoneAccountHandle());
+      LoggerUtils.logImpressionOnMainThread(
+          getContext(), DialerImpression.Type.VVM_STATUS_CHECK_REACTIVATION);
+      ActivationTask.start(getContext(), getPhoneAccountHandle(), data);
+    }
+  }
+}
diff --git a/java/com/android/voicemail/impl/VoicemailBootReceiver.java b/java/com/android/voicemail/impl/VoicemailBootReceiver.java
new file mode 100644
index 0000000..0a3e61a
--- /dev/null
+++ b/java/com/android/voicemail/impl/VoicemailBootReceiver.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * <p>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
+ *
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * <p>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 com.android.voicemail.impl;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import com.android.voicemail.VoicemailComponent;
+
+/** Receives {@link Intent#ACTION_BOOT_COMPLETED} for the voicemail module. */
+public class VoicemailBootReceiver extends BroadcastReceiver {
+
+  @Override
+  public void onReceive(Context context, Intent intent) {
+    if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
+      return;
+    }
+    StatusCheckJobService.schedule(context);
+  }
+}
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 31a1279..7747b24 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -31,6 +31,7 @@
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 import com.android.voicemail.impl.settings.VoicemailChangePinActivity;
 import com.android.voicemail.impl.settings.VoicemailSettingsFragment;
+import com.android.voicemail.impl.sync.VvmAccountManager;
 import java.util.List;
 import javax.inject.Inject;
 
@@ -67,6 +68,17 @@
     return true;
   }
 
+  @Override
+  public boolean isVoicemailEnabled(Context context, PhoneAccountHandle phoneAccountHandle) {
+    return VisualVoicemailSettingsUtil.isEnabled(context, phoneAccountHandle);
+  }
+
+  @Override
+  public void setVoicemailEnabled(
+      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled) {
+    VisualVoicemailSettingsUtil.setEnabled(context, phoneAccountHandle, enabled);
+  }
+
   @Nullable
   @Override
   public String getSettingsFragment() {
@@ -85,7 +97,7 @@
       return false;
     }
 
-    if (!ConfigProviderBindings.get(context).getBoolean(ALLOW_VOICEMAIL_ARCHIVE, true)) {
+    if (!ConfigProviderBindings.get(context).getBoolean(ALLOW_VOICEMAIL_ARCHIVE, false)) {
       LogUtil.i(
           "VoicemailClientImpl.isVoicemailArchiveAllowed",
           "feature disabled by config: %s",
@@ -109,6 +121,11 @@
     return intent;
   }
 
+  @Override
+  public boolean isActivated(Context context, PhoneAccountHandle phoneAccountHandle) {
+    return VvmAccountManager.isAccountActivated(context, phoneAccountHandle);
+  }
+
   @TargetApi(VERSION_CODES.O)
   @Override
   public void appendOmtpVoicemailSelectionClause(
diff --git a/java/com/android/voicemail/impl/VoicemailModule.java b/java/com/android/voicemail/impl/VoicemailModule.java
index c3e5714..5a4e739 100644
--- a/java/com/android/voicemail/impl/VoicemailModule.java
+++ b/java/com/android/voicemail/impl/VoicemailModule.java
@@ -16,8 +16,10 @@
 
 package com.android.voicemail.impl;
 
+import android.content.Context;
 import android.support.v4.os.BuildCompat;
 import com.android.voicemail.VoicemailClient;
+import com.android.voicemail.VoicemailPermissionHelper;
 import com.android.voicemail.stub.StubVoicemailClient;
 import dagger.Module;
 import dagger.Provides;
@@ -29,12 +31,21 @@
 
   @Provides
   @Singleton
-  static VoicemailClient provideVoicemailClient() {
-    if (BuildCompat.isAtLeastO()) {
-      return new VoicemailClientImpl();
-    } else {
+  static VoicemailClient provideVoicemailClient(Context context) {
+    if (!BuildCompat.isAtLeastO()) {
+      VvmLog.i("VoicemailModule.provideVoicemailClient", "SDK below O");
       return new StubVoicemailClient();
     }
+
+    if (!VoicemailPermissionHelper.hasPermissions(context)) {
+      VvmLog.i(
+          "VoicemailModule.provideVoicemailClient",
+          "missing permissions " + VoicemailPermissionHelper.getMissingPermissions(context));
+      return new StubVoicemailClient();
+    }
+
+    VvmLog.i("VoicemailModule.provideVoicemailClient", "providing VoicemailClientImpl");
+    return new VoicemailClientImpl();
   }
 
   private VoicemailModule() {}
diff --git a/java/com/android/voicemail/impl/VvmPackageInstallReceiver.java b/java/com/android/voicemail/impl/VvmPackageInstallReceiver.java
index d920121..1e2de60 100644
--- a/java/com/android/voicemail/impl/VvmPackageInstallReceiver.java
+++ b/java/com/android/voicemail/impl/VvmPackageInstallReceiver.java
@@ -25,7 +25,8 @@
 
 /**
  * When a new package is installed, check if it matches any of the vvm carrier apps of the currently
- * enabled dialer vvm sources.
+ * enabled dialer VVM sources. The dialer VVM client will be disabled upon carrier VVM app
+ * installation, unless it was explicitly enabled by the user.
  */
 public class VvmPackageInstallReceiver extends BroadcastReceiver {
 
@@ -46,25 +47,34 @@
       return;
     }
 
+    // This get called every time an app is installed and will be noisy. Don't log until the app
+    // is identified as a carrier VVM app.
     for (PhoneAccountHandle phoneAccount :
         context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
-      if (VisualVoicemailSettingsUtil.isEnabledUserSet(context, phoneAccount)) {
-        // Skip the check if this voicemail source's setting is overridden by the user.
-        continue;
-      }
-
       OmtpVvmCarrierConfigHelper carrierConfigHelper =
           new OmtpVvmCarrierConfigHelper(context, phoneAccount);
+      if (!carrierConfigHelper.isValid()) {
+        continue;
+      }
       if (carrierConfigHelper.getCarrierVvmPackageNames() == null) {
         continue;
       }
-      if (carrierConfigHelper.getCarrierVvmPackageNames().contains(packageName)) {
-        // Force deactivate the client. The user can re-enable it in the settings.
-        // There is no need to update the settings for deactivation. At this point, if the
-        // default value is used it should be false because a carrier package is present.
-        VvmLog.i(TAG, "Carrier VVM package installed, disabling system VVM client");
-        VisualVoicemailSettingsUtil.setEnabled(context, phoneAccount, false);
+      if (!carrierConfigHelper.getCarrierVvmPackageNames().contains(packageName)) {
+        continue;
       }
+
+      VvmLog.i(TAG, "Carrier app installed");
+      if (VisualVoicemailSettingsUtil.isEnabledUserSet(context, phoneAccount)) {
+        // Skip the check if this voicemail source's setting is overridden by the user.
+        VvmLog.i(TAG, "VVM enabled by user, not disabling");
+        continue;
+      }
+
+      // Force deactivate the client. The user can re-enable it in the settings.
+      // There is no need to update the settings for deactivation. At this point, if the
+      // default value is used it should be false because a carrier package is present.
+      VvmLog.i(TAG, "Carrier VVM package installed, disabling system VVM client");
+      VisualVoicemailSettingsUtil.setEnabled(context, phoneAccount, false);
     }
   }
 }
diff --git a/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java b/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
index b028567..0348a60 100644
--- a/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
+++ b/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
@@ -120,6 +120,16 @@
               new PhoneAccountHandle(
                   ComponentName.unflattenFromString(cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME)),
                   cursor.getString(PHONE_ACCOUNT_ID));
+          TelephonyManager telephonyManager =
+              context
+                  .getSystemService(TelephonyManager.class)
+                  .createForPhoneAccountHandle(mPhoneAccount);
+          if (telephonyManager == null) {
+            // can happen when trying to fetch voicemails from a SIM that is no longer on the
+            // device
+            VvmLog.e(TAG, "account no longer valid, cannot retrieve message");
+            return;
+          }
           if (!VvmAccountManager.isAccountActivated(context, mPhoneAccount)) {
             mPhoneAccount = getAccountFromMarshmallowAccount(context, mPhoneAccount);
             if (mPhoneAccount == null) {
diff --git a/java/com/android/voicemail/impl/mail/Address.java b/java/com/android/voicemail/impl/mail/Address.java
index 3a7a866..ac8e8a2 100644
--- a/java/com/android/voicemail/impl/mail/Address.java
+++ b/java/com/android/voicemail/impl/mail/Address.java
@@ -25,8 +25,9 @@
 import com.android.voicemail.impl.mail.utils.LogUtils;
 import java.util.ArrayList;
 import java.util.regex.Pattern;
+import org.apache.james.mime4j.codec.DecodeMonitor;
+import org.apache.james.mime4j.codec.DecoderUtil;
 import org.apache.james.mime4j.codec.EncoderUtil;
-import org.apache.james.mime4j.decoder.DecoderUtil;
 
 /**
  * This class represent email address.
@@ -121,7 +122,8 @@
     if (TextUtils.isEmpty(rawAddress)) {
       return null;
     }
-    String name, address;
+    String name;
+    String address;
     final Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(rawAddress);
     if (tokens.length > 0) {
       final String tokenizedName = tokens[0].getName();
@@ -171,7 +173,7 @@
     if (personal != null) {
       personal = REMOVE_OPTIONAL_DQUOTE.matcher(personal).replaceAll("$1");
       personal = UNQUOTE.matcher(personal).replaceAll("$1");
-      personal = DecoderUtil.decodeEncodedWords(personal);
+      personal = DecoderUtil.decodeEncodedWords(personal, DecodeMonitor.STRICT);
       if (personal.length() == 0) {
         personal = null;
       }
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
index dfb7d7c..5897206 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
@@ -34,12 +34,14 @@
 import java.util.Locale;
 import java.util.Stack;
 import java.util.regex.Pattern;
-import org.apache.james.mime4j.BodyDescriptor;
-import org.apache.james.mime4j.ContentHandler;
-import org.apache.james.mime4j.EOLConvertingInputStream;
-import org.apache.james.mime4j.MimeStreamParser;
-import org.apache.james.mime4j.field.DateTimeField;
-import org.apache.james.mime4j.field.Field;
+import org.apache.james.mime4j.MimeException;
+import org.apache.james.mime4j.dom.field.DateTimeField;
+import org.apache.james.mime4j.field.DefaultFieldParser;
+import org.apache.james.mime4j.io.EOLConvertingInputStream;
+import org.apache.james.mime4j.parser.ContentHandler;
+import org.apache.james.mime4j.parser.MimeStreamParser;
+import org.apache.james.mime4j.stream.BodyDescriptor;
+import org.apache.james.mime4j.stream.Field;
 
 /**
  * An implementation of Message that stores all of its metadata in RFC 822 and RFC 2045 style
@@ -64,7 +66,6 @@
   private Body mBody;
   protected int mSize;
   private boolean mInhibitLocalMessageId = false;
-  private boolean mComplete = true;
 
   // Shared random source for generating local message-id values
   private static final java.util.Random sRandom = new java.util.Random();
@@ -114,7 +115,7 @@
    * @throws IOException
    * @throws MessagingException
    */
-  public MimeMessage(InputStream in) throws IOException, MessagingException {
+  public MimeMessage(InputStream in) throws IOException, MessagingException, MimeException {
     parse(in);
   }
 
@@ -136,17 +137,9 @@
     return parser;
   }
 
-  protected void parse(InputStream in) throws IOException, MessagingException {
+  public void parse(InputStream in) throws IOException, MessagingException, MimeException {
     final MimeStreamParser parser = init();
     parser.parse(new EOLConvertingInputStream(in));
-    mComplete = !parser.getPrematureEof();
-  }
-
-  public void parse(InputStream in, EOLConvertingInputStream.Callback callback)
-      throws IOException, MessagingException {
-    final MimeStreamParser parser = init();
-    parser.parse(new EOLConvertingInputStream(in, getSize(), callback));
-    mComplete = !parser.getPrematureEof();
   }
 
   /**
@@ -171,7 +164,8 @@
       try {
         DateTimeField field =
             (DateTimeField)
-                Field.parse("Date: " + MimeUtility.unfoldAndDecode(getFirstHeader("Date")));
+                DefaultFieldParser.parse(
+                    "Date: " + MimeUtility.unfoldAndDecode(getFirstHeader("Date")));
         mSentDate = field.getDate();
         // TODO: We should make it more clear what exceptions can be thrown here,
         // and whether they reflect a normal or error condition.
@@ -184,7 +178,7 @@
       try {
         DateTimeField field =
             (DateTimeField)
-                Field.parse(
+                DefaultFieldParser.parse(
                     "Date: " + MimeUtility.unfoldAndDecode(getFirstHeader("Delivery-date")));
         mSentDate = field.getDate();
         // TODO: We should make it more clear what exceptions can be thrown here,
@@ -228,10 +222,6 @@
     }
   }
 
-  public boolean isComplete() {
-    return mComplete;
-  }
-
   @Override
   public String getMimeType() throws MessagingException {
     return MimeUtility.getHeaderParameter(getContentType(), null);
@@ -577,10 +567,10 @@
     }
 
     @Override
-    public void field(String fieldData) {
+    public void field(Field rawField) {
       expect(Part.class);
       try {
-        final String[] tokens = fieldData.split(":", 2);
+        final String[] tokens = rawField.getRaw().toString().split(":", 2);
         ((Part) stack.peek()).addHeader(tokens[0], tokens[1].trim());
       } catch (MessagingException me) {
         throw new Error(me);
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeUtility.java b/java/com/android/voicemail/impl/mail/internet/MimeUtility.java
index 9984602..bd85e47 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeUtility.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeUtility.java
@@ -34,9 +34,10 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.commons.io.IOUtils;
+import org.apache.james.mime4j.codec.DecodeMonitor;
+import org.apache.james.mime4j.codec.DecoderUtil;
 import org.apache.james.mime4j.codec.EncoderUtil;
-import org.apache.james.mime4j.decoder.DecoderUtil;
-import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
+import org.apache.james.mime4j.codec.QuotedPrintableInputStream;
 import org.apache.james.mime4j.util.CharsetUtil;
 
 public class MimeUtility {
@@ -65,7 +66,7 @@
     if (s == null) {
       return null;
     }
-    return DecoderUtil.decodeEncodedWords(s);
+    return DecoderUtil.decodeEncodedWords(s, DecodeMonitor.STRICT);
   }
 
   public static String unfoldAndDecode(String s) {
@@ -235,7 +236,7 @@
             /*
              * See if there is conversion from the MIME charset to the Java one.
              */
-            charset = CharsetUtil.toJavaCharset(charset);
+            charset = CharsetUtil.lookup(charset).name();
           }
           /*
            * No encoding, so use us-ascii, which is the standard.
diff --git a/java/com/android/voicemail/impl/mail/store/ImapFolder.java b/java/com/android/voicemail/impl/mail/store/ImapFolder.java
index 1d9b011..5760ee2 100644
--- a/java/com/android/voicemail/impl/mail/store/ImapFolder.java
+++ b/java/com/android/voicemail/impl/mail/store/ImapFolder.java
@@ -22,6 +22,7 @@
 import android.util.ArrayMap;
 import android.util.Base64DataException;
 import com.android.voicemail.impl.OmtpEvents;
+import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.AuthenticationFailedException;
 import com.android.voicemail.impl.mail.Body;
 import com.android.voicemail.impl.mail.FetchProfile;
@@ -41,7 +42,6 @@
 import com.android.voicemail.impl.mail.store.imap.ImapList;
 import com.android.voicemail.impl.mail.store.imap.ImapResponse;
 import com.android.voicemail.impl.mail.store.imap.ImapString;
-import com.android.voicemail.impl.mail.utils.LogUtils;
 import com.android.voicemail.impl.mail.utils.Utility;
 import java.io.IOException;
 import java.io.InputStream;
@@ -66,7 +66,7 @@
   private String mMode;
   private boolean mExists;
   /** A set of hashes that can be used to track dirtiness */
-  Object mHash[];
+  Object[] mHash;
 
   public static final String MODE_READ_ONLY = "mode_read_only";
   public static final String MODE_READ_WRITE = "mode_read_write";
@@ -136,7 +136,7 @@
       try {
         expunge();
       } catch (MessagingException e) {
-        LogUtils.e(TAG, e, "Messaging Exception");
+        VvmLog.e(TAG, "Messaging Exception", e);
       }
     }
     mMessageCount = -1;
@@ -174,13 +174,13 @@
       try {
         final String command = ImapConstants.UID_SEARCH + " " + searchCriteria;
         final String[] result = getSearchUids(mConnection.executeSimpleCommand(command));
-        LogUtils.d(TAG, "searchForUids '" + searchCriteria + "' results: " + result.length);
+        VvmLog.d(TAG, "searchForUids '" + searchCriteria + "' results: " + result.length);
         return result;
       } catch (ImapException me) {
-        LogUtils.d(TAG, "ImapException in search: " + searchCriteria, me);
+        VvmLog.d(TAG, "ImapException in search: " + searchCriteria, me);
         return Utility.EMPTY_STRINGS; // Not found
       } catch (IOException ioe) {
-        LogUtils.d(TAG, "IOException in search: " + searchCriteria, ioe);
+        VvmLog.d(TAG, "IOException in search: " + searchCriteria, ioe);
         mStore.getImapHelper().handleEvent(OmtpEvents.DATA_GENERIC_IMAP_IOE);
         throw ioExceptionHandler(mConnection, ioe);
       }
@@ -199,7 +199,7 @@
         return new ImapMessage(uid, this);
       }
     }
-    LogUtils.e(TAG, "UID " + uid + " not found on server");
+    VvmLog.e(TAG, "UID " + uid + " not found on server");
     return null;
   }
 
@@ -235,7 +235,7 @@
     try {
       fetchInternal(messages, fp, listener);
     } catch (RuntimeException e) { // Probably a parser error.
-      LogUtils.w(TAG, "Exception detected: " + e.getMessage());
+      VvmLog.w(TAG, "Exception detected: " + e.getMessage());
       throw e;
     }
   }
@@ -346,7 +346,11 @@
 
             message.setInternalDate(internalDate);
             message.setSize(size);
-            message.parse(Utility.streamFromAsciiString(header));
+            try {
+              message.parse(Utility.streamFromAsciiString(header));
+            } catch (Exception e) {
+              VvmLog.e(TAG, "Error parsing header %s", e);
+            }
           }
           if (fp.contains(FetchProfile.Item.STRUCTURE)) {
             ImapList bs = fetchList.getKeyedListOrEmpty(ImapConstants.BODYSTRUCTURE);
@@ -354,7 +358,7 @@
               try {
                 parseBodyStructure(bs, message, ImapConstants.TEXT);
               } catch (MessagingException e) {
-                LogUtils.v(TAG, e, "Error handling message");
+                VvmLog.v(TAG, "Error handling message", e);
                 message.setBody(null);
               }
             }
@@ -365,11 +369,15 @@
             // TODO Should we accept "RFC822" as well??
             ImapString body = fetchList.getKeyedStringOrEmpty("BODY[]", true);
             InputStream bodyStream = body.getAsStream();
-            message.parse(bodyStream);
+            try {
+              message.parse(bodyStream);
+            } catch (Exception e) {
+              VvmLog.e(TAG, "Error parsing body %s", e);
+            }
           }
           if (fetchPart != null) {
             InputStream bodyStream = fetchList.getKeyedStringOrEmpty("BODY[", true).getAsStream();
-            String encodings[] = fetchPart.getHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING);
+            String[] encodings = fetchPart.getHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING);
 
             String contentTransferEncoding = null;
             if (encodings != null && encodings.length > 0) {
@@ -397,7 +405,7 @@
               // from here. This blanket catch-all is because we're not sure what to
               // do if we don't have a contentTransferEncoding, and we don't have
               // time to figure out what exceptions might be thrown.
-              LogUtils.e(TAG, "Error fetching body %s", e);
+              VvmLog.e(TAG, "Error fetching body %s", e);
             }
           }
 
@@ -782,7 +790,7 @@
   }
 
   private MessagingException ioExceptionHandler(ImapConnection connection, IOException ioe) {
-    LogUtils.d(TAG, "IO Exception detected: ", ioe);
+    VvmLog.d(TAG, "IO Exception detected: ", ioe);
     connection.close();
     if (connection == mConnection) {
       mConnection = null; // To prevent close() from returning the connection to the pool.
diff --git a/java/com/android/voicemail/impl/mail/store/ImapStore.java b/java/com/android/voicemail/impl/mail/store/ImapStore.java
index cadbe59..838bae2 100644
--- a/java/com/android/voicemail/impl/mail/store/ImapStore.java
+++ b/java/com/android/voicemail/impl/mail/store/ImapStore.java
@@ -25,6 +25,7 @@
 import com.android.voicemail.impl.mail.internet.MimeMessage;
 import java.io.IOException;
 import java.io.InputStream;
+import org.apache.james.mime4j.MimeException;
 
 public class ImapStore {
   /**
@@ -112,7 +113,7 @@
     }
 
     @Override
-    public void parse(InputStream in) throws IOException, MessagingException {
+    public void parse(InputStream in) throws IOException, MessagingException, MimeException {
       super.parse(in);
     }
 
diff --git a/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java b/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java
index 5a720c6..fc7fdf3 100644
--- a/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java
+++ b/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java
@@ -25,8 +25,7 @@
 import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.dialer.logging.DialerImpression;
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.OmtpEvents;
@@ -45,6 +44,7 @@
 import com.android.voicemail.impl.sync.VvmNetworkRequest;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.NetworkWrapper;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.RequestFailedException;
+import com.android.voicemail.impl.utils.LoggerUtils;
 import java.io.IOException;
 import java.security.SecureRandom;
 import java.util.Locale;
@@ -116,7 +116,8 @@
       StatusMessage message,
       Bundle data) {
     VvmLog.i(TAG, "start vvm3 provisioning");
-    Logger.get(config.getContext()).logImpression(DialerImpression.Type.VVM_PROVISIONING_STARTED);
+    LoggerUtils.logImpressionOnMainThread(
+        config.getContext(), DialerImpression.Type.VVM_PROVISIONING_STARTED);
     if (OmtpConstants.SUBSCRIBER_UNKNOWN.equals(message.getProvisioningStatus())) {
       VvmLog.i(TAG, "Provisioning status: Unknown");
       if (VVM3_UNKNOWN_SUBSCRIBER_CAN_SUBSCRIBE_RESPONSE_CODE.equals(message.getReturnCode())) {
@@ -229,8 +230,8 @@
           // Only close new user tutorial if the PIN has been changed.
           helper.closeNewUserTutorial();
           VvmLog.i(TAG, "new user: NUT closed");
-          Logger.get(config.getContext())
-              .logImpression(DialerImpression.Type.VVM_PROVISIONING_COMPLETED);
+          LoggerUtils.logImpressionOnMainThread(
+              config.getContext(), DialerImpression.Type.VVM_PROVISIONING_COMPLETED);
           config.requestStatus(null);
         }
       } catch (InitializingException | MessagingException | IOException e) {
diff --git a/java/com/android/voicemail/impl/res/values-af/strings.xml b/java/com/android/voicemail/impl/res/values-af/strings.xml
index b209eea..7126321 100644
--- a/java/com/android/voicemail/impl/res/values-af/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-af/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Gevorderde instellings"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuele stemboodskap"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Ekstra rugsteun en berging"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Dit is \'n eksperimentele kenmerk"</i></b>" wat ons tans toets. Dit kan potensieel stemboodskappe van jou stemboodskapbediener af uitvee. Daar is geen waarborg dat hierdie kenmerk in die toekoms gesteun sal word nie. Ons sal egter graag terugvoer oor die kenmerk wil hê."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Stel PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Verander PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Visuele stemboodskap moet geaktiveer wees om PIN te verander"</string>
diff --git a/java/com/android/voicemail/impl/res/values-am/strings.xml b/java/com/android/voicemail/impl/res/values-am/strings.xml
index 4124de5..d350bbd 100644
--- a/java/com/android/voicemail/impl/res/values-am/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-am/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"የላቁ ቅንብሮች"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ምስላዊ የድምፅ መልዕክት"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"ተጨማሪ ምትኬ እና ማከማቻ"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"ይህ የሙከራ ባህሪ ነው"</i></b>" አሁን እየሞከርን ነው። ይህ ምናልባት ከድምፅ መልዕክት አገልጋይዎ ላይ የድምፅ መልዕክቶችን ሊሰርዝ ይችላል። ለወደፊቱ ይህን ባህሪ የመደገፍ ዋስትናዎችም የሉም። ነገር ግን በባህሪው ላይ ግብረመልስ ብናገኝ እንወዳለን።"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"ፒን ያዘጋጁ"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"ፒን ይቀይሩ"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"ፒን ለመቀየር የእይታ የድምጽ መልዕክት መንቃት አለበት"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ar/strings.xml b/java/com/android/voicemail/impl/res/values-ar/strings.xml
index 5d6fbba..679dcce 100644
--- a/java/com/android/voicemail/impl/res/values-ar/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ar/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"الإعدادات المتقدمة"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"بريد صوتي مرئي"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"نسخة احتياطية وسعة تخزين إضافية"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"هذه الميزة تجريبية"</i></b>" نحن حاليًا في مرحلة اختبار. سيؤدي هذا على الأرجح إلى حذف رسائل البريد الصوتي من خادم البريد الصوتي. لا توجد أي ضمانات بشأن دعم هذه الميزة مستقبلاً. إلا أننا نود الحصول على تعليقات بشأن هذه الميزة."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"تعيين رقم التعريف الشخصي"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"تغيير رقم التعريف الشخصي"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"ينبغي تشغيل البريد الصوتي المرئي لتغيير رقم التعريف الشخصي"</string>
diff --git a/java/com/android/voicemail/impl/res/values-az/strings.xml b/java/com/android/voicemail/impl/res/values-az/strings.xml
index ce68f99..87b4c06 100644
--- a/java/com/android/voicemail/impl/res/values-az/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-az/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Qabaqcıl Ayarlar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Görünən Səsli e-poçt"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Əlavə yedəkləmə və yaddaş"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" Bu, hazırda yoxladığımız "<b><i>"eksperimantal funksiyadır"</i></b>". Bununla səsli e-poçt serverindən səsli e-məktublar potensial olaraq silinəcək. Gələcəkdə bu funksiyanın dəstəklənəcəyinə zəmanət verilmir. Lakin funksiya haqqında əks əlaqənizi istərdik."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN ayarlayın"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN-i dəyişin"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN-i dəyişmək üçün görünən səsli e-poçt aktiv olmalıdır"</string>
diff --git a/java/com/android/voicemail/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/voicemail/impl/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..1939130
--- /dev/null
+++ b/java/com/android/voicemail/impl/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="voicemail_settings_with_label" msgid="563926539137546586">"Govorna pošta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="voicemail_settings_title" msgid="6685263321755930738">"Govorna pošta"</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="1017489970564669402">"Vibracija"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="913495075516305202">"Vibracija"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="7516921280035140960">"Zvuk"</string>
+    <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Napredna podešavanja"</string>
+    <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizuelna govorna pošta"</string>
+    <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Dodatne rezervne kopije i prostor"</string>
+    <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Podesite PIN"</string>
+    <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Promenite PIN"</string>
+    <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Morate da omogućite vizuelnu govornu poštu da biste promenili PIN"</string>
+    <string name="voicemail_change_pin_preference_summary_not_activated" msgid="8794039647258533633">"Vizuelna govorna pošta još uvek nije aktivirana, probajte ponovo kasnije"</string>
+    <string name="vm_change_pin_old_pin" msgid="3732582036597386047">"Stari PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5167496290646066333">"Novi PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="4143209637626661679">"Sačekajte."</string>
+    <string name="vm_change_pin_error_too_short" msgid="2825020644385639921">"Novi PIN je prekratak."</string>
+    <string name="vm_change_pin_error_too_long" msgid="683260438529171998">"Novi PIN je predugačak."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="5865254034338293113">"Novi PIN je preslab. Jaka lozinka ne treba da sadrži uzastopni niz ni ponovljene cifre."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="3682667971009913553">"Stari PIN se ne podudara."</string>
+    <string name="vm_change_pin_error_invalid" msgid="4317397281749196545">"Novi PIN sadrži nevažeće znakove."</string>
+    <string name="vm_change_pin_error_system_error" msgid="5972056058776852411">"Promena PIN-a nije uspela"</string>
+    <string name="vvm_unsupported_message_format" msgid="2746490691815392491">"Nepodržani tip poruke. Pozovite <xliff:g id="NUMBER">%s</xliff:g> da biste je preslušali."</string>
+    <string name="change_pin_title" msgid="1363830310845461697">"Promenite PIN kôd govorne pošte"</string>
+    <string name="change_pin_continue_label" msgid="9184635195162827832">"Nastavi"</string>
+    <string name="change_pin_cancel_label" msgid="7258783861113501519">"Otkaži"</string>
+    <string name="change_pin_ok_label" msgid="4527043915415428629">"Potvrdi"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="1375728090965833028">"Potvrdite stari PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="1654231195871094175">"Unesite PIN kôd govorne pošte da biste nastavili."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="7142620840890909719">"Podesite novi PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="1289662932759932217">"Broj cifara koje PIN mora da sadrži: <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="7282604363655862136">"Potvrdite PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="8626742552205369433">"PIN-ovi se ne podudaraju"</string>
+    <string name="change_pin_succeeded" msgid="6869403202124894671">"PIN kôd govorne pošte je ažuriran"</string>
+    <string name="change_pin_system_error" msgid="5762853042379833829">"Podešavanje PIN-a nije uspelo"</string>
+</resources>
diff --git a/java/com/android/voicemail/impl/res/values-be/strings.xml b/java/com/android/voicemail/impl/res/values-be/strings.xml
index ea4a00c..874b479 100644
--- a/java/com/android/voicemail/impl/res/values-be/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-be/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Пашыраныя налады"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Візуальная галасавая пошта"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Дадатковае рэзервовае капір. і сховішча"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Гэта эксперыментальная характарыстыка"</i></b>", якую мы тэсціруем. Патэнцыяльна яна будзе выдаляць паведамленні галасавой пошты з вашага сервера галасавой пошты. Падтрымка гэтай характарыстыкі ў будучым не гарантуецца. Але мы будзем вельмі ўдзячны за водгукі на гэту характарыстыку."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Задаць PIN-код"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Змяніць PIN-код"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Трэба ўключыць візуальную галасавую пошту, каб змяніць PIN-код"</string>
diff --git a/java/com/android/voicemail/impl/res/values-bg/strings.xml b/java/com/android/voicemail/impl/res/values-bg/strings.xml
index 95cc05f..f987015 100644
--- a/java/com/android/voicemail/impl/res/values-bg/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-bg/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Разширени настройки"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Визуална гласова поща"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Допълнителни резервни копия и хранилище"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Това е експериментална функция"</i></b>", която тестваме понастоящем. Тя потенциално може да изтрие гласови съобщения от сървъра ви за гласова поща. Няма гаранции за поддръжката й в бъдеще. Но ще се радваме на отзиви за нея."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Задаване на ПИН код"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Промяна на ПИН кода"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"За промяна на ПИН кода трябва да бъде активирана визуалната гласова поща"</string>
diff --git a/java/com/android/voicemail/impl/res/values-bn/strings.xml b/java/com/android/voicemail/impl/res/values-bn/strings.xml
index dbbeb4d..699576d 100644
--- a/java/com/android/voicemail/impl/res/values-bn/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-bn/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"উন্নত সেটিংস"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ভিজ্যুয়াল ভয়েসমেল"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"অতিরিক্ত ব্যাক আপ এবং সঞ্চয়স্থান"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"এটি একটি পরীক্ষামূলক বৈশিষ্ট্য"</i></b>" যা আমরা বর্তমানে পরীক্ষা করছি। এটি সম্ভবত আপনার ভয়েসমেল সার্ভার থেকে ভয়েসমেলগুলি মুছবে। যদিও ভবিষ্যতে এই বৈশিষ্ট্যতে সমর্থন পাওয়ার কোন গ্যারান্টি নেই। যদিও আমরা এই বৈশিষ্ট্যটির উপর মতামত পেলে খুব খুশি হব।"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"পিন সেট করুন"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"পিন পরিবর্তন করুন"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"পিন পরিবর্তন করতে ভিজ্যুয়াল ভয়েসমেল অবশ্যই সক্ষম করতে হবে"</string>
diff --git a/java/com/android/voicemail/impl/res/values-bs/strings.xml b/java/com/android/voicemail/impl/res/values-bs/strings.xml
index 6d2b5b3..2c8cc76 100644
--- a/java/com/android/voicemail/impl/res/values-bs/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-bs/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Napredne postavke"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizuelna govorna pošta"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Dodatna sigurnosna kopija i pohrana"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ovo je eksperimentalna funkcija"</i></b>" koju trenutno testiramo. Moguće je da ova radnja izbriše poruke govorne pošte sa servera govorne pošte. Nema garancije da će ova funkcija biti podržana u budućnosti. Ipak bismo željeli primiti povratne informacije o funkciji."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Postavite PIN kôd"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Promijenite PIN kôd"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Vizuelna govorna pošta mora biti omogućena za promjenu PIN kôda"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ca/strings.xml b/java/com/android/voicemail/impl/res/values-ca/strings.xml
index bbac252..b6525d0 100644
--- a/java/com/android/voicemail/impl/res/values-ca/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ca/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Configuració avançada"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Bústia de veu visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Còpia de seguretat addicional i emmagatz."</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Aquesta funció està en mode de prova"</i></b>" i és possible que suprimeixi els missatges de veu del servidor de la bústia. No podem garantir-ne la continuïtat en el futur. De tota manera, ens agradaria saber què en penses."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Defineix el PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Canvia el PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"La bústia de veu visual ha d\'estar activada per poder canviar el PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-cs/strings.xml b/java/com/android/voicemail/impl/res/values-cs/strings.xml
index fb6be6c..987f9de 100644
--- a/java/com/android/voicemail/impl/res/values-cs/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-cs/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Pokročilá nastavení"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizuální hlasová schránka"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Další zálohování a úložiště"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Toto je experimentální funkce"</i></b>", kterou právě testujeme. Funkce vám může smazat hlasové zprávy ze serveru hlasové schránky. Nemůžeme zaručit, že bude podporována i v budoucnu, budeme vám ale vděční za zpětnou vazbu."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Nastavit kód PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Změnit kód PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Pokud chcete kód PIN změnit, musíte mít zapnutou vizuální hlasovou schránku"</string>
diff --git a/java/com/android/voicemail/impl/res/values-da/strings.xml b/java/com/android/voicemail/impl/res/values-da/strings.xml
index 760c3bc..70ecb36 100644
--- a/java/com/android/voicemail/impl/res/values-da/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-da/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Avancerede indstillinger"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuel telefonsvarer"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Ekstra sikkerhedskopiering og lagerplads"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Dette er en eksperimental funktion,"</i></b>" som vi tester i øjeblikket. Der slettes måske talebeskeder fra din telefonsvarerserver. Der er ingen garanti for, at denne funktion understøttes fremover. Vi vil dog stadig gerne have feedback om funktionen."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Angiv pinkode"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Skift pinkode"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Visuel telefonsvarer skal være aktiveret, for at du kan skifte pinkode"</string>
diff --git a/java/com/android/voicemail/impl/res/values-de/strings.xml b/java/com/android/voicemail/impl/res/values-de/strings.xml
index bc5c70f..2746629 100644
--- a/java/com/android/voicemail/impl/res/values-de/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-de/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Erweiterte Einstellungen"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuelle Mailbox"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Zusätzliche Sicherung und mehr Speicher"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Dies ist eine Funktion im Versuchsstadium"</i></b>", die gerade getestet wird. Hiermit werden möglicherweise Mailboxnachrichten von deinem Mailbox-Server gelöscht. Es wird nicht garantiert, dass diese Funktion auch in Zukunft unterstützt wird. Wir würden uns aber sehr über Feedback dazu freuen."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN festlegen"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN ändern"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Die visuelle Mailbox muss aktiviert sein, um die PIN zu ändern"</string>
diff --git a/java/com/android/voicemail/impl/res/values-el/strings.xml b/java/com/android/voicemail/impl/res/values-el/strings.xml
index a416936..e9f9835 100644
--- a/java/com/android/voicemail/impl/res/values-el/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-el/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Σύνθετες ρυθμίσεις"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Οπτικός αυτόματος τηλεφωνητής"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Επιπλέον αντίγραφα ασφ. και αποθήκευση"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Αυτή είναι μια πειραματική λειτουργία"</i></b>" που δοκιμάζουμε προς το παρόν. Ενδέχεται να έχει ως αποτέλεσμα τη διαγραφή φωνητικών μηνυμάτων από τον διακομιστή αυτόματου τηλεφωνητή σας. Δεν παρέχονται εγγυήσεις για την υποστήριξη αυτής της λειτουργίας μελλοντικά. Ωστόσο, θα εκτιμούσαμε τα σχόλιά σας για τη λειτουργία αυτή."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Ορισμός PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Αλλαγή κωδικού PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Για αλλαγή του PIN, ενεργοποιήστε τον οπτικό αυτόματο τηλεφωνητή"</string>
diff --git a/java/com/android/voicemail/impl/res/values-en-rAU/strings.xml b/java/com/android/voicemail/impl/res/values-en-rAU/strings.xml
index 9b6484b..ec08faf 100644
--- a/java/com/android/voicemail/impl/res/values-en-rAU/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-en-rAU/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Advanced settings"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visual voicemail"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Extra backup and storage"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"This is an experimental feature"</i></b>" that we are currently testing. This will potentially delete voicemail from your voicemail server. There are no guarantees that this feature will be supported in the future. We would love feedback on the feature though."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Set PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Change PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Visual voicemail must be enabled to change PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-en-rGB/strings.xml b/java/com/android/voicemail/impl/res/values-en-rGB/strings.xml
index 9b6484b..ec08faf 100644
--- a/java/com/android/voicemail/impl/res/values-en-rGB/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-en-rGB/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Advanced settings"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visual voicemail"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Extra backup and storage"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"This is an experimental feature"</i></b>" that we are currently testing. This will potentially delete voicemail from your voicemail server. There are no guarantees that this feature will be supported in the future. We would love feedback on the feature though."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Set PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Change PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Visual voicemail must be enabled to change PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-en-rIN/strings.xml b/java/com/android/voicemail/impl/res/values-en-rIN/strings.xml
index 9b6484b..ec08faf 100644
--- a/java/com/android/voicemail/impl/res/values-en-rIN/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-en-rIN/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Advanced settings"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visual voicemail"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Extra backup and storage"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"This is an experimental feature"</i></b>" that we are currently testing. This will potentially delete voicemail from your voicemail server. There are no guarantees that this feature will be supported in the future. We would love feedback on the feature though."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Set PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Change PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Visual voicemail must be enabled to change PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-es-rUS/strings.xml b/java/com/android/voicemail/impl/res/values-es-rUS/strings.xml
index 6ae227a..fcd9cc7 100644
--- a/java/com/android/voicemail/impl/res/values-es-rUS/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-es-rUS/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Configuración avanzada"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Buzón de voz visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Copia de seguridad y almacenamiento adicional"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Esta es una función experimental"</i></b>" que estamos probando. Es posible que se borren los mensajes de voz del servidor correspondiente. No podemos garantizar la compatibilidad de la función en el futuro. Sin embargo, nos encantaría que nos hicieras comentarios acerca de ella."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Establecer PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Cambiar PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"El buzón de voz visual se debe activar para cambiar el PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-es/strings.xml b/java/com/android/voicemail/impl/res/values-es/strings.xml
index bab4e03..f20ebc5 100644
--- a/java/com/android/voicemail/impl/res/values-es/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-es/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Configuración avanzada"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Buzón de voz visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Copias de seguridad y almacenamiento extra"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Se trata de una función experimental"</i></b>" que se encuentra actualmente en fase de prueba y que podría servir para eliminar los mensajes de tu servidor de buzón de voz. Aunque no garantizamos que esta función se siga admitiendo en el futuro, nos encantaría conocer tu opinión."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Establecer PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Cambiar PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Para poder cambiar el PIN, el buzón de voz visual debe estar habilitado"</string>
diff --git a/java/com/android/voicemail/impl/res/values-et/strings.xml b/java/com/android/voicemail/impl/res/values-et/strings.xml
index 02f1314..dc7f685 100644
--- a/java/com/android/voicemail/impl/res/values-et/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-et/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Täpsemad seaded"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuaalne kõnepost"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Lisavarundus ja -salvestusruum"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"See on katseline funktsioon"</i></b>", mida praegu testime. See võib teie kõnepostisõnumid kõnepostiserverist kustutada. Me ei garanteeri, et seda funktsiooni tulevikus toetatakse. Soovime selle kohta siiski tagasisidet saada."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN-koodi määramine"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN-koodi muutmine"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN-koodi muutmiseks peab olema lubatud visuaalne kõnepost"</string>
diff --git a/java/com/android/voicemail/impl/res/values-eu/strings.xml b/java/com/android/voicemail/impl/res/values-eu/strings.xml
index 89afb83..8a3bd64 100644
--- a/java/com/android/voicemail/impl/res/values-eu/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-eu/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Ezarpen aurreratuak"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Erantzungailu bisuala"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Babeskopiak eta edukia gordetzeko tokia"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" Oraindik probatzen ari garen "<b><i>"eginbide esperimentala da hau"</i></b>". Agian erantzungailuaren zerbitzarian gordetako mezuak ezabatuko dira. Ez dugu bermatzen egibide hau etorkizunean erabiltzeko aukera emango dugunik. Halere, bihotzez eskertuko genizuke eginbideari buruzko iritzia."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Ezarri PIN kodea"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Aldatu PIN kodea"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Ikusizko erantzungailuak gaituta egon behar du PIN kodea aldatu ahal izateko"</string>
diff --git a/java/com/android/voicemail/impl/res/values-fa/strings.xml b/java/com/android/voicemail/impl/res/values-fa/strings.xml
index 3db711b..0b5d513 100644
--- a/java/com/android/voicemail/impl/res/values-fa/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-fa/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"تنظیمات پیشرفته"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"پست صوتی تصویری"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"پشتیبان‌گیری و فضای ذخیره‌سازی اضافی"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"این یک قابلیت آزمایشی است"</i></b>" که درحال آزمایش آن هستیم. این قابلیت به‌طور بالقوه پست‌های صوتی را از سرور پست صوتی شما حذف خواهد کرد. ضمانتی برای پشتیبانی از این قابلیت در آینده وجود ندارد. با این حال مشتاقیم درباره آن بازخورد دریافت کنیم."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"تنظیم پین"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"تغییر پین"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"برای تغییر پین، پست صوتی تصویری باید فعال شود"</string>
diff --git a/java/com/android/voicemail/impl/res/values-fi/strings.xml b/java/com/android/voicemail/impl/res/values-fi/strings.xml
index 36f5fff..c20d3e4 100644
--- a/java/com/android/voicemail/impl/res/values-fi/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-fi/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Lisäasetukset"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuaalinen vastaaja"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Lisävarmuuskopiointi ja ‑tallennustila"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Tämä on kokeellinen ominaisuus"</i></b>", jota testaamme parhaillaan. Vastaajaviestejä saatetaan poistaa vastaajapalvelimelta. Ominaisuuden tukemista tulevaisuudessa ei taata. Kuulemme kuitenkin mielellämme mielipiteesi ominaisuudesta."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Aseta PIN-koodi"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Vaihda PIN-koodi"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Ota visuaalinen puhelinvastaaja käyttöön, jotta voit vaihtaa PIN-koodin."</string>
diff --git a/java/com/android/voicemail/impl/res/values-fr-rCA/strings.xml b/java/com/android/voicemail/impl/res/values-fr-rCA/strings.xml
index 2c9a11a..6bbd134 100644
--- a/java/com/android/voicemail/impl/res/values-fr-rCA/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-fr-rCA/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Paramètres avancés"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Messagerie vocale visuelle"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Espace suppl. de sauvegarde et stockage"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Fonction expérimentale"</i></b>" en cours de test."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Définir un NIP"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Modifier le NIP"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"La messagerie vocale visuelle doit être activée pour que vous puissiez modifier votre NIP"</string>
diff --git a/java/com/android/voicemail/impl/res/values-fr/strings.xml b/java/com/android/voicemail/impl/res/values-fr/strings.xml
index 391671c..dc21c76 100644
--- a/java/com/android/voicemail/impl/res/values-fr/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-fr/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Paramètres avancés"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Messagerie vocale visuelle"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Espace suppl. de sauvegarde et stockage"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Il s\'agit d\'une fonctionnalité expérimentale"</i></b>" en cours de test. Des messages risquent d\'être supprimés de votre serveur de messagerie vocale. Nous ne pouvons pas garantir le maintien de cette fonctionnalité. Toutefois, n\'hésitez pas à nous faire part de vos commentaires."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Définir le code secret"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Modifier le code secret"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Pour que vous puissiez modifier le code secret, la messagerie vocale visuelle doit être activée"</string>
diff --git a/java/com/android/voicemail/impl/res/values-gl/strings.xml b/java/com/android/voicemail/impl/res/values-gl/strings.xml
index 70b949e..81f6e67 100644
--- a/java/com/android/voicemail/impl/res/values-gl/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-gl/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Configuración avanzada"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Correo de voz visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Copia de seguranza e almacenamento extra"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Esta función está en modo de proba"</i></b>", e é posible que elimine correos de voz do teu servidor de correo de voz. Non podemos garantir a súa continuidade no futuro. De todos modos, encantaríanos que nos deses a túa opinión."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Establecer PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Cambiar PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Para poder cambiar o PIN, o correo de voz visual ten que estar activado"</string>
diff --git a/java/com/android/voicemail/impl/res/values-gu/strings.xml b/java/com/android/voicemail/impl/res/values-gu/strings.xml
index f9187a7..3e8948d 100644
--- a/java/com/android/voicemail/impl/res/values-gu/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-gu/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"વિગતવાર સેટિંગ્સ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"વિઝ્યુઅલ વૉઇસમેઇલ"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"અતિરિક્ત બેકઅપ અને સ્ટોરેજ"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"આ એક પ્રાયોગિક સુવિધા છે"</i></b>" અમે હાલમાં પરીક્ષણ કરી રહ્યાં છીએ. આ તમારા વૉઇસમેઇલ સર્વરમાંથી સંભવિત રૂપે વૉઇસમેઇલ કાઢી નાખશે. ભવિષ્યમાં આ સુવિધાનું સમર્થન કરવાની કોઇ બાંંયધરી નથી. જોકે અમને આ સુવિધા પર પ્રતિસાદ ગમશે."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN સેટ કરો"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN બદલો"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN બદલવા માટે વિઝ્યુઅલ વૉઇસમેઇલ સક્ષમ હોય તે આવશ્યક છે"</string>
diff --git a/java/com/android/voicemail/impl/res/values-hi/strings.xml b/java/com/android/voicemail/impl/res/values-hi/strings.xml
index 488fba2..8daa3e3 100644
--- a/java/com/android/voicemail/impl/res/values-hi/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-hi/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"उन्नत सेटिंग"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"विज़ुअल वॉइसमेल"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"अतिरिक्त बैकअप और जगह"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"यह सुविधा एक तरह का प्रयोग है"</i></b>" जिसका हम अभी परीक्षण कर रहे हैं. हो सकता है कि यह आपके वॉइसमेल सर्वर से वॉइसमेल हटा दे. भविष्य में यह सुविधा दी जाएगी या नहीं इसकी कोई गारंटी नहीं है. फिर भी सुविधा पर आपका फ़ीडबैक हमें अच्छा लगेगा."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"पिन सेट करें"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"पिन बदलें"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"पिन बदलने के लिए विज़ुअल वॉइसमेल ज़रूर सक्षम होना चाहिए"</string>
diff --git a/java/com/android/voicemail/impl/res/values-hr/strings.xml b/java/com/android/voicemail/impl/res/values-hr/strings.xml
index 7d66956..9609095 100644
--- a/java/com/android/voicemail/impl/res/values-hr/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-hr/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Napredne postavke"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizualna govorna pošta"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Dodatno sigurnosno kopiranje i pohrana"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ovo je eksperimentalna značajka"</i></b>" koju trenutačno testiramo. To će možda izbrisati poruke govorne pošte s vašeg poslužitelja govorne pošte. Nije sigurno da ćemo ovu značajku podržati u budućnosti. Međutim, voljeli bismo dobiti povratne informacije o njoj."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Postavljanje PIN-a"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Promjena PIN-a"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Za promjenu PIN-a potrebno je omogućiti vizualnu govornu poštu"</string>
diff --git a/java/com/android/voicemail/impl/res/values-hu/strings.xml b/java/com/android/voicemail/impl/res/values-hu/strings.xml
index fae3ef4..ce18af7 100644
--- a/java/com/android/voicemail/impl/res/values-hu/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-hu/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Speciális beállítások"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizuális hangpostaüzenet"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Extra tárhely és biztonsági mentés"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ez egy kísérleti funkció"</i></b>", amelyet jelenleg tesztelünk. Előfordulhat, hogy letörli az Ön hangüzeneteit a hangpostaszerverről. Nem garantáljuk, hogy a funkció a jövőben is megmarad, de nagy örömmel vennénk, ha megírná róla a véleményét."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN-kód beállítása"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN-kód módosítása"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"A PIN-kód módosításához engedélyezni kell a vizuális hangpostát."</string>
diff --git a/java/com/android/voicemail/impl/res/values-hy/strings.xml b/java/com/android/voicemail/impl/res/values-hy/strings.xml
index e4126f8..eaa987a 100644
--- a/java/com/android/voicemail/impl/res/values-hy/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-hy/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Ընդլայնված կարգավորումներ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Տեսողական ձայնային փոստ"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Լրացուցիչ տարածք և պահուստավորում"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Սա փորձնական գործառույթ է,"</i></b>" որը գտնվում է փորձարկման փուլում: Այս ընթացքում ձայնային հաղորդագրությունները ձեր ձայնային փոստի սերվերից կարող են ջնջվել: Ոչ մի երաշխիք չկա, որ այն հետագայում կաջակցվի: Այդուհանդերձ, կցանկանայինք ձեր կարծիքն իմանալ այս գործառույթի մասին:"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Սահմանեք PIN կոդ"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Փոխեք PIN կոդը"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN կոդը փոխելու համար տեսողական ձայնային փոստը պետք է միացված լինի"</string>
diff --git a/java/com/android/voicemail/impl/res/values-in/strings.xml b/java/com/android/voicemail/impl/res/values-in/strings.xml
index d47bd9b..6f7e637 100644
--- a/java/com/android/voicemail/impl/res/values-in/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-in/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Setelan Lanjutan"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Pesan Suara Visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Penyimpanan dan backup ekstra"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ini adalah fitur eksperimental"</i></b>" yang sedang kami uji. Fitur ini berpotensi menghapus pesan suara dari server pesan suara Anda. Tidak ada jaminan bahwa fitur ini akan didukung di masa mendatang. Kami akan menerima masukan terkait fitur ini dengan senang hati."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Setel PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Ubah PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Pesan suara visual harus diaktifkan untuk mengubah PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-is/strings.xml b/java/com/android/voicemail/impl/res/values-is/strings.xml
index c2019a3..5e00487 100644
--- a/java/com/android/voicemail/impl/res/values-is/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-is/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Ítarlegar stillingar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Myndrænt talhólf"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Viðbótaröryggisafritun og samstilling"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Þessi eiginleiki er í tilraunaútgáfu"</i></b>" sem við erum að prófa að svo stöddu. Þetta mun mögulega eyða talhólfsskilaboðum af vefþjóni talhólfsins. Engin trygging er fyrir því að þessi eiginleiki verði studdur í framtíðinni. Við kunnum virkilega að meta allar ábendingar varðandi þennan eiginleika."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Stilla PIN-númer"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Breyta PIN-númeri"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Kveikt þarf að vera á myndrænu talhólfi til að breyta PIN-númeri"</string>
diff --git a/java/com/android/voicemail/impl/res/values-it/strings.xml b/java/com/android/voicemail/impl/res/values-it/strings.xml
index 3aeaca9..2c37ba2 100644
--- a/java/com/android/voicemail/impl/res/values-it/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-it/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Impostazioni avanzate"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Leggi la segreteria"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Archiviazione supplementare e backup"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Questa è una funzionalità sperimentale"</i></b>" che si trova al momento in fase di test. È possibile che i messaggi vocali vengano eliminati dal server della segreteria. Non ci sono garanzie che la funzionalità continui a essere supportata in futuro, ma ci piacerebbe ricevere il tuo feedback."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Imposta PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Cambia PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"La lettura delle segreteria deve essere attivata per cambiare il PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-iw/strings.xml b/java/com/android/voicemail/impl/res/values-iw/strings.xml
index 98d31bc..cdf58dd 100644
--- a/java/com/android/voicemail/impl/res/values-iw/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-iw/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"הגדרות מתקדמות"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"דואר קולי ויזואלי"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"גיבוי ופינוי מקום"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"זוהי תכונה ניסיונית"</i></b>" שאנחנו בודקים כרגע. היא עלולה למחוק הודעות קוליות מתא הדואר הקולי שלך בשרת. אנחנו לא מתחייבים שהתכונה תהיה זמינה בעתיד, אך נשמח לקבל עליה משוב."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"הגדרת קוד גישה"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"שינוי קוד הגישה"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"צריך להפעיל את הדואר הקולי הוויזואלי כדי לשנות את קוד הגישה"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ja/strings.xml b/java/com/android/voicemail/impl/res/values-ja/strings.xml
index 90bce09..e35359f 100644
--- a/java/com/android/voicemail/impl/res/values-ja/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ja/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"詳細設定"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ビジュアル ボイスメール"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"追加のバックアップと保存容量"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"これは現在テスト中の試験運用機能"</i></b>"で、ボイスメール サーバーからボイスメールを削除することができます。今後この機能が正式にサポートされる保証はありませんが、フィードバックをお寄せいただければ幸いです。"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN の設定"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN の変更"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN を変更するには、ビジュアル ボイスメールを有効にする必要があります"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ka/strings.xml b/java/com/android/voicemail/impl/res/values-ka/strings.xml
index 4e14132..7eb792f 100644
--- a/java/com/android/voicemail/impl/res/values-ka/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ka/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"გაფართოებული პარამეტრები"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ვიზუალური ხმოვანი ფოსტა"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"დამატებითი სარეზ. ასლები და მეხსიერება"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"ეს არის ექსპერიმენტული ფუნქცია, რომელსაც"</i></b>" ამჟამად ტესტირებას ვუტარებთ. სავარაუდოდ, ეს წაშლის ხმოვან შეტყობინებებს თქვენი ხმოვანი ფოსტის სერვერიდან. გარანტია, რომ ეს ფუნქცია მომავალში მხარდაჭერილი იქნება, არ არსებობს. თუმცა ამ ფუნქციის შესახებ გამოხმაურებას ინტერესით გავეცნობოდით."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN-კოდის დაყენება"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN-კოდის შეცვლა"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN-კოდის შესაცვლელად ჩართული უნდა იყოს ვიზუალური ხმოვანი ფოსტა"</string>
diff --git a/java/com/android/voicemail/impl/res/values-kk/strings.xml b/java/com/android/voicemail/impl/res/values-kk/strings.xml
index 36ba090..a03171d 100644
--- a/java/com/android/voicemail/impl/res/values-kk/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-kk/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Қосымша параметрлер"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Визуалды дауыстық пошта"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Қосымша сақтық көшірме жасау және сақтау"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Бұл — қазір тексеріліп жатқан, тәжірибелік мүмкіндік"</i></b>". Бұл дауыстық хабарларды дауыстық хабар серверінен өшіруі мүмкін. Осы мүмкіндікке алдағы уақытта қолдау көрсетілетініне ешқандай кепілдік жоқ. Сонда да осы мүмкіндікке қатысты пікір алғымыз келеді."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN кодын тағайындау"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN кодын өзгерту"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN кодын өзгерту үшін визуалды дауыс хабарын қосу қажет"</string>
diff --git a/java/com/android/voicemail/impl/res/values-km/strings.xml b/java/com/android/voicemail/impl/res/values-km/strings.xml
index f97ff3e..3d55d00 100644
--- a/java/com/android/voicemail/impl/res/values-km/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-km/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"ការ​កំណត់​កម្រិត​ខ្ពស់"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"សារជាសំឡេងអាចមើលឃើញ"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"ទំហំ​ផ្ទុក និង​ការ​បម្រុងទុក​បន្ថែម"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"នេះ​​គឺ​ជា​មុខងារ​សាកល្បង"</i></b>" បច្ចុប្បន្ន យើង​កំពុង​ធ្វើ​ការ​សាកល្បង។ វា​អាច​នឹង​លុប​សារ​ជា​សំឡេង​ពី​ម៉ាស៊ីន​មេ​សារ​ជា​សំឡេង​របស់​អ្នក។ មិន​មាន​ការ​ធានា​ធ្វើ​ឲ្យ​មុខងារ​នេះ​ដំណើរការ​នៅ​ថ្ងៃ​ក្រោយ​ទេ។ យើង​ចង់​ដឹង​មតិ​ស្ថាបនា​អំពី​មុខងារនេះ​ផង​ដែរ។"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"កំណត់​កូដ PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"ផ្លាស់ប្ដូរ​កូដ PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"សារ​​ជា​សំឡេង​ដែល​មើល​ឃើញ​ត្រូវតែ​បើកដំណើរការ ដើម្បី​ផ្លាស់ប្ដូរ PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-kn/strings.xml b/java/com/android/voicemail/impl/res/values-kn/strings.xml
index 6f8e21f..379e656 100644
--- a/java/com/android/voicemail/impl/res/values-kn/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-kn/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"ಹೆಚ್ಚುವರಿ ಬ್ಯಾಕಪ್ ಮತ್ತು ಸಂಗ್ರಹಣೆ"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"ಇದು ಪ್ರಾಯೋಗಿಕ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ"</i></b>"ನಾವು ಪ್ರಸ್ತುತ ಪರೀಕ್ಷಿಸುತ್ತಿದ್ದೇವೆ. ಇದು ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸರ್ವರ್‌ನಿಂದ ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಸಂಭಾವ್ಯವಾಗಿ ಅಳಿಸುತ್ತದೆ. ಭವಿಷ್ಯದಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬೆಂಬಲಿಸುವ ಯಾವುದೇ ಖಾತ್ರಿ ಇಲ್ಲ. ಆದರೂ ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಸ್ವಾಗತ."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"ಪಿನ್ ಹೊಂದಿಸಿ"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"ಪಿನ್‌ ಬದಲಾಯಿಸಿ"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"ಪಿನ್ ಬದಲಾಯಿಸಲು ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ko/strings.xml b/java/com/android/voicemail/impl/res/values-ko/strings.xml
index f18d1d7..513a675 100644
--- a/java/com/android/voicemail/impl/res/values-ko/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ko/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"고급 설정"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"시각적 음성사서함"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"추가 백업 및 저장용량"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" 현재 테스트 중인 "<b><i>"실험적 기능입니다"</i></b>". 이 기능으로 인해 음성사서함 서버에서 메시지가 삭제될 수도 있습니다. 또한 Google에서는 추후 이 기능이 지원된다고 보장할 수 없습니다. 하지만 이 기능에 관해 의견을 주시면 감사하겠습니다."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN 설정"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN 변경"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN을 변경하려면 시각적 음성사서함이 사용 설정되어 있어야 합니다."</string>
diff --git a/java/com/android/voicemail/impl/res/values-ky/strings.xml b/java/com/android/voicemail/impl/res/values-ky/strings.xml
index f5219a9..12b7f18 100644
--- a/java/com/android/voicemail/impl/res/values-ky/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ky/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Өркүндөтүлгөн жөндөөлөр"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Визуалдык үн почтасы"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Кошумча камдык көчүрмөнү сактоо жана сактагыч"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Бул, сыноодон өтүп жаткан"</i></b>" эксперименталдык функция. Үн каттарыңыз серверден өчүрүлүп калышы мүмкүн. Бул функциянын кийин да колдонулаарына кепилдик бере албайбыз бирок, ал жөнүндө пикириңизди билгибиз келет."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN код коюу"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN кодду өзгөртүү"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN кодду өзгөртүү үчүн визуладык үн почтасын иштетүү керек"</string>
diff --git a/java/com/android/voicemail/impl/res/values-lo/strings.xml b/java/com/android/voicemail/impl/res/values-lo/strings.xml
index 212b12f..f4f45e5 100644
--- a/java/com/android/voicemail/impl/res/values-lo/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-lo/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"ການຕັ້ງຄ່າຂັ້ນສູງ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ຂໍ້​ຄວາມ​ສຽງສະເໝືອນ"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"ການສຳຮອງ ແລະ ບ່ອນຈັດເກັບຂໍ້ມູນພິເສດ"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"ນີ້ເປັນຄຸນສົມບັດທີ່ຢູ່ໃນຂັ້ນຕອນທົດລອງຢູ່"</i></b>" ພວກເຮົາກຳລັງທົດສອບ. ມັນອາດລຶບຂໍ້ຄວາມສຽງອອກຈາກເຊີບເວີຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້. ຈະບໍ່ມີການຮັບປະກັນການຊ່ວຍເຫຼືອຄຸນສົມບັດນີ້ໃນອະນາຄົດ. ຢ່າງໃດກໍຕາມພວກເຮົາຢາກຟັງຄຳຄິດເຫັນທີ່ມີຕໍ່ຄຸນສົມບັດດັ່ງກ່າວຈາກທ່ານ."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"ຕັ້ງລະຫັດ PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"​ປ່ຽນ​ລະຫັດ PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"ຈະຕ້ອງເປີດໃຊ້ຂໍ້ຄວາມສຽງສະເໝືອນເພື່ອປ່ຽນ PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-lt/strings.xml b/java/com/android/voicemail/impl/res/values-lt/strings.xml
index d4d9c4d..59a15f4 100644
--- a/java/com/android/voicemail/impl/res/values-lt/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-lt/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Išplėstiniai nustatymai"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vaizdinis balso paštas"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Papild. saug. vt. ir ats. kop. kūr. f."</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Tai yra eksperimentinė funkcija"</i></b>", kurią šiuo metu išbandome. Ją naudojant iš balso pašto serverio bus ištrinami balso pašto pranešimai. Negarantuojame, kad ateityje ši funkcija bus palaikoma, tačiau norėtume gauti atsiliepimų apie ją."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN kodo nustatymas"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN kodo keitimas"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Vaizdinis balso paštas turi būti įgalintas, kad būtų galima pakeisti PIN kodą"</string>
diff --git a/java/com/android/voicemail/impl/res/values-lv/strings.xml b/java/com/android/voicemail/impl/res/values-lv/strings.xml
index 1f758c4..0b8b2f9 100644
--- a/java/com/android/voicemail/impl/res/values-lv/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-lv/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Papildu iestatījumi"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizuālais balss pasts"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Papildu dublēšana un krātuve"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Šī ir eksperimentāla funkcija"</i></b>", ko mēs pašlaik testējam. Pastāv iespēja, ka no jūsu balss pasta servera tiks izdzēsti balss pasta ziņojumi. Mēs negarantējam šīs funkcijas turpmāku atbalstu, tomēr priecāsimies saņemt atsauksmes par to."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN iestatīšana"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN mainīšana"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Lai varētu mainīt PIN, ir jābūt iespējotam vizuālajam balss pastam."</string>
diff --git a/java/com/android/voicemail/impl/res/values-mk/strings.xml b/java/com/android/voicemail/impl/res/values-mk/strings.xml
index 39b8bee..90c2f6c 100644
--- a/java/com/android/voicemail/impl/res/values-mk/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-mk/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Напредни поставки"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Визуелна говорна пошта"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Дополнителен бекап и склад"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ова е експериментална функција"</i></b>" што моментално ја тестираме. Постои можност да брише говорни пораки од вашиот сервер за говорна пошта. Нема гаранција дека функцијава ќе се поддржува во иднина. Сепак, многу би ни значеле повратните информации за функцијата."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Поставете PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Променете PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"За променување на PIN-кодот, мора да се овозможи визуелна говорна пошта"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ml/strings.xml b/java/com/android/voicemail/impl/res/values-ml/strings.xml
index c30ebbc..d7fd31f 100644
--- a/java/com/android/voicemail/impl/res/values-ml/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ml/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"വിപുലമായ ക്രമീകരണം"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"അധിക ബായ്‌ക്കപ്പും സ്‌റ്റോറേജും"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" ഇത് നിലവിൽ ഞങ്ങൾ പരീക്ഷിക്കുന്ന "<b><i>"ഒരു പരീക്ഷണാത്മക ഫീച്ചറാണ്"</i></b>". ഇത് നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സെർവറിൽ നിന്ന് വോയ്‌സ്‌മെയിലുകൾ ഇല്ലാതാക്കാൻ സാധ്യതയുണ്ട്. ഈ ഫീച്ചർ ഭാവിയിൽ ഉപയോഗിക്കാനാവുമെന്ന് ഉറപ്പൊന്നുമില്ല. എങ്കിലും ഈ ഫീച്ചറിനെക്കുറിച്ചുള്ള ഫീഡ്‌ബാക്ക് അറിയാൻ ഞങ്ങൾ താൽപ്പര്യപ്പെടുന്നു."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"പിൻ സജ്ജമാക്കുക"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"പിൻ മാറ്റുക"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"പിൻ മാറ്റുന്നതിന് വിഷ്വൽ വോയ്‌സ്‌മെയിൽ പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്"</string>
diff --git a/java/com/android/voicemail/impl/res/values-mn/strings.xml b/java/com/android/voicemail/impl/res/values-mn/strings.xml
index a559d19..5f72634 100644
--- a/java/com/android/voicemail/impl/res/values-mn/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-mn/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Нарийвчилсан тохиргоо"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Уншиж болохуйц дуут шуудан"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Нэмэлт нөөцлөлт болон хадгалах сан"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" Энэ бол бидний одоо шалгаж буй "<b><i>"туршилтын функц"</i></b>". Энэ таны дуут шуудангийн серверээс дуут шуудангуудыг устгах магадлалтай. Цаашид энэ функцийг дэмжих баталгаа байхгүй. Гэхдээ энэ функцийн талаар санал хүсэлт илгээвэл талархах болно."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN тохируулах"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN өөрчлөх"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Харагдах дуут шуудан PIN-г өөрчлөх боломжтой байх ёстой"</string>
diff --git a/java/com/android/voicemail/impl/res/values-mr/strings.xml b/java/com/android/voicemail/impl/res/values-mr/strings.xml
index 56e864b..e8c546c 100644
--- a/java/com/android/voicemail/impl/res/values-mr/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-mr/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"प्रगत सेटिंग्ज"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"दृश्‍यमान व्हॉइसमेल"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"अतिरिक्त बॅक अप आणि संचय"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"हे प्रायोगिक वैशिष्ट्य आहे"</i></b>" आम्ही सध्‍या चाचणी घेत आहोत. हे आपल्या व्हॉइसमेल सर्व्हर मधून संभाव्यपणे व्हॉइसमेल हटवेल. भविष्‍यात या वैशिष्‍ट्यास समर्थन देण्याची हमी नाही. तरीही आम्ही वैशिष्‍ट्यावरील अभिप्राय घेऊ इच्छितो."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"पिन सेट करा"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"पिन बदला"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"पिन बदलण्‍यासाठी व्हिज्युअल व्हॉइसमेल सक्षम करणे आवश्‍यक आहे"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ms/strings.xml b/java/com/android/voicemail/impl/res/values-ms/strings.xml
index ea9b38f..4468d49 100644
--- a/java/com/android/voicemail/impl/res/values-ms/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ms/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Tetapan Terperinci"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Mel Suara Visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Sandaran dan storan tambahan"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ini ialah ciri percubaan"</i></b>" yang sedang kami uji. Ciri ini berupaya memadamkan mel suara daripada pelayan mel suara anda. Tiada jaminan bahawa ciri ini akan disokong pada masa hadapan. Namun begitu, kami berharap untuk menerima maklum balas tentang ciri ini."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Tetapkan PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Tukar PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Mel suara visual mesti didayakan untuk menukar PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-my/strings.xml b/java/com/android/voicemail/impl/res/values-my/strings.xml
index 6c78927..41e8835 100644
--- a/java/com/android/voicemail/impl/res/values-my/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-my/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"အဆင့်မြင့် ဆက်တင်များ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"စာသားမှတ်တမ်းပါ အသံမေးလ်"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"အပိုဆောင်း မိတ္တူနှင့် သိုလှောင်မှု"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" ဤသည်မှာ "<b><i>"စမ်းသပ်ဆဲဝန်ဆောင်မှုတစ်ခု"</i></b>" ဖြစ်ပါသည်။ ၎င်းက သင်၏အသံမေးလ်ဆာဗာမှ အသံမေးလ်များကို ဖျက်ပစ်နိုင်ပါသည်။ ဤဝန်ဆောင်မှုကို အနာဂတ်တွင် ဆက်လက်ရရှိနိုင်မည်ဟု အာမခံထားခြင်း မရှိသော်လည်း ၎င်းနှင့်ပတ်သက်သည့် အကြံပြုချက်များကို ရရှိလိုပါသည်။"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"ပင်နံပါတ် သတ်မှတ်ပါ"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"ပင်နံပါတ် ပြောင်းပါ"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"ပင်နံပါတ်ပြောင်းရန် စာသားမှတ်တမ်းပါ အသံမေးလ်ကို ဖွင့်ထားရပါမည်"</string>
diff --git a/java/com/android/voicemail/impl/res/values-nb/strings.xml b/java/com/android/voicemail/impl/res/values-nb/strings.xml
index 93e9e2a..afbdd3b 100644
--- a/java/com/android/voicemail/impl/res/values-nb/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-nb/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Avanserte innstillinger"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuell talepostkasse"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Ekstra sikkerhetskopi og lagring"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Denne funksjonen er fortsatt under utforskning"</i></b>", og det kan føre til at noen av talepostmelingene dine slettes. Vi kan dessverre ikke love at denne funksjonen støttes i fremtiden, men vi vil gjerne høre om hva du mener om den."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Angi PIN-kode"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Endre PIN-koden"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Du må slå på visuell talepost for å endre PIN-koden"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ne/strings.xml b/java/com/android/voicemail/impl/res/values-ne/strings.xml
index d729c23..a186535 100644
--- a/java/com/android/voicemail/impl/res/values-ne/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ne/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"उन्नत सेटिङहरू"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"भिजुअल भ्वाइस मेल"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"अतिरिक्त ब्याकअप र भण्डारण"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"यो एउटा प्रयोगात्मक विशेषता हो"</i></b>" हामी अहिले परीक्षण गर्दैछौं। यसले सम्भवत: तपाईंको भ्वाइस मेल सर्भरका भ्वाइस मेलहरूलाई मेट्ने छ। भविष्यमा यो विशेषतालाई समर्थन गरिने कुराको ग्यारेन्टी छैन। तथापि हामी यो विशेषताका सम्बन्धमा प्रतिक्रिया आऊन् भन्ने चाहन्छौं।"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN सेट गर्नुहोस्"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN परिवर्तन गर्नुहोस्"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN परिवर्तन गर्न अनिवार्य रूपले भिजुअल भ्वाइस मेललाई सक्षम पारिनुपर्छ"</string>
diff --git a/java/com/android/voicemail/impl/res/values-nl/strings.xml b/java/com/android/voicemail/impl/res/values-nl/strings.xml
index 7ae9f4e..ed66ab3 100644
--- a/java/com/android/voicemail/impl/res/values-nl/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-nl/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Geavanceerde instellingen"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuele voicemail"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Extra back-up en opslag"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Dit is een experimentele functie"</i></b>" die wordt getest. Mogelijk worden hierdoor voicemails van de voicemailserver verwijderd. Er is geen garantie dat we deze functie in de toekomst blijven ondersteunen. We zijn wel heel benieuwd naar jullie feedback over de functie."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Pincode instellen"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Pincode wijzigen"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Visuele voicemail moet zijn ingeschakeld om de pincode te wijzigen"</string>
diff --git a/java/com/android/voicemail/impl/res/values-no/strings.xml b/java/com/android/voicemail/impl/res/values-no/strings.xml
index 93e9e2a..afbdd3b 100644
--- a/java/com/android/voicemail/impl/res/values-no/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-no/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Avanserte innstillinger"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuell talepostkasse"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Ekstra sikkerhetskopi og lagring"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Denne funksjonen er fortsatt under utforskning"</i></b>", og det kan føre til at noen av talepostmelingene dine slettes. Vi kan dessverre ikke love at denne funksjonen støttes i fremtiden, men vi vil gjerne høre om hva du mener om den."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Angi PIN-kode"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Endre PIN-koden"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Du må slå på visuell talepost for å endre PIN-koden"</string>
diff --git a/java/com/android/voicemail/impl/res/values-pa/strings.xml b/java/com/android/voicemail/impl/res/values-pa/strings.xml
index f3551cc..ec68867 100644
--- a/java/com/android/voicemail/impl/res/values-pa/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-pa/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"ਉੱਨਤ ਸੈਟਿੰਗਾਂ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ਦ੍ਰਿਸ਼ਟਾਂਤਕ ਵੌਇਸਮੇਲ"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"ਵਾਧੂ ਬੈਕਅੱਪ ਅਤੇ ਸਟੋਰੇਜ"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"ਇਹ ਇੱਕ ਪ੍ਰਯੋਗਾਤਮਕ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ"</i></b>" ਜਿਸਦੀ ਅਸੀਂ ਇਸ ਵੇਲੇ ਜਾਂਚ ਕਰ ਰਹੇ ਹਾਂ। ਇਹ ਸੰਭਾਵੀ ਤੌਰ \'ਤੇ ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸਰਵਰ ਤੋਂ ਵੌਇਸਮੇਲਾਂ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗੀ। ਭਵਿੱਖ ਵਿੱਚ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦਾ ਸਮਰਥਨ ਕਰਨ ਦੀਆਂ ਕੋਈ ਗਾਰੰਟੀਆਂ ਨਹੀਂ ਹਨ। ਅਸੀਂ ਹਾਲਾਂਕਿ ਵਿਸ਼ੇਸ਼ਤਾ \'ਤੇ ਪ੍ਰਤੀਕਰਮ ਨੂੰ ਪਸੰਦ ਕਰਾਂਗੇ।"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN ਸੈੱਟ ਕਰੋ"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN ਬਦਲੋ"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"ਦ੍ਰਿਸ਼ਟਾਂਤਕ ਵੌਇਸਮੇਲ ਨੂੰ PIN ਬਦਲਣ ਲਈ ਯੋਗ ਬਣਾਇਆ ਜਾਣਾ ਲਾਜ਼ਮੀ ਹੈ"</string>
diff --git a/java/com/android/voicemail/impl/res/values-pl/strings.xml b/java/com/android/voicemail/impl/res/values-pl/strings.xml
index 83003df..25b8914 100644
--- a/java/com/android/voicemail/impl/res/values-pl/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-pl/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Ustawienia zaawansowane"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Wizualna poczta głosowa"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Dodatkowe miejsce i kopia zapasowa"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"To jest funkcja eksperymentalna"</i></b>", którą obecnie testujemy. Może ona usunąć wiadomości głosowe z Twojego serwera poczty głosowej. Nie gwarantujemy, że ta funkcja będzie w przyszłości obsługiwana. Chętnie jednak dowiemy się, co o niej sądzisz."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Ustaw kod PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Zmień kod PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Aby można było zmienić kod PIN, wizualna poczta głosowa musi być włączona"</string>
diff --git a/java/com/android/voicemail/impl/res/values-pt-rBR/strings.xml b/java/com/android/voicemail/impl/res/values-pt-rBR/strings.xml
index a0eee43..c93402e 100644
--- a/java/com/android/voicemail/impl/res/values-pt-rBR/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-pt-rBR/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Configurações avançadas"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Correio de voz visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Armazenamento extra e backup"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Este é um recurso experimental"</i></b>" que estamos testando. Talvez ele exclua os correios de voz do seu servidor. Não há garantias de suporte no futuro, mas gostaríamos de receber seu feedback."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Definir PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Alterar PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"O correio de voz visual precisa ser ativado para alterar o PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-pt-rPT/strings.xml b/java/com/android/voicemail/impl/res/values-pt-rPT/strings.xml
index 2be877e..00ed033 100644
--- a/java/com/android/voicemail/impl/res/values-pt-rPT/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-pt-rPT/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Definições avançadas"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Mensagem de correio de voz visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Cópia de segurança e armazenamento extra"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"É uma funcionalidade experimental"</i></b>" que estamos a testar. Poderá eliminar mensagens de correio de voz do servidor de correio de voz. Não há garantias de suporte para esta funcionalidade. Gostaríamos de receber comentários sobre a mesma."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Definir PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Alterar PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"A mensagem de correio de voz visual tem de estar ativada para poder alterar o PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-pt/strings.xml b/java/com/android/voicemail/impl/res/values-pt/strings.xml
index a0eee43..c93402e 100644
--- a/java/com/android/voicemail/impl/res/values-pt/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-pt/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Configurações avançadas"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Correio de voz visual"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Armazenamento extra e backup"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Este é um recurso experimental"</i></b>" que estamos testando. Talvez ele exclua os correios de voz do seu servidor. Não há garantias de suporte no futuro, mas gostaríamos de receber seu feedback."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Definir PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Alterar PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"O correio de voz visual precisa ser ativado para alterar o PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ro/strings.xml b/java/com/android/voicemail/impl/res/values-ro/strings.xml
index 1c98d5a..9099065 100644
--- a/java/com/android/voicemail/impl/res/values-ro/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ro/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Setări avansate"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Mesagerie vocală vizuală"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Backup și spațiu de stocare suplimentare"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Aceasta este o funcție experimentală"</i></b>" în curs de testare. E posibil ca mesajele vocale de pe serverul de mesagerie vocală să fie șterse. Nu se poate garanta acceptarea acestei funcții pe viitor, însă feedbackul dvs. e bine-venit."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Setați codul PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Schimbați codul PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Mesageria vocală vizuală trebuie activată pentru a schimba codul PIN."</string>
diff --git a/java/com/android/voicemail/impl/res/values-ru/strings.xml b/java/com/android/voicemail/impl/res/values-ru/strings.xml
index f899f14..322b41b 100644
--- a/java/com/android/voicemail/impl/res/values-ru/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ru/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Расширенные настройки"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Визуальная голосовая почта"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Дополнительное место для хранения и резервного копирования"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Это экспериментальная функция"</i></b>", которая сейчас проходит тестирование. Возможно, ваши голосовые сообщения будут удалены с вашего сервера. Поддержка этой функции в дальнейшем не гарантируется. Мы бы хотели узнать ваше мнение о ней."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Установка PIN-кода"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Изменение PIN-кода"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Чтобы изменить PIN-код, включите визуальную голосовую почту"</string>
diff --git a/java/com/android/voicemail/impl/res/values-si/strings.xml b/java/com/android/voicemail/impl/res/values-si/strings.xml
index b5dc782..8ad6f87 100644
--- a/java/com/android/voicemail/impl/res/values-si/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-si/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"උසස් සැකසීම්"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"දෘශ්‍ය හඬ තැපෑල"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"අතිරේක උපස්ථය සහ ගබඩාව"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"මෙය අත්හදා බැලීමේ විශේෂාංගයකි"</i></b>" අපි දැන් පරීක්ෂා කරමින් සිටිමු. මෙය විභව්‍යව හඬ තැපැල් ඔබේ සේවාදායකයෙන් මකනු ඇත. මෙම විශේෂාංගය අනාගතයේදී සහාය දැක්වීම ගැන ඇපවීම් නැත. එසේ වුවත් අපි විශේෂාංගය ගැන ප්‍රතිපෝෂණවලට ආදරය කරන්නෙමු."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN අංකය සකසන්න"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN අංකය වෙනස් කරන්න"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN අංකය වෙනස් කිරීමට දෘශ්‍ය හඬ තැපෑල සබල කළ යුතුය"</string>
diff --git a/java/com/android/voicemail/impl/res/values-sk/strings.xml b/java/com/android/voicemail/impl/res/values-sk/strings.xml
index 5a81a1b..80252d4 100644
--- a/java/com/android/voicemail/impl/res/values-sk/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-sk/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Rozšírené nastavenia"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizuálna hlasová schránka"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Ďalšie zálohovanie a úložisko"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Toto je experimentálna funkcia"</i></b>", ktorú práve testujeme. Táto funkcia vám môže odstrániť hlasové správy zo servera hlasovej schránky. Nemôžeme zaručiť, že bude podporovaná aj v budúcnosti, no budeme vám vďační za poskytnutie spätnej väzby."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Nastavenie kódu PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Zmena kódu PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN možno zmeniť až po povolení vizuálnej hlasovej schránky"</string>
diff --git a/java/com/android/voicemail/impl/res/values-sl/strings.xml b/java/com/android/voicemail/impl/res/values-sl/strings.xml
index ce0f40e..b634d15 100644
--- a/java/com/android/voicemail/impl/res/values-sl/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-sl/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Dodatne nastavitve"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizualno sporočilo v odzivniku"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Dodatno varnostno kopiranje in shramba"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"To je poskusna funkcija"</i></b>", za katero trenutno izvajamo preskuse. Sporočila v odzivniku bodo morda izbrisana iz strežnika za sporočila v odzivniku. Ni mogoče jamčiti, da bo ta funkcija podprta tudi v prihodnje. Kljub temu bomo veseli vaših povratnih informacij o funkciji."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Nastavitev kode PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Sprememba kode PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Če želite spremeniti kodo PIN, morajo biti vizualna sporočila v odzivniku omogočena"</string>
diff --git a/java/com/android/voicemail/impl/res/values-sq/strings.xml b/java/com/android/voicemail/impl/res/values-sq/strings.xml
index 472e60c..59db0fd 100644
--- a/java/com/android/voicemail/impl/res/values-sq/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-sq/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Cilësimet e përparuara"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Posta zanore vizuale"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Rezervimi dhe hapësira ruajtëse shtesë"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ky është një funksion eksperimental"</i></b>" që po e testojmë aktualisht. Kjo mund të fshijë posta zanore nga serveri i postës zanore. Nuk ka garanci për mbështetjen e këtij funksioni në të ardhmen. Megjithatë do të na pëlqente të merrnim komente për funksionin."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Konfiguro kodin PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Ndrysho kodin PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Duhet të aktivizohet posta zanore vizuale për të ndryshuar kodin PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-sr/strings.xml b/java/com/android/voicemail/impl/res/values-sr/strings.xml
index 431d0df..d4998ed 100644
--- a/java/com/android/voicemail/impl/res/values-sr/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-sr/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Напредна подешавања"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Визуелна говорна пошта"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Додатне резервне копије и простор"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Ово је експериментална функција"</i></b>" коју тренутно тестирамо. Тако ће се можда избрисати говорне поруке са сервера говорне поште. Нема гаранција да ће ова функција бити подржана и у будућности. Ипак, желимо да добијамо повратне информације о њој."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Подесите PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Промените PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Морате да омогућите визуелну говорну пошту да бисте променили PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-sv/strings.xml b/java/com/android/voicemail/impl/res/values-sv/strings.xml
index cba2b15..c69a2df 100644
--- a/java/com/android/voicemail/impl/res/values-sv/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-sv/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Avancerade inställningar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visuell röstbrevlåda"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Extra säkerhetskopiering och lagring"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Det här är en experimentfunktion"</i></b>" som vi för närvarande testar. Den kan potentiellt radera röstmeddelanden på röstbrevlådans server. Vi garanterar inte support för den här funktionen i framtiden. Vi är dock tacksamma för synpunkter om funktionen."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Ställ in pinkod"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Ändra pinkod"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Visuell röstbrevlåda måste vara aktiverat för att ändra pinkoden"</string>
diff --git a/java/com/android/voicemail/impl/res/values-sw/strings.xml b/java/com/android/voicemail/impl/res/values-sw/strings.xml
index 99de90c..d1cccc7 100644
--- a/java/com/android/voicemail/impl/res/values-sw/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-sw/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Mipangilio ya Kina"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Ujumbe wa Sauti Unaoonekana"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Nafasi ya ziada na hifadhi rudufu"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Hiki ni kipengele cha majaribio"</i></b>" tunachoijaribu kwa sasa. Huenda kitafuta ujumbe wa sauti kutoka kwenye seva yako ya ujumbe wa sauti. Hakuna hakikisho yoyote kwamba kipengele hiki kitatumika katika siku zijazo. Hata hivyo, tungependa kupata maoni yako kuhusu kipengele hiki."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Weka PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Badilisha PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Lazima uruhusu kipengele cha ujumbe wa sauti unaoonekana ili ubadilishe PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ta/strings.xml b/java/com/android/voicemail/impl/res/values-ta/strings.xml
index a6c97c1..0c3c454 100644
--- a/java/com/android/voicemail/impl/res/values-ta/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ta/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"மேம்பட்ட அமைப்புகள்"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"விஷூவல் குரலஞ்சல்"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"கூடுதல் காப்புப் பிரதியும் சேமிப்பகமும்"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" தற்போது நாங்கள் நடத்தி வரும் சோதனையில் "<b><i>"இது ஒரு சோதனை அம்சமாகும்"</i></b>". இது உங்கள் குரலஞ்சல் சேவையகத்திலிருந்து குரலஞ்சல்களை நீக்க சாத்தியமுள்ளது. இந்த அம்சம் எதிர்காலத்தில் ஆதரிக்கப்படும் என்பதற்கு உத்திரவாதம் இல்லை. இருப்பினும் இந்த அம்சத்தைப் பற்றிய கருத்தை வரவேற்கிறோம்."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"பின்னை அமை"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"பின்னை மாற்று"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"பின்னை மாற்ற, விஷுவல் குரலஞ்சலை இயக்க வேண்டும்"</string>
diff --git a/java/com/android/voicemail/impl/res/values-te/strings.xml b/java/com/android/voicemail/impl/res/values-te/strings.xml
index 2ad08cf..7a865f4 100644
--- a/java/com/android/voicemail/impl/res/values-te/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-te/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"అధునాతన సెట్టింగ్‌లు"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"దృశ్యమాన వాయిస్ మెయిల్"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"అదనపు బ్యాకప్ మరియు నిల్వ"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"ఇది ప్రయోగాత్మక లక్షణం"</i></b>" ప్రస్తుతం మేము దీన్ని పరీక్షిస్తున్నాము. దీని వలన మీ వాయిస్ మెయిల్ సర్వర్ నుండి సంభావ్యంగా వాయిస్ మెయిల్‌లు తొలగించబడతాయి. భవిష్యత్తులో ఈ లక్షణానికి మద్దతు ఉంటుందని ఎలాంటి హామీ అందించబడదు. అయితే, లక్షణంపై అభిప్రాయాన్ని అందిస్తే మేము సంతోషిస్తాము."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PINని సెట్ చేయండి"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PINను మార్చండి"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PINని మార్చడానికి తప్పనిసరిగా దృశ్యమాన వాయిస్ మెయిల్‌ను ప్రారంభించాలి"</string>
diff --git a/java/com/android/voicemail/impl/res/values-th/strings.xml b/java/com/android/voicemail/impl/res/values-th/strings.xml
index 49b07df..68b32fb 100644
--- a/java/com/android/voicemail/impl/res/values-th/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-th/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"การตั้งค่าขั้นสูง"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"ภาพแสดงข้อความเสียง"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"การสำรองข้อมูลและพื้นที่เก็บข้อมูลเพิ่มเติม"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"นี่คือคุณลักษณะทดลอง"</i></b>"ที่เรากำลังทดสอบการใช้งานอยู่ ซึ่งอาจลบข้อความเสียงออกจากเซิร์ฟเวอร์ข้อความเสียงได้ เราไม่รับประกันว่าจะรองรับคุณลักษณะนี้ในอนาคต แต่ยินดีรับฟังความคิดเห็น"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"ตั้งค่า PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"เปลี่ยน PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"ต้องเปิดใช้ข้อความเสียงพร้อมภาพเพื่อเปลี่ยน PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-tl/strings.xml b/java/com/android/voicemail/impl/res/values-tl/strings.xml
index 62623b6..c14919c 100644
--- a/java/com/android/voicemail/impl/res/values-tl/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-tl/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Mga Advanced na Setting"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Visual na Voicemail"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Karagdagang backup at storage"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Eksperimental na feature ito"</i></b>" na kasalukuyan naming sinusubukan. Posible nitong i-delete ang mga voicemail mula sa iyong server ng voicemail. Walang garantiyang susuportahan ang feature na ito sa hinaharap. Gayunpaman, gusto naming makakuha ng feedback tungkol sa feature."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Magtakda ng PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Palitan ang PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Dapat naka-enable ang visual na voicemail upang palitan ang PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-tr/strings.xml b/java/com/android/voicemail/impl/res/values-tr/strings.xml
index aed722a..e8f9336 100644
--- a/java/com/android/voicemail/impl/res/values-tr/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-tr/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Gelişmiş Ayarlar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Görsel Sesli Mesaj"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Ekstra yedekleme ve depolama alanı"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b>"Bu, test etmekte olduğumuz "<i>"deneysel bir özelliktir"</i></b>". Bu özellik, sesli mesaj sunucunuzdaki mesajların silinmesine neden olabilir ve gelecekte desteklenmeyebilir. Yine de özellikle ilgili geri bildiriminizi öğrenmek isteriz."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN belirleyin"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN\'i değiştirin"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN\'i değiştirebilmek için görsel sesli mesaj etkinleştirilmelidir"</string>
diff --git a/java/com/android/voicemail/impl/res/values-uk/strings.xml b/java/com/android/voicemail/impl/res/values-uk/strings.xml
index c3cbee6..760177c 100644
--- a/java/com/android/voicemail/impl/res/values-uk/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-uk/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Розширені налаштування"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Візуальна голосова пошта"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Додаткова пам’ять і резервне копіювання"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Це експериментальна функція,"</i></b>" яку ми зараз тестуємо. У результаті її використання голосові повідомлення може бути видалено із сервера голосової пошти. Ми не гарантуємо, що ця функція підтримуватиметься в майбутньому, однак хочемо отримати відгук про неї."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Установити PIN-код"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Змінити PIN-код"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Щоб змінити PIN-код, потрібно ввімкнути візуальну голосову пошту"</string>
diff --git a/java/com/android/voicemail/impl/res/values-ur/strings.xml b/java/com/android/voicemail/impl/res/values-ur/strings.xml
index 201e6e9..2105fae 100644
--- a/java/com/android/voicemail/impl/res/values-ur/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-ur/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"اعلی ترتیبات"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"بصری صوتی میل"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"اضافی بیک اپ اور اسٹوریج"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"یہ ایک تجرباتی خصوصیت ہے"</i></b>" جسے ابھی ہم ٹیسٹ کر رہے ہیں۔ یہ ممکنہ طور پر آپ کے صوتی میل سرور پر سے آپ کی صوتی میلز کو حذف کر دے گی۔ مستقبل میں اس خصوصیت کی معاونت کی کوئی ضمانت نہیں ہے۔ لیکن ہم اس خصوصیت پر تاثرات پسند کریں گے۔"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"‏PIN سیٹ کریں"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"‏PIN تبدیل کریں"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"‏PIN تبدیل کرنے کیلئے بصری صوتی میل اہل ہونی چاہئیے"</string>
diff --git a/java/com/android/voicemail/impl/res/values-uz/strings.xml b/java/com/android/voicemail/impl/res/values-uz/strings.xml
index 7f26475..fad7916 100644
--- a/java/com/android/voicemail/impl/res/values-uz/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-uz/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Kengaytirilgan sozlamalar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Vizual ovozli pochta"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Zaxira. va saqlash u-n qo‘shimcha xotira"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Bu – tajribaviy xususiyat bo‘lib,"</i></b>" u ayni vaqtda sinovdan o‘tkazilmoqda. Sizning ovozli xabarlaringiz, ehtimol, ovozli pochta serveridan o‘chirib tashlanadi. Bu xususiyatning keyinchalik qo‘llab-quvvatlanishi kafolatlanmaydi. Shunday bo‘lsa-da, u haqda fikr-mulohaza bildirishingizni xohlaymiz."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"PIN kod o‘rnatish"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"PIN kodni o‘zgartirish"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"PIN kodni o‘zgartirish uchun vizual ovozli pochtani yoqish lozim."</string>
diff --git a/java/com/android/voicemail/impl/res/values-vi/strings.xml b/java/com/android/voicemail/impl/res/values-vi/strings.xml
index a0b25f8..1d029ea 100644
--- a/java/com/android/voicemail/impl/res/values-vi/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-vi/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Cài đặt nâng cao"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Thư thoại kèm theo hình ảnh"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Bộ nhớ và bản sao lưu bổ sung"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Đây là một tính năng thử nghiệm"</i></b>" chúng tôi hiện đang thử nghiệm. Tính năng này có khả năng sẽ xóa thư thoại khỏi máy chủ thư thoại của bạn. Không có đảm bảo về việc hỗ trợ tính năng này trong tương lai. Mặc dù vậy, chúng tôi vẫn mong muốn nhận được phản hồi về tính năng này."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Đặt mã PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Thay đổi mã PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Phải bật thư thoại kèm theo hình ảnh để thay đổi mã PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-zh-rCN/strings.xml b/java/com/android/voicemail/impl/res/values-zh-rCN/strings.xml
index 9bfbe36..d70f1fa 100644
--- a/java/com/android/voicemail/impl/res/values-zh-rCN/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-zh-rCN/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"高级设置"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"可视语音信箱"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"额外存储空间和备份功能"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"这是一项试验性功能"</i></b>" 我们目前正在进行测试。使用此功能可能会将语音邮件从您的语音邮件服务器上删除。我们不保证将来会支持此功能，但希望能收到针对此功能的反馈。"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"设置 PIN 码"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"更改 PIN 码"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"必须启用可视语音信箱才可更改 PIN 码"</string>
diff --git a/java/com/android/voicemail/impl/res/values-zh-rHK/strings.xml b/java/com/android/voicemail/impl/res/values-zh-rHK/strings.xml
index 6c1ed4d..4adc3fd 100644
--- a/java/com/android/voicemail/impl/res/values-zh-rHK/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-zh-rHK/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"進階設定"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"視像留言"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"額外備份功能和儲存空間"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"此為我們目前正在測試的實驗性功能"</i></b>"，有可能會將您的留言從留言伺服器刪除。我們不保證日後會支援此功能，但還是歡迎您提供相關意見。"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"設定 PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"變更 PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"必須啟用視像留言才能變更 PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-zh-rTW/strings.xml b/java/com/android/voicemail/impl/res/values-zh-rTW/strings.xml
index 0af6ed1..6ff084f 100644
--- a/java/com/android/voicemail/impl/res/values-zh-rTW/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-zh-rTW/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"進階設定"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"視覺化語音信箱"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"額外的備份功能和儲存空間"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b>"這是實驗性功能"<i></i></b>"，目前正在測試階段，而且可能會從你的語音信箱伺服器中刪除語音留言。我們不保證日後會支援此功能，但還是希望聽聽你的寶貴意見。"</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"設定 PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"變更 PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"必須啟用視覺化語音信箱才能變更 PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values-zu/strings.xml b/java/com/android/voicemail/impl/res/values-zu/strings.xml
index 81d4d35..5adf300 100644
--- a/java/com/android/voicemail/impl/res/values-zu/strings.xml
+++ b/java/com/android/voicemail/impl/res/values-zu/strings.xml
@@ -24,7 +24,6 @@
     <string name="voicemail_advanced_settings_title" msgid="6390900339808156711">"Izilungiselelo ezithuthukisiwe"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="3158454817165714998">"Ivoyisimeyili ebonakalayo"</string>
     <string name="voicemail_visual_voicemail_auto_archive_switch_title" msgid="7120443850486401455">"Isipele esingeziwe nesitoreji"</string>
-    <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer" msgid="401509437213449235">" "<b><i>"Lesi isici sokuhlola"</i></b>" manje esisihlolayo. Lokhu kunamandla okususa amavoyisimeyili kusukela kuseva yakho yevoyisimeyili. Azikho iziqinisekiso zokusekela lesi sici ngokuzayo. Singathanda impendulo kusici yize kunjalo."</string>
     <string name="voicemail_set_pin_preference_title" msgid="1034691230818233684">"Setha i-PIN"</string>
     <string name="voicemail_change_pin_preference_title" msgid="8944570865151211693">"Shintsha i-PIN"</string>
     <string name="voicemail_change_pin_preference_summary_disable" msgid="2787334822298063691">"Ivoyisimeyili ebonakalayo kumele inikwe amandla ukuze ishintshe i-PIN"</string>
diff --git a/java/com/android/voicemail/impl/res/values/strings.xml b/java/com/android/voicemail/impl/res/values/strings.xml
index c808561..bb754d1 100644
--- a/java/com/android/voicemail/impl/res/values/strings.xml
+++ b/java/com/android/voicemail/impl/res/values/strings.xml
@@ -59,11 +59,6 @@
   <string name="voicemail_visual_voicemail_auto_archive_switch_title">
     Extra backup and storage
   </string>
-  <!-- Visual voicemail archive temporary description [CHAR LIMIT=40] -->
-  <string name="voicemail_visual_voicemail_auto_archive_temporary_disclaimer">
-  <b><i>This is a experimental feature</i></b> we are currently testing. This will potentially delete voicemails from your voicemail server. There are no guarantees of supporting this feature in the future. We would love feedback on the feature though."
-  </string>
-
 
   <!-- Voicemail change PIN dialog title [CHAR LIMIT=40] -->
   <string name="voicemail_set_pin_preference_title">Set PIN</string>
diff --git a/java/com/android/voicemail/impl/scheduling/BaseTask.java b/java/com/android/voicemail/impl/scheduling/BaseTask.java
index 4cc6dd5..0144e34 100644
--- a/java/com/android/voicemail/impl/scheduling/BaseTask.java
+++ b/java/com/android/voicemail/impl/scheduling/BaseTask.java
@@ -18,12 +18,14 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
 import android.os.SystemClock;
 import android.support.annotation.CallSuper;
 import android.support.annotation.MainThread;
 import android.support.annotation.NonNull;
 import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.NeededForTesting;
 import java.util.ArrayList;
@@ -33,10 +35,15 @@
  * Provides common utilities for task implementations, such as execution time and managing {@link
  * Policy}
  */
+@UsedByReflection(value = "Tasks.java")
 public abstract class BaseTask implements Task {
 
   private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
 
+  private static final String EXTRA_EXECUTION_TIME = "extra_execution_time";
+
+  private Bundle mExtras;
+
   private Context mContext;
 
   private int mId;
@@ -58,7 +65,7 @@
 
   /**
    * Modify the task ID to prevent arbitrary task from executing. Can only be called before {@link
-   * #onCreate(Context, Intent, int, int)} returns.
+   * #onCreate(Context, Bundle)} returns.
    */
   @MainThread
   public void setId(int id) {
@@ -86,8 +93,7 @@
     return mPhoneAccountHandle;
   }
   /**
-   * Should be call in the constructor or {@link Policy#onCreate(BaseTask, Intent, int, int)} will
-   * be missed.
+   * Should be call in the constructor or {@link Policy#onCreate(BaseTask, Bundle)} will be missed.
    */
   @MainThread
   public BaseTask addPolicy(Policy policy) {
@@ -107,6 +113,7 @@
     mHasFailed = true;
   }
 
+  /** @param timeMillis the time since epoch, in milliseconds. */
   @MainThread
   public void setExecutionTime(long timeMillis) {
     Assert.isMainThread();
@@ -131,7 +138,7 @@
    */
   public static Intent createIntent(
       Context context, Class<? extends BaseTask> task, PhoneAccountHandle phoneAccountHandle) {
-    Intent intent = TaskSchedulerService.createIntent(context, task);
+    Intent intent = Tasks.createIntent(context, task);
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
     return intent;
   }
@@ -142,12 +149,27 @@
   }
 
   @Override
+  public Bundle toBundle() {
+    mExtras.putLong(EXTRA_EXECUTION_TIME, mExecutionTime);
+    return mExtras;
+  }
+
+  @Override
   @CallSuper
-  public void onCreate(Context context, Intent intent, int flags, int startId) {
+  public void onCreate(Context context, Bundle extras) {
     mContext = context;
-    mPhoneAccountHandle = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
+    mExtras = extras;
+    mPhoneAccountHandle = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
     for (Policy policy : mPolicies) {
-      policy.onCreate(this, intent, flags, startId);
+      policy.onCreate(this, extras);
+    }
+  }
+
+  @Override
+  @CallSuper
+  public void onRestore(Bundle extras) {
+    if (mExtras.containsKey(EXTRA_EXECUTION_TIME)) {
+      mExecutionTime = extras.getLong(EXTRA_EXECUTION_TIME);
     }
   }
 
diff --git a/java/com/android/voicemail/impl/scheduling/BlockerTask.java b/java/com/android/voicemail/impl/scheduling/BlockerTask.java
index 353508d..1c8bada 100644
--- a/java/com/android/voicemail/impl/scheduling/BlockerTask.java
+++ b/java/com/android/voicemail/impl/scheduling/BlockerTask.java
@@ -17,10 +17,12 @@
 package com.android.voicemail.impl.scheduling;
 
 import android.content.Context;
-import android.content.Intent;
+import android.os.Bundle;
+import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.VvmLog;
 
 /** Task to block another task of the same ID from being queued for a certain amount of time. */
+@UsedByReflection(value = "Tasks.java")
 public class BlockerTask extends BaseTask {
 
   private static final String TAG = "BlockerTask";
@@ -33,10 +35,10 @@
   }
 
   @Override
-  public void onCreate(Context context, Intent intent, int flags, int startId) {
-    super.onCreate(context, intent, flags, startId);
-    setId(intent.getIntExtra(EXTRA_TASK_ID, TASK_INVALID));
-    setExecutionTime(getTimeMillis() + intent.getIntExtra(EXTRA_BLOCK_FOR_MILLIS, 0));
+  public void onCreate(Context context, Bundle extras) {
+    super.onCreate(context, extras);
+    setId(extras.getInt(EXTRA_TASK_ID, TASK_INVALID));
+    setExecutionTime(getTimeMillis() + extras.getInt(EXTRA_BLOCK_FOR_MILLIS, 0));
   }
 
   @Override
@@ -46,6 +48,6 @@
 
   @Override
   public void onDuplicatedTaskAdded(Task task) {
-    VvmLog.v(TAG, task.toString() + "blocked, " + getReadyInMilliSeconds() + "millis remaining");
+    VvmLog.i(TAG, task + "blocked, " + getReadyInMilliSeconds() + "millis remaining");
   }
 }
diff --git a/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java b/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java
index 8b2fe70..76fba4f 100644
--- a/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java
+++ b/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java
@@ -17,6 +17,7 @@
 package com.android.voicemail.impl.scheduling;
 
 import android.content.Intent;
+import android.os.Bundle;
 import com.android.voicemail.impl.scheduling.Task.TaskId;
 
 /**
@@ -35,7 +36,7 @@
   }
 
   @Override
-  public void onCreate(BaseTask task, Intent intent, int flags, int startId) {
+  public void onCreate(BaseTask task, Bundle extras) {
     mTask = task;
     mId = mTask.getId();
   }
@@ -47,7 +48,7 @@
   public void onCompleted() {
     if (!mTask.hasFailed()) {
       Intent intent =
-          mTask.createIntent(mTask.getContext(), BlockerTask.class, mId.phoneAccountHandle);
+          BaseTask.createIntent(mTask.getContext(), BlockerTask.class, mId.phoneAccountHandle);
       intent.putExtra(BlockerTask.EXTRA_TASK_ID, mId.id);
       intent.putExtra(BlockerTask.EXTRA_BLOCK_FOR_MILLIS, mBlockForMillis);
       mTask.getContext().startService(intent);
diff --git a/java/com/android/voicemail/impl/scheduling/Policy.java b/java/com/android/voicemail/impl/scheduling/Policy.java
index 6077821..9624aeb 100644
--- a/java/com/android/voicemail/impl/scheduling/Policy.java
+++ b/java/com/android/voicemail/impl/scheduling/Policy.java
@@ -16,7 +16,7 @@
 
 package com.android.voicemail.impl.scheduling;
 
-import android.content.Intent;
+import android.os.Bundle;
 
 /**
  * A set of listeners managed by {@link BaseTask} for common behaviors such as retrying. Call {@link
@@ -24,7 +24,7 @@
  */
 public interface Policy {
 
-  void onCreate(BaseTask task, Intent intent, int flags, int startId);
+  void onCreate(BaseTask task, Bundle extras);
 
   void onBeforeExecute();
 
diff --git a/java/com/android/voicemail/impl/scheduling/PostponePolicy.java b/java/com/android/voicemail/impl/scheduling/PostponePolicy.java
index e24df0c..46773b5 100644
--- a/java/com/android/voicemail/impl/scheduling/PostponePolicy.java
+++ b/java/com/android/voicemail/impl/scheduling/PostponePolicy.java
@@ -16,7 +16,7 @@
 
 package com.android.voicemail.impl.scheduling;
 
-import android.content.Intent;
+import android.os.Bundle;
 import com.android.voicemail.impl.VvmLog;
 
 /**
@@ -37,7 +37,7 @@
   }
 
   @Override
-  public void onCreate(BaseTask task, Intent intent, int flags, int startId) {
+  public void onCreate(BaseTask task, Bundle extras) {
     mTask = task;
     mTask.setExecutionTime(mTask.getTimeMillis() + mPostponeMillis);
   }
@@ -62,7 +62,7 @@
     if (mTask.hasStarted()) {
       return;
     }
-    VvmLog.d(TAG, "postponing " + mTask);
+    VvmLog.i(TAG, "postponing " + mTask);
     mTask.setExecutionTime(mTask.getTimeMillis() + mPostponeMillis);
   }
 }
diff --git a/java/com/android/voicemail/impl/scheduling/RetryPolicy.java b/java/com/android/voicemail/impl/scheduling/RetryPolicy.java
index a8e4a3d..b8703ea 100644
--- a/java/com/android/voicemail/impl/scheduling/RetryPolicy.java
+++ b/java/com/android/voicemail/impl/scheduling/RetryPolicy.java
@@ -17,6 +17,7 @@
 package com.android.voicemail.impl.scheduling;
 
 import android.content.Intent;
+import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.VvmLog;
@@ -60,11 +61,11 @@
   }
 
   @Override
-  public void onCreate(BaseTask task, Intent intent, int flags, int startId) {
+  public void onCreate(BaseTask task, Bundle extras) {
     mTask = task;
-    mRetryCount = intent.getIntExtra(EXTRA_RETRY_COUNT, 0);
+    mRetryCount = extras.getInt(EXTRA_RETRY_COUNT, 0);
     if (mRetryCount > 0) {
-      VvmLog.d(
+      VvmLog.i(
           TAG,
           "retry #" + mRetryCount + " for " + mTask + " queued, executing in " + mRetryDelayMillis);
       mTask.setExecutionTime(mTask.getTimeMillis() + mRetryDelayMillis);
@@ -85,10 +86,10 @@
   public void onCompleted() {
     if (!mFailed || !hasMoreRetries()) {
       if (!mFailed) {
-        VvmLog.d(TAG, mTask.toString() + " completed successfully");
+        VvmLog.i(TAG, mTask + " completed successfully");
       }
       if (!hasMoreRetries()) {
-        VvmLog.d(TAG, "Retry limit for " + mTask + " reached");
+        VvmLog.i(TAG, "Retry limit for " + mTask + " reached");
       }
       VvmLog.i(TAG, "committing deferred status: " + mVoicemailStatusEditor.getValues());
       mVoicemailStatusEditor.deferredApply();
diff --git a/java/com/android/voicemail/impl/scheduling/Task.java b/java/com/android/voicemail/impl/scheduling/Task.java
index 2d08f5b..447a9db 100644
--- a/java/com/android/voicemail/impl/scheduling/Task.java
+++ b/java/com/android/voicemail/impl/scheduling/Task.java
@@ -17,26 +17,24 @@
 package com.android.voicemail.impl.scheduling;
 
 import android.content.Context;
-import android.content.Intent;
+import android.os.Bundle;
 import android.support.annotation.MainThread;
 import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
 import java.util.Objects;
 
 /**
- * A task for {@link TaskSchedulerService} to execute. Since the task is sent through a intent to
- * the scheduler, The task must be constructable with the intent. Specifically, It must have a
- * constructor with zero arguments, and have all relevant data packed inside the intent. Use {@link
- * TaskSchedulerService#createIntent(Context, Class)} to create a intent that will construct the
- * Task.
+ * A task for {@link TaskSchedulerService} to execute. Since the task is sent through a bundle to
+ * the scheduler, The task must be constructable with the bundle. Specifically, It must have a
+ * constructor with zero arguments, and have all relevant data packed inside the bundle. Use {@link
+ * Tasks#createIntent(Context, Class)} to create a intent that will construct the Task.
  *
  * <p>Only {@link #onExecuteInBackgroundThread()} is run on the worker thread.
  */
 public interface Task {
-
   /**
    * TaskId to indicate it has not be set. If a task does not provide a default TaskId it should be
-   * set before {@link Task#onCreate(Context, Intent, int, int) returns}
+   * set before {@link Task#onCreate(Context, Bundle)} returns
    */
   int TASK_INVALID = -1;
 
@@ -49,6 +47,7 @@
   int TASK_UPLOAD = 1;
   int TASK_SYNC = 2;
   int TASK_ACTIVATION = 3;
+  int TASK_STATUS_CHECK = 4;
 
   /**
    * Used to differentiate between types of tasks. If a task with the same TaskId is already in the
@@ -87,8 +86,29 @@
 
   TaskId getId();
 
+  /**
+   * Serializes the task into a bundle, which will be stored in a {@link android.app.job.JobInfo}
+   * and used to reconstruct the task even if the app is terminated. The task will be initialized
+   * with {@link #onCreate(Context, Bundle)}.
+   */
+  Bundle toBundle();
+
+  /**
+   * A task object is created through reflection, calling the default constructor. The actual
+   * initialization is done in this method. If the task is not a new instance, but being restored
+   * from a bundle, {@link #onRestore(Bundle)} will be called afterwards.
+   */
   @MainThread
-  void onCreate(Context context, Intent intent, int flags, int startId);
+  void onCreate(Context context, Bundle extras);
+
+  /**
+   * Called after {@link #onCreate(Context, Bundle)} if the task is being restored from a Bundle
+   * instead creating a new instance. For example, if the task is stored in {@link
+   * TaskSchedulerJobService} during a long sleep, this will be called when the job is ran again and
+   * the tasks are being restored from the saved state.
+   */
+  @MainThread
+  void onRestore(Bundle extras);
 
   /**
    * @return number of milliSeconds the scheduler should wait before running this task. A value less
diff --git a/java/com/android/voicemail/impl/scheduling/TaskQueue.java b/java/com/android/voicemail/impl/scheduling/TaskQueue.java
new file mode 100644
index 0000000..fc5aa94
--- /dev/null
+++ b/java/com/android/voicemail/impl/scheduling/TaskQueue.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2017 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 com.android.voicemail.impl.scheduling;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import com.android.voicemail.impl.Assert;
+import com.android.voicemail.impl.VvmLog;
+import com.android.voicemail.impl.scheduling.Task.TaskId;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Queue;
+
+/**
+ * A queue that manages priority and duplication of {@link Task}. A task is identified by a {@link
+ * TaskId}, which consists of an integer representing the operation the task, and a {@link
+ * android.telecom.PhoneAccountHandle} representing which SIM it is operated on.
+ */
+class TaskQueue implements Iterable<Task> {
+
+  private final Queue<Task> queue = new ArrayDeque<>();
+
+  public List<Bundle> toBundles() {
+    List<Bundle> result = new ArrayList<>(queue.size());
+    for (Task task : queue) {
+      result.add(Tasks.toBundle(task));
+    }
+    return result;
+  }
+
+  public void fromBundles(Context context, List<Bundle> pendingTasks) {
+    Assert.isTrue(queue.isEmpty());
+    for (Bundle pendingTask : pendingTasks) {
+      Task task = Tasks.createTask(context, pendingTask);
+      task.onRestore(pendingTask);
+      add(task);
+    }
+  }
+
+  /**
+   * Add a new task to the queue. A new task with a TaskId collision will be discarded, and {@link
+   * Task#onDuplicatedTaskAdded(Task)} will be called on the existing task.
+   *
+   * @return {@code true} if the task is added, or {@code false} if the task is discarded due to
+   *     collision.
+   */
+  public boolean add(Task task) {
+    if (task.getId().id == Task.TASK_INVALID) {
+      throw new AssertionError("Task id was not set to a valid value before adding.");
+    }
+    if (task.getId().id != Task.TASK_ALLOW_DUPLICATES) {
+      Task oldTask = getTask(task.getId());
+      if (oldTask != null) {
+        oldTask.onDuplicatedTaskAdded(task);
+        VvmLog.i("TaskQueue.add", "duplicated task added");
+        return false;
+      }
+    }
+    queue.add(task);
+    return true;
+  }
+
+  public void remove(Task task) {
+    queue.remove(task);
+  }
+
+  public Task getTask(TaskId id) {
+    Assert.isMainThread();
+    for (Task task : queue) {
+      if (task.getId().equals(id)) {
+        return task;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Packed return value of {@link #getNextTask(long)}. If a runnable task is found {@link
+   * #minimalWaitTimeMillis} will be {@code null}. If no tasks is runnable {@link #task} will be
+   * {@code null}, and {@link #minimalWaitTimeMillis} will contain the time to wait. If there are no
+   * tasks at all both will be {@code null}.
+   */
+  static final class NextTask {
+    @Nullable final Task task;
+    @Nullable final Long minimalWaitTimeMillis;
+
+    NextTask(@Nullable Task task, @Nullable Long minimalWaitTimeMillis) {
+      this.task = task;
+      this.minimalWaitTimeMillis = minimalWaitTimeMillis;
+    }
+  }
+
+  /**
+   * The next task is the first task with {@link Task#getReadyInMilliSeconds()} return a value less
+   * then {@code readyToleranceMillis}, in insertion order. If no task matches this criteria, the
+   * minimal value of {@link Task#getReadyInMilliSeconds()} is returned instead. If there are no
+   * tasks at all, the minimalWaitTimeMillis will also be null.
+   */
+  @NonNull
+  NextTask getNextTask(long readyToleranceMillis) {
+    Long minimalWaitTime = null;
+    for (Task task : queue) {
+      long waitTime = task.getReadyInMilliSeconds();
+      if (waitTime < readyToleranceMillis) {
+        return new NextTask(task, 0L);
+      } else {
+        if (minimalWaitTime == null || waitTime < minimalWaitTime) {
+          minimalWaitTime = waitTime;
+        }
+      }
+    }
+    return new NextTask(null, minimalWaitTime);
+  }
+
+  public void clear() {
+    queue.clear();
+  }
+
+  public int size() {
+    return queue.size();
+  }
+
+  public boolean isEmpty() {
+    return queue.isEmpty();
+  }
+
+  @Override
+  public Iterator<Task> iterator() {
+    return queue.iterator();
+  }
+}
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
new file mode 100644
index 0000000..eab410e
--- /dev/null
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2017 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 com.android.voicemail.impl.scheduling;
+
+import android.annotation.TargetApi;
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Build.VERSION_CODES;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.Parcelable;
+import android.support.annotation.MainThread;
+import com.android.dialer.constants.ScheduledJobIds;
+import com.android.voicemail.impl.Assert;
+import com.android.voicemail.impl.VvmLog;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A {@link JobService} that will trigger the background execution of {@link TaskSchedulerService}.
+ */
+@TargetApi(VERSION_CODES.O)
+public class TaskSchedulerJobService extends JobService implements TaskSchedulerService.Job {
+
+  private static final String TAG = "TaskSchedulerJobService";
+
+  private static final String EXTRA_TASK_EXTRAS_ARRAY = "extra_task_extras_array";
+
+  private JobParameters jobParameters;
+  private TaskSchedulerService scheduler;
+
+  private final ServiceConnection mConnection =
+      new ServiceConnection() {
+
+        @Override
+        public void onServiceConnected(ComponentName className, IBinder binder) {
+          VvmLog.i(TAG, "TaskSchedulerService connected");
+          scheduler = ((TaskSchedulerService.LocalBinder) binder).getService();
+          scheduler.onStartJob(
+              TaskSchedulerJobService.this,
+              getBundleList(
+                  jobParameters.getTransientExtras().getParcelableArray(EXTRA_TASK_EXTRAS_ARRAY)));
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName unused) {
+          // local service, process should always be killed together.
+          Assert.fail();
+        }
+      };
+
+  @Override
+  @MainThread
+  public boolean onStartJob(JobParameters params) {
+    jobParameters = params;
+    bindService(
+        new Intent(this, TaskSchedulerService.class), mConnection, Context.BIND_AUTO_CREATE);
+    return true /* job still running in background */;
+  }
+
+  @Override
+  @MainThread
+  public boolean onStopJob(JobParameters params) {
+    scheduler.onStopJob();
+    jobParameters = null;
+    return false /* don't reschedule. TaskScheduler service will post a new job */;
+  }
+
+  /**
+   * Schedule a job to run the {@code pendingTasks}. If a job is already scheduled it will be
+   * appended to the back of the queue and the job will be rescheduled.
+   *
+   * @param delayMillis delay before running the job. Must be 0 if{@code isNewJob} is true.
+   * @param isNewJob a new job will be forced to run immediately.
+   */
+  @MainThread
+  public static void scheduleJob(
+      Context context, List<Bundle> pendingTasks, long delayMillis, boolean isNewJob) {
+    Assert.isMainThread();
+    JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
+    JobInfo pendingJob = jobScheduler.getPendingJob(ScheduledJobIds.VVM_TASK_SCHEDULER_JOB);
+    VvmLog.i(TAG, "scheduling job with " + pendingTasks.size() + " tasks");
+    if (pendingJob != null) {
+      if (isNewJob) {
+        List<Bundle> existingTasks =
+            getBundleList(
+                pendingJob.getTransientExtras().getParcelableArray(EXTRA_TASK_EXTRAS_ARRAY));
+        VvmLog.i(TAG, "merging job with " + existingTasks.size() + " existing tasks");
+        TaskQueue queue = new TaskQueue();
+        queue.fromBundles(context, existingTasks);
+        for (Bundle pendingTask : pendingTasks) {
+          queue.add(Tasks.createTask(context, pendingTask));
+        }
+        pendingTasks = queue.toBundles();
+      }
+      VvmLog.i(TAG, "canceling existing job.");
+      jobScheduler.cancel(ScheduledJobIds.VVM_TASK_SCHEDULER_JOB);
+    }
+    Bundle extras = new Bundle();
+    extras.putParcelableArray(
+        EXTRA_TASK_EXTRAS_ARRAY, pendingTasks.toArray(new Bundle[pendingTasks.size()]));
+    JobInfo.Builder builder =
+        new JobInfo.Builder(
+                ScheduledJobIds.VVM_TASK_SCHEDULER_JOB,
+                new ComponentName(context, TaskSchedulerJobService.class))
+            .setTransientExtras(extras)
+            .setMinimumLatency(delayMillis)
+            .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
+    if (isNewJob) {
+      Assert.isTrue(delayMillis == 0);
+      builder.setOverrideDeadline(0);
+      VvmLog.i(TAG, "running job instantly.");
+    }
+    jobScheduler.schedule(builder.build());
+    VvmLog.i(TAG, "job scheduled");
+  }
+
+  /**
+   * The system will hold a wakelock when {@link #onStartJob(JobParameters)} is called to ensure the
+   * device will not sleep when the job is still running. Finish the job so the system will release
+   * the wakelock
+   */
+  @Override
+  public void finish() {
+    VvmLog.i(TAG, "finishing job and unbinding TaskSchedulerService");
+    jobFinished(jobParameters, false);
+    jobParameters = null;
+    unbindService(mConnection);
+  }
+
+  private static List<Bundle> getBundleList(Parcelable[] parcelables) {
+    List<Bundle> result = new ArrayList<>(parcelables.length);
+    for (Parcelable parcelable : parcelables) {
+      result.add((Bundle) parcelable);
+    }
+    return result;
+  }
+}
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerService.java
index 81bd36f..5ad2447 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskSchedulerService.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerService.java
@@ -16,20 +16,18 @@
 
 package com.android.voicemail.impl.scheduling;
 
-import android.app.AlarmManager;
-import android.app.PendingIntent;
+import android.annotation.TargetApi;
 import android.app.Service;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Binder;
+import android.os.Build.VERSION_CODES;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.Message;
-import android.os.PowerManager;
-import android.os.PowerManager.WakeLock;
-import android.os.SystemClock;
 import android.support.annotation.MainThread;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
@@ -37,20 +35,50 @@
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.NeededForTesting;
 import com.android.voicemail.impl.VvmLog;
-import com.android.voicemail.impl.scheduling.Task.TaskId;
-import java.util.ArrayDeque;
-import java.util.Queue;
+import com.android.voicemail.impl.scheduling.TaskQueue.NextTask;
+import java.util.List;
 
 /**
- * A service to queue and run {@link Task} on a worker thread. Only one task will be ran at a time,
- * and same task cannot exist in the queue at the same time. The service will be started when a
- * intent is received, and stopped when there are no more tasks in the queue.
+ * A service to queue and run {@link Task} with the {@link android.app.job.JobScheduler}. A task is
+ * queued using {@link Context#startService(Intent)}. The intent should contain enough information
+ * in {@link Intent#getExtras()} to construct the task (see {@link Tasks#createIntent(Context,
+ * Class)}).
+ *
+ * <p>All tasks are ran in the background with a wakelock being held by the {@link
+ * android.app.job.JobScheduler}, which is between {@link #onStartJob(Job, List)} and {@link
+ * #finishJob()}. The {@link TaskSchedulerJobService} also has a {@link TaskQueue}, but the data is
+ * stored in the {@link android.app.job.JobScheduler} instead of the process memory, so if the
+ * process is killed the queued tasks will be restored. If a new task is added, a new {@link
+ * TaskSchedulerJobService} will be scheduled to run the task. If the job is already scheduled, the
+ * new task will be pushed into the queue of the scheduled job. If the job is already running, the
+ * job will be queued in process memory.
+ *
+ * <p>Only one task will be ran at a time, and same task cannot exist in the queue at the same time.
+ * Refer to {@link TaskQueue} for queuing and execution order.
+ *
+ * <p>If there are still tasks in the queue but none are executable immediately, the service will
+ * enter a "sleep", pushing all remaining task into a new job and end the current job.
+ *
+ * <p>The service will be started when a intent is received, and stopped when there are no more
+ * tasks in the queue.
+ *
+ * <p>{@link android.app.job.JobScheduler} is not used directly due to:
+ *
+ * <ul>
+ *   <li>The {@link android.telecom.PhoneAccountHandle} used to differentiate task can not be easily
+ *       mapped into an integer for job id
+ *   <li>A job cannot be mutated to store information such as retry count.
+ * </ul>
  */
+@SuppressWarnings("AndroidApiChecker") /* stream() */
+@TargetApi(VERSION_CODES.O)
 public class TaskSchedulerService extends Service {
 
-  private static final String TAG = "VvmTaskScheduler";
+  interface Job {
+    void finish();
+  }
 
-  private static final String ACTION_WAKEUP = "action_wakeup";
+  private static final String TAG = "VvmTaskScheduler";
 
   private static final int READY_TOLERANCE_MILLISECONDS = 100;
 
@@ -58,15 +86,13 @@
    * Threshold to determine whether to do a short or long sleep when a task is scheduled in the
    * future.
    *
-   * <p>A short sleep will continue to held the wake lock and use {@link
-   * Handler#postDelayed(Runnable, long)} to wait for the next task.
+   * <p>A short sleep will continue the job and use {@link Handler#postDelayed(Runnable, long)} to
+   * wait for the next task.
    *
-   * <p>A long sleep will release the wake lock and set a {@link AlarmManager} alarm. The alarm is
-   * exact and will wake up the device. Note: as this service is run in the telephony process it
-   * does not seem to be restricted by doze or sleep, it will fire exactly at the moment. The
-   * unbundled version should take doze into account.
+   * <p>A long sleep will finish the job and schedule a new one. The exact execution time is
+   * subjected to {@link android.app.job.JobScheduler} battery optimization, and is not exact.
    */
-  private static final int SHORT_SLEEP_THRESHOLD_MILLISECONDS = 60_000;
+  private static final int SHORT_SLEEP_THRESHOLD_MILLISECONDS = 10_000;
   /**
    * When there are no more tasks to be run the service should be stopped. But when all tasks has
    * finished there might still be more tasks in the message queue waiting to be processed,
@@ -75,14 +101,9 @@
    */
   private static final int STOP_DELAY_MILLISECONDS = 5_000;
 
-  private static final String EXTRA_CLASS_NAME = "extra_class_name";
-
-  private static final String WAKE_LOCK_TAG = "TaskSchedulerService_wakelock";
-
   // The thread to run tasks on
   private volatile WorkerThreadHandler mWorkerThreadHandler;
 
-  private Context mContext = this;
   /**
    * Used by tests to turn task handling into a single threaded process by calling {@link
    * Handler#handleMessage(Message)} directly
@@ -91,21 +112,27 @@
 
   private MainThreadHandler mMainThreadHandler;
 
-  private WakeLock mWakeLock;
+  // Binder given to clients
+  private final IBinder mBinder = new LocalBinder();
 
   /** Main thread only, access through {@link #getTasks()} */
-  private final Queue<Task> mTasks = new ArrayDeque<>();
+  private final TaskQueue mTasks = new TaskQueue();
 
   private boolean mWorkerThreadIsBusy = false;
 
+  private Job mJob;
+
   private final Runnable mStopServiceWithDelay =
       new Runnable() {
+        @MainThread
         @Override
         public void run() {
-          VvmLog.d(TAG, "Stopping service");
+          VvmLog.i(TAG, "Stopping service");
+          finishJob();
           stopSelf();
         }
       };
+
   /** Should attempt to run the next task when a task has finished or been added. */
   private boolean mTaskAutoRunDisabledForTesting = false;
 
@@ -122,7 +149,7 @@
       Assert.isNotMainThread();
       Task task = (Task) msg.obj;
       try {
-        VvmLog.v(TAG, "executing task " + task);
+        VvmLog.i(TAG, "executing task " + task);
         task.onExecuteInBackgroundThread();
       } catch (Throwable throwable) {
         VvmLog.e(TAG, "Exception while executing task " + task + ":", throwable);
@@ -157,10 +184,6 @@
   @MainThread
   public void onCreate() {
     super.onCreate();
-    mWakeLock =
-        getSystemService(PowerManager.class)
-            .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKE_LOCK_TAG);
-    mWakeLock.setReferenceCounted(false);
     HandlerThread thread = new HandlerThread("VvmTaskSchedulerService");
     thread.start();
 
@@ -171,27 +194,27 @@
   @Override
   public void onDestroy() {
     mWorkerThreadHandler.getLooper().quit();
-    mWakeLock.release();
   }
 
   @Override
   @MainThread
   public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
     Assert.isMainThread();
-    // maybeRunNextTask() will release the wakelock either by entering a long sleep or stopping
-    // the service.
-    mWakeLock.acquire();
-    if (ACTION_WAKEUP.equals(intent.getAction())) {
-      VvmLog.d(TAG, "woke up by AlarmManager");
-    } else {
-      Task task = createTask(intent, flags, startId);
-      if (task == null) {
-        VvmLog.e(TAG, "cannot create task form intent");
-      } else {
-        addTask(task);
-      }
+    if (intent == null) {
+      VvmLog.w(TAG, "null intent received");
+      return START_NOT_STICKY;
     }
-    maybeRunNextTask();
+    Task task = Tasks.createTask(this, intent.getExtras());
+    Assert.isTrue(task != null);
+    addTask(task);
+
+    mMainThreadHandler.removeCallbacks(mStopServiceWithDelay);
+    VvmLog.i(TAG, "task added");
+    if (mJob == null) {
+      scheduleJob(0, true);
+    } else {
+      maybeRunNextTask();
+    }
     // STICKY means the service will be automatically restarted will the last intent if it is
     // killed.
     return START_NOT_STICKY;
@@ -201,68 +224,16 @@
   @VisibleForTesting
   void addTask(Task task) {
     Assert.isMainThread();
-    if (task.getId().id == Task.TASK_INVALID) {
-      throw new AssertionError("Task id was not set to a valid value before adding.");
-    }
-    if (task.getId().id != Task.TASK_ALLOW_DUPLICATES) {
-      Task oldTask = getTask(task.getId());
-      if (oldTask != null) {
-        oldTask.onDuplicatedTaskAdded(task);
-        return;
-      }
-    }
-    mMainThreadHandler.removeCallbacks(mStopServiceWithDelay);
     getTasks().add(task);
-    maybeRunNextTask();
   }
 
   @MainThread
-  @Nullable
-  private Task getTask(TaskId taskId) {
-    Assert.isMainThread();
-    for (Task task : getTasks()) {
-      if (task.getId().equals(taskId)) {
-        return task;
-      }
-    }
-    return null;
-  }
-
-  @MainThread
-  private Queue<Task> getTasks() {
+  @VisibleForTesting
+  TaskQueue getTasks() {
     Assert.isMainThread();
     return mTasks;
   }
 
-  /** Create an intent that will queue the <code>task</code> */
-  public static Intent createIntent(Context context, Class<? extends Task> task) {
-    Intent intent = new Intent(context, TaskSchedulerService.class);
-    intent.putExtra(EXTRA_CLASS_NAME, task.getName());
-    return intent;
-  }
-
-  @VisibleForTesting
-  @MainThread
-  @Nullable
-  Task createTask(@Nullable Intent intent, int flags, int startId) {
-    Assert.isMainThread();
-    if (intent == null) {
-      return null;
-    }
-    String className = intent.getStringExtra(EXTRA_CLASS_NAME);
-    VvmLog.d(TAG, "create task:" + className);
-    if (className == null) {
-      throw new IllegalArgumentException("EXTRA_CLASS_NAME expected");
-    }
-    try {
-      Task task = (Task) Class.forName(className).newInstance();
-      task.onCreate(mContext, intent, flags, startId);
-      return task;
-    } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
-      throw new IllegalArgumentException(e);
-    }
-  }
-
   @MainThread
   private void maybeRunNextTask() {
     Assert.isMainThread();
@@ -282,37 +253,31 @@
   @MainThread
   void runNextTask() {
     Assert.isMainThread();
-    // The current alarm is no longer valid, a new one will be set up if required.
-    getSystemService(AlarmManager.class).cancel(getWakeupIntent());
     if (getTasks().isEmpty()) {
       prepareStop();
       return;
     }
-    Long minimalWaitTime = null;
-    for (Task task : getTasks()) {
-      long waitTime = task.getReadyInMilliSeconds();
-      if (waitTime < READY_TOLERANCE_MILLISECONDS) {
-        task.onBeforeExecute();
-        Message message = mWorkerThreadHandler.obtainMessage();
-        message.obj = task;
-        mWorkerThreadIsBusy = true;
-        mMessageSender.send(message);
-        return;
-      } else {
-        if (minimalWaitTime == null || waitTime < minimalWaitTime) {
-          minimalWaitTime = waitTime;
-        }
-      }
+    NextTask nextTask = getTasks().getNextTask(READY_TOLERANCE_MILLISECONDS);
+
+    if (nextTask.task != null) {
+      nextTask.task.onBeforeExecute();
+      Message message = mWorkerThreadHandler.obtainMessage();
+      message.obj = nextTask.task;
+      mWorkerThreadIsBusy = true;
+      mMessageSender.send(message);
+      return;
     }
-    VvmLog.d(TAG, "minimal wait time:" + minimalWaitTime);
-    if (!mTaskAutoRunDisabledForTesting && minimalWaitTime != null) {
+    VvmLog.i(TAG, "minimal wait time:" + nextTask.minimalWaitTimeMillis);
+    if (!mTaskAutoRunDisabledForTesting && nextTask.minimalWaitTimeMillis != null) {
       // No tasks are currently ready. Sleep until the next one should be.
       // If a new task is added during the sleep the service will wake immediately.
-      sleep(minimalWaitTime);
+      sleep(nextTask.minimalWaitTimeMillis);
     }
   }
 
+  @MainThread
   private void sleep(long timeMillis) {
+    VvmLog.i(TAG, "sleep for " + timeMillis + " millis");
     if (timeMillis < SHORT_SLEEP_THRESHOLD_MILLISECONDS) {
       mMainThreadHandler.postDelayed(
           new Runnable() {
@@ -324,34 +289,24 @@
           timeMillis);
       return;
     }
-
-    // Tasks does not have a strict timing requirement, use AlarmManager.set() so the OS could
-    // optimize the battery usage. As this service currently run in the telephony process the
-    // OS give it privileges to behave the same as setExact(), but set() is the targeted
-    // behavior once this is unbundled.
-    getSystemService(AlarmManager.class)
-        .set(
-            AlarmManager.ELAPSED_REALTIME_WAKEUP,
-            SystemClock.elapsedRealtime() + timeMillis,
-            getWakeupIntent());
-    mWakeLock.release();
-    VvmLog.d(TAG, "Long sleep for " + timeMillis + " millis");
+    finishJob();
+    mMainThreadHandler.post(() -> scheduleJob(timeMillis, false));
   }
 
-  private PendingIntent getWakeupIntent() {
-    Intent intent = new Intent(ACTION_WAKEUP, null, this, getClass());
-    return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
+  private List<Bundle> serializePendingTasks() {
+    return getTasks().toBundles();
   }
 
   private void prepareStop() {
-    VvmLog.d(
+    VvmLog.i(
         TAG,
-        "No more tasks, stopping service if no task are added in "
+        "no more tasks, stopping service if no task are added in "
             + STOP_DELAY_MILLISECONDS
             + " millis");
     mMainThreadHandler.postDelayed(mStopServiceWithDelay, STOP_DELAY_MILLISECONDS);
   }
 
+  @NeededForTesting
   static class MessageSender {
 
     public void send(Message message) {
@@ -360,11 +315,6 @@
   }
 
   @NeededForTesting
-  void setContextForTest(Context context) {
-    mContext = context;
-  }
-
-  @NeededForTesting
   void setTaskAutoRunDisabledForTest(boolean value) {
     mTaskAutoRunDisabledForTesting = value;
   }
@@ -374,15 +324,65 @@
     mMessageSender = sender;
   }
 
-  @NeededForTesting
-  void clearTasksForTest() {
+  /**
+   * The {@link TaskSchedulerJobService} has started and all queued task should be executed in the
+   * worker thread.
+   */
+  @MainThread
+  public void onStartJob(Job job, List<Bundle> pendingTasks) {
+    VvmLog.i(TAG, "onStartJob");
+    mJob = job;
+    mTasks.fromBundles(this, pendingTasks);
+    maybeRunNextTask();
+  }
+
+  /**
+   * The {@link TaskSchedulerJobService} is being terminated by the system (timeout or network
+   * lost). A new job will be queued to resume all pending tasks. The current unfinished job may be
+   * ran again.
+   */
+  @MainThread
+  public void onStopJob() {
+    VvmLog.e(TAG, "onStopJob");
+    if (isJobRunning()) {
+      finishJob();
+      mMainThreadHandler.post(() -> scheduleJob(0, true));
+    }
+  }
+
+  /**
+   * Serializes all pending tasks and schedule a new {@link TaskSchedulerJobService}.
+   *
+   * @param delayMillis the delay before stating the job, see {@link
+   *     android.app.job.JobInfo.Builder#setMinimumLatency(long)}. This must be 0 if {@code
+   *     isNewJob} is true.
+   * @param isNewJob a new job will be requested to run immediately, bypassing all requirements.
+   */
+  @MainThread
+  private void scheduleJob(long delayMillis, boolean isNewJob) {
+    Assert.isMainThread();
+    TaskSchedulerJobService.scheduleJob(this, serializePendingTasks(), delayMillis, isNewJob);
     mTasks.clear();
   }
 
+  /**
+   * Signals {@link TaskSchedulerJobService} the current session of tasks has finished, and the wake
+   * lock can be released. Note: this only takes effect after the main thread has been returned. If
+   * a new job need to be scheduled, it should be posted on the main thread handler instead of
+   * calling directly.
+   */
+  @MainThread
+  private void finishJob() {
+    Assert.isMainThread();
+    VvmLog.i(TAG, "finishing Job");
+    mJob.finish();
+    mJob = null;
+  }
+
   @Override
   @Nullable
   public IBinder onBind(Intent intent) {
-    return new LocalBinder();
+    return mBinder;
   }
 
   @NeededForTesting
@@ -393,4 +393,8 @@
       return TaskSchedulerService.this;
     }
   }
+
+  private boolean isJobRunning() {
+    return mJob != null;
+  }
 }
diff --git a/java/com/android/voicemail/impl/scheduling/Tasks.java b/java/com/android/voicemail/impl/scheduling/Tasks.java
new file mode 100644
index 0000000..34debaf
--- /dev/null
+++ b/java/com/android/voicemail/impl/scheduling/Tasks.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2017 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 com.android.voicemail.impl.scheduling;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import com.android.voicemail.impl.VvmLog;
+
+/** Common operations on {@link Task} */
+final class Tasks {
+
+  private Tasks() {}
+
+  static final String EXTRA_CLASS_NAME = "extra_class_name";
+
+  /**
+   * Create a task from a bundle. The bundle is created either with {@link #toBundle(Task)} or
+   * {@link #createIntent(Context, Class)} from the target {@link Task}
+   */
+  public static Task createTask(Context context, Bundle extras) {
+    // The extra contains custom parcelables which cannot be unmarshalled by the framework class
+    // loader.
+    extras.setClassLoader(context.getClassLoader());
+    String className = extras.getString(EXTRA_CLASS_NAME);
+    VvmLog.i("Task.createTask", "create task:" + className);
+    if (className == null) {
+      throw new IllegalArgumentException("EXTRA_CLASS_NAME expected");
+    }
+    try {
+      Task task = (Task) Class.forName(className).getDeclaredConstructor().newInstance();
+      task.onCreate(context, extras);
+      return task;
+    } catch (ReflectiveOperationException e) {
+      throw new IllegalArgumentException(e);
+    }
+  }
+
+  /**
+   * Serializes necessary states to a bundle that can be used to restore the task with {@link
+   * #createTask(Context, Bundle)}
+   */
+  public static Bundle toBundle(Task task) {
+    Bundle result = task.toBundle();
+    result.putString(EXTRA_CLASS_NAME, task.getClass().getName());
+    return result;
+  }
+
+  /**
+   * Create an intent that when called with {@link Context#startService(Intent)}, will queue the
+   * <code>task</code>. Implementations of {@link Task} should use the result of this and fill in
+   * necessary information.
+   */
+  public static Intent createIntent(Context context, Class<? extends Task> task) {
+    Intent intent = new Intent(context, TaskSchedulerService.class);
+    intent.putExtra(EXTRA_CLASS_NAME, task.getName());
+    return intent;
+  }
+}
diff --git a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
index 4c95e77..9ce32a9 100644
--- a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
+++ b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
@@ -22,6 +22,7 @@
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
 import com.android.voicemail.impl.R;
 import com.android.voicemail.impl.VisualVoicemailPreferences;
+import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.sync.VvmAccountManager;
 
 /** Save whether or not a particular account is enabled in shared to be retrieved later. */
@@ -31,6 +32,7 @@
 
   public static void setEnabled(
       Context context, PhoneAccountHandle phoneAccount, boolean isEnabled) {
+    VvmLog.i("VisualVoicemailSettingsUtil.setEnable", phoneAccount + " enabled:" + isEnabled);
     new VisualVoicemailPreferences(context, phoneAccount)
         .edit()
         .putBoolean(IS_ENABLED_KEY, isEnabled)
diff --git a/java/com/android/voicemail/impl/settings/VoicemailChangePinActivity.java b/java/com/android/voicemail/impl/settings/VoicemailChangePinActivity.java
index 330dc36..b22a765 100644
--- a/java/com/android/voicemail/impl/settings/VoicemailChangePinActivity.java
+++ b/java/com/android/voicemail/impl/settings/VoicemailChangePinActivity.java
@@ -45,8 +45,7 @@
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 import android.widget.Toast;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.dialer.logging.DialerImpression;
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.OmtpConstants.ChangePinResult;
 import com.android.voicemail.impl.OmtpEvents;
@@ -59,6 +58,7 @@
 import com.android.voicemail.impl.imap.ImapHelper.InitializingException;
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.sync.VvmNetworkRequestCallback;
+import com.android.voicemail.impl.utils.LoggerUtils;
 
 /**
  * Dialog to change the voicemail PIN. The TUI (Telephony User Interface) PIN is used when accessing
@@ -278,7 +278,8 @@
           activity.handleOmtpEvent(OmtpEvents.CONFIG_PIN_SET);
 
           activity.finish();
-          Logger.get(activity).logImpression(DialerImpression.Type.VVM_CHANGE_PIN_COMPLETED);
+          LoggerUtils.logImpressionOnMainThread(
+              activity, DialerImpression.Type.VVM_CHANGE_PIN_COMPLETED);
           Toast.makeText(
                   activity, activity.getString(R.string.change_pin_succeeded), Toast.LENGTH_SHORT)
               .show();
diff --git a/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java b/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
index 716f503..423fd11 100644
--- a/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/voicemail/impl/settings/VoicemailSettingsFragment.java
@@ -27,8 +27,8 @@
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
 import com.android.dialer.common.Assert;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
@@ -164,8 +164,6 @@
           VisualVoicemailSettingsUtil.isEnabled(getContext(), phoneAccountHandle));
 
       autoArchiveSwitchPreference.setOnPreferenceChangeListener(this);
-      autoArchiveSwitchPreference.setSummary(
-          getText(R.string.voicemail_visual_voicemail_auto_archive_temporary_disclaimer));
       autoArchiveSwitchPreference.setChecked(
           VisualVoicemailSettingsUtil.isArchiveEnabled(getContext(), phoneAccountHandle));
     } else {
diff --git a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
index 1d1a639..5decf63 100644
--- a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
+++ b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Google Inc. All Rights Reserved.
+ * Copyright (C) 2016 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.
@@ -16,13 +16,21 @@
 
 package com.android.voicemail.impl.sms;
 
+import android.annotation.TargetApi;
+import android.app.PendingIntent;
 import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
 import android.telephony.VisualVoicemailSms;
+import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
-import com.android.voicemail.impl.TelephonyManagerStub;
 import com.android.voicemail.impl.VvmLog;
 
 /**
@@ -30,37 +38,95 @@
  *
  * @see OmtpVvmCarrierConfigHelper#isLegacyModeEnabled()
  */
+@TargetApi(VERSION_CODES.O)
 public class LegacyModeSmsHandler {
 
   private static final String TAG = "LegacyModeSmsHandler";
 
+  private static final int CALL_VOICEMAIL_REQUEST_CODE = 1;
+  private static final int LAUNCH_VOICEMAIL_SETTINGS_REQUEST_CODE = 2;
+
   public static void handle(Context context, VisualVoicemailSms sms) {
-    VvmLog.v(TAG, "processing VVM SMS on legacy mode");
+    VvmLog.i(TAG, "processing VVM SMS on legacy mode");
     String eventType = sms.getPrefix();
     Bundle data = sms.getFields();
     PhoneAccountHandle handle = sms.getPhoneAccountHandle();
 
     if (eventType.equals(OmtpConstants.SYNC_SMS_PREFIX)) {
       SyncMessage message = new SyncMessage(data);
-      VvmLog.v(
+      VvmLog.i(
           TAG, "Received SYNC sms for " + handle + " with event " + message.getSyncTriggerEvent());
 
       switch (message.getSyncTriggerEvent()) {
         case OmtpConstants.NEW_MESSAGE:
         case OmtpConstants.MAILBOX_UPDATE:
-          // The user has called into the voicemail and the new message count could
-          // change.
-          // For some carriers new message count could be set to 0 even if there are still
-          // unread messages, to clear the message waiting indicator.
-          VvmLog.v(TAG, "updating MWI");
+          sendLegacyVoicemailNotification(context, handle, message.getNewMessageCount());
 
-          // Setting voicemail message count to non-zero will show the telephony voicemail
-          // notification, and zero will clear it.
-          TelephonyManagerStub.showVoicemailNotification(message.getNewMessageCount());
           break;
         default:
           break;
       }
     }
   }
+
+  private static void sendLegacyVoicemailNotification(
+      Context context, PhoneAccountHandle phoneAccountHandle, int messageCount) {
+    // The user has called into the voicemail and the new message count could
+    // change.
+    // For some carriers new message count could be set to 0 even if there are still
+    // unread messages, to clear the message waiting indicator.
+
+    VvmLog.i(TAG, "sending voicemail notification");
+    Intent intent = new Intent(VoicemailClient.ACTION_SHOW_LEGACY_VOICEMAIL);
+    intent.setPackage(context.getPackageName());
+    intent.putExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+    // Setting voicemail message count to non-zero will show the telephony voicemail
+    // notification, and zero will clear it.
+    intent.putExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, messageCount);
+
+    String voicemailNumber = getVoicemailNumber(context, phoneAccountHandle);
+    PendingIntent callVoicemailPendingIntent = null;
+    PendingIntent launchVoicemailSettingsPendingIntent = null;
+
+    if (voicemailNumber != null) {
+      callVoicemailPendingIntent =
+          PendingIntent.getActivity(
+              context,
+              CALL_VOICEMAIL_REQUEST_CODE,
+              new Intent(
+                  Intent.ACTION_CALL, Uri.fromParts(PhoneAccount.SCHEME_VOICEMAIL, "", null)),
+              PendingIntent.FLAG_UPDATE_CURRENT);
+    } else {
+      Intent launchVoicemailSettingsIntent =
+          new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
+      launchVoicemailSettingsIntent.putExtra(TelephonyManager.EXTRA_HIDE_PUBLIC_SETTINGS, true);
+
+      launchVoicemailSettingsPendingIntent =
+          PendingIntent.getActivity(
+              context,
+              LAUNCH_VOICEMAIL_SETTINGS_REQUEST_CODE,
+              launchVoicemailSettingsIntent,
+              PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
+    intent.putExtra(TelephonyManager.EXTRA_VOICEMAIL_NUMBER, voicemailNumber);
+    intent.putExtra(TelephonyManager.EXTRA_CALL_VOICEMAIL_INTENT, callVoicemailPendingIntent);
+    intent.putExtra(
+        TelephonyManager.EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT,
+        launchVoicemailSettingsPendingIntent);
+
+    context.sendBroadcast(intent);
+  }
+
+  @Nullable
+  private static String getVoicemailNumber(Context context, PhoneAccountHandle phoneAccountHandle) {
+    TelephonyManager telephonyManager =
+        context
+            .getSystemService(TelephonyManager.class)
+            .createForPhoneAccountHandle(phoneAccountHandle);
+    if (telephonyManager == null) {
+      return null;
+    }
+    return telephonyManager.getVoiceMailNumber();
+  }
 }
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
index 83a3960..af934dd 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
@@ -24,8 +24,7 @@
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
 import android.util.ArrayMap;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.dialer.logging.DialerImpression;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.Assert;
@@ -41,6 +40,7 @@
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.NetworkWrapper;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.RequestFailedException;
+import com.android.voicemail.impl.utils.LoggerUtils;
 import com.android.voicemail.impl.utils.VoicemailDatabaseUtil;
 import java.util.List;
 import java.util.Map;
@@ -98,7 +98,7 @@
     }
 
     OmtpVvmCarrierConfigHelper config = new OmtpVvmCarrierConfigHelper(mContext, phoneAccount);
-    Logger.get(mContext).logImpression(DialerImpression.Type.VVM_SYNC_STARTED);
+    LoggerUtils.logImpressionOnMainThread(mContext, DialerImpression.Type.VVM_SYNC_STARTED);
     // DATA_IMAP_OPERATION_STARTED posting should not be deferred. This event clears all data
     // channel errors, which should happen when the task starts, not when it ends. It is the
     // "Sync in progress..." status.
@@ -136,7 +136,7 @@
         imapHelper.updateQuota();
         autoDeleteAndArchiveVM(imapHelper, phoneAccount);
         imapHelper.handleEvent(OmtpEvents.DATA_IMAP_OPERATION_COMPLETED);
-        Logger.get(mContext).logImpression(DialerImpression.Type.VVM_SYNC_COMPLETED);
+        LoggerUtils.logImpressionOnMainThread(mContext, DialerImpression.Type.VVM_SYNC_COMPLETED);
       } else {
         task.fail();
       }
@@ -158,14 +158,15 @@
           > AUTO_DELETE_ARCHIVE_VM_THRESHOLD) {
         deleteAndArchiveVM(imapHelper);
         imapHelper.updateQuota();
-        Logger.get(mContext)
-            .logImpression(DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER);
+        LoggerUtils.logImpressionOnMainThread(
+            mContext, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER);
       } else {
         VvmLog.i(TAG, "no need to archive and auto delete VM, quota below threshold");
       }
     } else {
-      VvmLog.i(TAG, "isArchiveAllowedAndEnabled is false");
-      Logger.get(mContext).logImpression(DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF);
+      VvmLog.i(TAG, "autoDeleteAndArchiveVM is turned off");
+      LoggerUtils.logImpressionOnMainThread(
+          mContext, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF);
     }
   }
 
@@ -214,7 +215,7 @@
     boolean downloadSuccess = true;
 
     if (SYNC_FULL_SYNC.equals(action) || SYNC_UPLOAD_ONLY.equals(action)) {
-      uploadSuccess = upload(imapHelper);
+      uploadSuccess = upload(account, imapHelper);
     }
     if (SYNC_FULL_SYNC.equals(action) || SYNC_DOWNLOAD_ONLY.equals(action)) {
       downloadSuccess = download(imapHelper, account);
@@ -242,9 +243,9 @@
         new TranscriptionFetchedCallback(mContext, voicemail), voicemail.getSourceData());
   }
 
-  private boolean upload(ImapHelper imapHelper) {
-    List<Voicemail> readVoicemails = mQueryHelper.getReadVoicemails();
-    List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails();
+  private boolean upload(PhoneAccountHandle phoneAccountHandle, ImapHelper imapHelper) {
+    List<Voicemail> readVoicemails = mQueryHelper.getReadVoicemails(phoneAccountHandle);
+    List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails(phoneAccountHandle);
 
     boolean success = true;
 
@@ -271,7 +272,7 @@
 
   private boolean download(ImapHelper imapHelper, PhoneAccountHandle account) {
     List<Voicemail> serverVoicemails = imapHelper.fetchAllVoicemails();
-    List<Voicemail> localVoicemails = mQueryHelper.getAllVoicemails();
+    List<Voicemail> localVoicemails = mQueryHelper.getAllVoicemails(account);
 
     if (localVoicemails == null || serverVoicemails == null) {
       // Null value means the query failed.
@@ -302,7 +303,8 @@
 
         if (!TextUtils.isEmpty(remoteVoicemail.getTranscription())
             && TextUtils.isEmpty(localVoicemail.getTranscription())) {
-          Logger.get(mContext).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_DOWNLOADED);
+          LoggerUtils.logImpressionOnMainThread(
+              mContext, DialerImpression.Type.VVM_TRANSCRIPTION_DOWNLOADED);
           mQueryHelper.updateWithTranscription(localVoicemail, remoteVoicemail.getTranscription());
         }
       }
@@ -312,7 +314,8 @@
     boolean prefetchEnabled = shouldPerformPrefetch(account, imapHelper);
     for (Voicemail remoteVoicemail : remoteMap.values()) {
       if (!TextUtils.isEmpty(remoteVoicemail.getTranscription())) {
-        Logger.get(mContext).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_DOWNLOADED);
+        LoggerUtils.logImpressionOnMainThread(
+            mContext, DialerImpression.Type.VVM_TRANSCRIPTION_DOWNLOADED);
       }
       Uri uri = VoicemailDatabaseUtil.insert(mContext, remoteVoicemail);
       if (prefetchEnabled) {
diff --git a/java/com/android/voicemail/impl/sync/SyncOneTask.java b/java/com/android/voicemail/impl/sync/SyncOneTask.java
index e57235e..19419ec 100644
--- a/java/com/android/voicemail/impl/sync/SyncOneTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncOneTask.java
@@ -18,18 +18,21 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.Voicemail;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.scheduling.BaseTask;
 import com.android.voicemail.impl.scheduling.RetryPolicy;
+import com.android.voicemail.impl.utils.LoggerUtils;
 
 /**
  * Task to download a single voicemail from the server. This task is initiated by a SMS notifying
  * the new voicemail arrival, and ignores the duplicated tasks constraint.
  */
+@UsedByReflection(value = "Tasks.java")
 public class SyncOneTask extends BaseTask {
 
   private static final int RETRY_TIMES = 2;
@@ -56,11 +59,12 @@
     addPolicy(new RetryPolicy(RETRY_TIMES, RETRY_INTERVAL_MILLIS));
   }
 
-  public void onCreate(Context context, Intent intent, int flags, int startId) {
-    super.onCreate(context, intent, flags, startId);
-    mPhone = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
-    mSyncType = intent.getStringExtra(EXTRA_SYNC_TYPE);
-    mVoicemail = intent.getParcelableExtra(EXTRA_VOICEMAIL);
+  @Override
+  public void onCreate(Context context, Bundle extras) {
+    super.onCreate(context, extras);
+    mPhone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
+    mSyncType = extras.getString(EXTRA_SYNC_TYPE);
+    mVoicemail = extras.getParcelable(EXTRA_VOICEMAIL);
   }
 
   @Override
@@ -71,7 +75,7 @@
 
   @Override
   public Intent createRestartIntent() {
-    Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
+    LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
     Intent intent = super.createRestartIntent();
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
     intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
diff --git a/java/com/android/voicemail/impl/sync/SyncTask.java b/java/com/android/voicemail/impl/sync/SyncTask.java
index a9e5920..27f8034 100644
--- a/java/com/android/voicemail/impl/sync/SyncTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncTask.java
@@ -18,14 +18,17 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.nano.DialerImpression;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.scheduling.BaseTask;
 import com.android.voicemail.impl.scheduling.MinimalIntervalPolicy;
 import com.android.voicemail.impl.scheduling.RetryPolicy;
+import com.android.voicemail.impl.utils.LoggerUtils;
 
 /** System initiated sync request. */
+@UsedByReflection(value = "Tasks.java")
 public class SyncTask extends BaseTask {
 
   // Try sync for a total of 5 times, should take around 5 minutes before finally giving up.
@@ -55,10 +58,11 @@
     addPolicy(new MinimalIntervalPolicy(MINIMAL_INTERVAL_MILLIS));
   }
 
-  public void onCreate(Context context, Intent intent, int flags, int startId) {
-    super.onCreate(context, intent, flags, startId);
-    mPhone = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
-    mSyncType = intent.getStringExtra(EXTRA_SYNC_TYPE);
+  @Override
+  public void onCreate(Context context, Bundle extras) {
+    super.onCreate(context, extras);
+    mPhone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
+    mSyncType = extras.getString(EXTRA_SYNC_TYPE);
   }
 
   @Override
@@ -69,7 +73,7 @@
 
   @Override
   public Intent createRestartIntent() {
-    Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
+    LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
     Intent intent = super.createRestartIntent();
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, mPhone);
     intent.putExtra(EXTRA_SYNC_TYPE, mSyncType);
diff --git a/java/com/android/voicemail/impl/sync/UploadTask.java b/java/com/android/voicemail/impl/sync/UploadTask.java
index 7d1a797..4030745 100644
--- a/java/com/android/voicemail/impl/sync/UploadTask.java
+++ b/java/com/android/voicemail/impl/sync/UploadTask.java
@@ -18,7 +18,9 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
+import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.scheduling.BaseTask;
@@ -28,6 +30,7 @@
  * Upload task triggered by database changes. Will wait until the database has been stable for
  * {@link #POSTPONE_MILLIS} to execute.
  */
+@UsedByReflection(value = "Tasks.java")
 public class UploadTask extends BaseTask {
 
   private static final String TAG = "VvmUploadTask";
@@ -45,8 +48,8 @@
   }
 
   @Override
-  public void onCreate(Context context, Intent intent, int flags, int startId) {
-    super.onCreate(context, intent, flags, startId);
+  public void onCreate(Context context, Bundle extras) {
+    super.onCreate(context, extras);
   }
 
   @Override
diff --git a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
index fc8119a..bfc2e5f 100644
--- a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
+++ b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
@@ -25,7 +25,9 @@
 import android.os.Build.VERSION_CODES;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Voicemails;
+import android.support.annotation.NonNull;
 import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
 import com.android.dialer.common.Assert;
 import com.android.voicemail.impl.Voicemail;
 import java.util.ArrayList;
@@ -52,6 +54,12 @@
       Voicemails.DIRTY + "=1 AND " + Voicemails.DELETED + "!=1 AND " + Voicemails.IS_READ + "=1";
   static final String DELETED_SELECTION = Voicemails.DELETED + "=1";
   static final String ARCHIVED_SELECTION = Voicemails.ARCHIVED + "=0";
+  private static final String PHONE_ACCOUNT_HANDLE_SELECTION =
+      "("
+          + Voicemails.PHONE_ACCOUNT_COMPONENT_NAME
+          + "=? AND "
+          + Voicemails.PHONE_ACCOUNT_ID
+          + "=?)";
 
   private Context mContext;
   private ContentResolver mContentResolver;
@@ -68,8 +76,8 @@
    *
    * @return A list of read voicemails.
    */
-  public List<Voicemail> getReadVoicemails() {
-    return getLocalVoicemails(READ_SELECTION);
+  public List<Voicemail> getReadVoicemails(@NonNull PhoneAccountHandle phoneAccountHandle) {
+    return getLocalVoicemails(phoneAccountHandle, READ_SELECTION);
   }
 
   /**
@@ -77,8 +85,8 @@
    *
    * @return A list of deleted voicemails.
    */
-  public List<Voicemail> getDeletedVoicemails() {
-    return getLocalVoicemails(DELETED_SELECTION);
+  public List<Voicemail> getDeletedVoicemails(@NonNull PhoneAccountHandle phoneAccountHandle) {
+    return getLocalVoicemails(phoneAccountHandle, DELETED_SELECTION);
   }
 
   /**
@@ -86,8 +94,8 @@
    *
    * @return A list of all locally stored voicemails.
    */
-  public List<Voicemail> getAllVoicemails() {
-    return getLocalVoicemails(null);
+  public List<Voicemail> getAllVoicemails(@NonNull PhoneAccountHandle phoneAccountHandle) {
+    return getLocalVoicemails(phoneAccountHandle, null);
   }
 
   /**
@@ -96,8 +104,20 @@
    * @param selection A filter declaring which rows to return. {@code null} returns all rows.
    * @return A list of voicemails according to the selection statement.
    */
-  private List<Voicemail> getLocalVoicemails(String selection) {
-    Cursor cursor = mContentResolver.query(mSourceUri, PROJECTION, selection, null, null);
+  private List<Voicemail> getLocalVoicemails(
+      @NonNull PhoneAccountHandle phoneAccountHandle, String selection) {
+
+    String[] selectionArgs =
+        new String[] {
+          phoneAccountHandle.getComponentName().flattenToString(), phoneAccountHandle.getId()
+        };
+    if (TextUtils.isEmpty(selection)) {
+      selection = PHONE_ACCOUNT_HANDLE_SELECTION;
+    } else {
+      selection = PHONE_ACCOUNT_HANDLE_SELECTION + " AND (" + selection + ")";
+    }
+
+    Cursor cursor = mContentResolver.query(mSourceUri, PROJECTION, selection, selectionArgs, null);
     if (cursor == null) {
       return null;
     }
diff --git a/java/com/android/voicemail/impl/utils/LoggerUtils.java b/java/com/android/voicemail/impl/utils/LoggerUtils.java
new file mode 100644
index 0000000..070772f
--- /dev/null
+++ b/java/com/android/voicemail/impl/utils/LoggerUtils.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2017 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 com.android.voicemail.impl.utils;
+
+import android.content.Context;
+import android.support.annotation.AnyThread;
+import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
+
+/** Common utility method when using {@link Logger} */
+public class LoggerUtils {
+
+  /** Posts the impression logging to the main thread so it will be thread safe. */
+  @AnyThread
+  public static void logImpressionOnMainThread(Context context, DialerImpression.Type impression) {
+    ThreadUtil.postOnUiThread(() -> Logger.get(context).logImpression(impression));
+  }
+}
diff --git a/java/com/android/voicemail/stub/StubVoicemailClient.java b/java/com/android/voicemail/stub/StubVoicemailClient.java
index 172b3ff..e2b4707 100644
--- a/java/com/android/voicemail/stub/StubVoicemailClient.java
+++ b/java/com/android/voicemail/stub/StubVoicemailClient.java
@@ -37,6 +37,15 @@
   }
 
   @Override
+  public boolean isVoicemailEnabled(Context context, PhoneAccountHandle phoneAccountHandle) {
+    return false;
+  }
+
+  @Override
+  public void setVoicemailEnabled(
+      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled) {}
+
+  @Override
   public void appendOmtpVoicemailSelectionClause(
       Context context, StringBuilder where, List<String> selectionArgs) {}
 
@@ -67,4 +76,9 @@
   public Intent getSetPinIntent(Context context, PhoneAccountHandle phoneAccountHandle) {
     return new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
   }
+
+  @Override
+  public boolean isActivated(Context context, PhoneAccountHandle phoneAccountHandle) {
+    return false;
+  }
 }
