// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_Ext_Auth.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Com.Fca.Uconnect.Global {

  /// <summary>Holder for reflection information generated from Global_Uconnect_Ext_Auth.proto</summary>
  public static partial class GlobalUconnectExtAuthReflection {

    #region Descriptor
    /// <summary>File descriptor for Global_Uconnect_Ext_Auth.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static GlobalUconnectExtAuthReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Ch5HbG9iYWxfVWNvbm5lY3RfRXh0X0F1dGgucHJvdG8SF2NvbS5mY2EudWNv",
            "bm5lY3QuZ2xvYmFsGhxHbG9iYWxfVWNvbm5lY3RfRGV2aWNlLnByb3RvImYK",
            "Dk5hdkF1dGhSZXF1ZXN0Eg0KBXRva2VuGAIgASgMEkUKCHByb3ZpZGVyGAMg",
            "ASgOMjMuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuTmF2QXV0aFJlc3BvbnNl",
            "LlByb3ZpZGVySWQiIQoMc2VydmljZXNMaXN0EhEKCXNlcnZpY2VJRBgBIAEo",
            "CSK0AwoPTmF2QXV0aFJlc3BvbnNlEkcKCHJlc3BvbnNlGAUgASgOMjUuY29t",
            "LmZjYS51Y29ubmVjdC5nbG9iYWwuTmF2QXV0aFJlc3BvbnNlLlJlc3BvbnNl",
            "RW51bRIRCglzZXNzaW9uSWQYAiABKAwSEwoLaXNUcmFuc2llbnQYAyABKAgS",
            "GQoRZmFpbHVyZVJlYXNvbkNvZGUYBCABKAUSEQoJdG9rZW5GaWxlGAEgASgM",
            "EjkKClNlcnZpY2VJRHMYBiADKAsyJS5jb20uZmNhLnVjb25uZWN0Lmdsb2Jh",
            "bC5zZXJ2aWNlc0xpc3QSFwoPdG9rZW5FeHBpcmF0aW9uGAcgASgJEkkKDHBy",
            "b3ZpZGVyRW51bRgIIAEoDjIzLmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLk5h",
            "dkF1dGhSZXNwb25zZS5Qcm92aWRlcklkIjwKDFJlc3BvbnNlRW51bRILCgdT",
            "VUNDRVNTEAASEgoOTk9UX0FVVEhPUklaRUQQARILCgdGQUlMVVJFEAIiJQoK",
            "UHJvdmlkZXJJZBIKCgZUT01UT00QABILCgdURUxFTkFWEAEiOwoTUHJvZmls",
            "ZVRva2VuUmVxdWVzdBIQCgh1c2VyTmFtZRgBIAEoCRISCgpjcmVkZW50aWFs",
            "GAIgASgMIvsBChRQcm9maWxlVG9rZW5SZXNwb25zZRJMCghyZXNwb25zZRgB",
            "IAEoDjI6LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlByb2ZpbGVUb2tlblJl",
            "c3BvbnNlLlJlc3BvbnNlRW51bRIRCglzZXNzaW9uSWQYAiABKAwSEwoLaXNU",
            "cmFuc2llbnQYAyABKAgSGQoRZmFpbHVyZVJlYXNvbkNvZGUYBCABKAUSFAoM",
            "cHJvZmlsZVRva2VuGAUgASgMIjwKDFJlc3BvbnNlRW51bRILCgdTVUNDRVNT",
            "EAASEgoOTk9UX0FVVEhPUklaRUQQARILCgdGQUlMVVJFEAIi0wEKDExvZ2lu",
            "UmVxdWVzdBJFCgZhY2Nlc3MYASABKA4yNS5jb20uZmNhLnVjb25uZWN0Lmds",
            "b2JhbC5Mb2dpblJlcXVlc3QuQWNjZXNzTGV2ZWxFbnVtEhIKCmlkZW50aWZp",
            "ZXIYAiABKAkSEwoLY3JlZGVudGlhbHMYAyABKAkSDQoFdG9rZW4YBCABKAwi",
            "RAoPQWNjZXNzTGV2ZWxFbnVtEggKBEJBU0UQABISCg5QSU5fQVVUSE9SSVpF",
            "RBABEhMKD1RPS0VOQVVUSE9SSVpFRBACItcBCg1Mb2dpblJlc3BvbnNlEkUK",
            "CHJlc3BvbnNlGAEgASgOMjMuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuTG9n",
            "aW5SZXNwb25zZS5SZXNwb25zZUVudW0SEQoJc2Vzc2lvbklkGAIgASgMEhMK",
            "C2lzVHJhbnNpZW50GAMgASgIEhkKEWZhaWx1cmVSZWFzb25Db2RlGAQgASgF",
            "IjwKDFJlc3BvbnNlRW51bRILCgdTVUNDRVNTEAASEgoOTk9UX0FVVEhPUkla",
            "RUQQARILCgdGQUlMVVJFEAIiDwoNTG9nb3V0UmVxdWVzdCK+AQoOTG9nb3V0",
            "UmVzcG9uc2USTAoIcmVzcG9uc2UYASABKA4yOi5jb20uZmNhLnVjb25uZWN0",
            "Lmdsb2JhbC5Mb2dvdXRSZXNwb25zZS5Mb2dvdXRSZXNwb25zZUVudW0SEwoL",
            "aXNUcmFuc2llbnQYAiABKAgSGQoRZmFpbHVyZVJlYXNvbkNvZGUYAyABKAUi",
            "LgoSTG9nb3V0UmVzcG9uc2VFbnVtEgsKB1NVQ0NFU1MQABILCgdGQUlMVVJF",
            "EAFQAGIGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Com.Fca.Uconnect.Global.GlobalUconnectDeviceReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.NavAuthRequest), global::Com.Fca.Uconnect.Global.NavAuthRequest.Parser, new[]{ "Token", "Provider" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.servicesList), global::Com.Fca.Uconnect.Global.servicesList.Parser, new[]{ "ServiceID" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.NavAuthResponse), global::Com.Fca.Uconnect.Global.NavAuthResponse.Parser, new[]{ "Response", "SessionId", "IsTransient", "FailureReasonCode", "TokenFile", "ServiceIDs", "TokenExpiration", "ProviderEnum" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ResponseEnum), typeof(global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ProviderId) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ProfileTokenRequest), global::Com.Fca.Uconnect.Global.ProfileTokenRequest.Parser, new[]{ "UserName", "Credential" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ProfileTokenResponse), global::Com.Fca.Uconnect.Global.ProfileTokenResponse.Parser, new[]{ "Response", "SessionId", "IsTransient", "FailureReasonCode", "ProfileToken" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ProfileTokenResponse.Types.ResponseEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.LoginRequest), global::Com.Fca.Uconnect.Global.LoginRequest.Parser, new[]{ "Access", "Identifier", "Credentials", "Token" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.LoginRequest.Types.AccessLevelEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.LoginResponse), global::Com.Fca.Uconnect.Global.LoginResponse.Parser, new[]{ "Response", "SessionId", "IsTransient", "FailureReasonCode" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.LoginResponse.Types.ResponseEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.LogoutRequest), global::Com.Fca.Uconnect.Global.LogoutRequest.Parser, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.LogoutResponse), global::Com.Fca.Uconnect.Global.LogoutResponse.Parser, new[]{ "Response", "IsTransient", "FailureReasonCode" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.LogoutResponse.Types.LogoutResponseEnum) }, null)
          }));
    }
    #endregion

  }
  #region Messages
  public sealed partial class NavAuthRequest : pb::IMessage<NavAuthRequest> {
    private static readonly pb::MessageParser<NavAuthRequest> _parser = new pb::MessageParser<NavAuthRequest>(() => new NavAuthRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<NavAuthRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NavAuthRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NavAuthRequest(NavAuthRequest other) : this() {
      token_ = other.token_;
      provider_ = other.provider_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NavAuthRequest Clone() {
      return new NavAuthRequest(this);
    }

    /// <summary>Field number for the "token" field.</summary>
    public const int TokenFieldNumber = 2;
    private pb::ByteString token_ = pb::ByteString.Empty;
    /// <summary>
    /// string deviceID = 1; /// Device ID Required for Token from Nav Provider
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString Token {
      get { return token_; }
      set {
        token_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "provider" field.</summary>
    public const int ProviderFieldNumber = 3;
    private global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ProviderId provider_ = 0;
    /// <summary>
    //// ProviderID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ProviderId Provider {
      get { return provider_; }
      set {
        provider_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as NavAuthRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(NavAuthRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Token != other.Token) return false;
      if (Provider != other.Provider) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Token.Length != 0) hash ^= Token.GetHashCode();
      if (Provider != 0) hash ^= Provider.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Token.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(Token);
      }
      if (Provider != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Provider);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Token.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Token);
      }
      if (Provider != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Provider);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(NavAuthRequest other) {
      if (other == null) {
        return;
      }
      if (other.Token.Length != 0) {
        Token = other.Token;
      }
      if (other.Provider != 0) {
        Provider = other.Provider;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 18: {
            Token = input.ReadBytes();
            break;
          }
          case 24: {
            provider_ = (global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ProviderId) input.ReadEnum();
            break;
          }
        }
      }
    }

  }

  public sealed partial class servicesList : pb::IMessage<servicesList> {
    private static readonly pb::MessageParser<servicesList> _parser = new pb::MessageParser<servicesList>(() => new servicesList());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<servicesList> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public servicesList() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public servicesList(servicesList other) : this() {
      serviceID_ = other.serviceID_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public servicesList Clone() {
      return new servicesList(this);
    }

    /// <summary>Field number for the "serviceID" field.</summary>
    public const int ServiceIDFieldNumber = 1;
    private string serviceID_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string ServiceID {
      get { return serviceID_; }
      set {
        serviceID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as servicesList);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(servicesList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServiceID != other.ServiceID) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (ServiceID.Length != 0) hash ^= ServiceID.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (ServiceID.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ServiceID);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (ServiceID.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceID);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(servicesList other) {
      if (other == null) {
        return;
      }
      if (other.ServiceID.Length != 0) {
        ServiceID = other.ServiceID;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            ServiceID = input.ReadString();
            break;
          }
        }
      }
    }

  }

  public sealed partial class NavAuthResponse : pb::IMessage<NavAuthResponse> {
    private static readonly pb::MessageParser<NavAuthResponse> _parser = new pb::MessageParser<NavAuthResponse>(() => new NavAuthResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<NavAuthResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NavAuthResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NavAuthResponse(NavAuthResponse other) : this() {
      response_ = other.response_;
      sessionId_ = other.sessionId_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
      tokenFile_ = other.tokenFile_;
      serviceIDs_ = other.serviceIDs_.Clone();
      tokenExpiration_ = other.tokenExpiration_;
      providerEnum_ = other.providerEnum_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NavAuthResponse Clone() {
      return new NavAuthResponse(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 5;
    private global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ResponseEnum response_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    /// <summary>Field number for the "sessionId" field.</summary>
    public const int SessionIdFieldNumber = 2;
    private pb::ByteString sessionId_ = pb::ByteString.Empty;
    /// <summary>
    //// Session ID for the current login
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 3;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 4;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    /// <summary>Field number for the "tokenFile" field.</summary>
    public const int TokenFileFieldNumber = 1;
    private pb::ByteString tokenFile_ = pb::ByteString.Empty;
    /// <summary>
    //// Use for token, or for Tom Tom the XML including token and services
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString TokenFile {
      get { return tokenFile_; }
      set {
        tokenFile_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "ServiceIDs" field.</summary>
    public const int ServiceIDsFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.servicesList> _repeated_serviceIDs_codec
        = pb::FieldCodec.ForMessage(50, global::Com.Fca.Uconnect.Global.servicesList.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.servicesList> serviceIDs_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.servicesList>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.servicesList> ServiceIDs {
      get { return serviceIDs_; }
    }

    /// <summary>Field number for the "tokenExpiration" field.</summary>
    public const int TokenExpirationFieldNumber = 7;
    private string tokenExpiration_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TokenExpiration {
      get { return tokenExpiration_; }
      set {
        tokenExpiration_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "providerEnum" field.</summary>
    public const int ProviderEnumFieldNumber = 8;
    private global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ProviderId providerEnum_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ProviderId ProviderEnum {
      get { return providerEnum_; }
      set {
        providerEnum_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as NavAuthResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(NavAuthResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Response != other.Response) return false;
      if (SessionId != other.SessionId) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      if (TokenFile != other.TokenFile) return false;
      if(!serviceIDs_.Equals(other.serviceIDs_)) return false;
      if (TokenExpiration != other.TokenExpiration) return false;
      if (ProviderEnum != other.ProviderEnum) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Response != 0) hash ^= Response.GetHashCode();
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      if (TokenFile.Length != 0) hash ^= TokenFile.GetHashCode();
      hash ^= serviceIDs_.GetHashCode();
      if (TokenExpiration.Length != 0) hash ^= TokenExpiration.GetHashCode();
      if (ProviderEnum != 0) hash ^= ProviderEnum.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (TokenFile.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(TokenFile);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(SessionId);
      }
      if (IsTransient != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(FailureReasonCode);
      }
      if (Response != 0) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Response);
      }
      serviceIDs_.WriteTo(output, _repeated_serviceIDs_codec);
      if (TokenExpiration.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(TokenExpiration);
      }
      if (ProviderEnum != 0) {
        output.WriteRawTag(64);
        output.WriteEnum((int) ProviderEnum);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(SessionId);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      if (TokenFile.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(TokenFile);
      }
      size += serviceIDs_.CalculateSize(_repeated_serviceIDs_codec);
      if (TokenExpiration.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TokenExpiration);
      }
      if (ProviderEnum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ProviderEnum);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(NavAuthResponse other) {
      if (other == null) {
        return;
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
      if (other.TokenFile.Length != 0) {
        TokenFile = other.TokenFile;
      }
      serviceIDs_.Add(other.serviceIDs_);
      if (other.TokenExpiration.Length != 0) {
        TokenExpiration = other.TokenExpiration;
      }
      if (other.ProviderEnum != 0) {
        ProviderEnum = other.ProviderEnum;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            TokenFile = input.ReadBytes();
            break;
          }
          case 18: {
            SessionId = input.ReadBytes();
            break;
          }
          case 24: {
            IsTransient = input.ReadBool();
            break;
          }
          case 32: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
          case 40: {
            response_ = (global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 50: {
            serviceIDs_.AddEntriesFrom(input, _repeated_serviceIDs_codec);
            break;
          }
          case 58: {
            TokenExpiration = input.ReadString();
            break;
          }
          case 64: {
            providerEnum_ = (global::Com.Fca.Uconnect.Global.NavAuthResponse.Types.ProviderId) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the NavAuthResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ResponseEnum {
        /// <summary>
        //// Success
        /// </summary>
        [pbr::OriginalName("SUCCESS")] Success = 0,
        /// <summary>
        //// NOT_AUTHORIZED
        /// </summary>
        [pbr::OriginalName("NOT_AUTHORIZED")] NotAuthorized = 1,
        /// <summary>
        //// FAILURE
        /// </summary>
        [pbr::OriginalName("FAILURE")] Failure = 2,
      }

      public enum ProviderId {
        [pbr::OriginalName("TOMTOM")] Tomtom = 0,
        [pbr::OriginalName("TELENAV")] Telenav = 1,
      }

    }
    #endregion

  }

  public sealed partial class ProfileTokenRequest : pb::IMessage<ProfileTokenRequest> {
    private static readonly pb::MessageParser<ProfileTokenRequest> _parser = new pb::MessageParser<ProfileTokenRequest>(() => new ProfileTokenRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ProfileTokenRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProfileTokenRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProfileTokenRequest(ProfileTokenRequest other) : this() {
      userName_ = other.userName_;
      credential_ = other.credential_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProfileTokenRequest Clone() {
      return new ProfileTokenRequest(this);
    }

    /// <summary>Field number for the "userName" field.</summary>
    public const int UserNameFieldNumber = 1;
    private string userName_ = "";
    /// <summary>
    //// Username for Eco Coaching
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string UserName {
      get { return userName_; }
      set {
        userName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "credential" field.</summary>
    public const int CredentialFieldNumber = 2;
    private pb::ByteString credential_ = pb::ByteString.Empty;
    /// <summary>
    //// Credential for Eco Coaching, should be encrypted
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString Credential {
      get { return credential_; }
      set {
        credential_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ProfileTokenRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ProfileTokenRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (UserName != other.UserName) return false;
      if (Credential != other.Credential) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (UserName.Length != 0) hash ^= UserName.GetHashCode();
      if (Credential.Length != 0) hash ^= Credential.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (UserName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(UserName);
      }
      if (Credential.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(Credential);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (UserName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(UserName);
      }
      if (Credential.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Credential);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ProfileTokenRequest other) {
      if (other == null) {
        return;
      }
      if (other.UserName.Length != 0) {
        UserName = other.UserName;
      }
      if (other.Credential.Length != 0) {
        Credential = other.Credential;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            UserName = input.ReadString();
            break;
          }
          case 18: {
            Credential = input.ReadBytes();
            break;
          }
        }
      }
    }

  }

  public sealed partial class ProfileTokenResponse : pb::IMessage<ProfileTokenResponse> {
    private static readonly pb::MessageParser<ProfileTokenResponse> _parser = new pb::MessageParser<ProfileTokenResponse>(() => new ProfileTokenResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ProfileTokenResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProfileTokenResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProfileTokenResponse(ProfileTokenResponse other) : this() {
      response_ = other.response_;
      sessionId_ = other.sessionId_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
      profileToken_ = other.profileToken_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProfileTokenResponse Clone() {
      return new ProfileTokenResponse(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ProfileTokenResponse.Types.ResponseEnum response_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ProfileTokenResponse.Types.ResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    /// <summary>Field number for the "sessionId" field.</summary>
    public const int SessionIdFieldNumber = 2;
    private pb::ByteString sessionId_ = pb::ByteString.Empty;
    /// <summary>
    //// Session ID for the current login
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 3;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 4;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    /// <summary>Field number for the "profileToken" field.</summary>
    public const int ProfileTokenFieldNumber = 5;
    private pb::ByteString profileToken_ = pb::ByteString.Empty;
    /// <summary>
    //// Returned Profile Token
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString ProfileToken {
      get { return profileToken_; }
      set {
        profileToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ProfileTokenResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ProfileTokenResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Response != other.Response) return false;
      if (SessionId != other.SessionId) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      if (ProfileToken != other.ProfileToken) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Response != 0) hash ^= Response.GetHashCode();
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      if (ProfileToken.Length != 0) hash ^= ProfileToken.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Response != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Response);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(SessionId);
      }
      if (IsTransient != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(FailureReasonCode);
      }
      if (ProfileToken.Length != 0) {
        output.WriteRawTag(42);
        output.WriteBytes(ProfileToken);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(SessionId);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      if (ProfileToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(ProfileToken);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ProfileTokenResponse other) {
      if (other == null) {
        return;
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
      if (other.ProfileToken.Length != 0) {
        ProfileToken = other.ProfileToken;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            response_ = (global::Com.Fca.Uconnect.Global.ProfileTokenResponse.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 18: {
            SessionId = input.ReadBytes();
            break;
          }
          case 24: {
            IsTransient = input.ReadBool();
            break;
          }
          case 32: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
          case 42: {
            ProfileToken = input.ReadBytes();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ProfileTokenResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ResponseEnum {
        /// <summary>
        //// Success
        /// </summary>
        [pbr::OriginalName("SUCCESS")] Success = 0,
        /// <summary>
        //// NOT_AUTHORIZED
        /// </summary>
        [pbr::OriginalName("NOT_AUTHORIZED")] NotAuthorized = 1,
        /// <summary>
        //// FAILURE
        /// </summary>
        [pbr::OriginalName("FAILURE")] Failure = 2,
      }

    }
    #endregion

  }

  public sealed partial class LoginRequest : pb::IMessage<LoginRequest> {
    private static readonly pb::MessageParser<LoginRequest> _parser = new pb::MessageParser<LoginRequest>(() => new LoginRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LoginRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LoginRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LoginRequest(LoginRequest other) : this() {
      access_ = other.access_;
      identifier_ = other.identifier_;
      credentials_ = other.credentials_;
      token_ = other.token_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LoginRequest Clone() {
      return new LoginRequest(this);
    }

    /// <summary>Field number for the "access" field.</summary>
    public const int AccessFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.LoginRequest.Types.AccessLevelEnum access_ = 0;
    /// <summary>
    ////Is this initial login or a pin authorized login.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.LoginRequest.Types.AccessLevelEnum Access {
      get { return access_; }
      set {
        access_ = value;
      }
    }

    /// <summary>Field number for the "identifier" field.</summary>
    public const int IdentifierFieldNumber = 2;
    private string identifier_ = "";
    /// <summary>
    //// Login Id for current user.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Identifier {
      get { return identifier_; }
      set {
        identifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "credentials" field.</summary>
    public const int CredentialsFieldNumber = 3;
    private string credentials_ = "";
    /// <summary>
    //// Password for current user
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Credentials {
      get { return credentials_; }
      set {
        credentials_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "token" field.</summary>
    public const int TokenFieldNumber = 4;
    private pb::ByteString token_ = pb::ByteString.Empty;
    /// <summary>
    ////For passing authorization tokens
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString Token {
      get { return token_; }
      set {
        token_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as LoginRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LoginRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Access != other.Access) return false;
      if (Identifier != other.Identifier) return false;
      if (Credentials != other.Credentials) return false;
      if (Token != other.Token) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Access != 0) hash ^= Access.GetHashCode();
      if (Identifier.Length != 0) hash ^= Identifier.GetHashCode();
      if (Credentials.Length != 0) hash ^= Credentials.GetHashCode();
      if (Token.Length != 0) hash ^= Token.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Access != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Access);
      }
      if (Identifier.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Identifier);
      }
      if (Credentials.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Credentials);
      }
      if (Token.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(Token);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Access != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Access);
      }
      if (Identifier.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Identifier);
      }
      if (Credentials.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Credentials);
      }
      if (Token.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Token);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LoginRequest other) {
      if (other == null) {
        return;
      }
      if (other.Access != 0) {
        Access = other.Access;
      }
      if (other.Identifier.Length != 0) {
        Identifier = other.Identifier;
      }
      if (other.Credentials.Length != 0) {
        Credentials = other.Credentials;
      }
      if (other.Token.Length != 0) {
        Token = other.Token;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            access_ = (global::Com.Fca.Uconnect.Global.LoginRequest.Types.AccessLevelEnum) input.ReadEnum();
            break;
          }
          case 18: {
            Identifier = input.ReadString();
            break;
          }
          case 26: {
            Credentials = input.ReadString();
            break;
          }
          case 34: {
            Token = input.ReadBytes();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the LoginRequest message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum AccessLevelEnum {
        /// <summary>
        //// Base Enumeration
        /// </summary>
        [pbr::OriginalName("BASE")] Base = 0,
        /// <summary>
        //// Pin Authorized
        /// </summary>
        [pbr::OriginalName("PIN_AUTHORIZED")] PinAuthorized = 1,
        /// <summary>
        //// For Eco Coaching Profiles
        /// </summary>
        [pbr::OriginalName("TOKENAUTHORIZED")] Tokenauthorized = 2,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This is for loginResponse.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>Login Response Example Message:&lt;/h4>
  ///  &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1488868821160
  /// 		messageId: 1
  /// 		correlationId: 1
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.loginResponse]
  /// 		 {
  /// 			response: SUCCESS
  /// 			sessionId: "-\0274\302]\325\324 \354K"
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class LoginResponse : pb::IMessage<LoginResponse> {
    private static readonly pb::MessageParser<LoginResponse> _parser = new pb::MessageParser<LoginResponse>(() => new LoginResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LoginResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LoginResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LoginResponse(LoginResponse other) : this() {
      response_ = other.response_;
      sessionId_ = other.sessionId_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LoginResponse Clone() {
      return new LoginResponse(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.LoginResponse.Types.ResponseEnum response_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.LoginResponse.Types.ResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    /// <summary>Field number for the "sessionId" field.</summary>
    public const int SessionIdFieldNumber = 2;
    private pb::ByteString sessionId_ = pb::ByteString.Empty;
    /// <summary>
    //// Session ID for the current login
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 3;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 4;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as LoginResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LoginResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Response != other.Response) return false;
      if (SessionId != other.SessionId) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Response != 0) hash ^= Response.GetHashCode();
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Response != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Response);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(SessionId);
      }
      if (IsTransient != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(FailureReasonCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(SessionId);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LoginResponse other) {
      if (other == null) {
        return;
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            response_ = (global::Com.Fca.Uconnect.Global.LoginResponse.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 18: {
            SessionId = input.ReadBytes();
            break;
          }
          case 24: {
            IsTransient = input.ReadBool();
            break;
          }
          case 32: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the LoginResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ResponseEnum {
        /// <summary>
        //// Success
        /// </summary>
        [pbr::OriginalName("SUCCESS")] Success = 0,
        /// <summary>
        //// NOT_AUTHORIZED
        /// </summary>
        [pbr::OriginalName("NOT_AUTHORIZED")] NotAuthorized = 1,
        /// <summary>
        //// FAILURE
        /// </summary>
        [pbr::OriginalName("FAILURE")] Failure = 2,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// The LogoutRequest has no data elements.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>LogoutRequest Example Message:&lt;/h4>
  ///  &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1488869130664
  /// 		messageId: 20
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.logoutRequest]
  /// 		 {
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class LogoutRequest : pb::IMessage<LogoutRequest> {
    private static readonly pb::MessageParser<LogoutRequest> _parser = new pb::MessageParser<LogoutRequest>(() => new LogoutRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LogoutRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LogoutRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LogoutRequest(LogoutRequest other) : this() {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LogoutRequest Clone() {
      return new LogoutRequest(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as LogoutRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LogoutRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LogoutRequest other) {
      if (other == null) {
        return;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
        }
      }
    }

  }

  /// <summary>
  ///*
  /// This will be response to LogoutRequest.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>LogoutResponse Example Message:&lt;/h4>
  ///  &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1488869130739
  /// 		messageId: 22
  /// 		correlationId: 20
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.logoutResponse]
  /// 		 {
  /// 			response: SUCCESS
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class LogoutResponse : pb::IMessage<LogoutResponse> {
    private static readonly pb::MessageParser<LogoutResponse> _parser = new pb::MessageParser<LogoutResponse>(() => new LogoutResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LogoutResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAuthReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LogoutResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LogoutResponse(LogoutResponse other) : this() {
      response_ = other.response_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LogoutResponse Clone() {
      return new LogoutResponse(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.LogoutResponse.Types.LogoutResponseEnum response_ = 0;
    /// <summary>
    ////This is an enum which identifies whether logout is successful or has failed.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.LogoutResponse.Types.LogoutResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 2;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 3;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as LogoutResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LogoutResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Response != other.Response) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Response != 0) hash ^= Response.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Response != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Response);
      }
      if (IsTransient != false) {
        output.WriteRawTag(16);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FailureReasonCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LogoutResponse other) {
      if (other == null) {
        return;
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            response_ = (global::Com.Fca.Uconnect.Global.LogoutResponse.Types.LogoutResponseEnum) input.ReadEnum();
            break;
          }
          case 16: {
            IsTransient = input.ReadBool();
            break;
          }
          case 24: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the LogoutResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum LogoutResponseEnum {
        /// <summary>
        //// Success
        /// </summary>
        [pbr::OriginalName("SUCCESS")] Success = 0,
        /// <summary>
        //// Failure
        /// </summary>
        [pbr::OriginalName("FAILURE")] Failure = 1,
      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code
