Initial version -- added millennium read funcionality

This commit is contained in:
Pablo
2026-03-09 22:05:28 +01:00
commit 77c2ded482
2770 changed files with 141927 additions and 0 deletions
@@ -0,0 +1,38 @@
package com.google.android.gms.common.util;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import com.google.android.gms.common.wrappers.Wrappers;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class AndroidUtilsLight {
private static volatile int zza = -1;
@Deprecated
public static byte[] getPackageCertificateHashBytes(Context context, String str) throws PackageManager.NameNotFoundException {
MessageDigest messageDigestZza;
PackageInfo packageInfo = Wrappers.packageManager(context).getPackageInfo(str, 64);
if (packageInfo.signatures == null || packageInfo.signatures.length != 1 || (messageDigestZza = zza("SHA1")) == null) {
return null;
}
return messageDigestZza.digest(packageInfo.signatures[0].toByteArray());
}
public static MessageDigest zza(String str) {
MessageDigest messageDigest;
for (int i = 0; i < 2; i++) {
try {
messageDigest = MessageDigest.getInstance(str);
} catch (NoSuchAlgorithmException unused) {
}
if (messageDigest != null) {
return messageDigest;
}
}
return null;
}
}
@@ -0,0 +1,225 @@
package com.google.android.gms.common.util;
import com.google.android.gms.common.internal.Objects;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class ArrayUtils {
private ArrayUtils() {
}
public static <T> T[] concat(T[]... tArr) {
if (tArr.length == 0) {
return (T[]) ((Object[]) Array.newInstance(tArr.getClass(), 0));
}
int length = 0;
for (T[] tArr2 : tArr) {
length += tArr2.length;
}
T[] tArr3 = (T[]) Arrays.copyOf(tArr[0], length);
int length2 = tArr[0].length;
for (int i = 1; i < tArr.length; i++) {
T[] tArr4 = tArr[i];
int length3 = tArr4.length;
System.arraycopy(tArr4, 0, tArr3, length2, length3);
length2 += length3;
}
return tArr3;
}
public static byte[] concatByteArrays(byte[]... bArr) {
if (bArr.length == 0) {
return new byte[0];
}
int length = 0;
for (byte[] bArr2 : bArr) {
length += bArr2.length;
}
byte[] bArrCopyOf = Arrays.copyOf(bArr[0], length);
int length2 = bArr[0].length;
for (int i = 1; i < bArr.length; i++) {
byte[] bArr3 = bArr[i];
int length3 = bArr3.length;
System.arraycopy(bArr3, 0, bArrCopyOf, length2, length3);
length2 += length3;
}
return bArrCopyOf;
}
public static boolean contains(int[] iArr, int i) {
if (iArr != null) {
for (int i2 : iArr) {
if (i2 == i) {
return true;
}
}
}
return false;
}
public static <T> ArrayList<T> newArrayList() {
return new ArrayList<>();
}
public static <T> T[] removeAll(T[] tArr, T... tArr2) {
int length;
int i;
if (tArr == null) {
return null;
}
if (tArr2 == null || (length = tArr2.length) == 0) {
return (T[]) Arrays.copyOf(tArr, tArr.length);
}
Class<?> cls = tArr2.getClass();
T[] tArr3 = (T[]) ((Object[]) Array.newInstance(cls.getComponentType(), tArr.length));
if (length == 1) {
i = 0;
for (T t : tArr) {
if (!Objects.equal(tArr2[0], t)) {
tArr3[i] = t;
i++;
}
}
} else {
int i2 = 0;
for (T t2 : tArr) {
if (!contains(tArr2, t2)) {
tArr3[i2] = t2;
i2++;
}
}
i = i2;
}
if (tArr3 == null) {
return null;
}
return i == tArr3.length ? tArr3 : (T[]) Arrays.copyOf(tArr3, i);
}
public static <T> ArrayList<T> toArrayList(T[] tArr) {
ArrayList<T> arrayList = new ArrayList<>(tArr.length);
for (T t : tArr) {
arrayList.add(t);
}
return arrayList;
}
public static int[] toPrimitiveArray(Collection<Integer> collection) {
int i = 0;
if (collection == null || collection.isEmpty()) {
return new int[0];
}
int[] iArr = new int[collection.size()];
Iterator<Integer> it = collection.iterator();
while (it.hasNext()) {
iArr[i] = it.next().intValue();
i++;
}
return iArr;
}
public static Integer[] toWrapperArray(int[] iArr) {
if (iArr == null) {
return null;
}
int length = iArr.length;
Integer[] numArr = new Integer[length];
for (int i = 0; i < length; i++) {
numArr[i] = Integer.valueOf(iArr[i]);
}
return numArr;
}
public static void writeArray(StringBuilder sb, double[] dArr) {
int length = dArr.length;
for (int i = 0; i < length; i++) {
if (i != 0) {
sb.append(",");
}
sb.append(dArr[i]);
}
}
public static void writeStringArray(StringBuilder sb, String[] strArr) {
int length = strArr.length;
for (int i = 0; i < length; i++) {
if (i != 0) {
sb.append(",");
}
sb.append("\"");
sb.append(strArr[i]);
sb.append("\"");
}
}
public static <T> boolean contains(T[] tArr, T t) {
int length = tArr != null ? tArr.length : 0;
int i = 0;
while (true) {
if (i >= length) {
break;
}
if (!Objects.equal(tArr[i], t)) {
i++;
} else if (i >= 0) {
return true;
}
}
return false;
}
public static void writeArray(StringBuilder sb, float[] fArr) {
int length = fArr.length;
for (int i = 0; i < length; i++) {
if (i != 0) {
sb.append(",");
}
sb.append(fArr[i]);
}
}
public static void writeArray(StringBuilder sb, int[] iArr) {
int length = iArr.length;
for (int i = 0; i < length; i++) {
if (i != 0) {
sb.append(",");
}
sb.append(iArr[i]);
}
}
public static void writeArray(StringBuilder sb, long[] jArr) {
int length = jArr.length;
for (int i = 0; i < length; i++) {
if (i != 0) {
sb.append(",");
}
sb.append(jArr[i]);
}
}
public static <T> void writeArray(StringBuilder sb, T[] tArr) {
int length = tArr.length;
for (int i = 0; i < length; i++) {
if (i != 0) {
sb.append(",");
}
sb.append(tArr[i]);
}
}
public static void writeArray(StringBuilder sb, boolean[] zArr) {
int length = zArr.length;
for (int i = 0; i < length; i++) {
if (i != 0) {
sb.append(",");
}
sb.append(zArr[i]);
}
}
}
@@ -0,0 +1,51 @@
package com.google.android.gms.common.util;
import android.util.Base64;
import com.google.errorprone.annotations.ResultIgnorabilityUnspecified;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class Base64Utils {
public static byte[] decode(String str) {
if (str == null) {
return null;
}
return Base64.decode(str, 0);
}
public static byte[] decodeUrlSafe(String str) {
if (str == null) {
return null;
}
return Base64.decode(str, 10);
}
@ResultIgnorabilityUnspecified
public static byte[] decodeUrlSafeNoPadding(String str) {
if (str == null) {
return null;
}
return Base64.decode(str, 11);
}
public static String encode(byte[] bArr) {
if (bArr == null) {
return null;
}
return Base64.encodeToString(bArr, 0);
}
public static String encodeUrlSafe(byte[] bArr) {
if (bArr == null) {
return null;
}
return Base64.encodeToString(bArr, 10);
}
public static String encodeUrlSafeNoPadding(byte[] bArr) {
if (bArr == null) {
return null;
}
return Base64.encodeToString(bArr, 11);
}
}
@@ -0,0 +1,7 @@
package com.google.android.gms.common.util;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public interface BiConsumer<T, U> {
void accept(T t, U u);
}
@@ -0,0 +1,35 @@
package com.google.android.gms.common.util;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import com.google.android.gms.common.wrappers.Wrappers;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class ClientLibraryUtils {
private ClientLibraryUtils() {
}
public static int getClientVersion(Context context, String str) {
Bundle bundle;
PackageInfo packageInfo = getPackageInfo(context, str);
if (packageInfo == null || packageInfo.applicationInfo == null || (bundle = packageInfo.applicationInfo.metaData) == null) {
return -1;
}
return bundle.getInt("com.google.android.gms.version", -1);
}
public static PackageInfo getPackageInfo(Context context, String str) {
try {
return Wrappers.packageManager(context).getPackageInfo(str, 128);
} catch (PackageManager.NameNotFoundException unused) {
return null;
}
}
public static boolean isPackageSide() {
return false;
}
}
@@ -0,0 +1,19 @@
package com.google.android.gms.common.util;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public interface Clock {
/* JADX INFO: renamed from: com.google.android.gms.common.util.Clock$-CC, reason: invalid class name */
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
public final /* synthetic */ class CC {
}
long currentThreadTimeMillis();
long currentTimeMillis();
long elapsedRealtime();
long nanoTime();
}
@@ -0,0 +1,147 @@
package com.google.android.gms.common.util;
import androidx.collection.ArrayMap;
import androidx.collection.ArraySet;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class CollectionUtils {
private CollectionUtils() {
}
public static boolean isEmpty(Collection<?> collection) {
if (collection == null) {
return true;
}
return collection.isEmpty();
}
@Deprecated
public static <T> List<T> listOf() {
return Collections.emptyList();
}
public static <K, V> Map<K, V> mapOf(K k, V v, K k2, V v2, K k3, V v3) {
Map mapZza = zza(3, false);
mapZza.put(k, v);
mapZza.put(k2, v2);
mapZza.put(k3, v3);
return Collections.unmodifiableMap(mapZza);
}
public static <K, V> Map<K, V> mapOfKeyValueArrays(K[] kArr, V[] vArr) {
int length = kArr.length;
int length2 = vArr.length;
if (length != length2) {
throw new IllegalArgumentException("Key and values array lengths not equal: " + length + " != " + length2);
}
if (length == 0) {
return Collections.emptyMap();
}
if (length == 1) {
return Collections.singletonMap(kArr[0], vArr[0]);
}
Map mapZza = zza(length, false);
for (int i = 0; i < kArr.length; i++) {
mapZza.put(kArr[i], vArr[i]);
}
return Collections.unmodifiableMap(mapZza);
}
public static <T> Set<T> mutableSetOfWithSize(int i) {
return i == 0 ? new ArraySet() : zzb(i, true);
}
@Deprecated
public static <T> Set<T> setOf(T t, T t2, T t3) {
Set setZzb = zzb(3, false);
setZzb.add(t);
setZzb.add(t2);
setZzb.add(t3);
return Collections.unmodifiableSet(setZzb);
}
private static Map zza(int i, boolean z) {
return i <= 256 ? new ArrayMap(i) : new HashMap(i, 1.0f);
}
@Deprecated
public static <T> List<T> listOf(T t) {
return Collections.singletonList(t);
}
private static Set zzb(int i, boolean z) {
if (i <= (true != z ? 256 : 128)) {
return new ArraySet(i);
}
return new HashSet(i, true != z ? 1.0f : 0.75f);
}
@Deprecated
public static <T> List<T> listOf(T... tArr) {
int length = tArr.length;
if (length == 0) {
return Collections.emptyList();
}
if (length == 1) {
return Collections.singletonList(tArr[0]);
}
return Collections.unmodifiableList(Arrays.asList(tArr));
}
public static <K, V> Map<K, V> mapOf(K k, V v, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) {
Map mapZza = zza(6, false);
mapZza.put(k, v);
mapZza.put(k2, v2);
mapZza.put(k3, v3);
mapZza.put(k4, v4);
mapZza.put(k5, v5);
mapZza.put(k6, v6);
return Collections.unmodifiableMap(mapZza);
}
@Deprecated
public static <T> Set<T> setOf(T... tArr) {
int length = tArr.length;
if (length == 0) {
return Collections.emptySet();
}
if (length == 1) {
return Collections.singleton(tArr[0]);
}
if (length == 2) {
T t = tArr[0];
T t2 = tArr[1];
Set setZzb = zzb(2, false);
setZzb.add(t);
setZzb.add(t2);
return Collections.unmodifiableSet(setZzb);
}
if (length == 3) {
return setOf(tArr[0], tArr[1], tArr[2]);
}
if (length == 4) {
T t3 = tArr[0];
T t4 = tArr[1];
T t5 = tArr[2];
T t6 = tArr[3];
Set setZzb2 = zzb(4, false);
setZzb2.add(t3);
setZzb2.add(t4);
setZzb2.add(t5);
setZzb2.add(t6);
return Collections.unmodifiableSet(setZzb2);
}
Set setZzb3 = zzb(length, false);
Collections.addAll(setZzb3, tArr);
return Collections.unmodifiableSet(setZzb3);
}
}
@@ -0,0 +1,24 @@
package com.google.android.gms.common.util;
import android.content.Context;
import android.util.Log;
import com.google.android.gms.common.internal.Preconditions;
import com.google.errorprone.annotations.ResultIgnorabilityUnspecified;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class CrashUtils {
private static final String[] zza = {"android.", "com.android.", "dalvik.", "java.", "javax."};
@ResultIgnorabilityUnspecified
public static boolean addDynamiteErrorToDropBox(Context context, Throwable th) {
try {
Preconditions.checkNotNull(context);
Preconditions.checkNotNull(th);
return false;
} catch (Exception e) {
Log.e("CrashUtils", "Error adding exception to DropBox!", e);
return false;
}
}
}
@@ -0,0 +1,29 @@
package com.google.android.gms.common.util;
import android.database.CharArrayBuffer;
import android.graphics.Bitmap;
import android.text.TextUtils;
import java.io.ByteArrayOutputStream;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class DataUtils {
public static void copyStringToBuffer(String str, CharArrayBuffer charArrayBuffer) {
if (TextUtils.isEmpty(str)) {
charArrayBuffer.sizeCopied = 0;
return;
}
if (charArrayBuffer.data == null || charArrayBuffer.data.length < str.length()) {
charArrayBuffer.data = str.toCharArray();
} else {
str.getChars(0, str.length(), charArrayBuffer.data, 0);
}
charArrayBuffer.sizeCopied = str.length();
}
public static byte[] loadImageBytes(Bitmap bitmap) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
return byteArrayOutputStream.toByteArray();
}
}
@@ -0,0 +1,36 @@
package com.google.android.gms.common.util;
import android.os.SystemClock;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class DefaultClock implements Clock {
private static final DefaultClock zza = new DefaultClock();
private DefaultClock() {
}
public static Clock getInstance() {
return zza;
}
@Override // com.google.android.gms.common.util.Clock
public final long currentThreadTimeMillis() {
return SystemClock.currentThreadTimeMillis();
}
@Override // com.google.android.gms.common.util.Clock
public final long currentTimeMillis() {
return System.currentTimeMillis();
}
@Override // com.google.android.gms.common.util.Clock
public final long elapsedRealtime() {
return SystemClock.elapsedRealtime();
}
@Override // com.google.android.gms.common.util.Clock
public final long nanoTime() {
return System.nanoTime();
}
}
@@ -0,0 +1,250 @@
package com.google.android.gms.common.util;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.hardware.SensorManager;
import android.os.Build;
import com.google.android.gms.common.GooglePlayServicesUtilLight;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class DeviceProperties {
private static Boolean zza;
private static Boolean zzb;
private static Boolean zzc;
private static Boolean zzd;
private static Boolean zze;
private static Boolean zzf;
private static Boolean zzg;
private static Boolean zzh;
private static Boolean zzi;
private static Boolean zzj;
private static Boolean zzk;
private static Boolean zzl;
private static Boolean zzm;
private static Boolean zzn;
private DeviceProperties() {
}
public static boolean isAuto(Context context) {
PackageManager packageManager = context.getPackageManager();
if (zzj == null) {
boolean z = false;
if (PlatformVersion.isAtLeastO() && packageManager.hasSystemFeature("android.hardware.type.automotive")) {
z = true;
}
zzj = Boolean.valueOf(z);
}
return zzj.booleanValue();
}
public static boolean isBstar(Context context) {
if (zzm == null) {
boolean z = false;
if (PlatformVersion.isAtLeastR() && context.getPackageManager().hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")) {
z = true;
}
zzm = Boolean.valueOf(z);
}
return zzm.booleanValue();
}
public static boolean isFoldable(Context context) {
if (zzc == null) {
SensorManager sensorManager = (SensorManager) context.getSystemService("sensor");
boolean z = false;
if (PlatformVersion.isAtLeastR() && sensorManager != null && sensorManager.getDefaultSensor(36) != null) {
z = true;
}
zzc = Boolean.valueOf(z);
}
return zzc.booleanValue();
}
public static boolean isLatchsky(Context context) {
if (zzg == null) {
PackageManager packageManager = context.getPackageManager();
boolean z = false;
if (packageManager.hasSystemFeature("com.google.android.feature.services_updater") && packageManager.hasSystemFeature("cn.google.services")) {
z = true;
}
zzg = Boolean.valueOf(z);
}
return zzg.booleanValue();
}
/* JADX WARN: Removed duplicated region for block: B:31:0x006f */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
public static boolean isPhone(android.content.Context r4) {
/*
java.lang.Boolean r0 = com.google.android.gms.common.util.DeviceProperties.zza
if (r0 != 0) goto L76
boolean r0 = isFoldable(r4)
r1 = 1
if (r0 != 0) goto L70
boolean r0 = isTablet(r4)
r2 = 0
if (r0 != 0) goto L6f
boolean r0 = isWearable(r4)
if (r0 != 0) goto L6f
boolean r0 = zzb(r4)
if (r0 != 0) goto L6f
java.lang.Boolean r0 = com.google.android.gms.common.util.DeviceProperties.zzi
if (r0 != 0) goto L32
android.content.pm.PackageManager r0 = r4.getPackageManager()
java.lang.String r3 = "org.chromium.arc"
boolean r0 = r0.hasSystemFeature(r3)
java.lang.Boolean r0 = java.lang.Boolean.valueOf(r0)
com.google.android.gms.common.util.DeviceProperties.zzi = r0
L32:
java.lang.Boolean r0 = com.google.android.gms.common.util.DeviceProperties.zzi
boolean r0 = r0.booleanValue()
if (r0 != 0) goto L6f
boolean r0 = isAuto(r4)
if (r0 != 0) goto L6f
boolean r0 = isTv(r4)
if (r0 != 0) goto L6f
java.lang.Boolean r0 = com.google.android.gms.common.util.DeviceProperties.zzl
if (r0 != 0) goto L5a
android.content.pm.PackageManager r0 = r4.getPackageManager()
java.lang.String r3 = "com.google.android.feature.AMATI_EXPERIENCE"
boolean r0 = r0.hasSystemFeature(r3)
java.lang.Boolean r0 = java.lang.Boolean.valueOf(r0)
com.google.android.gms.common.util.DeviceProperties.zzl = r0
L5a:
java.lang.Boolean r0 = com.google.android.gms.common.util.DeviceProperties.zzl
boolean r0 = r0.booleanValue()
if (r0 != 0) goto L6f
boolean r0 = isBstar(r4)
if (r0 != 0) goto L6f
boolean r4 = isXr(r4)
if (r4 != 0) goto L6f
goto L70
L6f:
r1 = r2
L70:
java.lang.Boolean r4 = java.lang.Boolean.valueOf(r1)
com.google.android.gms.common.util.DeviceProperties.zza = r4
L76:
java.lang.Boolean r4 = com.google.android.gms.common.util.DeviceProperties.zza
boolean r4 = r4.booleanValue()
return r4
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.gms.common.util.DeviceProperties.isPhone(android.content.Context):boolean");
}
public static boolean isSevenInchTablet(Context context) {
return zzc(context.getResources());
}
public static boolean isSidewinder(Context context) {
return zza(context);
}
public static boolean isTablet(Context context) {
return isTablet(context.getResources());
}
public static boolean isTv(Context context) {
PackageManager packageManager = context.getPackageManager();
if (zzk == null) {
boolean z = true;
if (!packageManager.hasSystemFeature("com.google.android.tv") && !packageManager.hasSystemFeature("android.hardware.type.television") && !packageManager.hasSystemFeature("android.software.leanback")) {
z = false;
}
zzk = Boolean.valueOf(z);
}
return zzk.booleanValue();
}
public static boolean isUserBuild() {
int i = GooglePlayServicesUtilLight.GOOGLE_PLAY_SERVICES_VERSION_CODE;
return "user".equals(Build.TYPE);
}
public static boolean isWearable(Context context) {
return zzd(context.getPackageManager());
}
public static boolean isWearableWithoutPlayStore(Context context) {
if (isWearable(context) && !PlatformVersion.isAtLeastN()) {
return true;
}
if (zza(context)) {
return !PlatformVersion.isAtLeastO() || PlatformVersion.isAtLeastR();
}
return false;
}
public static boolean isXr(Context context) {
PackageManager packageManager = context.getPackageManager();
if (zzn == null) {
zzn = Boolean.valueOf(packageManager.hasSystemFeature("android.software.xr.immersive"));
}
return zzn.booleanValue();
}
public static boolean zza(Context context) {
if (zzf == null) {
boolean z = false;
if (PlatformVersion.isAtLeastLollipop() && context.getPackageManager().hasSystemFeature("cn.google")) {
z = true;
}
zzf = Boolean.valueOf(z);
}
return zzf.booleanValue();
}
public static boolean zzb(Context context) {
if (zzh == null) {
boolean z = true;
if (!context.getPackageManager().hasSystemFeature("android.hardware.type.iot") && !context.getPackageManager().hasSystemFeature("android.hardware.type.embedded")) {
z = false;
}
zzh = Boolean.valueOf(z);
}
return zzh.booleanValue();
}
public static boolean zzc(Resources resources) {
boolean z = false;
if (resources == null) {
return false;
}
if (zzd == null) {
Configuration configuration = resources.getConfiguration();
if ((configuration.screenLayout & 15) <= 3 && configuration.smallestScreenWidthDp >= 600) {
z = true;
}
zzd = Boolean.valueOf(z);
}
return zzd.booleanValue();
}
public static boolean zzd(PackageManager packageManager) {
if (zze == null) {
boolean z = false;
if (PlatformVersion.isAtLeastKitKatWatch() && packageManager.hasSystemFeature("android.hardware.type.watch")) {
z = true;
}
zze = Boolean.valueOf(z);
}
return zze.booleanValue();
}
public static boolean isTablet(Resources resources) {
if (resources == null) {
return false;
}
if (zzb == null) {
zzb = Boolean.valueOf((resources.getConfiguration().screenLayout & 15) > 3 || zzc(resources));
}
return zzb.booleanValue();
}
}
@@ -0,0 +1,10 @@
package com.google.android.gms.common.util;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
@Target({ElementType.TYPE})
public @interface DynamiteApi {
}
@@ -0,0 +1,23 @@
package com.google.android.gms.common.util;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class GmsVersion {
public static final int VERSION_HALLOUMI = 4100000;
public static final int VERSION_JARLSBERG = 4300000;
public static final int VERSION_KENAFA = 4400000;
public static final int VERSION_LONGHORN = 5000000;
public static final int VERSION_MANCHEGO = 6000000;
public static final int VERSION_ORLA = 7000000;
public static final int VERSION_PARMESAN = 7200000;
public static final int VERSION_QUESO = 7500000;
public static final int VERSION_REBLOCHON = 7800000;
public static final int VERSION_SAGA = 8000000;
private GmsVersion() {
}
public static boolean isAtLeastFenacho(int i) {
return i >= 3200000;
}
}
@@ -0,0 +1,55 @@
package com.google.android.gms.common.util;
import io.ktor.util.date.GMTDateParser;
import kotlin.UByte;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class Hex {
private static final char[] zza = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
private static final char[] zzb = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', GMTDateParser.DAY_OF_MONTH, 'e', 'f'};
public static String bytesToStringLowercase(byte[] bArr) {
int length = bArr.length;
char[] cArr = new char[length + length];
int i = 0;
for (byte b : bArr) {
int i2 = b & UByte.MAX_VALUE;
char[] cArr2 = zzb;
cArr[i] = cArr2[i2 >>> 4];
cArr[i + 1] = cArr2[b & 15];
i += 2;
}
return new String(cArr);
}
public static String bytesToStringUppercase(byte[] bArr) {
return bytesToStringUppercase(bArr, false);
}
public static byte[] stringToBytes(String str) throws IllegalArgumentException {
int length = str.length();
if (length % 2 != 0) {
throw new IllegalArgumentException("Hex string has odd number of characters");
}
byte[] bArr = new byte[length / 2];
int i = 0;
while (i < length) {
int i2 = i + 2;
bArr[i / 2] = (byte) Integer.parseInt(str.substring(i, i2), 16);
i = i2;
}
return bArr;
}
public static String bytesToStringUppercase(byte[] bArr, boolean z) {
int length = bArr.length;
StringBuilder sb = new StringBuilder(length + length);
for (int i = 0; i < length && (!z || i != length - 1 || (bArr[i] & UByte.MAX_VALUE) != 0); i++) {
char[] cArr = zza;
sb.append(cArr[(bArr[i] & 240) >>> 4]);
sb.append(cArr[bArr[i] & 15]);
}
return sb.toString();
}
}
@@ -0,0 +1,60 @@
package com.google.android.gms.common.util;
import com.google.errorprone.annotations.ResultIgnorabilityUnspecified;
import kotlin.UByte;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class HexDumpUtils {
@ResultIgnorabilityUnspecified
public static String dump(byte[] bArr, int i, int i2, boolean z) {
int length;
if (bArr == null || (length = bArr.length) == 0 || i < 0 || i2 <= 0 || i + i2 > length) {
return null;
}
StringBuilder sb = new StringBuilder((z ? 75 : 57) * ((i2 + 15) / 16));
int i3 = i2;
int i4 = 0;
int i5 = 0;
while (i3 > 0) {
if (i4 == 0) {
if (i2 < 65536) {
sb.append(String.format("%04X:", Integer.valueOf(i)));
} else {
sb.append(String.format("%08X:", Integer.valueOf(i)));
}
i5 = i;
} else if (i4 == 8) {
sb.append(" -");
}
sb.append(String.format(" %02X", Integer.valueOf(bArr[i] & UByte.MAX_VALUE)));
i3--;
i4++;
if (z && (i4 == 16 || i3 == 0)) {
int i6 = 16 - i4;
if (i6 > 0) {
for (int i7 = 0; i7 < i6; i7++) {
sb.append(" ");
}
}
if (i6 >= 8) {
sb.append(" ");
}
sb.append(" ");
for (int i8 = 0; i8 < i4; i8++) {
char c = (char) bArr[i5 + i8];
if (c < ' ' || c > '~') {
c = '.';
}
sb.append(c);
}
}
if (i4 == 16 || i3 == 0) {
sb.append('\n');
i4 = 0;
}
i++;
}
return sb.toString();
}
}
@@ -0,0 +1,54 @@
package com.google.android.gms.common.util;
import com.google.android.gms.internal.common.zzo;
import com.google.android.gms.internal.common.zzx;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLDecoder;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import kotlin.text.Typography;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class HttpUtils {
private static final Pattern zza = Pattern.compile("^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$");
private static final Pattern zzb = Pattern.compile("^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$");
private static final Pattern zzc = Pattern.compile("^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$");
private HttpUtils() {
}
public static Map<String, String> parse(URI uri, String str) {
Map<String, String> mapEmptyMap = Collections.emptyMap();
String rawQuery = uri.getRawQuery();
if (rawQuery != null && rawQuery.length() > 0) {
mapEmptyMap = new HashMap<>();
zzx zzxVarZzc = zzx.zzc(zzo.zzb('='));
Iterator it = zzx.zzc(zzo.zzb(Typography.amp)).zzb().zzd(rawQuery).iterator();
while (it.hasNext()) {
List listZzf = zzxVarZzc.zzf((String) it.next());
if (listZzf.isEmpty() || listZzf.size() > 2) {
throw new IllegalArgumentException("bad parameter");
}
mapEmptyMap.put(zza((String) listZzf.get(0), str), listZzf.size() == 2 ? zza((String) listZzf.get(1), str) : null);
}
}
return mapEmptyMap;
}
private static String zza(String str, String str2) {
if (str2 == null) {
str2 = "ISO-8859-1";
}
try {
return URLDecoder.decode(str, str2);
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(e);
}
}
}
@@ -0,0 +1,108 @@
package com.google.android.gms.common.util;
import android.os.ParcelFileDescriptor;
import com.google.android.gms.common.internal.Preconditions;
import com.google.errorprone.annotations.ResultIgnorabilityUnspecified;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.annotation.Nullable;
import kotlin.UByte;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
@Deprecated
public final class IOUtils {
private IOUtils() {
}
public static void closeQuietly(@Nullable ParcelFileDescriptor parcelFileDescriptor) {
if (parcelFileDescriptor != null) {
try {
parcelFileDescriptor.close();
} catch (IOException unused) {
}
}
}
@ResultIgnorabilityUnspecified
@Deprecated
public static long copyStream(InputStream inputStream, OutputStream outputStream) throws IOException {
return copyStream(inputStream, outputStream, false, 1024);
}
public static boolean isGzipByteBuffer(byte[] bArr) {
if (bArr.length > 1) {
if ((((bArr[1] & UByte.MAX_VALUE) << 8) | (bArr[0] & UByte.MAX_VALUE)) == 35615) {
return true;
}
}
return false;
}
@Deprecated
public static byte[] readInputStreamFully(InputStream inputStream) throws IOException {
return readInputStreamFully(inputStream, true);
}
@Deprecated
public static byte[] toByteArray(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Preconditions.checkNotNull(inputStream);
Preconditions.checkNotNull(byteArrayOutputStream);
byte[] bArr = new byte[4096];
while (true) {
int i = inputStream.read(bArr);
if (i == -1) {
return byteArrayOutputStream.toByteArray();
}
byteArrayOutputStream.write(bArr, 0, i);
}
}
public static void closeQuietly(@Nullable Closeable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (IOException unused) {
}
}
}
@ResultIgnorabilityUnspecified
@Deprecated
public static long copyStream(InputStream inputStream, OutputStream outputStream, boolean z, int i) throws IOException {
byte[] bArr = new byte[i];
long j = 0;
while (true) {
try {
int i2 = inputStream.read(bArr, 0, i);
if (i2 == -1) {
break;
}
j += (long) i2;
outputStream.write(bArr, 0, i2);
} catch (Throwable th) {
if (z) {
closeQuietly(inputStream);
closeQuietly(outputStream);
}
throw th;
}
}
if (z) {
closeQuietly(inputStream);
closeQuietly(outputStream);
}
return j;
}
@Deprecated
public static byte[] readInputStreamFully(InputStream inputStream, boolean z) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
copyStream(inputStream, byteArrayOutputStream, z, 1024);
return byteArrayOutputStream.toByteArray();
}
}
@@ -0,0 +1,147 @@
package com.google.android.gms.common.util;
import android.text.TextUtils;
import com.google.android.gms.common.internal.Preconditions;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class JsonUtils {
private static final Pattern zza = Pattern.compile("\\\\.");
private static final Pattern zzb = Pattern.compile("[\\\\\"/\b\f\n\r\t]");
private JsonUtils() {
}
public static boolean areJsonValuesEquivalent(Object obj, Object obj2) {
if (obj == null && obj2 == null) {
return true;
}
if (obj == null || obj2 == null) {
return false;
}
if ((obj instanceof JSONObject) && (obj2 instanceof JSONObject)) {
JSONObject jSONObject = (JSONObject) obj;
JSONObject jSONObject2 = (JSONObject) obj2;
if (jSONObject.length() != jSONObject2.length()) {
return false;
}
Iterator<String> itKeys = jSONObject.keys();
while (itKeys.hasNext()) {
String next = itKeys.next();
if (!jSONObject2.has(next)) {
return false;
}
try {
Preconditions.checkNotNull(next);
} catch (JSONException unused) {
}
if (!areJsonValuesEquivalent(jSONObject.get(next), jSONObject2.get(next))) {
return false;
}
}
return true;
}
if (!(obj instanceof JSONArray) || !(obj2 instanceof JSONArray)) {
return obj.equals(obj2);
}
JSONArray jSONArray = (JSONArray) obj;
JSONArray jSONArray2 = (JSONArray) obj2;
if (jSONArray.length() != jSONArray2.length()) {
return false;
}
for (int i = 0; i < jSONArray.length(); i++) {
if (!areJsonValuesEquivalent(jSONArray.get(i), jSONArray2.get(i))) {
return false;
}
}
return true;
}
public static String escapeString(String str) {
if (TextUtils.isEmpty(str)) {
return str;
}
Matcher matcher = zzb.matcher(str);
StringBuffer stringBuffer = null;
while (matcher.find()) {
if (stringBuffer == null) {
stringBuffer = new StringBuffer();
}
char cCharAt = matcher.group().charAt(0);
if (cCharAt == '\f') {
matcher.appendReplacement(stringBuffer, "\\\\f");
} else if (cCharAt == '\r') {
matcher.appendReplacement(stringBuffer, "\\\\r");
} else if (cCharAt == '\"') {
matcher.appendReplacement(stringBuffer, "\\\\\\\"");
} else if (cCharAt == '/') {
matcher.appendReplacement(stringBuffer, "\\\\/");
} else if (cCharAt != '\\') {
switch (cCharAt) {
case '\b':
matcher.appendReplacement(stringBuffer, "\\\\b");
break;
case '\t':
matcher.appendReplacement(stringBuffer, "\\\\t");
break;
case '\n':
matcher.appendReplacement(stringBuffer, "\\\\n");
break;
}
} else {
matcher.appendReplacement(stringBuffer, "\\\\\\\\");
}
}
if (stringBuffer == null) {
return str;
}
matcher.appendTail(stringBuffer);
return stringBuffer.toString();
}
public static String unescapeString(String str) {
if (TextUtils.isEmpty(str)) {
return str;
}
String strZza = zzc.zza(str);
Matcher matcher = zza.matcher(strZza);
StringBuffer stringBuffer = null;
while (matcher.find()) {
if (stringBuffer == null) {
stringBuffer = new StringBuffer();
}
char cCharAt = matcher.group().charAt(1);
if (cCharAt == '\"') {
matcher.appendReplacement(stringBuffer, "\"");
} else if (cCharAt == '/') {
matcher.appendReplacement(stringBuffer, "/");
} else if (cCharAt == '\\') {
matcher.appendReplacement(stringBuffer, "\\\\");
} else if (cCharAt == 'b') {
matcher.appendReplacement(stringBuffer, "\b");
} else if (cCharAt == 'f') {
matcher.appendReplacement(stringBuffer, "\f");
} else if (cCharAt == 'n') {
matcher.appendReplacement(stringBuffer, "\n");
} else if (cCharAt == 'r') {
matcher.appendReplacement(stringBuffer, "\r");
} else {
if (cCharAt != 't') {
throw new IllegalStateException("Found an escaped character that should never be.");
}
matcher.appendReplacement(stringBuffer, "\t");
}
}
if (stringBuffer == null) {
return strZza;
}
matcher.appendTail(stringBuffer);
return stringBuffer.toString();
}
}
@@ -0,0 +1,30 @@
package com.google.android.gms.common.util;
import java.util.HashMap;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class MapUtils {
public static void writeStringMapToJson(StringBuilder sb, HashMap<String, String> map) {
sb.append("{");
boolean z = true;
for (String str : map.keySet()) {
if (!z) {
sb.append(",");
}
String str2 = map.get(str);
sb.append("\"");
sb.append(str);
sb.append("\":");
if (str2 == null) {
sb.append("null");
} else {
sb.append("\"");
sb.append(str2);
sb.append("\"");
}
z = false;
}
sb.append("}");
}
}
@@ -0,0 +1,41 @@
package com.google.android.gms.common.util;
import androidx.collection.ScatterMapKt;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class MurmurHash3 {
private MurmurHash3() {
}
public static int murmurhash3_x86_32(byte[] bArr, int i, int i2, int i3) {
int i4;
int i5 = i;
while (true) {
i4 = (i2 & (-4)) + i;
if (i5 >= i4) {
break;
}
int i6 = ((bArr[i5] & 255) | ((bArr[i5 + 1] & 255) << 8) | ((bArr[i5 + 2] & 255) << 16) | (bArr[i5 + 3] << 24)) * ScatterMapKt.MurmurHashC1;
int i7 = i3 ^ (((i6 >>> 17) | (i6 << 15)) * 461845907);
i3 = (((i7 >>> 19) | (i7 << 13)) * 5) - 430675100;
i5 += 4;
}
int i8 = i2 & 3;
if (i8 == 1) {
int i9 = ((bArr[i4] & 255) | i) * ScatterMapKt.MurmurHashC1;
i3 ^= ((i9 >>> 17) | (i9 << 15)) * 461845907;
} else {
if (i8 != 2) {
i = i8 == 3 ? (bArr[i4 + 2] & 255) << 16 : 0;
}
i |= (bArr[i4 + 1] & 255) << 8;
int i92 = ((bArr[i4] & 255) | i) * ScatterMapKt.MurmurHashC1;
i3 ^= ((i92 >>> 17) | (i92 << 15)) * 461845907;
}
int i10 = i3 ^ i2;
int i11 = (i10 ^ (i10 >>> 16)) * (-2048144789);
int i12 = (i11 ^ (i11 >>> 13)) * (-1028477387);
return i12 ^ (i12 >>> 16);
}
}
@@ -0,0 +1,8 @@
package com.google.android.gms.common.util;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class NumberUtils {
private NumberUtils() {
}
}
@@ -0,0 +1,105 @@
package com.google.android.gms.common.util;
import android.os.Build;
import androidx.core.os.BuildCompat;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class PlatformVersion {
private PlatformVersion() {
}
public static boolean isAtLeastHoneycomb() {
return true;
}
public static boolean isAtLeastHoneycombMR1() {
return true;
}
public static boolean isAtLeastIceCreamSandwich() {
return true;
}
public static boolean isAtLeastIceCreamSandwichMR1() {
return true;
}
public static boolean isAtLeastJellyBean() {
return true;
}
public static boolean isAtLeastJellyBeanMR1() {
return true;
}
public static boolean isAtLeastJellyBeanMR2() {
return true;
}
public static boolean isAtLeastKitKat() {
return true;
}
public static boolean isAtLeastKitKatWatch() {
return true;
}
public static boolean isAtLeastLollipop() {
return true;
}
public static boolean isAtLeastLollipopMR1() {
return true;
}
public static boolean isAtLeastM() {
return true;
}
public static boolean isAtLeastN() {
return true;
}
public static boolean isAtLeastO() {
return Build.VERSION.SDK_INT >= 26;
}
public static boolean isAtLeastP() {
return Build.VERSION.SDK_INT >= 28;
}
public static boolean isAtLeastQ() {
return Build.VERSION.SDK_INT >= 29;
}
public static boolean isAtLeastR() {
return Build.VERSION.SDK_INT >= 30;
}
public static boolean isAtLeastS() {
return Build.VERSION.SDK_INT >= 31;
}
public static boolean isAtLeastSv2() {
return Build.VERSION.SDK_INT >= 32;
}
public static boolean isAtLeastT() {
return Build.VERSION.SDK_INT >= 33;
}
public static boolean isAtLeastU() {
if (isAtLeastT()) {
return BuildCompat.isAtLeastU();
}
return false;
}
public static boolean isAtLeastV() {
if (isAtLeastU()) {
return BuildCompat.isAtLeastV();
}
return false;
}
}
@@ -0,0 +1,7 @@
package com.google.android.gms.common.util;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public interface Predicate<T> {
boolean apply(T t);
}
@@ -0,0 +1,71 @@
package com.google.android.gms.common.util;
import android.app.Application;
import android.os.Build;
import android.os.Process;
import android.os.StrictMode;
import com.google.android.gms.common.internal.Preconditions;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import javax.annotation.Nullable;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class ProcessUtils {
@Nullable
private static String zza;
private static int zzb;
private ProcessUtils() {
}
public static String getMyProcessName() throws Throwable {
BufferedReader bufferedReader;
if (zza == null) {
if (Build.VERSION.SDK_INT >= 28) {
zza = Application.getProcessName();
} else {
int iMyPid = zzb;
if (iMyPid == 0) {
iMyPid = Process.myPid();
zzb = iMyPid;
}
String strTrim = null;
strTrim = null;
strTrim = null;
BufferedReader bufferedReader2 = null;
if (iMyPid > 0) {
try {
String str = "/proc/" + iMyPid + "/cmdline";
StrictMode.ThreadPolicy threadPolicyAllowThreadDiskReads = StrictMode.allowThreadDiskReads();
try {
bufferedReader = new BufferedReader(new FileReader(str));
try {
String line = bufferedReader.readLine();
Preconditions.checkNotNull(line);
strTrim = line.trim();
} catch (IOException unused) {
} catch (Throwable th) {
th = th;
bufferedReader2 = bufferedReader;
IOUtils.closeQuietly(bufferedReader2);
throw th;
}
} finally {
StrictMode.setThreadPolicy(threadPolicyAllowThreadDiskReads);
}
} catch (IOException unused2) {
bufferedReader = null;
} catch (Throwable th2) {
th = th2;
}
IOUtils.closeQuietly(bufferedReader);
}
zza = strTrim;
}
}
return zza;
}
}
@@ -0,0 +1,6 @@
package com.google.android.gms.common.util;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public @interface RetainForClient {
}
@@ -0,0 +1,23 @@
package com.google.android.gms.common.util;
import com.google.android.gms.common.api.Scope;
import com.google.android.gms.common.internal.Preconditions;
import java.util.Set;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class ScopeUtil {
private ScopeUtil() {
}
public static String[] toScopeString(Set<Scope> set) {
Preconditions.checkNotNull(set, "scopes can't be null.");
Scope[] scopeArr = (Scope[]) set.toArray(new Scope[set.size()]);
Preconditions.checkNotNull(scopeArr, "scopes can't be null.");
String[] strArr = new String[scopeArr.length];
for (int i = 0; i < scopeArr.length; i++) {
strArr[i] = scopeArr[i].getScopeUri();
}
return strArr;
}
}
@@ -0,0 +1,16 @@
package com.google.android.gms.common.util;
import android.content.Context;
import android.content.SharedPreferences;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class SharedPreferencesUtils {
private SharedPreferencesUtils() {
}
@Deprecated
public static void publishWorldReadableSharedPreferences(Context context, SharedPreferences.Editor editor, String str) {
throw new IllegalStateException("world-readable shared preferences should only be used by apk");
}
}
@@ -0,0 +1,26 @@
package com.google.android.gms.common.util;
import android.text.TextUtils;
import java.util.regex.Pattern;
import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class Strings {
private static final Pattern zza = Pattern.compile("\\$\\{(.*?)\\}");
private Strings() {
}
public static String emptyToNull(String str) {
if (TextUtils.isEmpty(str)) {
return null;
}
return str;
}
@EnsuresNonNullIf(expression = {"#1"}, result = false)
public static boolean isEmptyOrWhitespace(String str) {
return str == null || str.trim().isEmpty();
}
}
@@ -0,0 +1,33 @@
package com.google.android.gms.common.util;
import android.content.Context;
import android.content.pm.PackageManager;
import android.util.Log;
import com.google.android.gms.common.GoogleSignatureVerifier;
import com.google.android.gms.common.wrappers.Wrappers;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class UidVerifier {
private UidVerifier() {
}
public static boolean isGooglePlayServicesUid(Context context, int i) {
if (!uidHasPackageName(context, i, "com.google.android.gms")) {
return false;
}
try {
return GoogleSignatureVerifier.getInstance(context).isGooglePublicSignedPackage(context.getPackageManager().getPackageInfo("com.google.android.gms", 64));
} catch (PackageManager.NameNotFoundException unused) {
if (!Log.isLoggable("UidVerifier", 3)) {
return false;
}
Log.d("UidVerifier", "Package manager can't find google play services package, defaulting to false");
return false;
}
}
public static boolean uidHasPackageName(Context context, int i, String str) {
return Wrappers.packageManager(context).zza(i, str);
}
}
@@ -0,0 +1,285 @@
package com.google.android.gms.common.util;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Process;
import android.os.WorkSource;
import android.util.Log;
import androidx.core.content.ContextCompat;
import com.google.android.gms.common.internal.Preconditions;
import com.google.android.gms.common.wrappers.Wrappers;
import io.ktor.http.ContentDisposition;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class WorkSourceUtil {
private static final int zza = Process.myUid();
private static final Method zzb;
private static final Method zzc;
private static final Method zzd;
private static final Method zze;
private static final Method zzf;
private static final Method zzg;
private static final Method zzh;
private static final Method zzi;
private static Boolean zzj;
static {
Method method;
Method method2;
Method method3;
Method method4;
Method method5;
Method method6;
Method method7;
Method method8;
try {
method = WorkSource.class.getMethod("add", Integer.TYPE);
} catch (Exception unused) {
method = null;
}
zzb = method;
if (PlatformVersion.isAtLeastJellyBeanMR2()) {
try {
method2 = WorkSource.class.getMethod("add", Integer.TYPE, String.class);
} catch (Exception unused2) {
method2 = null;
}
} else {
method2 = null;
}
zzc = method2;
try {
method3 = WorkSource.class.getMethod(ContentDisposition.Parameters.Size, new Class[0]);
} catch (Exception unused3) {
method3 = null;
}
zzd = method3;
try {
method4 = WorkSource.class.getMethod("get", Integer.TYPE);
} catch (Exception unused4) {
method4 = null;
}
zze = method4;
if (PlatformVersion.isAtLeastJellyBeanMR2()) {
try {
method5 = WorkSource.class.getMethod("getName", Integer.TYPE);
} catch (Exception unused5) {
method5 = null;
}
} else {
method5 = null;
}
zzf = method5;
if (PlatformVersion.isAtLeastP()) {
try {
method6 = WorkSource.class.getMethod("createWorkChain", new Class[0]);
} catch (Exception e) {
Log.w("WorkSourceUtil", "Missing WorkChain API createWorkChain", e);
method6 = null;
}
} else {
method6 = null;
}
zzg = method6;
if (PlatformVersion.isAtLeastP()) {
try {
method7 = Class.forName("android.os.WorkSource$WorkChain").getMethod("addNode", Integer.TYPE, String.class);
} catch (Exception e2) {
Log.w("WorkSourceUtil", "Missing WorkChain class", e2);
method7 = null;
}
} else {
method7 = null;
}
zzh = method7;
if (PlatformVersion.isAtLeastP()) {
try {
method8 = WorkSource.class.getMethod("isEmpty", new Class[0]);
try {
method8.setAccessible(true);
} catch (Exception unused6) {
}
} catch (Exception unused7) {
method8 = null;
}
} else {
method8 = null;
}
zzi = method8;
zzj = null;
}
private WorkSourceUtil() {
}
public static void add(WorkSource workSource, int i, String str) {
Method method = zzc;
if (method != null) {
if (str == null) {
str = "";
}
try {
method.invoke(workSource, Integer.valueOf(i), str);
return;
} catch (Exception e) {
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
return;
}
}
Method method2 = zzb;
if (method2 != null) {
try {
method2.invoke(workSource, Integer.valueOf(i));
} catch (Exception e2) {
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e2);
}
}
}
public static WorkSource fromPackage(Context context, String str) {
if (context != null && context.getPackageManager() != null && str != null) {
try {
ApplicationInfo applicationInfo = Wrappers.packageManager(context).getApplicationInfo(str, 0);
if (applicationInfo == null) {
Log.e("WorkSourceUtil", "Could not get applicationInfo from package: ".concat(str));
return null;
}
int i = applicationInfo.uid;
WorkSource workSource = new WorkSource();
add(workSource, i, str);
return workSource;
} catch (PackageManager.NameNotFoundException unused) {
Log.e("WorkSourceUtil", "Could not find package: ".concat(str));
}
}
return null;
}
public static WorkSource fromPackageAndModuleExperimentalPi(Context context, String str, String str2) {
Method method;
if (context == null || context.getPackageManager() == null || str2 == null || str == null) {
Log.w("WorkSourceUtil", "Unexpected null arguments");
return null;
}
int i = -1;
try {
ApplicationInfo applicationInfo = Wrappers.packageManager(context).getApplicationInfo(str, 0);
if (applicationInfo == null) {
Log.e("WorkSourceUtil", "Could not get applicationInfo from package: ".concat(str));
} else {
i = applicationInfo.uid;
}
} catch (PackageManager.NameNotFoundException unused) {
Log.e("WorkSourceUtil", "Could not find package: ".concat(str));
}
if (i < 0) {
return null;
}
WorkSource workSource = new WorkSource();
Method method2 = zzg;
if (method2 == null || (method = zzh) == null) {
add(workSource, i, str);
} else {
try {
Object objInvoke = method2.invoke(workSource, new Object[0]);
int i2 = zza;
if (i != i2) {
method.invoke(objInvoke, Integer.valueOf(i), str);
}
method.invoke(objInvoke, Integer.valueOf(i2), str2);
} catch (Exception e) {
Log.w("WorkSourceUtil", "Unable to assign chained blame through WorkSource", e);
}
}
return workSource;
}
public static int get(WorkSource workSource, int i) {
Method method = zze;
if (method == null) {
return 0;
}
try {
Object objInvoke = method.invoke(workSource, Integer.valueOf(i));
Preconditions.checkNotNull(objInvoke);
return ((Integer) objInvoke).intValue();
} catch (Exception e) {
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
return 0;
}
}
public static String getName(WorkSource workSource, int i) {
Method method = zzf;
if (method == null) {
return null;
}
try {
return (String) method.invoke(workSource, Integer.valueOf(i));
} catch (Exception e) {
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
return null;
}
}
public static List<String> getNames(WorkSource workSource) {
ArrayList arrayList = new ArrayList();
int size = workSource == null ? 0 : size(workSource);
if (size != 0) {
for (int i = 0; i < size; i++) {
String name = getName(workSource, i);
if (!Strings.isEmptyOrWhitespace(name)) {
Preconditions.checkNotNull(name);
arrayList.add(name);
}
}
}
return arrayList;
}
public static synchronized boolean hasWorkSourcePermission(Context context) {
Boolean bool = zzj;
if (bool != null) {
return bool.booleanValue();
}
if (context == null) {
return false;
}
Boolean boolValueOf = Boolean.valueOf(ContextCompat.checkSelfPermission(context, "android.permission.UPDATE_DEVICE_STATS") == 0);
zzj = boolValueOf;
return boolValueOf.booleanValue();
}
public static boolean isEmpty(WorkSource workSource) {
Method method = zzi;
if (method != null) {
try {
Object objInvoke = method.invoke(workSource, new Object[0]);
Preconditions.checkNotNull(objInvoke);
return ((Boolean) objInvoke).booleanValue();
} catch (Exception e) {
Log.e("WorkSourceUtil", "Unable to check WorkSource emptiness", e);
}
}
return size(workSource) == 0;
}
public static int size(WorkSource workSource) {
Method method = zzd;
if (method != null) {
try {
Object objInvoke = method.invoke(workSource, new Object[0]);
Preconditions.checkNotNull(objInvoke);
return ((Integer) objInvoke).intValue();
} catch (Exception e) {
Log.wtf("WorkSourceUtil", "Unable to assign blame through WorkSource", e);
}
}
return 0;
}
}
@@ -0,0 +1,21 @@
package com.google.android.gms.common.util.concurrent;
import android.os.Handler;
import android.os.Looper;
import com.google.android.gms.internal.common.zzi;
import java.util.concurrent.Executor;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class HandlerExecutor implements Executor {
private final Handler zza;
public HandlerExecutor(Looper looper) {
this.zza = new zzi(looper);
}
@Override // java.util.concurrent.Executor
public final void execute(Runnable runnable) {
this.zza.post(runnable);
}
}
@@ -0,0 +1,24 @@
package com.google.android.gms.common.util.concurrent;
import com.google.android.gms.common.internal.Preconditions;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class NamedThreadFactory implements ThreadFactory {
private final String zza;
private final ThreadFactory zzb = Executors.defaultThreadFactory();
public NamedThreadFactory(String str) {
Preconditions.checkNotNull(str, "Name must not be null");
this.zza = str;
}
@Override // java.util.concurrent.ThreadFactory
public final Thread newThread(Runnable runnable) {
Thread threadNewThread = this.zzb.newThread(new zza(runnable, 0));
threadNewThread.setName(this.zza);
return threadNewThread;
}
}
@@ -0,0 +1,26 @@
package com.google.android.gms.common.util.concurrent;
import com.google.android.gms.common.internal.Preconditions;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public class NumberedThreadFactory implements ThreadFactory {
private final String zza;
private final AtomicInteger zzb = new AtomicInteger();
private final ThreadFactory zzc = Executors.defaultThreadFactory();
public NumberedThreadFactory(String str) {
Preconditions.checkNotNull(str, "Name must not be null");
this.zza = str;
}
@Override // java.util.concurrent.ThreadFactory
public final Thread newThread(Runnable runnable) {
Thread threadNewThread = this.zzc.newThread(new zza(runnable, 0));
threadNewThread.setName(this.zza + "[" + this.zzb.getAndIncrement() + "]");
return threadNewThread;
}
}
@@ -0,0 +1,19 @@
package com.google.android.gms.common.util.concurrent;
import android.os.Process;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
final class zza implements Runnable {
private final Runnable zza;
public zza(Runnable runnable, int i) {
this.zza = runnable;
}
@Override // java.lang.Runnable
public final void run() {
Process.setThreadPriority(0);
this.zza.run();
}
}
@@ -0,0 +1,12 @@
package com.google.android.gms.common.util;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class zza {
public static int zza(int i) {
if (i == -1) {
return -1;
}
return i / 1000;
}
}
@@ -0,0 +1,11 @@
package com.google.android.gms.common.util;
import android.os.Looper;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
public final class zzb {
public static boolean zza() {
return Looper.getMainLooper() == Looper.myLooper();
}
}
@@ -0,0 +1,47 @@
package com.google.android.gms.common.util;
import android.text.TextUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* JADX INFO: compiled from: com.google.android.gms:play-services-basement@@18.3.0 */
/* JADX INFO: loaded from: classes2.dex */
final class zzc {
private static final Pattern zza = Pattern.compile("\\\\u[0-9a-fA-F]{4}");
public static String zza(String str) {
if (TextUtils.isEmpty(str)) {
return str;
}
Matcher matcher = zza.matcher(str);
StringBuilder sb = null;
int iEnd = 0;
while (matcher.find()) {
if (sb == null) {
sb = new StringBuilder();
}
int iStart = matcher.start();
int i = iStart;
while (i >= 0 && str.charAt(i) == '\\') {
i--;
}
if ((iStart - i) % 2 != 0) {
int i2 = Integer.parseInt(matcher.group().substring(2), 16);
sb.append((CharSequence) str, iEnd, matcher.start());
if (i2 == 92) {
sb.append("\\\\");
} else {
sb.append(Character.toChars(i2));
}
iEnd = matcher.end();
}
}
if (sb == null) {
return str;
}
if (iEnd < matcher.regionEnd()) {
sb.append((CharSequence) str, iEnd, matcher.regionEnd());
}
return sb.toString();
}
}