- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
3424 lines
132 KiB
Java
3424 lines
132 KiB
Java
package com.google.protobuf;
|
|
|
|
import androidx.work.WorkInfo;
|
|
import com.applovin.exoplayer2.common.base.Ascii;
|
|
import com.google.protobuf.MessageLite;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.nio.ByteBuffer;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import kotlin.jvm.internal.ByteCompanionObject;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public abstract class CodedInputStream {
|
|
private static final int DEFAULT_BUFFER_SIZE = 4096;
|
|
private static final int DEFAULT_SIZE_LIMIT = Integer.MAX_VALUE;
|
|
private static volatile int defaultRecursionLimit = 100;
|
|
int recursionDepth;
|
|
int recursionLimit;
|
|
private boolean shouldDiscardUnknownFields;
|
|
int sizeLimit;
|
|
CodedInputStreamReader wrapper;
|
|
|
|
public static int decodeZigZag32(int i) {
|
|
return (-(i & 1)) ^ (i >>> 1);
|
|
}
|
|
|
|
public static long decodeZigZag64(long j) {
|
|
return (-(j & 1)) ^ (j >>> 1);
|
|
}
|
|
|
|
public abstract void checkLastTagWas(int i) throws InvalidProtocolBufferException;
|
|
|
|
public final void discardUnknownFields() {
|
|
this.shouldDiscardUnknownFields = true;
|
|
}
|
|
|
|
public abstract void enableAliasing(boolean z);
|
|
|
|
public abstract int getBytesUntilLimit();
|
|
|
|
public abstract int getLastTag();
|
|
|
|
public abstract int getTotalBytesRead();
|
|
|
|
public abstract boolean isAtEnd() throws IOException;
|
|
|
|
public abstract void popLimit(int i);
|
|
|
|
public abstract int pushLimit(int i) throws InvalidProtocolBufferException;
|
|
|
|
public abstract boolean readBool() throws IOException;
|
|
|
|
public abstract byte[] readByteArray() throws IOException;
|
|
|
|
public abstract ByteBuffer readByteBuffer() throws IOException;
|
|
|
|
public abstract ByteString readBytes() throws IOException;
|
|
|
|
public abstract double readDouble() throws IOException;
|
|
|
|
public abstract int readEnum() throws IOException;
|
|
|
|
public abstract int readFixed32() throws IOException;
|
|
|
|
public abstract long readFixed64() throws IOException;
|
|
|
|
public abstract float readFloat() throws IOException;
|
|
|
|
public abstract <T extends MessageLite> T readGroup(int i, Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException;
|
|
|
|
public abstract void readGroup(int i, MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException;
|
|
|
|
public abstract int readInt32() throws IOException;
|
|
|
|
public abstract long readInt64() throws IOException;
|
|
|
|
public abstract <T extends MessageLite> T readMessage(Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException;
|
|
|
|
public abstract void readMessage(MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException;
|
|
|
|
public abstract byte readRawByte() throws IOException;
|
|
|
|
public abstract byte[] readRawBytes(int i) throws IOException;
|
|
|
|
public abstract int readRawLittleEndian32() throws IOException;
|
|
|
|
public abstract long readRawLittleEndian64() throws IOException;
|
|
|
|
public abstract int readRawVarint32() throws IOException;
|
|
|
|
public abstract long readRawVarint64() throws IOException;
|
|
|
|
public abstract long readRawVarint64SlowPath() throws IOException;
|
|
|
|
public abstract int readSFixed32() throws IOException;
|
|
|
|
public abstract long readSFixed64() throws IOException;
|
|
|
|
public abstract int readSInt32() throws IOException;
|
|
|
|
public abstract long readSInt64() throws IOException;
|
|
|
|
public abstract String readString() throws IOException;
|
|
|
|
public abstract String readStringRequireUtf8() throws IOException;
|
|
|
|
public abstract int readTag() throws IOException;
|
|
|
|
public abstract int readUInt32() throws IOException;
|
|
|
|
public abstract long readUInt64() throws IOException;
|
|
|
|
@Deprecated
|
|
public abstract void readUnknownGroup(int i, MessageLite.Builder builder) throws IOException;
|
|
|
|
public abstract void resetSizeCounter();
|
|
|
|
public final boolean shouldDiscardUnknownFields() {
|
|
return this.shouldDiscardUnknownFields;
|
|
}
|
|
|
|
public abstract boolean skipField(int i) throws IOException;
|
|
|
|
@Deprecated
|
|
public abstract boolean skipField(int i, CodedOutputStream codedOutputStream) throws IOException;
|
|
|
|
public abstract void skipMessage() throws IOException;
|
|
|
|
public abstract void skipMessage(CodedOutputStream codedOutputStream) throws IOException;
|
|
|
|
public abstract void skipRawBytes(int i) throws IOException;
|
|
|
|
public final void unsetDiscardUnknownFields() {
|
|
this.shouldDiscardUnknownFields = false;
|
|
}
|
|
|
|
public static CodedInputStream newInstance(InputStream inputStream) {
|
|
return newInstance(inputStream, 4096);
|
|
}
|
|
|
|
public static CodedInputStream newInstance(InputStream inputStream, int i) {
|
|
if (i <= 0) {
|
|
throw new IllegalArgumentException("bufferSize must be > 0");
|
|
}
|
|
if (inputStream == null) {
|
|
return newInstance(Internal.EMPTY_BYTE_ARRAY);
|
|
}
|
|
return new StreamDecoder(inputStream, i);
|
|
}
|
|
|
|
public static CodedInputStream newInstance(Iterable<ByteBuffer> iterable) {
|
|
if (!UnsafeDirectNioDecoder.isSupported()) {
|
|
return newInstance(new IterableByteBufferInputStream(iterable));
|
|
}
|
|
return newInstance(iterable, false);
|
|
}
|
|
|
|
public static CodedInputStream newInstance(Iterable<ByteBuffer> iterable, boolean z) {
|
|
int i = 0;
|
|
int i2 = 0;
|
|
for (ByteBuffer byteBuffer : iterable) {
|
|
i2 += byteBuffer.remaining();
|
|
if (byteBuffer.hasArray()) {
|
|
i |= 1;
|
|
} else {
|
|
i = byteBuffer.isDirect() ? i | 2 : i | 4;
|
|
}
|
|
}
|
|
if (i == 2) {
|
|
return new IterableDirectByteBufferDecoder(iterable, i2, z);
|
|
}
|
|
return newInstance(new IterableByteBufferInputStream(iterable));
|
|
}
|
|
|
|
public static CodedInputStream newInstance(byte[] bArr) {
|
|
return newInstance(bArr, 0, bArr.length);
|
|
}
|
|
|
|
public static CodedInputStream newInstance(byte[] bArr, int i, int i2) {
|
|
return newInstance(bArr, i, i2, false);
|
|
}
|
|
|
|
public static CodedInputStream newInstance(byte[] bArr, int i, int i2, boolean z) {
|
|
ArrayDecoder arrayDecoder = new ArrayDecoder(bArr, i, i2, z);
|
|
try {
|
|
arrayDecoder.pushLimit(i2);
|
|
return arrayDecoder;
|
|
} catch (InvalidProtocolBufferException e) {
|
|
throw new IllegalArgumentException(e);
|
|
}
|
|
}
|
|
|
|
public static CodedInputStream newInstance(ByteBuffer byteBuffer) {
|
|
return newInstance(byteBuffer, false);
|
|
}
|
|
|
|
public static CodedInputStream newInstance(ByteBuffer byteBuffer, boolean z) {
|
|
if (byteBuffer.hasArray()) {
|
|
return newInstance(byteBuffer.array(), byteBuffer.arrayOffset() + byteBuffer.position(), byteBuffer.remaining(), z);
|
|
}
|
|
if (byteBuffer.isDirect() && UnsafeDirectNioDecoder.isSupported()) {
|
|
return new UnsafeDirectNioDecoder(byteBuffer, z);
|
|
}
|
|
int remaining = byteBuffer.remaining();
|
|
byte[] bArr = new byte[remaining];
|
|
byteBuffer.duplicate().get(bArr);
|
|
return newInstance(bArr, 0, remaining, true);
|
|
}
|
|
|
|
public void checkRecursionLimit() throws InvalidProtocolBufferException {
|
|
if (this.recursionDepth >= this.recursionLimit) {
|
|
throw InvalidProtocolBufferException.recursionLimitExceeded();
|
|
}
|
|
}
|
|
|
|
private CodedInputStream() {
|
|
this.recursionLimit = defaultRecursionLimit;
|
|
this.sizeLimit = Integer.MAX_VALUE;
|
|
this.shouldDiscardUnknownFields = false;
|
|
}
|
|
|
|
public final int setRecursionLimit(int i) {
|
|
if (i >= 0) {
|
|
int i2 = this.recursionLimit;
|
|
this.recursionLimit = i;
|
|
return i2;
|
|
}
|
|
throw new IllegalArgumentException("Recursion limit cannot be negative: " + i);
|
|
}
|
|
|
|
public final int setSizeLimit(int i) {
|
|
if (i >= 0) {
|
|
int i2 = this.sizeLimit;
|
|
this.sizeLimit = i;
|
|
return i2;
|
|
}
|
|
throw new IllegalArgumentException("Size limit cannot be negative: " + i);
|
|
}
|
|
|
|
public static int readRawVarint32(int i, InputStream inputStream) throws IOException {
|
|
if ((i & 128) == 0) {
|
|
return i;
|
|
}
|
|
int i2 = i & 127;
|
|
int i3 = 7;
|
|
while (i3 < 32) {
|
|
int read = inputStream.read();
|
|
if (read == -1) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
i2 |= (read & 127) << i3;
|
|
if ((read & 128) == 0) {
|
|
return i2;
|
|
}
|
|
i3 += 7;
|
|
}
|
|
while (i3 < 64) {
|
|
int read2 = inputStream.read();
|
|
if (read2 == -1) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if ((read2 & 128) == 0) {
|
|
return i2;
|
|
}
|
|
i3 += 7;
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
public static int readRawVarint32(InputStream inputStream) throws IOException {
|
|
int read = inputStream.read();
|
|
if (read == -1) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
return readRawVarint32(read, inputStream);
|
|
}
|
|
|
|
public static final class ArrayDecoder extends CodedInputStream {
|
|
private final byte[] buffer;
|
|
private int bufferSizeAfterLimit;
|
|
private int currentLimit;
|
|
private boolean enableAliasing;
|
|
private final boolean immutable;
|
|
private int lastTag;
|
|
private int limit;
|
|
private int pos;
|
|
private int startPos;
|
|
|
|
private void recomputeBufferSizeAfterLimit() {
|
|
int i = this.limit + this.bufferSizeAfterLimit;
|
|
this.limit = i;
|
|
int i2 = i - this.startPos;
|
|
int i3 = this.currentLimit;
|
|
if (i2 <= i3) {
|
|
this.bufferSizeAfterLimit = 0;
|
|
return;
|
|
}
|
|
int i4 = i2 - i3;
|
|
this.bufferSizeAfterLimit = i4;
|
|
this.limit = i - i4;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void enableAliasing(boolean z) {
|
|
this.enableAliasing = z;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getLastTag() {
|
|
return this.lastTag;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getTotalBytesRead() {
|
|
return this.pos - this.startPos;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean isAtEnd() throws IOException {
|
|
return this.pos == this.limit;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void resetSizeCounter() {
|
|
this.startPos = this.pos;
|
|
}
|
|
|
|
private ArrayDecoder(byte[] bArr, int i, int i2, boolean z) {
|
|
super();
|
|
this.currentLimit = Integer.MAX_VALUE;
|
|
this.buffer = bArr;
|
|
this.limit = i2 + i;
|
|
this.pos = i;
|
|
this.startPos = i;
|
|
this.immutable = z;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readTag() throws IOException {
|
|
if (isAtEnd()) {
|
|
this.lastTag = 0;
|
|
return 0;
|
|
}
|
|
int readRawVarint32 = readRawVarint32();
|
|
this.lastTag = readRawVarint32;
|
|
if (WireFormat.getTagFieldNumber(readRawVarint32) != 0) {
|
|
return this.lastTag;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidTag();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void checkLastTagWas(int i) throws InvalidProtocolBufferException {
|
|
if (this.lastTag != i) {
|
|
throw InvalidProtocolBufferException.invalidEndTag();
|
|
}
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
skipRawVarint();
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
skipRawBytes(8);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
skipRawBytes(readRawVarint32());
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
skipMessage();
|
|
checkLastTagWas(WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4));
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
skipRawBytes(4);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i, CodedOutputStream codedOutputStream) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
long readInt64 = readInt64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeUInt64NoTag(readInt64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
long readRawLittleEndian64 = readRawLittleEndian64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed64NoTag(readRawLittleEndian64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
ByteString readBytes = readBytes();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeBytesNoTag(readBytes);
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
skipMessage(codedOutputStream);
|
|
int makeTag = WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4);
|
|
checkLastTagWas(makeTag);
|
|
codedOutputStream.writeUInt32NoTag(makeTag);
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
int readRawLittleEndian32 = readRawLittleEndian32();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed32NoTag(readRawLittleEndian32);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage() throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage(CodedOutputStream codedOutputStream) throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag, codedOutputStream));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public double readDouble() throws IOException {
|
|
return Double.longBitsToDouble(readRawLittleEndian64());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public float readFloat() throws IOException {
|
|
return Float.intBitsToFloat(readRawLittleEndian32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readUInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean readBool() throws IOException {
|
|
return readRawVarint64() != 0;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readString() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
int i = this.limit;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 <= i - i2) {
|
|
String str = new String(this.buffer, i2, readRawVarint32, Internal.UTF_8);
|
|
this.pos += readRawVarint32;
|
|
return str;
|
|
}
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readStringRequireUtf8() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
int i = this.limit;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 <= i - i2) {
|
|
String decodeUtf8 = Utf8.decodeUtf8(this.buffer, i2, readRawVarint32);
|
|
this.pos += readRawVarint32;
|
|
return decodeUtf8;
|
|
}
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
if (readRawVarint32 <= 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readGroup(int i, MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readGroup(int i, Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
@Deprecated
|
|
public void readUnknownGroup(int i, MessageLite.Builder builder) throws IOException {
|
|
readGroup(i, builder, ExtensionRegistryLite.getEmptyRegistry());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readMessage(MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readMessage(Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteString readBytes() throws IOException {
|
|
ByteString copyFrom;
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
int i = this.limit;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 <= i - i2) {
|
|
if (this.immutable && this.enableAliasing) {
|
|
copyFrom = ByteString.wrap(this.buffer, i2, readRawVarint32);
|
|
} else {
|
|
copyFrom = ByteString.copyFrom(this.buffer, i2, readRawVarint32);
|
|
}
|
|
this.pos += readRawVarint32;
|
|
return copyFrom;
|
|
}
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return ByteString.EMPTY;
|
|
}
|
|
return ByteString.wrap(readRawBytes(readRawVarint32));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readByteArray() throws IOException {
|
|
return readRawBytes(readRawVarint32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteBuffer readByteBuffer() throws IOException {
|
|
ByteBuffer wrap;
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
int i = this.limit;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 <= i - i2) {
|
|
if (!this.immutable && this.enableAliasing) {
|
|
wrap = ByteBuffer.wrap(this.buffer, i2, readRawVarint32).slice();
|
|
} else {
|
|
wrap = ByteBuffer.wrap(Arrays.copyOfRange(this.buffer, i2, i2 + readRawVarint32));
|
|
}
|
|
this.pos += readRawVarint32;
|
|
return wrap;
|
|
}
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return Internal.EMPTY_BYTE_BUFFER;
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readUInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readEnum() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSInt32() throws IOException {
|
|
return CodedInputStream.decodeZigZag32(readRawVarint32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSInt64() throws IOException {
|
|
return CodedInputStream.decodeZigZag64(readRawVarint64());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readRawVarint32() throws IOException {
|
|
int i;
|
|
int i2 = this.pos;
|
|
int i3 = this.limit;
|
|
if (i3 != i2) {
|
|
byte[] bArr = this.buffer;
|
|
int i4 = i2 + 1;
|
|
byte b = bArr[i2];
|
|
if (b >= 0) {
|
|
this.pos = i4;
|
|
return b;
|
|
}
|
|
if (i3 - i4 >= 9) {
|
|
int i5 = i2 + 2;
|
|
int i6 = (bArr[i4] << 7) ^ b;
|
|
if (i6 < 0) {
|
|
i = i6 ^ WorkInfo.STOP_REASON_FOREGROUND_SERVICE_TIMEOUT;
|
|
} else {
|
|
int i7 = i2 + 3;
|
|
int i8 = (bArr[i5] << Ascii.SO) ^ i6;
|
|
if (i8 >= 0) {
|
|
i = i8 ^ 16256;
|
|
} else {
|
|
int i9 = i2 + 4;
|
|
int i10 = i8 ^ (bArr[i7] << Ascii.NAK);
|
|
if (i10 < 0) {
|
|
i = (-2080896) ^ i10;
|
|
} else {
|
|
i7 = i2 + 5;
|
|
byte b2 = bArr[i9];
|
|
int i11 = (i10 ^ (b2 << Ascii.FS)) ^ 266354560;
|
|
if (b2 < 0) {
|
|
i9 = i2 + 6;
|
|
if (bArr[i7] < 0) {
|
|
i7 = i2 + 7;
|
|
if (bArr[i9] < 0) {
|
|
i9 = i2 + 8;
|
|
if (bArr[i7] < 0) {
|
|
i7 = i2 + 9;
|
|
if (bArr[i9] < 0) {
|
|
int i12 = i2 + 10;
|
|
if (bArr[i7] >= 0) {
|
|
i5 = i12;
|
|
i = i11;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
i = i11;
|
|
}
|
|
i = i11;
|
|
}
|
|
i5 = i9;
|
|
}
|
|
i5 = i7;
|
|
}
|
|
this.pos = i5;
|
|
return i;
|
|
}
|
|
}
|
|
return (int) readRawVarint64SlowPath();
|
|
}
|
|
|
|
private void skipRawVarint() throws IOException {
|
|
if (this.limit - this.pos >= 10) {
|
|
skipRawVarintFastPath();
|
|
} else {
|
|
skipRawVarintSlowPath();
|
|
}
|
|
}
|
|
|
|
private void skipRawVarintFastPath() throws IOException {
|
|
for (int i = 0; i < 10; i++) {
|
|
byte[] bArr = this.buffer;
|
|
int i2 = this.pos;
|
|
this.pos = i2 + 1;
|
|
if (bArr[i2] >= 0) {
|
|
return;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
private void skipRawVarintSlowPath() throws IOException {
|
|
for (int i = 0; i < 10; i++) {
|
|
if (readRawByte() >= 0) {
|
|
return;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64() throws IOException {
|
|
long j;
|
|
long j2;
|
|
long j3;
|
|
int i = this.pos;
|
|
int i2 = this.limit;
|
|
if (i2 != i) {
|
|
byte[] bArr = this.buffer;
|
|
int i3 = i + 1;
|
|
byte b = bArr[i];
|
|
if (b >= 0) {
|
|
this.pos = i3;
|
|
return b;
|
|
}
|
|
if (i2 - i3 >= 9) {
|
|
int i4 = i + 2;
|
|
int i5 = (bArr[i3] << 7) ^ b;
|
|
if (i5 < 0) {
|
|
j = i5 ^ WorkInfo.STOP_REASON_FOREGROUND_SERVICE_TIMEOUT;
|
|
} else {
|
|
int i6 = i + 3;
|
|
int i7 = (bArr[i4] << Ascii.SO) ^ i5;
|
|
if (i7 >= 0) {
|
|
j = i7 ^ 16256;
|
|
i4 = i6;
|
|
} else {
|
|
int i8 = i + 4;
|
|
int i9 = i7 ^ (bArr[i6] << Ascii.NAK);
|
|
if (i9 < 0) {
|
|
long j4 = (-2080896) ^ i9;
|
|
i4 = i8;
|
|
j = j4;
|
|
} else {
|
|
long j5 = i9;
|
|
i4 = i + 5;
|
|
long j6 = j5 ^ (bArr[i8] << 28);
|
|
if (j6 >= 0) {
|
|
j3 = 266354560;
|
|
} else {
|
|
int i10 = i + 6;
|
|
long j7 = j6 ^ (bArr[i4] << 35);
|
|
if (j7 < 0) {
|
|
j2 = -34093383808L;
|
|
} else {
|
|
i4 = i + 7;
|
|
j6 = j7 ^ (bArr[i10] << 42);
|
|
if (j6 >= 0) {
|
|
j3 = 4363953127296L;
|
|
} else {
|
|
i10 = i + 8;
|
|
j7 = j6 ^ (bArr[i4] << 49);
|
|
if (j7 < 0) {
|
|
j2 = -558586000294016L;
|
|
} else {
|
|
i4 = i + 9;
|
|
long j8 = (j7 ^ (bArr[i10] << 56)) ^ 71499008037633920L;
|
|
if (j8 < 0) {
|
|
int i11 = i + 10;
|
|
if (bArr[i4] >= 0) {
|
|
i4 = i11;
|
|
}
|
|
}
|
|
j = j8;
|
|
}
|
|
}
|
|
}
|
|
j = j7 ^ j2;
|
|
i4 = i10;
|
|
}
|
|
j = j6 ^ j3;
|
|
}
|
|
}
|
|
}
|
|
this.pos = i4;
|
|
return j;
|
|
}
|
|
}
|
|
return readRawVarint64SlowPath();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64SlowPath() throws IOException {
|
|
long j = 0;
|
|
for (int i = 0; i < 64; i += 7) {
|
|
j |= (r3 & Byte.MAX_VALUE) << i;
|
|
if ((readRawByte() & ByteCompanionObject.MIN_VALUE) == 0) {
|
|
return j;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readRawLittleEndian32() throws IOException {
|
|
int i = this.pos;
|
|
if (this.limit - i < 4) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
byte[] bArr = this.buffer;
|
|
this.pos = i + 4;
|
|
return ((bArr[i + 3] & 255) << 24) | (bArr[i] & 255) | ((bArr[i + 1] & 255) << 8) | ((bArr[i + 2] & 255) << 16);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawLittleEndian64() throws IOException {
|
|
int i = this.pos;
|
|
if (this.limit - i < 8) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
byte[] bArr = this.buffer;
|
|
this.pos = i + 8;
|
|
return ((bArr[i + 7] & 255) << 56) | (bArr[i] & 255) | ((bArr[i + 1] & 255) << 8) | ((bArr[i + 2] & 255) << 16) | ((bArr[i + 3] & 255) << 24) | ((bArr[i + 4] & 255) << 32) | ((bArr[i + 5] & 255) << 40) | ((bArr[i + 6] & 255) << 48);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int pushLimit(int i) throws InvalidProtocolBufferException {
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
int totalBytesRead = i + getTotalBytesRead();
|
|
if (totalBytesRead < 0) {
|
|
throw InvalidProtocolBufferException.parseFailure();
|
|
}
|
|
int i2 = this.currentLimit;
|
|
if (totalBytesRead > i2) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.currentLimit = totalBytesRead;
|
|
recomputeBufferSizeAfterLimit();
|
|
return i2;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void popLimit(int i) {
|
|
this.currentLimit = i;
|
|
recomputeBufferSizeAfterLimit();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getBytesUntilLimit() {
|
|
int i = this.currentLimit;
|
|
if (i == Integer.MAX_VALUE) {
|
|
return -1;
|
|
}
|
|
return i - getTotalBytesRead();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte readRawByte() throws IOException {
|
|
int i = this.pos;
|
|
if (i == this.limit) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
byte[] bArr = this.buffer;
|
|
this.pos = i + 1;
|
|
return bArr[i];
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readRawBytes(int i) throws IOException {
|
|
if (i > 0) {
|
|
int i2 = this.limit;
|
|
int i3 = this.pos;
|
|
if (i <= i2 - i3) {
|
|
int i4 = i + i3;
|
|
this.pos = i4;
|
|
return Arrays.copyOfRange(this.buffer, i3, i4);
|
|
}
|
|
}
|
|
if (i > 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if (i == 0) {
|
|
return Internal.EMPTY_BYTE_ARRAY;
|
|
}
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipRawBytes(int i) throws IOException {
|
|
if (i >= 0) {
|
|
int i2 = this.limit;
|
|
int i3 = this.pos;
|
|
if (i <= i2 - i3) {
|
|
this.pos = i3 + i;
|
|
return;
|
|
}
|
|
}
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
}
|
|
|
|
public static final class UnsafeDirectNioDecoder extends CodedInputStream {
|
|
private final long address;
|
|
private final ByteBuffer buffer;
|
|
private int bufferSizeAfterLimit;
|
|
private int currentLimit;
|
|
private boolean enableAliasing;
|
|
private final boolean immutable;
|
|
private int lastTag;
|
|
private long limit;
|
|
private long pos;
|
|
private long startPos;
|
|
|
|
private int bufferPos(long j) {
|
|
return (int) (j - this.address);
|
|
}
|
|
|
|
private void recomputeBufferSizeAfterLimit() {
|
|
long j = this.limit + this.bufferSizeAfterLimit;
|
|
this.limit = j;
|
|
int i = (int) (j - this.startPos);
|
|
int i2 = this.currentLimit;
|
|
if (i <= i2) {
|
|
this.bufferSizeAfterLimit = 0;
|
|
return;
|
|
}
|
|
int i3 = i - i2;
|
|
this.bufferSizeAfterLimit = i3;
|
|
this.limit = j - i3;
|
|
}
|
|
|
|
private int remaining() {
|
|
return (int) (this.limit - this.pos);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void enableAliasing(boolean z) {
|
|
this.enableAliasing = z;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getLastTag() {
|
|
return this.lastTag;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getTotalBytesRead() {
|
|
return (int) (this.pos - this.startPos);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean isAtEnd() throws IOException {
|
|
return this.pos == this.limit;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void resetSizeCounter() {
|
|
this.startPos = this.pos;
|
|
}
|
|
|
|
public static boolean isSupported() {
|
|
return UnsafeUtil.hasUnsafeByteBufferOperations();
|
|
}
|
|
|
|
private UnsafeDirectNioDecoder(ByteBuffer byteBuffer, boolean z) {
|
|
super();
|
|
this.currentLimit = Integer.MAX_VALUE;
|
|
this.buffer = byteBuffer;
|
|
long addressOffset = UnsafeUtil.addressOffset(byteBuffer);
|
|
this.address = addressOffset;
|
|
this.limit = byteBuffer.limit() + addressOffset;
|
|
long position = addressOffset + byteBuffer.position();
|
|
this.pos = position;
|
|
this.startPos = position;
|
|
this.immutable = z;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readTag() throws IOException {
|
|
if (isAtEnd()) {
|
|
this.lastTag = 0;
|
|
return 0;
|
|
}
|
|
int readRawVarint32 = readRawVarint32();
|
|
this.lastTag = readRawVarint32;
|
|
if (WireFormat.getTagFieldNumber(readRawVarint32) != 0) {
|
|
return this.lastTag;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidTag();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void checkLastTagWas(int i) throws InvalidProtocolBufferException {
|
|
if (this.lastTag != i) {
|
|
throw InvalidProtocolBufferException.invalidEndTag();
|
|
}
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
skipRawVarint();
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
skipRawBytes(8);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
skipRawBytes(readRawVarint32());
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
skipMessage();
|
|
checkLastTagWas(WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4));
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
skipRawBytes(4);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i, CodedOutputStream codedOutputStream) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
long readInt64 = readInt64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeUInt64NoTag(readInt64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
long readRawLittleEndian64 = readRawLittleEndian64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed64NoTag(readRawLittleEndian64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
ByteString readBytes = readBytes();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeBytesNoTag(readBytes);
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
skipMessage(codedOutputStream);
|
|
int makeTag = WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4);
|
|
checkLastTagWas(makeTag);
|
|
codedOutputStream.writeUInt32NoTag(makeTag);
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
int readRawLittleEndian32 = readRawLittleEndian32();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed32NoTag(readRawLittleEndian32);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage() throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage(CodedOutputStream codedOutputStream) throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag, codedOutputStream));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public double readDouble() throws IOException {
|
|
return Double.longBitsToDouble(readRawLittleEndian64());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public float readFloat() throws IOException {
|
|
return Float.intBitsToFloat(readRawLittleEndian32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readUInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean readBool() throws IOException {
|
|
return readRawVarint64() != 0;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readString() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 <= 0 || readRawVarint32 > remaining()) {
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
byte[] bArr = new byte[readRawVarint32];
|
|
long j = readRawVarint32;
|
|
UnsafeUtil.copyMemory(this.pos, bArr, 0L, j);
|
|
String str = new String(bArr, Internal.UTF_8);
|
|
this.pos += j;
|
|
return str;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readStringRequireUtf8() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0 && readRawVarint32 <= remaining()) {
|
|
String decodeUtf8 = Utf8.decodeUtf8(this.buffer, bufferPos(this.pos), readRawVarint32);
|
|
this.pos += readRawVarint32;
|
|
return decodeUtf8;
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
if (readRawVarint32 <= 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readGroup(int i, MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readGroup(int i, Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
@Deprecated
|
|
public void readUnknownGroup(int i, MessageLite.Builder builder) throws IOException {
|
|
readGroup(i, builder, ExtensionRegistryLite.getEmptyRegistry());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readMessage(MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readMessage(Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteString readBytes() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 <= 0 || readRawVarint32 > remaining()) {
|
|
if (readRawVarint32 == 0) {
|
|
return ByteString.EMPTY;
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if (this.immutable && this.enableAliasing) {
|
|
long j = this.pos;
|
|
long j2 = readRawVarint32;
|
|
ByteBuffer slice = slice(j, j + j2);
|
|
this.pos += j2;
|
|
return ByteString.wrap(slice);
|
|
}
|
|
byte[] bArr = new byte[readRawVarint32];
|
|
long j3 = readRawVarint32;
|
|
UnsafeUtil.copyMemory(this.pos, bArr, 0L, j3);
|
|
this.pos += j3;
|
|
return ByteString.wrap(bArr);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readByteArray() throws IOException {
|
|
return readRawBytes(readRawVarint32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteBuffer readByteBuffer() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 <= 0 || readRawVarint32 > remaining()) {
|
|
if (readRawVarint32 == 0) {
|
|
return Internal.EMPTY_BYTE_BUFFER;
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if (!this.immutable && this.enableAliasing) {
|
|
long j = this.pos;
|
|
long j2 = readRawVarint32;
|
|
ByteBuffer slice = slice(j, j + j2);
|
|
this.pos += j2;
|
|
return slice;
|
|
}
|
|
byte[] bArr = new byte[readRawVarint32];
|
|
long j3 = readRawVarint32;
|
|
UnsafeUtil.copyMemory(this.pos, bArr, 0L, j3);
|
|
this.pos += j3;
|
|
return ByteBuffer.wrap(bArr);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readUInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readEnum() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSInt32() throws IOException {
|
|
return CodedInputStream.decodeZigZag32(readRawVarint32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSInt64() throws IOException {
|
|
return CodedInputStream.decodeZigZag64(readRawVarint64());
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:33:0x008c, code lost:
|
|
|
|
if (com.google.protobuf.UnsafeUtil.getByte(r3) < 0) goto L34;
|
|
*/
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public int readRawVarint32() throws java.io.IOException {
|
|
/*
|
|
r9 = this;
|
|
long r0 = r9.pos
|
|
long r2 = r9.limit
|
|
int r2 = (r2 > r0 ? 1 : (r2 == r0 ? 0 : -1))
|
|
if (r2 != 0) goto La
|
|
goto L8e
|
|
La:
|
|
r2 = 1
|
|
long r2 = r2 + r0
|
|
byte r4 = com.google.protobuf.UnsafeUtil.getByte(r0)
|
|
if (r4 < 0) goto L16
|
|
r9.pos = r2
|
|
return r4
|
|
L16:
|
|
long r5 = r9.limit
|
|
long r5 = r5 - r2
|
|
r7 = 9
|
|
int r5 = (r5 > r7 ? 1 : (r5 == r7 ? 0 : -1))
|
|
if (r5 >= 0) goto L21
|
|
goto L8e
|
|
L21:
|
|
r5 = 2
|
|
long r5 = r5 + r0
|
|
byte r2 = com.google.protobuf.UnsafeUtil.getByte(r2)
|
|
int r2 = r2 << 7
|
|
r2 = r2 ^ r4
|
|
if (r2 >= 0) goto L31
|
|
r0 = r2 ^ (-128(0xffffffffffffff80, float:NaN))
|
|
goto L98
|
|
L31:
|
|
r3 = 3
|
|
long r3 = r3 + r0
|
|
byte r5 = com.google.protobuf.UnsafeUtil.getByte(r5)
|
|
int r5 = r5 << 14
|
|
r2 = r2 ^ r5
|
|
if (r2 < 0) goto L41
|
|
r0 = r2 ^ 16256(0x3f80, float:2.278E-41)
|
|
L3f:
|
|
r5 = r3
|
|
goto L98
|
|
L41:
|
|
r5 = 4
|
|
long r5 = r5 + r0
|
|
byte r3 = com.google.protobuf.UnsafeUtil.getByte(r3)
|
|
int r3 = r3 << 21
|
|
r2 = r2 ^ r3
|
|
if (r2 >= 0) goto L52
|
|
r0 = -2080896(0xffffffffffe03f80, float:NaN)
|
|
r0 = r0 ^ r2
|
|
goto L98
|
|
L52:
|
|
r3 = 5
|
|
long r3 = r3 + r0
|
|
byte r5 = com.google.protobuf.UnsafeUtil.getByte(r5)
|
|
int r6 = r5 << 28
|
|
r2 = r2 ^ r6
|
|
r6 = 266354560(0xfe03f80, float:2.2112565E-29)
|
|
r2 = r2 ^ r6
|
|
if (r5 >= 0) goto L96
|
|
r5 = 6
|
|
long r5 = r5 + r0
|
|
byte r3 = com.google.protobuf.UnsafeUtil.getByte(r3)
|
|
if (r3 >= 0) goto L94
|
|
r3 = 7
|
|
long r3 = r3 + r0
|
|
byte r5 = com.google.protobuf.UnsafeUtil.getByte(r5)
|
|
if (r5 >= 0) goto L96
|
|
r5 = 8
|
|
long r5 = r5 + r0
|
|
byte r3 = com.google.protobuf.UnsafeUtil.getByte(r3)
|
|
if (r3 >= 0) goto L94
|
|
long r3 = r0 + r7
|
|
byte r5 = com.google.protobuf.UnsafeUtil.getByte(r5)
|
|
if (r5 >= 0) goto L96
|
|
r5 = 10
|
|
long r5 = r5 + r0
|
|
byte r0 = com.google.protobuf.UnsafeUtil.getByte(r3)
|
|
if (r0 >= 0) goto L94
|
|
L8e:
|
|
long r0 = r9.readRawVarint64SlowPath()
|
|
int r0 = (int) r0
|
|
return r0
|
|
L94:
|
|
r0 = r2
|
|
goto L98
|
|
L96:
|
|
r0 = r2
|
|
goto L3f
|
|
L98:
|
|
r9.pos = r5
|
|
return r0
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.google.protobuf.CodedInputStream.UnsafeDirectNioDecoder.readRawVarint32():int");
|
|
}
|
|
|
|
private void skipRawVarint() throws IOException {
|
|
if (remaining() >= 10) {
|
|
skipRawVarintFastPath();
|
|
} else {
|
|
skipRawVarintSlowPath();
|
|
}
|
|
}
|
|
|
|
private void skipRawVarintFastPath() throws IOException {
|
|
for (int i = 0; i < 10; i++) {
|
|
long j = this.pos;
|
|
this.pos = 1 + j;
|
|
if (UnsafeUtil.getByte(j) >= 0) {
|
|
return;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
private void skipRawVarintSlowPath() throws IOException {
|
|
for (int i = 0; i < 10; i++) {
|
|
if (readRawByte() >= 0) {
|
|
return;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64() throws IOException {
|
|
long j;
|
|
long j2;
|
|
long j3;
|
|
int i;
|
|
long j4 = this.pos;
|
|
if (this.limit != j4) {
|
|
long j5 = 1 + j4;
|
|
byte b = UnsafeUtil.getByte(j4);
|
|
if (b >= 0) {
|
|
this.pos = j5;
|
|
return b;
|
|
}
|
|
if (this.limit - j5 >= 9) {
|
|
long j6 = 2 + j4;
|
|
int i2 = (UnsafeUtil.getByte(j5) << 7) ^ b;
|
|
if (i2 >= 0) {
|
|
long j7 = 3 + j4;
|
|
int i3 = i2 ^ (UnsafeUtil.getByte(j6) << Ascii.SO);
|
|
if (i3 >= 0) {
|
|
j = i3 ^ 16256;
|
|
j6 = j7;
|
|
} else {
|
|
j6 = 4 + j4;
|
|
int i4 = i3 ^ (UnsafeUtil.getByte(j7) << Ascii.NAK);
|
|
if (i4 < 0) {
|
|
i = (-2080896) ^ i4;
|
|
} else {
|
|
long j8 = 5 + j4;
|
|
long j9 = i4 ^ (UnsafeUtil.getByte(j6) << 28);
|
|
if (j9 >= 0) {
|
|
j3 = 266354560;
|
|
} else {
|
|
long j10 = 6 + j4;
|
|
long j11 = j9 ^ (UnsafeUtil.getByte(j8) << 35);
|
|
if (j11 < 0) {
|
|
j2 = -34093383808L;
|
|
} else {
|
|
j8 = 7 + j4;
|
|
j9 = j11 ^ (UnsafeUtil.getByte(j10) << 42);
|
|
if (j9 >= 0) {
|
|
j3 = 4363953127296L;
|
|
} else {
|
|
j10 = 8 + j4;
|
|
j11 = j9 ^ (UnsafeUtil.getByte(j8) << 49);
|
|
if (j11 < 0) {
|
|
j2 = -558586000294016L;
|
|
} else {
|
|
long j12 = j4 + 9;
|
|
long j13 = (j11 ^ (UnsafeUtil.getByte(j10) << 56)) ^ 71499008037633920L;
|
|
if (j13 < 0) {
|
|
long j14 = j4 + 10;
|
|
if (UnsafeUtil.getByte(j12) >= 0) {
|
|
j6 = j14;
|
|
j = j13;
|
|
}
|
|
} else {
|
|
j = j13;
|
|
j6 = j12;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
j = j2 ^ j11;
|
|
j6 = j10;
|
|
}
|
|
j = j3 ^ j9;
|
|
j6 = j8;
|
|
}
|
|
}
|
|
this.pos = j6;
|
|
return j;
|
|
}
|
|
i = i2 ^ WorkInfo.STOP_REASON_FOREGROUND_SERVICE_TIMEOUT;
|
|
j = i;
|
|
this.pos = j6;
|
|
return j;
|
|
}
|
|
}
|
|
return readRawVarint64SlowPath();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64SlowPath() throws IOException {
|
|
long j = 0;
|
|
for (int i = 0; i < 64; i += 7) {
|
|
j |= (r3 & Byte.MAX_VALUE) << i;
|
|
if ((readRawByte() & ByteCompanionObject.MIN_VALUE) == 0) {
|
|
return j;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readRawLittleEndian32() throws IOException {
|
|
long j = this.pos;
|
|
if (this.limit - j < 4) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.pos = 4 + j;
|
|
return ((UnsafeUtil.getByte(j + 3) & 255) << 24) | (UnsafeUtil.getByte(j) & 255) | ((UnsafeUtil.getByte(1 + j) & 255) << 8) | ((UnsafeUtil.getByte(2 + j) & 255) << 16);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawLittleEndian64() throws IOException {
|
|
long j = this.pos;
|
|
if (this.limit - j < 8) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.pos = 8 + j;
|
|
return ((UnsafeUtil.getByte(j + 7) & 255) << 56) | (UnsafeUtil.getByte(j) & 255) | ((UnsafeUtil.getByte(1 + j) & 255) << 8) | ((UnsafeUtil.getByte(2 + j) & 255) << 16) | ((UnsafeUtil.getByte(3 + j) & 255) << 24) | ((UnsafeUtil.getByte(4 + j) & 255) << 32) | ((UnsafeUtil.getByte(5 + j) & 255) << 40) | ((UnsafeUtil.getByte(6 + j) & 255) << 48);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int pushLimit(int i) throws InvalidProtocolBufferException {
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
int totalBytesRead = i + getTotalBytesRead();
|
|
int i2 = this.currentLimit;
|
|
if (totalBytesRead > i2) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.currentLimit = totalBytesRead;
|
|
recomputeBufferSizeAfterLimit();
|
|
return i2;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void popLimit(int i) {
|
|
this.currentLimit = i;
|
|
recomputeBufferSizeAfterLimit();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getBytesUntilLimit() {
|
|
int i = this.currentLimit;
|
|
if (i == Integer.MAX_VALUE) {
|
|
return -1;
|
|
}
|
|
return i - getTotalBytesRead();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte readRawByte() throws IOException {
|
|
long j = this.pos;
|
|
if (j == this.limit) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.pos = 1 + j;
|
|
return UnsafeUtil.getByte(j);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readRawBytes(int i) throws IOException {
|
|
if (i < 0 || i > remaining()) {
|
|
if (i > 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if (i == 0) {
|
|
return Internal.EMPTY_BYTE_ARRAY;
|
|
}
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
byte[] bArr = new byte[i];
|
|
long j = this.pos;
|
|
long j2 = i;
|
|
slice(j, j + j2).get(bArr);
|
|
this.pos += j2;
|
|
return bArr;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipRawBytes(int i) throws IOException {
|
|
if (i >= 0 && i <= remaining()) {
|
|
this.pos += i;
|
|
} else {
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
}
|
|
|
|
private ByteBuffer slice(long j, long j2) throws IOException {
|
|
int position = this.buffer.position();
|
|
int limit = this.buffer.limit();
|
|
ByteBuffer byteBuffer = this.buffer;
|
|
try {
|
|
try {
|
|
byteBuffer.position(bufferPos(j));
|
|
byteBuffer.limit(bufferPos(j2));
|
|
return this.buffer.slice();
|
|
} catch (IllegalArgumentException e) {
|
|
InvalidProtocolBufferException truncatedMessage = InvalidProtocolBufferException.truncatedMessage();
|
|
truncatedMessage.initCause(e);
|
|
throw truncatedMessage;
|
|
}
|
|
} finally {
|
|
byteBuffer.position(position);
|
|
byteBuffer.limit(limit);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static final class StreamDecoder extends CodedInputStream {
|
|
private final byte[] buffer;
|
|
private int bufferSize;
|
|
private int bufferSizeAfterLimit;
|
|
private int currentLimit;
|
|
private final InputStream input;
|
|
private int lastTag;
|
|
private int pos;
|
|
private RefillCallback refillCallback;
|
|
private int totalBytesRetired;
|
|
|
|
public interface RefillCallback {
|
|
}
|
|
|
|
private void recomputeBufferSizeAfterLimit() {
|
|
int i = this.bufferSize + this.bufferSizeAfterLimit;
|
|
this.bufferSize = i;
|
|
int i2 = this.totalBytesRetired + i;
|
|
int i3 = this.currentLimit;
|
|
if (i2 <= i3) {
|
|
this.bufferSizeAfterLimit = 0;
|
|
return;
|
|
}
|
|
int i4 = i2 - i3;
|
|
this.bufferSizeAfterLimit = i4;
|
|
this.bufferSize = i - i4;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void enableAliasing(boolean z) {
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getBytesUntilLimit() {
|
|
int i = this.currentLimit;
|
|
if (i == Integer.MAX_VALUE) {
|
|
return -1;
|
|
}
|
|
return i - (this.totalBytesRetired + this.pos);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getLastTag() {
|
|
return this.lastTag;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getTotalBytesRead() {
|
|
return this.totalBytesRetired + this.pos;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void resetSizeCounter() {
|
|
this.totalBytesRetired = -this.pos;
|
|
}
|
|
|
|
private StreamDecoder(InputStream inputStream, int i) {
|
|
super();
|
|
this.currentLimit = Integer.MAX_VALUE;
|
|
Internal.checkNotNull(inputStream, "input");
|
|
this.input = inputStream;
|
|
this.buffer = new byte[i];
|
|
this.bufferSize = 0;
|
|
this.pos = 0;
|
|
this.totalBytesRetired = 0;
|
|
}
|
|
|
|
private static int read(InputStream inputStream, byte[] bArr, int i, int i2) throws IOException {
|
|
try {
|
|
return inputStream.read(bArr, i, i2);
|
|
} catch (InvalidProtocolBufferException e) {
|
|
e.setThrownFromInputStream();
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
private static long skip(InputStream inputStream, long j) throws IOException {
|
|
try {
|
|
return inputStream.skip(j);
|
|
} catch (InvalidProtocolBufferException e) {
|
|
e.setThrownFromInputStream();
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
private static int available(InputStream inputStream) throws IOException {
|
|
try {
|
|
return inputStream.available();
|
|
} catch (InvalidProtocolBufferException e) {
|
|
e.setThrownFromInputStream();
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readTag() throws IOException {
|
|
if (isAtEnd()) {
|
|
this.lastTag = 0;
|
|
return 0;
|
|
}
|
|
int readRawVarint32 = readRawVarint32();
|
|
this.lastTag = readRawVarint32;
|
|
if (WireFormat.getTagFieldNumber(readRawVarint32) != 0) {
|
|
return this.lastTag;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidTag();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void checkLastTagWas(int i) throws InvalidProtocolBufferException {
|
|
if (this.lastTag != i) {
|
|
throw InvalidProtocolBufferException.invalidEndTag();
|
|
}
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
skipRawVarint();
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
skipRawBytes(8);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
skipRawBytes(readRawVarint32());
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
skipMessage();
|
|
checkLastTagWas(WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4));
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
skipRawBytes(4);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i, CodedOutputStream codedOutputStream) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
long readInt64 = readInt64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeUInt64NoTag(readInt64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
long readRawLittleEndian64 = readRawLittleEndian64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed64NoTag(readRawLittleEndian64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
ByteString readBytes = readBytes();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeBytesNoTag(readBytes);
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
skipMessage(codedOutputStream);
|
|
int makeTag = WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4);
|
|
checkLastTagWas(makeTag);
|
|
codedOutputStream.writeUInt32NoTag(makeTag);
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
int readRawLittleEndian32 = readRawLittleEndian32();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed32NoTag(readRawLittleEndian32);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage() throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage(CodedOutputStream codedOutputStream) throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag, codedOutputStream));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public double readDouble() throws IOException {
|
|
return Double.longBitsToDouble(readRawLittleEndian64());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public float readFloat() throws IOException {
|
|
return Float.intBitsToFloat(readRawLittleEndian32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readUInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean readBool() throws IOException {
|
|
return readRawVarint64() != 0;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readString() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
int i = this.bufferSize;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 <= i - i2) {
|
|
String str = new String(this.buffer, i2, readRawVarint32, Internal.UTF_8);
|
|
this.pos += readRawVarint32;
|
|
return str;
|
|
}
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
if (readRawVarint32 <= this.bufferSize) {
|
|
refillBuffer(readRawVarint32);
|
|
String str2 = new String(this.buffer, this.pos, readRawVarint32, Internal.UTF_8);
|
|
this.pos += readRawVarint32;
|
|
return str2;
|
|
}
|
|
return new String(readRawBytesSlowPath(readRawVarint32, false), Internal.UTF_8);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readStringRequireUtf8() throws IOException {
|
|
byte[] readRawBytesSlowPath;
|
|
int readRawVarint32 = readRawVarint32();
|
|
int i = this.pos;
|
|
int i2 = this.bufferSize;
|
|
if (readRawVarint32 <= i2 - i && readRawVarint32 > 0) {
|
|
readRawBytesSlowPath = this.buffer;
|
|
this.pos = i + readRawVarint32;
|
|
} else {
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
i = 0;
|
|
if (readRawVarint32 <= i2) {
|
|
refillBuffer(readRawVarint32);
|
|
readRawBytesSlowPath = this.buffer;
|
|
this.pos = readRawVarint32;
|
|
} else {
|
|
readRawBytesSlowPath = readRawBytesSlowPath(readRawVarint32, false);
|
|
}
|
|
}
|
|
return Utf8.decodeUtf8(readRawBytesSlowPath, i, readRawVarint32);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readGroup(int i, MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readGroup(int i, Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
@Deprecated
|
|
public void readUnknownGroup(int i, MessageLite.Builder builder) throws IOException {
|
|
readGroup(i, builder, ExtensionRegistryLite.getEmptyRegistry());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readMessage(MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readMessage(Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteString readBytes() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
int i = this.bufferSize;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 > i - i2 || readRawVarint32 <= 0) {
|
|
if (readRawVarint32 == 0) {
|
|
return ByteString.EMPTY;
|
|
}
|
|
return readBytesSlowPath(readRawVarint32);
|
|
}
|
|
ByteString copyFrom = ByteString.copyFrom(this.buffer, i2, readRawVarint32);
|
|
this.pos += readRawVarint32;
|
|
return copyFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readByteArray() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
int i = this.bufferSize;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 <= i - i2 && readRawVarint32 > 0) {
|
|
byte[] copyOfRange = Arrays.copyOfRange(this.buffer, i2, i2 + readRawVarint32);
|
|
this.pos += readRawVarint32;
|
|
return copyOfRange;
|
|
}
|
|
return readRawBytesSlowPath(readRawVarint32, false);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteBuffer readByteBuffer() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
int i = this.bufferSize;
|
|
int i2 = this.pos;
|
|
if (readRawVarint32 > i - i2 || readRawVarint32 <= 0) {
|
|
if (readRawVarint32 == 0) {
|
|
return Internal.EMPTY_BYTE_BUFFER;
|
|
}
|
|
return ByteBuffer.wrap(readRawBytesSlowPath(readRawVarint32, true));
|
|
}
|
|
ByteBuffer wrap = ByteBuffer.wrap(Arrays.copyOfRange(this.buffer, i2, i2 + readRawVarint32));
|
|
this.pos += readRawVarint32;
|
|
return wrap;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readUInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readEnum() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSInt32() throws IOException {
|
|
return CodedInputStream.decodeZigZag32(readRawVarint32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSInt64() throws IOException {
|
|
return CodedInputStream.decodeZigZag64(readRawVarint64());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readRawVarint32() throws IOException {
|
|
int i;
|
|
int i2 = this.pos;
|
|
int i3 = this.bufferSize;
|
|
if (i3 != i2) {
|
|
byte[] bArr = this.buffer;
|
|
int i4 = i2 + 1;
|
|
byte b = bArr[i2];
|
|
if (b >= 0) {
|
|
this.pos = i4;
|
|
return b;
|
|
}
|
|
if (i3 - i4 >= 9) {
|
|
int i5 = i2 + 2;
|
|
int i6 = (bArr[i4] << 7) ^ b;
|
|
if (i6 < 0) {
|
|
i = i6 ^ WorkInfo.STOP_REASON_FOREGROUND_SERVICE_TIMEOUT;
|
|
} else {
|
|
int i7 = i2 + 3;
|
|
int i8 = (bArr[i5] << Ascii.SO) ^ i6;
|
|
if (i8 >= 0) {
|
|
i = i8 ^ 16256;
|
|
} else {
|
|
int i9 = i2 + 4;
|
|
int i10 = i8 ^ (bArr[i7] << Ascii.NAK);
|
|
if (i10 < 0) {
|
|
i = (-2080896) ^ i10;
|
|
} else {
|
|
i7 = i2 + 5;
|
|
byte b2 = bArr[i9];
|
|
int i11 = (i10 ^ (b2 << Ascii.FS)) ^ 266354560;
|
|
if (b2 < 0) {
|
|
i9 = i2 + 6;
|
|
if (bArr[i7] < 0) {
|
|
i7 = i2 + 7;
|
|
if (bArr[i9] < 0) {
|
|
i9 = i2 + 8;
|
|
if (bArr[i7] < 0) {
|
|
i7 = i2 + 9;
|
|
if (bArr[i9] < 0) {
|
|
int i12 = i2 + 10;
|
|
if (bArr[i7] >= 0) {
|
|
i5 = i12;
|
|
i = i11;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
i = i11;
|
|
}
|
|
i = i11;
|
|
}
|
|
i5 = i9;
|
|
}
|
|
i5 = i7;
|
|
}
|
|
this.pos = i5;
|
|
return i;
|
|
}
|
|
}
|
|
return (int) readRawVarint64SlowPath();
|
|
}
|
|
|
|
private void skipRawVarint() throws IOException {
|
|
if (this.bufferSize - this.pos >= 10) {
|
|
skipRawVarintFastPath();
|
|
} else {
|
|
skipRawVarintSlowPath();
|
|
}
|
|
}
|
|
|
|
private void skipRawVarintFastPath() throws IOException {
|
|
for (int i = 0; i < 10; i++) {
|
|
byte[] bArr = this.buffer;
|
|
int i2 = this.pos;
|
|
this.pos = i2 + 1;
|
|
if (bArr[i2] >= 0) {
|
|
return;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
private void skipRawVarintSlowPath() throws IOException {
|
|
for (int i = 0; i < 10; i++) {
|
|
if (readRawByte() >= 0) {
|
|
return;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64() throws IOException {
|
|
long j;
|
|
long j2;
|
|
long j3;
|
|
int i = this.pos;
|
|
int i2 = this.bufferSize;
|
|
if (i2 != i) {
|
|
byte[] bArr = this.buffer;
|
|
int i3 = i + 1;
|
|
byte b = bArr[i];
|
|
if (b >= 0) {
|
|
this.pos = i3;
|
|
return b;
|
|
}
|
|
if (i2 - i3 >= 9) {
|
|
int i4 = i + 2;
|
|
int i5 = (bArr[i3] << 7) ^ b;
|
|
if (i5 < 0) {
|
|
j = i5 ^ WorkInfo.STOP_REASON_FOREGROUND_SERVICE_TIMEOUT;
|
|
} else {
|
|
int i6 = i + 3;
|
|
int i7 = (bArr[i4] << Ascii.SO) ^ i5;
|
|
if (i7 >= 0) {
|
|
j = i7 ^ 16256;
|
|
i4 = i6;
|
|
} else {
|
|
int i8 = i + 4;
|
|
int i9 = i7 ^ (bArr[i6] << Ascii.NAK);
|
|
if (i9 < 0) {
|
|
long j4 = (-2080896) ^ i9;
|
|
i4 = i8;
|
|
j = j4;
|
|
} else {
|
|
long j5 = i9;
|
|
i4 = i + 5;
|
|
long j6 = j5 ^ (bArr[i8] << 28);
|
|
if (j6 >= 0) {
|
|
j3 = 266354560;
|
|
} else {
|
|
int i10 = i + 6;
|
|
long j7 = j6 ^ (bArr[i4] << 35);
|
|
if (j7 < 0) {
|
|
j2 = -34093383808L;
|
|
} else {
|
|
i4 = i + 7;
|
|
j6 = j7 ^ (bArr[i10] << 42);
|
|
if (j6 >= 0) {
|
|
j3 = 4363953127296L;
|
|
} else {
|
|
i10 = i + 8;
|
|
j7 = j6 ^ (bArr[i4] << 49);
|
|
if (j7 < 0) {
|
|
j2 = -558586000294016L;
|
|
} else {
|
|
i4 = i + 9;
|
|
long j8 = (j7 ^ (bArr[i10] << 56)) ^ 71499008037633920L;
|
|
if (j8 < 0) {
|
|
int i11 = i + 10;
|
|
if (bArr[i4] >= 0) {
|
|
i4 = i11;
|
|
}
|
|
}
|
|
j = j8;
|
|
}
|
|
}
|
|
}
|
|
j = j7 ^ j2;
|
|
i4 = i10;
|
|
}
|
|
j = j6 ^ j3;
|
|
}
|
|
}
|
|
}
|
|
this.pos = i4;
|
|
return j;
|
|
}
|
|
}
|
|
return readRawVarint64SlowPath();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64SlowPath() throws IOException {
|
|
long j = 0;
|
|
for (int i = 0; i < 64; i += 7) {
|
|
j |= (r3 & Byte.MAX_VALUE) << i;
|
|
if ((readRawByte() & ByteCompanionObject.MIN_VALUE) == 0) {
|
|
return j;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readRawLittleEndian32() throws IOException {
|
|
int i = this.pos;
|
|
if (this.bufferSize - i < 4) {
|
|
refillBuffer(4);
|
|
i = this.pos;
|
|
}
|
|
byte[] bArr = this.buffer;
|
|
this.pos = i + 4;
|
|
return ((bArr[i + 3] & 255) << 24) | (bArr[i] & 255) | ((bArr[i + 1] & 255) << 8) | ((bArr[i + 2] & 255) << 16);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawLittleEndian64() throws IOException {
|
|
int i = this.pos;
|
|
if (this.bufferSize - i < 8) {
|
|
refillBuffer(8);
|
|
i = this.pos;
|
|
}
|
|
byte[] bArr = this.buffer;
|
|
this.pos = i + 8;
|
|
return ((bArr[i + 7] & 255) << 56) | (bArr[i] & 255) | ((bArr[i + 1] & 255) << 8) | ((bArr[i + 2] & 255) << 16) | ((bArr[i + 3] & 255) << 24) | ((bArr[i + 4] & 255) << 32) | ((bArr[i + 5] & 255) << 40) | ((bArr[i + 6] & 255) << 48);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int pushLimit(int i) throws InvalidProtocolBufferException {
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
int i2 = i + this.totalBytesRetired + this.pos;
|
|
int i3 = this.currentLimit;
|
|
if (i2 > i3) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.currentLimit = i2;
|
|
recomputeBufferSizeAfterLimit();
|
|
return i3;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void popLimit(int i) {
|
|
this.currentLimit = i;
|
|
recomputeBufferSizeAfterLimit();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean isAtEnd() throws IOException {
|
|
return this.pos == this.bufferSize && !tryRefillBuffer(1);
|
|
}
|
|
|
|
private void refillBuffer(int i) throws IOException {
|
|
if (tryRefillBuffer(i)) {
|
|
return;
|
|
}
|
|
if (i > (this.sizeLimit - this.totalBytesRetired) - this.pos) {
|
|
throw InvalidProtocolBufferException.sizeLimitExceeded();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
private boolean tryRefillBuffer(int i) throws IOException {
|
|
int i2 = this.pos;
|
|
int i3 = i2 + i;
|
|
int i4 = this.bufferSize;
|
|
if (i3 <= i4) {
|
|
throw new IllegalStateException("refillBuffer() called when " + i + " bytes were already available in buffer");
|
|
}
|
|
int i5 = this.sizeLimit;
|
|
int i6 = this.totalBytesRetired;
|
|
if (i > (i5 - i6) - i2 || i6 + i2 + i > this.currentLimit) {
|
|
return false;
|
|
}
|
|
if (i2 > 0) {
|
|
if (i4 > i2) {
|
|
byte[] bArr = this.buffer;
|
|
System.arraycopy(bArr, i2, bArr, 0, i4 - i2);
|
|
}
|
|
this.totalBytesRetired += i2;
|
|
this.bufferSize -= i2;
|
|
this.pos = 0;
|
|
}
|
|
InputStream inputStream = this.input;
|
|
byte[] bArr2 = this.buffer;
|
|
int i7 = this.bufferSize;
|
|
int read = read(inputStream, bArr2, i7, Math.min(bArr2.length - i7, (this.sizeLimit - this.totalBytesRetired) - i7));
|
|
if (read == 0 || read < -1 || read > this.buffer.length) {
|
|
throw new IllegalStateException(this.input.getClass() + "#read(byte[]) returned invalid result: " + read + "\nThe InputStream implementation is buggy.");
|
|
}
|
|
if (read <= 0) {
|
|
return false;
|
|
}
|
|
this.bufferSize += read;
|
|
recomputeBufferSizeAfterLimit();
|
|
if (this.bufferSize >= i) {
|
|
return true;
|
|
}
|
|
return tryRefillBuffer(i);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte readRawByte() throws IOException {
|
|
if (this.pos == this.bufferSize) {
|
|
refillBuffer(1);
|
|
}
|
|
byte[] bArr = this.buffer;
|
|
int i = this.pos;
|
|
this.pos = i + 1;
|
|
return bArr[i];
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readRawBytes(int i) throws IOException {
|
|
int i2 = this.pos;
|
|
if (i <= this.bufferSize - i2 && i > 0) {
|
|
int i3 = i + i2;
|
|
this.pos = i3;
|
|
return Arrays.copyOfRange(this.buffer, i2, i3);
|
|
}
|
|
return readRawBytesSlowPath(i, false);
|
|
}
|
|
|
|
private byte[] readRawBytesSlowPath(int i, boolean z) throws IOException {
|
|
byte[] readRawBytesSlowPathOneChunk = readRawBytesSlowPathOneChunk(i);
|
|
if (readRawBytesSlowPathOneChunk != null) {
|
|
return z ? (byte[]) readRawBytesSlowPathOneChunk.clone() : readRawBytesSlowPathOneChunk;
|
|
}
|
|
int i2 = this.pos;
|
|
int i3 = this.bufferSize;
|
|
int i4 = i3 - i2;
|
|
this.totalBytesRetired += i3;
|
|
this.pos = 0;
|
|
this.bufferSize = 0;
|
|
List<byte[]> readRawBytesSlowPathRemainingChunks = readRawBytesSlowPathRemainingChunks(i - i4);
|
|
byte[] bArr = new byte[i];
|
|
System.arraycopy(this.buffer, i2, bArr, 0, i4);
|
|
for (byte[] bArr2 : readRawBytesSlowPathRemainingChunks) {
|
|
System.arraycopy(bArr2, 0, bArr, i4, bArr2.length);
|
|
i4 += bArr2.length;
|
|
}
|
|
return bArr;
|
|
}
|
|
|
|
private byte[] readRawBytesSlowPathOneChunk(int i) throws IOException {
|
|
if (i == 0) {
|
|
return Internal.EMPTY_BYTE_ARRAY;
|
|
}
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
int i2 = this.totalBytesRetired;
|
|
int i3 = this.pos;
|
|
int i4 = i2 + i3 + i;
|
|
if (i4 - this.sizeLimit > 0) {
|
|
throw InvalidProtocolBufferException.sizeLimitExceeded();
|
|
}
|
|
int i5 = this.currentLimit;
|
|
if (i4 > i5) {
|
|
skipRawBytes((i5 - i2) - i3);
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
int i6 = this.bufferSize - i3;
|
|
int i7 = i - i6;
|
|
if (i7 >= 4096 && i7 > available(this.input)) {
|
|
return null;
|
|
}
|
|
byte[] bArr = new byte[i];
|
|
System.arraycopy(this.buffer, this.pos, bArr, 0, i6);
|
|
this.totalBytesRetired += this.bufferSize;
|
|
this.pos = 0;
|
|
this.bufferSize = 0;
|
|
while (i6 < i) {
|
|
int read = read(this.input, bArr, i6, i - i6);
|
|
if (read == -1) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.totalBytesRetired += read;
|
|
i6 += read;
|
|
}
|
|
return bArr;
|
|
}
|
|
|
|
private List<byte[]> readRawBytesSlowPathRemainingChunks(int i) throws IOException {
|
|
ArrayList arrayList = new ArrayList();
|
|
while (i > 0) {
|
|
int min = Math.min(i, 4096);
|
|
byte[] bArr = new byte[min];
|
|
int i2 = 0;
|
|
while (i2 < min) {
|
|
int read = this.input.read(bArr, i2, min - i2);
|
|
if (read == -1) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.totalBytesRetired += read;
|
|
i2 += read;
|
|
}
|
|
i -= min;
|
|
arrayList.add(bArr);
|
|
}
|
|
return arrayList;
|
|
}
|
|
|
|
private ByteString readBytesSlowPath(int i) throws IOException {
|
|
byte[] readRawBytesSlowPathOneChunk = readRawBytesSlowPathOneChunk(i);
|
|
if (readRawBytesSlowPathOneChunk != null) {
|
|
return ByteString.copyFrom(readRawBytesSlowPathOneChunk);
|
|
}
|
|
int i2 = this.pos;
|
|
int i3 = this.bufferSize;
|
|
int i4 = i3 - i2;
|
|
this.totalBytesRetired += i3;
|
|
this.pos = 0;
|
|
this.bufferSize = 0;
|
|
List<byte[]> readRawBytesSlowPathRemainingChunks = readRawBytesSlowPathRemainingChunks(i - i4);
|
|
byte[] bArr = new byte[i];
|
|
System.arraycopy(this.buffer, i2, bArr, 0, i4);
|
|
for (byte[] bArr2 : readRawBytesSlowPathRemainingChunks) {
|
|
System.arraycopy(bArr2, 0, bArr, i4, bArr2.length);
|
|
i4 += bArr2.length;
|
|
}
|
|
return ByteString.wrap(bArr);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipRawBytes(int i) throws IOException {
|
|
int i2 = this.bufferSize;
|
|
int i3 = this.pos;
|
|
if (i > i2 - i3 || i < 0) {
|
|
skipRawBytesSlowPath(i);
|
|
} else {
|
|
this.pos = i3 + i;
|
|
}
|
|
}
|
|
|
|
private void skipRawBytesSlowPath(int i) throws IOException {
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
int i2 = this.totalBytesRetired;
|
|
int i3 = this.pos;
|
|
int i4 = i2 + i3 + i;
|
|
int i5 = this.currentLimit;
|
|
if (i4 > i5) {
|
|
skipRawBytes((i5 - i2) - i3);
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.totalBytesRetired = i2 + i3;
|
|
int i6 = this.bufferSize - i3;
|
|
this.bufferSize = 0;
|
|
this.pos = 0;
|
|
while (i6 < i) {
|
|
try {
|
|
long j = i - i6;
|
|
long skip = skip(this.input, j);
|
|
if (skip < 0 || skip > j) {
|
|
throw new IllegalStateException(this.input.getClass() + "#skip returned invalid result: " + skip + "\nThe InputStream implementation is buggy.");
|
|
}
|
|
if (skip == 0) {
|
|
break;
|
|
} else {
|
|
i6 += (int) skip;
|
|
}
|
|
} finally {
|
|
this.totalBytesRetired += i6;
|
|
recomputeBufferSizeAfterLimit();
|
|
}
|
|
}
|
|
if (i6 >= i) {
|
|
return;
|
|
}
|
|
int i7 = this.bufferSize;
|
|
int i8 = i7 - this.pos;
|
|
this.pos = i7;
|
|
refillBuffer(1);
|
|
while (true) {
|
|
int i9 = i - i8;
|
|
int i10 = this.bufferSize;
|
|
if (i9 <= i10) {
|
|
this.pos = i9;
|
|
return;
|
|
} else {
|
|
i8 += i10;
|
|
this.pos = i10;
|
|
refillBuffer(1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static final class IterableDirectByteBufferDecoder extends CodedInputStream {
|
|
private int bufferSizeAfterCurrentLimit;
|
|
private long currentAddress;
|
|
private ByteBuffer currentByteBuffer;
|
|
private long currentByteBufferLimit;
|
|
private long currentByteBufferPos;
|
|
private long currentByteBufferStartPos;
|
|
private int currentLimit;
|
|
private boolean enableAliasing;
|
|
private final boolean immutable;
|
|
private final Iterable<ByteBuffer> input;
|
|
private final Iterator<ByteBuffer> iterator;
|
|
private int lastTag;
|
|
private int startOffset;
|
|
private int totalBufferSize;
|
|
private int totalBytesRead;
|
|
|
|
private long currentRemaining() {
|
|
return this.currentByteBufferLimit - this.currentByteBufferPos;
|
|
}
|
|
|
|
private void recomputeBufferSizeAfterLimit() {
|
|
int i = this.totalBufferSize + this.bufferSizeAfterCurrentLimit;
|
|
this.totalBufferSize = i;
|
|
int i2 = i - this.startOffset;
|
|
int i3 = this.currentLimit;
|
|
if (i2 <= i3) {
|
|
this.bufferSizeAfterCurrentLimit = 0;
|
|
return;
|
|
}
|
|
int i4 = i2 - i3;
|
|
this.bufferSizeAfterCurrentLimit = i4;
|
|
this.totalBufferSize = i - i4;
|
|
}
|
|
|
|
private int remaining() {
|
|
return (int) (((this.totalBufferSize - this.totalBytesRead) - this.currentByteBufferPos) + this.currentByteBufferStartPos);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void enableAliasing(boolean z) {
|
|
this.enableAliasing = z;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getLastTag() {
|
|
return this.lastTag;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getTotalBytesRead() {
|
|
return (int) (((this.totalBytesRead - this.startOffset) + this.currentByteBufferPos) - this.currentByteBufferStartPos);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean isAtEnd() throws IOException {
|
|
return (((long) this.totalBytesRead) + this.currentByteBufferPos) - this.currentByteBufferStartPos == ((long) this.totalBufferSize);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void resetSizeCounter() {
|
|
this.startOffset = (int) ((this.totalBytesRead + this.currentByteBufferPos) - this.currentByteBufferStartPos);
|
|
}
|
|
|
|
private IterableDirectByteBufferDecoder(Iterable<ByteBuffer> iterable, int i, boolean z) {
|
|
super();
|
|
this.currentLimit = Integer.MAX_VALUE;
|
|
this.totalBufferSize = i;
|
|
this.input = iterable;
|
|
this.iterator = iterable.iterator();
|
|
this.immutable = z;
|
|
this.totalBytesRead = 0;
|
|
this.startOffset = 0;
|
|
if (i == 0) {
|
|
this.currentByteBuffer = Internal.EMPTY_BYTE_BUFFER;
|
|
this.currentByteBufferPos = 0L;
|
|
this.currentByteBufferStartPos = 0L;
|
|
this.currentByteBufferLimit = 0L;
|
|
this.currentAddress = 0L;
|
|
return;
|
|
}
|
|
tryGetNextByteBuffer();
|
|
}
|
|
|
|
private void getNextByteBuffer() throws InvalidProtocolBufferException {
|
|
if (!this.iterator.hasNext()) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
tryGetNextByteBuffer();
|
|
}
|
|
|
|
private void tryGetNextByteBuffer() {
|
|
ByteBuffer next = this.iterator.next();
|
|
this.currentByteBuffer = next;
|
|
this.totalBytesRead += (int) (this.currentByteBufferPos - this.currentByteBufferStartPos);
|
|
long position = next.position();
|
|
this.currentByteBufferPos = position;
|
|
this.currentByteBufferStartPos = position;
|
|
this.currentByteBufferLimit = this.currentByteBuffer.limit();
|
|
long addressOffset = UnsafeUtil.addressOffset(this.currentByteBuffer);
|
|
this.currentAddress = addressOffset;
|
|
this.currentByteBufferPos += addressOffset;
|
|
this.currentByteBufferStartPos += addressOffset;
|
|
this.currentByteBufferLimit += addressOffset;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readTag() throws IOException {
|
|
if (isAtEnd()) {
|
|
this.lastTag = 0;
|
|
return 0;
|
|
}
|
|
int readRawVarint32 = readRawVarint32();
|
|
this.lastTag = readRawVarint32;
|
|
if (WireFormat.getTagFieldNumber(readRawVarint32) != 0) {
|
|
return this.lastTag;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidTag();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void checkLastTagWas(int i) throws InvalidProtocolBufferException {
|
|
if (this.lastTag != i) {
|
|
throw InvalidProtocolBufferException.invalidEndTag();
|
|
}
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
skipRawVarint();
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
skipRawBytes(8);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
skipRawBytes(readRawVarint32());
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
skipMessage();
|
|
checkLastTagWas(WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4));
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
skipRawBytes(4);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean skipField(int i, CodedOutputStream codedOutputStream) throws IOException {
|
|
int tagWireType = WireFormat.getTagWireType(i);
|
|
if (tagWireType == 0) {
|
|
long readInt64 = readInt64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeUInt64NoTag(readInt64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 1) {
|
|
long readRawLittleEndian64 = readRawLittleEndian64();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed64NoTag(readRawLittleEndian64);
|
|
return true;
|
|
}
|
|
if (tagWireType == 2) {
|
|
ByteString readBytes = readBytes();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeBytesNoTag(readBytes);
|
|
return true;
|
|
}
|
|
if (tagWireType == 3) {
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
skipMessage(codedOutputStream);
|
|
int makeTag = WireFormat.makeTag(WireFormat.getTagFieldNumber(i), 4);
|
|
checkLastTagWas(makeTag);
|
|
codedOutputStream.writeUInt32NoTag(makeTag);
|
|
return true;
|
|
}
|
|
if (tagWireType == 4) {
|
|
return false;
|
|
}
|
|
if (tagWireType == 5) {
|
|
int readRawLittleEndian32 = readRawLittleEndian32();
|
|
codedOutputStream.writeUInt32NoTag(i);
|
|
codedOutputStream.writeFixed32NoTag(readRawLittleEndian32);
|
|
return true;
|
|
}
|
|
throw InvalidProtocolBufferException.invalidWireType();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage() throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipMessage(CodedOutputStream codedOutputStream) throws IOException {
|
|
int readTag;
|
|
do {
|
|
readTag = readTag();
|
|
if (readTag == 0) {
|
|
return;
|
|
}
|
|
} while (skipField(readTag, codedOutputStream));
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public double readDouble() throws IOException {
|
|
return Double.longBitsToDouble(readRawLittleEndian64());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public float readFloat() throws IOException {
|
|
return Float.intBitsToFloat(readRawLittleEndian32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readUInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readInt64() throws IOException {
|
|
return readRawVarint64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public boolean readBool() throws IOException {
|
|
return readRawVarint64() != 0;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readString() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
long j = readRawVarint32;
|
|
long j2 = this.currentByteBufferLimit;
|
|
long j3 = this.currentByteBufferPos;
|
|
if (j <= j2 - j3) {
|
|
byte[] bArr = new byte[readRawVarint32];
|
|
UnsafeUtil.copyMemory(j3, bArr, 0L, j);
|
|
String str = new String(bArr, Internal.UTF_8);
|
|
this.currentByteBufferPos += j;
|
|
return str;
|
|
}
|
|
}
|
|
if (readRawVarint32 > 0 && readRawVarint32 <= remaining()) {
|
|
byte[] bArr2 = new byte[readRawVarint32];
|
|
readRawBytesTo(bArr2, 0, readRawVarint32);
|
|
return new String(bArr2, Internal.UTF_8);
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public String readStringRequireUtf8() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
long j = readRawVarint32;
|
|
long j2 = this.currentByteBufferLimit;
|
|
long j3 = this.currentByteBufferPos;
|
|
if (j <= j2 - j3) {
|
|
String decodeUtf8 = Utf8.decodeUtf8(this.currentByteBuffer, (int) (j3 - this.currentByteBufferStartPos), readRawVarint32);
|
|
this.currentByteBufferPos += j;
|
|
return decodeUtf8;
|
|
}
|
|
}
|
|
if (readRawVarint32 >= 0 && readRawVarint32 <= remaining()) {
|
|
byte[] bArr = new byte[readRawVarint32];
|
|
readRawBytesTo(bArr, 0, readRawVarint32);
|
|
return Utf8.decodeUtf8(bArr, 0, readRawVarint32);
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return "";
|
|
}
|
|
if (readRawVarint32 <= 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readGroup(int i, MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readGroup(int i, Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
checkRecursionLimit();
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(WireFormat.makeTag(i, 4));
|
|
this.recursionDepth--;
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
@Deprecated
|
|
public void readUnknownGroup(int i, MessageLite.Builder builder) throws IOException {
|
|
readGroup(i, builder, ExtensionRegistryLite.getEmptyRegistry());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void readMessage(MessageLite.Builder builder, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
builder.mergeFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public <T extends MessageLite> T readMessage(Parser<T> parser, ExtensionRegistryLite extensionRegistryLite) throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
checkRecursionLimit();
|
|
int pushLimit = pushLimit(readRawVarint32);
|
|
this.recursionDepth++;
|
|
T parsePartialFrom = parser.parsePartialFrom(this, extensionRegistryLite);
|
|
checkLastTagWas(0);
|
|
this.recursionDepth--;
|
|
if (getBytesUntilLimit() != 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
popLimit(pushLimit);
|
|
return parsePartialFrom;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteString readBytes() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
long j = readRawVarint32;
|
|
long j2 = this.currentByteBufferLimit;
|
|
long j3 = this.currentByteBufferPos;
|
|
if (j <= j2 - j3) {
|
|
if (this.immutable && this.enableAliasing) {
|
|
int i = (int) (j3 - this.currentAddress);
|
|
ByteString wrap = ByteString.wrap(slice(i, readRawVarint32 + i));
|
|
this.currentByteBufferPos += j;
|
|
return wrap;
|
|
}
|
|
byte[] bArr = new byte[readRawVarint32];
|
|
UnsafeUtil.copyMemory(j3, bArr, 0L, j);
|
|
this.currentByteBufferPos += j;
|
|
return ByteString.wrap(bArr);
|
|
}
|
|
}
|
|
if (readRawVarint32 <= 0 || readRawVarint32 > remaining()) {
|
|
if (readRawVarint32 == 0) {
|
|
return ByteString.EMPTY;
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if (this.immutable && this.enableAliasing) {
|
|
ArrayList arrayList = new ArrayList();
|
|
while (readRawVarint32 > 0) {
|
|
if (currentRemaining() == 0) {
|
|
getNextByteBuffer();
|
|
}
|
|
int min = Math.min(readRawVarint32, (int) currentRemaining());
|
|
int i2 = (int) (this.currentByteBufferPos - this.currentAddress);
|
|
arrayList.add(ByteString.wrap(slice(i2, i2 + min)));
|
|
readRawVarint32 -= min;
|
|
this.currentByteBufferPos += min;
|
|
}
|
|
return ByteString.copyFrom(arrayList);
|
|
}
|
|
byte[] bArr2 = new byte[readRawVarint32];
|
|
readRawBytesTo(bArr2, 0, readRawVarint32);
|
|
return ByteString.wrap(bArr2);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readByteArray() throws IOException {
|
|
return readRawBytes(readRawVarint32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public ByteBuffer readByteBuffer() throws IOException {
|
|
int readRawVarint32 = readRawVarint32();
|
|
if (readRawVarint32 > 0) {
|
|
long j = readRawVarint32;
|
|
if (j <= currentRemaining()) {
|
|
if (!this.immutable && this.enableAliasing) {
|
|
long j2 = this.currentByteBufferPos + j;
|
|
this.currentByteBufferPos = j2;
|
|
long j3 = this.currentAddress;
|
|
return slice((int) ((j2 - j3) - j), (int) (j2 - j3));
|
|
}
|
|
byte[] bArr = new byte[readRawVarint32];
|
|
UnsafeUtil.copyMemory(this.currentByteBufferPos, bArr, 0L, j);
|
|
this.currentByteBufferPos += j;
|
|
return ByteBuffer.wrap(bArr);
|
|
}
|
|
}
|
|
if (readRawVarint32 > 0 && readRawVarint32 <= remaining()) {
|
|
byte[] bArr2 = new byte[readRawVarint32];
|
|
readRawBytesTo(bArr2, 0, readRawVarint32);
|
|
return ByteBuffer.wrap(bArr2);
|
|
}
|
|
if (readRawVarint32 == 0) {
|
|
return Internal.EMPTY_BYTE_BUFFER;
|
|
}
|
|
if (readRawVarint32 < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readUInt32() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readEnum() throws IOException {
|
|
return readRawVarint32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSFixed32() throws IOException {
|
|
return readRawLittleEndian32();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSFixed64() throws IOException {
|
|
return readRawLittleEndian64();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readSInt32() throws IOException {
|
|
return CodedInputStream.decodeZigZag32(readRawVarint32());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readSInt64() throws IOException {
|
|
return CodedInputStream.decodeZigZag64(readRawVarint64());
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readRawVarint32() throws IOException {
|
|
int i;
|
|
long j = this.currentByteBufferPos;
|
|
if (this.currentByteBufferLimit != j) {
|
|
long j2 = j + 1;
|
|
byte b = UnsafeUtil.getByte(j);
|
|
if (b >= 0) {
|
|
this.currentByteBufferPos++;
|
|
return b;
|
|
}
|
|
if (this.currentByteBufferLimit - this.currentByteBufferPos >= 10) {
|
|
long j3 = 2 + j;
|
|
int i2 = (UnsafeUtil.getByte(j2) << 7) ^ b;
|
|
if (i2 < 0) {
|
|
i = i2 ^ WorkInfo.STOP_REASON_FOREGROUND_SERVICE_TIMEOUT;
|
|
} else {
|
|
long j4 = 3 + j;
|
|
int i3 = (UnsafeUtil.getByte(j3) << Ascii.SO) ^ i2;
|
|
if (i3 >= 0) {
|
|
i = i3 ^ 16256;
|
|
} else {
|
|
long j5 = 4 + j;
|
|
int i4 = i3 ^ (UnsafeUtil.getByte(j4) << Ascii.NAK);
|
|
if (i4 < 0) {
|
|
i = (-2080896) ^ i4;
|
|
} else {
|
|
j4 = 5 + j;
|
|
byte b2 = UnsafeUtil.getByte(j5);
|
|
int i5 = (i4 ^ (b2 << Ascii.FS)) ^ 266354560;
|
|
if (b2 < 0) {
|
|
j5 = 6 + j;
|
|
if (UnsafeUtil.getByte(j4) < 0) {
|
|
j4 = 7 + j;
|
|
if (UnsafeUtil.getByte(j5) < 0) {
|
|
j5 = 8 + j;
|
|
if (UnsafeUtil.getByte(j4) < 0) {
|
|
j4 = 9 + j;
|
|
if (UnsafeUtil.getByte(j5) < 0) {
|
|
long j6 = j + 10;
|
|
if (UnsafeUtil.getByte(j4) >= 0) {
|
|
i = i5;
|
|
j3 = j6;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
i = i5;
|
|
}
|
|
i = i5;
|
|
}
|
|
j3 = j5;
|
|
}
|
|
j3 = j4;
|
|
}
|
|
this.currentByteBufferPos = j3;
|
|
return i;
|
|
}
|
|
}
|
|
return (int) readRawVarint64SlowPath();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64() throws IOException {
|
|
long j;
|
|
long j2;
|
|
long j3;
|
|
long j4 = this.currentByteBufferPos;
|
|
if (this.currentByteBufferLimit != j4) {
|
|
long j5 = j4 + 1;
|
|
byte b = UnsafeUtil.getByte(j4);
|
|
if (b >= 0) {
|
|
this.currentByteBufferPos++;
|
|
return b;
|
|
}
|
|
if (this.currentByteBufferLimit - this.currentByteBufferPos >= 10) {
|
|
long j6 = 2 + j4;
|
|
int i = (UnsafeUtil.getByte(j5) << 7) ^ b;
|
|
if (i < 0) {
|
|
j = i ^ WorkInfo.STOP_REASON_FOREGROUND_SERVICE_TIMEOUT;
|
|
} else {
|
|
long j7 = 3 + j4;
|
|
int i2 = (UnsafeUtil.getByte(j6) << Ascii.SO) ^ i;
|
|
if (i2 >= 0) {
|
|
j = i2 ^ 16256;
|
|
j6 = j7;
|
|
} else {
|
|
long j8 = 4 + j4;
|
|
int i3 = i2 ^ (UnsafeUtil.getByte(j7) << Ascii.NAK);
|
|
if (i3 < 0) {
|
|
j = (-2080896) ^ i3;
|
|
j6 = j8;
|
|
} else {
|
|
long j9 = 5 + j4;
|
|
long j10 = (UnsafeUtil.getByte(j8) << 28) ^ i3;
|
|
if (j10 >= 0) {
|
|
j3 = 266354560;
|
|
} else {
|
|
long j11 = 6 + j4;
|
|
long j12 = j10 ^ (UnsafeUtil.getByte(j9) << 35);
|
|
if (j12 < 0) {
|
|
j2 = -34093383808L;
|
|
} else {
|
|
j9 = 7 + j4;
|
|
j10 = j12 ^ (UnsafeUtil.getByte(j11) << 42);
|
|
if (j10 >= 0) {
|
|
j3 = 4363953127296L;
|
|
} else {
|
|
j11 = 8 + j4;
|
|
j12 = j10 ^ (UnsafeUtil.getByte(j9) << 49);
|
|
if (j12 < 0) {
|
|
j2 = -558586000294016L;
|
|
} else {
|
|
j9 = 9 + j4;
|
|
long j13 = (j12 ^ (UnsafeUtil.getByte(j11) << 56)) ^ 71499008037633920L;
|
|
if (j13 < 0) {
|
|
long j14 = j4 + 10;
|
|
if (UnsafeUtil.getByte(j9) >= 0) {
|
|
j = j13;
|
|
j6 = j14;
|
|
}
|
|
} else {
|
|
j = j13;
|
|
j6 = j9;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
j = j2 ^ j12;
|
|
j6 = j11;
|
|
}
|
|
j = j3 ^ j10;
|
|
j6 = j9;
|
|
}
|
|
}
|
|
}
|
|
this.currentByteBufferPos = j6;
|
|
return j;
|
|
}
|
|
}
|
|
return readRawVarint64SlowPath();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawVarint64SlowPath() throws IOException {
|
|
long j = 0;
|
|
for (int i = 0; i < 64; i += 7) {
|
|
j |= (r3 & Byte.MAX_VALUE) << i;
|
|
if ((readRawByte() & ByteCompanionObject.MIN_VALUE) == 0) {
|
|
return j;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int readRawLittleEndian32() throws IOException {
|
|
if (currentRemaining() >= 4) {
|
|
long j = this.currentByteBufferPos;
|
|
this.currentByteBufferPos = 4 + j;
|
|
return ((UnsafeUtil.getByte(j + 3) & 255) << 24) | (UnsafeUtil.getByte(j) & 255) | ((UnsafeUtil.getByte(1 + j) & 255) << 8) | ((UnsafeUtil.getByte(2 + j) & 255) << 16);
|
|
}
|
|
return (readRawByte() & 255) | ((readRawByte() & 255) << 8) | ((readRawByte() & 255) << 16) | ((readRawByte() & 255) << 24);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public long readRawLittleEndian64() throws IOException {
|
|
long readRawByte;
|
|
byte readRawByte2;
|
|
if (currentRemaining() >= 8) {
|
|
long j = this.currentByteBufferPos;
|
|
this.currentByteBufferPos = 8 + j;
|
|
readRawByte = (UnsafeUtil.getByte(j) & 255) | ((UnsafeUtil.getByte(1 + j) & 255) << 8) | ((UnsafeUtil.getByte(2 + j) & 255) << 16) | ((UnsafeUtil.getByte(3 + j) & 255) << 24) | ((UnsafeUtil.getByte(4 + j) & 255) << 32) | ((UnsafeUtil.getByte(5 + j) & 255) << 40) | ((UnsafeUtil.getByte(6 + j) & 255) << 48);
|
|
readRawByte2 = UnsafeUtil.getByte(j + 7);
|
|
} else {
|
|
readRawByte = (readRawByte() & 255) | ((readRawByte() & 255) << 8) | ((readRawByte() & 255) << 16) | ((readRawByte() & 255) << 24) | ((readRawByte() & 255) << 32) | ((readRawByte() & 255) << 40) | ((readRawByte() & 255) << 48);
|
|
readRawByte2 = readRawByte();
|
|
}
|
|
return ((readRawByte2 & 255) << 56) | readRawByte;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int pushLimit(int i) throws InvalidProtocolBufferException {
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
int totalBytesRead = i + getTotalBytesRead();
|
|
int i2 = this.currentLimit;
|
|
if (totalBytesRead > i2) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
this.currentLimit = totalBytesRead;
|
|
recomputeBufferSizeAfterLimit();
|
|
return i2;
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void popLimit(int i) {
|
|
this.currentLimit = i;
|
|
recomputeBufferSizeAfterLimit();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public int getBytesUntilLimit() {
|
|
int i = this.currentLimit;
|
|
if (i == Integer.MAX_VALUE) {
|
|
return -1;
|
|
}
|
|
return i - getTotalBytesRead();
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte readRawByte() throws IOException {
|
|
if (currentRemaining() == 0) {
|
|
getNextByteBuffer();
|
|
}
|
|
long j = this.currentByteBufferPos;
|
|
this.currentByteBufferPos = 1 + j;
|
|
return UnsafeUtil.getByte(j);
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public byte[] readRawBytes(int i) throws IOException {
|
|
if (i >= 0) {
|
|
long j = i;
|
|
if (j <= currentRemaining()) {
|
|
byte[] bArr = new byte[i];
|
|
UnsafeUtil.copyMemory(this.currentByteBufferPos, bArr, 0L, j);
|
|
this.currentByteBufferPos += j;
|
|
return bArr;
|
|
}
|
|
}
|
|
if (i >= 0 && i <= remaining()) {
|
|
byte[] bArr2 = new byte[i];
|
|
readRawBytesTo(bArr2, 0, i);
|
|
return bArr2;
|
|
}
|
|
if (i > 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if (i == 0) {
|
|
return Internal.EMPTY_BYTE_ARRAY;
|
|
}
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
|
|
private void readRawBytesTo(byte[] bArr, int i, int i2) throws IOException {
|
|
if (i2 < 0 || i2 > remaining()) {
|
|
if (i2 > 0) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
if (i2 != 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
return;
|
|
}
|
|
int i3 = i2;
|
|
while (i3 > 0) {
|
|
if (currentRemaining() == 0) {
|
|
getNextByteBuffer();
|
|
}
|
|
int min = Math.min(i3, (int) currentRemaining());
|
|
long j = min;
|
|
UnsafeUtil.copyMemory(this.currentByteBufferPos, bArr, (i2 - i3) + i, j);
|
|
i3 -= min;
|
|
this.currentByteBufferPos += j;
|
|
}
|
|
}
|
|
|
|
@Override // com.google.protobuf.CodedInputStream
|
|
public void skipRawBytes(int i) throws IOException {
|
|
if (i < 0 || i > ((this.totalBufferSize - this.totalBytesRead) - this.currentByteBufferPos) + this.currentByteBufferStartPos) {
|
|
if (i < 0) {
|
|
throw InvalidProtocolBufferException.negativeSize();
|
|
}
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
while (i > 0) {
|
|
if (currentRemaining() == 0) {
|
|
getNextByteBuffer();
|
|
}
|
|
int min = Math.min(i, (int) currentRemaining());
|
|
i -= min;
|
|
this.currentByteBufferPos += min;
|
|
}
|
|
}
|
|
|
|
private void skipRawVarint() throws IOException {
|
|
for (int i = 0; i < 10; i++) {
|
|
if (readRawByte() >= 0) {
|
|
return;
|
|
}
|
|
}
|
|
throw InvalidProtocolBufferException.malformedVarint();
|
|
}
|
|
|
|
private ByteBuffer slice(int i, int i2) throws IOException {
|
|
int position = this.currentByteBuffer.position();
|
|
int limit = this.currentByteBuffer.limit();
|
|
ByteBuffer byteBuffer = this.currentByteBuffer;
|
|
try {
|
|
try {
|
|
byteBuffer.position(i);
|
|
byteBuffer.limit(i2);
|
|
return this.currentByteBuffer.slice();
|
|
} catch (IllegalArgumentException unused) {
|
|
throw InvalidProtocolBufferException.truncatedMessage();
|
|
}
|
|
} finally {
|
|
byteBuffer.position(position);
|
|
byteBuffer.limit(limit);
|
|
}
|
|
}
|
|
}
|
|
}
|