// <auto-generated>
//   This file was generated by a tool; you should avoid making direct changes.
//   Consider using 'partial classes' to extend these types
//   Input: my.proto
// </auto-generated>

#region Designer generated code
#pragma warning disable CS0612, CS0618, CS1591, CS3021, IDE0079, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192
[global::ProtoBuf.ProtoContract()]
public partial class ClientIdentification : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, IsRequired = true)]
    public TokenType Type { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public SignedDeviceCertificate Token { get; set; }

    [global::ProtoBuf.ProtoMember(3, Name = @"ClientInfo")]
    public global::System.Collections.Generic.List<NameValue> ClientInfoes { get; } = new global::System.Collections.Generic.List<NameValue>();

    [global::ProtoBuf.ProtoMember(4)]
    public byte[] ProviderClientToken
    {
        get => __pbn__ProviderClientToken;
        set => __pbn__ProviderClientToken = value;
    }
    public bool ShouldSerializeProviderClientToken() => __pbn__ProviderClientToken != null;
    public void ResetProviderClientToken() => __pbn__ProviderClientToken = null;
    private byte[] __pbn__ProviderClientToken;

    [global::ProtoBuf.ProtoMember(5)]
    public uint LicenseCounter
    {
        get => __pbn__LicenseCounter.GetValueOrDefault();
        set => __pbn__LicenseCounter = value;
    }
    public bool ShouldSerializeLicenseCounter() => __pbn__LicenseCounter != null;
    public void ResetLicenseCounter() => __pbn__LicenseCounter = null;
    private uint? __pbn__LicenseCounter;

    [global::ProtoBuf.ProtoMember(6)]
    public ClientCapabilities _ClientCapabilities { get; set; }

    [global::ProtoBuf.ProtoMember(7, Name = @"_FileHashes")]
    public FileHashes FileHashes { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public partial class NameValue : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1, IsRequired = true)]
        public string Name { get; set; }

        [global::ProtoBuf.ProtoMember(2, IsRequired = true)]
        public string Value { get; set; }

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class ClientCapabilities : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public uint ClientToken
        {
            get => __pbn__ClientToken.GetValueOrDefault();
            set => __pbn__ClientToken = value;
        }
        public bool ShouldSerializeClientToken() => __pbn__ClientToken != null;
        public void ResetClientToken() => __pbn__ClientToken = null;
        private uint? __pbn__ClientToken;

        [global::ProtoBuf.ProtoMember(2)]
        public uint SessionToken
        {
            get => __pbn__SessionToken.GetValueOrDefault();
            set => __pbn__SessionToken = value;
        }
        public bool ShouldSerializeSessionToken() => __pbn__SessionToken != null;
        public void ResetSessionToken() => __pbn__SessionToken = null;
        private uint? __pbn__SessionToken;

        [global::ProtoBuf.ProtoMember(3)]
        public uint VideoResolutionConstraints
        {
            get => __pbn__VideoResolutionConstraints.GetValueOrDefault();
            set => __pbn__VideoResolutionConstraints = value;
        }
        public bool ShouldSerializeVideoResolutionConstraints() => __pbn__VideoResolutionConstraints != null;
        public void ResetVideoResolutionConstraints() => __pbn__VideoResolutionConstraints = null;
        private uint? __pbn__VideoResolutionConstraints;

        [global::ProtoBuf.ProtoMember(4)]
        [global::System.ComponentModel.DefaultValue(HdcpVersion.HdcpNone)]
        public HdcpVersion MaxHdcpVersion
        {
            get => __pbn__MaxHdcpVersion ?? HdcpVersion.HdcpNone;
            set => __pbn__MaxHdcpVersion = value;
        }
        public bool ShouldSerializeMaxHdcpVersion() => __pbn__MaxHdcpVersion != null;
        public void ResetMaxHdcpVersion() => __pbn__MaxHdcpVersion = null;
        private HdcpVersion? __pbn__MaxHdcpVersion;

        [global::ProtoBuf.ProtoMember(5)]
        public uint OemCryptoApiVersion
        {
            get => __pbn__OemCryptoApiVersion.GetValueOrDefault();
            set => __pbn__OemCryptoApiVersion = value;
        }
        public bool ShouldSerializeOemCryptoApiVersion() => __pbn__OemCryptoApiVersion != null;
        public void ResetOemCryptoApiVersion() => __pbn__OemCryptoApiVersion = null;
        private uint? __pbn__OemCryptoApiVersion;

        [global::ProtoBuf.ProtoContract()]
        public enum HdcpVersion
        {
            [global::ProtoBuf.ProtoEnum(Name = @"HDCP_NONE")]
            HdcpNone = 0,
            [global::ProtoBuf.ProtoEnum(Name = @"HDCP_V1")]
            HdcpV1 = 1,
            [global::ProtoBuf.ProtoEnum(Name = @"HDCP_V2")]
            HdcpV2 = 2,
            [global::ProtoBuf.ProtoEnum(Name = @"HDCP_V2_1")]
            HdcpV21 = 3,
            [global::ProtoBuf.ProtoEnum(Name = @"HDCP_V2_2")]
            HdcpV22 = 4,
            [global::ProtoBuf.ProtoEnum(Name = @"HDCP_V2_3")]
            HdcpV23 = 5,
        }

    }

    [global::ProtoBuf.ProtoContract()]
    public enum TokenType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"KEYBOX")]
        Keybox = 0,
        [global::ProtoBuf.ProtoEnum(Name = @"DEVICE_CERTIFICATE")]
        DeviceCertificate = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"REMOTE_ATTESTATION_CERTIFICATE")]
        RemoteAttestationCertificate = 2,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class DeviceCertificate : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, IsRequired = true)]
    public CertificateType Type { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public byte[] SerialNumber
    {
        get => __pbn__SerialNumber;
        set => __pbn__SerialNumber = value;
    }
    public bool ShouldSerializeSerialNumber() => __pbn__SerialNumber != null;
    public void ResetSerialNumber() => __pbn__SerialNumber = null;
    private byte[] __pbn__SerialNumber;

    [global::ProtoBuf.ProtoMember(3)]
    public uint CreationTimeSeconds
    {
        get => __pbn__CreationTimeSeconds.GetValueOrDefault();
        set => __pbn__CreationTimeSeconds = value;
    }
    public bool ShouldSerializeCreationTimeSeconds() => __pbn__CreationTimeSeconds != null;
    public void ResetCreationTimeSeconds() => __pbn__CreationTimeSeconds = null;
    private uint? __pbn__CreationTimeSeconds;

    [global::ProtoBuf.ProtoMember(4)]
    public byte[] PublicKey
    {
        get => __pbn__PublicKey;
        set => __pbn__PublicKey = value;
    }
    public bool ShouldSerializePublicKey() => __pbn__PublicKey != null;
    public void ResetPublicKey() => __pbn__PublicKey = null;
    private byte[] __pbn__PublicKey;

    [global::ProtoBuf.ProtoMember(5)]
    public uint SystemId
    {
        get => __pbn__SystemId.GetValueOrDefault();
        set => __pbn__SystemId = value;
    }
    public bool ShouldSerializeSystemId() => __pbn__SystemId != null;
    public void ResetSystemId() => __pbn__SystemId = null;
    private uint? __pbn__SystemId;

    [global::ProtoBuf.ProtoMember(6)]
    public uint TestDeviceDeprecated
    {
        get => __pbn__TestDeviceDeprecated.GetValueOrDefault();
        set => __pbn__TestDeviceDeprecated = value;
    }
    public bool ShouldSerializeTestDeviceDeprecated() => __pbn__TestDeviceDeprecated != null;
    public void ResetTestDeviceDeprecated() => __pbn__TestDeviceDeprecated = null;
    private uint? __pbn__TestDeviceDeprecated;

    [global::ProtoBuf.ProtoMember(7)]
    public byte[] ServiceId
    {
        get => __pbn__ServiceId;
        set => __pbn__ServiceId = value;
    }
    public bool ShouldSerializeServiceId() => __pbn__ServiceId != null;
    public void ResetServiceId() => __pbn__ServiceId = null;
    private byte[] __pbn__ServiceId;

    [global::ProtoBuf.ProtoContract()]
    public enum CertificateType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"ROOT")]
        Root = 0,
        [global::ProtoBuf.ProtoEnum(Name = @"INTERMEDIATE")]
        Intermediate = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"USER_DEVICE")]
        UserDevice = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE")]
        Service = 3,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class DeviceCertificateStatus : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public byte[] SerialNumber
    {
        get => __pbn__SerialNumber;
        set => __pbn__SerialNumber = value;
    }
    public bool ShouldSerializeSerialNumber() => __pbn__SerialNumber != null;
    public void ResetSerialNumber() => __pbn__SerialNumber = null;
    private byte[] __pbn__SerialNumber;

    [global::ProtoBuf.ProtoMember(2)]
    [global::System.ComponentModel.DefaultValue(CertificateStatus.Valid)]
    public CertificateStatus Status
    {
        get => __pbn__Status ?? CertificateStatus.Valid;
        set => __pbn__Status = value;
    }
    public bool ShouldSerializeStatus() => __pbn__Status != null;
    public void ResetStatus() => __pbn__Status = null;
    private CertificateStatus? __pbn__Status;

    [global::ProtoBuf.ProtoMember(4)]
    public ProvisionedDeviceInfo DeviceInfo { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public enum CertificateStatus
    {
        [global::ProtoBuf.ProtoEnum(Name = @"VALID")]
        Valid = 0,
        [global::ProtoBuf.ProtoEnum(Name = @"REVOKED")]
        Revoked = 1,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class DeviceCertificateStatusList : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public uint CreationTimeSeconds
    {
        get => __pbn__CreationTimeSeconds.GetValueOrDefault();
        set => __pbn__CreationTimeSeconds = value;
    }
    public bool ShouldSerializeCreationTimeSeconds() => __pbn__CreationTimeSeconds != null;
    public void ResetCreationTimeSeconds() => __pbn__CreationTimeSeconds = null;
    private uint? __pbn__CreationTimeSeconds;

    [global::ProtoBuf.ProtoMember(2)]
    public global::System.Collections.Generic.List<DeviceCertificateStatus> CertificateStatus { get; } = new global::System.Collections.Generic.List<DeviceCertificateStatus>();

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedDeviceCertificateStatusList : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public DeviceCertificateStatusList CertificateList { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

}

[global::ProtoBuf.ProtoContract()]
public partial class EncryptedClientIdentification : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, IsRequired = true)]
    public string ServiceId { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public byte[] ServiceCertificateSerialNumber
    {
        get => __pbn__ServiceCertificateSerialNumber;
        set => __pbn__ServiceCertificateSerialNumber = value;
    }
    public bool ShouldSerializeServiceCertificateSerialNumber() => __pbn__ServiceCertificateSerialNumber != null;
    public void ResetServiceCertificateSerialNumber() => __pbn__ServiceCertificateSerialNumber = null;
    private byte[] __pbn__ServiceCertificateSerialNumber;

    [global::ProtoBuf.ProtoMember(3, IsRequired = true)]
    public byte[] EncryptedClientId { get; set; }

    [global::ProtoBuf.ProtoMember(4, IsRequired = true)]
    public byte[] EncryptedClientIdIv { get; set; }

    [global::ProtoBuf.ProtoMember(5, IsRequired = true)]
    public byte[] EncryptedPrivacyKey { get; set; }

}

