// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: coprocess_session_state.proto

#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
#include "coprocess_session_state.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.h>
#include <google/protobuf/stubs/once.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)

namespace coprocess {

namespace {

const ::google::protobuf::Descriptor* AccessSpec_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  AccessSpec_reflection_ = NULL;
const ::google::protobuf::Descriptor* AccessDefinition_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  AccessDefinition_reflection_ = NULL;
const ::google::protobuf::Descriptor* BasicAuthData_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  BasicAuthData_reflection_ = NULL;
const ::google::protobuf::Descriptor* JWTData_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  JWTData_reflection_ = NULL;
const ::google::protobuf::Descriptor* Monitor_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  Monitor_reflection_ = NULL;
const ::google::protobuf::Descriptor* SessionState_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  SessionState_reflection_ = NULL;
const ::google::protobuf::Descriptor* SessionState_AccessRightsEntry_descriptor_ = NULL;
const ::google::protobuf::Descriptor* SessionState_OauthKeysEntry_descriptor_ = NULL;

}  // namespace


void protobuf_AssignDesc_coprocess_5fsession_5fstate_2eproto() GOOGLE_ATTRIBUTE_COLD;
void protobuf_AssignDesc_coprocess_5fsession_5fstate_2eproto() {
  protobuf_AddDesc_coprocess_5fsession_5fstate_2eproto();
  const ::google::protobuf::FileDescriptor* file =
    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
      "coprocess_session_state.proto");
  GOOGLE_CHECK(file != NULL);
  AccessSpec_descriptor_ = file->message_type(0);
  static const int AccessSpec_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessSpec, url_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessSpec, methods_),
  };
  AccessSpec_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      AccessSpec_descriptor_,
      AccessSpec::internal_default_instance(),
      AccessSpec_offsets_,
      -1,
      -1,
      -1,
      sizeof(AccessSpec),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessSpec, _internal_metadata_));
  AccessDefinition_descriptor_ = file->message_type(1);
  static const int AccessDefinition_offsets_[4] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessDefinition, api_name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessDefinition, api_id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessDefinition, versions_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessDefinition, allowed_urls_),
  };
  AccessDefinition_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      AccessDefinition_descriptor_,
      AccessDefinition::internal_default_instance(),
      AccessDefinition_offsets_,
      -1,
      -1,
      -1,
      sizeof(AccessDefinition),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(AccessDefinition, _internal_metadata_));
  BasicAuthData_descriptor_ = file->message_type(2);
  static const int BasicAuthData_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BasicAuthData, password_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BasicAuthData, hash_),
  };
  BasicAuthData_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      BasicAuthData_descriptor_,
      BasicAuthData::internal_default_instance(),
      BasicAuthData_offsets_,
      -1,
      -1,
      -1,
      sizeof(BasicAuthData),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BasicAuthData, _internal_metadata_));
  JWTData_descriptor_ = file->message_type(3);
  static const int JWTData_offsets_[1] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(JWTData, secret_),
  };
  JWTData_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      JWTData_descriptor_,
      JWTData::internal_default_instance(),
      JWTData_offsets_,
      -1,
      -1,
      -1,
      sizeof(JWTData),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(JWTData, _internal_metadata_));
  Monitor_descriptor_ = file->message_type(4);
  static const int Monitor_offsets_[1] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Monitor, trigger_limits_),
  };
  Monitor_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      Monitor_descriptor_,
      Monitor::internal_default_instance(),
      Monitor_offsets_,
      -1,
      -1,
      -1,
      sizeof(Monitor),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Monitor, _internal_metadata_));
  SessionState_descriptor_ = file->message_type(5);
  static const int SessionState_offsets_[28] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, last_check_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, allowance_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, rate_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, per_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, expires_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, quota_max_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, quota_renews_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, quota_remaining_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, quota_renewal_rate_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, access_rights_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, org_id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, oauth_client_id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, oauth_keys_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, basic_auth_data_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, jwt_data_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, hmac_enabled_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, hmac_secret_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, is_inactive_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, apply_policy_id_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, data_expires_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, monitor_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, enable_detailed_recording_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, tags_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, alias_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, last_updated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, id_extractor_deadline_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, session_lifetime_),
  };
  SessionState_reflection_ =
    ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
      SessionState_descriptor_,
      SessionState::internal_default_instance(),
      SessionState_offsets_,
      -1,
      -1,
      -1,
      sizeof(SessionState),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SessionState, _internal_metadata_));
  SessionState_AccessRightsEntry_descriptor_ = SessionState_descriptor_->nested_type(0);
  SessionState_OauthKeysEntry_descriptor_ = SessionState_descriptor_->nested_type(1);
}

namespace {

GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
void protobuf_AssignDescriptorsOnce() {
  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
                 &protobuf_AssignDesc_coprocess_5fsession_5fstate_2eproto);
}

void protobuf_RegisterTypes(const ::std::string&) GOOGLE_ATTRIBUTE_COLD;
void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      AccessSpec_descriptor_, AccessSpec::internal_default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      AccessDefinition_descriptor_, AccessDefinition::internal_default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      BasicAuthData_descriptor_, BasicAuthData::internal_default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      JWTData_descriptor_, JWTData::internal_default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      Monitor_descriptor_, Monitor::internal_default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
      SessionState_descriptor_, SessionState::internal_default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
        SessionState_AccessRightsEntry_descriptor_,
        ::google::protobuf::internal::MapEntry<
            ::std::string,
            ::coprocess::AccessDefinition,
            ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
            ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
            0>::CreateDefaultInstance(
                SessionState_AccessRightsEntry_descriptor_));
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
        SessionState_OauthKeysEntry_descriptor_,
        ::google::protobuf::internal::MapEntry<
            ::std::string,
            ::std::string,
            ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
            ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
            0>::CreateDefaultInstance(
                SessionState_OauthKeysEntry_descriptor_));
}

}  // namespace

void protobuf_ShutdownFile_coprocess_5fsession_5fstate_2eproto() {
  AccessSpec_default_instance_.Shutdown();
  delete AccessSpec_reflection_;
  AccessDefinition_default_instance_.Shutdown();
  delete AccessDefinition_reflection_;
  BasicAuthData_default_instance_.Shutdown();
  delete BasicAuthData_reflection_;
  JWTData_default_instance_.Shutdown();
  delete JWTData_reflection_;
  Monitor_default_instance_.Shutdown();
  delete Monitor_reflection_;
  SessionState_default_instance_.Shutdown();
  delete SessionState_reflection_;
}

void protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto_impl() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::google::protobuf::internal::GetEmptyString();
  AccessSpec_default_instance_.DefaultConstruct();
  ::google::protobuf::internal::GetEmptyString();
  AccessDefinition_default_instance_.DefaultConstruct();
  ::google::protobuf::internal::GetEmptyString();
  BasicAuthData_default_instance_.DefaultConstruct();
  ::google::protobuf::internal::GetEmptyString();
  JWTData_default_instance_.DefaultConstruct();
  Monitor_default_instance_.DefaultConstruct();
  ::google::protobuf::internal::GetEmptyString();
  SessionState_default_instance_.DefaultConstruct();
  ::google::protobuf::internal::GetEmptyString();
  AccessSpec_default_instance_.get_mutable()->InitAsDefaultInstance();
  AccessDefinition_default_instance_.get_mutable()->InitAsDefaultInstance();
  BasicAuthData_default_instance_.get_mutable()->InitAsDefaultInstance();
  JWTData_default_instance_.get_mutable()->InitAsDefaultInstance();
  Monitor_default_instance_.get_mutable()->InitAsDefaultInstance();
  SessionState_default_instance_.get_mutable()->InitAsDefaultInstance();
}

GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto_once_);
void protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto() {
  ::google::protobuf::GoogleOnceInit(&protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto_once_,
                 &protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto_impl);
}
void protobuf_AddDesc_coprocess_5fsession_5fstate_2eproto_impl() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
    "\n\035coprocess_session_state.proto\022\tcoproce"
    "ss\"*\n\nAccessSpec\022\013\n\003url\030\001 \001(\t\022\017\n\007methods"
    "\030\002 \003(\t\"s\n\020AccessDefinition\022\020\n\010api_name\030\001"
    " \001(\t\022\016\n\006api_id\030\002 \001(\t\022\020\n\010versions\030\003 \003(\t\022+"
    "\n\014allowed_urls\030\004 \003(\0132\025.coprocess.AccessS"
    "pec\"/\n\rBasicAuthData\022\020\n\010password\030\001 \001(\t\022\014"
    "\n\004hash\030\002 \001(\t\"\031\n\007JWTData\022\016\n\006secret\030\001 \001(\t\""
    "!\n\007Monitor\022\026\n\016trigger_limits\030\001 \003(\001\"\370\006\n\014S"
    "essionState\022\022\n\nlast_check\030\001 \001(\003\022\021\n\tallow"
    "ance\030\002 \001(\001\022\014\n\004rate\030\003 \001(\001\022\013\n\003per\030\004 \001(\001\022\017\n"
    "\007expires\030\005 \001(\003\022\021\n\tquota_max\030\006 \001(\003\022\024\n\014quo"
    "ta_renews\030\007 \001(\003\022\027\n\017quota_remaining\030\010 \001(\003"
    "\022\032\n\022quota_renewal_rate\030\t \001(\003\022@\n\raccess_r"
    "ights\030\n \003(\0132).coprocess.SessionState.Acc"
    "essRightsEntry\022\016\n\006org_id\030\013 \001(\t\022\027\n\017oauth_"
    "client_id\030\014 \001(\t\022:\n\noauth_keys\030\r \003(\0132&.co"
    "process.SessionState.OauthKeysEntry\0221\n\017b"
    "asic_auth_data\030\016 \001(\0132\030.coprocess.BasicAu"
    "thData\022$\n\010jwt_data\030\017 \001(\0132\022.coprocess.JWT"
    "Data\022\024\n\014hmac_enabled\030\020 \001(\010\022\023\n\013hmac_secre"
    "t\030\021 \001(\t\022\023\n\013is_inactive\030\022 \001(\010\022\027\n\017apply_po"
    "licy_id\030\023 \001(\t\022\024\n\014data_expires\030\024 \001(\003\022#\n\007m"
    "onitor\030\025 \001(\0132\022.coprocess.Monitor\022!\n\031enab"
    "le_detailed_recording\030\026 \001(\010\022\020\n\010metadata\030"
    "\027 \001(\t\022\014\n\004tags\030\030 \003(\t\022\r\n\005alias\030\031 \001(\t\022\024\n\014la"
    "st_updated\030\032 \001(\t\022\035\n\025id_extractor_deadlin"
    "e\030\033 \001(\003\022\030\n\020session_lifetime\030\034 \001(\003\032P\n\021Acc"
    "essRightsEntry\022\013\n\003key\030\001 \001(\t\022*\n\005value\030\002 \001"
    "(\0132\033.coprocess.AccessDefinition:\0028\001\0320\n\016O"
    "authKeysEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001("
    "\t:\0028\001b\006proto3", 1213);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "coprocess_session_state.proto", &protobuf_RegisterTypes);
  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_coprocess_5fsession_5fstate_2eproto);
}

GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AddDesc_coprocess_5fsession_5fstate_2eproto_once_);
void protobuf_AddDesc_coprocess_5fsession_5fstate_2eproto() {
  ::google::protobuf::GoogleOnceInit(&protobuf_AddDesc_coprocess_5fsession_5fstate_2eproto_once_,
                 &protobuf_AddDesc_coprocess_5fsession_5fstate_2eproto_impl);
}
// Force AddDescriptors() to be called at static initialization time.
struct StaticDescriptorInitializer_coprocess_5fsession_5fstate_2eproto {
  StaticDescriptorInitializer_coprocess_5fsession_5fstate_2eproto() {
    protobuf_AddDesc_coprocess_5fsession_5fstate_2eproto();
  }
} static_descriptor_initializer_coprocess_5fsession_5fstate_2eproto_;

namespace {

static void MergeFromFail(int line) GOOGLE_ATTRIBUTE_COLD GOOGLE_ATTRIBUTE_NORETURN;
static void MergeFromFail(int line) {
  ::google::protobuf::internal::MergeFromFail(__FILE__, line);
}

}  // namespace


// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int AccessSpec::kUrlFieldNumber;
const int AccessSpec::kMethodsFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

AccessSpec::AccessSpec()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (this != internal_default_instance()) protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  SharedCtor();
  // @@protoc_insertion_point(constructor:coprocess.AccessSpec)
}

