* Decompile and recreate Soul Browser v1.4.85 with APK CI builds Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix CI build: include bundled google.jks and remove PR trigger The apktool build failed in CI because app/unknown/.../google.jks was excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files and commit the missing resource. Also remove the redundant pull_request workflow trigger. Co-authored-by: KaKi87 <KaKi87@pm.me> * Change package ID to com.github.kaki87.soulbrowser Rename the application ID so the rebuilt APK can be installed alongside the original Soul Browser from Google Play. - Update AndroidManifest package, permissions, providers, and actions - Update R class references in smali (com/github/kaki87/soulbrowser/R) - Update shortcuts.xml targetPackage - Rename app label to "Soul Rebuild" for easy identification Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix install compatibility: remove split APK metadata and bundle native libs The rebuilt APK still declared requiredSplitTypes and Play Store split metadata, causing Android to reject standalone installs as incompatible. - Remove requiredSplitTypes and split-related manifest meta-data - Merge native libs from all ABI splits with uncompressed storage - Page-align before signing for extractNativeLibs=false - Add .so to apktool doNotCompress list Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix install failure: use apksigner v2/v3 and bundle arm64 native libs Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only produces v1 signatures, causing Android to reject the install. - Sign with apksigner (v1+v2+v3) instead of jarsigner - Add arm64-v8a native libraries from universal Soul Browser 1.4.79 - Set extractNativeLibs=true for reliable sideload installs - Commit stable debug keystore for consistent signatures across builds Co-authored-by: KaKi87 <KaKi87@pm.me> * Add committed debug keystore for consistent APK signatures Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix startup crash: use original classes2.dex desugar libraries Apktool recompiles smali_classes2 into a broken classes2.dex, causing ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init. Inject the original classes2.dex (Java 8+ desugar libs) after apktool build instead of using the recompiled version. Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix missing drawable resources from density split APKs The base APK is an app bundle module; density-specific drawables like seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild, causing Resources$NotFoundException at runtime. - Merge non-9-patch resources from split APKs before apktool build - Sync public.xml IDs from R smali only when backing files exist - Add 713 density-specific resource IDs to public.xml Co-authored-by: KaKi87 <KaKi87@pm.me> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
153 lines
10 KiB
Java
153 lines
10 KiB
Java
package kotlin.random;
|
|
|
|
import com.google.android.gms.ads.RequestConfiguration;
|
|
import kotlin.ExperimentalUnsignedTypes;
|
|
import kotlin.Metadata;
|
|
import kotlin.SinceKotlin;
|
|
import kotlin.UByteArray;
|
|
import kotlin.UInt;
|
|
import kotlin.ULong;
|
|
import kotlin.jvm.internal.IntCompanionObject;
|
|
import kotlin.jvm.internal.Intrinsics;
|
|
import kotlin.jvm.internal.LongCompanionObject;
|
|
import kotlin.jvm.internal.SourceDebugExtension;
|
|
import kotlin.ranges.UIntRange;
|
|
import kotlin.ranges.ULongRange;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
@Metadata(d1 = {"\u0000>\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\b\n\u0002\b\u0006\n\u0002\u0010\u0002\n\u0002\b\u0006\u001a\u0011\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u0007¢\u0006\u0002\u0010\u0003\u001a\u001b\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0004\u001a\u00020\u0001H\u0007¢\u0006\u0004\b\u0005\u0010\u0006\u001a#\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0007\u001a\u00020\u00012\u0006\u0010\u0004\u001a\u00020\u0001H\u0007¢\u0006\u0004\b\b\u0010\t\u001a\u0019\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\n\u001a\u00020\u000bH\u0007¢\u0006\u0002\u0010\f\u001a\u0011\u0010\r\u001a\u00020\u000e*\u00020\u0002H\u0007¢\u0006\u0002\u0010\u000f\u001a\u001b\u0010\r\u001a\u00020\u000e*\u00020\u00022\u0006\u0010\u0004\u001a\u00020\u000eH\u0007¢\u0006\u0004\b\u0010\u0010\u0011\u001a#\u0010\r\u001a\u00020\u000e*\u00020\u00022\u0006\u0010\u0007\u001a\u00020\u000e2\u0006\u0010\u0004\u001a\u00020\u000eH\u0007¢\u0006\u0004\b\u0012\u0010\u0013\u001a\u0019\u0010\r\u001a\u00020\u000e*\u00020\u00022\u0006\u0010\n\u001a\u00020\u0014H\u0007¢\u0006\u0002\u0010\u0015\u001a\u001b\u0010\u0016\u001a\u00020\u0017*\u00020\u00022\u0006\u0010\u0018\u001a\u00020\u0017H\u0007¢\u0006\u0004\b\u0019\u0010\u001a\u001a\u0019\u0010\u0016\u001a\u00020\u0017*\u00020\u00022\u0006\u0010\u001b\u001a\u00020\u001cH\u0007¢\u0006\u0002\u0010\u001d\u001a/\u0010\u0016\u001a\u00020\u0017*\u00020\u00022\u0006\u0010\u0018\u001a\u00020\u00172\b\b\u0002\u0010\u001e\u001a\u00020\u001c2\b\b\u0002\u0010\u001f\u001a\u00020\u001cH\u0007¢\u0006\u0004\b \u0010!\u001a\u001f\u0010\"\u001a\u00020#2\u0006\u0010\u0007\u001a\u00020\u00012\u0006\u0010\u0004\u001a\u00020\u0001H\u0000¢\u0006\u0004\b$\u0010%\u001a\u001f\u0010&\u001a\u00020#2\u0006\u0010\u0007\u001a\u00020\u000e2\u0006\u0010\u0004\u001a\u00020\u000eH\u0000¢\u0006\u0004\b'\u0010(¨\u0006)"}, d2 = {"nextUInt", "Lkotlin/UInt;", "Lkotlin/random/Random;", "(Lkotlin/random/Random;)I", "until", "nextUInt-qCasIEU", "(Lkotlin/random/Random;I)I", "from", "nextUInt-a8DCA5k", "(Lkotlin/random/Random;II)I", "range", "Lkotlin/ranges/UIntRange;", "(Lkotlin/random/Random;Lkotlin/ranges/UIntRange;)I", "nextULong", "Lkotlin/ULong;", "(Lkotlin/random/Random;)J", "nextULong-V1Xi4fY", "(Lkotlin/random/Random;J)J", "nextULong-jmpaW-c", "(Lkotlin/random/Random;JJ)J", "Lkotlin/ranges/ULongRange;", "(Lkotlin/random/Random;Lkotlin/ranges/ULongRange;)J", "nextUBytes", "Lkotlin/UByteArray;", "array", "nextUBytes-EVgfTAA", "(Lkotlin/random/Random;[B)[B", "size", RequestConfiguration.MAX_AD_CONTENT_RATING_UNSPECIFIED, "(Lkotlin/random/Random;I)[B", "fromIndex", "toIndex", "nextUBytes-Wvrt4B4", "(Lkotlin/random/Random;[BII)[B", "checkUIntRangeBounds", RequestConfiguration.MAX_AD_CONTENT_RATING_UNSPECIFIED, "checkUIntRangeBounds-J1ME1BU", "(II)V", "checkULongRangeBounds", "checkULongRangeBounds-eb3DHEI", "(JJ)V", "kotlin-stdlib"}, k = 2, mv = {2, 2, 0}, xi = 48)
|
|
@SourceDebugExtension({"SMAP\nURandom.kt\nKotlin\n*S Kotlin\n*F\n+ 1 URandom.kt\nkotlin/random/URandomKt\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,147:1\n1#2:148\n*E\n"})
|
|
/* loaded from: classes4.dex */
|
|
public final class URandomKt {
|
|
/* renamed from: checkUIntRangeBounds-J1ME1BU, reason: not valid java name */
|
|
public static final void m1247checkUIntRangeBoundsJ1ME1BU(int i, int i2) {
|
|
if (Integer.compare(i2 ^ IntCompanionObject.MIN_VALUE, Integer.MIN_VALUE ^ i) > 0) {
|
|
} else {
|
|
throw new IllegalArgumentException(RandomKt.boundsErrorMessage(UInt.m119boximpl(i), UInt.m119boximpl(i2)).toString());
|
|
}
|
|
}
|
|
|
|
/* renamed from: checkULongRangeBounds-eb3DHEI, reason: not valid java name */
|
|
public static final void m1248checkULongRangeBoundseb3DHEI(long j, long j2) {
|
|
if (Long.compare(j2 ^ Long.MIN_VALUE, Long.MIN_VALUE ^ j) > 0) {
|
|
} else {
|
|
throw new IllegalArgumentException(RandomKt.boundsErrorMessage(ULong.m198boximpl(j), ULong.m198boximpl(j2)).toString());
|
|
}
|
|
}
|
|
|
|
@SinceKotlin(version = "1.3")
|
|
@ExperimentalUnsignedTypes
|
|
@NotNull
|
|
public static final byte[] nextUBytes(@NotNull Random random, int i) {
|
|
Intrinsics.checkNotNullParameter(random, "<this>");
|
|
return UByteArray.m101constructorimpl(random.nextBytes(i));
|
|
}
|
|
|
|
@SinceKotlin(version = "1.3")
|
|
@ExperimentalUnsignedTypes
|
|
@NotNull
|
|
/* renamed from: nextUBytes-EVgfTAA, reason: not valid java name */
|
|
public static final byte[] m1249nextUBytesEVgfTAA(@NotNull Random nextUBytes, @NotNull byte[] bArr) {
|
|
Intrinsics.checkNotNullParameter(nextUBytes, "$this$nextUBytes");
|
|
Intrinsics.checkNotNullParameter(bArr, "$v$c$kotlin-UByteArray$-array$0");
|
|
nextUBytes.nextBytes(bArr);
|
|
return bArr;
|
|
}
|
|
|
|
@SinceKotlin(version = "1.3")
|
|
@ExperimentalUnsignedTypes
|
|
@NotNull
|
|
/* renamed from: nextUBytes-Wvrt4B4, reason: not valid java name */
|
|
public static final byte[] m1250nextUBytesWvrt4B4(@NotNull Random nextUBytes, @NotNull byte[] bArr, int i, int i2) {
|
|
Intrinsics.checkNotNullParameter(nextUBytes, "$this$nextUBytes");
|
|
Intrinsics.checkNotNullParameter(bArr, "$v$c$kotlin-UByteArray$-array$0");
|
|
nextUBytes.nextBytes(bArr, i, i2);
|
|
return bArr;
|
|
}
|
|
|
|
/* renamed from: nextUBytes-Wvrt4B4$default, reason: not valid java name */
|
|
public static /* synthetic */ byte[] m1251nextUBytesWvrt4B4$default(Random random, byte[] bArr, int i, int i2, int i3, Object obj) {
|
|
if ((i3 & 2) != 0) {
|
|
i = 0;
|
|
}
|
|
if ((i3 & 4) != 0) {
|
|
i2 = UByteArray.m107getSizeimpl(bArr);
|
|
}
|
|
return m1250nextUBytesWvrt4B4(random, bArr, i, i2);
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
public static final int nextUInt(@NotNull Random random) {
|
|
Intrinsics.checkNotNullParameter(random, "<this>");
|
|
return UInt.m125constructorimpl(random.nextInt());
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
/* renamed from: nextUInt-a8DCA5k, reason: not valid java name */
|
|
public static final int m1252nextUInta8DCA5k(@NotNull Random nextUInt, int i, int i2) {
|
|
Intrinsics.checkNotNullParameter(nextUInt, "$this$nextUInt");
|
|
m1247checkUIntRangeBoundsJ1ME1BU(i, i2);
|
|
return UInt.m125constructorimpl(nextUInt.nextInt(i ^ IntCompanionObject.MIN_VALUE, i2 ^ IntCompanionObject.MIN_VALUE) ^ IntCompanionObject.MIN_VALUE);
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
/* renamed from: nextUInt-qCasIEU, reason: not valid java name */
|
|
public static final int m1253nextUIntqCasIEU(@NotNull Random nextUInt, int i) {
|
|
Intrinsics.checkNotNullParameter(nextUInt, "$this$nextUInt");
|
|
return m1252nextUInta8DCA5k(nextUInt, 0, i);
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
public static final long nextULong(@NotNull Random random) {
|
|
Intrinsics.checkNotNullParameter(random, "<this>");
|
|
return ULong.m204constructorimpl(random.nextLong());
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
/* renamed from: nextULong-V1Xi4fY, reason: not valid java name */
|
|
public static final long m1254nextULongV1Xi4fY(@NotNull Random nextULong, long j) {
|
|
Intrinsics.checkNotNullParameter(nextULong, "$this$nextULong");
|
|
return m1255nextULongjmpaWc(nextULong, 0L, j);
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
/* renamed from: nextULong-jmpaW-c, reason: not valid java name */
|
|
public static final long m1255nextULongjmpaWc(@NotNull Random nextULong, long j, long j2) {
|
|
Intrinsics.checkNotNullParameter(nextULong, "$this$nextULong");
|
|
m1248checkULongRangeBoundseb3DHEI(j, j2);
|
|
return ULong.m204constructorimpl(nextULong.nextLong(j ^ Long.MIN_VALUE, j2 ^ Long.MIN_VALUE) ^ Long.MIN_VALUE);
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
public static final int nextUInt(@NotNull Random random, @NotNull UIntRange range) {
|
|
Intrinsics.checkNotNullParameter(random, "<this>");
|
|
Intrinsics.checkNotNullParameter(range, "range");
|
|
if (!range.isEmpty()) {
|
|
if (Integer.compare(range.getLast() ^ IntCompanionObject.MIN_VALUE, Integer.MAX_VALUE) < 0) {
|
|
return m1252nextUInta8DCA5k(random, range.getFirst(), UInt.m125constructorimpl(range.getLast() + 1));
|
|
}
|
|
if (Integer.compare(range.getFirst() ^ IntCompanionObject.MIN_VALUE, IntCompanionObject.MIN_VALUE) > 0) {
|
|
return UInt.m125constructorimpl(m1252nextUInta8DCA5k(random, UInt.m125constructorimpl(range.getFirst() - 1), range.getLast()) + 1);
|
|
}
|
|
return nextUInt(random);
|
|
}
|
|
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
|
|
}
|
|
|
|
@SinceKotlin(version = "1.5")
|
|
public static final long nextULong(@NotNull Random random, @NotNull ULongRange range) {
|
|
Intrinsics.checkNotNullParameter(random, "<this>");
|
|
Intrinsics.checkNotNullParameter(range, "range");
|
|
if (!range.isEmpty()) {
|
|
if (Long.compare(range.getLast() ^ Long.MIN_VALUE, LongCompanionObject.MAX_VALUE) < 0) {
|
|
return m1255nextULongjmpaWc(random, range.getFirst(), ULong.m204constructorimpl(ULong.m204constructorimpl(1 & 4294967295L) + range.getLast()));
|
|
}
|
|
if (Long.compare(range.getFirst() ^ Long.MIN_VALUE, Long.MIN_VALUE) > 0) {
|
|
long j = 1 & 4294967295L;
|
|
return ULong.m204constructorimpl(ULong.m204constructorimpl(j) + m1255nextULongjmpaWc(random, ULong.m204constructorimpl(range.getFirst() - ULong.m204constructorimpl(j)), range.getLast()));
|
|
}
|
|
return nextULong(random);
|
|
}
|
|
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
|
|
}
|
|
}
|