[global::ProtoBuf.ProtoContract()]
public partial class LicenseIdentification : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public byte[] RequestId
    {
        get => __pbn__RequestId;
        set => __pbn__RequestId = value;
    }
    public bool ShouldSerializeRequestId() => __pbn__RequestId != null;
    public void ResetRequestId() => __pbn__RequestId = null;
    private byte[] __pbn__RequestId;

    [global::ProtoBuf.ProtoMember(2)]
    public byte[] SessionId
    {
        get => __pbn__SessionId;
        set => __pbn__SessionId = value;
    }
    public bool ShouldSerializeSessionId() => __pbn__SessionId != null;
    public void ResetSessionId() => __pbn__SessionId = null;
    private byte[] __pbn__SessionId;

    [global::ProtoBuf.ProtoMember(3)]
    public byte[] PurchaseId
    {
        get => __pbn__PurchaseId;
        set => __pbn__PurchaseId = value;
    }
    public bool ShouldSerializePurchaseId() => __pbn__PurchaseId != null;
    public void ResetPurchaseId() => __pbn__PurchaseId = null;
    private byte[] __pbn__PurchaseId;

    [global::ProtoBuf.ProtoMember(4)]
    [global::System.ComponentModel.DefaultValue(LicenseType.Zero)]
    public LicenseType Type
    {
        get => __pbn__Type ?? LicenseType.Zero;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private LicenseType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(5)]
    public uint Version
    {
        get => __pbn__Version.GetValueOrDefault();
        set => __pbn__Version = value;
    }
    public bool ShouldSerializeVersion() => __pbn__Version != null;
    public void ResetVersion() => __pbn__Version = null;
    private uint? __pbn__Version;

    [global::ProtoBuf.ProtoMember(6)]
    public byte[] ProviderSessionToken
    {
        get => __pbn__ProviderSessionToken;
        set => __pbn__ProviderSessionToken = value;
    }
    public bool ShouldSerializeProviderSessionToken() => __pbn__ProviderSessionToken != null;
    public void ResetProviderSessionToken() => __pbn__ProviderSessionToken = null;
    private byte[] __pbn__ProviderSessionToken;

}

[global::ProtoBuf.ProtoContract()]
public partial class License : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public LicenseIdentification Id { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public Policy _Policy { get; set; }

    [global::ProtoBuf.ProtoMember(3, Name = @"Key")]
    public global::System.Collections.Generic.List<KeyContainer> Keys { get; } = new global::System.Collections.Generic.List<KeyContainer>();

    [global::ProtoBuf.ProtoMember(4)]
    public uint LicenseStartTime
    {
        get => __pbn__LicenseStartTime.GetValueOrDefault();
        set => __pbn__LicenseStartTime = value;
    }
    public bool ShouldSerializeLicenseStartTime() => __pbn__LicenseStartTime != null;
    public void ResetLicenseStartTime() => __pbn__LicenseStartTime = null;
    private uint? __pbn__LicenseStartTime;

    [global::ProtoBuf.ProtoMember(5)]
    public uint RemoteAttestationVerified
    {
        get => __pbn__RemoteAttestationVerified.GetValueOrDefault();
        set => __pbn__RemoteAttestationVerified = value;
    }
    public bool ShouldSerializeRemoteAttestationVerified() => __pbn__RemoteAttestationVerified != null;
    public void ResetRemoteAttestationVerified() => __pbn__RemoteAttestationVerified = null;
    private uint? __pbn__RemoteAttestationVerified;

    [global::ProtoBuf.ProtoMember(6)]
    public byte[] ProviderClientToken
    {
        get => __pbn__ProviderClientToken;
        set => __pbn__ProviderClientToken = value;
    }
    public bool ShouldSerializeProviderClientToken() => __pbn__ProviderClientToken != null;
    public void ResetProviderClientToken() => __pbn__ProviderClientToken = null;
    private byte[] __pbn__ProviderClientToken;

    [global::ProtoBuf.ProtoMember(7)]
    public uint ProtectionScheme
    {
        get => __pbn__ProtectionScheme.GetValueOrDefault();
        set => __pbn__ProtectionScheme = value;
    }
    public bool ShouldSerializeProtectionScheme() => __pbn__ProtectionScheme != null;
    public void ResetProtectionScheme() => __pbn__ProtectionScheme = null;
    private uint? __pbn__ProtectionScheme;

    [global::ProtoBuf.ProtoContract()]
    public partial class Policy : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public bool CanPlay
        {
            get => __pbn__CanPlay.GetValueOrDefault();
            set => __pbn__CanPlay = value;
        }
        public bool ShouldSerializeCanPlay() => __pbn__CanPlay != null;
        public void ResetCanPlay() => __pbn__CanPlay = null;
        private bool? __pbn__CanPlay;

        [global::ProtoBuf.ProtoMember(2)]
        public bool CanPersist
        {
            get => __pbn__CanPersist.GetValueOrDefault();
            set => __pbn__CanPersist = value;
        }
        public bool ShouldSerializeCanPersist() => __pbn__CanPersist != null;
        public void ResetCanPersist() => __pbn__CanPersist = null;
        private bool? __pbn__CanPersist;

        [global::ProtoBuf.ProtoMember(3)]
        public bool CanRenew
        {
            get => __pbn__CanRenew.GetValueOrDefault();
            set => __pbn__CanRenew = value;
        }
        public bool ShouldSerializeCanRenew() => __pbn__CanRenew != null;
        public void ResetCanRenew() => __pbn__CanRenew = null;
        private bool? __pbn__CanRenew;

        [global::ProtoBuf.ProtoMember(4)]
        public uint RentalDurationSeconds
        {
            get => __pbn__RentalDurationSeconds.GetValueOrDefault();
            set => __pbn__RentalDurationSeconds = value;
        }
        public bool ShouldSerializeRentalDurationSeconds() => __pbn__RentalDurationSeconds != null;
        public void ResetRentalDurationSeconds() => __pbn__RentalDurationSeconds = null;
        private uint? __pbn__RentalDurationSeconds;