void AccessSpec::InitAsDefaultInstance() {
}

AccessSpec::AccessSpec(const AccessSpec& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  UnsafeMergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:coprocess.AccessSpec)
}

void AccessSpec::SharedCtor() {
  url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _cached_size_ = 0;
}

AccessSpec::~AccessSpec() {
  // @@protoc_insertion_point(destructor:coprocess.AccessSpec)
  SharedDtor();
}

void AccessSpec::SharedDtor() {
  url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void AccessSpec::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* AccessSpec::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return AccessSpec_descriptor_;
}

const AccessSpec& AccessSpec::default_instance() {
  protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  return *internal_default_instance();
}

::google::protobuf::internal::ExplicitlyConstructed<AccessSpec> AccessSpec_default_instance_;

AccessSpec* AccessSpec::New(::google::protobuf::Arena* arena) const {
  AccessSpec* n = new AccessSpec;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void AccessSpec::Clear() {
// @@protoc_insertion_point(message_clear_start:coprocess.AccessSpec)
  url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  methods_.Clear();
}

bool AccessSpec::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:coprocess.AccessSpec)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string url = 1;
      case 1: {
        if (tag == 10) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_url()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->url().data(), this->url().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.AccessSpec.url"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(18)) goto parse_methods;
        break;
      }

      // repeated string methods = 2;
      case 2: {
        if (tag == 18) {
         parse_methods:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_methods()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->methods(this->methods_size() - 1).data(),
            this->methods(this->methods_size() - 1).length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.AccessSpec.methods"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(18)) goto parse_methods;
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:coprocess.AccessSpec)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:coprocess.AccessSpec)
  return false;
#undef DO_
}

void AccessSpec::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:coprocess.AccessSpec)
  // optional string url = 1;
  if (this->url().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->url().data(), this->url().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessSpec.url");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->url(), output);
  }

  // repeated string methods = 2;
  for (int i = 0; i < this->methods_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->methods(i).data(), this->methods(i).length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessSpec.methods");
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->methods(i), output);
  }

  // @@protoc_insertion_point(serialize_end:coprocess.AccessSpec)
}

::google::protobuf::uint8* AccessSpec::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:coprocess.AccessSpec)
  // optional string url = 1;
  if (this->url().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->url().data(), this->url().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessSpec.url");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->url(), target);
  }

  // repeated string methods = 2;
  for (int i = 0; i < this->methods_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->methods(i).data(), this->methods(i).length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessSpec.methods");
    target = ::google::protobuf::internal::WireFormatLite::
      WriteStringToArray(2, this->methods(i), target);
  }

  // @@protoc_insertion_point(serialize_to_array_end:coprocess.AccessSpec)
  return target;
}

size_t AccessSpec::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:coprocess.AccessSpec)
  size_t total_size = 0;

  // optional string url = 1;
  if (this->url().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->url());
  }

  // repeated string methods = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->methods_size());
  for (int i = 0; i < this->methods_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->methods(i));
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AccessSpec::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:coprocess.AccessSpec)
  if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__);
  const AccessSpec* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const AccessSpec>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:coprocess.AccessSpec)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:coprocess.AccessSpec)
    UnsafeMergeFrom(*source);
  }
}

void AccessSpec::MergeFrom(const AccessSpec& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:coprocess.AccessSpec)
  if (GOOGLE_PREDICT_TRUE(&from != this)) {
    UnsafeMergeFrom(from);
  } else {
    MergeFromFail(__LINE__);
  }
}

void AccessSpec::UnsafeMergeFrom(const AccessSpec& from) {
  GOOGLE_DCHECK(&from != this);
  methods_.UnsafeMergeFrom(from.methods_);
  if (from.url().size() > 0) {

    url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.url_);
  }
}

void AccessSpec::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:coprocess.AccessSpec)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void AccessSpec::CopyFrom(const AccessSpec& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:coprocess.AccessSpec)
  if (&from == this) return;
  Clear();
  UnsafeMergeFrom(from);
}

bool AccessSpec::IsInitialized() const {

  return true;
}

void AccessSpec::Swap(AccessSpec* other) {
  if (other == this) return;
  InternalSwap(other);
}
void AccessSpec::InternalSwap(AccessSpec* other) {
  url_.Swap(&other->url_);
  methods_.UnsafeArenaSwap(&other->methods_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata AccessSpec::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = AccessSpec_descriptor_;
  metadata.reflection = AccessSpec_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// AccessSpec

// optional string url = 1;
void AccessSpec::clear_url() {
  url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& AccessSpec::url() const {
  // @@protoc_insertion_point(field_get:coprocess.AccessSpec.url)
  return url_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void AccessSpec::set_url(const ::std::string& value) {
  
  url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.AccessSpec.url)
}
void AccessSpec::set_url(const char* value) {
  
  url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.AccessSpec.url)
}
void AccessSpec::set_url(const char* value, size_t size) {
  
  url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.AccessSpec.url)
}
::std::string* AccessSpec::mutable_url() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.AccessSpec.url)
  return url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* AccessSpec::release_url() {
  // @@protoc_insertion_point(field_release:coprocess.AccessSpec.url)
  
  return url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void AccessSpec::set_allocated_url(::std::string* url) {
  if (url != NULL) {
    
  } else {
    
  }
  url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), url);
  // @@protoc_insertion_point(field_set_allocated:coprocess.AccessSpec.url)
}

// repeated string methods = 2;
int AccessSpec::methods_size() const {
  return methods_.size();
}
void AccessSpec::clear_methods() {
  methods_.Clear();
}
const ::std::string& AccessSpec::methods(int index) const {
  // @@protoc_insertion_point(field_get:coprocess.AccessSpec.methods)
  return methods_.Get(index);
}
::std::string* AccessSpec::mutable_methods(int index) {
  // @@protoc_insertion_point(field_mutable:coprocess.AccessSpec.methods)
  return methods_.Mutable(index);
}
void AccessSpec::set_methods(int index, const ::std::string& value) {
  // @@protoc_insertion_point(field_set:coprocess.AccessSpec.methods)
  methods_.Mutable(index)->assign(value);
}
void AccessSpec::set_methods(int index, const char* value) {
  methods_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:coprocess.AccessSpec.methods)
}
void AccessSpec::set_methods(int index, const char* value, size_t size) {
  methods_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:coprocess.AccessSpec.methods)
}
::std::string* AccessSpec::add_methods() {
  // @@protoc_insertion_point(field_add_mutable:coprocess.AccessSpec.methods)
  return methods_.Add();
}
void AccessSpec::add_methods(const ::std::string& value) {
  methods_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:coprocess.AccessSpec.methods)
}
void AccessSpec::add_methods(const char* value) {
  methods_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:coprocess.AccessSpec.methods)
}
void AccessSpec::add_methods(const char* value, size_t size) {
  methods_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:coprocess.AccessSpec.methods)
}
const ::google::protobuf::RepeatedPtrField< ::std::string>&
AccessSpec::methods() const {
  // @@protoc_insertion_point(field_list:coprocess.AccessSpec.methods)
  return methods_;
}
::google::protobuf::RepeatedPtrField< ::std::string>*
AccessSpec::mutable_methods() {
  // @@protoc_insertion_point(field_mutable_list:coprocess.AccessSpec.methods)
  return &methods_;
}

inline const AccessSpec* AccessSpec::internal_default_instance() {
  return &AccessSpec_default_instance_.get();
}
#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int AccessDefinition::kApiNameFieldNumber;
const int AccessDefinition::kApiIdFieldNumber;
const int AccessDefinition::kVersionsFieldNumber;
const int AccessDefinition::kAllowedUrlsFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

AccessDefinition::AccessDefinition()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (this != internal_default_instance()) protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  SharedCtor();
  // @@protoc_insertion_point(constructor:coprocess.AccessDefinition)
}

void AccessDefinition::InitAsDefaultInstance() {
}

AccessDefinition::AccessDefinition(const AccessDefinition& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  UnsafeMergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:coprocess.AccessDefinition)
}

void AccessDefinition::SharedCtor() {
  api_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  api_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _cached_size_ = 0;
}

AccessDefinition::~AccessDefinition() {
  // @@protoc_insertion_point(destructor:coprocess.AccessDefinition)
  SharedDtor();
}

void AccessDefinition::SharedDtor() {
  api_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  api_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void AccessDefinition::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* AccessDefinition::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return AccessDefinition_descriptor_;
}

const AccessDefinition& AccessDefinition::default_instance() {
  protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  return *internal_default_instance();
}

::google::protobuf::internal::ExplicitlyConstructed<AccessDefinition> AccessDefinition_default_instance_;

AccessDefinition* AccessDefinition::New(::google::protobuf::Arena* arena) const {
  AccessDefinition* n = new AccessDefinition;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void AccessDefinition::Clear() {
// @@protoc_insertion_point(message_clear_start:coprocess.AccessDefinition)
  api_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  api_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  versions_.Clear();
  allowed_urls_.Clear();
}

bool AccessDefinition::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:coprocess.AccessDefinition)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string api_name = 1;
      case 1: {
        if (tag == 10) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_api_name()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->api_name().data(), this->api_name().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.AccessDefinition.api_name"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(18)) goto parse_api_id;
        break;
      }

      // optional string api_id = 2;
      case 2: {
        if (tag == 18) {
         parse_api_id:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_api_id()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->api_id().data(), this->api_id().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.AccessDefinition.api_id"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(26)) goto parse_versions;
        break;
      }

      // repeated string versions = 3;
      case 3: {
        if (tag == 26) {
         parse_versions:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_versions()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->versions(this->versions_size() - 1).data(),
            this->versions(this->versions_size() - 1).length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.AccessDefinition.versions"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(26)) goto parse_versions;
        if (input->ExpectTag(34)) goto parse_allowed_urls;
        break;
      }

      // repeated .coprocess.AccessSpec allowed_urls = 4;
      case 4: {
        if (tag == 34) {
         parse_allowed_urls:
          DO_(input->IncrementRecursionDepth());
         parse_loop_allowed_urls:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth(
                input, add_allowed_urls()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(34)) goto parse_loop_allowed_urls;
        input->UnsafeDecrementRecursionDepth();
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:coprocess.AccessDefinition)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:coprocess.AccessDefinition)
  return false;
#undef DO_
}

void AccessDefinition::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:coprocess.AccessDefinition)
  // optional string api_name = 1;
  if (this->api_name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->api_name().data(), this->api_name().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessDefinition.api_name");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->api_name(), output);
  }

  // optional string api_id = 2;
  if (this->api_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->api_id().data(), this->api_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessDefinition.api_id");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->api_id(), output);
  }

  // repeated string versions = 3;
  for (int i = 0; i < this->versions_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->versions(i).data(), this->versions(i).length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessDefinition.versions");
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->versions(i), output);
  }

  // repeated .coprocess.AccessSpec allowed_urls = 4;
  for (unsigned int i = 0, n = this->allowed_urls_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->allowed_urls(i), output);
  }

  // @@protoc_insertion_point(serialize_end:coprocess.AccessDefinition)
}

::google::protobuf::uint8* AccessDefinition::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:coprocess.AccessDefinition)
  // optional string api_name = 1;
  if (this->api_name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->api_name().data(), this->api_name().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessDefinition.api_name");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->api_name(), target);
  }

  // optional string api_id = 2;
  if (this->api_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->api_id().data(), this->api_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessDefinition.api_id");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->api_id(), target);
  }

  // repeated string versions = 3;
  for (int i = 0; i < this->versions_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->versions(i).data(), this->versions(i).length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.AccessDefinition.versions");
    target = ::google::protobuf::internal::WireFormatLite::
      WriteStringToArray(3, this->versions(i), target);
  }

  // repeated .coprocess.AccessSpec allowed_urls = 4;
  for (unsigned int i = 0, n = this->allowed_urls_size(); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        4, this->allowed_urls(i), false, target);
  }

  // @@protoc_insertion_point(serialize_to_array_end:coprocess.AccessDefinition)
  return target;
}

size_t AccessDefinition::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:coprocess.AccessDefinition)
  size_t total_size = 0;

  // optional string api_name = 1;
  if (this->api_name().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->api_name());
  }

  // optional string api_id = 2;
  if (this->api_id().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->api_id());
  }

  // repeated string versions = 3;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->versions_size());
  for (int i = 0; i < this->versions_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->versions(i));
  }

  // repeated .coprocess.AccessSpec allowed_urls = 4;
  {
    unsigned int count = this->allowed_urls_size();
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->allowed_urls(i));
    }
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AccessDefinition::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:coprocess.AccessDefinition)
  if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__);
  const AccessDefinition* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const AccessDefinition>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:coprocess.AccessDefinition)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:coprocess.AccessDefinition)
    UnsafeMergeFrom(*source);
  }
}

