// Path: src/main/java/info/jdavid/ok/server/header/Connection.java
// @SuppressWarnings({ "WeakerAccess", "unused" })
// public final class Connection {
// 
//   private Connection() {}
// 
//   public static final String HEADER = "Connection";
// 
//   public static final String CLOSE = "Close";
//   public static final String KEEP_ALIVE = "Keep-Alive";
// 
// }
// 
// Path: src/main/java/info/jdavid/ok/server/header/Expect.java
// @SuppressWarnings({ "WeakerAccess" })
// public final class Expect {
// 
//   private Expect() {}
// 
//   public static final String HEADER = "Expect";
// 
//   public static final String CONTINUE = "100-Continue";
// 
// }


import java.io.IOException;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.nio.charset.Charset;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
import info.jdavid.ok.server.header.Connection;
import info.jdavid.ok.server.header.Expect;
import okhttp3.Headers;
import okhttp3.internal.http.HttpMethod;
import okio.Buffer;
import okio.BufferedSink;
import okio.BufferedSource;
import okio.ByteString;
import okio.Okio;
          if (method == null || path == null) {
            response = new Response.Builder().
              statusLine(StatusLines.BAD_REQUEST).
              header(Connection.HEADER, Connection.CLOSE).
              noBody().
              build();
          }
          else {
            final Headers.Builder headersBuilder = new Headers.Builder();
            boolean noHeaders = true;
            while (true) {
              final long index = crlf(in, availableRequestSize);
              if (index == -1) {
                break;
              }
              if (noHeaders) noHeaders = false;
              final ByteString headerByteString = in.readByteString(index);
              in.skip(2L);
              availableRequestSize -= (index + 2);
              if (index == 0) break;
              headersBuilder.add(headerByteString.string(ASCII));
            }
            if (noHeaders) {
              response = new Response.Builder().
                statusLine(StatusLines.BAD_REQUEST).
                header(Connection.HEADER, Connection.CLOSE).
                noBody().
                build();
            }
            else {
// Path: src/main/java/info/jdavid/ok/server/header/Connection.java
// @SuppressWarnings({ "WeakerAccess", "unused" })
// public final class Connection {
// 
//   private Connection() {}
// 
//   public static final String HEADER = "Connection";
// 
//   public static final String CLOSE = "Close";
//   public static final String KEEP_ALIVE = "Keep-Alive";
// 
// }
// 
// Path: src/main/java/info/jdavid/ok/server/header/Expect.java
// @SuppressWarnings({ "WeakerAccess" })
// public final class Expect {
// 
//   private Expect() {}
// 
//   public static final String HEADER = "Expect";
// 
//   public static final String CONTINUE = "100-Continue";
// 
// }


// Path: src/main/java/info/jdavid/ok/server/Http11.java
import java.io.IOException;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.nio.charset.Charset;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
import info.jdavid.ok.server.header.Connection;
import info.jdavid.ok.server.header.Expect;
import okhttp3.Headers;
import okhttp3.internal.http.HttpMethod;
import okio.Buffer;
import okio.BufferedSink;
import okio.BufferedSource;
import okio.ByteString;
import okio.Okio;

          if (method == null || path == null) {
            response = new Response.Builder().
              statusLine(StatusLines.BAD_REQUEST).
              header(Connection.HEADER, Connection.CLOSE).
              noBody().
              build();
          }
          else {
            final Headers.Builder headersBuilder = new Headers.Builder();
            boolean noHeaders = true;
            while (true) {
              final long index = crlf(in, availableRequestSize);
              if (index == -1) {
                break;
              }
              if (noHeaders) noHeaders = false;
              final ByteString headerByteString = in.readByteString(index);
              in.skip(2L);
              availableRequestSize -= (index + 2);
              if (index == 0) break;
              headersBuilder.add(headerByteString.string(ASCII));
            }
            if (noHeaders) {
              response = new Response.Builder().
                statusLine(StatusLines.BAD_REQUEST).
                header(Connection.HEADER, Connection.CLOSE).
                noBody().
                build();
            }
            else {
              if (Expect.CONTINUE.equalsIgnoreCase(headersBuilder.get(Expect.HEADER))) {