        [global::ProtoBuf.ProtoMember(5)]
        public uint PlaybackDurationSeconds
        {
            get => __pbn__PlaybackDurationSeconds.GetValueOrDefault();
            set => __pbn__PlaybackDurationSeconds = value;
        }
        public bool ShouldSerializePlaybackDurationSeconds() => __pbn__PlaybackDurationSeconds != null;
        public void ResetPlaybackDurationSeconds() => __pbn__PlaybackDurationSeconds = null;
        private uint? __pbn__PlaybackDurationSeconds;

        [global::ProtoBuf.ProtoMember(6)]
        public uint LicenseDurationSeconds
        {
            get => __pbn__LicenseDurationSeconds.GetValueOrDefault();
            set => __pbn__LicenseDurationSeconds = value;
        }
        public bool ShouldSerializeLicenseDurationSeconds() => __pbn__LicenseDurationSeconds != null;
        public void ResetLicenseDurationSeconds() => __pbn__LicenseDurationSeconds = null;
        private uint? __pbn__LicenseDurationSeconds;

        [global::ProtoBuf.ProtoMember(7)]
        public uint RenewalRecoveryDurationSeconds
        {
            get => __pbn__RenewalRecoveryDurationSeconds.GetValueOrDefault();
            set => __pbn__RenewalRecoveryDurationSeconds = value;
        }
        public bool ShouldSerializeRenewalRecoveryDurationSeconds() => __pbn__RenewalRecoveryDurationSeconds != null;
        public void ResetRenewalRecoveryDurationSeconds() => __pbn__RenewalRecoveryDurationSeconds = null;
        private uint? __pbn__RenewalRecoveryDurationSeconds;

        [global::ProtoBuf.ProtoMember(8)]
        [global::System.ComponentModel.DefaultValue("")]
        public string RenewalServerUrl
        {
            get => __pbn__RenewalServerUrl ?? "";
            set => __pbn__RenewalServerUrl = value;
        }
        public bool ShouldSerializeRenewalServerUrl() => __pbn__RenewalServerUrl != null;
        public void ResetRenewalServerUrl() => __pbn__RenewalServerUrl = null;
        private string __pbn__RenewalServerUrl;

        [global::ProtoBuf.ProtoMember(9)]
        public uint RenewalDelaySeconds
        {
            get => __pbn__RenewalDelaySeconds.GetValueOrDefault();
            set => __pbn__RenewalDelaySeconds = value;
        }
        public bool ShouldSerializeRenewalDelaySeconds() => __pbn__RenewalDelaySeconds != null;
        public void ResetRenewalDelaySeconds() => __pbn__RenewalDelaySeconds = null;
        private uint? __pbn__RenewalDelaySeconds;

        [global::ProtoBuf.ProtoMember(10)]
        public uint RenewalRetryIntervalSeconds
        {
            get => __pbn__RenewalRetryIntervalSeconds.GetValueOrDefault();
            set => __pbn__RenewalRetryIntervalSeconds = value;
        }
        public bool ShouldSerializeRenewalRetryIntervalSeconds() => __pbn__RenewalRetryIntervalSeconds != null;
        public void ResetRenewalRetryIntervalSeconds() => __pbn__RenewalRetryIntervalSeconds = null;
        private uint? __pbn__RenewalRetryIntervalSeconds;

        [global::ProtoBuf.ProtoMember(11)]
        public bool RenewWithUsage
        {
            get => __pbn__RenewWithUsage.GetValueOrDefault();
            set => __pbn__RenewWithUsage = value;
        }
        public bool ShouldSerializeRenewWithUsage() => __pbn__RenewWithUsage != null;
        public void ResetRenewWithUsage() => __pbn__RenewWithUsage = null;
        private bool? __pbn__RenewWithUsage;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class KeyContainer : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public byte[] Id
        {
            get => __pbn__Id;
            set => __pbn__Id = value;
        }
        public bool ShouldSerializeId() => __pbn__Id != null;
        public void ResetId() => __pbn__Id = null;
        private byte[] __pbn__Id;

        [global::ProtoBuf.ProtoMember(2)]
        public byte[] Iv
        {
            get => __pbn__Iv;
            set => __pbn__Iv = value;
        }
        public bool ShouldSerializeIv() => __pbn__Iv != null;
        public void ResetIv() => __pbn__Iv = null;
        private byte[] __pbn__Iv;

        [global::ProtoBuf.ProtoMember(3)]
        public byte[] Key
        {
            get => __pbn__Key;
            set => __pbn__Key = value;
        }
        public bool ShouldSerializeKey() => __pbn__Key != null;
        public void ResetKey() => __pbn__Key = null;
        private byte[] __pbn__Key;

        [global::ProtoBuf.ProtoMember(4)]
        [global::System.ComponentModel.DefaultValue(KeyType.Signing)]
        public KeyType Type
        {
            get => __pbn__Type ?? KeyType.Signing;
            set => __pbn__Type = value;
        }
        public bool ShouldSerializeType() => __pbn__Type != null;
        public void ResetType() => __pbn__Type = null;
        private KeyType? __pbn__Type;

        [global::ProtoBuf.ProtoMember(5)]
        [global::System.ComponentModel.DefaultValue(SecurityLevel.SwSecureCrypto)]
        public SecurityLevel Level
        {
            get => __pbn__Level ?? SecurityLevel.SwSecureCrypto;
            set => __pbn__Level = value;
        }
        public bool ShouldSerializeLevel() => __pbn__Level != null;
        public void ResetLevel() => __pbn__Level = null;
        private SecurityLevel? __pbn__Level;

        [global::ProtoBuf.ProtoMember(6)]
        public OutputProtection RequiredProtection { get; set; }

        [global::ProtoBuf.ProtoMember(7)]
        public OutputProtection RequestedProtection { get; set; }

        [global::ProtoBuf.ProtoMember(8)]
        public KeyControl _KeyControl { get; set; }

        [global::ProtoBuf.ProtoMember(9)]
        public OperatorSessionKeyPermissions _OperatorSessionKeyPermissions { get; set; }

        [global::ProtoBuf.ProtoMember(10)]
        public global::System.Collections.Generic.List<VideoResolutionConstraint> VideoResolutionConstraints { get; } = new global::System.Collections.Generic.List<VideoResolutionConstraint>();

        [global::ProtoBuf.ProtoContract()]
        public partial class OutputProtection : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            [global::System.ComponentModel.DefaultValue(ClientIdentification.ClientCapabilities.HdcpVersion.HdcpNone)]
            public ClientIdentification.ClientCapabilities.HdcpVersion Hdcp
            {
                get => __pbn__Hdcp ?? ClientIdentification.ClientCapabilities.HdcpVersion.HdcpNone;
                set => __pbn__Hdcp = value;
            }
            public bool ShouldSerializeHdcp() => __pbn__Hdcp != null;
            public void ResetHdcp() => __pbn__Hdcp = null;
            private ClientIdentification.ClientCapabilities.HdcpVersion? __pbn__Hdcp;

            [global::ProtoBuf.ProtoMember(2)]
            [global::System.ComponentModel.DefaultValue(Cgms.CopyFree)]
            public Cgms CgmsFlags
            {
                get => __pbn__CgmsFlags ?? Cgms.CopyFree;
                set => __pbn__CgmsFlags = value;
            }
            public bool ShouldSerializeCgmsFlags() => __pbn__CgmsFlags != null;
            public void ResetCgmsFlags() => __pbn__CgmsFlags = null;
            private Cgms? __pbn__CgmsFlags;

