* 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>
199 lines
7 KiB
Java
199 lines
7 KiB
Java
package j$.time.zone;
|
|
|
|
import j$.time.ZoneOffset;
|
|
import j$.time.k;
|
|
import j$.time.m;
|
|
import j$.util.Objects;
|
|
import java.io.DataInput;
|
|
import java.io.DataOutput;
|
|
import java.io.InvalidObjectException;
|
|
import java.io.ObjectInputStream;
|
|
import java.io.Serializable;
|
|
import kotlin.uuid.Uuid;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class e implements Serializable {
|
|
private static final long serialVersionUID = 6889046316657758795L;
|
|
|
|
/* renamed from: a, reason: collision with root package name */
|
|
public final m f21278a;
|
|
public final byte b;
|
|
|
|
/* renamed from: c, reason: collision with root package name */
|
|
public final j$.time.d f21279c;
|
|
public final k d;
|
|
public final boolean e;
|
|
public final d f;
|
|
public final ZoneOffset g;
|
|
public final ZoneOffset h;
|
|
public final ZoneOffset i;
|
|
|
|
public e(m mVar, int i, j$.time.d dVar, k kVar, boolean z, d dVar2, ZoneOffset zoneOffset, ZoneOffset zoneOffset2, ZoneOffset zoneOffset3) {
|
|
this.f21278a = mVar;
|
|
this.b = (byte) i;
|
|
this.f21279c = dVar;
|
|
this.d = kVar;
|
|
this.e = z;
|
|
this.f = dVar2;
|
|
this.g = zoneOffset;
|
|
this.h = zoneOffset2;
|
|
this.i = zoneOffset3;
|
|
}
|
|
|
|
private void readObject(ObjectInputStream objectInputStream) {
|
|
throw new InvalidObjectException("Deserialization via serialization delegate");
|
|
}
|
|
|
|
private Object writeReplace() {
|
|
return new a((byte) 3, this);
|
|
}
|
|
|
|
public final void b(DataOutput dataOutput) {
|
|
int X = this.e ? 86400 : this.d.X();
|
|
int i = this.g.f21144a;
|
|
int i2 = this.h.f21144a - i;
|
|
int i3 = this.i.f21144a - i;
|
|
byte b = X % 3600 == 0 ? this.e ? (byte) 24 : this.d.f21230a : (byte) 31;
|
|
int i4 = i % 900 == 0 ? (i / 900) + Uuid.SIZE_BITS : 255;
|
|
int i5 = (i2 == 0 || i2 == 1800 || i2 == 3600) ? i2 / 1800 : 3;
|
|
int i6 = (i3 == 0 || i3 == 1800 || i3 == 3600) ? i3 / 1800 : 3;
|
|
j$.time.d dVar = this.f21279c;
|
|
dataOutput.writeInt((this.f21278a.getValue() << 28) + ((this.b + 32) << 22) + ((dVar == null ? 0 : dVar.getValue()) << 19) + (b << 14) + (this.f.ordinal() << 12) + (i4 << 4) + (i5 << 2) + i6);
|
|
if (b == 31) {
|
|
dataOutput.writeInt(X);
|
|
}
|
|
if (i4 == 255) {
|
|
dataOutput.writeInt(i);
|
|
}
|
|
if (i5 == 3) {
|
|
dataOutput.writeInt(this.h.f21144a);
|
|
}
|
|
if (i6 == 3) {
|
|
dataOutput.writeInt(this.i.f21144a);
|
|
}
|
|
}
|
|
|
|
public static e a(DataInput dataInput) {
|
|
d dVar;
|
|
k kVar;
|
|
int i;
|
|
int i2;
|
|
int readInt = dataInput.readInt();
|
|
m N = m.N(readInt >>> 28);
|
|
int i3 = ((264241152 & readInt) >>> 22) - 32;
|
|
int i4 = (3670016 & readInt) >>> 19;
|
|
j$.time.d K = i4 == 0 ? null : j$.time.d.K(i4);
|
|
int i5 = (507904 & readInt) >>> 14;
|
|
d dVar2 = d.values()[(readInt & 12288) >>> 12];
|
|
int i6 = (readInt & 4080) >>> 4;
|
|
int i7 = (readInt & 12) >>> 2;
|
|
int i8 = readInt & 3;
|
|
if (i5 == 31) {
|
|
long readInt2 = dataInput.readInt();
|
|
k kVar2 = k.e;
|
|
j$.time.temporal.a.SECOND_OF_DAY.u(readInt2);
|
|
int i9 = (int) (readInt2 / 3600);
|
|
long j = readInt2 - (i9 * 3600);
|
|
dVar = dVar2;
|
|
kVar = k.L(i9, (int) (j / 60), (int) (j - (r14 * 60)), 0);
|
|
} else {
|
|
dVar = dVar2;
|
|
int i10 = i5 % 24;
|
|
k kVar3 = k.e;
|
|
j$.time.temporal.a.HOUR_OF_DAY.u(i10);
|
|
kVar = k.h[i10];
|
|
}
|
|
ZoneOffset R = ZoneOffset.R(i6 == 255 ? dataInput.readInt() : (i6 - 128) * 900);
|
|
if (i7 == 3) {
|
|
i = dataInput.readInt();
|
|
} else {
|
|
i = (i7 * 1800) + R.f21144a;
|
|
}
|
|
ZoneOffset R2 = ZoneOffset.R(i);
|
|
if (i8 == 3) {
|
|
i2 = dataInput.readInt();
|
|
} else {
|
|
i2 = (i8 * 1800) + R.f21144a;
|
|
}
|
|
ZoneOffset R3 = ZoneOffset.R(i2);
|
|
boolean z = i5 == 24;
|
|
Objects.requireNonNull(N, "month");
|
|
Objects.requireNonNull(kVar, "time");
|
|
d dVar3 = dVar;
|
|
Objects.requireNonNull(dVar3, "timeDefnition");
|
|
Objects.requireNonNull(R, "standardOffset");
|
|
Objects.requireNonNull(R2, "offsetBefore");
|
|
Objects.requireNonNull(R3, "offsetAfter");
|
|
if (i3 < -28 || i3 > 31 || i3 == 0) {
|
|
throw new IllegalArgumentException("Day of month indicator must be between -28 and 31 inclusive excluding zero");
|
|
}
|
|
if (z && !kVar.equals(k.g)) {
|
|
throw new IllegalArgumentException("Time must be midnight when end of day flag is true");
|
|
}
|
|
if (kVar.d != 0) {
|
|
throw new IllegalArgumentException("Time's nano-of-second must be zero");
|
|
}
|
|
return new e(N, i3, K, kVar, z, dVar3, R, R2, R3);
|
|
}
|
|
|
|
public final boolean equals(Object obj) {
|
|
if (obj == this) {
|
|
return true;
|
|
}
|
|
if (obj instanceof e) {
|
|
e eVar = (e) obj;
|
|
if (this.f21278a == eVar.f21278a && this.b == eVar.b && this.f21279c == eVar.f21279c && this.f == eVar.f && this.d.equals(eVar.d) && this.e == eVar.e && this.g.equals(eVar.g) && this.h.equals(eVar.h) && this.i.equals(eVar.i)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public final int hashCode() {
|
|
int X = ((this.d.X() + (this.e ? 1 : 0)) << 15) + (this.f21278a.ordinal() << 11) + ((this.b + 32) << 5);
|
|
j$.time.d dVar = this.f21279c;
|
|
return ((this.g.f21144a ^ (this.f.ordinal() + (X + ((dVar == null ? 7 : dVar.ordinal()) << 2)))) ^ this.h.f21144a) ^ this.i.f21144a;
|
|
}
|
|
|
|
public final String toString() {
|
|
StringBuilder sb = new StringBuilder("TransitionRule[");
|
|
sb.append(this.i.f21144a - this.h.f21144a > 0 ? "Gap " : "Overlap ");
|
|
sb.append(this.h);
|
|
sb.append(" to ");
|
|
sb.append(this.i);
|
|
sb.append(", ");
|
|
j$.time.d dVar = this.f21279c;
|
|
if (dVar != null) {
|
|
byte b = this.b;
|
|
if (b == -1) {
|
|
sb.append(dVar.name());
|
|
sb.append(" on or before last day of ");
|
|
sb.append(this.f21278a.name());
|
|
} else if (b < 0) {
|
|
sb.append(dVar.name());
|
|
sb.append(" on or before last day minus ");
|
|
sb.append((-this.b) - 1);
|
|
sb.append(" of ");
|
|
sb.append(this.f21278a.name());
|
|
} else {
|
|
sb.append(dVar.name());
|
|
sb.append(" on or after ");
|
|
sb.append(this.f21278a.name());
|
|
sb.append(' ');
|
|
sb.append((int) this.b);
|
|
}
|
|
} else {
|
|
sb.append(this.f21278a.name());
|
|
sb.append(' ');
|
|
sb.append((int) this.b);
|
|
}
|
|
sb.append(" at ");
|
|
sb.append(this.e ? "24:00" : this.d.toString());
|
|
sb.append(" ");
|
|
sb.append(this.f);
|
|
sb.append(", standard offset ");
|
|
sb.append(this.g);
|
|
sb.append(']');
|
|
return sb.toString();
|
|
}
|
|
}
|