void AccessDefinition::MergeFrom(const AccessDefinition& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:coprocess.AccessDefinition)
  if (GOOGLE_PREDICT_TRUE(&from != this)) {
    UnsafeMergeFrom(from);
  } else {
    MergeFromFail(__LINE__);
  }
}

void AccessDefinition::UnsafeMergeFrom(const AccessDefinition& from) {
  GOOGLE_DCHECK(&from != this);
  versions_.UnsafeMergeFrom(from.versions_);
  allowed_urls_.MergeFrom(from.allowed_urls_);
  if (from.api_name().size() > 0) {

    api_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.api_name_);
  }
  if (from.api_id().size() > 0) {

    api_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.api_id_);
  }
}

void AccessDefinition::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:coprocess.AccessDefinition)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void AccessDefinition::CopyFrom(const AccessDefinition& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:coprocess.AccessDefinition)
  if (&from == this) return;
  Clear();
  UnsafeMergeFrom(from);
}

bool AccessDefinition::IsInitialized() const {

  return true;
}

void AccessDefinition::Swap(AccessDefinition* other) {
  if (other == this) return;
  InternalSwap(other);
}
void AccessDefinition::InternalSwap(AccessDefinition* other) {
  api_name_.Swap(&other->api_name_);
  api_id_.Swap(&other->api_id_);
  versions_.UnsafeArenaSwap(&other->versions_);
  allowed_urls_.UnsafeArenaSwap(&other->allowed_urls_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata AccessDefinition::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = AccessDefinition_descriptor_;
  metadata.reflection = AccessDefinition_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// AccessDefinition

// optional string api_name = 1;
void AccessDefinition::clear_api_name() {
  api_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& AccessDefinition::api_name() const {
  // @@protoc_insertion_point(field_get:coprocess.AccessDefinition.api_name)
  return api_name_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void AccessDefinition::set_api_name(const ::std::string& value) {
  
  api_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.AccessDefinition.api_name)
}
void AccessDefinition::set_api_name(const char* value) {
  
  api_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.AccessDefinition.api_name)
}
void AccessDefinition::set_api_name(const char* value, size_t size) {
  
  api_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.AccessDefinition.api_name)
}
::std::string* AccessDefinition::mutable_api_name() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.AccessDefinition.api_name)
  return api_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* AccessDefinition::release_api_name() {
  // @@protoc_insertion_point(field_release:coprocess.AccessDefinition.api_name)
  
  return api_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void AccessDefinition::set_allocated_api_name(::std::string* api_name) {
  if (api_name != NULL) {
    
  } else {
    
  }
  api_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), api_name);
  // @@protoc_insertion_point(field_set_allocated:coprocess.AccessDefinition.api_name)
}

// optional string api_id = 2;
void AccessDefinition::clear_api_id() {
  api_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& AccessDefinition::api_id() const {
  // @@protoc_insertion_point(field_get:coprocess.AccessDefinition.api_id)
  return api_id_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void AccessDefinition::set_api_id(const ::std::string& value) {
  
  api_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.AccessDefinition.api_id)
}
void AccessDefinition::set_api_id(const char* value) {
  
  api_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.AccessDefinition.api_id)
}
void AccessDefinition::set_api_id(const char* value, size_t size) {
  
  api_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.AccessDefinition.api_id)
}
::std::string* AccessDefinition::mutable_api_id() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.AccessDefinition.api_id)
  return api_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* AccessDefinition::release_api_id() {
  // @@protoc_insertion_point(field_release:coprocess.AccessDefinition.api_id)
  
  return api_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void AccessDefinition::set_allocated_api_id(::std::string* api_id) {
  if (api_id != NULL) {
    
  } else {
    
  }
  api_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), api_id);
  // @@protoc_insertion_point(field_set_allocated:coprocess.AccessDefinition.api_id)
}

// repeated string versions = 3;
int AccessDefinition::versions_size() const {
  return versions_.size();
}
void AccessDefinition::clear_versions() {
  versions_.Clear();
}
const ::std::string& AccessDefinition::versions(int index) const {
  // @@protoc_insertion_point(field_get:coprocess.AccessDefinition.versions)
  return versions_.Get(index);
}
::std::string* AccessDefinition::mutable_versions(int index) {
  // @@protoc_insertion_point(field_mutable:coprocess.AccessDefinition.versions)
  return versions_.Mutable(index);
}
void AccessDefinition::set_versions(int index, const ::std::string& value) {
  // @@protoc_insertion_point(field_set:coprocess.AccessDefinition.versions)
  versions_.Mutable(index)->assign(value);
}
void AccessDefinition::set_versions(int index, const char* value) {
  versions_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:coprocess.AccessDefinition.versions)
}
void AccessDefinition::set_versions(int index, const char* value, size_t size) {
  versions_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:coprocess.AccessDefinition.versions)
}
::std::string* AccessDefinition::add_versions() {
  // @@protoc_insertion_point(field_add_mutable:coprocess.AccessDefinition.versions)
  return versions_.Add();
}
void AccessDefinition::add_versions(const ::std::string& value) {
  versions_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:coprocess.AccessDefinition.versions)
}
void AccessDefinition::add_versions(const char* value) {
  versions_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:coprocess.AccessDefinition.versions)
}
void AccessDefinition::add_versions(const char* value, size_t size) {
  versions_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:coprocess.AccessDefinition.versions)
}
const ::google::protobuf::RepeatedPtrField< ::std::string>&
AccessDefinition::versions() const {
  // @@protoc_insertion_point(field_list:coprocess.AccessDefinition.versions)
  return versions_;
}
::google::protobuf::RepeatedPtrField< ::std::string>*
AccessDefinition::mutable_versions() {
  // @@protoc_insertion_point(field_mutable_list:coprocess.AccessDefinition.versions)
  return &versions_;
}

// repeated .coprocess.AccessSpec allowed_urls = 4;
int AccessDefinition::allowed_urls_size() const {
  return allowed_urls_.size();
}
void AccessDefinition::clear_allowed_urls() {
  allowed_urls_.Clear();
}
const ::coprocess::AccessSpec& AccessDefinition::allowed_urls(int index) const {
  // @@protoc_insertion_point(field_get:coprocess.AccessDefinition.allowed_urls)
  return allowed_urls_.Get(index);
}
::coprocess::AccessSpec* AccessDefinition::mutable_allowed_urls(int index) {
  // @@protoc_insertion_point(field_mutable:coprocess.AccessDefinition.allowed_urls)
  return allowed_urls_.Mutable(index);
}
::coprocess::AccessSpec* AccessDefinition::add_allowed_urls() {
  // @@protoc_insertion_point(field_add:coprocess.AccessDefinition.allowed_urls)
  return allowed_urls_.Add();
}
::google::protobuf::RepeatedPtrField< ::coprocess::AccessSpec >*
AccessDefinition::mutable_allowed_urls() {
  // @@protoc_insertion_point(field_mutable_list:coprocess.AccessDefinition.allowed_urls)
  return &allowed_urls_;
}
const ::google::protobuf::RepeatedPtrField< ::coprocess::AccessSpec >&
AccessDefinition::allowed_urls() const {
  // @@protoc_insertion_point(field_list:coprocess.AccessDefinition.allowed_urls)
  return allowed_urls_;
}

inline const AccessDefinition* AccessDefinition::internal_default_instance() {
  return &AccessDefinition_default_instance_.get();
}
#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int BasicAuthData::kPasswordFieldNumber;
const int BasicAuthData::kHashFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

BasicAuthData::BasicAuthData()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (this != internal_default_instance()) protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  SharedCtor();
  // @@protoc_insertion_point(constructor:coprocess.BasicAuthData)
}

void BasicAuthData::InitAsDefaultInstance() {
}

BasicAuthData::BasicAuthData(const BasicAuthData& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  UnsafeMergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:coprocess.BasicAuthData)
}

void BasicAuthData::SharedCtor() {
  password_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _cached_size_ = 0;
}

BasicAuthData::~BasicAuthData() {
  // @@protoc_insertion_point(destructor:coprocess.BasicAuthData)
  SharedDtor();
}

void BasicAuthData::SharedDtor() {
  password_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void BasicAuthData::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* BasicAuthData::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return BasicAuthData_descriptor_;
}

const BasicAuthData& BasicAuthData::default_instance() {
  protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  return *internal_default_instance();
}

::google::protobuf::internal::ExplicitlyConstructed<BasicAuthData> BasicAuthData_default_instance_;

BasicAuthData* BasicAuthData::New(::google::protobuf::Arena* arena) const {
  BasicAuthData* n = new BasicAuthData;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void BasicAuthData::Clear() {
// @@protoc_insertion_point(message_clear_start:coprocess.BasicAuthData)
  password_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

bool BasicAuthData::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:coprocess.BasicAuthData)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string password = 1;
      case 1: {
        if (tag == 10) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_password()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->password().data(), this->password().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.BasicAuthData.password"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(18)) goto parse_hash;
        break;
      }

      // optional string hash = 2;
      case 2: {
        if (tag == 18) {
         parse_hash:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_hash()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->hash().data(), this->hash().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.BasicAuthData.hash"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:coprocess.BasicAuthData)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:coprocess.BasicAuthData)
  return false;
#undef DO_
}

void BasicAuthData::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:coprocess.BasicAuthData)
  // optional string password = 1;
  if (this->password().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->password().data(), this->password().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.BasicAuthData.password");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->password(), output);
  }

  // optional string hash = 2;
  if (this->hash().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->hash().data(), this->hash().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.BasicAuthData.hash");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->hash(), output);
  }

  // @@protoc_insertion_point(serialize_end:coprocess.BasicAuthData)
}

::google::protobuf::uint8* BasicAuthData::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:coprocess.BasicAuthData)
  // optional string password = 1;
  if (this->password().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->password().data(), this->password().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.BasicAuthData.password");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->password(), target);
  }

  // optional string hash = 2;
  if (this->hash().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->hash().data(), this->hash().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.BasicAuthData.hash");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->hash(), target);
  }

  // @@protoc_insertion_point(serialize_to_array_end:coprocess.BasicAuthData)
  return target;
}

size_t BasicAuthData::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:coprocess.BasicAuthData)
  size_t total_size = 0;

  // optional string password = 1;
  if (this->password().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->password());
  }

  // optional string hash = 2;
  if (this->hash().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->hash());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void BasicAuthData::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:coprocess.BasicAuthData)
  if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__);
  const BasicAuthData* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const BasicAuthData>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:coprocess.BasicAuthData)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:coprocess.BasicAuthData)
    UnsafeMergeFrom(*source);
  }
}

void BasicAuthData::MergeFrom(const BasicAuthData& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:coprocess.BasicAuthData)
  if (GOOGLE_PREDICT_TRUE(&from != this)) {
    UnsafeMergeFrom(from);
  } else {
    MergeFromFail(__LINE__);
  }
}

void BasicAuthData::UnsafeMergeFrom(const BasicAuthData& from) {
  GOOGLE_DCHECK(&from != this);
  if (from.password().size() > 0) {

    password_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.password_);
  }
  if (from.hash().size() > 0) {

    hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.hash_);
  }
}

void BasicAuthData::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:coprocess.BasicAuthData)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void BasicAuthData::CopyFrom(const BasicAuthData& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:coprocess.BasicAuthData)
  if (&from == this) return;
  Clear();
  UnsafeMergeFrom(from);
}

bool BasicAuthData::IsInitialized() const {

  return true;
}