            [global::ProtoBuf.ProtoContract(Name = @"CGMS")]
            public enum Cgms
            {
                [global::ProtoBuf.ProtoEnum(Name = @"COPY_FREE")]
                CopyFree = 0,
                [global::ProtoBuf.ProtoEnum(Name = @"COPY_ONCE")]
                CopyOnce = 2,
                [global::ProtoBuf.ProtoEnum(Name = @"COPY_NEVER")]
                CopyNever = 3,
                [global::ProtoBuf.ProtoEnum(Name = @"CGMS_NONE")]
                CgmsNone = 42,
            }

        }

        [global::ProtoBuf.ProtoContract()]
        public partial class KeyControl : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1, IsRequired = true)]
            public byte[] KeyControlBlock { get; set; }

            [global::ProtoBuf.ProtoMember(2, IsRequired = true)]
            public byte[] Iv { get; set; }

        }

        [global::ProtoBuf.ProtoContract()]
        public partial class OperatorSessionKeyPermissions : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public uint AllowEncrypt
            {
                get => __pbn__AllowEncrypt.GetValueOrDefault();
                set => __pbn__AllowEncrypt = value;
            }
            public bool ShouldSerializeAllowEncrypt() => __pbn__AllowEncrypt != null;
            public void ResetAllowEncrypt() => __pbn__AllowEncrypt = null;
            private uint? __pbn__AllowEncrypt;

            [global::ProtoBuf.ProtoMember(2)]
            public uint AllowDecrypt
            {
                get => __pbn__AllowDecrypt.GetValueOrDefault();
                set => __pbn__AllowDecrypt = value;
            }
            public bool ShouldSerializeAllowDecrypt() => __pbn__AllowDecrypt != null;
            public void ResetAllowDecrypt() => __pbn__AllowDecrypt = null;
            private uint? __pbn__AllowDecrypt;

            [global::ProtoBuf.ProtoMember(3)]
            public uint AllowSign
            {
                get => __pbn__AllowSign.GetValueOrDefault();
                set => __pbn__AllowSign = value;
            }
            public bool ShouldSerializeAllowSign() => __pbn__AllowSign != null;
            public void ResetAllowSign() => __pbn__AllowSign = null;
            private uint? __pbn__AllowSign;

            [global::ProtoBuf.ProtoMember(4)]
            public uint AllowSignatureVerify
            {
                get => __pbn__AllowSignatureVerify.GetValueOrDefault();
                set => __pbn__AllowSignatureVerify = value;
            }
            public bool ShouldSerializeAllowSignatureVerify() => __pbn__AllowSignatureVerify != null;
            public void ResetAllowSignatureVerify() => __pbn__AllowSignatureVerify = null;
            private uint? __pbn__AllowSignatureVerify;

        }

        [global::ProtoBuf.ProtoContract()]
        public partial class VideoResolutionConstraint : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public uint MinResolutionPixels
            {
                get => __pbn__MinResolutionPixels.GetValueOrDefault();
                set => __pbn__MinResolutionPixels = value;
            }
            public bool ShouldSerializeMinResolutionPixels() => __pbn__MinResolutionPixels != null;
            public void ResetMinResolutionPixels() => __pbn__MinResolutionPixels = null;
            private uint? __pbn__MinResolutionPixels;

            [global::ProtoBuf.ProtoMember(2)]
            public uint MaxResolutionPixels
            {
                get => __pbn__MaxResolutionPixels.GetValueOrDefault();
                set => __pbn__MaxResolutionPixels = value;
            }
            public bool ShouldSerializeMaxResolutionPixels() => __pbn__MaxResolutionPixels != null;
            public void ResetMaxResolutionPixels() => __pbn__MaxResolutionPixels = null;
            private uint? __pbn__MaxResolutionPixels;

            [global::ProtoBuf.ProtoMember(3)]
            public License.KeyContainer.OutputProtection RequiredProtection { get; set; }

        }

        [global::ProtoBuf.ProtoContract()]
        public enum KeyType
        {
            [global::ProtoBuf.ProtoEnum(Name = @"SIGNING")]
            Signing = 1,
            [global::ProtoBuf.ProtoEnum(Name = @"CONTENT")]
            Content = 2,
            [global::ProtoBuf.ProtoEnum(Name = @"KEY_CONTROL")]
            KeyControl = 3,
            [global::ProtoBuf.ProtoEnum(Name = @"OPERATOR_SESSION")]
            OperatorSession = 4,
        }

        [global::ProtoBuf.ProtoContract()]
        public enum SecurityLevel
        {
            [global::ProtoBuf.ProtoEnum(Name = @"SW_SECURE_CRYPTO")]
            SwSecureCrypto = 1,
            [global::ProtoBuf.ProtoEnum(Name = @"SW_SECURE_DECODE")]
            SwSecureDecode = 2,
            [global::ProtoBuf.ProtoEnum(Name = @"HW_SECURE_CRYPTO")]
            HwSecureCrypto = 3,
            [global::ProtoBuf.ProtoEnum(Name = @"HW_SECURE_DECODE")]
            HwSecureDecode = 4,
            [global::ProtoBuf.ProtoEnum(Name = @"HW_SECURE_ALL")]
            HwSecureAll = 5,
        }

    }

}

