// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: extensions.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#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 Dcv.Extensions {

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

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

    static ExtensionsReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChBleHRlbnNpb25zLnByb3RvEg5kY3YuZXh0ZW5zaW9ucyLGAQoMU29mdHdh",
            "cmVJbmZvEgwKBG5hbWUYASABKAkSOwoHdmVyc2lvbhgCIAEoCzIqLmRjdi5l",
            "eHRlbnNpb25zLlNvZnR3YXJlSW5mby5WZXJzaW9uTnVtYmVyEgoKAm9zGAMg",
            "ASgJEgwKBGFyY2gYBCABKAkSEAoIaG9zdG5hbWUYBSABKAkaPwoNVmVyc2lv",
            "bk51bWJlchINCgVtYWpvchgBIAEoDRINCgVtaW5vchgCIAEoDRIQCghyZXZp",
            "c2lvbhgDIAEoDSIdCgVQb2ludBIJCgF4GAEgASgFEgkKAXkYAiABKAUiOwoE",
            "UmVjdBIJCgF4GAEgASgFEgkKAXkYAiABKAUSDQoFd2lkdGgYAyABKA0SDgoG",
            "aGVpZ2h0GAQgASgNIuYBCg5TdHJlYW1pbmdWaWV3cxJECg5zdHJlYW1pbmdf",
            "dmlldxgBIAMoCzIsLmRjdi5leHRlbnNpb25zLlN0cmVhbWluZ1ZpZXdzLlN0",
            "cmVhbWluZ1ZpZXcajQEKDVN0cmVhbWluZ1ZpZXcSDwoHdmlld19pZBgBIAEo",
            "BRIoCgpsb2NhbF9hcmVhGAIgASgLMhQuZGN2LmV4dGVuc2lvbnMuUmVjdBIT",
            "Cgt6b29tX2ZhY3RvchgDIAEoARIsCg1yZW1vdGVfb2Zmc2V0GAQgASgLMhUu",
            "ZGN2LmV4dGVuc2lvbnMuUG9pbnQiEwoRR2V0RGN2SW5mb1JlcXVlc3QiFAoS",
            "R2V0TWFuaWZlc3RSZXF1ZXN0IlsKGlNldHVwVmlydHVhbENoYW5uZWxSZXF1",
            "ZXN0EhwKFHZpcnR1YWxfY2hhbm5lbF9uYW1lGAEgASgJEh8KF3JlbGF5X2Ns",
            "aWVudF9wcm9jZXNzX2lkGAIgASgDIjoKGkNsb3NlVmlydHVhbENoYW5uZWxS",
            "ZXF1ZXN0EhwKFHZpcnR1YWxfY2hhbm5lbF9uYW1lGAEgASgJIj0KFVNldEN1",
            "cnNvclBvaW50UmVxdWVzdBIkCgVwb2ludBgBIAEoCzIVLmRjdi5leHRlbnNp",
            "b25zLlBvaW50IhoKGEdldFN0cmVhbWluZ1ZpZXdzUmVxdWVzdCJKCiJJc1Bv",
            "aW50SW5zaWRlU3RyZWFtaW5nVmlld3NSZXF1ZXN0EiQKBXBvaW50GAEgASgL",
            "MhUuZGN2LmV4dGVuc2lvbnMuUG9pbnQi8wEKEkdldERjdkluZm9SZXNwb25z",
            "ZRI8CghkY3Zfcm9sZRgBIAEoDjIqLmRjdi5leHRlbnNpb25zLkdldERjdklu",
            "Zm9SZXNwb25zZS5EY3ZSb2xlEhYKDmRjdl9wcm9jZXNzX2lkGAIgASgDEjEK",
            "C3NlcnZlcl9pbmZvGAMgASgLMhwuZGN2LmV4dGVuc2lvbnMuU29mdHdhcmVJ",
            "bmZvEjEKC2NsaWVudF9pbmZvGAQgASgLMhwuZGN2LmV4dGVuc2lvbnMuU29m",
            "dHdhcmVJbmZvIiEKB0RjdlJvbGUSCgoGU2VydmVyEAASCgoGQ2xpZW50EAEi",
            "LAoTR2V0TWFuaWZlc3RSZXNwb25zZRIVCg1tYW5pZmVzdF9wYXRoGAEgASgJ",
            "IpQBChtTZXR1cFZpcnR1YWxDaGFubmVsUmVzcG9uc2USHAoUdmlydHVhbF9j",
            "aGFubmVsX25hbWUYASABKAkSEgoKcmVsYXlfcGF0aBgCIAEoCRIfChdyZWxh",
            "eV9zZXJ2ZXJfcHJvY2Vzc19pZBgDIAEoAxIiChp2aXJ0dWFsX2NoYW5uZWxf",
            "YXV0aF90b2tlbhgEIAEoDCI7ChtDbG9zZVZpcnR1YWxDaGFubmVsUmVzcG9u",
            "c2USHAoUdmlydHVhbF9jaGFubmVsX25hbWUYASABKAkiGAoWU2V0Q3Vyc29y",
            "UG9pbnRSZXNwb25zZSJUChlHZXRTdHJlYW1pbmdWaWV3c1Jlc3BvbnNlEjcK",
            "D3N0cmVhbWluZ192aWV3cxgBIAEoCzIeLmRjdi5leHRlbnNpb25zLlN0cmVh",
            "bWluZ1ZpZXdzIjYKI0lzUG9pbnRJbnNpZGVTdHJlYW1pbmdWaWV3c1Jlc3Bv",
            "bnNlEg8KB3ZpZXdfaWQYASABKAUiOAoYVmlydHVhbENoYW5uZWxSZWFkeUV2",
            "ZW50EhwKFHZpcnR1YWxfY2hhbm5lbF9uYW1lGAEgASgJIjkKGVZpcnR1YWxD",
            "aGFubmVsQ2xvc2VkRXZlbnQSHAoUdmlydHVhbF9jaGFubmVsX25hbWUYASAB",
            "KAkiVQoaU3RyZWFtaW5nVmlld3NDaGFuZ2VkRXZlbnQSNwoPc3RyZWFtaW5n",
            "X3ZpZXdzGAEgASgLMh4uZGN2LmV4dGVuc2lvbnMuU3RyZWFtaW5nVmlld3Mi",
            "3AQKB1JlcXVlc3QSEgoKcmVxdWVzdF9pZBgBIAEoCRJBChRnZXRfZGN2X2lu",
            "Zm9fcmVxdWVzdBgKIAEoCzIhLmRjdi5leHRlbnNpb25zLkdldERjdkluZm9S",
            "ZXF1ZXN0SAASQgoUZ2V0X21hbmlmZXN0X3JlcXVlc3QYCyABKAsyIi5kY3Yu",
            "ZXh0ZW5zaW9ucy5HZXRNYW5pZmVzdFJlcXVlc3RIABJTCh1zZXR1cF92aXJ0",
            "dWFsX2NoYW5uZWxfcmVxdWVzdBgUIAEoCzIqLmRjdi5leHRlbnNpb25zLlNl",
            "dHVwVmlydHVhbENoYW5uZWxSZXF1ZXN0SAASUwodY2xvc2VfdmlydHVhbF9j",
            "aGFubmVsX3JlcXVlc3QYFSABKAsyKi5kY3YuZXh0ZW5zaW9ucy5DbG9zZVZp",
            "cnR1YWxDaGFubmVsUmVxdWVzdEgAEkkKGHNldF9jdXJzb3JfcG9pbnRfcmVx",
            "dWVzdBgeIAEoCzIlLmRjdi5leHRlbnNpb25zLlNldEN1cnNvclBvaW50UmVx",
            "dWVzdEgAEk8KG2dldF9zdHJlYW1pbmdfdmlld3NfcmVxdWVzdBgfIAEoCzIo",
            "LmRjdi5leHRlbnNpb25zLkdldFN0cmVhbWluZ1ZpZXdzUmVxdWVzdEgAEmUK",
            "J2lzX3BvaW50X2luc2lkZV9zdHJlYW1pbmdfdmlld3NfcmVxdWVzdBggIAEo",
            "CzIyLmRjdi5leHRlbnNpb25zLklzUG9pbnRJbnNpZGVTdHJlYW1pbmdWaWV3",
            "c1JlcXVlc3RIAEIJCgdyZXF1ZXN0IoEHCghSZXNwb25zZRISCgpyZXF1ZXN0",
            "X2lkGAEgASgJEi8KBnN0YXR1cxgCIAEoDjIfLmRjdi5leHRlbnNpb25zLlJl",
            "c3BvbnNlLlN0YXR1cxJDChVnZXRfZGN2X2luZm9fcmVzcG9uc2UYCiABKAsy",
            "Ii5kY3YuZXh0ZW5zaW9ucy5HZXREY3ZJbmZvUmVzcG9uc2VIABJEChVnZXRf",
            "bWFuaWZlc3RfcmVzcG9uc2UYCyABKAsyIy5kY3YuZXh0ZW5zaW9ucy5HZXRN",
            "YW5pZmVzdFJlc3BvbnNlSAASVQoec2V0dXBfdmlydHVhbF9jaGFubmVsX3Jl",
            "c3BvbnNlGBQgASgLMisuZGN2LmV4dGVuc2lvbnMuU2V0dXBWaXJ0dWFsQ2hh",
            "bm5lbFJlc3BvbnNlSAASVQoeY2xvc2VfdmlydHVhbF9jaGFubmVsX3Jlc3Bv",
            "bnNlGBUgASgLMisuZGN2LmV4dGVuc2lvbnMuQ2xvc2VWaXJ0dWFsQ2hhbm5l",
            "bFJlc3BvbnNlSAASSwoZc2V0X2N1cnNvcl9wb2ludF9yZXNwb25zZRgeIAEo",
            "CzImLmRjdi5leHRlbnNpb25zLlNldEN1cnNvclBvaW50UmVzcG9uc2VIABJR",
            "ChxnZXRfc3RyZWFtaW5nX3ZpZXdzX3Jlc3BvbnNlGB8gASgLMikuZGN2LmV4",
            "dGVuc2lvbnMuR2V0U3RyZWFtaW5nVmlld3NSZXNwb25zZUgAEmcKKGlzX3Bv",
            "aW50X2luc2lkZV9zdHJlYW1pbmdfdmlld3NfcmVzcG9uc2UYICABKAsyMy5k",
            "Y3YuZXh0ZW5zaW9ucy5Jc1BvaW50SW5zaWRlU3RyZWFtaW5nVmlld3NSZXNw",
            "b25zZUgAIuEBCgZTdGF0dXMSCAoETk9ORRAAEgsKB1NVQ0NFU1MQARIRCg1F",
            "UlJPUl9HRU5FUklDEAoSFwoTRVJST1JfQUNDRVNTX0RFTklFRBALEhkKFUVS",
            "Uk9SX05PVF9JTVBMRU1FTlRFRBAMEhsKF0VSUk9SX0lOVkFMSURfUEFSQU1F",
            "VEVSEA0SNwozRVJST1JfSU5WQUxJRF9WSVJUVUFMX0NIQU5ORUxfTkFNRVNQ",
            "QUNFX0lOX01BTklGRVNUEA4SIwofRVJST1JfVE9PX01BTllfVklSVFVBTF9D",
            "SEFOTkVMUxAPQgoKCHJlc3BvbnNlIokCCgVFdmVudBJPCht2aXJ0dWFsX2No",
            "YW5uZWxfcmVhZHlfZXZlbnQYCiABKAsyKC5kY3YuZXh0ZW5zaW9ucy5WaXJ0",
            "dWFsQ2hhbm5lbFJlYWR5RXZlbnRIABJRChx2aXJ0dWFsX2NoYW5uZWxfY2xv",
            "c2VkX2V2ZW50GBQgASgLMikuZGN2LmV4dGVuc2lvbnMuVmlydHVhbENoYW5u",
            "ZWxDbG9zZWRFdmVudEgAElMKHXN0cmVhbWluZ192aWV3c19jaGFuZ2VkX2V2",
            "ZW50GB4gASgLMiouZGN2LmV4dGVuc2lvbnMuU3RyZWFtaW5nVmlld3NDaGFu",
            "Z2VkRXZlbnRIAEIHCgVldmVudCJFChBFeHRlbnNpb25NZXNzYWdlEioKB3Jl",
            "cXVlc3QYASABKAsyFy5kY3YuZXh0ZW5zaW9ucy5SZXF1ZXN0SABCBQoDbXNn",
            "ImkKCkRjdk1lc3NhZ2USLAoIcmVzcG9uc2UYAiABKAsyGC5kY3YuZXh0ZW5z",
            "aW9ucy5SZXNwb25zZUgAEiYKBWV2ZW50GAMgASgLMhUuZGN2LmV4dGVuc2lv",
            "bnMuRXZlbnRIAEIFCgNtc2diBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.SoftwareInfo), global::Dcv.Extensions.SoftwareInfo.Parser, new[]{ "Name", "Version", "Os", "Arch", "Hostname" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.SoftwareInfo.Types.VersionNumber), global::Dcv.Extensions.SoftwareInfo.Types.VersionNumber.Parser, new[]{ "Major", "Minor", "Revision" }, null, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.Point), global::Dcv.Extensions.Point.Parser, new[]{ "X", "Y" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.Rect), global::Dcv.Extensions.Rect.Parser, new[]{ "X", "Y", "Width", "Height" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.StreamingViews), global::Dcv.Extensions.StreamingViews.Parser, new[]{ "StreamingView" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.StreamingViews.Types.StreamingView), global::Dcv.Extensions.StreamingViews.Types.StreamingView.Parser, new[]{ "ViewId", "LocalArea", "ZoomFactor", "RemoteOffset" }, null, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.GetDcvInfoRequest), global::Dcv.Extensions.GetDcvInfoRequest.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.GetManifestRequest), global::Dcv.Extensions.GetManifestRequest.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.SetupVirtualChannelRequest), global::Dcv.Extensions.SetupVirtualChannelRequest.Parser, new[]{ "VirtualChannelName", "RelayClientProcessId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.CloseVirtualChannelRequest), global::Dcv.Extensions.CloseVirtualChannelRequest.Parser, new[]{ "VirtualChannelName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.SetCursorPointRequest), global::Dcv.Extensions.SetCursorPointRequest.Parser, new[]{ "Point" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.GetStreamingViewsRequest), global::Dcv.Extensions.GetStreamingViewsRequest.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.IsPointInsideStreamingViewsRequest), global::Dcv.Extensions.IsPointInsideStreamingViewsRequest.Parser, new[]{ "Point" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.GetDcvInfoResponse), global::Dcv.Extensions.GetDcvInfoResponse.Parser, new[]{ "DcvRole", "DcvProcessId", "ServerInfo", "ClientInfo" }, null, new[]{ typeof(global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole) }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.GetManifestResponse), global::Dcv.Extensions.GetManifestResponse.Parser, new[]{ "ManifestPath" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.SetupVirtualChannelResponse), global::Dcv.Extensions.SetupVirtualChannelResponse.Parser, new[]{ "VirtualChannelName", "RelayPath", "RelayServerProcessId", "VirtualChannelAuthToken" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.CloseVirtualChannelResponse), global::Dcv.Extensions.CloseVirtualChannelResponse.Parser, new[]{ "VirtualChannelName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.SetCursorPointResponse), global::Dcv.Extensions.SetCursorPointResponse.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.GetStreamingViewsResponse), global::Dcv.Extensions.GetStreamingViewsResponse.Parser, new[]{ "StreamingViews" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.IsPointInsideStreamingViewsResponse), global::Dcv.Extensions.IsPointInsideStreamingViewsResponse.Parser, new[]{ "ViewId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.VirtualChannelReadyEvent), global::Dcv.Extensions.VirtualChannelReadyEvent.Parser, new[]{ "VirtualChannelName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.VirtualChannelClosedEvent), global::Dcv.Extensions.VirtualChannelClosedEvent.Parser, new[]{ "VirtualChannelName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.StreamingViewsChangedEvent), global::Dcv.Extensions.StreamingViewsChangedEvent.Parser, new[]{ "StreamingViews" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.Request), global::Dcv.Extensions.Request.Parser, new[]{ "RequestId", "GetDcvInfoRequest", "GetManifestRequest", "SetupVirtualChannelRequest", "CloseVirtualChannelRequest", "SetCursorPointRequest", "GetStreamingViewsRequest", "IsPointInsideStreamingViewsRequest" }, new[]{ "Request" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.Response), global::Dcv.Extensions.Response.Parser, new[]{ "RequestId", "Status", "GetDcvInfoResponse", "GetManifestResponse", "SetupVirtualChannelResponse", "CloseVirtualChannelResponse", "SetCursorPointResponse", "GetStreamingViewsResponse", "IsPointInsideStreamingViewsResponse" }, new[]{ "Response" }, new[]{ typeof(global::Dcv.Extensions.Response.Types.Status) }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.Event), global::Dcv.Extensions.Event.Parser, new[]{ "VirtualChannelReadyEvent", "VirtualChannelClosedEvent", "StreamingViewsChangedEvent" }, new[]{ "Event" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.ExtensionMessage), global::Dcv.Extensions.ExtensionMessage.Parser, new[]{ "Request" }, new[]{ "Msg" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Dcv.Extensions.DcvMessage), global::Dcv.Extensions.DcvMessage.Parser, new[]{ "Response", "Event" }, new[]{ "Msg" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  /// Information about DCV (Server or Client)
  /// </summary>
  public sealed partial class SoftwareInfo : pb::IMessage<SoftwareInfo>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SoftwareInfo> _parser = new pb::MessageParser<SoftwareInfo>(() => new SoftwareInfo());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SoftwareInfo> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SoftwareInfo() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SoftwareInfo(SoftwareInfo other) : this() {
      name_ = other.name_;
      version_ = other.version_ != null ? other.version_.Clone() : null;
      os_ = other.os_;
      arch_ = other.arch_;
      hostname_ = other.hostname_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SoftwareInfo Clone() {
      return new SoftwareInfo(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    /// <summary>
    /// The name of the software
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 2;
    private global::Dcv.Extensions.SoftwareInfo.Types.VersionNumber version_;
    /// <summary>
    /// The software version number
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.SoftwareInfo.Types.VersionNumber Version {
      get { return version_; }
      set {
        version_ = value;
      }
    }

    /// <summary>Field number for the "os" field.</summary>
    public const int OsFieldNumber = 3;
    private string os_ = "";
    /// <summary>
    /// The OS
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Os {
      get { return os_; }
      set {
        os_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "arch" field.</summary>
    public const int ArchFieldNumber = 4;
    private string arch_ = "";
    /// <summary>
    /// The architecture
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Arch {
      get { return arch_; }
      set {
        arch_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "hostname" field.</summary>
    public const int HostnameFieldNumber = 5;
    private string hostname_ = "";
    /// <summary>
    /// The hostname
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Hostname {
      get { return hostname_; }
      set {
        hostname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SoftwareInfo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SoftwareInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (!object.Equals(Version, other.Version)) return false;
      if (Os != other.Os) return false;
      if (Arch != other.Arch) return false;
      if (Hostname != other.Hostname) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (version_ != null) hash ^= Version.GetHashCode();
      if (Os.Length != 0) hash ^= Os.GetHashCode();
      if (Arch.Length != 0) hash ^= Arch.GetHashCode();
      if (Hostname.Length != 0) hash ^= Hostname.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (version_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Version);
      }
      if (Os.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Os);
      }
      if (Arch.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Arch);
      }
      if (Hostname.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Hostname);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (version_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Version);
      }
      if (Os.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Os);
      }
      if (Arch.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Arch);
      }
      if (Hostname.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Hostname);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (version_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Version);
      }
      if (Os.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Os);
      }
      if (Arch.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Arch);
      }
      if (Hostname.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Hostname);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SoftwareInfo other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.version_ != null) {
        if (version_ == null) {
          Version = new global::Dcv.Extensions.SoftwareInfo.Types.VersionNumber();
        }
        Version.MergeFrom(other.Version);
      }
      if (other.Os.Length != 0) {
        Os = other.Os;
      }
      if (other.Arch.Length != 0) {
        Arch = other.Arch;
      }
      if (other.Hostname.Length != 0) {
        Hostname = other.Hostname;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            if (version_ == null) {
              Version = new global::Dcv.Extensions.SoftwareInfo.Types.VersionNumber();
            }
            input.ReadMessage(Version);
            break;
          }
          case 26: {
            Os = input.ReadString();
            break;
          }
          case 34: {
            Arch = input.ReadString();
            break;
          }
          case 42: {
            Hostname = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            if (version_ == null) {
              Version = new global::Dcv.Extensions.SoftwareInfo.Types.VersionNumber();
            }
            input.ReadMessage(Version);
            break;
          }
          case 26: {
            Os = input.ReadString();
            break;
          }
          case 34: {
            Arch = input.ReadString();
            break;
          }
          case 42: {
            Hostname = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the SoftwareInfo message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      public sealed partial class VersionNumber : pb::IMessage<VersionNumber>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<VersionNumber> _parser = new pb::MessageParser<VersionNumber>(() => new VersionNumber());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<VersionNumber> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Dcv.Extensions.SoftwareInfo.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public VersionNumber() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public VersionNumber(VersionNumber other) : this() {
          major_ = other.major_;
          minor_ = other.minor_;
          revision_ = other.revision_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public VersionNumber Clone() {
          return new VersionNumber(this);
        }

        /// <summary>Field number for the "major" field.</summary>
        public const int MajorFieldNumber = 1;
        private uint major_;
        /// <summary>
        /// The major version number
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint Major {
          get { return major_; }
          set {
            major_ = value;
          }
        }

        /// <summary>Field number for the "minor" field.</summary>
        public const int MinorFieldNumber = 2;
        private uint minor_;
        /// <summary>
        /// The minor version number
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint Minor {
          get { return minor_; }
          set {
            minor_ = value;
          }
        }

        /// <summary>Field number for the "revision" field.</summary>
        public const int RevisionFieldNumber = 3;
        private uint revision_;
        /// <summary>
        /// The revision number
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint Revision {
          get { return revision_; }
          set {
            revision_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override bool Equals(object other) {
          return Equals(other as VersionNumber);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(VersionNumber other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Major != other.Major) return false;
          if (Minor != other.Minor) return false;
          if (Revision != other.Revision) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override int GetHashCode() {
          int hash = 1;
          if (Major != 0) hash ^= Major.GetHashCode();
          if (Minor != 0) hash ^= Minor.GetHashCode();
          if (Revision != 0) hash ^= Revision.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void WriteTo(pb::CodedOutputStream output) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          output.WriteRawMessage(this);
        #else
          if (Major != 0) {
            output.WriteRawTag(8);
            output.WriteUInt32(Major);
          }
          if (Minor != 0) {
            output.WriteRawTag(16);
            output.WriteUInt32(Minor);
          }
          if (Revision != 0) {
            output.WriteRawTag(24);
            output.WriteUInt32(Revision);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
          if (Major != 0) {
            output.WriteRawTag(8);
            output.WriteUInt32(Major);
          }
          if (Minor != 0) {
            output.WriteRawTag(16);
            output.WriteUInt32(Minor);
          }
          if (Revision != 0) {
            output.WriteRawTag(24);
            output.WriteUInt32(Revision);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(ref output);
          }
        }
        #endif

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int CalculateSize() {
          int size = 0;
          if (Major != 0) {
            size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Major);
          }
          if (Minor != 0) {
            size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Minor);
          }
          if (Revision != 0) {
            size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Revision);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(VersionNumber other) {
          if (other == null) {
            return;
          }
          if (other.Major != 0) {
            Major = other.Major;
          }
          if (other.Minor != 0) {
            Minor = other.Minor;
          }
          if (other.Revision != 0) {
            Revision = other.Revision;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(pb::CodedInputStream input) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          input.ReadRawMessage(this);
        #else
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 8: {
                Major = input.ReadUInt32();
                break;
              }
              case 16: {
                Minor = input.ReadUInt32();
                break;
              }
              case 24: {
                Revision = input.ReadUInt32();
                break;
              }
            }
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 8: {
                Major = input.ReadUInt32();
                break;
              }
              case 16: {
                Minor = input.ReadUInt32();
                break;
              }
              case 24: {
                Revision = input.ReadUInt32();
                break;
              }
            }
          }
        }
        #endif

      }

    }
    #endregion

  }

  public sealed partial class Point : pb::IMessage<Point>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Point> _parser = new pb::MessageParser<Point>(() => new Point());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Point> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Point() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Point(Point other) : this() {
      x_ = other.x_;
      y_ = other.y_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Point Clone() {
      return new Point(this);
    }

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { return x_; }
      set {
        x_ = value;
      }
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private int y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y {
      get { return y_; }
      set {
        y_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Point);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Point other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X != other.X) return false;
      if (Y != other.Y) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (X != 0) hash ^= X.GetHashCode();
      if (Y != 0) hash ^= Y.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (X != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (Y != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (X != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (Y != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (X != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (Y != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Point other) {
      if (other == null) {
        return;
      }
      if (other.X != 0) {
        X = other.X;
      }
      if (other.Y != 0) {
        Y = other.Y;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Rect : pb::IMessage<Rect>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Rect> _parser = new pb::MessageParser<Rect>(() => new Rect());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Rect> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Rect() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Rect(Rect other) : this() {
      x_ = other.x_;
      y_ = other.y_;
      width_ = other.width_;
      height_ = other.height_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Rect Clone() {
      return new Rect(this);
    }

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private int x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int X {
      get { return x_; }
      set {
        x_ = value;
      }
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private int y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Y {
      get { return y_; }
      set {
        y_ = value;
      }
    }

    /// <summary>Field number for the "width" field.</summary>
    public const int WidthFieldNumber = 3;
    private uint width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Width {
      get { return width_; }
      set {
        width_ = value;
      }
    }

    /// <summary>Field number for the "height" field.</summary>
    public const int HeightFieldNumber = 4;
    private uint height_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Height {
      get { return height_; }
      set {
        height_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Rect);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Rect other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (X != other.X) return false;
      if (Y != other.Y) return false;
      if (Width != other.Width) return false;
      if (Height != other.Height) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (X != 0) hash ^= X.GetHashCode();
      if (Y != 0) hash ^= Y.GetHashCode();
      if (Width != 0) hash ^= Width.GetHashCode();
      if (Height != 0) hash ^= Height.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (X != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (Y != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      if (Width != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(Width);
      }
      if (Height != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(Height);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (X != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(X);
      }
      if (Y != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Y);
      }
      if (Width != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(Width);
      }
      if (Height != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(Height);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (X != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(X);
      }
      if (Y != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y);
      }
      if (Width != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Width);
      }
      if (Height != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Height);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Rect other) {
      if (other == null) {
        return;
      }
      if (other.X != 0) {
        X = other.X;
      }
      if (other.Y != 0) {
        Y = other.Y;
      }
      if (other.Width != 0) {
        Width = other.Width;
      }
      if (other.Height != 0) {
        Height = other.Height;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
          case 24: {
            Width = input.ReadUInt32();
            break;
          }
          case 32: {
            Height = input.ReadUInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            X = input.ReadInt32();
            break;
          }
          case 16: {
            Y = input.ReadInt32();
            break;
          }
          case 24: {
            Width = input.ReadUInt32();
            break;
          }
          case 32: {
            Height = input.ReadUInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Common data to GetStreamingViewsResponse and StreamingViewsChangedEvent.
  /// </summary>
  public sealed partial class StreamingViews : pb::IMessage<StreamingViews>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<StreamingViews> _parser = new pb::MessageParser<StreamingViews>(() => new StreamingViews());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<StreamingViews> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamingViews() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamingViews(StreamingViews other) : this() {
      streamingView_ = other.streamingView_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamingViews Clone() {
      return new StreamingViews(this);
    }

    /// <summary>Field number for the "streaming_view" field.</summary>
    public const int StreamingViewFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Dcv.Extensions.StreamingViews.Types.StreamingView> _repeated_streamingView_codec
        = pb::FieldCodec.ForMessage(10, global::Dcv.Extensions.StreamingViews.Types.StreamingView.Parser);
    private readonly pbc::RepeatedField<global::Dcv.Extensions.StreamingViews.Types.StreamingView> streamingView_ = new pbc::RepeatedField<global::Dcv.Extensions.StreamingViews.Types.StreamingView>();
    /// <summary>
    /// Collection of streaming views.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Dcv.Extensions.StreamingViews.Types.StreamingView> StreamingView {
      get { return streamingView_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as StreamingViews);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StreamingViews other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!streamingView_.Equals(other.streamingView_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= streamingView_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      streamingView_.WriteTo(output, _repeated_streamingView_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      streamingView_.WriteTo(ref output, _repeated_streamingView_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += streamingView_.CalculateSize(_repeated_streamingView_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StreamingViews other) {
      if (other == null) {
        return;
      }
      streamingView_.Add(other.streamingView_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            streamingView_.AddEntriesFrom(input, _repeated_streamingView_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            streamingView_.AddEntriesFrom(ref input, _repeated_streamingView_codec);
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the StreamingViews message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      /// <summary>
      /// Data of one streaming view.
      /// </summary>
      public sealed partial class StreamingView : pb::IMessage<StreamingView>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<StreamingView> _parser = new pb::MessageParser<StreamingView>(() => new StreamingView());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<StreamingView> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Dcv.Extensions.StreamingViews.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public StreamingView() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public StreamingView(StreamingView other) : this() {
          viewId_ = other.viewId_;
          localArea_ = other.localArea_ != null ? other.localArea_.Clone() : null;
          zoomFactor_ = other.zoomFactor_;
          remoteOffset_ = other.remoteOffset_ != null ? other.remoteOffset_.Clone() : null;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public StreamingView Clone() {
          return new StreamingView(this);
        }

        /// <summary>Field number for the "view_id" field.</summary>
        public const int ViewIdFieldNumber = 1;
        private int viewId_;
        /// <summary>
        /// As returned in IsPointInsideStreamingViewsResponse.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int ViewId {
          get { return viewId_; }
          set {
            viewId_ = value;
          }
        }

        /// <summary>Field number for the "local_area" field.</summary>
        public const int LocalAreaFieldNumber = 2;
        private global::Dcv.Extensions.Rect localArea_;
        /// <summary>
        /// Local virtual screen coordinates.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::Dcv.Extensions.Rect LocalArea {
          get { return localArea_; }
          set {
            localArea_ = value;
          }
        }

        /// <summary>Field number for the "zoom_factor" field.</summary>
        public const int ZoomFactorFieldNumber = 3;
        private double zoomFactor_;
        /// <summary>
        /// Local over remote, eg. 2.0 means that local view is twice as big as remote's area.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public double ZoomFactor {
          get { return zoomFactor_; }
          set {
            zoomFactor_ = value;
          }
        }

        /// <summary>Field number for the "remote_offset" field.</summary>
        public const int RemoteOffsetFieldNumber = 4;
        private global::Dcv.Extensions.Point remoteOffset_;
        /// <summary>
        /// Remote virtual screen coordinates.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::Dcv.Extensions.Point RemoteOffset {
          get { return remoteOffset_; }
          set {
            remoteOffset_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override bool Equals(object other) {
          return Equals(other as StreamingView);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(StreamingView other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (ViewId != other.ViewId) return false;
          if (!object.Equals(LocalArea, other.LocalArea)) return false;
          if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(ZoomFactor, other.ZoomFactor)) return false;
          if (!object.Equals(RemoteOffset, other.RemoteOffset)) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override int GetHashCode() {
          int hash = 1;
          if (ViewId != 0) hash ^= ViewId.GetHashCode();
          if (localArea_ != null) hash ^= LocalArea.GetHashCode();
          if (ZoomFactor != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(ZoomFactor);
          if (remoteOffset_ != null) hash ^= RemoteOffset.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void WriteTo(pb::CodedOutputStream output) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          output.WriteRawMessage(this);
        #else
          if (ViewId != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(ViewId);
          }
          if (localArea_ != null) {
            output.WriteRawTag(18);
            output.WriteMessage(LocalArea);
          }
          if (ZoomFactor != 0D) {
            output.WriteRawTag(25);
            output.WriteDouble(ZoomFactor);
          }
          if (remoteOffset_ != null) {
            output.WriteRawTag(34);
            output.WriteMessage(RemoteOffset);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
          if (ViewId != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(ViewId);
          }
          if (localArea_ != null) {
            output.WriteRawTag(18);
            output.WriteMessage(LocalArea);
          }
          if (ZoomFactor != 0D) {
            output.WriteRawTag(25);
            output.WriteDouble(ZoomFactor);
          }
          if (remoteOffset_ != null) {
            output.WriteRawTag(34);
            output.WriteMessage(RemoteOffset);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(ref output);
          }
        }
        #endif

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int CalculateSize() {
          int size = 0;
          if (ViewId != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ViewId);
          }
          if (localArea_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(LocalArea);
          }
          if (ZoomFactor != 0D) {
            size += 1 + 8;
          }
          if (remoteOffset_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(RemoteOffset);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(StreamingView other) {
          if (other == null) {
            return;
          }
          if (other.ViewId != 0) {
            ViewId = other.ViewId;
          }
          if (other.localArea_ != null) {
            if (localArea_ == null) {
              LocalArea = new global::Dcv.Extensions.Rect();
            }
            LocalArea.MergeFrom(other.LocalArea);
          }
          if (other.ZoomFactor != 0D) {
            ZoomFactor = other.ZoomFactor;
          }
          if (other.remoteOffset_ != null) {
            if (remoteOffset_ == null) {
              RemoteOffset = new global::Dcv.Extensions.Point();
            }
            RemoteOffset.MergeFrom(other.RemoteOffset);
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(pb::CodedInputStream input) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          input.ReadRawMessage(this);
        #else
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 8: {
                ViewId = input.ReadInt32();
                break;
              }
              case 18: {
                if (localArea_ == null) {
                  LocalArea = new global::Dcv.Extensions.Rect();
                }
                input.ReadMessage(LocalArea);
                break;
              }
              case 25: {
                ZoomFactor = input.ReadDouble();
                break;
              }
              case 34: {
                if (remoteOffset_ == null) {
                  RemoteOffset = new global::Dcv.Extensions.Point();
                }
                input.ReadMessage(RemoteOffset);
                break;
              }
            }
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 8: {
                ViewId = input.ReadInt32();
                break;
              }
              case 18: {
                if (localArea_ == null) {
                  LocalArea = new global::Dcv.Extensions.Rect();
                }
                input.ReadMessage(LocalArea);
                break;
              }
              case 25: {
                ZoomFactor = input.ReadDouble();
                break;
              }
              case 34: {
                if (remoteOffset_ == null) {
                  RemoteOffset = new global::Dcv.Extensions.Point();
                }
                input.ReadMessage(RemoteOffset);
                break;
              }
            }
          }
        }
        #endif

      }

    }
    #endregion

  }

  /// <summary>
  /// Message GetDcvInfoRequest can be issued by both client and server extensions, the synchronous
  /// response message GetDcvInfoResponse will deliver information about DCV (Server and Client)
  /// used by the extension.
  /// </summary>
  public sealed partial class GetDcvInfoRequest : pb::IMessage<GetDcvInfoRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetDcvInfoRequest> _parser = new pb::MessageParser<GetDcvInfoRequest>(() => new GetDcvInfoRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetDcvInfoRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetDcvInfoRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetDcvInfoRequest(GetDcvInfoRequest other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetDcvInfoRequest Clone() {
      return new GetDcvInfoRequest(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetDcvInfoRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetDcvInfoRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetDcvInfoRequest other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Message GetManifestRequest can be issued by both client and server extensions, the synchronous
  /// response message GetManifestResponse will deliver the file path to the manifest used to launch
  /// the executable of the calling extension.
  /// </summary>
  public sealed partial class GetManifestRequest : pb::IMessage<GetManifestRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetManifestRequest> _parser = new pb::MessageParser<GetManifestRequest>(() => new GetManifestRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetManifestRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetManifestRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetManifestRequest(GetManifestRequest other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetManifestRequest Clone() {
      return new GetManifestRequest(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetManifestRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetManifestRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetManifestRequest other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Message SetupVirtualChannelRequest must be issued by both client and server extensions in order
  /// to establish a virtual channel between them.
  /// A synchronous response message of type SetupVirtualChannelRequest with status SUCCESS means that
  /// the processing of the request has begun, the extension will be able to send and receive data
  /// after receiving the asynchronous event VirtualChannelReadyEvent.
  /// </summary>
  public sealed partial class SetupVirtualChannelRequest : pb::IMessage<SetupVirtualChannelRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SetupVirtualChannelRequest> _parser = new pb::MessageParser<SetupVirtualChannelRequest>(() => new SetupVirtualChannelRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SetupVirtualChannelRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetupVirtualChannelRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetupVirtualChannelRequest(SetupVirtualChannelRequest other) : this() {
      virtualChannelName_ = other.virtualChannelName_;
      relayClientProcessId_ = other.relayClientProcessId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetupVirtualChannelRequest Clone() {
      return new SetupVirtualChannelRequest(this);
    }

    /// <summary>Field number for the "virtual_channel_name" field.</summary>
    public const int VirtualChannelNameFieldNumber = 1;
    private string virtualChannelName_ = "";
    /// <summary>
    /// Specific name of the virtual channel (the namespace is taken from the manifest).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VirtualChannelName {
      get { return virtualChannelName_; }
      set {
        virtualChannelName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "relay_client_process_id" field.</summary>
    public const int RelayClientProcessIdFieldNumber = 2;
    private long relayClientProcessId_;
    /// <summary>
    /// The pid of the process that will open the client side of the relay.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long RelayClientProcessId {
      get { return relayClientProcessId_; }
      set {
        relayClientProcessId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SetupVirtualChannelRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SetupVirtualChannelRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VirtualChannelName != other.VirtualChannelName) return false;
      if (RelayClientProcessId != other.RelayClientProcessId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (VirtualChannelName.Length != 0) hash ^= VirtualChannelName.GetHashCode();
      if (RelayClientProcessId != 0L) hash ^= RelayClientProcessId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (RelayClientProcessId != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(RelayClientProcessId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (RelayClientProcessId != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(RelayClientProcessId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (VirtualChannelName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VirtualChannelName);
      }
      if (RelayClientProcessId != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(RelayClientProcessId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SetupVirtualChannelRequest other) {
      if (other == null) {
        return;
      }
      if (other.VirtualChannelName.Length != 0) {
        VirtualChannelName = other.VirtualChannelName;
      }
      if (other.RelayClientProcessId != 0L) {
        RelayClientProcessId = other.RelayClientProcessId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
          case 16: {
            RelayClientProcessId = input.ReadInt64();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
          case 16: {
            RelayClientProcessId = input.ReadInt64();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Close a previously opened virtual channel.
  /// </summary>
  public sealed partial class CloseVirtualChannelRequest : pb::IMessage<CloseVirtualChannelRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CloseVirtualChannelRequest> _parser = new pb::MessageParser<CloseVirtualChannelRequest>(() => new CloseVirtualChannelRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CloseVirtualChannelRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseVirtualChannelRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseVirtualChannelRequest(CloseVirtualChannelRequest other) : this() {
      virtualChannelName_ = other.virtualChannelName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseVirtualChannelRequest Clone() {
      return new CloseVirtualChannelRequest(this);
    }

    /// <summary>Field number for the "virtual_channel_name" field.</summary>
    public const int VirtualChannelNameFieldNumber = 1;
    private string virtualChannelName_ = "";
    /// <summary>
    /// Specific name of the virtual channel to be closed.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VirtualChannelName {
      get { return virtualChannelName_; }
      set {
        virtualChannelName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CloseVirtualChannelRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CloseVirtualChannelRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VirtualChannelName != other.VirtualChannelName) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (VirtualChannelName.Length != 0) hash ^= VirtualChannelName.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (VirtualChannelName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VirtualChannelName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CloseVirtualChannelRequest other) {
      if (other == null) {
        return;
      }
      if (other.VirtualChannelName.Length != 0) {
        VirtualChannelName = other.VirtualChannelName;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Message SetCursorPointRequest will be followed by a synchronous SetCursorPointResponse.
  /// </summary>
  public sealed partial class SetCursorPointRequest : pb::IMessage<SetCursorPointRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SetCursorPointRequest> _parser = new pb::MessageParser<SetCursorPointRequest>(() => new SetCursorPointRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SetCursorPointRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetCursorPointRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetCursorPointRequest(SetCursorPointRequest other) : this() {
      point_ = other.point_ != null ? other.point_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetCursorPointRequest Clone() {
      return new SetCursorPointRequest(this);
    }

    /// <summary>Field number for the "point" field.</summary>
    public const int PointFieldNumber = 1;
    private global::Dcv.Extensions.Point point_;
    /// <summary>
    /// Local virtual screen coordinates.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.Point Point {
      get { return point_; }
      set {
        point_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SetCursorPointRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SetCursorPointRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Point, other.Point)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (point_ != null) hash ^= Point.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (point_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Point);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (point_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Point);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (point_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Point);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SetCursorPointRequest other) {
      if (other == null) {
        return;
      }
      if (other.point_ != null) {
        if (point_ == null) {
          Point = new global::Dcv.Extensions.Point();
        }
        Point.MergeFrom(other.Point);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (point_ == null) {
              Point = new global::Dcv.Extensions.Point();
            }
            input.ReadMessage(Point);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (point_ == null) {
              Point = new global::Dcv.Extensions.Point();
            }
            input.ReadMessage(Point);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Message GetStreamingViewsRequest will be followed by a synchronous GetStreamingViewsResponse.
  /// After the first GetStreamingViewsRequest is issued DCV will also start sending asynchronous
  /// StreamingViewsChangedEvent messages whenever the geometry of the local streaming views is changed
  /// (eg. the client window is resized or moved) or the geometry of the remote desktop is changed
  /// (eg. a monitor is added or removed). 
  /// </summary>
  public sealed partial class GetStreamingViewsRequest : pb::IMessage<GetStreamingViewsRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetStreamingViewsRequest> _parser = new pb::MessageParser<GetStreamingViewsRequest>(() => new GetStreamingViewsRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetStreamingViewsRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetStreamingViewsRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetStreamingViewsRequest(GetStreamingViewsRequest other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetStreamingViewsRequest Clone() {
      return new GetStreamingViewsRequest(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetStreamingViewsRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetStreamingViewsRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetStreamingViewsRequest other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Message IsPointInsideStreamingViewsRequest will be followed by a synchronous IsPointInsideStreamingViewsResponse.
  /// </summary>
  public sealed partial class IsPointInsideStreamingViewsRequest : pb::IMessage<IsPointInsideStreamingViewsRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<IsPointInsideStreamingViewsRequest> _parser = new pb::MessageParser<IsPointInsideStreamingViewsRequest>(() => new IsPointInsideStreamingViewsRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<IsPointInsideStreamingViewsRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[10]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public IsPointInsideStreamingViewsRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public IsPointInsideStreamingViewsRequest(IsPointInsideStreamingViewsRequest other) : this() {
      point_ = other.point_ != null ? other.point_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public IsPointInsideStreamingViewsRequest Clone() {
      return new IsPointInsideStreamingViewsRequest(this);
    }

    /// <summary>Field number for the "point" field.</summary>
    public const int PointFieldNumber = 1;
    private global::Dcv.Extensions.Point point_;
    /// <summary>
    /// Local virtual screen coordinates.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.Point Point {
      get { return point_; }
      set {
        point_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as IsPointInsideStreamingViewsRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(IsPointInsideStreamingViewsRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Point, other.Point)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (point_ != null) hash ^= Point.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (point_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Point);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (point_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Point);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (point_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Point);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(IsPointInsideStreamingViewsRequest other) {
      if (other == null) {
        return;
      }
      if (other.point_ != null) {
        if (point_ == null) {
          Point = new global::Dcv.Extensions.Point();
        }
        Point.MergeFrom(other.Point);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (point_ == null) {
              Point = new global::Dcv.Extensions.Point();
            }
            input.ReadMessage(Point);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (point_ == null) {
              Point = new global::Dcv.Extensions.Point();
            }
            input.ReadMessage(Point);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Synchronous response to a GetDcvInfoRequest
  /// </summary>
  public sealed partial class GetDcvInfoResponse : pb::IMessage<GetDcvInfoResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetDcvInfoResponse> _parser = new pb::MessageParser<GetDcvInfoResponse>(() => new GetDcvInfoResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetDcvInfoResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[11]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetDcvInfoResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetDcvInfoResponse(GetDcvInfoResponse other) : this() {
      dcvRole_ = other.dcvRole_;
      dcvProcessId_ = other.dcvProcessId_;
      serverInfo_ = other.serverInfo_ != null ? other.serverInfo_.Clone() : null;
      clientInfo_ = other.clientInfo_ != null ? other.clientInfo_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetDcvInfoResponse Clone() {
      return new GetDcvInfoResponse(this);
    }

    /// <summary>Field number for the "dcv_role" field.</summary>
    public const int DcvRoleFieldNumber = 1;
    private global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole dcvRole_ = global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole.Server;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole DcvRole {
      get { return dcvRole_; }
      set {
        dcvRole_ = value;
      }
    }

    /// <summary>Field number for the "dcv_process_id" field.</summary>
    public const int DcvProcessIdFieldNumber = 2;
    private long dcvProcessId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long DcvProcessId {
      get { return dcvProcessId_; }
      set {
        dcvProcessId_ = value;
      }
    }

    /// <summary>Field number for the "server_info" field.</summary>
    public const int ServerInfoFieldNumber = 3;
    private global::Dcv.Extensions.SoftwareInfo serverInfo_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.SoftwareInfo ServerInfo {
      get { return serverInfo_; }
      set {
        serverInfo_ = value;
      }
    }

    /// <summary>Field number for the "client_info" field.</summary>
    public const int ClientInfoFieldNumber = 4;
    private global::Dcv.Extensions.SoftwareInfo clientInfo_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.SoftwareInfo ClientInfo {
      get { return clientInfo_; }
      set {
        clientInfo_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetDcvInfoResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetDcvInfoResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (DcvRole != other.DcvRole) return false;
      if (DcvProcessId != other.DcvProcessId) return false;
      if (!object.Equals(ServerInfo, other.ServerInfo)) return false;
      if (!object.Equals(ClientInfo, other.ClientInfo)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (DcvRole != global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole.Server) hash ^= DcvRole.GetHashCode();
      if (DcvProcessId != 0L) hash ^= DcvProcessId.GetHashCode();
      if (serverInfo_ != null) hash ^= ServerInfo.GetHashCode();
      if (clientInfo_ != null) hash ^= ClientInfo.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (DcvRole != global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole.Server) {
        output.WriteRawTag(8);
        output.WriteEnum((int) DcvRole);
      }
      if (DcvProcessId != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(DcvProcessId);
      }
      if (serverInfo_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(ServerInfo);
      }
      if (clientInfo_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(ClientInfo);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (DcvRole != global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole.Server) {
        output.WriteRawTag(8);
        output.WriteEnum((int) DcvRole);
      }
      if (DcvProcessId != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(DcvProcessId);
      }
      if (serverInfo_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(ServerInfo);
      }
      if (clientInfo_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(ClientInfo);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (DcvRole != global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole.Server) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DcvRole);
      }
      if (DcvProcessId != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(DcvProcessId);
      }
      if (serverInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ServerInfo);
      }
      if (clientInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ClientInfo);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetDcvInfoResponse other) {
      if (other == null) {
        return;
      }
      if (other.DcvRole != global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole.Server) {
        DcvRole = other.DcvRole;
      }
      if (other.DcvProcessId != 0L) {
        DcvProcessId = other.DcvProcessId;
      }
      if (other.serverInfo_ != null) {
        if (serverInfo_ == null) {
          ServerInfo = new global::Dcv.Extensions.SoftwareInfo();
        }
        ServerInfo.MergeFrom(other.ServerInfo);
      }
      if (other.clientInfo_ != null) {
        if (clientInfo_ == null) {
          ClientInfo = new global::Dcv.Extensions.SoftwareInfo();
        }
        ClientInfo.MergeFrom(other.ClientInfo);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            DcvRole = (global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole) input.ReadEnum();
            break;
          }
          case 16: {
            DcvProcessId = input.ReadInt64();
            break;
          }
          case 26: {
            if (serverInfo_ == null) {
              ServerInfo = new global::Dcv.Extensions.SoftwareInfo();
            }
            input.ReadMessage(ServerInfo);
            break;
          }
          case 34: {
            if (clientInfo_ == null) {
              ClientInfo = new global::Dcv.Extensions.SoftwareInfo();
            }
            input.ReadMessage(ClientInfo);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            DcvRole = (global::Dcv.Extensions.GetDcvInfoResponse.Types.DcvRole) input.ReadEnum();
            break;
          }
          case 16: {
            DcvProcessId = input.ReadInt64();
            break;
          }
          case 26: {
            if (serverInfo_ == null) {
              ServerInfo = new global::Dcv.Extensions.SoftwareInfo();
            }
            input.ReadMessage(ServerInfo);
            break;
          }
          case 34: {
            if (clientInfo_ == null) {
              ClientInfo = new global::Dcv.Extensions.SoftwareInfo();
            }
            input.ReadMessage(ClientInfo);
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the GetDcvInfoResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      public enum DcvRole {
        [pbr::OriginalName("Server")] Server = 0,
        [pbr::OriginalName("Client")] Client = 1,
      }

    }
    #endregion

  }

  /// <summary>
  /// Synchronous response to a GetManifestRequest.
  /// </summary>
  public sealed partial class GetManifestResponse : pb::IMessage<GetManifestResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetManifestResponse> _parser = new pb::MessageParser<GetManifestResponse>(() => new GetManifestResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetManifestResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[12]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetManifestResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetManifestResponse(GetManifestResponse other) : this() {
      manifestPath_ = other.manifestPath_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetManifestResponse Clone() {
      return new GetManifestResponse(this);
    }

    /// <summary>Field number for the "manifest_path" field.</summary>
    public const int ManifestPathFieldNumber = 1;
    private string manifestPath_ = "";
    /// <summary>
    /// File path to the manifest file.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ManifestPath {
      get { return manifestPath_; }
      set {
        manifestPath_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetManifestResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetManifestResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ManifestPath != other.ManifestPath) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ManifestPath.Length != 0) hash ^= ManifestPath.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ManifestPath.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ManifestPath);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ManifestPath.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ManifestPath);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ManifestPath.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ManifestPath);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetManifestResponse other) {
      if (other == null) {
        return;
      }
      if (other.ManifestPath.Length != 0) {
        ManifestPath = other.ManifestPath;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            ManifestPath = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            ManifestPath = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Synchronous response to a SetupVirtualChannelRequest.
  /// </summary>
  public sealed partial class SetupVirtualChannelResponse : pb::IMessage<SetupVirtualChannelResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SetupVirtualChannelResponse> _parser = new pb::MessageParser<SetupVirtualChannelResponse>(() => new SetupVirtualChannelResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SetupVirtualChannelResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[13]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetupVirtualChannelResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetupVirtualChannelResponse(SetupVirtualChannelResponse other) : this() {
      virtualChannelName_ = other.virtualChannelName_;
      relayPath_ = other.relayPath_;
      relayServerProcessId_ = other.relayServerProcessId_;
      virtualChannelAuthToken_ = other.virtualChannelAuthToken_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetupVirtualChannelResponse Clone() {
      return new SetupVirtualChannelResponse(this);
    }

    /// <summary>Field number for the "virtual_channel_name" field.</summary>
    public const int VirtualChannelNameFieldNumber = 1;
    private string virtualChannelName_ = "";
    /// <summary>
    /// Specific name of the virtual channel to be set up.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VirtualChannelName {
      get { return virtualChannelName_; }
      set {
        virtualChannelName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "relay_path" field.</summary>
    public const int RelayPathFieldNumber = 2;
    private string relayPath_ = "";
    /// <summary>
    /// Full name of the relay to the virtual channel.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RelayPath {
      get { return relayPath_; }
      set {
        relayPath_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "relay_server_process_id" field.</summary>
    public const int RelayServerProcessIdFieldNumber = 3;
    private long relayServerProcessId_;
    /// <summary>
    /// The pid of the process that will open the server side of the relay.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long RelayServerProcessId {
      get { return relayServerProcessId_; }
      set {
        relayServerProcessId_ = value;
      }
    }

    /// <summary>Field number for the "virtual_channel_auth_token" field.</summary>
    public const int VirtualChannelAuthTokenFieldNumber = 4;
    private pb::ByteString virtualChannelAuthToken_ = pb::ByteString.Empty;
    /// <summary>
    /// The auth token to send on the virtual channel to validate the connecting process.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString VirtualChannelAuthToken {
      get { return virtualChannelAuthToken_; }
      set {
        virtualChannelAuthToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SetupVirtualChannelResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SetupVirtualChannelResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VirtualChannelName != other.VirtualChannelName) return false;
      if (RelayPath != other.RelayPath) return false;
      if (RelayServerProcessId != other.RelayServerProcessId) return false;
      if (VirtualChannelAuthToken != other.VirtualChannelAuthToken) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (VirtualChannelName.Length != 0) hash ^= VirtualChannelName.GetHashCode();
      if (RelayPath.Length != 0) hash ^= RelayPath.GetHashCode();
      if (RelayServerProcessId != 0L) hash ^= RelayServerProcessId.GetHashCode();
      if (VirtualChannelAuthToken.Length != 0) hash ^= VirtualChannelAuthToken.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (RelayPath.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(RelayPath);
      }
      if (RelayServerProcessId != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(RelayServerProcessId);
      }
      if (VirtualChannelAuthToken.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(VirtualChannelAuthToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (RelayPath.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(RelayPath);
      }
      if (RelayServerProcessId != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(RelayServerProcessId);
      }
      if (VirtualChannelAuthToken.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(VirtualChannelAuthToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (VirtualChannelName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VirtualChannelName);
      }
      if (RelayPath.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RelayPath);
      }
      if (RelayServerProcessId != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(RelayServerProcessId);
      }
      if (VirtualChannelAuthToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(VirtualChannelAuthToken);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SetupVirtualChannelResponse other) {
      if (other == null) {
        return;
      }
      if (other.VirtualChannelName.Length != 0) {
        VirtualChannelName = other.VirtualChannelName;
      }
      if (other.RelayPath.Length != 0) {
        RelayPath = other.RelayPath;
      }
      if (other.RelayServerProcessId != 0L) {
        RelayServerProcessId = other.RelayServerProcessId;
      }
      if (other.VirtualChannelAuthToken.Length != 0) {
        VirtualChannelAuthToken = other.VirtualChannelAuthToken;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
          case 18: {
            RelayPath = input.ReadString();
            break;
          }
          case 24: {
            RelayServerProcessId = input.ReadInt64();
            break;
          }
          case 34: {
            VirtualChannelAuthToken = input.ReadBytes();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
          case 18: {
            RelayPath = input.ReadString();
            break;
          }
          case 24: {
            RelayServerProcessId = input.ReadInt64();
            break;
          }
          case 34: {
            VirtualChannelAuthToken = input.ReadBytes();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Response to a CloseVirtualChannelRequest.
  /// </summary>
  public sealed partial class CloseVirtualChannelResponse : pb::IMessage<CloseVirtualChannelResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CloseVirtualChannelResponse> _parser = new pb::MessageParser<CloseVirtualChannelResponse>(() => new CloseVirtualChannelResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CloseVirtualChannelResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[14]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseVirtualChannelResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseVirtualChannelResponse(CloseVirtualChannelResponse other) : this() {
      virtualChannelName_ = other.virtualChannelName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseVirtualChannelResponse Clone() {
      return new CloseVirtualChannelResponse(this);
    }

    /// <summary>Field number for the "virtual_channel_name" field.</summary>
    public const int VirtualChannelNameFieldNumber = 1;
    private string virtualChannelName_ = "";
    /// <summary>
    /// Specific name of the virtual channel to be closed.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VirtualChannelName {
      get { return virtualChannelName_; }
      set {
        virtualChannelName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CloseVirtualChannelResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CloseVirtualChannelResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VirtualChannelName != other.VirtualChannelName) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (VirtualChannelName.Length != 0) hash ^= VirtualChannelName.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (VirtualChannelName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VirtualChannelName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CloseVirtualChannelResponse other) {
      if (other == null) {
        return;
      }
      if (other.VirtualChannelName.Length != 0) {
        VirtualChannelName = other.VirtualChannelName;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Response to a SetCursorPointRequest.
  /// </summary>
  public sealed partial class SetCursorPointResponse : pb::IMessage<SetCursorPointResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SetCursorPointResponse> _parser = new pb::MessageParser<SetCursorPointResponse>(() => new SetCursorPointResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SetCursorPointResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[15]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetCursorPointResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetCursorPointResponse(SetCursorPointResponse other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetCursorPointResponse Clone() {
      return new SetCursorPointResponse(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SetCursorPointResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SetCursorPointResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SetCursorPointResponse other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Synchronous response to a GetStreamingViewsRequest.
  /// </summary>
  public sealed partial class GetStreamingViewsResponse : pb::IMessage<GetStreamingViewsResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetStreamingViewsResponse> _parser = new pb::MessageParser<GetStreamingViewsResponse>(() => new GetStreamingViewsResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetStreamingViewsResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[16]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetStreamingViewsResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetStreamingViewsResponse(GetStreamingViewsResponse other) : this() {
      streamingViews_ = other.streamingViews_ != null ? other.streamingViews_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetStreamingViewsResponse Clone() {
      return new GetStreamingViewsResponse(this);
    }

    /// <summary>Field number for the "streaming_views" field.</summary>
    public const int StreamingViewsFieldNumber = 1;
    private global::Dcv.Extensions.StreamingViews streamingViews_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.StreamingViews StreamingViews {
      get { return streamingViews_; }
      set {
        streamingViews_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetStreamingViewsResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetStreamingViewsResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(StreamingViews, other.StreamingViews)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (streamingViews_ != null) hash ^= StreamingViews.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (streamingViews_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(StreamingViews);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (streamingViews_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(StreamingViews);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (streamingViews_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StreamingViews);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetStreamingViewsResponse other) {
      if (other == null) {
        return;
      }
      if (other.streamingViews_ != null) {
        if (streamingViews_ == null) {
          StreamingViews = new global::Dcv.Extensions.StreamingViews();
        }
        StreamingViews.MergeFrom(other.StreamingViews);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (streamingViews_ == null) {
              StreamingViews = new global::Dcv.Extensions.StreamingViews();
            }
            input.ReadMessage(StreamingViews);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (streamingViews_ == null) {
              StreamingViews = new global::Dcv.Extensions.StreamingViews();
            }
            input.ReadMessage(StreamingViews);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Response to a IsPointInsideStreamingViewsRequest.
  /// If the point lies inside a local view and it is visible (eg. not covered by another window or a local GUI element),
  /// the view_id of that view is returned, otherwise -1 is returned.
  /// </summary>
  public sealed partial class IsPointInsideStreamingViewsResponse : pb::IMessage<IsPointInsideStreamingViewsResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<IsPointInsideStreamingViewsResponse> _parser = new pb::MessageParser<IsPointInsideStreamingViewsResponse>(() => new IsPointInsideStreamingViewsResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<IsPointInsideStreamingViewsResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[17]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public IsPointInsideStreamingViewsResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public IsPointInsideStreamingViewsResponse(IsPointInsideStreamingViewsResponse other) : this() {
      viewId_ = other.viewId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public IsPointInsideStreamingViewsResponse Clone() {
      return new IsPointInsideStreamingViewsResponse(this);
    }

    /// <summary>Field number for the "view_id" field.</summary>
    public const int ViewIdFieldNumber = 1;
    private int viewId_;
    /// <summary>
    /// From GetStreamingViewsResponse or GetStreamingViewsChangedEvent, -1 if the point lies outside all local views.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ViewId {
      get { return viewId_; }
      set {
        viewId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as IsPointInsideStreamingViewsResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(IsPointInsideStreamingViewsResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ViewId != other.ViewId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ViewId != 0) hash ^= ViewId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ViewId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ViewId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ViewId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ViewId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ViewId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ViewId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(IsPointInsideStreamingViewsResponse other) {
      if (other == null) {
        return;
      }
      if (other.ViewId != 0) {
        ViewId = other.ViewId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ViewId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ViewId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Successfull asynchronous response to a SetupVirtualChannelRequest.
  /// </summary>
  public sealed partial class VirtualChannelReadyEvent : pb::IMessage<VirtualChannelReadyEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<VirtualChannelReadyEvent> _parser = new pb::MessageParser<VirtualChannelReadyEvent>(() => new VirtualChannelReadyEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<VirtualChannelReadyEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[18]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public VirtualChannelReadyEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public VirtualChannelReadyEvent(VirtualChannelReadyEvent other) : this() {
      virtualChannelName_ = other.virtualChannelName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public VirtualChannelReadyEvent Clone() {
      return new VirtualChannelReadyEvent(this);
    }

    /// <summary>Field number for the "virtual_channel_name" field.</summary>
    public const int VirtualChannelNameFieldNumber = 1;
    private string virtualChannelName_ = "";
    /// <summary>
    /// Specific name of the virtual channel set up.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VirtualChannelName {
      get { return virtualChannelName_; }
      set {
        virtualChannelName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as VirtualChannelReadyEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(VirtualChannelReadyEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VirtualChannelName != other.VirtualChannelName) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (VirtualChannelName.Length != 0) hash ^= VirtualChannelName.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (VirtualChannelName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VirtualChannelName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(VirtualChannelReadyEvent other) {
      if (other == null) {
        return;
      }
      if (other.VirtualChannelName.Length != 0) {
        VirtualChannelName = other.VirtualChannelName;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Asynchronous notification, the virtual channel has been closed by the other party.
  /// </summary>
  public sealed partial class VirtualChannelClosedEvent : pb::IMessage<VirtualChannelClosedEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<VirtualChannelClosedEvent> _parser = new pb::MessageParser<VirtualChannelClosedEvent>(() => new VirtualChannelClosedEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<VirtualChannelClosedEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[19]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public VirtualChannelClosedEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public VirtualChannelClosedEvent(VirtualChannelClosedEvent other) : this() {
      virtualChannelName_ = other.virtualChannelName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public VirtualChannelClosedEvent Clone() {
      return new VirtualChannelClosedEvent(this);
    }

    /// <summary>Field number for the "virtual_channel_name" field.</summary>
    public const int VirtualChannelNameFieldNumber = 1;
    private string virtualChannelName_ = "";
    /// <summary>
    /// Specific name of the closed virtual channel.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VirtualChannelName {
      get { return virtualChannelName_; }
      set {
        virtualChannelName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as VirtualChannelClosedEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(VirtualChannelClosedEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VirtualChannelName != other.VirtualChannelName) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (VirtualChannelName.Length != 0) hash ^= VirtualChannelName.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (VirtualChannelName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VirtualChannelName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (VirtualChannelName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VirtualChannelName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(VirtualChannelClosedEvent other) {
      if (other == null) {
        return;
      }
      if (other.VirtualChannelName.Length != 0) {
        VirtualChannelName = other.VirtualChannelName;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            VirtualChannelName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Asynchronous notification, the geometry of local views or of the remote virtual desktop has changed.
  /// </summary>
  public sealed partial class StreamingViewsChangedEvent : pb::IMessage<StreamingViewsChangedEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<StreamingViewsChangedEvent> _parser = new pb::MessageParser<StreamingViewsChangedEvent>(() => new StreamingViewsChangedEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<StreamingViewsChangedEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[20]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamingViewsChangedEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamingViewsChangedEvent(StreamingViewsChangedEvent other) : this() {
      streamingViews_ = other.streamingViews_ != null ? other.streamingViews_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamingViewsChangedEvent Clone() {
      return new StreamingViewsChangedEvent(this);
    }

    /// <summary>Field number for the "streaming_views" field.</summary>
    public const int StreamingViewsFieldNumber = 1;
    private global::Dcv.Extensions.StreamingViews streamingViews_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.StreamingViews StreamingViews {
      get { return streamingViews_; }
      set {
        streamingViews_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as StreamingViewsChangedEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StreamingViewsChangedEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(StreamingViews, other.StreamingViews)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (streamingViews_ != null) hash ^= StreamingViews.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (streamingViews_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(StreamingViews);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (streamingViews_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(StreamingViews);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (streamingViews_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StreamingViews);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StreamingViewsChangedEvent other) {
      if (other == null) {
        return;
      }
      if (other.streamingViews_ != null) {
        if (streamingViews_ == null) {
          StreamingViews = new global::Dcv.Extensions.StreamingViews();
        }
        StreamingViews.MergeFrom(other.StreamingViews);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (streamingViews_ == null) {
              StreamingViews = new global::Dcv.Extensions.StreamingViews();
            }
            input.ReadMessage(StreamingViews);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (streamingViews_ == null) {
              StreamingViews = new global::Dcv.Extensions.StreamingViews();
            }
            input.ReadMessage(StreamingViews);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Request : pb::IMessage<Request>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Request> _parser = new pb::MessageParser<Request>(() => new Request());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Request> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[21]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Request() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Request(Request other) : this() {
      requestId_ = other.requestId_;
      switch (other.RequestCase) {
        case RequestOneofCase.GetDcvInfoRequest:
          GetDcvInfoRequest = other.GetDcvInfoRequest.Clone();
          break;
        case RequestOneofCase.GetManifestRequest:
          GetManifestRequest = other.GetManifestRequest.Clone();
          break;
        case RequestOneofCase.SetupVirtualChannelRequest:
          SetupVirtualChannelRequest = other.SetupVirtualChannelRequest.Clone();
          break;
        case RequestOneofCase.CloseVirtualChannelRequest:
          CloseVirtualChannelRequest = other.CloseVirtualChannelRequest.Clone();
          break;
        case RequestOneofCase.SetCursorPointRequest:
          SetCursorPointRequest = other.SetCursorPointRequest.Clone();
          break;
        case RequestOneofCase.GetStreamingViewsRequest:
          GetStreamingViewsRequest = other.GetStreamingViewsRequest.Clone();
          break;
        case RequestOneofCase.IsPointInsideStreamingViewsRequest:
          IsPointInsideStreamingViewsRequest = other.IsPointInsideStreamingViewsRequest.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Request Clone() {
      return new Request(this);
    }

    /// <summary>Field number for the "request_id" field.</summary>
    public const int RequestIdFieldNumber = 1;
    private string requestId_ = "";
    /// <summary>
    /// Optional: unique id for the request used to match requests with responses.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RequestId {
      get { return requestId_; }
      set {
        requestId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "get_dcv_info_request" field.</summary>
    public const int GetDcvInfoRequestFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.GetDcvInfoRequest GetDcvInfoRequest {
      get { return requestCase_ == RequestOneofCase.GetDcvInfoRequest ? (global::Dcv.Extensions.GetDcvInfoRequest) request_ : null; }
      set {
        request_ = value;
        requestCase_ = value == null ? RequestOneofCase.None : RequestOneofCase.GetDcvInfoRequest;
      }
    }

    /// <summary>Field number for the "get_manifest_request" field.</summary>
    public const int GetManifestRequestFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.GetManifestRequest GetManifestRequest {
      get { return requestCase_ == RequestOneofCase.GetManifestRequest ? (global::Dcv.Extensions.GetManifestRequest) request_ : null; }
      set {
        request_ = value;
        requestCase_ = value == null ? RequestOneofCase.None : RequestOneofCase.GetManifestRequest;
      }
    }

    /// <summary>Field number for the "setup_virtual_channel_request" field.</summary>
    public const int SetupVirtualChannelRequestFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.SetupVirtualChannelRequest SetupVirtualChannelRequest {
      get { return requestCase_ == RequestOneofCase.SetupVirtualChannelRequest ? (global::Dcv.Extensions.SetupVirtualChannelRequest) request_ : null; }
      set {
        request_ = value;
        requestCase_ = value == null ? RequestOneofCase.None : RequestOneofCase.SetupVirtualChannelRequest;
      }
    }

    /// <summary>Field number for the "close_virtual_channel_request" field.</summary>
    public const int CloseVirtualChannelRequestFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.CloseVirtualChannelRequest CloseVirtualChannelRequest {
      get { return requestCase_ == RequestOneofCase.CloseVirtualChannelRequest ? (global::Dcv.Extensions.CloseVirtualChannelRequest) request_ : null; }
      set {
        request_ = value;
        requestCase_ = value == null ? RequestOneofCase.None : RequestOneofCase.CloseVirtualChannelRequest;
      }
    }

    /// <summary>Field number for the "set_cursor_point_request" field.</summary>
    public const int SetCursorPointRequestFieldNumber = 30;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.SetCursorPointRequest SetCursorPointRequest {
      get { return requestCase_ == RequestOneofCase.SetCursorPointRequest ? (global::Dcv.Extensions.SetCursorPointRequest) request_ : null; }
      set {
        request_ = value;
        requestCase_ = value == null ? RequestOneofCase.None : RequestOneofCase.SetCursorPointRequest;
      }
    }

    /// <summary>Field number for the "get_streaming_views_request" field.</summary>
    public const int GetStreamingViewsRequestFieldNumber = 31;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.GetStreamingViewsRequest GetStreamingViewsRequest {
      get { return requestCase_ == RequestOneofCase.GetStreamingViewsRequest ? (global::Dcv.Extensions.GetStreamingViewsRequest) request_ : null; }
      set {
        request_ = value;
        requestCase_ = value == null ? RequestOneofCase.None : RequestOneofCase.GetStreamingViewsRequest;
      }
    }

    /// <summary>Field number for the "is_point_inside_streaming_views_request" field.</summary>
    public const int IsPointInsideStreamingViewsRequestFieldNumber = 32;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.IsPointInsideStreamingViewsRequest IsPointInsideStreamingViewsRequest {
      get { return requestCase_ == RequestOneofCase.IsPointInsideStreamingViewsRequest ? (global::Dcv.Extensions.IsPointInsideStreamingViewsRequest) request_ : null; }
      set {
        request_ = value;
        requestCase_ = value == null ? RequestOneofCase.None : RequestOneofCase.IsPointInsideStreamingViewsRequest;
      }
    }

    private object request_;
    /// <summary>Enum of possible cases for the "request" oneof.</summary>
    public enum RequestOneofCase {
      None = 0,
      GetDcvInfoRequest = 10,
      GetManifestRequest = 11,
      SetupVirtualChannelRequest = 20,
      CloseVirtualChannelRequest = 21,
      SetCursorPointRequest = 30,
      GetStreamingViewsRequest = 31,
      IsPointInsideStreamingViewsRequest = 32,
    }
    private RequestOneofCase requestCase_ = RequestOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RequestOneofCase RequestCase {
      get { return requestCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRequest() {
      requestCase_ = RequestOneofCase.None;
      request_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Request);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Request other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (RequestId != other.RequestId) return false;
      if (!object.Equals(GetDcvInfoRequest, other.GetDcvInfoRequest)) return false;
      if (!object.Equals(GetManifestRequest, other.GetManifestRequest)) return false;
      if (!object.Equals(SetupVirtualChannelRequest, other.SetupVirtualChannelRequest)) return false;
      if (!object.Equals(CloseVirtualChannelRequest, other.CloseVirtualChannelRequest)) return false;
      if (!object.Equals(SetCursorPointRequest, other.SetCursorPointRequest)) return false;
      if (!object.Equals(GetStreamingViewsRequest, other.GetStreamingViewsRequest)) return false;
      if (!object.Equals(IsPointInsideStreamingViewsRequest, other.IsPointInsideStreamingViewsRequest)) return false;
      if (RequestCase != other.RequestCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (RequestId.Length != 0) hash ^= RequestId.GetHashCode();
      if (requestCase_ == RequestOneofCase.GetDcvInfoRequest) hash ^= GetDcvInfoRequest.GetHashCode();
      if (requestCase_ == RequestOneofCase.GetManifestRequest) hash ^= GetManifestRequest.GetHashCode();
      if (requestCase_ == RequestOneofCase.SetupVirtualChannelRequest) hash ^= SetupVirtualChannelRequest.GetHashCode();
      if (requestCase_ == RequestOneofCase.CloseVirtualChannelRequest) hash ^= CloseVirtualChannelRequest.GetHashCode();
      if (requestCase_ == RequestOneofCase.SetCursorPointRequest) hash ^= SetCursorPointRequest.GetHashCode();
      if (requestCase_ == RequestOneofCase.GetStreamingViewsRequest) hash ^= GetStreamingViewsRequest.GetHashCode();
      if (requestCase_ == RequestOneofCase.IsPointInsideStreamingViewsRequest) hash ^= IsPointInsideStreamingViewsRequest.GetHashCode();
      hash ^= (int) requestCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (RequestId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(RequestId);
      }
      if (requestCase_ == RequestOneofCase.GetDcvInfoRequest) {
        output.WriteRawTag(82);
        output.WriteMessage(GetDcvInfoRequest);
      }
      if (requestCase_ == RequestOneofCase.GetManifestRequest) {
        output.WriteRawTag(90);
        output.WriteMessage(GetManifestRequest);
      }
      if (requestCase_ == RequestOneofCase.SetupVirtualChannelRequest) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(SetupVirtualChannelRequest);
      }
      if (requestCase_ == RequestOneofCase.CloseVirtualChannelRequest) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(CloseVirtualChannelRequest);
      }
      if (requestCase_ == RequestOneofCase.SetCursorPointRequest) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(SetCursorPointRequest);
      }
      if (requestCase_ == RequestOneofCase.GetStreamingViewsRequest) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(GetStreamingViewsRequest);
      }
      if (requestCase_ == RequestOneofCase.IsPointInsideStreamingViewsRequest) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(IsPointInsideStreamingViewsRequest);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (RequestId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(RequestId);
      }
      if (requestCase_ == RequestOneofCase.GetDcvInfoRequest) {
        output.WriteRawTag(82);
        output.WriteMessage(GetDcvInfoRequest);
      }
      if (requestCase_ == RequestOneofCase.GetManifestRequest) {
        output.WriteRawTag(90);
        output.WriteMessage(GetManifestRequest);
      }
      if (requestCase_ == RequestOneofCase.SetupVirtualChannelRequest) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(SetupVirtualChannelRequest);
      }
      if (requestCase_ == RequestOneofCase.CloseVirtualChannelRequest) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(CloseVirtualChannelRequest);
      }
      if (requestCase_ == RequestOneofCase.SetCursorPointRequest) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(SetCursorPointRequest);
      }
      if (requestCase_ == RequestOneofCase.GetStreamingViewsRequest) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(GetStreamingViewsRequest);
      }
      if (requestCase_ == RequestOneofCase.IsPointInsideStreamingViewsRequest) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(IsPointInsideStreamingViewsRequest);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (RequestId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestId);
      }
      if (requestCase_ == RequestOneofCase.GetDcvInfoRequest) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetDcvInfoRequest);
      }
      if (requestCase_ == RequestOneofCase.GetManifestRequest) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetManifestRequest);
      }
      if (requestCase_ == RequestOneofCase.SetupVirtualChannelRequest) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetupVirtualChannelRequest);
      }
      if (requestCase_ == RequestOneofCase.CloseVirtualChannelRequest) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(CloseVirtualChannelRequest);
      }
      if (requestCase_ == RequestOneofCase.SetCursorPointRequest) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetCursorPointRequest);
      }
      if (requestCase_ == RequestOneofCase.GetStreamingViewsRequest) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(GetStreamingViewsRequest);
      }
      if (requestCase_ == RequestOneofCase.IsPointInsideStreamingViewsRequest) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(IsPointInsideStreamingViewsRequest);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Request other) {
      if (other == null) {
        return;
      }
      if (other.RequestId.Length != 0) {
        RequestId = other.RequestId;
      }
      switch (other.RequestCase) {
        case RequestOneofCase.GetDcvInfoRequest:
          if (GetDcvInfoRequest == null) {
            GetDcvInfoRequest = new global::Dcv.Extensions.GetDcvInfoRequest();
          }
          GetDcvInfoRequest.MergeFrom(other.GetDcvInfoRequest);
          break;
        case RequestOneofCase.GetManifestRequest:
          if (GetManifestRequest == null) {
            GetManifestRequest = new global::Dcv.Extensions.GetManifestRequest();
          }
          GetManifestRequest.MergeFrom(other.GetManifestRequest);
          break;
        case RequestOneofCase.SetupVirtualChannelRequest:
          if (SetupVirtualChannelRequest == null) {
            SetupVirtualChannelRequest = new global::Dcv.Extensions.SetupVirtualChannelRequest();
          }
          SetupVirtualChannelRequest.MergeFrom(other.SetupVirtualChannelRequest);
          break;
        case RequestOneofCase.CloseVirtualChannelRequest:
          if (CloseVirtualChannelRequest == null) {
            CloseVirtualChannelRequest = new global::Dcv.Extensions.CloseVirtualChannelRequest();
          }
          CloseVirtualChannelRequest.MergeFrom(other.CloseVirtualChannelRequest);
          break;
        case RequestOneofCase.SetCursorPointRequest:
          if (SetCursorPointRequest == null) {
            SetCursorPointRequest = new global::Dcv.Extensions.SetCursorPointRequest();
          }
          SetCursorPointRequest.MergeFrom(other.SetCursorPointRequest);
          break;
        case RequestOneofCase.GetStreamingViewsRequest:
          if (GetStreamingViewsRequest == null) {
            GetStreamingViewsRequest = new global::Dcv.Extensions.GetStreamingViewsRequest();
          }
          GetStreamingViewsRequest.MergeFrom(other.GetStreamingViewsRequest);
          break;
        case RequestOneofCase.IsPointInsideStreamingViewsRequest:
          if (IsPointInsideStreamingViewsRequest == null) {
            IsPointInsideStreamingViewsRequest = new global::Dcv.Extensions.IsPointInsideStreamingViewsRequest();
          }
          IsPointInsideStreamingViewsRequest.MergeFrom(other.IsPointInsideStreamingViewsRequest);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            RequestId = input.ReadString();
            break;
          }
          case 82: {
            global::Dcv.Extensions.GetDcvInfoRequest subBuilder = new global::Dcv.Extensions.GetDcvInfoRequest();
            if (requestCase_ == RequestOneofCase.GetDcvInfoRequest) {
              subBuilder.MergeFrom(GetDcvInfoRequest);
            }
            input.ReadMessage(subBuilder);
            GetDcvInfoRequest = subBuilder;
            break;
          }
          case 90: {
            global::Dcv.Extensions.GetManifestRequest subBuilder = new global::Dcv.Extensions.GetManifestRequest();
            if (requestCase_ == RequestOneofCase.GetManifestRequest) {
              subBuilder.MergeFrom(GetManifestRequest);
            }
            input.ReadMessage(subBuilder);
            GetManifestRequest = subBuilder;
            break;
          }
          case 162: {
            global::Dcv.Extensions.SetupVirtualChannelRequest subBuilder = new global::Dcv.Extensions.SetupVirtualChannelRequest();
            if (requestCase_ == RequestOneofCase.SetupVirtualChannelRequest) {
              subBuilder.MergeFrom(SetupVirtualChannelRequest);
            }
            input.ReadMessage(subBuilder);
            SetupVirtualChannelRequest = subBuilder;
            break;
          }
          case 170: {
            global::Dcv.Extensions.CloseVirtualChannelRequest subBuilder = new global::Dcv.Extensions.CloseVirtualChannelRequest();
            if (requestCase_ == RequestOneofCase.CloseVirtualChannelRequest) {
              subBuilder.MergeFrom(CloseVirtualChannelRequest);
            }
            input.ReadMessage(subBuilder);
            CloseVirtualChannelRequest = subBuilder;
            break;
          }
          case 242: {
            global::Dcv.Extensions.SetCursorPointRequest subBuilder = new global::Dcv.Extensions.SetCursorPointRequest();
            if (requestCase_ == RequestOneofCase.SetCursorPointRequest) {
              subBuilder.MergeFrom(SetCursorPointRequest);
            }
            input.ReadMessage(subBuilder);
            SetCursorPointRequest = subBuilder;
            break;
          }
          case 250: {
            global::Dcv.Extensions.GetStreamingViewsRequest subBuilder = new global::Dcv.Extensions.GetStreamingViewsRequest();
            if (requestCase_ == RequestOneofCase.GetStreamingViewsRequest) {
              subBuilder.MergeFrom(GetStreamingViewsRequest);
            }
            input.ReadMessage(subBuilder);
            GetStreamingViewsRequest = subBuilder;
            break;
          }
          case 258: {
            global::Dcv.Extensions.IsPointInsideStreamingViewsRequest subBuilder = new global::Dcv.Extensions.IsPointInsideStreamingViewsRequest();
            if (requestCase_ == RequestOneofCase.IsPointInsideStreamingViewsRequest) {
              subBuilder.MergeFrom(IsPointInsideStreamingViewsRequest);
            }
            input.ReadMessage(subBuilder);
            IsPointInsideStreamingViewsRequest = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            RequestId = input.ReadString();
            break;
          }
          case 82: {
            global::Dcv.Extensions.GetDcvInfoRequest subBuilder = new global::Dcv.Extensions.GetDcvInfoRequest();
            if (requestCase_ == RequestOneofCase.GetDcvInfoRequest) {
              subBuilder.MergeFrom(GetDcvInfoRequest);
            }
            input.ReadMessage(subBuilder);
            GetDcvInfoRequest = subBuilder;
            break;
          }
          case 90: {
            global::Dcv.Extensions.GetManifestRequest subBuilder = new global::Dcv.Extensions.GetManifestRequest();
            if (requestCase_ == RequestOneofCase.GetManifestRequest) {
              subBuilder.MergeFrom(GetManifestRequest);
            }
            input.ReadMessage(subBuilder);
            GetManifestRequest = subBuilder;
            break;
          }
          case 162: {
            global::Dcv.Extensions.SetupVirtualChannelRequest subBuilder = new global::Dcv.Extensions.SetupVirtualChannelRequest();
            if (requestCase_ == RequestOneofCase.SetupVirtualChannelRequest) {
              subBuilder.MergeFrom(SetupVirtualChannelRequest);
            }
            input.ReadMessage(subBuilder);
            SetupVirtualChannelRequest = subBuilder;
            break;
          }
          case 170: {
            global::Dcv.Extensions.CloseVirtualChannelRequest subBuilder = new global::Dcv.Extensions.CloseVirtualChannelRequest();
            if (requestCase_ == RequestOneofCase.CloseVirtualChannelRequest) {
              subBuilder.MergeFrom(CloseVirtualChannelRequest);
            }
            input.ReadMessage(subBuilder);
            CloseVirtualChannelRequest = subBuilder;
            break;
          }
          case 242: {
            global::Dcv.Extensions.SetCursorPointRequest subBuilder = new global::Dcv.Extensions.SetCursorPointRequest();
            if (requestCase_ == RequestOneofCase.SetCursorPointRequest) {
              subBuilder.MergeFrom(SetCursorPointRequest);
            }
            input.ReadMessage(subBuilder);
            SetCursorPointRequest = subBuilder;
            break;
          }
          case 250: {
            global::Dcv.Extensions.GetStreamingViewsRequest subBuilder = new global::Dcv.Extensions.GetStreamingViewsRequest();
            if (requestCase_ == RequestOneofCase.GetStreamingViewsRequest) {
              subBuilder.MergeFrom(GetStreamingViewsRequest);
            }
            input.ReadMessage(subBuilder);
            GetStreamingViewsRequest = subBuilder;
            break;
          }
          case 258: {
            global::Dcv.Extensions.IsPointInsideStreamingViewsRequest subBuilder = new global::Dcv.Extensions.IsPointInsideStreamingViewsRequest();
            if (requestCase_ == RequestOneofCase.IsPointInsideStreamingViewsRequest) {
              subBuilder.MergeFrom(IsPointInsideStreamingViewsRequest);
            }
            input.ReadMessage(subBuilder);
            IsPointInsideStreamingViewsRequest = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Response : pb::IMessage<Response>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Response> _parser = new pb::MessageParser<Response>(() => new Response());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Response> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[22]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Response() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Response(Response other) : this() {
      requestId_ = other.requestId_;
      status_ = other.status_;
      switch (other.ResponseCase) {
        case ResponseOneofCase.GetDcvInfoResponse:
          GetDcvInfoResponse = other.GetDcvInfoResponse.Clone();
          break;
        case ResponseOneofCase.GetManifestResponse:
          GetManifestResponse = other.GetManifestResponse.Clone();
          break;
        case ResponseOneofCase.SetupVirtualChannelResponse:
          SetupVirtualChannelResponse = other.SetupVirtualChannelResponse.Clone();
          break;
        case ResponseOneofCase.CloseVirtualChannelResponse:
          CloseVirtualChannelResponse = other.CloseVirtualChannelResponse.Clone();
          break;
        case ResponseOneofCase.SetCursorPointResponse:
          SetCursorPointResponse = other.SetCursorPointResponse.Clone();
          break;
        case ResponseOneofCase.GetStreamingViewsResponse:
          GetStreamingViewsResponse = other.GetStreamingViewsResponse.Clone();
          break;
        case ResponseOneofCase.IsPointInsideStreamingViewsResponse:
          IsPointInsideStreamingViewsResponse = other.IsPointInsideStreamingViewsResponse.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Response Clone() {
      return new Response(this);
    }

    /// <summary>Field number for the "request_id" field.</summary>
    public const int RequestIdFieldNumber = 1;
    private string requestId_ = "";
    /// <summary>
    /// The same id sent in the request.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RequestId {
      get { return requestId_; }
      set {
        requestId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 2;
    private global::Dcv.Extensions.Response.Types.Status status_ = global::Dcv.Extensions.Response.Types.Status.None;
    /// <summary>
    /// Whether the Request was successful or an error it produced.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.Response.Types.Status Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    /// <summary>Field number for the "get_dcv_info_response" field.</summary>
    public const int GetDcvInfoResponseFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.GetDcvInfoResponse GetDcvInfoResponse {
      get { return responseCase_ == ResponseOneofCase.GetDcvInfoResponse ? (global::Dcv.Extensions.GetDcvInfoResponse) response_ : null; }
      set {
        response_ = value;
        responseCase_ = value == null ? ResponseOneofCase.None : ResponseOneofCase.GetDcvInfoResponse;
      }
    }

    /// <summary>Field number for the "get_manifest_response" field.</summary>
    public const int GetManifestResponseFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.GetManifestResponse GetManifestResponse {
      get { return responseCase_ == ResponseOneofCase.GetManifestResponse ? (global::Dcv.Extensions.GetManifestResponse) response_ : null; }
      set {
        response_ = value;
        responseCase_ = value == null ? ResponseOneofCase.None : ResponseOneofCase.GetManifestResponse;
      }
    }

    /// <summary>Field number for the "setup_virtual_channel_response" field.</summary>
    public const int SetupVirtualChannelResponseFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.SetupVirtualChannelResponse SetupVirtualChannelResponse {
      get { return responseCase_ == ResponseOneofCase.SetupVirtualChannelResponse ? (global::Dcv.Extensions.SetupVirtualChannelResponse) response_ : null; }
      set {
        response_ = value;
        responseCase_ = value == null ? ResponseOneofCase.None : ResponseOneofCase.SetupVirtualChannelResponse;
      }
    }

    /// <summary>Field number for the "close_virtual_channel_response" field.</summary>
    public const int CloseVirtualChannelResponseFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.CloseVirtualChannelResponse CloseVirtualChannelResponse {
      get { return responseCase_ == ResponseOneofCase.CloseVirtualChannelResponse ? (global::Dcv.Extensions.CloseVirtualChannelResponse) response_ : null; }
      set {
        response_ = value;
        responseCase_ = value == null ? ResponseOneofCase.None : ResponseOneofCase.CloseVirtualChannelResponse;
      }
    }

    /// <summary>Field number for the "set_cursor_point_response" field.</summary>
    public const int SetCursorPointResponseFieldNumber = 30;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.SetCursorPointResponse SetCursorPointResponse {
      get { return responseCase_ == ResponseOneofCase.SetCursorPointResponse ? (global::Dcv.Extensions.SetCursorPointResponse) response_ : null; }
      set {
        response_ = value;
        responseCase_ = value == null ? ResponseOneofCase.None : ResponseOneofCase.SetCursorPointResponse;
      }
    }

    /// <summary>Field number for the "get_streaming_views_response" field.</summary>
    public const int GetStreamingViewsResponseFieldNumber = 31;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.GetStreamingViewsResponse GetStreamingViewsResponse {
      get { return responseCase_ == ResponseOneofCase.GetStreamingViewsResponse ? (global::Dcv.Extensions.GetStreamingViewsResponse) response_ : null; }
      set {
        response_ = value;
        responseCase_ = value == null ? ResponseOneofCase.None : ResponseOneofCase.GetStreamingViewsResponse;
      }
    }

    /// <summary>Field number for the "is_point_inside_streaming_views_response" field.</summary>
    public const int IsPointInsideStreamingViewsResponseFieldNumber = 32;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.IsPointInsideStreamingViewsResponse IsPointInsideStreamingViewsResponse {
      get { return responseCase_ == ResponseOneofCase.IsPointInsideStreamingViewsResponse ? (global::Dcv.Extensions.IsPointInsideStreamingViewsResponse) response_ : null; }
      set {
        response_ = value;
        responseCase_ = value == null ? ResponseOneofCase.None : ResponseOneofCase.IsPointInsideStreamingViewsResponse;
      }
    }

    private object response_;
    /// <summary>Enum of possible cases for the "response" oneof.</summary>
    public enum ResponseOneofCase {
      None = 0,
      GetDcvInfoResponse = 10,
      GetManifestResponse = 11,
      SetupVirtualChannelResponse = 20,
      CloseVirtualChannelResponse = 21,
      SetCursorPointResponse = 30,
      GetStreamingViewsResponse = 31,
      IsPointInsideStreamingViewsResponse = 32,
    }
    private ResponseOneofCase responseCase_ = ResponseOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResponseOneofCase ResponseCase {
      get { return responseCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearResponse() {
      responseCase_ = ResponseOneofCase.None;
      response_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Response);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Response other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (RequestId != other.RequestId) return false;
      if (Status != other.Status) return false;
      if (!object.Equals(GetDcvInfoResponse, other.GetDcvInfoResponse)) return false;
      if (!object.Equals(GetManifestResponse, other.GetManifestResponse)) return false;
      if (!object.Equals(SetupVirtualChannelResponse, other.SetupVirtualChannelResponse)) return false;
      if (!object.Equals(CloseVirtualChannelResponse, other.CloseVirtualChannelResponse)) return false;
      if (!object.Equals(SetCursorPointResponse, other.SetCursorPointResponse)) return false;
      if (!object.Equals(GetStreamingViewsResponse, other.GetStreamingViewsResponse)) return false;
      if (!object.Equals(IsPointInsideStreamingViewsResponse, other.IsPointInsideStreamingViewsResponse)) return false;
      if (ResponseCase != other.ResponseCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (RequestId.Length != 0) hash ^= RequestId.GetHashCode();
      if (Status != global::Dcv.Extensions.Response.Types.Status.None) hash ^= Status.GetHashCode();
      if (responseCase_ == ResponseOneofCase.GetDcvInfoResponse) hash ^= GetDcvInfoResponse.GetHashCode();
      if (responseCase_ == ResponseOneofCase.GetManifestResponse) hash ^= GetManifestResponse.GetHashCode();
      if (responseCase_ == ResponseOneofCase.SetupVirtualChannelResponse) hash ^= SetupVirtualChannelResponse.GetHashCode();
      if (responseCase_ == ResponseOneofCase.CloseVirtualChannelResponse) hash ^= CloseVirtualChannelResponse.GetHashCode();
      if (responseCase_ == ResponseOneofCase.SetCursorPointResponse) hash ^= SetCursorPointResponse.GetHashCode();
      if (responseCase_ == ResponseOneofCase.GetStreamingViewsResponse) hash ^= GetStreamingViewsResponse.GetHashCode();
      if (responseCase_ == ResponseOneofCase.IsPointInsideStreamingViewsResponse) hash ^= IsPointInsideStreamingViewsResponse.GetHashCode();
      hash ^= (int) responseCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (RequestId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(RequestId);
      }
      if (Status != global::Dcv.Extensions.Response.Types.Status.None) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Status);
      }
      if (responseCase_ == ResponseOneofCase.GetDcvInfoResponse) {
        output.WriteRawTag(82);
        output.WriteMessage(GetDcvInfoResponse);
      }
      if (responseCase_ == ResponseOneofCase.GetManifestResponse) {
        output.WriteRawTag(90);
        output.WriteMessage(GetManifestResponse);
      }
      if (responseCase_ == ResponseOneofCase.SetupVirtualChannelResponse) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(SetupVirtualChannelResponse);
      }
      if (responseCase_ == ResponseOneofCase.CloseVirtualChannelResponse) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(CloseVirtualChannelResponse);
      }
      if (responseCase_ == ResponseOneofCase.SetCursorPointResponse) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(SetCursorPointResponse);
      }
      if (responseCase_ == ResponseOneofCase.GetStreamingViewsResponse) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(GetStreamingViewsResponse);
      }
      if (responseCase_ == ResponseOneofCase.IsPointInsideStreamingViewsResponse) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(IsPointInsideStreamingViewsResponse);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (RequestId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(RequestId);
      }
      if (Status != global::Dcv.Extensions.Response.Types.Status.None) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Status);
      }
      if (responseCase_ == ResponseOneofCase.GetDcvInfoResponse) {
        output.WriteRawTag(82);
        output.WriteMessage(GetDcvInfoResponse);
      }
      if (responseCase_ == ResponseOneofCase.GetManifestResponse) {
        output.WriteRawTag(90);
        output.WriteMessage(GetManifestResponse);
      }
      if (responseCase_ == ResponseOneofCase.SetupVirtualChannelResponse) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(SetupVirtualChannelResponse);
      }
      if (responseCase_ == ResponseOneofCase.CloseVirtualChannelResponse) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(CloseVirtualChannelResponse);
      }
      if (responseCase_ == ResponseOneofCase.SetCursorPointResponse) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(SetCursorPointResponse);
      }
      if (responseCase_ == ResponseOneofCase.GetStreamingViewsResponse) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(GetStreamingViewsResponse);
      }
      if (responseCase_ == ResponseOneofCase.IsPointInsideStreamingViewsResponse) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(IsPointInsideStreamingViewsResponse);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (RequestId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestId);
      }
      if (Status != global::Dcv.Extensions.Response.Types.Status.None) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
      }
      if (responseCase_ == ResponseOneofCase.GetDcvInfoResponse) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetDcvInfoResponse);
      }
      if (responseCase_ == ResponseOneofCase.GetManifestResponse) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetManifestResponse);
      }
      if (responseCase_ == ResponseOneofCase.SetupVirtualChannelResponse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetupVirtualChannelResponse);
      }
      if (responseCase_ == ResponseOneofCase.CloseVirtualChannelResponse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(CloseVirtualChannelResponse);
      }
      if (responseCase_ == ResponseOneofCase.SetCursorPointResponse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetCursorPointResponse);
      }
      if (responseCase_ == ResponseOneofCase.GetStreamingViewsResponse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(GetStreamingViewsResponse);
      }
      if (responseCase_ == ResponseOneofCase.IsPointInsideStreamingViewsResponse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(IsPointInsideStreamingViewsResponse);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Response other) {
      if (other == null) {
        return;
      }
      if (other.RequestId.Length != 0) {
        RequestId = other.RequestId;
      }
      if (other.Status != global::Dcv.Extensions.Response.Types.Status.None) {
        Status = other.Status;
      }
      switch (other.ResponseCase) {
        case ResponseOneofCase.GetDcvInfoResponse:
          if (GetDcvInfoResponse == null) {
            GetDcvInfoResponse = new global::Dcv.Extensions.GetDcvInfoResponse();
          }
          GetDcvInfoResponse.MergeFrom(other.GetDcvInfoResponse);
          break;
        case ResponseOneofCase.GetManifestResponse:
          if (GetManifestResponse == null) {
            GetManifestResponse = new global::Dcv.Extensions.GetManifestResponse();
          }
          GetManifestResponse.MergeFrom(other.GetManifestResponse);
          break;
        case ResponseOneofCase.SetupVirtualChannelResponse:
          if (SetupVirtualChannelResponse == null) {
            SetupVirtualChannelResponse = new global::Dcv.Extensions.SetupVirtualChannelResponse();
          }
          SetupVirtualChannelResponse.MergeFrom(other.SetupVirtualChannelResponse);
          break;
        case ResponseOneofCase.CloseVirtualChannelResponse:
          if (CloseVirtualChannelResponse == null) {
            CloseVirtualChannelResponse = new global::Dcv.Extensions.CloseVirtualChannelResponse();
          }
          CloseVirtualChannelResponse.MergeFrom(other.CloseVirtualChannelResponse);
          break;
        case ResponseOneofCase.SetCursorPointResponse:
          if (SetCursorPointResponse == null) {
            SetCursorPointResponse = new global::Dcv.Extensions.SetCursorPointResponse();
          }
          SetCursorPointResponse.MergeFrom(other.SetCursorPointResponse);
          break;
        case ResponseOneofCase.GetStreamingViewsResponse:
          if (GetStreamingViewsResponse == null) {
            GetStreamingViewsResponse = new global::Dcv.Extensions.GetStreamingViewsResponse();
          }
          GetStreamingViewsResponse.MergeFrom(other.GetStreamingViewsResponse);
          break;
        case ResponseOneofCase.IsPointInsideStreamingViewsResponse:
          if (IsPointInsideStreamingViewsResponse == null) {
            IsPointInsideStreamingViewsResponse = new global::Dcv.Extensions.IsPointInsideStreamingViewsResponse();
          }
          IsPointInsideStreamingViewsResponse.MergeFrom(other.IsPointInsideStreamingViewsResponse);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            RequestId = input.ReadString();
            break;
          }
          case 16: {
            Status = (global::Dcv.Extensions.Response.Types.Status) input.ReadEnum();
            break;
          }
          case 82: {
            global::Dcv.Extensions.GetDcvInfoResponse subBuilder = new global::Dcv.Extensions.GetDcvInfoResponse();
            if (responseCase_ == ResponseOneofCase.GetDcvInfoResponse) {
              subBuilder.MergeFrom(GetDcvInfoResponse);
            }
            input.ReadMessage(subBuilder);
            GetDcvInfoResponse = subBuilder;
            break;
          }
          case 90: {
            global::Dcv.Extensions.GetManifestResponse subBuilder = new global::Dcv.Extensions.GetManifestResponse();
            if (responseCase_ == ResponseOneofCase.GetManifestResponse) {
              subBuilder.MergeFrom(GetManifestResponse);
            }
            input.ReadMessage(subBuilder);
            GetManifestResponse = subBuilder;
            break;
          }
          case 162: {
            global::Dcv.Extensions.SetupVirtualChannelResponse subBuilder = new global::Dcv.Extensions.SetupVirtualChannelResponse();
            if (responseCase_ == ResponseOneofCase.SetupVirtualChannelResponse) {
              subBuilder.MergeFrom(SetupVirtualChannelResponse);
            }
            input.ReadMessage(subBuilder);
            SetupVirtualChannelResponse = subBuilder;
            break;
          }
          case 170: {
            global::Dcv.Extensions.CloseVirtualChannelResponse subBuilder = new global::Dcv.Extensions.CloseVirtualChannelResponse();
            if (responseCase_ == ResponseOneofCase.CloseVirtualChannelResponse) {
              subBuilder.MergeFrom(CloseVirtualChannelResponse);
            }
            input.ReadMessage(subBuilder);
            CloseVirtualChannelResponse = subBuilder;
            break;
          }
          case 242: {
            global::Dcv.Extensions.SetCursorPointResponse subBuilder = new global::Dcv.Extensions.SetCursorPointResponse();
            if (responseCase_ == ResponseOneofCase.SetCursorPointResponse) {
              subBuilder.MergeFrom(SetCursorPointResponse);
            }
            input.ReadMessage(subBuilder);
            SetCursorPointResponse = subBuilder;
            break;
          }
          case 250: {
            global::Dcv.Extensions.GetStreamingViewsResponse subBuilder = new global::Dcv.Extensions.GetStreamingViewsResponse();
            if (responseCase_ == ResponseOneofCase.GetStreamingViewsResponse) {
              subBuilder.MergeFrom(GetStreamingViewsResponse);
            }
            input.ReadMessage(subBuilder);
            GetStreamingViewsResponse = subBuilder;
            break;
          }
          case 258: {
            global::Dcv.Extensions.IsPointInsideStreamingViewsResponse subBuilder = new global::Dcv.Extensions.IsPointInsideStreamingViewsResponse();
            if (responseCase_ == ResponseOneofCase.IsPointInsideStreamingViewsResponse) {
              subBuilder.MergeFrom(IsPointInsideStreamingViewsResponse);
            }
            input.ReadMessage(subBuilder);
            IsPointInsideStreamingViewsResponse = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            RequestId = input.ReadString();
            break;
          }
          case 16: {
            Status = (global::Dcv.Extensions.Response.Types.Status) input.ReadEnum();
            break;
          }
          case 82: {
            global::Dcv.Extensions.GetDcvInfoResponse subBuilder = new global::Dcv.Extensions.GetDcvInfoResponse();
            if (responseCase_ == ResponseOneofCase.GetDcvInfoResponse) {
              subBuilder.MergeFrom(GetDcvInfoResponse);
            }
            input.ReadMessage(subBuilder);
            GetDcvInfoResponse = subBuilder;
            break;
          }
          case 90: {
            global::Dcv.Extensions.GetManifestResponse subBuilder = new global::Dcv.Extensions.GetManifestResponse();
            if (responseCase_ == ResponseOneofCase.GetManifestResponse) {
              subBuilder.MergeFrom(GetManifestResponse);
            }
            input.ReadMessage(subBuilder);
            GetManifestResponse = subBuilder;
            break;
          }
          case 162: {
            global::Dcv.Extensions.SetupVirtualChannelResponse subBuilder = new global::Dcv.Extensions.SetupVirtualChannelResponse();
            if (responseCase_ == ResponseOneofCase.SetupVirtualChannelResponse) {
              subBuilder.MergeFrom(SetupVirtualChannelResponse);
            }
            input.ReadMessage(subBuilder);
            SetupVirtualChannelResponse = subBuilder;
            break;
          }
          case 170: {
            global::Dcv.Extensions.CloseVirtualChannelResponse subBuilder = new global::Dcv.Extensions.CloseVirtualChannelResponse();
            if (responseCase_ == ResponseOneofCase.CloseVirtualChannelResponse) {
              subBuilder.MergeFrom(CloseVirtualChannelResponse);
            }
            input.ReadMessage(subBuilder);
            CloseVirtualChannelResponse = subBuilder;
            break;
          }
          case 242: {
            global::Dcv.Extensions.SetCursorPointResponse subBuilder = new global::Dcv.Extensions.SetCursorPointResponse();
            if (responseCase_ == ResponseOneofCase.SetCursorPointResponse) {
              subBuilder.MergeFrom(SetCursorPointResponse);
            }
            input.ReadMessage(subBuilder);
            SetCursorPointResponse = subBuilder;
            break;
          }
          case 250: {
            global::Dcv.Extensions.GetStreamingViewsResponse subBuilder = new global::Dcv.Extensions.GetStreamingViewsResponse();
            if (responseCase_ == ResponseOneofCase.GetStreamingViewsResponse) {
              subBuilder.MergeFrom(GetStreamingViewsResponse);
            }
            input.ReadMessage(subBuilder);
            GetStreamingViewsResponse = subBuilder;
            break;
          }
          case 258: {
            global::Dcv.Extensions.IsPointInsideStreamingViewsResponse subBuilder = new global::Dcv.Extensions.IsPointInsideStreamingViewsResponse();
            if (responseCase_ == ResponseOneofCase.IsPointInsideStreamingViewsResponse) {
              subBuilder.MergeFrom(IsPointInsideStreamingViewsResponse);
            }
            input.ReadMessage(subBuilder);
            IsPointInsideStreamingViewsResponse = subBuilder;
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the Response message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      public enum Status {
        /// <summary>
        /// Unset value.
        /// </summary>
        [pbr::OriginalName("NONE")] None = 0,
        /// <summary>
        /// The request was successful.
        /// </summary>
        [pbr::OriginalName("SUCCESS")] Success = 1,
        [pbr::OriginalName("ERROR_GENERIC")] ErrorGeneric = 10,
        [pbr::OriginalName("ERROR_ACCESS_DENIED")] ErrorAccessDenied = 11,
        [pbr::OriginalName("ERROR_NOT_IMPLEMENTED")] ErrorNotImplemented = 12,
        [pbr::OriginalName("ERROR_INVALID_PARAMETER")] ErrorInvalidParameter = 13,
        [pbr::OriginalName("ERROR_INVALID_VIRTUAL_CHANNEL_NAMESPACE_IN_MANIFEST")] ErrorInvalidVirtualChannelNamespaceInManifest = 14,
        [pbr::OriginalName("ERROR_TOO_MANY_VIRTUAL_CHANNELS")] ErrorTooManyVirtualChannels = 15,
      }

    }
    #endregion

  }

  public sealed partial class Event : pb::IMessage<Event>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Event> _parser = new pb::MessageParser<Event>(() => new Event());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Event> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[23]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Event() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Event(Event other) : this() {
      switch (other.EventCase) {
        case EventOneofCase.VirtualChannelReadyEvent:
          VirtualChannelReadyEvent = other.VirtualChannelReadyEvent.Clone();
          break;
        case EventOneofCase.VirtualChannelClosedEvent:
          VirtualChannelClosedEvent = other.VirtualChannelClosedEvent.Clone();
          break;
        case EventOneofCase.StreamingViewsChangedEvent:
          StreamingViewsChangedEvent = other.StreamingViewsChangedEvent.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Event Clone() {
      return new Event(this);
    }

    /// <summary>Field number for the "virtual_channel_ready_event" field.</summary>
    public const int VirtualChannelReadyEventFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.VirtualChannelReadyEvent VirtualChannelReadyEvent {
      get { return eventCase_ == EventOneofCase.VirtualChannelReadyEvent ? (global::Dcv.Extensions.VirtualChannelReadyEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.VirtualChannelReadyEvent;
      }
    }

    /// <summary>Field number for the "virtual_channel_closed_event" field.</summary>
    public const int VirtualChannelClosedEventFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.VirtualChannelClosedEvent VirtualChannelClosedEvent {
      get { return eventCase_ == EventOneofCase.VirtualChannelClosedEvent ? (global::Dcv.Extensions.VirtualChannelClosedEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.VirtualChannelClosedEvent;
      }
    }

    /// <summary>Field number for the "streaming_views_changed_event" field.</summary>
    public const int StreamingViewsChangedEventFieldNumber = 30;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.StreamingViewsChangedEvent StreamingViewsChangedEvent {
      get { return eventCase_ == EventOneofCase.StreamingViewsChangedEvent ? (global::Dcv.Extensions.StreamingViewsChangedEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.StreamingViewsChangedEvent;
      }
    }

    private object event_;
    /// <summary>Enum of possible cases for the "event" oneof.</summary>
    public enum EventOneofCase {
      None = 0,
      VirtualChannelReadyEvent = 10,
      VirtualChannelClosedEvent = 20,
      StreamingViewsChangedEvent = 30,
    }
    private EventOneofCase eventCase_ = EventOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EventOneofCase EventCase {
      get { return eventCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEvent() {
      eventCase_ = EventOneofCase.None;
      event_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Event);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Event other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(VirtualChannelReadyEvent, other.VirtualChannelReadyEvent)) return false;
      if (!object.Equals(VirtualChannelClosedEvent, other.VirtualChannelClosedEvent)) return false;
      if (!object.Equals(StreamingViewsChangedEvent, other.StreamingViewsChangedEvent)) return false;
      if (EventCase != other.EventCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (eventCase_ == EventOneofCase.VirtualChannelReadyEvent) hash ^= VirtualChannelReadyEvent.GetHashCode();
      if (eventCase_ == EventOneofCase.VirtualChannelClosedEvent) hash ^= VirtualChannelClosedEvent.GetHashCode();
      if (eventCase_ == EventOneofCase.StreamingViewsChangedEvent) hash ^= StreamingViewsChangedEvent.GetHashCode();
      hash ^= (int) eventCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (eventCase_ == EventOneofCase.VirtualChannelReadyEvent) {
        output.WriteRawTag(82);
        output.WriteMessage(VirtualChannelReadyEvent);
      }
      if (eventCase_ == EventOneofCase.VirtualChannelClosedEvent) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(VirtualChannelClosedEvent);
      }
      if (eventCase_ == EventOneofCase.StreamingViewsChangedEvent) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(StreamingViewsChangedEvent);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (eventCase_ == EventOneofCase.VirtualChannelReadyEvent) {
        output.WriteRawTag(82);
        output.WriteMessage(VirtualChannelReadyEvent);
      }
      if (eventCase_ == EventOneofCase.VirtualChannelClosedEvent) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(VirtualChannelClosedEvent);
      }
      if (eventCase_ == EventOneofCase.StreamingViewsChangedEvent) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(StreamingViewsChangedEvent);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (eventCase_ == EventOneofCase.VirtualChannelReadyEvent) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VirtualChannelReadyEvent);
      }
      if (eventCase_ == EventOneofCase.VirtualChannelClosedEvent) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(VirtualChannelClosedEvent);
      }
      if (eventCase_ == EventOneofCase.StreamingViewsChangedEvent) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(StreamingViewsChangedEvent);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Event other) {
      if (other == null) {
        return;
      }
      switch (other.EventCase) {
        case EventOneofCase.VirtualChannelReadyEvent:
          if (VirtualChannelReadyEvent == null) {
            VirtualChannelReadyEvent = new global::Dcv.Extensions.VirtualChannelReadyEvent();
          }
          VirtualChannelReadyEvent.MergeFrom(other.VirtualChannelReadyEvent);
          break;
        case EventOneofCase.VirtualChannelClosedEvent:
          if (VirtualChannelClosedEvent == null) {
            VirtualChannelClosedEvent = new global::Dcv.Extensions.VirtualChannelClosedEvent();
          }
          VirtualChannelClosedEvent.MergeFrom(other.VirtualChannelClosedEvent);
          break;
        case EventOneofCase.StreamingViewsChangedEvent:
          if (StreamingViewsChangedEvent == null) {
            StreamingViewsChangedEvent = new global::Dcv.Extensions.StreamingViewsChangedEvent();
          }
          StreamingViewsChangedEvent.MergeFrom(other.StreamingViewsChangedEvent);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 82: {
            global::Dcv.Extensions.VirtualChannelReadyEvent subBuilder = new global::Dcv.Extensions.VirtualChannelReadyEvent();
            if (eventCase_ == EventOneofCase.VirtualChannelReadyEvent) {
              subBuilder.MergeFrom(VirtualChannelReadyEvent);
            }
            input.ReadMessage(subBuilder);
            VirtualChannelReadyEvent = subBuilder;
            break;
          }
          case 162: {
            global::Dcv.Extensions.VirtualChannelClosedEvent subBuilder = new global::Dcv.Extensions.VirtualChannelClosedEvent();
            if (eventCase_ == EventOneofCase.VirtualChannelClosedEvent) {
              subBuilder.MergeFrom(VirtualChannelClosedEvent);
            }
            input.ReadMessage(subBuilder);
            VirtualChannelClosedEvent = subBuilder;
            break;
          }
          case 242: {
            global::Dcv.Extensions.StreamingViewsChangedEvent subBuilder = new global::Dcv.Extensions.StreamingViewsChangedEvent();
            if (eventCase_ == EventOneofCase.StreamingViewsChangedEvent) {
              subBuilder.MergeFrom(StreamingViewsChangedEvent);
            }
            input.ReadMessage(subBuilder);
            StreamingViewsChangedEvent = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 82: {
            global::Dcv.Extensions.VirtualChannelReadyEvent subBuilder = new global::Dcv.Extensions.VirtualChannelReadyEvent();
            if (eventCase_ == EventOneofCase.VirtualChannelReadyEvent) {
              subBuilder.MergeFrom(VirtualChannelReadyEvent);
            }
            input.ReadMessage(subBuilder);
            VirtualChannelReadyEvent = subBuilder;
            break;
          }
          case 162: {
            global::Dcv.Extensions.VirtualChannelClosedEvent subBuilder = new global::Dcv.Extensions.VirtualChannelClosedEvent();
            if (eventCase_ == EventOneofCase.VirtualChannelClosedEvent) {
              subBuilder.MergeFrom(VirtualChannelClosedEvent);
            }
            input.ReadMessage(subBuilder);
            VirtualChannelClosedEvent = subBuilder;
            break;
          }
          case 242: {
            global::Dcv.Extensions.StreamingViewsChangedEvent subBuilder = new global::Dcv.Extensions.StreamingViewsChangedEvent();
            if (eventCase_ == EventOneofCase.StreamingViewsChangedEvent) {
              subBuilder.MergeFrom(StreamingViewsChangedEvent);
            }
            input.ReadMessage(subBuilder);
            StreamingViewsChangedEvent = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Messages from extensions to DCV (client or server) 
  /// </summary>
  public sealed partial class ExtensionMessage : pb::IMessage<ExtensionMessage>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ExtensionMessage> _parser = new pb::MessageParser<ExtensionMessage>(() => new ExtensionMessage());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ExtensionMessage> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[24]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ExtensionMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ExtensionMessage(ExtensionMessage other) : this() {
      switch (other.MsgCase) {
        case MsgOneofCase.Request:
          Request = other.Request.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ExtensionMessage Clone() {
      return new ExtensionMessage(this);
    }

    /// <summary>Field number for the "request" field.</summary>
    public const int RequestFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.Request Request {
      get { return msgCase_ == MsgOneofCase.Request ? (global::Dcv.Extensions.Request) msg_ : null; }
      set {
        msg_ = value;
        msgCase_ = value == null ? MsgOneofCase.None : MsgOneofCase.Request;
      }
    }

    private object msg_;
    /// <summary>Enum of possible cases for the "msg" oneof.</summary>
    public enum MsgOneofCase {
      None = 0,
      Request = 1,
    }
    private MsgOneofCase msgCase_ = MsgOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MsgOneofCase MsgCase {
      get { return msgCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMsg() {
      msgCase_ = MsgOneofCase.None;
      msg_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ExtensionMessage);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ExtensionMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Request, other.Request)) return false;
      if (MsgCase != other.MsgCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (msgCase_ == MsgOneofCase.Request) hash ^= Request.GetHashCode();
      hash ^= (int) msgCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (msgCase_ == MsgOneofCase.Request) {
        output.WriteRawTag(10);
        output.WriteMessage(Request);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (msgCase_ == MsgOneofCase.Request) {
        output.WriteRawTag(10);
        output.WriteMessage(Request);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (msgCase_ == MsgOneofCase.Request) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Request);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ExtensionMessage other) {
      if (other == null) {
        return;
      }
      switch (other.MsgCase) {
        case MsgOneofCase.Request:
          if (Request == null) {
            Request = new global::Dcv.Extensions.Request();
          }
          Request.MergeFrom(other.Request);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Dcv.Extensions.Request subBuilder = new global::Dcv.Extensions.Request();
            if (msgCase_ == MsgOneofCase.Request) {
              subBuilder.MergeFrom(Request);
            }
            input.ReadMessage(subBuilder);
            Request = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Dcv.Extensions.Request subBuilder = new global::Dcv.Extensions.Request();
            if (msgCase_ == MsgOneofCase.Request) {
              subBuilder.MergeFrom(Request);
            }
            input.ReadMessage(subBuilder);
            Request = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Messags from DCV (client or server) to extensions 
  /// </summary>
  public sealed partial class DcvMessage : pb::IMessage<DcvMessage>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<DcvMessage> _parser = new pb::MessageParser<DcvMessage>(() => new DcvMessage());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<DcvMessage> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Dcv.Extensions.ExtensionsReflection.Descriptor.MessageTypes[25]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DcvMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DcvMessage(DcvMessage other) : this() {
      switch (other.MsgCase) {
        case MsgOneofCase.Response:
          Response = other.Response.Clone();
          break;
        case MsgOneofCase.Event:
          Event = other.Event.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DcvMessage Clone() {
      return new DcvMessage(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.Response Response {
      get { return msgCase_ == MsgOneofCase.Response ? (global::Dcv.Extensions.Response) msg_ : null; }
      set {
        msg_ = value;
        msgCase_ = value == null ? MsgOneofCase.None : MsgOneofCase.Response;
      }
    }

    /// <summary>Field number for the "event" field.</summary>
    public const int EventFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Dcv.Extensions.Event Event {
      get { return msgCase_ == MsgOneofCase.Event ? (global::Dcv.Extensions.Event) msg_ : null; }
      set {
        msg_ = value;
        msgCase_ = value == null ? MsgOneofCase.None : MsgOneofCase.Event;
      }
    }

    private object msg_;
    /// <summary>Enum of possible cases for the "msg" oneof.</summary>
    public enum MsgOneofCase {
      None = 0,
      Response = 2,
      Event = 3,
    }
    private MsgOneofCase msgCase_ = MsgOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MsgOneofCase MsgCase {
      get { return msgCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearMsg() {
      msgCase_ = MsgOneofCase.None;
      msg_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as DcvMessage);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DcvMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Response, other.Response)) return false;
      if (!object.Equals(Event, other.Event)) return false;
      if (MsgCase != other.MsgCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (msgCase_ == MsgOneofCase.Response) hash ^= Response.GetHashCode();
      if (msgCase_ == MsgOneofCase.Event) hash ^= Event.GetHashCode();
      hash ^= (int) msgCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (msgCase_ == MsgOneofCase.Response) {
        output.WriteRawTag(18);
        output.WriteMessage(Response);
      }
      if (msgCase_ == MsgOneofCase.Event) {
        output.WriteRawTag(26);
        output.WriteMessage(Event);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (msgCase_ == MsgOneofCase.Response) {
        output.WriteRawTag(18);
        output.WriteMessage(Response);
      }
      if (msgCase_ == MsgOneofCase.Event) {
        output.WriteRawTag(26);
        output.WriteMessage(Event);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (msgCase_ == MsgOneofCase.Response) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Response);
      }
      if (msgCase_ == MsgOneofCase.Event) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Event);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DcvMessage other) {
      if (other == null) {
        return;
      }
      switch (other.MsgCase) {
        case MsgOneofCase.Response:
          if (Response == null) {
            Response = new global::Dcv.Extensions.Response();
          }
          Response.MergeFrom(other.Response);
          break;
        case MsgOneofCase.Event:
          if (Event == null) {
            Event = new global::Dcv.Extensions.Event();
          }
          Event.MergeFrom(other.Event);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            global::Dcv.Extensions.Response subBuilder = new global::Dcv.Extensions.Response();
            if (msgCase_ == MsgOneofCase.Response) {
              subBuilder.MergeFrom(Response);
            }
            input.ReadMessage(subBuilder);
            Response = subBuilder;
            break;
          }
          case 26: {
            global::Dcv.Extensions.Event subBuilder = new global::Dcv.Extensions.Event();
            if (msgCase_ == MsgOneofCase.Event) {
              subBuilder.MergeFrom(Event);
            }
            input.ReadMessage(subBuilder);
            Event = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            global::Dcv.Extensions.Response subBuilder = new global::Dcv.Extensions.Response();
            if (msgCase_ == MsgOneofCase.Response) {
              subBuilder.MergeFrom(Response);
            }
            input.ReadMessage(subBuilder);
            Response = subBuilder;
            break;
          }
          case 26: {
            global::Dcv.Extensions.Event subBuilder = new global::Dcv.Extensions.Event();
            if (msgCase_ == MsgOneofCase.Event) {
              subBuilder.MergeFrom(Event);
            }
            input.ReadMessage(subBuilder);
            Event = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code