void BasicAuthData::Swap(BasicAuthData* other) {
  if (other == this) return;
  InternalSwap(other);
}
void BasicAuthData::InternalSwap(BasicAuthData* other) {
  password_.Swap(&other->password_);
  hash_.Swap(&other->hash_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata BasicAuthData::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = BasicAuthData_descriptor_;
  metadata.reflection = BasicAuthData_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// BasicAuthData

// optional string password = 1;
void BasicAuthData::clear_password() {
  password_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& BasicAuthData::password() const {
  // @@protoc_insertion_point(field_get:coprocess.BasicAuthData.password)
  return password_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void BasicAuthData::set_password(const ::std::string& value) {
  
  password_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.BasicAuthData.password)
}
void BasicAuthData::set_password(const char* value) {
  
  password_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.BasicAuthData.password)
}
void BasicAuthData::set_password(const char* value, size_t size) {
  
  password_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.BasicAuthData.password)
}
::std::string* BasicAuthData::mutable_password() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.BasicAuthData.password)
  return password_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* BasicAuthData::release_password() {
  // @@protoc_insertion_point(field_release:coprocess.BasicAuthData.password)
  
  return password_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void BasicAuthData::set_allocated_password(::std::string* password) {
  if (password != NULL) {
    
  } else {
    
  }
  password_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), password);
  // @@protoc_insertion_point(field_set_allocated:coprocess.BasicAuthData.password)
}

// optional string hash = 2;
void BasicAuthData::clear_hash() {
  hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& BasicAuthData::hash() const {
  // @@protoc_insertion_point(field_get:coprocess.BasicAuthData.hash)
  return hash_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void BasicAuthData::set_hash(const ::std::string& value) {
  
  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.BasicAuthData.hash)
}
void BasicAuthData::set_hash(const char* value) {
  
  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.BasicAuthData.hash)
}
void BasicAuthData::set_hash(const char* value, size_t size) {
  
  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.BasicAuthData.hash)
}
::std::string* BasicAuthData::mutable_hash() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.BasicAuthData.hash)
  return hash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* BasicAuthData::release_hash() {
  // @@protoc_insertion_point(field_release:coprocess.BasicAuthData.hash)
  
  return hash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void BasicAuthData::set_allocated_hash(::std::string* hash) {
  if (hash != NULL) {
    
  } else {
    
  }
  hash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), hash);
  // @@protoc_insertion_point(field_set_allocated:coprocess.BasicAuthData.hash)
}

inline const BasicAuthData* BasicAuthData::internal_default_instance() {
  return &BasicAuthData_default_instance_.get();
}
#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int JWTData::kSecretFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

JWTData::JWTData()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (this != internal_default_instance()) protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  SharedCtor();
  // @@protoc_insertion_point(constructor:coprocess.JWTData)
}

void JWTData::InitAsDefaultInstance() {
}

JWTData::JWTData(const JWTData& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  UnsafeMergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:coprocess.JWTData)
}

void JWTData::SharedCtor() {
  secret_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _cached_size_ = 0;
}

JWTData::~JWTData() {
  // @@protoc_insertion_point(destructor:coprocess.JWTData)
  SharedDtor();
}

void JWTData::SharedDtor() {
  secret_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void JWTData::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* JWTData::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return JWTData_descriptor_;
}

const JWTData& JWTData::default_instance() {
  protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  return *internal_default_instance();
}

::google::protobuf::internal::ExplicitlyConstructed<JWTData> JWTData_default_instance_;

JWTData* JWTData::New(::google::protobuf::Arena* arena) const {
  JWTData* n = new JWTData;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void JWTData::Clear() {
// @@protoc_insertion_point(message_clear_start:coprocess.JWTData)
  secret_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

bool JWTData::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:coprocess.JWTData)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string secret = 1;
      case 1: {
        if (tag == 10) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_secret()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->secret().data(), this->secret().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.JWTData.secret"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:coprocess.JWTData)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:coprocess.JWTData)
  return false;
#undef DO_
}

void JWTData::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:coprocess.JWTData)
  // optional string secret = 1;
  if (this->secret().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->secret().data(), this->secret().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.JWTData.secret");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->secret(), output);
  }

  // @@protoc_insertion_point(serialize_end:coprocess.JWTData)
}

::google::protobuf::uint8* JWTData::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:coprocess.JWTData)
  // optional string secret = 1;
  if (this->secret().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->secret().data(), this->secret().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.JWTData.secret");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->secret(), target);
  }

  // @@protoc_insertion_point(serialize_to_array_end:coprocess.JWTData)
  return target;
}

size_t JWTData::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:coprocess.JWTData)
  size_t total_size = 0;

  // optional string secret = 1;
  if (this->secret().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->secret());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void JWTData::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:coprocess.JWTData)
  if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__);
  const JWTData* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const JWTData>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:coprocess.JWTData)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:coprocess.JWTData)
    UnsafeMergeFrom(*source);
  }
}

void JWTData::MergeFrom(const JWTData& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:coprocess.JWTData)
  if (GOOGLE_PREDICT_TRUE(&from != this)) {
    UnsafeMergeFrom(from);
  } else {
    MergeFromFail(__LINE__);
  }
}

void JWTData::UnsafeMergeFrom(const JWTData& from) {
  GOOGLE_DCHECK(&from != this);
  if (from.secret().size() > 0) {

    secret_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.secret_);
  }
}

void JWTData::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:coprocess.JWTData)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void JWTData::CopyFrom(const JWTData& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:coprocess.JWTData)
  if (&from == this) return;
  Clear();
  UnsafeMergeFrom(from);
}

bool JWTData::IsInitialized() const {

  return true;
}

void JWTData::Swap(JWTData* other) {
  if (other == this) return;
  InternalSwap(other);
}
void JWTData::InternalSwap(JWTData* other) {
  secret_.Swap(&other->secret_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata JWTData::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = JWTData_descriptor_;
  metadata.reflection = JWTData_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// JWTData

// optional string secret = 1;
void JWTData::clear_secret() {
  secret_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& JWTData::secret() const {
  // @@protoc_insertion_point(field_get:coprocess.JWTData.secret)
  return secret_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void JWTData::set_secret(const ::std::string& value) {
  
  secret_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.JWTData.secret)
}
void JWTData::set_secret(const char* value) {
  
  secret_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.JWTData.secret)
}
void JWTData::set_secret(const char* value, size_t size) {
  
  secret_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.JWTData.secret)
}
::std::string* JWTData::mutable_secret() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.JWTData.secret)
  return secret_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* JWTData::release_secret() {
  // @@protoc_insertion_point(field_release:coprocess.JWTData.secret)
  
  return secret_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void JWTData::set_allocated_secret(::std::string* secret) {
  if (secret != NULL) {
    
  } else {
    
  }
  secret_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), secret);
  // @@protoc_insertion_point(field_set_allocated:coprocess.JWTData.secret)
}

inline const JWTData* JWTData::internal_default_instance() {
  return &JWTData_default_instance_.get();
}
#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int Monitor::kTriggerLimitsFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

Monitor::Monitor()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (this != internal_default_instance()) protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  SharedCtor();
  // @@protoc_insertion_point(constructor:coprocess.Monitor)
}

void Monitor::InitAsDefaultInstance() {
}

Monitor::Monitor(const Monitor& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  UnsafeMergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:coprocess.Monitor)
}

void Monitor::SharedCtor() {
  _cached_size_ = 0;
}

Monitor::~Monitor() {
  // @@protoc_insertion_point(destructor:coprocess.Monitor)
  SharedDtor();
}

void Monitor::SharedDtor() {
}

void Monitor::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* Monitor::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return Monitor_descriptor_;
}

const Monitor& Monitor::default_instance() {
  protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  return *internal_default_instance();
}

::google::protobuf::internal::ExplicitlyConstructed<Monitor> Monitor_default_instance_;

Monitor* Monitor::New(::google::protobuf::Arena* arena) const {
  Monitor* n = new Monitor;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void Monitor::Clear() {
// @@protoc_insertion_point(message_clear_start:coprocess.Monitor)
  trigger_limits_.Clear();
}

bool Monitor::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:coprocess.Monitor)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated double trigger_limits = 1;
      case 1: {
        if (tag == 10) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, this->mutable_trigger_limits())));
        } else if (tag == 9) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 1, 10, input, this->mutable_trigger_limits())));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:coprocess.Monitor)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:coprocess.Monitor)
  return false;
#undef DO_
}

void Monitor::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:coprocess.Monitor)
  // repeated double trigger_limits = 1;
  if (this->trigger_limits_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(_trigger_limits_cached_byte_size_);
  }
  for (int i = 0; i < this->trigger_limits_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteDoubleNoTag(
      this->trigger_limits(i), output);
  }

  // @@protoc_insertion_point(serialize_end:coprocess.Monitor)
}

::google::protobuf::uint8* Monitor::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:coprocess.Monitor)
  // repeated double trigger_limits = 1;
  if (this->trigger_limits_size() > 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
      1,
      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
      target);
    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
      _trigger_limits_cached_byte_size_, target);
  }
  for (int i = 0; i < this->trigger_limits_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteDoubleNoTagToArray(this->trigger_limits(i), target);
  }

  // @@protoc_insertion_point(serialize_to_array_end:coprocess.Monitor)
  return target;
}

size_t Monitor::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:coprocess.Monitor)
  size_t total_size = 0;

  // repeated double trigger_limits = 1;
  {
    size_t data_size = 0;
    unsigned int count = this->trigger_limits_size();
    data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _trigger_limits_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Monitor::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:coprocess.Monitor)
  if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__);
  const Monitor* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const Monitor>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:coprocess.Monitor)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:coprocess.Monitor)
    UnsafeMergeFrom(*source);
  }
}

void Monitor::MergeFrom(const Monitor& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:coprocess.Monitor)
  if (GOOGLE_PREDICT_TRUE(&from != this)) {
    UnsafeMergeFrom(from);
  } else {
    MergeFromFail(__LINE__);
  }
}

void Monitor::UnsafeMergeFrom(const Monitor& from) {
  GOOGLE_DCHECK(&from != this);
  trigger_limits_.UnsafeMergeFrom(from.trigger_limits_);
}

void Monitor::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:coprocess.Monitor)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void Monitor::CopyFrom(const Monitor& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:coprocess.Monitor)
  if (&from == this) return;
  Clear();
  UnsafeMergeFrom(from);
}

bool Monitor::IsInitialized() const {

  return true;
}