[global::ProtoBuf.ProtoContract()]
public partial class LicenseError : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(Error.InvalidDeviceCertificate)]
    public Error ErrorCode
    {
        get => __pbn__ErrorCode ?? Error.InvalidDeviceCertificate;
        set => __pbn__ErrorCode = value;
    }
    public bool ShouldSerializeErrorCode() => __pbn__ErrorCode != null;
    public void ResetErrorCode() => __pbn__ErrorCode = null;
    private Error? __pbn__ErrorCode;

    [global::ProtoBuf.ProtoContract()]
    public enum Error
    {
        [global::ProtoBuf.ProtoEnum(Name = @"INVALID_DEVICE_CERTIFICATE")]
        InvalidDeviceCertificate = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"REVOKED_DEVICE_CERTIFICATE")]
        RevokedDeviceCertificate = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_UNAVAILABLE")]
        ServiceUnavailable = 3,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class LicenseRequest : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public ClientIdentification ClientId { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public ContentIdentification ContentId { get; set; }

    [global::ProtoBuf.ProtoMember(3)]
    [global::System.ComponentModel.DefaultValue(RequestType.New)]
    public RequestType Type
    {
        get => __pbn__Type ?? RequestType.New;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private RequestType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(4)]
    public uint RequestTime
    {
        get => __pbn__RequestTime.GetValueOrDefault();
        set => __pbn__RequestTime = value;
    }
    public bool ShouldSerializeRequestTime() => __pbn__RequestTime != null;
    public void ResetRequestTime() => __pbn__RequestTime = null;
    private uint? __pbn__RequestTime;

    [global::ProtoBuf.ProtoMember(5)]
    public byte[] KeyControlNonceDeprecated
    {
        get => __pbn__KeyControlNonceDeprecated;
        set => __pbn__KeyControlNonceDeprecated = value;
    }
    public bool ShouldSerializeKeyControlNonceDeprecated() => __pbn__KeyControlNonceDeprecated != null;
    public void ResetKeyControlNonceDeprecated() => __pbn__KeyControlNonceDeprecated = null;
    private byte[] __pbn__KeyControlNonceDeprecated;

    [global::ProtoBuf.ProtoMember(6)]
    [global::System.ComponentModel.DefaultValue(ProtocolVersion.Current)]
    public ProtocolVersion ProtocolVersion
    {
        get => __pbn__ProtocolVersion ?? ProtocolVersion.Current;
        set => __pbn__ProtocolVersion = value;
    }
    public bool ShouldSerializeProtocolVersion() => __pbn__ProtocolVersion != null;
    public void ResetProtocolVersion() => __pbn__ProtocolVersion = null;
    private ProtocolVersion? __pbn__ProtocolVersion;

    [global::ProtoBuf.ProtoMember(7)]
    public uint KeyControlNonce
    {
        get => __pbn__KeyControlNonce.GetValueOrDefault();
        set => __pbn__KeyControlNonce = value;
    }
    public bool ShouldSerializeKeyControlNonce() => __pbn__KeyControlNonce != null;
    public void ResetKeyControlNonce() => __pbn__KeyControlNonce = null;
    private uint? __pbn__KeyControlNonce;

    [global::ProtoBuf.ProtoMember(8)]
    public EncryptedClientIdentification EncryptedClientId { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public partial class ContentIdentification : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public Cenc CencId { get; set; }

        [global::ProtoBuf.ProtoMember(2)]
        public WebM WebmId { get; set; }

        [global::ProtoBuf.ProtoMember(3)]
        public ExistingLicense License { get; set; }

        [global::ProtoBuf.ProtoContract(Name = @"CENC")]
        public partial class Cenc : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public WidevineCencHeader Pssh { get; set; }

            [global::ProtoBuf.ProtoMember(2)]
            [global::System.ComponentModel.DefaultValue(LicenseType.Zero)]
            public LicenseType LicenseType
            {
                get => __pbn__LicenseType ?? LicenseType.Zero;
                set => __pbn__LicenseType = value;
            }
            public bool ShouldSerializeLicenseType() => __pbn__LicenseType != null;
            public void ResetLicenseType() => __pbn__LicenseType = null;
            private LicenseType? __pbn__LicenseType;

            [global::ProtoBuf.ProtoMember(3)]
            public byte[] RequestId
            {
                get => __pbn__RequestId;
                set => __pbn__RequestId = value;
            }
            public bool ShouldSerializeRequestId() => __pbn__RequestId != null;
            public void ResetRequestId() => __pbn__RequestId = null;
            private byte[] __pbn__RequestId;

        }

        [global::ProtoBuf.ProtoContract()]
        public partial class WebM : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public byte[] Header
            {
                get => __pbn__Header;
                set => __pbn__Header = value;
            }
            public bool ShouldSerializeHeader() => __pbn__Header != null;
            public void ResetHeader() => __pbn__Header = null;
            private byte[] __pbn__Header;

            [global::ProtoBuf.ProtoMember(2)]
            [global::System.ComponentModel.DefaultValue(LicenseType.Zero)]
            public LicenseType LicenseType
            {
                get => __pbn__LicenseType ?? LicenseType.Zero;
                set => __pbn__LicenseType = value;
            }
            public bool ShouldSerializeLicenseType() => __pbn__LicenseType != null;
            public void ResetLicenseType() => __pbn__LicenseType = null;
            private LicenseType? __pbn__LicenseType;

            [global::ProtoBuf.ProtoMember(3)]
            public byte[] RequestId
            {
                get => __pbn__RequestId;
                set => __pbn__RequestId = value;
            }
            public bool ShouldSerializeRequestId() => __pbn__RequestId != null;
            public void ResetRequestId() => __pbn__RequestId = null;
            private byte[] __pbn__RequestId;

        }

        [global::ProtoBuf.ProtoContract()]
        public partial class ExistingLicense : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public LicenseIdentification LicenseId { get; set; }

            [global::ProtoBuf.ProtoMember(2)]
            public uint SecondsSinceStarted
            {
                get => __pbn__SecondsSinceStarted.GetValueOrDefault();
                set => __pbn__SecondsSinceStarted = value;
            }
            public bool ShouldSerializeSecondsSinceStarted() => __pbn__SecondsSinceStarted != null;
            public void ResetSecondsSinceStarted() => __pbn__SecondsSinceStarted = null;
            private uint? __pbn__SecondsSinceStarted;

            [global::ProtoBuf.ProtoMember(3)]
            public uint SecondsSinceLastPlayed
            {
                get => __pbn__SecondsSinceLastPlayed.GetValueOrDefault();
                set => __pbn__SecondsSinceLastPlayed = value;
            }
            public bool ShouldSerializeSecondsSinceLastPlayed() => __pbn__SecondsSinceLastPlayed != null;
            public void ResetSecondsSinceLastPlayed() => __pbn__SecondsSinceLastPlayed = null;
            private uint? __pbn__SecondsSinceLastPlayed;

            [global::ProtoBuf.ProtoMember(4)]
            public byte[] SessionUsageTableEntry
            {
                get => __pbn__SessionUsageTableEntry;
                set => __pbn__SessionUsageTableEntry = value;
            }
            public bool ShouldSerializeSessionUsageTableEntry() => __pbn__SessionUsageTableEntry != null;
            public void ResetSessionUsageTableEntry() => __pbn__SessionUsageTableEntry = null;
            private byte[] __pbn__SessionUsageTableEntry;

        }

    }

    [global::ProtoBuf.ProtoContract()]
    public enum RequestType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"NEW")]
        New = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"RENEWAL")]
        Renewal = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"RELEASE")]
        Release = 3,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class LicenseRequestRaw : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public ClientIdentification ClientId { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public ContentIdentification ContentId { get; set; }

    [global::ProtoBuf.ProtoMember(3)]
    [global::System.ComponentModel.DefaultValue(RequestType.New)]
    public RequestType Type
    {
        get => __pbn__Type ?? RequestType.New;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private RequestType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(4)]
    public uint RequestTime
    {
        get => __pbn__RequestTime.GetValueOrDefault();
        set => __pbn__RequestTime = value;
    }
    public bool ShouldSerializeRequestTime() => __pbn__RequestTime != null;
    public void ResetRequestTime() => __pbn__RequestTime = null;
    private uint? __pbn__RequestTime;

    [global::ProtoBuf.ProtoMember(5)]
    public byte[] KeyControlNonceDeprecated
    {
        get => __pbn__KeyControlNonceDeprecated;
        set => __pbn__KeyControlNonceDeprecated = value;
    }
    public bool ShouldSerializeKeyControlNonceDeprecated() => __pbn__KeyControlNonceDeprecated != null;
    public void ResetKeyControlNonceDeprecated() => __pbn__KeyControlNonceDeprecated = null;
    private byte[] __pbn__KeyControlNonceDeprecated;

    [global::ProtoBuf.ProtoMember(6)]
    [global::System.ComponentModel.DefaultValue(ProtocolVersion.Current)]
    public ProtocolVersion ProtocolVersion
    {
        get => __pbn__ProtocolVersion ?? ProtocolVersion.Current;
        set => __pbn__ProtocolVersion = value;
    }
    public bool ShouldSerializeProtocolVersion() => __pbn__ProtocolVersion != null;
    public void ResetProtocolVersion() => __pbn__ProtocolVersion = null;
    private ProtocolVersion? __pbn__ProtocolVersion;

    [global::ProtoBuf.ProtoMember(7)]
    public uint KeyControlNonce
    {
        get => __pbn__KeyControlNonce.GetValueOrDefault();
        set => __pbn__KeyControlNonce = value;
    }
    public bool ShouldSerializeKeyControlNonce() => __pbn__KeyControlNonce != null;
    public void ResetKeyControlNonce() => __pbn__KeyControlNonce = null;
    private uint? __pbn__KeyControlNonce;

    [global::ProtoBuf.ProtoMember(8)]
    public EncryptedClientIdentification EncryptedClientId { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public partial class ContentIdentification : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public Cenc CencId { get; set; }

        [global::ProtoBuf.ProtoMember(2)]
        public WebM WebmId { get; set; }

        [global::ProtoBuf.ProtoMember(3)]
        public ExistingLicense License { get; set; }

        [global::ProtoBuf.ProtoContract(Name = @"CENC")]
        public partial class Cenc : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public byte[] Pssh
            {
                get => __pbn__Pssh;
                set => __pbn__Pssh = value;
            }
            public bool ShouldSerializePssh() => __pbn__Pssh != null;
            public void ResetPssh() => __pbn__Pssh = null;
            private byte[] __pbn__Pssh;

            [global::ProtoBuf.ProtoMember(2)]
            [global::System.ComponentModel.DefaultValue(LicenseType.Zero)]
            public LicenseType LicenseType
            {
                get => __pbn__LicenseType ?? LicenseType.Zero;
                set => __pbn__LicenseType = value;
            }
            public bool ShouldSerializeLicenseType() => __pbn__LicenseType != null;
            public void ResetLicenseType() => __pbn__LicenseType = null;
            private LicenseType? __pbn__LicenseType;

            [global::ProtoBuf.ProtoMember(3)]
            public byte[] RequestId
            {
                get => __pbn__RequestId;
                set => __pbn__RequestId = value;
            }
            public bool ShouldSerializeRequestId() => __pbn__RequestId != null;
            public void ResetRequestId() => __pbn__RequestId = null;
            private byte[] __pbn__RequestId;

        }

        [global::ProtoBuf.ProtoContract()]
        public partial class WebM : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public byte[] Header
            {
                get => __pbn__Header;
                set => __pbn__Header = value;
            }
            public bool ShouldSerializeHeader() => __pbn__Header != null;
            public void ResetHeader() => __pbn__Header = null;
            private byte[] __pbn__Header;

            [global::ProtoBuf.ProtoMember(2)]
            [global::System.ComponentModel.DefaultValue(LicenseType.Zero)]
            public LicenseType LicenseType
            {
                get => __pbn__LicenseType ?? LicenseType.Zero;
                set => __pbn__LicenseType = value;
            }
            public bool ShouldSerializeLicenseType() => __pbn__LicenseType != null;
            public void ResetLicenseType() => __pbn__LicenseType = null;
            private LicenseType? __pbn__LicenseType;

            [global::ProtoBuf.ProtoMember(3)]
            public byte[] RequestId
            {
                get => __pbn__RequestId;
                set => __pbn__RequestId = value;
            }
            public bool ShouldSerializeRequestId() => __pbn__RequestId != null;
            public void ResetRequestId() => __pbn__RequestId = null;
            private byte[] __pbn__RequestId;

        }

        [global::ProtoBuf.ProtoContract()]
        public partial class ExistingLicense : global::ProtoBuf.IExtensible
        {
            private global::ProtoBuf.IExtension __pbn__extensionData;
            global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
                => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

            [global::ProtoBuf.ProtoMember(1)]
            public LicenseIdentification LicenseId { get; set; }

            [global::ProtoBuf.ProtoMember(2)]
            public uint SecondsSinceStarted
            {
                get => __pbn__SecondsSinceStarted.GetValueOrDefault();
                set => __pbn__SecondsSinceStarted = value;
            }
            public bool ShouldSerializeSecondsSinceStarted() => __pbn__SecondsSinceStarted != null;
            public void ResetSecondsSinceStarted() => __pbn__SecondsSinceStarted = null;
            private uint? __pbn__SecondsSinceStarted;

            [global::ProtoBuf.ProtoMember(3)]
            public uint SecondsSinceLastPlayed
            {
                get => __pbn__SecondsSinceLastPlayed.GetValueOrDefault();
                set => __pbn__SecondsSinceLastPlayed = value;
            }
            public bool ShouldSerializeSecondsSinceLastPlayed() => __pbn__SecondsSinceLastPlayed != null;
            public void ResetSecondsSinceLastPlayed() => __pbn__SecondsSinceLastPlayed = null;
            private uint? __pbn__SecondsSinceLastPlayed;

            [global::ProtoBuf.ProtoMember(4)]
            public byte[] SessionUsageTableEntry
            {
                get => __pbn__SessionUsageTableEntry;
                set => __pbn__SessionUsageTableEntry = value;
            }
            public bool ShouldSerializeSessionUsageTableEntry() => __pbn__SessionUsageTableEntry != null;
            public void ResetSessionUsageTableEntry() => __pbn__SessionUsageTableEntry = null;
            private byte[] __pbn__SessionUsageTableEntry;

        }

    }

    [global::ProtoBuf.ProtoContract()]
    public enum RequestType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"NEW")]
        New = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"RENEWAL")]
        Renewal = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"RELEASE")]
        Release = 3,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class ProvisionedDeviceInfo : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public uint SystemId
    {
        get => __pbn__SystemId.GetValueOrDefault();
        set => __pbn__SystemId = value;
    }
    public bool ShouldSerializeSystemId() => __pbn__SystemId != null;
    public void ResetSystemId() => __pbn__SystemId = null;
    private uint? __pbn__SystemId;

    [global::ProtoBuf.ProtoMember(2)]
    [global::System.ComponentModel.DefaultValue("")]
    public string Soc
    {
        get => __pbn__Soc ?? "";
        set => __pbn__Soc = value;
    }
    public bool ShouldSerializeSoc() => __pbn__Soc != null;
    public void ResetSoc() => __pbn__Soc = null;
    private string __pbn__Soc;

    [global::ProtoBuf.ProtoMember(3)]
    [global::System.ComponentModel.DefaultValue("")]
    public string Manufacturer
    {
        get => __pbn__Manufacturer ?? "";
        set => __pbn__Manufacturer = value;
    }
    public bool ShouldSerializeManufacturer() => __pbn__Manufacturer != null;
    public void ResetManufacturer() => __pbn__Manufacturer = null;
    private string __pbn__Manufacturer;

    [global::ProtoBuf.ProtoMember(4)]
    [global::System.ComponentModel.DefaultValue("")]
    public string Model
    {
        get => __pbn__Model ?? "";
        set => __pbn__Model = value;
    }
    public bool ShouldSerializeModel() => __pbn__Model != null;
    public void ResetModel() => __pbn__Model = null;
    private string __pbn__Model;

    [global::ProtoBuf.ProtoMember(5)]
    [global::System.ComponentModel.DefaultValue("")]
    public string DeviceType
    {
        get => __pbn__DeviceType ?? "";
        set => __pbn__DeviceType = value;
    }
    public bool ShouldSerializeDeviceType() => __pbn__DeviceType != null;
    public void ResetDeviceType() => __pbn__DeviceType = null;
    private string __pbn__DeviceType;

    [global::ProtoBuf.ProtoMember(6)]
    public uint ModelYear
    {
        get => __pbn__ModelYear.GetValueOrDefault();
        set => __pbn__ModelYear = value;
    }
    public bool ShouldSerializeModelYear() => __pbn__ModelYear != null;
    public void ResetModelYear() => __pbn__ModelYear = null;
    private uint? __pbn__ModelYear;

    [global::ProtoBuf.ProtoMember(7)]
    [global::System.ComponentModel.DefaultValue(WvSecurityLevel.LevelUnspecified)]
    public WvSecurityLevel SecurityLevel
    {
        get => __pbn__SecurityLevel ?? WvSecurityLevel.LevelUnspecified;
        set => __pbn__SecurityLevel = value;
    }
    public bool ShouldSerializeSecurityLevel() => __pbn__SecurityLevel != null;
    public void ResetSecurityLevel() => __pbn__SecurityLevel = null;
    private WvSecurityLevel? __pbn__SecurityLevel;

    [global::ProtoBuf.ProtoMember(8)]
    public uint TestDevice
    {
        get => __pbn__TestDevice.GetValueOrDefault();
        set => __pbn__TestDevice = value;
    }
    public bool ShouldSerializeTestDevice() => __pbn__TestDevice != null;
    public void ResetTestDevice() => __pbn__TestDevice = null;
    private uint? __pbn__TestDevice;

    [global::ProtoBuf.ProtoContract()]
    public enum WvSecurityLevel
    {
        [global::ProtoBuf.ProtoEnum(Name = @"LEVEL_UNSPECIFIED")]
        LevelUnspecified = 0,
        [global::ProtoBuf.ProtoEnum(Name = @"LEVEL_1")]
        Level1 = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"LEVEL_2")]
        Level2 = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"LEVEL_3")]
        Level3 = 3,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class RemoteAttestation : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    public EncryptedClientIdentification Certificate { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    [global::System.ComponentModel.DefaultValue("")]
    public string Salt
    {
        get => __pbn__Salt ?? "";
        set => __pbn__Salt = value;
    }
    public bool ShouldSerializeSalt() => __pbn__Salt != null;
    public void ResetSalt() => __pbn__Salt = null;
    private string __pbn__Salt;

    [global::ProtoBuf.ProtoMember(3)]
    [global::System.ComponentModel.DefaultValue("")]
    public string Signature
    {
        get => __pbn__Signature ?? "";
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private string __pbn__Signature;

}

[global::ProtoBuf.ProtoContract()]
public partial class ProvisioningOptions : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(CertificateType.WidevineDrm)]
    public CertificateType certificate_type
    {
        get => __pbn__certificate_type ?? CertificateType.WidevineDrm;
        set => __pbn__certificate_type = value;
    }
    public bool ShouldSerializecertificate_type() => __pbn__certificate_type != null;
    public void Resetcertificate_type() => __pbn__certificate_type = null;
    private CertificateType? __pbn__certificate_type;

    [global::ProtoBuf.ProtoMember(2, Name = @"certificate_authority")]
    [global::System.ComponentModel.DefaultValue("")]
    public string CertificateAuthority
    {
        get => __pbn__CertificateAuthority ?? "";
        set => __pbn__CertificateAuthority = value;
    }
    public bool ShouldSerializeCertificateAuthority() => __pbn__CertificateAuthority != null;
    public void ResetCertificateAuthority() => __pbn__CertificateAuthority = null;
    private string __pbn__CertificateAuthority;

    [global::ProtoBuf.ProtoContract()]
    public enum CertificateType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"WIDEVINE_DRM")]
        WidevineDrm = 0,
        X509 = 1,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class ProvisioningRequest : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, Name = @"client_id")]
    public ClientIdentification ClientId { get; set; }

    [global::ProtoBuf.ProtoMember(5, Name = @"encrypted_client_id")]
    public EncryptedClientIdentification EncryptedClientId { get; set; }

    [global::ProtoBuf.ProtoMember(2, Name = @"nonce")]
    public byte[] Nonce
    {
        get => __pbn__Nonce;
        set => __pbn__Nonce = value;
    }
    public bool ShouldSerializeNonce() => __pbn__Nonce != null;
    public void ResetNonce() => __pbn__Nonce = null;
    private byte[] __pbn__Nonce;

    [global::ProtoBuf.ProtoMember(3, Name = @"options")]
    public ProvisioningOptions Options { get; set; }

    [global::ProtoBuf.ProtoMember(4, Name = @"stable_id")]
    public byte[] StableId
    {
        get => __pbn__StableId;
        set => __pbn__StableId = value;
    }
    public bool ShouldSerializeStableId() => __pbn__StableId != null;
    public void ResetStableId() => __pbn__StableId = null;
    private byte[] __pbn__StableId;

    [global::ProtoBuf.ProtoMember(6, Name = @"provider_id")]
    public byte[] ProviderId
    {
        get => __pbn__ProviderId;
        set => __pbn__ProviderId = value;
    }
    public bool ShouldSerializeProviderId() => __pbn__ProviderId != null;
    public void ResetProviderId() => __pbn__ProviderId = null;
    private byte[] __pbn__ProviderId;

    [global::ProtoBuf.ProtoMember(7, Name = @"spoid")]
    public byte[] Spoid
    {
        get => __pbn__Spoid;
        set => __pbn__Spoid = value;
    }
    public bool ShouldSerializeSpoid() => __pbn__Spoid != null;
    public void ResetSpoid() => __pbn__Spoid = null;
    private byte[] __pbn__Spoid;

}

