content: package okio;
  
  import java.io.EOFException;
  import java.io.IOException;
  import java.util.Arrays;
  import java.util.zip.CRC32;
  import java.util.zip.Inflater;
  import kotlin.Metadata;
  import kotlin.jvm.internal.Intrinsics;
  import mt.Log1F380D;
  
  @Metadata(bv = {1, 0, 3}, d1 = {"\u0000R\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0005\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\b\n\u0002\b\u0005\n\u0002\u0010\t\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0001¢\u0006\u0002\u0010\u0003J \u0010\r\u001a\u00020\u000e2\u0006\u0010\u000f\u001a\u00020\u00102\u0006\u0010\u0011\u001a\u00020\u00122\u0006\u0010\u0013\u001a\u00020\u0012H\u0002J\b\u0010\u0014\u001a\u00020\u000eH\u0016J\b\u0010\u0015\u001a\u00020\u000eH\u0002J\b\u0010\u0016\u001a\u00020\u000eH\u0002J\u0018\u0010\u0017\u001a\u00020\u00182\u0006\u0010\u0019\u001a\u00020\u001a2\u0006\u0010\u001b\u001a\u00020\u0018H\u0016J\b\u0010\u001c\u001a\u00020\u001dH\u0016J \u0010\u001e\u001a\u00020\u000e2\u0006\u0010\u001f\u001a\u00020\u001a2\u0006\u0010 \u001a\u00020\u00182\u0006\u0010\u001b\u001a\u00020\u0018H\u0002R\u000e\u0010\u0004\u001a\u00020\u0005X\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0007X\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\b\u001a\u00020\tX\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\n\u001a\u00020\u000bX\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\fX\u0004¢\u0006\u0002\n\u0000¨\u0006!"}, d2 = {"Lokio/GzipSource;", "Lokio/Source;", "source", "(Lokio/Source;)V", "crc", "Ljava/util/zip/CRC32;", "inflater", "Ljava/util/zip/Inflater;", "inflaterSource", "Lokio/InflaterSource;", "section", "", "Lokio/RealBufferedSource;", "checkEqual", "", "name", "", "expected", "", "actual", "close", "consumeHeader", "consumeTrailer", "read", "", "sink", "Lokio/Buffer;", "byteCount", "timeout", "Lokio/Timeout;", "updateCrc", "buffer", "offset", "okio"}, k = 1, mv = {1, 4, 0})
  /* compiled from: 01EE */
  public final class GzipSource implements Source {
      private final CRC32 crc = new CRC32();
      private final Inflater inflater;
      private final InflaterSource inflaterSource;
      private byte section;
      private final RealBufferedSource source;
  
      public GzipSource(Source source2) {
          Intrinsics.checkNotNullParameter(source2, "source");
          RealBufferedSource realBufferedSource = new RealBufferedSource(source2);
          this.source = realBufferedSource;
          Inflater inflater2 = new Inflater(true);
          this.inflater = inflater2;
          this.inflaterSource = new InflaterSource((BufferedSource) realBufferedSource, inflater2);
      }
  
      private final void checkEqual(String name, int expected, int actual) {
          if (actual != expected) {
              String format = String.format("%s: actual 0x%08x != expected 0x%08x", Arrays.copyOf(new Object[]{name, Integer.valueOf(actual), Integer.valueOf(expected)}, 3));
              Log1F380D.a((Object) format);
              Intrinsics.checkNotNullExpressionValue(format, "java.lang.String.format(this, *args)");
              throw new IOException(format);
          }
      }
  
      private final void consumeHeader() throws IOException {
          this.source.require(10);
          byte b = this.source.bufferField.getByte(3);
          boolean z = true;
          boolean z2 = ((b >> 1) & 1) == 1;
          if (z2) {
              updateCrc(this.source.bufferField, 0, 10);
          }
          checkEqual("ID1ID2", 8075, this.source.readShort());
          this.source.skip(8);
          if (((b >> 2) & 1) == 1) {
              this.source.require(2);
              if (z2) {
                  updateCrc(this.source.bufferField, 0, 2);
              }
              long readShortLe = (long) this.source.bufferField.readShortLe();
              this.source.require(readShortLe);
              if (z2) {
                  updateCrc(this.source.bufferField, 0, readShortLe);
              }
              this.source.skip(readShortLe);
          }
          if (((b >> 3) & 1) == 1) {
              long indexOf = this.source.indexOf((byte) 0);
              if (indexOf != -1) {
                  if (z2) {
                      updateCrc(this.source.bufferField, 0, indexOf + 1);
                  }
                  this.source.skip(indexOf + 1);
              } else {
                  throw new EOFException();
              }
          }
          if (((b >> 4) & 1) != 1) {
              z = false;
          }
          if (z) {
              long indexOf2 = this.source.indexOf((byte) 0);
              if (indexOf2 != -1) {
                  if (z2) {
                      updateCrc(this.source.bufferField, 0, indexOf2 + 1);
                  }
                  this.source.skip(1 + indexOf2);
              } else {
                  throw new EOFException();
              }
          }
          if (z2) {
              checkEqual("FHCRC", this.source.readShortLe(), (short) ((int) this.crc.getValue()));
              this.crc.reset();
          }
      }
  
      private final void consumeTrailer() throws IOException {
          checkEqual("CRC", this.source.readIntLe(), (int) this.crc.getValue());
          checkEqual("ISIZE", this.source.readIntLe(), (int) this.inflater.getBytesWritten());
      }
  
      private final void updateCrc(Buffer buffer, long offset, long byteCount) {
          long j = offset;
          long j2 = byteCount;
          Segment segment = buffer.head;
          Intrinsics.checkNotNull(segment);
          while (j >= ((long) (segment.limit - segment.pos))) {
              j -= (long) (segment.limit - segment.pos);
              Segment segment2 = segment.next;
              Intrinsics.checkNotNull(segment2);
              segment = segment2;
          }
          while (j2 > 0) {
              int i = (int) (((long) segment.pos) + j);
              int min = (int) Math.min((long) (segment.limit - i), j2);
              this.crc.update(segment.data, i, min);
              j2 -= (long) min;
              j = 0;
              Segment segment3 = segment.next;
              Intrinsics.checkNotNull(segment3);
              segment = segment3;
          }
      }
  
      public void close() throws IOException {
          this.inflaterSource.close();
      }
  
      public long read(Buffer sink, long byteCount) throws IOException {
          Buffer buffer = sink;
          long j = byteCount;
          Intrinsics.checkNotNullParameter(sink, "sink");
          if (!(j >= 0)) {
              throw new IllegalArgumentException(("byteCount < 0: " + j).toString());
          } else if (j == 0) {
              return 0;
          } else {
              if (this.section == 0) {
                  consumeHeader();
                  this.section = 1;
              }
              if (this.section == 1) {
                  long size = sink.size();
                  long read = this.inflaterSource.read(sink, j);
                  if (read != -1) {
                      updateCrc(sink, size, read);
                      return read;
                  }
                  this.section = 2;
              }
              if (this.section == 2) {
                  consumeTrailer();
                  this.section = 3;
                  if (!this.source.exhausted()) {
                      throw new IOException("gzip finished without exhausting source");
                  }
              }
              return -1;
          }
      }
  
      public Timeout timeout() {
          return this.source.timeout();
      }
  }
  