void Monitor::Swap(Monitor* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Monitor::InternalSwap(Monitor* other) {
  trigger_limits_.UnsafeArenaSwap(&other->trigger_limits_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata Monitor::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = Monitor_descriptor_;
  metadata.reflection = Monitor_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// Monitor

// repeated double trigger_limits = 1;
int Monitor::trigger_limits_size() const {
  return trigger_limits_.size();
}
void Monitor::clear_trigger_limits() {
  trigger_limits_.Clear();
}
double Monitor::trigger_limits(int index) const {
  // @@protoc_insertion_point(field_get:coprocess.Monitor.trigger_limits)
  return trigger_limits_.Get(index);
}
void Monitor::set_trigger_limits(int index, double value) {
  trigger_limits_.Set(index, value);
  // @@protoc_insertion_point(field_set:coprocess.Monitor.trigger_limits)
}
void Monitor::add_trigger_limits(double value) {
  trigger_limits_.Add(value);
  // @@protoc_insertion_point(field_add:coprocess.Monitor.trigger_limits)
}
const ::google::protobuf::RepeatedField< double >&
Monitor::trigger_limits() const {
  // @@protoc_insertion_point(field_list:coprocess.Monitor.trigger_limits)
  return trigger_limits_;
}
::google::protobuf::RepeatedField< double >*
Monitor::mutable_trigger_limits() {
  // @@protoc_insertion_point(field_mutable_list:coprocess.Monitor.trigger_limits)
  return &trigger_limits_;
}

inline const Monitor* Monitor::internal_default_instance() {
  return &Monitor_default_instance_.get();
}
#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int SessionState::kLastCheckFieldNumber;
const int SessionState::kAllowanceFieldNumber;
const int SessionState::kRateFieldNumber;
const int SessionState::kPerFieldNumber;
const int SessionState::kExpiresFieldNumber;
const int SessionState::kQuotaMaxFieldNumber;
const int SessionState::kQuotaRenewsFieldNumber;
const int SessionState::kQuotaRemainingFieldNumber;
const int SessionState::kQuotaRenewalRateFieldNumber;
const int SessionState::kAccessRightsFieldNumber;
const int SessionState::kOrgIdFieldNumber;
const int SessionState::kOauthClientIdFieldNumber;
const int SessionState::kOauthKeysFieldNumber;
const int SessionState::kBasicAuthDataFieldNumber;
const int SessionState::kJwtDataFieldNumber;
const int SessionState::kHmacEnabledFieldNumber;
const int SessionState::kHmacSecretFieldNumber;
const int SessionState::kIsInactiveFieldNumber;
const int SessionState::kApplyPolicyIdFieldNumber;
const int SessionState::kDataExpiresFieldNumber;
const int SessionState::kMonitorFieldNumber;
const int SessionState::kEnableDetailedRecordingFieldNumber;
const int SessionState::kMetadataFieldNumber;
const int SessionState::kTagsFieldNumber;
const int SessionState::kAliasFieldNumber;
const int SessionState::kLastUpdatedFieldNumber;
const int SessionState::kIdExtractorDeadlineFieldNumber;
const int SessionState::kSessionLifetimeFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

SessionState::SessionState()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (this != internal_default_instance()) protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  SharedCtor();
  // @@protoc_insertion_point(constructor:coprocess.SessionState)
}

void SessionState::InitAsDefaultInstance() {
  basic_auth_data_ = const_cast< ::coprocess::BasicAuthData*>(
      ::coprocess::BasicAuthData::internal_default_instance());
  jwt_data_ = const_cast< ::coprocess::JWTData*>(
      ::coprocess::JWTData::internal_default_instance());
  monitor_ = const_cast< ::coprocess::Monitor*>(
      ::coprocess::Monitor::internal_default_instance());
}

SessionState::SessionState(const SessionState& from)
  : ::google::protobuf::Message(),
    _internal_metadata_(NULL) {
  SharedCtor();
  UnsafeMergeFrom(from);
  // @@protoc_insertion_point(copy_constructor:coprocess.SessionState)
}

void SessionState::SharedCtor() {
  access_rights_.SetAssignDescriptorCallback(
      protobuf_AssignDescriptorsOnce);
  access_rights_.SetEntryDescriptor(
      &::coprocess::SessionState_AccessRightsEntry_descriptor_);
  oauth_keys_.SetAssignDescriptorCallback(
      protobuf_AssignDescriptorsOnce);
  oauth_keys_.SetEntryDescriptor(
      &::coprocess::SessionState_OauthKeysEntry_descriptor_);
  org_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  oauth_client_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  hmac_secret_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  apply_policy_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  metadata_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  alias_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  last_updated_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  basic_auth_data_ = NULL;
  jwt_data_ = NULL;
  monitor_ = NULL;
  ::memset(&last_check_, 0, reinterpret_cast<char*>(&enable_detailed_recording_) -
    reinterpret_cast<char*>(&last_check_) + sizeof(enable_detailed_recording_));
  _cached_size_ = 0;
}

SessionState::~SessionState() {
  // @@protoc_insertion_point(destructor:coprocess.SessionState)
  SharedDtor();
}

void SessionState::SharedDtor() {
  org_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  oauth_client_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  hmac_secret_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  apply_policy_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  metadata_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  alias_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  last_updated_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != &SessionState_default_instance_.get()) {
    delete basic_auth_data_;
    delete jwt_data_;
    delete monitor_;
  }
}

void SessionState::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* SessionState::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return SessionState_descriptor_;
}

const SessionState& SessionState::default_instance() {
  protobuf_InitDefaults_coprocess_5fsession_5fstate_2eproto();
  return *internal_default_instance();
}

::google::protobuf::internal::ExplicitlyConstructed<SessionState> SessionState_default_instance_;

SessionState* SessionState::New(::google::protobuf::Arena* arena) const {
  SessionState* n = new SessionState;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void SessionState::Clear() {
// @@protoc_insertion_point(message_clear_start:coprocess.SessionState)
#if defined(__clang__)
#define ZR_HELPER_(f) \
  _Pragma("clang diagnostic push") \
  _Pragma("clang diagnostic ignored \"-Winvalid-offsetof\"") \
  __builtin_offsetof(SessionState, f) \
  _Pragma("clang diagnostic pop")
#else
#define ZR_HELPER_(f) reinterpret_cast<char*>(\
  &reinterpret_cast<SessionState*>(16)->f)
#endif

#define ZR_(first, last) do {\
  ::memset(&(first), 0,\
           ZR_HELPER_(last) - ZR_HELPER_(first) + sizeof(last));\
} while (0)

  ZR_(last_check_, quota_remaining_);
  quota_renewal_rate_ = GOOGLE_LONGLONG(0);
  org_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  oauth_client_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (GetArenaNoVirtual() == NULL && basic_auth_data_ != NULL) delete basic_auth_data_;
  basic_auth_data_ = NULL;
  if (GetArenaNoVirtual() == NULL && jwt_data_ != NULL) delete jwt_data_;
  jwt_data_ = NULL;
  hmac_enabled_ = false;
  ZR_(is_inactive_, enable_detailed_recording_);
  hmac_secret_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  apply_policy_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  data_expires_ = GOOGLE_LONGLONG(0);
  if (GetArenaNoVirtual() == NULL && monitor_ != NULL) delete monitor_;
  monitor_ = NULL;
  metadata_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ZR_(id_extractor_deadline_, session_lifetime_);
  alias_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  last_updated_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());

#undef ZR_HELPER_
#undef ZR_

  access_rights_.Clear();
  oauth_keys_.Clear();
  tags_.Clear();
}

bool SessionState::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:coprocess.SessionState)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(16383);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional int64 last_check = 1;
      case 1: {
        if (tag == 8) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &last_check_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(17)) goto parse_allowance;
        break;
      }

      // optional double allowance = 2;
      case 2: {
        if (tag == 17) {
         parse_allowance:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &allowance_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(25)) goto parse_rate;
        break;
      }

      // optional double rate = 3;
      case 3: {
        if (tag == 25) {
         parse_rate:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &rate_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(33)) goto parse_per;
        break;
      }

      // optional double per = 4;
      case 4: {
        if (tag == 33) {
         parse_per:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &per_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(40)) goto parse_expires;
        break;
      }

      // optional int64 expires = 5;
      case 5: {
        if (tag == 40) {
         parse_expires:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &expires_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(48)) goto parse_quota_max;
        break;
      }

      // optional int64 quota_max = 6;
      case 6: {
        if (tag == 48) {
         parse_quota_max:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &quota_max_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(56)) goto parse_quota_renews;
        break;
      }

      // optional int64 quota_renews = 7;
      case 7: {
        if (tag == 56) {
         parse_quota_renews:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &quota_renews_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(64)) goto parse_quota_remaining;
        break;
      }

      // optional int64 quota_remaining = 8;
      case 8: {
        if (tag == 64) {
         parse_quota_remaining:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &quota_remaining_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(72)) goto parse_quota_renewal_rate;
        break;
      }

      // optional int64 quota_renewal_rate = 9;
      case 9: {
        if (tag == 72) {
         parse_quota_renewal_rate:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &quota_renewal_rate_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(82)) goto parse_access_rights;
        break;
      }

      // map<string, .coprocess.AccessDefinition> access_rights = 10;
      case 10: {
        if (tag == 82) {
         parse_access_rights:
          DO_(input->IncrementRecursionDepth());
         parse_loop_access_rights:
          SessionState_AccessRightsEntry::Parser< ::google::protobuf::internal::MapField<
              ::std::string, ::coprocess::AccessDefinition,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition > > parser(&access_rights_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), parser.key().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.AccessRightsEntry.key"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(82)) goto parse_loop_access_rights;
        input->UnsafeDecrementRecursionDepth();
        if (input->ExpectTag(90)) goto parse_org_id;
        break;
      }

      // optional string org_id = 11;
      case 11: {
        if (tag == 90) {
         parse_org_id:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_org_id()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->org_id().data(), this->org_id().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.org_id"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(98)) goto parse_oauth_client_id;
        break;
      }

      // optional string oauth_client_id = 12;
      case 12: {
        if (tag == 98) {
         parse_oauth_client_id:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_oauth_client_id()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->oauth_client_id().data(), this->oauth_client_id().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.oauth_client_id"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(106)) goto parse_oauth_keys;
        break;
      }

      // map<string, string> oauth_keys = 13;
      case 13: {
        if (tag == 106) {
         parse_oauth_keys:
          DO_(input->IncrementRecursionDepth());
         parse_loop_oauth_keys:
          SessionState_OauthKeysEntry::Parser< ::google::protobuf::internal::MapField<
              ::std::string, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&oauth_keys_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), parser.key().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.OauthKeysEntry.key"));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), parser.value().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.OauthKeysEntry.value"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(106)) goto parse_loop_oauth_keys;
        input->UnsafeDecrementRecursionDepth();
        if (input->ExpectTag(114)) goto parse_basic_auth_data;
        break;
      }

      // optional .coprocess.BasicAuthData basic_auth_data = 14;
      case 14: {
        if (tag == 114) {
         parse_basic_auth_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_basic_auth_data()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(122)) goto parse_jwt_data;
        break;
      }

      // optional .coprocess.JWTData jwt_data = 15;
      case 15: {
        if (tag == 122) {
         parse_jwt_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_jwt_data()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(128)) goto parse_hmac_enabled;
        break;
      }

      // optional bool hmac_enabled = 16;
      case 16: {
        if (tag == 128) {
         parse_hmac_enabled:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &hmac_enabled_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(138)) goto parse_hmac_secret;
        break;
      }

      // optional string hmac_secret = 17;
      case 17: {
        if (tag == 138) {
         parse_hmac_secret:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_hmac_secret()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->hmac_secret().data(), this->hmac_secret().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.hmac_secret"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(144)) goto parse_is_inactive;
        break;
      }

      // optional bool is_inactive = 18;
      case 18: {
        if (tag == 144) {
         parse_is_inactive:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_inactive_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(154)) goto parse_apply_policy_id;
        break;
      }

      // optional string apply_policy_id = 19;
      case 19: {
        if (tag == 154) {
         parse_apply_policy_id:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_apply_policy_id()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->apply_policy_id().data(), this->apply_policy_id().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.apply_policy_id"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(160)) goto parse_data_expires;
        break;
      }

      // optional int64 data_expires = 20;
      case 20: {
        if (tag == 160) {
         parse_data_expires:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &data_expires_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(170)) goto parse_monitor;
        break;
      }

      // optional .coprocess.Monitor monitor = 21;
      case 21: {
        if (tag == 170) {
         parse_monitor:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monitor()));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(176)) goto parse_enable_detailed_recording;
        break;
      }

      // optional bool enable_detailed_recording = 22;
      case 22: {
        if (tag == 176) {
         parse_enable_detailed_recording:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_detailed_recording_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(186)) goto parse_metadata;
        break;
      }

      // optional string metadata = 23;
      case 23: {
        if (tag == 186) {
         parse_metadata:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_metadata()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->metadata().data(), this->metadata().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.metadata"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(194)) goto parse_tags;
        break;
      }

      // repeated string tags = 24;
      case 24: {
        if (tag == 194) {
         parse_tags:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_tags()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->tags(this->tags_size() - 1).data(),
            this->tags(this->tags_size() - 1).length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.tags"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(194)) goto parse_tags;
        if (input->ExpectTag(202)) goto parse_alias;
        break;
      }

      // optional string alias = 25;
      case 25: {
        if (tag == 202) {
         parse_alias:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_alias()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->alias().data(), this->alias().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.alias"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(210)) goto parse_last_updated;
        break;
      }

      // optional string last_updated = 26;
      case 26: {
        if (tag == 210) {
         parse_last_updated:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_last_updated()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->last_updated().data(), this->last_updated().length(),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "coprocess.SessionState.last_updated"));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(216)) goto parse_id_extractor_deadline;
        break;
      }

      // optional int64 id_extractor_deadline = 27;
      case 27: {
        if (tag == 216) {
         parse_id_extractor_deadline:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &id_extractor_deadline_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectTag(224)) goto parse_session_lifetime;
        break;
      }

      // optional int64 session_lifetime = 28;
      case 28: {
        if (tag == 224) {
         parse_session_lifetime:

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &session_lifetime_)));
        } else {
          goto handle_unusual;
        }
        if (input->ExpectAtEnd()) goto success;
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:coprocess.SessionState)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:coprocess.SessionState)
  return false;
#undef DO_
}