[global::ProtoBuf.ProtoContract()]
public partial class ProvisioningResponse : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, Name = @"device_rsa_key")]
    public byte[] DeviceRsaKey
    {
        get => __pbn__DeviceRsaKey;
        set => __pbn__DeviceRsaKey = value;
    }
    public bool ShouldSerializeDeviceRsaKey() => __pbn__DeviceRsaKey != null;
    public void ResetDeviceRsaKey() => __pbn__DeviceRsaKey = null;
    private byte[] __pbn__DeviceRsaKey;

    [global::ProtoBuf.ProtoMember(2, Name = @"device_rsa_key_iv")]
    public byte[] DeviceRsaKeyIv
    {
        get => __pbn__DeviceRsaKeyIv;
        set => __pbn__DeviceRsaKeyIv = value;
    }
    public bool ShouldSerializeDeviceRsaKeyIv() => __pbn__DeviceRsaKeyIv != null;
    public void ResetDeviceRsaKeyIv() => __pbn__DeviceRsaKeyIv = null;
    private byte[] __pbn__DeviceRsaKeyIv;

    [global::ProtoBuf.ProtoMember(3, Name = @"device_certificate")]
    public SignedDeviceCertificate DeviceCertificate { get; set; }

    [global::ProtoBuf.ProtoMember(4, Name = @"nonce")]
    public byte[] Nonce
    {
        get => __pbn__Nonce;
        set => __pbn__Nonce = value;
    }
    public bool ShouldSerializeNonce() => __pbn__Nonce != null;
    public void ResetNonce() => __pbn__Nonce = null;
    private byte[] __pbn__Nonce;

    [global::ProtoBuf.ProtoMember(5, Name = @"wrapping_key")]
    public byte[] WrappingKey
    {
        get => __pbn__WrappingKey;
        set => __pbn__WrappingKey = value;
    }
    public bool ShouldSerializeWrappingKey() => __pbn__WrappingKey != null;
    public void ResetWrappingKey() => __pbn__WrappingKey = null;
    private byte[] __pbn__WrappingKey;

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedProvisioningMessage : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, Name = @"message")]
    public ProvisioningResponse Message { get; set; }

    [global::ProtoBuf.ProtoMember(2, Name = @"signature")]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

    [global::ProtoBuf.ProtoMember(3)]
    [global::System.ComponentModel.DefaultValue(ProtocolVersion.Version2)]
    public ProtocolVersion protocol_version
    {
        get => __pbn__protocol_version ?? ProtocolVersion.Version2;
        set => __pbn__protocol_version = value;
    }
    public bool ShouldSerializeprotocol_version() => __pbn__protocol_version != null;
    public void Resetprotocol_version() => __pbn__protocol_version = null;
    private ProtocolVersion? __pbn__protocol_version;

    [global::ProtoBuf.ProtoContract()]
    public enum ProtocolVersion
    {
        [global::ProtoBuf.ProtoEnum(Name = @"VERSION_2")]
        Version2 = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"VERSION_3")]
        Version3 = 3,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class DeviceCertificateHack0 : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, Name = @"message")]
    public DeviceCertificateHack1 Message { get; set; }

    [global::ProtoBuf.ProtoMember(2, Name = @"signature")]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

}

[global::ProtoBuf.ProtoContract()]
public partial class DeviceCertificateHack1 : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(3, Name = @"message")]
    public DeviceCertificateHack2 Message { get; set; }

}

[global::ProtoBuf.ProtoContract()]
public partial class DeviceCertificateHack2 : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, Name = @"device_certificate")]
    public SignedDeviceCertificate DeviceCertificate { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public byte[] extraData
    {
        get => __pbn__extraData;
        set => __pbn__extraData = value;
    }
    public bool ShouldSerializeextraData() => __pbn__extraData != null;
    public void ResetextraData() => __pbn__extraData = null;
    private byte[] __pbn__extraData;

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedDeviceCertificate : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, Name = @"_DeviceCertificate")]
    public DeviceCertificate DeviceCertificate { get; set; }

    [global::ProtoBuf.ProtoMember(2)]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

    [global::ProtoBuf.ProtoMember(3)]
    public SignedDeviceCertificate Signer { get; set; }

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedMessage : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(MessageType.LicenseRequest)]
    public MessageType Type
    {
        get => __pbn__Type ?? MessageType.LicenseRequest;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private MessageType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(2)]
    public byte[] Msg
    {
        get => __pbn__Msg;
        set => __pbn__Msg = value;
    }
    public bool ShouldSerializeMsg() => __pbn__Msg != null;
    public void ResetMsg() => __pbn__Msg = null;
    private byte[] __pbn__Msg;

    [global::ProtoBuf.ProtoMember(3)]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

    [global::ProtoBuf.ProtoMember(4)]
    public byte[] SessionKey
    {
        get => __pbn__SessionKey;
        set => __pbn__SessionKey = value;
    }
    public bool ShouldSerializeSessionKey() => __pbn__SessionKey != null;
    public void ResetSessionKey() => __pbn__SessionKey = null;
    private byte[] __pbn__SessionKey;

    [global::ProtoBuf.ProtoMember(5)]
    public RemoteAttestation RemoteAttestation { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public enum MessageType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE_REQUEST")]
        LicenseRequest = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE")]
        License = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"ERROR_RESPONSE")]
        ErrorResponse = 3,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE_REQUEST")]
        ServiceCertificateRequest = 4,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE")]
        ServiceCertificate = 5,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class WidevineCencHeader : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(Algorithm.Unencrypted)]
    public Algorithm algorithm
    {
        get => __pbn__algorithm ?? Algorithm.Unencrypted;
        set => __pbn__algorithm = value;
    }
    public bool ShouldSerializealgorithm() => __pbn__algorithm != null;
    public void Resetalgorithm() => __pbn__algorithm = null;
    private Algorithm? __pbn__algorithm;

    [global::ProtoBuf.ProtoMember(2, Name = @"key_id")]
    public global::System.Collections.Generic.List<byte[]> KeyIds { get; } = new global::System.Collections.Generic.List<byte[]>();

    [global::ProtoBuf.ProtoMember(3, Name = @"provider")]
    [global::System.ComponentModel.DefaultValue("")]
    public string Provider
    {
        get => __pbn__Provider ?? "";
        set => __pbn__Provider = value;
    }
    public bool ShouldSerializeProvider() => __pbn__Provider != null;
    public void ResetProvider() => __pbn__Provider = null;
    private string __pbn__Provider;

    [global::ProtoBuf.ProtoMember(4, Name = @"content_id")]
    public byte[] ContentId
    {
        get => __pbn__ContentId;
        set => __pbn__ContentId = value;
    }
    public bool ShouldSerializeContentId() => __pbn__ContentId != null;
    public void ResetContentId() => __pbn__ContentId = null;
    private byte[] __pbn__ContentId;

    [global::ProtoBuf.ProtoMember(5, Name = @"track_type_deprecated")]
    [global::System.ComponentModel.DefaultValue("")]
    public string TrackTypeDeprecated
    {
        get => __pbn__TrackTypeDeprecated ?? "";
        set => __pbn__TrackTypeDeprecated = value;
    }
    public bool ShouldSerializeTrackTypeDeprecated() => __pbn__TrackTypeDeprecated != null;
    public void ResetTrackTypeDeprecated() => __pbn__TrackTypeDeprecated = null;
    private string __pbn__TrackTypeDeprecated;

    [global::ProtoBuf.ProtoMember(6, Name = @"policy")]
    [global::System.ComponentModel.DefaultValue("")]
    public string Policy
    {
        get => __pbn__Policy ?? "";
        set => __pbn__Policy = value;
    }
    public bool ShouldSerializePolicy() => __pbn__Policy != null;
    public void ResetPolicy() => __pbn__Policy = null;
    private string __pbn__Policy;

    [global::ProtoBuf.ProtoMember(7, Name = @"crypto_period_index")]
    public uint CryptoPeriodIndex
    {
        get => __pbn__CryptoPeriodIndex.GetValueOrDefault();
        set => __pbn__CryptoPeriodIndex = value;
    }
    public bool ShouldSerializeCryptoPeriodIndex() => __pbn__CryptoPeriodIndex != null;
    public void ResetCryptoPeriodIndex() => __pbn__CryptoPeriodIndex = null;
    private uint? __pbn__CryptoPeriodIndex;

    [global::ProtoBuf.ProtoMember(8, Name = @"grouped_license")]
    public byte[] GroupedLicense
    {
        get => __pbn__GroupedLicense;
        set => __pbn__GroupedLicense = value;
    }
    public bool ShouldSerializeGroupedLicense() => __pbn__GroupedLicense != null;
    public void ResetGroupedLicense() => __pbn__GroupedLicense = null;
    private byte[] __pbn__GroupedLicense;

    [global::ProtoBuf.ProtoMember(9, Name = @"protection_scheme")]
    public uint ProtectionScheme
    {
        get => __pbn__ProtectionScheme.GetValueOrDefault();
        set => __pbn__ProtectionScheme = value;
    }
    public bool ShouldSerializeProtectionScheme() => __pbn__ProtectionScheme != null;
    public void ResetProtectionScheme() => __pbn__ProtectionScheme = null;
    private uint? __pbn__ProtectionScheme;

    [global::ProtoBuf.ProtoMember(10, Name = @"crypto_period_seconds")]
    public uint CryptoPeriodSeconds
    {
        get => __pbn__CryptoPeriodSeconds.GetValueOrDefault();
        set => __pbn__CryptoPeriodSeconds = value;
    }
    public bool ShouldSerializeCryptoPeriodSeconds() => __pbn__CryptoPeriodSeconds != null;
    public void ResetCryptoPeriodSeconds() => __pbn__CryptoPeriodSeconds = null;
    private uint? __pbn__CryptoPeriodSeconds;

    [global::ProtoBuf.ProtoContract()]
    public enum Algorithm
    {
        [global::ProtoBuf.ProtoEnum(Name = @"UNENCRYPTED")]
        Unencrypted = 0,
        [global::ProtoBuf.ProtoEnum(Name = @"AESCTR")]
        Aesctr = 1,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedLicenseRequest : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(MessageType.LicenseRequest)]
    public MessageType Type
    {
        get => __pbn__Type ?? MessageType.LicenseRequest;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private MessageType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(2)]
    public LicenseRequest Msg { get; set; }

    [global::ProtoBuf.ProtoMember(3)]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

    [global::ProtoBuf.ProtoMember(4)]
    public byte[] SessionKey
    {
        get => __pbn__SessionKey;
        set => __pbn__SessionKey = value;
    }
    public bool ShouldSerializeSessionKey() => __pbn__SessionKey != null;
    public void ResetSessionKey() => __pbn__SessionKey = null;
    private byte[] __pbn__SessionKey;

    [global::ProtoBuf.ProtoMember(5)]
    public RemoteAttestation RemoteAttestation { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public enum MessageType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE_REQUEST")]
        LicenseRequest = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE")]
        License = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"ERROR_RESPONSE")]
        ErrorResponse = 3,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE_REQUEST")]
        ServiceCertificateRequest = 4,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE")]
        ServiceCertificate = 5,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedLicenseRequestRaw : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(MessageType.LicenseRequest)]
    public MessageType Type
    {
        get => __pbn__Type ?? MessageType.LicenseRequest;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private MessageType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(2)]
    public LicenseRequestRaw Msg { get; set; }

    [global::ProtoBuf.ProtoMember(3)]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

    [global::ProtoBuf.ProtoMember(4)]
    public byte[] SessionKey
    {
        get => __pbn__SessionKey;
        set => __pbn__SessionKey = value;
    }
    public bool ShouldSerializeSessionKey() => __pbn__SessionKey != null;
    public void ResetSessionKey() => __pbn__SessionKey = null;
    private byte[] __pbn__SessionKey;

    [global::ProtoBuf.ProtoMember(5)]
    public RemoteAttestation RemoteAttestation { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public enum MessageType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE_REQUEST")]
        LicenseRequest = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE")]
        License = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"ERROR_RESPONSE")]
        ErrorResponse = 3,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE_REQUEST")]
        ServiceCertificateRequest = 4,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE")]
        ServiceCertificate = 5,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedLicense : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(MessageType.LicenseRequest)]
    public MessageType Type
    {
        get => __pbn__Type ?? MessageType.LicenseRequest;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private MessageType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(2)]
    public License Msg { get; set; }

    [global::ProtoBuf.ProtoMember(3)]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

    [global::ProtoBuf.ProtoMember(4)]
    public byte[] SessionKey
    {
        get => __pbn__SessionKey;
        set => __pbn__SessionKey = value;
    }
    public bool ShouldSerializeSessionKey() => __pbn__SessionKey != null;
    public void ResetSessionKey() => __pbn__SessionKey = null;
    private byte[] __pbn__SessionKey;

    [global::ProtoBuf.ProtoMember(5)]
    public RemoteAttestation RemoteAttestation { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public enum MessageType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE_REQUEST")]
        LicenseRequest = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE")]
        License = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"ERROR_RESPONSE")]
        ErrorResponse = 3,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE_REQUEST")]
        ServiceCertificateRequest = 4,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE")]
        ServiceCertificate = 5,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class SignedServiceCertificate : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(MessageType.LicenseRequest)]
    public MessageType Type
    {
        get => __pbn__Type ?? MessageType.LicenseRequest;
        set => __pbn__Type = value;
    }
    public bool ShouldSerializeType() => __pbn__Type != null;
    public void ResetType() => __pbn__Type = null;
    private MessageType? __pbn__Type;

    [global::ProtoBuf.ProtoMember(2)]
    public SignedDeviceCertificate Msg { get; set; }

    [global::ProtoBuf.ProtoMember(3)]
    public byte[] Signature
    {
        get => __pbn__Signature;
        set => __pbn__Signature = value;
    }
    public bool ShouldSerializeSignature() => __pbn__Signature != null;
    public void ResetSignature() => __pbn__Signature = null;
    private byte[] __pbn__Signature;

    [global::ProtoBuf.ProtoMember(4)]
    public byte[] SessionKey
    {
        get => __pbn__SessionKey;
        set => __pbn__SessionKey = value;
    }
    public bool ShouldSerializeSessionKey() => __pbn__SessionKey != null;
    public void ResetSessionKey() => __pbn__SessionKey = null;
    private byte[] __pbn__SessionKey;

    [global::ProtoBuf.ProtoMember(5)]
    public RemoteAttestation RemoteAttestation { get; set; }

    [global::ProtoBuf.ProtoContract()]
    public enum MessageType
    {
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE_REQUEST")]
        LicenseRequest = 1,
        [global::ProtoBuf.ProtoEnum(Name = @"LICENSE")]
        License = 2,
        [global::ProtoBuf.ProtoEnum(Name = @"ERROR_RESPONSE")]
        ErrorResponse = 3,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE_REQUEST")]
        ServiceCertificateRequest = 4,
        [global::ProtoBuf.ProtoEnum(Name = @"SERVICE_CERTIFICATE")]
        ServiceCertificate = 5,
    }

}