void SessionState::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:coprocess.SessionState)
  // optional int64 last_check = 1;
  if (this->last_check() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->last_check(), output);
  }

  // optional double allowance = 2;
  if (this->allowance() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->allowance(), output);
  }

  // optional double rate = 3;
  if (this->rate() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(3, this->rate(), output);
  }

  // optional double per = 4;
  if (this->per() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(4, this->per(), output);
  }

  // optional int64 expires = 5;
  if (this->expires() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->expires(), output);
  }

  // optional int64 quota_max = 6;
  if (this->quota_max() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(6, this->quota_max(), output);
  }

  // optional int64 quota_renews = 7;
  if (this->quota_renews() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(7, this->quota_renews(), output);
  }

  // optional int64 quota_remaining = 8;
  if (this->quota_remaining() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(8, this->quota_remaining(), output);
  }

  // optional int64 quota_renewal_rate = 9;
  if (this->quota_renewal_rate() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(9, this->quota_renewal_rate(), output);
  }

  // map<string, .coprocess.AccessDefinition> access_rights = 10;
  if (!this->access_rights().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), p->first.length(),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "coprocess.SessionState.AccessRightsEntry.key");
      }
    };

    if (output->IsSerializationDeterminstic() &&
        this->access_rights().size() > 1) {
      ::google::protobuf::scoped_array<SortItem> items(
          new SortItem[this->access_rights().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::const_iterator
          it = this->access_rights().begin();
          it != this->access_rights().end(); ++it, ++n) {
        items[n] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[n], Less());
      ::google::protobuf::scoped_ptr<SessionState_AccessRightsEntry> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(access_rights_.NewEntryWrapper(
            items[i]->first, items[i]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
        Utf8Check::Check(items[i]);
      }
    } else {
      ::google::protobuf::scoped_ptr<SessionState_AccessRightsEntry> entry;
      for (::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::const_iterator
          it = this->access_rights().begin();
          it != this->access_rights().end(); ++it) {
        entry.reset(access_rights_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
        Utf8Check::Check(&*it);
      }
    }
  }

  // optional string org_id = 11;
  if (this->org_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->org_id().data(), this->org_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.org_id");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      11, this->org_id(), output);
  }

  // optional string oauth_client_id = 12;
  if (this->oauth_client_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->oauth_client_id().data(), this->oauth_client_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.oauth_client_id");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      12, this->oauth_client_id(), output);
  }

  // map<string, string> oauth_keys = 13;
  if (!this->oauth_keys().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), p->first.length(),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "coprocess.SessionState.OauthKeysEntry.key");
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), p->second.length(),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "coprocess.SessionState.OauthKeysEntry.value");
      }
    };

    if (output->IsSerializationDeterminstic() &&
        this->oauth_keys().size() > 1) {
      ::google::protobuf::scoped_array<SortItem> items(
          new SortItem[this->oauth_keys().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->oauth_keys().begin();
          it != this->oauth_keys().end(); ++it, ++n) {
        items[n] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[n], Less());
      ::google::protobuf::scoped_ptr<SessionState_OauthKeysEntry> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(oauth_keys_.NewEntryWrapper(
            items[i]->first, items[i]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            13, *entry, output);
        Utf8Check::Check(items[i]);
      }
    } else {
      ::google::protobuf::scoped_ptr<SessionState_OauthKeysEntry> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->oauth_keys().begin();
          it != this->oauth_keys().end(); ++it) {
        entry.reset(oauth_keys_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            13, *entry, output);
        Utf8Check::Check(&*it);
      }
    }
  }

  // optional .coprocess.BasicAuthData basic_auth_data = 14;
  if (this->has_basic_auth_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      14, *this->basic_auth_data_, output);
  }

  // optional .coprocess.JWTData jwt_data = 15;
  if (this->has_jwt_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      15, *this->jwt_data_, output);
  }

  // optional bool hmac_enabled = 16;
  if (this->hmac_enabled() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->hmac_enabled(), output);
  }

  // optional string hmac_secret = 17;
  if (this->hmac_secret().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->hmac_secret().data(), this->hmac_secret().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.hmac_secret");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      17, this->hmac_secret(), output);
  }

  // optional bool is_inactive = 18;
  if (this->is_inactive() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(18, this->is_inactive(), output);
  }

  // optional string apply_policy_id = 19;
  if (this->apply_policy_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->apply_policy_id().data(), this->apply_policy_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.apply_policy_id");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      19, this->apply_policy_id(), output);
  }

  // optional int64 data_expires = 20;
  if (this->data_expires() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(20, this->data_expires(), output);
  }

  // optional .coprocess.Monitor monitor = 21;
  if (this->has_monitor()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      21, *this->monitor_, output);
  }

  // optional bool enable_detailed_recording = 22;
  if (this->enable_detailed_recording() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(22, this->enable_detailed_recording(), output);
  }

  // optional string metadata = 23;
  if (this->metadata().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->metadata().data(), this->metadata().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.metadata");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      23, this->metadata(), output);
  }

  // repeated string tags = 24;
  for (int i = 0; i < this->tags_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->tags(i).data(), this->tags(i).length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.tags");
    ::google::protobuf::internal::WireFormatLite::WriteString(
      24, this->tags(i), output);
  }

  // optional string alias = 25;
  if (this->alias().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->alias().data(), this->alias().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.alias");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      25, this->alias(), output);
  }

  // optional string last_updated = 26;
  if (this->last_updated().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->last_updated().data(), this->last_updated().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.last_updated");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      26, this->last_updated(), output);
  }

  // optional int64 id_extractor_deadline = 27;
  if (this->id_extractor_deadline() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(27, this->id_extractor_deadline(), output);
  }

  // optional int64 session_lifetime = 28;
  if (this->session_lifetime() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(28, this->session_lifetime(), output);
  }

  // @@protoc_insertion_point(serialize_end:coprocess.SessionState)
}

::google::protobuf::uint8* SessionState::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:coprocess.SessionState)
  // optional int64 last_check = 1;
  if (this->last_check() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->last_check(), target);
  }

  // optional double allowance = 2;
  if (this->allowance() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(2, this->allowance(), target);
  }

  // optional double rate = 3;
  if (this->rate() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(3, this->rate(), target);
  }

  // optional double per = 4;
  if (this->per() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(4, this->per(), target);
  }

  // optional int64 expires = 5;
  if (this->expires() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->expires(), target);
  }

  // optional int64 quota_max = 6;
  if (this->quota_max() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(6, this->quota_max(), target);
  }

  // optional int64 quota_renews = 7;
  if (this->quota_renews() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(7, this->quota_renews(), target);
  }

  // optional int64 quota_remaining = 8;
  if (this->quota_remaining() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(8, this->quota_remaining(), target);
  }

  // optional int64 quota_renewal_rate = 9;
  if (this->quota_renewal_rate() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(9, this->quota_renewal_rate(), target);
  }

  // map<string, .coprocess.AccessDefinition> access_rights = 10;
  if (!this->access_rights().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), p->first.length(),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "coprocess.SessionState.AccessRightsEntry.key");
      }
    };

    if (deterministic &&
        this->access_rights().size() > 1) {
      ::google::protobuf::scoped_array<SortItem> items(
          new SortItem[this->access_rights().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::const_iterator
          it = this->access_rights().begin();
          it != this->access_rights().end(); ++it, ++n) {
        items[n] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[n], Less());
      ::google::protobuf::scoped_ptr<SessionState_AccessRightsEntry> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(access_rights_.NewEntryWrapper(
            items[i]->first, items[i]->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
        Utf8Check::Check(items[i]);
      }
    } else {
      ::google::protobuf::scoped_ptr<SessionState_AccessRightsEntry> entry;
      for (::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::const_iterator
          it = this->access_rights().begin();
          it != this->access_rights().end(); ++it) {
        entry.reset(access_rights_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
        Utf8Check::Check(&*it);
      }
    }
  }

  // optional string org_id = 11;
  if (this->org_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->org_id().data(), this->org_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.org_id");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        11, this->org_id(), target);
  }

  // optional string oauth_client_id = 12;
  if (this->oauth_client_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->oauth_client_id().data(), this->oauth_client_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.oauth_client_id");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        12, this->oauth_client_id(), target);
  }

  // map<string, string> oauth_keys = 13;
  if (!this->oauth_keys().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), p->first.length(),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "coprocess.SessionState.OauthKeysEntry.key");
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), p->second.length(),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "coprocess.SessionState.OauthKeysEntry.value");
      }
    };

    if (deterministic &&
        this->oauth_keys().size() > 1) {
      ::google::protobuf::scoped_array<SortItem> items(
          new SortItem[this->oauth_keys().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->oauth_keys().begin();
          it != this->oauth_keys().end(); ++it, ++n) {
        items[n] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[n], Less());
      ::google::protobuf::scoped_ptr<SessionState_OauthKeysEntry> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(oauth_keys_.NewEntryWrapper(
            items[i]->first, items[i]->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       13, *entry, deterministic, target);
;
        Utf8Check::Check(items[i]);
      }
    } else {
      ::google::protobuf::scoped_ptr<SessionState_OauthKeysEntry> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->oauth_keys().begin();
          it != this->oauth_keys().end(); ++it) {
        entry.reset(oauth_keys_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       13, *entry, deterministic, target);
;
        Utf8Check::Check(&*it);
      }
    }
  }

  // optional .coprocess.BasicAuthData basic_auth_data = 14;
  if (this->has_basic_auth_data()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        14, *this->basic_auth_data_, false, target);
  }

  // optional .coprocess.JWTData jwt_data = 15;
  if (this->has_jwt_data()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        15, *this->jwt_data_, false, target);
  }

  // optional bool hmac_enabled = 16;
  if (this->hmac_enabled() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->hmac_enabled(), target);
  }

  // optional string hmac_secret = 17;
  if (this->hmac_secret().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->hmac_secret().data(), this->hmac_secret().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.hmac_secret");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        17, this->hmac_secret(), target);
  }

  // optional bool is_inactive = 18;
  if (this->is_inactive() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(18, this->is_inactive(), target);
  }

  // optional string apply_policy_id = 19;
  if (this->apply_policy_id().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->apply_policy_id().data(), this->apply_policy_id().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.apply_policy_id");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        19, this->apply_policy_id(), target);
  }

  // optional int64 data_expires = 20;
  if (this->data_expires() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(20, this->data_expires(), target);
  }

  // optional .coprocess.Monitor monitor = 21;
  if (this->has_monitor()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        21, *this->monitor_, false, target);
  }

  // optional bool enable_detailed_recording = 22;
  if (this->enable_detailed_recording() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(22, this->enable_detailed_recording(), target);
  }

  // optional string metadata = 23;
  if (this->metadata().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->metadata().data(), this->metadata().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.metadata");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        23, this->metadata(), target);
  }

  // repeated string tags = 24;
  for (int i = 0; i < this->tags_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->tags(i).data(), this->tags(i).length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.tags");
    target = ::google::protobuf::internal::WireFormatLite::
      WriteStringToArray(24, this->tags(i), target);
  }

  // optional string alias = 25;
  if (this->alias().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->alias().data(), this->alias().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.alias");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        25, this->alias(), target);
  }

  // optional string last_updated = 26;
  if (this->last_updated().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->last_updated().data(), this->last_updated().length(),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "coprocess.SessionState.last_updated");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        26, this->last_updated(), target);
  }

  // optional int64 id_extractor_deadline = 27;
  if (this->id_extractor_deadline() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(27, this->id_extractor_deadline(), target);
  }

  // optional int64 session_lifetime = 28;
  if (this->session_lifetime() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(28, this->session_lifetime(), target);
  }

  // @@protoc_insertion_point(serialize_to_array_end:coprocess.SessionState)
  return target;
}

size_t SessionState::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:coprocess.SessionState)
  size_t total_size = 0;

  // optional int64 last_check = 1;
  if (this->last_check() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->last_check());
  }

  // optional double allowance = 2;
  if (this->allowance() != 0) {
    total_size += 1 + 8;
  }

  // optional double rate = 3;
  if (this->rate() != 0) {
    total_size += 1 + 8;
  }

  // optional double per = 4;
  if (this->per() != 0) {
    total_size += 1 + 8;
  }

  // optional int64 expires = 5;
  if (this->expires() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->expires());
  }

  // optional int64 quota_max = 6;
  if (this->quota_max() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->quota_max());
  }

  // optional int64 quota_renews = 7;
  if (this->quota_renews() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->quota_renews());
  }

  // optional int64 quota_remaining = 8;
  if (this->quota_remaining() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->quota_remaining());
  }

  // optional int64 quota_renewal_rate = 9;
  if (this->quota_renewal_rate() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->quota_renewal_rate());
  }

  // optional string org_id = 11;
  if (this->org_id().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->org_id());
  }

  // optional string oauth_client_id = 12;
  if (this->oauth_client_id().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->oauth_client_id());
  }

  // optional .coprocess.BasicAuthData basic_auth_data = 14;
  if (this->has_basic_auth_data()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        *this->basic_auth_data_);
  }

  // optional .coprocess.JWTData jwt_data = 15;
  if (this->has_jwt_data()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        *this->jwt_data_);
  }

  // optional bool hmac_enabled = 16;
  if (this->hmac_enabled() != 0) {
    total_size += 2 + 1;
  }

  // optional string hmac_secret = 17;
  if (this->hmac_secret().size() > 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->hmac_secret());
  }

  // optional bool is_inactive = 18;
  if (this->is_inactive() != 0) {
    total_size += 2 + 1;
  }

  // optional string apply_policy_id = 19;
  if (this->apply_policy_id().size() > 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->apply_policy_id());
  }

  // optional int64 data_expires = 20;
  if (this->data_expires() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->data_expires());
  }

  // optional .coprocess.Monitor monitor = 21;
  if (this->has_monitor()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        *this->monitor_);
  }

  // optional bool enable_detailed_recording = 22;
  if (this->enable_detailed_recording() != 0) {
    total_size += 2 + 1;
  }

  // optional string metadata = 23;
  if (this->metadata().size() > 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->metadata());
  }

  // optional string alias = 25;
  if (this->alias().size() > 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->alias());
  }

  // optional string last_updated = 26;
  if (this->last_updated().size() > 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->last_updated());
  }

  // optional int64 id_extractor_deadline = 27;
  if (this->id_extractor_deadline() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->id_extractor_deadline());
  }

  // optional int64 session_lifetime = 28;
  if (this->session_lifetime() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->session_lifetime());
  }

  // map<string, .coprocess.AccessDefinition> access_rights = 10;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->access_rights_size());
  {
    ::google::protobuf::scoped_ptr<SessionState_AccessRightsEntry> entry;
    for (::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >::const_iterator
        it = this->access_rights().begin();
        it != this->access_rights().end(); ++it) {
      entry.reset(access_rights_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<string, string> oauth_keys = 13;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->oauth_keys_size());
  {
    ::google::protobuf::scoped_ptr<SessionState_OauthKeysEntry> entry;
    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
        it = this->oauth_keys().begin();
        it != this->oauth_keys().end(); ++it) {
      entry.reset(oauth_keys_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // repeated string tags = 24;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->tags_size());
  for (int i = 0; i < this->tags_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->tags(i));
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SessionState::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:coprocess.SessionState)
  if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__);
  const SessionState* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const SessionState>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:coprocess.SessionState)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:coprocess.SessionState)
    UnsafeMergeFrom(*source);
  }
}

void SessionState::MergeFrom(const SessionState& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:coprocess.SessionState)
  if (GOOGLE_PREDICT_TRUE(&from != this)) {
    UnsafeMergeFrom(from);
  } else {
    MergeFromFail(__LINE__);
  }
}

void SessionState::UnsafeMergeFrom(const SessionState& from) {
  GOOGLE_DCHECK(&from != this);
  access_rights_.MergeFrom(from.access_rights_);
  oauth_keys_.MergeFrom(from.oauth_keys_);
  tags_.UnsafeMergeFrom(from.tags_);
  if (from.last_check() != 0) {
    set_last_check(from.last_check());
  }
  if (from.allowance() != 0) {
    set_allowance(from.allowance());
  }
  if (from.rate() != 0) {
    set_rate(from.rate());
  }
  if (from.per() != 0) {
    set_per(from.per());
  }
  if (from.expires() != 0) {
    set_expires(from.expires());
  }
  if (from.quota_max() != 0) {
    set_quota_max(from.quota_max());
  }
  if (from.quota_renews() != 0) {
    set_quota_renews(from.quota_renews());
  }
  if (from.quota_remaining() != 0) {
    set_quota_remaining(from.quota_remaining());
  }
  if (from.quota_renewal_rate() != 0) {
    set_quota_renewal_rate(from.quota_renewal_rate());
  }
  if (from.org_id().size() > 0) {

    org_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.org_id_);
  }
  if (from.oauth_client_id().size() > 0) {

    oauth_client_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.oauth_client_id_);
  }
  if (from.has_basic_auth_data()) {
    mutable_basic_auth_data()->::coprocess::BasicAuthData::MergeFrom(from.basic_auth_data());
  }
  if (from.has_jwt_data()) {
    mutable_jwt_data()->::coprocess::JWTData::MergeFrom(from.jwt_data());
  }
  if (from.hmac_enabled() != 0) {
    set_hmac_enabled(from.hmac_enabled());
  }
  if (from.hmac_secret().size() > 0) {

    hmac_secret_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.hmac_secret_);
  }
  if (from.is_inactive() != 0) {
    set_is_inactive(from.is_inactive());
  }
  if (from.apply_policy_id().size() > 0) {

    apply_policy_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.apply_policy_id_);
  }
  if (from.data_expires() != 0) {
    set_data_expires(from.data_expires());
  }
  if (from.has_monitor()) {
    mutable_monitor()->::coprocess::Monitor::MergeFrom(from.monitor());
  }
  if (from.enable_detailed_recording() != 0) {
    set_enable_detailed_recording(from.enable_detailed_recording());
  }
  if (from.metadata().size() > 0) {

    metadata_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.metadata_);
  }
  if (from.alias().size() > 0) {

    alias_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.alias_);
  }
  if (from.last_updated().size() > 0) {

    last_updated_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.last_updated_);
  }
  if (from.id_extractor_deadline() != 0) {
    set_id_extractor_deadline(from.id_extractor_deadline());
  }
  if (from.session_lifetime() != 0) {
    set_session_lifetime(from.session_lifetime());
  }
}

void SessionState::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:coprocess.SessionState)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void SessionState::CopyFrom(const SessionState& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:coprocess.SessionState)
  if (&from == this) return;
  Clear();
  UnsafeMergeFrom(from);
}

bool SessionState::IsInitialized() const {

  return true;
}

void SessionState::Swap(SessionState* other) {
  if (other == this) return;
  InternalSwap(other);
}
void SessionState::InternalSwap(SessionState* other) {
  std::swap(last_check_, other->last_check_);
  std::swap(allowance_, other->allowance_);
  std::swap(rate_, other->rate_);
  std::swap(per_, other->per_);
  std::swap(expires_, other->expires_);
  std::swap(quota_max_, other->quota_max_);
  std::swap(quota_renews_, other->quota_renews_);
  std::swap(quota_remaining_, other->quota_remaining_);
  std::swap(quota_renewal_rate_, other->quota_renewal_rate_);
  access_rights_.Swap(&other->access_rights_);
  org_id_.Swap(&other->org_id_);
  oauth_client_id_.Swap(&other->oauth_client_id_);
  oauth_keys_.Swap(&other->oauth_keys_);
  std::swap(basic_auth_data_, other->basic_auth_data_);
  std::swap(jwt_data_, other->jwt_data_);
  std::swap(hmac_enabled_, other->hmac_enabled_);
  hmac_secret_.Swap(&other->hmac_secret_);
  std::swap(is_inactive_, other->is_inactive_);
  apply_policy_id_.Swap(&other->apply_policy_id_);
  std::swap(data_expires_, other->data_expires_);
  std::swap(monitor_, other->monitor_);
  std::swap(enable_detailed_recording_, other->enable_detailed_recording_);
  metadata_.Swap(&other->metadata_);
  tags_.UnsafeArenaSwap(&other->tags_);
  alias_.Swap(&other->alias_);
  last_updated_.Swap(&other->last_updated_);
  std::swap(id_extractor_deadline_, other->id_extractor_deadline_);
  std::swap(session_lifetime_, other->session_lifetime_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  std::swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata SessionState::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = SessionState_descriptor_;
  metadata.reflection = SessionState_reflection_;
  return metadata;
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// SessionState

// optional int64 last_check = 1;
void SessionState::clear_last_check() {
  last_check_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::last_check() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.last_check)
  return last_check_;
}
void SessionState::set_last_check(::google::protobuf::int64 value) {
  
  last_check_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.last_check)
}

// optional double allowance = 2;
void SessionState::clear_allowance() {
  allowance_ = 0;
}
double SessionState::allowance() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.allowance)
  return allowance_;
}
void SessionState::set_allowance(double value) {
  
  allowance_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.allowance)
}

// optional double rate = 3;
void SessionState::clear_rate() {
  rate_ = 0;
}
double SessionState::rate() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.rate)
  return rate_;
}
void SessionState::set_rate(double value) {
  
  rate_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.rate)
}

// optional double per = 4;
void SessionState::clear_per() {
  per_ = 0;
}
double SessionState::per() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.per)
  return per_;
}
void SessionState::set_per(double value) {
  
  per_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.per)
}

// optional int64 expires = 5;
void SessionState::clear_expires() {
  expires_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::expires() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.expires)
  return expires_;
}
void SessionState::set_expires(::google::protobuf::int64 value) {
  
  expires_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.expires)
}

// optional int64 quota_max = 6;
void SessionState::clear_quota_max() {
  quota_max_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::quota_max() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.quota_max)
  return quota_max_;
}
void SessionState::set_quota_max(::google::protobuf::int64 value) {
  
  quota_max_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.quota_max)
}

// optional int64 quota_renews = 7;
void SessionState::clear_quota_renews() {
  quota_renews_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::quota_renews() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.quota_renews)
  return quota_renews_;
}
void SessionState::set_quota_renews(::google::protobuf::int64 value) {
  
  quota_renews_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.quota_renews)
}

// optional int64 quota_remaining = 8;
void SessionState::clear_quota_remaining() {
  quota_remaining_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::quota_remaining() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.quota_remaining)
  return quota_remaining_;
}
void SessionState::set_quota_remaining(::google::protobuf::int64 value) {
  
  quota_remaining_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.quota_remaining)
}

// optional int64 quota_renewal_rate = 9;
void SessionState::clear_quota_renewal_rate() {
  quota_renewal_rate_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::quota_renewal_rate() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.quota_renewal_rate)
  return quota_renewal_rate_;
}
void SessionState::set_quota_renewal_rate(::google::protobuf::int64 value) {
  
  quota_renewal_rate_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.quota_renewal_rate)
}

// map<string, .coprocess.AccessDefinition> access_rights = 10;
int SessionState::access_rights_size() const {
  return access_rights_.size();
}
void SessionState::clear_access_rights() {
  access_rights_.Clear();
}
 const ::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >&
SessionState::access_rights() const {
  // @@protoc_insertion_point(field_map:coprocess.SessionState.access_rights)
  return access_rights_.GetMap();
}
 ::google::protobuf::Map< ::std::string, ::coprocess::AccessDefinition >*
SessionState::mutable_access_rights() {
  // @@protoc_insertion_point(field_mutable_map:coprocess.SessionState.access_rights)
  return access_rights_.MutableMap();
}

// optional string org_id = 11;
void SessionState::clear_org_id() {
  org_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SessionState::org_id() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.org_id)
  return org_id_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_org_id(const ::std::string& value) {
  
  org_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.SessionState.org_id)
}
void SessionState::set_org_id(const char* value) {
  
  org_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.org_id)
}
void SessionState::set_org_id(const char* value, size_t size) {
  
  org_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.org_id)
}
::std::string* SessionState::mutable_org_id() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.org_id)
  return org_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SessionState::release_org_id() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.org_id)
  
  return org_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_allocated_org_id(::std::string* org_id) {
  if (org_id != NULL) {
    
  } else {
    
  }
  org_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), org_id);
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.org_id)
}

// optional string oauth_client_id = 12;
void SessionState::clear_oauth_client_id() {
  oauth_client_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SessionState::oauth_client_id() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.oauth_client_id)
  return oauth_client_id_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_oauth_client_id(const ::std::string& value) {
  
  oauth_client_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.SessionState.oauth_client_id)
}
void SessionState::set_oauth_client_id(const char* value) {
  
  oauth_client_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.oauth_client_id)
}
void SessionState::set_oauth_client_id(const char* value, size_t size) {
  
  oauth_client_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.oauth_client_id)
}
::std::string* SessionState::mutable_oauth_client_id() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.oauth_client_id)
  return oauth_client_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SessionState::release_oauth_client_id() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.oauth_client_id)
  
  return oauth_client_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_allocated_oauth_client_id(::std::string* oauth_client_id) {
  if (oauth_client_id != NULL) {
    
  } else {
    
  }
  oauth_client_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), oauth_client_id);
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.oauth_client_id)
}

// map<string, string> oauth_keys = 13;
int SessionState::oauth_keys_size() const {
  return oauth_keys_.size();
}
void SessionState::clear_oauth_keys() {
  oauth_keys_.Clear();
}
 const ::google::protobuf::Map< ::std::string, ::std::string >&