[global::ProtoBuf.ProtoContract()]
public partial class FileHashes : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1, Name = @"signer")]
    public byte[] Signer
    {
        get => __pbn__Signer;
        set => __pbn__Signer = value;
    }
    public bool ShouldSerializeSigner() => __pbn__Signer != null;
    public void ResetSigner() => __pbn__Signer = null;
    private byte[] __pbn__Signer;

    [global::ProtoBuf.ProtoMember(2, Name = @"signatures")]
    public global::System.Collections.Generic.List<Signature> Signatures { get; } = new global::System.Collections.Generic.List<Signature>();

    [global::ProtoBuf.ProtoContract()]
    public partial class Signature : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1, Name = @"filename")]
        [global::System.ComponentModel.DefaultValue("")]
        public string Filename
        {
            get => __pbn__Filename ?? "";
            set => __pbn__Filename = value;
        }
        public bool ShouldSerializeFilename() => __pbn__Filename != null;
        public void ResetFilename() => __pbn__Filename = null;
        private string __pbn__Filename;

        [global::ProtoBuf.ProtoMember(2, Name = @"test_signing")]
        public bool TestSigning
        {
            get => __pbn__TestSigning.GetValueOrDefault();
            set => __pbn__TestSigning = value;
        }
        public bool ShouldSerializeTestSigning() => __pbn__TestSigning != null;
        public void ResetTestSigning() => __pbn__TestSigning = null;
        private bool? __pbn__TestSigning;

        [global::ProtoBuf.ProtoMember(3)]
        public byte[] SHA512Hash
        {
            get => __pbn__SHA512Hash;
            set => __pbn__SHA512Hash = value;
        }
        public bool ShouldSerializeSHA512Hash() => __pbn__SHA512Hash != null;
        public void ResetSHA512Hash() => __pbn__SHA512Hash = null;
        private byte[] __pbn__SHA512Hash;

        [global::ProtoBuf.ProtoMember(4, Name = @"main_exe")]
        public bool MainExe
        {
            get => __pbn__MainExe.GetValueOrDefault();
            set => __pbn__MainExe = value;
        }
        public bool ShouldSerializeMainExe() => __pbn__MainExe != null;
        public void ResetMainExe() => __pbn__MainExe = null;
        private bool? __pbn__MainExe;

        [global::ProtoBuf.ProtoMember(5)]
        public byte[] signature
        {
            get => __pbn__signature;
            set => __pbn__signature = value;
        }
        public bool ShouldSerializesignature() => __pbn__signature != null;
        public void Resetsignature() => __pbn__signature = null;
        private byte[] __pbn__signature;

    }

}

[global::ProtoBuf.ProtoContract()]
public enum LicenseType
{
    [global::ProtoBuf.ProtoEnum(Name = @"ZERO")]
    Zero = 0,
    [global::ProtoBuf.ProtoEnum(Name = @"DEFAULT")]
    Default = 1,
    [global::ProtoBuf.ProtoEnum(Name = @"OFFLINE")]
    Offline = 2,
}

[global::ProtoBuf.ProtoContract()]
public enum ProtocolVersion
{
    [global::ProtoBuf.ProtoEnum(Name = @"CURRENT")]
    Current = 21,
}

#pragma warning restore CS0612, CS0618, CS1591, CS3021, IDE0079, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192
#endregion