SessionState::oauth_keys() const {
  // @@protoc_insertion_point(field_map:coprocess.SessionState.oauth_keys)
  return oauth_keys_.GetMap();
}
 ::google::protobuf::Map< ::std::string, ::std::string >*
SessionState::mutable_oauth_keys() {
  // @@protoc_insertion_point(field_mutable_map:coprocess.SessionState.oauth_keys)
  return oauth_keys_.MutableMap();
}

// optional .coprocess.BasicAuthData basic_auth_data = 14;
bool SessionState::has_basic_auth_data() const {
  return this != internal_default_instance() && basic_auth_data_ != NULL;
}
void SessionState::clear_basic_auth_data() {
  if (GetArenaNoVirtual() == NULL && basic_auth_data_ != NULL) delete basic_auth_data_;
  basic_auth_data_ = NULL;
}
const ::coprocess::BasicAuthData& SessionState::basic_auth_data() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.basic_auth_data)
  return basic_auth_data_ != NULL ? *basic_auth_data_
                         : *::coprocess::BasicAuthData::internal_default_instance();
}
::coprocess::BasicAuthData* SessionState::mutable_basic_auth_data() {
  
  if (basic_auth_data_ == NULL) {
    basic_auth_data_ = new ::coprocess::BasicAuthData;
  }
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.basic_auth_data)
  return basic_auth_data_;
}
::coprocess::BasicAuthData* SessionState::release_basic_auth_data() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.basic_auth_data)
  
  ::coprocess::BasicAuthData* temp = basic_auth_data_;
  basic_auth_data_ = NULL;
  return temp;
}
void SessionState::set_allocated_basic_auth_data(::coprocess::BasicAuthData* basic_auth_data) {
  delete basic_auth_data_;
  basic_auth_data_ = basic_auth_data;
  if (basic_auth_data) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.basic_auth_data)
}

// optional .coprocess.JWTData jwt_data = 15;
bool SessionState::has_jwt_data() const {
  return this != internal_default_instance() && jwt_data_ != NULL;
}
void SessionState::clear_jwt_data() {
  if (GetArenaNoVirtual() == NULL && jwt_data_ != NULL) delete jwt_data_;
  jwt_data_ = NULL;
}
const ::coprocess::JWTData& SessionState::jwt_data() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.jwt_data)
  return jwt_data_ != NULL ? *jwt_data_
                         : *::coprocess::JWTData::internal_default_instance();
}
::coprocess::JWTData* SessionState::mutable_jwt_data() {
  
  if (jwt_data_ == NULL) {
    jwt_data_ = new ::coprocess::JWTData;
  }
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.jwt_data)
  return jwt_data_;
}
::coprocess::JWTData* SessionState::release_jwt_data() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.jwt_data)
  
  ::coprocess::JWTData* temp = jwt_data_;
  jwt_data_ = NULL;
  return temp;
}
void SessionState::set_allocated_jwt_data(::coprocess::JWTData* jwt_data) {
  delete jwt_data_;
  jwt_data_ = jwt_data;
  if (jwt_data) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.jwt_data)
}

// optional bool hmac_enabled = 16;
void SessionState::clear_hmac_enabled() {
  hmac_enabled_ = false;
}
bool SessionState::hmac_enabled() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.hmac_enabled)
  return hmac_enabled_;
}
void SessionState::set_hmac_enabled(bool value) {
  
  hmac_enabled_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.hmac_enabled)
}

// optional string hmac_secret = 17;
void SessionState::clear_hmac_secret() {
  hmac_secret_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SessionState::hmac_secret() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.hmac_secret)
  return hmac_secret_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_hmac_secret(const ::std::string& value) {
  
  hmac_secret_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.SessionState.hmac_secret)
}
void SessionState::set_hmac_secret(const char* value) {
  
  hmac_secret_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.hmac_secret)
}
void SessionState::set_hmac_secret(const char* value, size_t size) {
  
  hmac_secret_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.hmac_secret)
}
::std::string* SessionState::mutable_hmac_secret() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.hmac_secret)
  return hmac_secret_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SessionState::release_hmac_secret() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.hmac_secret)
  
  return hmac_secret_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_allocated_hmac_secret(::std::string* hmac_secret) {
  if (hmac_secret != NULL) {
    
  } else {
    
  }
  hmac_secret_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), hmac_secret);
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.hmac_secret)
}

// optional bool is_inactive = 18;
void SessionState::clear_is_inactive() {
  is_inactive_ = false;
}
bool SessionState::is_inactive() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.is_inactive)
  return is_inactive_;
}
void SessionState::set_is_inactive(bool value) {
  
  is_inactive_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.is_inactive)
}

// optional string apply_policy_id = 19;
void SessionState::clear_apply_policy_id() {
  apply_policy_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SessionState::apply_policy_id() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.apply_policy_id)
  return apply_policy_id_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_apply_policy_id(const ::std::string& value) {
  
  apply_policy_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.SessionState.apply_policy_id)
}
void SessionState::set_apply_policy_id(const char* value) {
  
  apply_policy_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.apply_policy_id)
}
void SessionState::set_apply_policy_id(const char* value, size_t size) {
  
  apply_policy_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.apply_policy_id)
}
::std::string* SessionState::mutable_apply_policy_id() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.apply_policy_id)
  return apply_policy_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SessionState::release_apply_policy_id() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.apply_policy_id)
  
  return apply_policy_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_allocated_apply_policy_id(::std::string* apply_policy_id) {
  if (apply_policy_id != NULL) {
    
  } else {
    
  }
  apply_policy_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), apply_policy_id);
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.apply_policy_id)
}

// optional int64 data_expires = 20;
void SessionState::clear_data_expires() {
  data_expires_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::data_expires() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.data_expires)
  return data_expires_;
}
void SessionState::set_data_expires(::google::protobuf::int64 value) {
  
  data_expires_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.data_expires)
}

// optional .coprocess.Monitor monitor = 21;
bool SessionState::has_monitor() const {
  return this != internal_default_instance() && monitor_ != NULL;
}
void SessionState::clear_monitor() {
  if (GetArenaNoVirtual() == NULL && monitor_ != NULL) delete monitor_;
  monitor_ = NULL;
}
const ::coprocess::Monitor& SessionState::monitor() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.monitor)
  return monitor_ != NULL ? *monitor_
                         : *::coprocess::Monitor::internal_default_instance();
}
::coprocess::Monitor* SessionState::mutable_monitor() {
  
  if (monitor_ == NULL) {
    monitor_ = new ::coprocess::Monitor;
  }
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.monitor)
  return monitor_;
}
::coprocess::Monitor* SessionState::release_monitor() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.monitor)
  
  ::coprocess::Monitor* temp = monitor_;
  monitor_ = NULL;
  return temp;
}
void SessionState::set_allocated_monitor(::coprocess::Monitor* monitor) {
  delete monitor_;
  monitor_ = monitor;
  if (monitor) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.monitor)
}

// optional bool enable_detailed_recording = 22;
void SessionState::clear_enable_detailed_recording() {
  enable_detailed_recording_ = false;
}
bool SessionState::enable_detailed_recording() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.enable_detailed_recording)
  return enable_detailed_recording_;
}
void SessionState::set_enable_detailed_recording(bool value) {
  
  enable_detailed_recording_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.enable_detailed_recording)
}

// optional string metadata = 23;
void SessionState::clear_metadata() {
  metadata_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SessionState::metadata() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.metadata)
  return metadata_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_metadata(const ::std::string& value) {
  
  metadata_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.SessionState.metadata)
}
void SessionState::set_metadata(const char* value) {
  
  metadata_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.metadata)
}
void SessionState::set_metadata(const char* value, size_t size) {
  
  metadata_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.metadata)
}
::std::string* SessionState::mutable_metadata() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.metadata)
  return metadata_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SessionState::release_metadata() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.metadata)
  
  return metadata_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_allocated_metadata(::std::string* metadata) {
  if (metadata != NULL) {
    
  } else {
    
  }
  metadata_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), metadata);
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.metadata)
}

// repeated string tags = 24;
int SessionState::tags_size() const {
  return tags_.size();
}
void SessionState::clear_tags() {
  tags_.Clear();
}
const ::std::string& SessionState::tags(int index) const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.tags)
  return tags_.Get(index);
}
::std::string* SessionState::mutable_tags(int index) {
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.tags)
  return tags_.Mutable(index);
}
void SessionState::set_tags(int index, const ::std::string& value) {
  // @@protoc_insertion_point(field_set:coprocess.SessionState.tags)
  tags_.Mutable(index)->assign(value);
}
void SessionState::set_tags(int index, const char* value) {
  tags_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.tags)
}
void SessionState::set_tags(int index, const char* value, size_t size) {
  tags_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.tags)
}
::std::string* SessionState::add_tags() {
  // @@protoc_insertion_point(field_add_mutable:coprocess.SessionState.tags)
  return tags_.Add();
}
void SessionState::add_tags(const ::std::string& value) {
  tags_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:coprocess.SessionState.tags)
}
void SessionState::add_tags(const char* value) {
  tags_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:coprocess.SessionState.tags)
}
void SessionState::add_tags(const char* value, size_t size) {
  tags_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:coprocess.SessionState.tags)
}
const ::google::protobuf::RepeatedPtrField< ::std::string>&
SessionState::tags() const {
  // @@protoc_insertion_point(field_list:coprocess.SessionState.tags)
  return tags_;
}
::google::protobuf::RepeatedPtrField< ::std::string>*
SessionState::mutable_tags() {
  // @@protoc_insertion_point(field_mutable_list:coprocess.SessionState.tags)
  return &tags_;
}

// optional string alias = 25;
void SessionState::clear_alias() {
  alias_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SessionState::alias() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.alias)
  return alias_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_alias(const ::std::string& value) {
  
  alias_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.SessionState.alias)
}
void SessionState::set_alias(const char* value) {
  
  alias_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.alias)
}
void SessionState::set_alias(const char* value, size_t size) {
  
  alias_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.alias)
}
::std::string* SessionState::mutable_alias() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.alias)
  return alias_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SessionState::release_alias() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.alias)
  
  return alias_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_allocated_alias(::std::string* alias) {
  if (alias != NULL) {
    
  } else {
    
  }
  alias_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), alias);
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.alias)
}

// optional string last_updated = 26;
void SessionState::clear_last_updated() {
  last_updated_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SessionState::last_updated() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.last_updated)
  return last_updated_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_last_updated(const ::std::string& value) {
  
  last_updated_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:coprocess.SessionState.last_updated)
}
void SessionState::set_last_updated(const char* value) {
  
  last_updated_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:coprocess.SessionState.last_updated)
}
void SessionState::set_last_updated(const char* value, size_t size) {
  
  last_updated_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:coprocess.SessionState.last_updated)
}
::std::string* SessionState::mutable_last_updated() {
  
  // @@protoc_insertion_point(field_mutable:coprocess.SessionState.last_updated)
  return last_updated_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SessionState::release_last_updated() {
  // @@protoc_insertion_point(field_release:coprocess.SessionState.last_updated)
  
  return last_updated_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SessionState::set_allocated_last_updated(::std::string* last_updated) {
  if (last_updated != NULL) {
    
  } else {
    
  }
  last_updated_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), last_updated);
  // @@protoc_insertion_point(field_set_allocated:coprocess.SessionState.last_updated)
}

// optional int64 id_extractor_deadline = 27;
void SessionState::clear_id_extractor_deadline() {
  id_extractor_deadline_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::id_extractor_deadline() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.id_extractor_deadline)
  return id_extractor_deadline_;
}
void SessionState::set_id_extractor_deadline(::google::protobuf::int64 value) {
  
  id_extractor_deadline_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.id_extractor_deadline)
}

// optional int64 session_lifetime = 28;
void SessionState::clear_session_lifetime() {
  session_lifetime_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SessionState::session_lifetime() const {
  // @@protoc_insertion_point(field_get:coprocess.SessionState.session_lifetime)
  return session_lifetime_;
}
void SessionState::set_session_lifetime(::google::protobuf::int64 value) {
  
  session_lifetime_ = value;
  // @@protoc_insertion_point(field_set:coprocess.SessionState.session_lifetime)
}

inline const SessionState* SessionState::internal_default_instance() {
  return &SessionState_default_instance_.get();
}
#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// @@protoc_insertion_point(namespace_scope)

}  // namespace coprocess

// @@protoc_insertion_point(global_scope)
