// Code generated by protoc-gen-go. DO NOT EDIT.
// source: attribute.proto

/*
Package gobgpapi is a generated protocol buffer package.

It is generated from these files:
	attribute.proto
	capability.proto
	gobgp.proto

It has these top-level messages:
	OriginAttribute
	AsSegment
	AsPathAttribute
	NextHopAttribute
	MultiExitDiscAttribute
	LocalPrefAttribute
	AtomicAggregateAttribute
	AggregatorAttribute
	CommunitiesAttribute
	OriginatorIdAttribute
	ClusterListAttribute
	IPAddressPrefix
	LabeledIPAddressPrefix
	EncapsulationNLRI
	RouteDistinguisherTwoOctetAS
	RouteDistinguisherIPAddress
	RouteDistinguisherFourOctetAS
	EthernetSegmentIdentifier
	EVPNEthernetAutoDiscoveryRoute
	EVPNMACIPAdvertisementRoute
	EVPNInclusiveMulticastEthernetTagRoute
	EVPNEthernetSegmentRoute
	EVPNIPPrefixRoute
	EVPNIPMSIRoute
	LabeledVPNIPAddressPrefix
	RouteTargetMembershipNLRI
	FlowSpecIPPrefix
	FlowSpecMAC
	FlowSpecComponentItem
	FlowSpecComponent
	FlowSpecNLRI
	VPNFlowSpecNLRI
	OpaqueNLRI
	LsNodeDescriptor
	LsLinkDescriptor
	LsPrefixDescriptor
	LsNodeNLRI
	LsLinkNLRI
	LsPrefixV4NLRI
	LsPrefixV6NLRI
	LsAddrPrefix
	MpReachNLRIAttribute
	MpUnreachNLRIAttribute
	TwoOctetAsSpecificExtended
	IPv4AddressSpecificExtended
	FourOctetAsSpecificExtended
	ValidationExtended
	ColorExtended
	EncapExtended
	DefaultGatewayExtended
	OpaqueExtended
	ESILabelExtended
	ESImportRouteTarget
	MacMobilityExtended
	RouterMacExtended
	TrafficRateExtended
	TrafficActionExtended
	RedirectTwoOctetAsSpecificExtended
	RedirectIPv4AddressSpecificExtended
	RedirectFourOctetAsSpecificExtended
	TrafficRemarkExtended
	UnknownExtended
	ExtendedCommunitiesAttribute
	As4PathAttribute
	As4AggregatorAttribute
	PmsiTunnelAttribute
	TunnelEncapSubTLVEncapsulation
	TunnelEncapSubTLVProtocol
	TunnelEncapSubTLVColor
	TunnelEncapSubTLVUnknown
	TunnelEncapTLV
	TunnelEncapAttribute
	IPv6AddressSpecificExtended
	RedirectIPv6AddressSpecificExtended
	IP6ExtendedCommunitiesAttribute
	AigpTLVIGPMetric
	AigpTLVUnknown
	AigpAttribute
	LargeCommunity
	LargeCommunitiesAttribute
	LsNodeFlags
	LsIGPFlags
	LsSrRange
	LsSrCapabilities
	LsSrLocalBlock
	LsAttributeNode
	LsAttributeLink
	LsAttributePrefix
	LsAttribute
	UnknownAttribute
	SRv6StructureSubSubTLV
	SRv6SIDFlags
	SRv6TLV
	SRv6InformationSubTLV
	SRv6L3ServiceTLV
	PrefixSID
	MultiProtocolCapability
	RouteRefreshCapability
	CarryingLabelInfoCapability
	ExtendedNexthopCapabilityTuple
	ExtendedNexthopCapability
	GracefulRestartCapabilityTuple
	GracefulRestartCapability
	FourOctetASNumberCapability
	AddPathCapabilityTuple
	AddPathCapability
	EnhancedRouteRefreshCapability
	LongLivedGracefulRestartCapabilityTuple
	LongLivedGracefulRestartCapability
	RouteRefreshCiscoCapability
	UnknownCapability
	StartBgpRequest
	StopBgpRequest
	GetBgpRequest
	GetBgpResponse
	AddPeerRequest
	DeletePeerRequest
	ListPeerRequest
	ListPeerResponse
	UpdatePeerRequest
	UpdatePeerResponse
	ResetPeerRequest
	ShutdownPeerRequest
	EnablePeerRequest
	DisablePeerRequest
	MonitorPeerRequest
	MonitorPeerResponse
	AddPeerGroupRequest
	DeletePeerGroupRequest
	UpdatePeerGroupRequest
	UpdatePeerGroupResponse
	AddDynamicNeighborRequest
	AddPathRequest
	AddPathResponse
	DeletePathRequest
	ListPathRequest
	ListPathResponse
	AddPathStreamRequest
	GetTableRequest
	GetTableResponse
	MonitorTableRequest
	MonitorTableResponse
	AddVrfRequest
	DeleteVrfRequest
	ListVrfRequest
	ListVrfResponse
	AddPolicyRequest
	DeletePolicyRequest
	ListPolicyRequest
	ListPolicyResponse
	SetPoliciesRequest
	AddDefinedSetRequest
	DeleteDefinedSetRequest
	ListDefinedSetRequest
	ListDefinedSetResponse
	AddStatementRequest
	DeleteStatementRequest
	ListStatementRequest
	ListStatementResponse
	AddPolicyAssignmentRequest
	DeletePolicyAssignmentRequest
	ListPolicyAssignmentRequest
	ListPolicyAssignmentResponse
	SetPolicyAssignmentRequest
	AddRpkiRequest
	DeleteRpkiRequest
	ListRpkiRequest
	ListRpkiResponse
	EnableRpkiRequest
	DisableRpkiRequest
	ResetRpkiRequest
	ListRpkiTableRequest
	ListRpkiTableResponse
	EnableZebraRequest
	EnableMrtRequest
	DisableMrtRequest
	AddBmpRequest
	DeleteBmpRequest
	Family
	Validation
	Path
	Destination
	TableLookupPrefix
	Peer
	PeerGroup
	DynamicNeighbor
	ApplyPolicy
	PrefixLimit
	PeerConf
	PeerGroupConf
	PeerGroupState
	EbgpMultihop
	RouteReflector
	PeerState
	Messages
	Message
	Queues
	Timers
	TimersConfig
	TimersState
	Transport
	RouteServer
	GracefulRestart
	MpGracefulRestartConfig
	MpGracefulRestartState
	MpGracefulRestart
	AfiSafiConfig
	AfiSafiState
	RouteSelectionOptionsConfig
	RouteSelectionOptionsState
	RouteSelectionOptions
	UseMultiplePathsConfig
	UseMultiplePathsState
	EbgpConfig
	EbgpState
	Ebgp
	IbgpConfig
	IbgpState
	Ibgp
	UseMultiplePaths
	RouteTargetMembershipConfig
	RouteTargetMembershipState
	RouteTargetMembership
	LongLivedGracefulRestartConfig
	LongLivedGracefulRestartState
	LongLivedGracefulRestart
	AfiSafi
	AddPathsConfig
	AddPathsState
	AddPaths
	Prefix
	DefinedSet
	MatchSet
	AsPathLength
	Conditions
	CommunityAction
	MedAction
	AsPrependAction
	NexthopAction
	LocalPrefAction
	Actions
	Statement
	Policy
	PolicyAssignment
	RoutingPolicy
	Roa
	Vrf
	DefaultRouteDistance
	Global
	Confederation
	RPKIConf
	RPKIState
	Rpki
*/
package gobgpapi

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/any"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

// Based om RFC 7752, Table 1.
type LsNLRIType int32

const (
	LsNLRIType_LS_NLRI_UNKNOWN   LsNLRIType = 0
	LsNLRIType_LS_NLRI_NODE      LsNLRIType = 1
	LsNLRIType_LS_NLRI_LINK      LsNLRIType = 2
	LsNLRIType_LS_NLRI_PREFIX_V4 LsNLRIType = 3
	LsNLRIType_LS_NLRI_PREFIX_V6 LsNLRIType = 4
)

var LsNLRIType_name = map[int32]string{
	0: "LS_NLRI_UNKNOWN",
	1: "LS_NLRI_NODE",
	2: "LS_NLRI_LINK",
	3: "LS_NLRI_PREFIX_V4",
	4: "LS_NLRI_PREFIX_V6",
}
var LsNLRIType_value = map[string]int32{
	"LS_NLRI_UNKNOWN":   0,
	"LS_NLRI_NODE":      1,
	"LS_NLRI_LINK":      2,
	"LS_NLRI_PREFIX_V4": 3,
	"LS_NLRI_PREFIX_V6": 4,
}

func (x LsNLRIType) String() string {
	return proto.EnumName(LsNLRIType_name, int32(x))
}
func (LsNLRIType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

type OriginAttribute struct {
	Origin uint32 `protobuf:"varint,1,opt,name=origin" json:"origin,omitempty"`
}

func (m *OriginAttribute) Reset()                    { *m = OriginAttribute{} }
func (m *OriginAttribute) String() string            { return proto.CompactTextString(m) }
func (*OriginAttribute) ProtoMessage()               {}
func (*OriginAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

func (m *OriginAttribute) GetOrigin() uint32 {
	if m != nil {
		return m.Origin
	}
	return 0
}

type AsSegment struct {
	Type    uint32   `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Numbers []uint32 `protobuf:"varint,2,rep,packed,name=numbers" json:"numbers,omitempty"`
}

func (m *AsSegment) Reset()                    { *m = AsSegment{} }
func (m *AsSegment) String() string            { return proto.CompactTextString(m) }
func (*AsSegment) ProtoMessage()               {}
func (*AsSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

func (m *AsSegment) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *AsSegment) GetNumbers() []uint32 {
	if m != nil {
		return m.Numbers
	}
	return nil
}

type AsPathAttribute struct {
	Segments []*AsSegment `protobuf:"bytes,1,rep,name=segments" json:"segments,omitempty"`
}

func (m *AsPathAttribute) Reset()                    { *m = AsPathAttribute{} }
func (m *AsPathAttribute) String() string            { return proto.CompactTextString(m) }
func (*AsPathAttribute) ProtoMessage()               {}
func (*AsPathAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

func (m *AsPathAttribute) GetSegments() []*AsSegment {
	if m != nil {
		return m.Segments
	}
	return nil
}

type NextHopAttribute struct {
	NextHop string `protobuf:"bytes,1,opt,name=next_hop,json=nextHop" json:"next_hop,omitempty"`
}

func (m *NextHopAttribute) Reset()                    { *m = NextHopAttribute{} }
func (m *NextHopAttribute) String() string            { return proto.CompactTextString(m) }
func (*NextHopAttribute) ProtoMessage()               {}
func (*NextHopAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

func (m *NextHopAttribute) GetNextHop() string {
	if m != nil {
		return m.NextHop
	}
	return ""
}

type MultiExitDiscAttribute struct {
	Med uint32 `protobuf:"varint,1,opt,name=med" json:"med,omitempty"`
}

func (m *MultiExitDiscAttribute) Reset()                    { *m = MultiExitDiscAttribute{} }
func (m *MultiExitDiscAttribute) String() string            { return proto.CompactTextString(m) }
func (*MultiExitDiscAttribute) ProtoMessage()               {}
func (*MultiExitDiscAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }

func (m *MultiExitDiscAttribute) GetMed() uint32 {
	if m != nil {
		return m.Med
	}
	return 0
}

type LocalPrefAttribute struct {
	LocalPref uint32 `protobuf:"varint,1,opt,name=local_pref,json=localPref" json:"local_pref,omitempty"`
}

func (m *LocalPrefAttribute) Reset()                    { *m = LocalPrefAttribute{} }
func (m *LocalPrefAttribute) String() string            { return proto.CompactTextString(m) }
func (*LocalPrefAttribute) ProtoMessage()               {}
func (*LocalPrefAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }

func (m *LocalPrefAttribute) GetLocalPref() uint32 {
	if m != nil {
		return m.LocalPref
	}
	return 0
}

type AtomicAggregateAttribute struct {
}

func (m *AtomicAggregateAttribute) Reset()                    { *m = AtomicAggregateAttribute{} }
func (m *AtomicAggregateAttribute) String() string            { return proto.CompactTextString(m) }
func (*AtomicAggregateAttribute) ProtoMessage()               {}
func (*AtomicAggregateAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }

type AggregatorAttribute struct {
	As      uint32 `protobuf:"varint,2,opt,name=as" json:"as,omitempty"`
	Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
}

func (m *AggregatorAttribute) Reset()                    { *m = AggregatorAttribute{} }
func (m *AggregatorAttribute) String() string            { return proto.CompactTextString(m) }
func (*AggregatorAttribute) ProtoMessage()               {}
func (*AggregatorAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }

func (m *AggregatorAttribute) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *AggregatorAttribute) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

type CommunitiesAttribute struct {
	Communities []uint32 `protobuf:"varint,1,rep,packed,name=communities" json:"communities,omitempty"`
}

func (m *CommunitiesAttribute) Reset()                    { *m = CommunitiesAttribute{} }
func (m *CommunitiesAttribute) String() string            { return proto.CompactTextString(m) }
func (*CommunitiesAttribute) ProtoMessage()               {}
func (*CommunitiesAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }

func (m *CommunitiesAttribute) GetCommunities() []uint32 {
	if m != nil {
		return m.Communities
	}
	return nil
}

type OriginatorIdAttribute struct {
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
}

func (m *OriginatorIdAttribute) Reset()                    { *m = OriginatorIdAttribute{} }
func (m *OriginatorIdAttribute) String() string            { return proto.CompactTextString(m) }
func (*OriginatorIdAttribute) ProtoMessage()               {}
func (*OriginatorIdAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }

func (m *OriginatorIdAttribute) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

type ClusterListAttribute struct {
	Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"`
}

func (m *ClusterListAttribute) Reset()                    { *m = ClusterListAttribute{} }
func (m *ClusterListAttribute) String() string            { return proto.CompactTextString(m) }
func (*ClusterListAttribute) ProtoMessage()               {}
func (*ClusterListAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }

func (m *ClusterListAttribute) GetIds() []string {
	if m != nil {
		return m.Ids
	}
	return nil
}

// IPAddressPrefix represents the NLRI for:
// - AFI=1, SAFI=1
// - AFI=2, SAFI=1
type IPAddressPrefix struct {
	PrefixLen uint32 `protobuf:"varint,1,opt,name=prefix_len,json=prefixLen" json:"prefix_len,omitempty"`
	Prefix    string `protobuf:"bytes,2,opt,name=prefix" json:"prefix,omitempty"`
}

func (m *IPAddressPrefix) Reset()                    { *m = IPAddressPrefix{} }
func (m *IPAddressPrefix) String() string            { return proto.CompactTextString(m) }
func (*IPAddressPrefix) ProtoMessage()               {}
func (*IPAddressPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }

func (m *IPAddressPrefix) GetPrefixLen() uint32 {
	if m != nil {
		return m.PrefixLen
	}
	return 0
}

func (m *IPAddressPrefix) GetPrefix() string {
	if m != nil {
		return m.Prefix
	}
	return ""
}

// LabeledIPAddressPrefix represents the NLRI for:
// - AFI=1, SAFI=4
// - AFI=2, SAFI=4
type LabeledIPAddressPrefix struct {
	Labels    []uint32 `protobuf:"varint,1,rep,packed,name=labels" json:"labels,omitempty"`
	PrefixLen uint32   `protobuf:"varint,2,opt,name=prefix_len,json=prefixLen" json:"prefix_len,omitempty"`
	Prefix    string   `protobuf:"bytes,3,opt,name=prefix" json:"prefix,omitempty"`
}

func (m *LabeledIPAddressPrefix) Reset()                    { *m = LabeledIPAddressPrefix{} }
func (m *LabeledIPAddressPrefix) String() string            { return proto.CompactTextString(m) }
func (*LabeledIPAddressPrefix) ProtoMessage()               {}
func (*LabeledIPAddressPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }

func (m *LabeledIPAddressPrefix) GetLabels() []uint32 {
	if m != nil {
		return m.Labels
	}
	return nil
}

func (m *LabeledIPAddressPrefix) GetPrefixLen() uint32 {
	if m != nil {
		return m.PrefixLen
	}
	return 0
}

func (m *LabeledIPAddressPrefix) GetPrefix() string {
	if m != nil {
		return m.Prefix
	}
	return ""
}

// EncapsulationNLRI represents the NLRI for:
// - AFI=1, SAFI=7
// - AFI=2, SAFI=7
type EncapsulationNLRI struct {
	Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
}

func (m *EncapsulationNLRI) Reset()                    { *m = EncapsulationNLRI{} }
func (m *EncapsulationNLRI) String() string            { return proto.CompactTextString(m) }
func (*EncapsulationNLRI) ProtoMessage()               {}
func (*EncapsulationNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }

func (m *EncapsulationNLRI) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

type RouteDistinguisherTwoOctetAS struct {
	Admin    uint32 `protobuf:"varint,1,opt,name=admin" json:"admin,omitempty"`
	Assigned uint32 `protobuf:"varint,2,opt,name=assigned" json:"assigned,omitempty"`
}

func (m *RouteDistinguisherTwoOctetAS) Reset()                    { *m = RouteDistinguisherTwoOctetAS{} }
func (m *RouteDistinguisherTwoOctetAS) String() string            { return proto.CompactTextString(m) }
func (*RouteDistinguisherTwoOctetAS) ProtoMessage()               {}
func (*RouteDistinguisherTwoOctetAS) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }

func (m *RouteDistinguisherTwoOctetAS) GetAdmin() uint32 {
	if m != nil {
		return m.Admin
	}
	return 0
}

func (m *RouteDistinguisherTwoOctetAS) GetAssigned() uint32 {
	if m != nil {
		return m.Assigned
	}
	return 0
}

type RouteDistinguisherIPAddress struct {
	Admin    string `protobuf:"bytes,1,opt,name=admin" json:"admin,omitempty"`
	Assigned uint32 `protobuf:"varint,2,opt,name=assigned" json:"assigned,omitempty"`
}

func (m *RouteDistinguisherIPAddress) Reset()                    { *m = RouteDistinguisherIPAddress{} }
func (m *RouteDistinguisherIPAddress) String() string            { return proto.CompactTextString(m) }
func (*RouteDistinguisherIPAddress) ProtoMessage()               {}
func (*RouteDistinguisherIPAddress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }

func (m *RouteDistinguisherIPAddress) GetAdmin() string {
	if m != nil {
		return m.Admin
	}
	return ""
}

func (m *RouteDistinguisherIPAddress) GetAssigned() uint32 {
	if m != nil {
		return m.Assigned
	}
	return 0
}

type RouteDistinguisherFourOctetAS struct {
	Admin    uint32 `protobuf:"varint,1,opt,name=admin" json:"admin,omitempty"`
	Assigned uint32 `protobuf:"varint,2,opt,name=assigned" json:"assigned,omitempty"`
}

func (m *RouteDistinguisherFourOctetAS) Reset()                    { *m = RouteDistinguisherFourOctetAS{} }
func (m *RouteDistinguisherFourOctetAS) String() string            { return proto.CompactTextString(m) }
func (*RouteDistinguisherFourOctetAS) ProtoMessage()               {}
func (*RouteDistinguisherFourOctetAS) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }

func (m *RouteDistinguisherFourOctetAS) GetAdmin() uint32 {
	if m != nil {
		return m.Admin
	}
	return 0
}

func (m *RouteDistinguisherFourOctetAS) GetAssigned() uint32 {
	if m != nil {
		return m.Assigned
	}
	return 0
}

type EthernetSegmentIdentifier struct {
	Type  uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (m *EthernetSegmentIdentifier) Reset()                    { *m = EthernetSegmentIdentifier{} }
func (m *EthernetSegmentIdentifier) String() string            { return proto.CompactTextString(m) }
func (*EthernetSegmentIdentifier) ProtoMessage()               {}
func (*EthernetSegmentIdentifier) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }

func (m *EthernetSegmentIdentifier) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *EthernetSegmentIdentifier) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

// EVPNEthernetAutoDiscoveryRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=1
type EVPNEthernetAutoDiscoveryRoute struct {
	// One of:
	// - RouteDistinguisherTwoOctetAS
	// - RouteDistinguisherIPAddressAS
	// - RouteDistinguisherFourOctetAS
	Rd          *google_protobuf.Any       `protobuf:"bytes,1,opt,name=rd" json:"rd,omitempty"`
	Esi         *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi" json:"esi,omitempty"`
	EthernetTag uint32                     `protobuf:"varint,3,opt,name=ethernet_tag,json=ethernetTag" json:"ethernet_tag,omitempty"`
	Label       uint32                     `protobuf:"varint,4,opt,name=label" json:"label,omitempty"`
}

func (m *EVPNEthernetAutoDiscoveryRoute) Reset()         { *m = EVPNEthernetAutoDiscoveryRoute{} }
func (m *EVPNEthernetAutoDiscoveryRoute) String() string { return proto.CompactTextString(m) }
func (*EVPNEthernetAutoDiscoveryRoute) ProtoMessage()    {}
func (*EVPNEthernetAutoDiscoveryRoute) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{18}
}

func (m *EVPNEthernetAutoDiscoveryRoute) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *EVPNEthernetAutoDiscoveryRoute) GetEsi() *EthernetSegmentIdentifier {
	if m != nil {
		return m.Esi
	}
	return nil
}

func (m *EVPNEthernetAutoDiscoveryRoute) GetEthernetTag() uint32 {
	if m != nil {
		return m.EthernetTag
	}
	return 0
}

func (m *EVPNEthernetAutoDiscoveryRoute) GetLabel() uint32 {
	if m != nil {
		return m.Label
	}
	return 0
}

// EVPNMACIPAdvertisementRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=2
type EVPNMACIPAdvertisementRoute struct {
	// One of:
	// - RouteDistinguisherTwoOctetAS
	// - RouteDistinguisherIPAddressAS
	// - RouteDistinguisherFourOctetAS
	Rd          *google_protobuf.Any       `protobuf:"bytes,1,opt,name=rd" json:"rd,omitempty"`
	Esi         *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi" json:"esi,omitempty"`
	EthernetTag uint32                     `protobuf:"varint,3,opt,name=ethernet_tag,json=ethernetTag" json:"ethernet_tag,omitempty"`
	MacAddress  string                     `protobuf:"bytes,4,opt,name=mac_address,json=macAddress" json:"mac_address,omitempty"`
	IpAddress   string                     `protobuf:"bytes,5,opt,name=ip_address,json=ipAddress" json:"ip_address,omitempty"`
	Labels      []uint32                   `protobuf:"varint,6,rep,packed,name=labels" json:"labels,omitempty"`
}

func (m *EVPNMACIPAdvertisementRoute) Reset()                    { *m = EVPNMACIPAdvertisementRoute{} }
func (m *EVPNMACIPAdvertisementRoute) String() string            { return proto.CompactTextString(m) }
func (*EVPNMACIPAdvertisementRoute) ProtoMessage()               {}
func (*EVPNMACIPAdvertisementRoute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }

func (m *EVPNMACIPAdvertisementRoute) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *EVPNMACIPAdvertisementRoute) GetEsi() *EthernetSegmentIdentifier {
	if m != nil {
		return m.Esi
	}
	return nil
}

func (m *EVPNMACIPAdvertisementRoute) GetEthernetTag() uint32 {
	if m != nil {
		return m.EthernetTag
	}
	return 0
}

func (m *EVPNMACIPAdvertisementRoute) GetMacAddress() string {
	if m != nil {
		return m.MacAddress
	}
	return ""
}

func (m *EVPNMACIPAdvertisementRoute) GetIpAddress() string {
	if m != nil {
		return m.IpAddress
	}
	return ""
}

func (m *EVPNMACIPAdvertisementRoute) GetLabels() []uint32 {
	if m != nil {
		return m.Labels
	}
	return nil
}

// EVPNInclusiveMulticastEthernetTagRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=3
type EVPNInclusiveMulticastEthernetTagRoute struct {
	// One of:
	// - RouteDistinguisherTwoOctetAS
	// - RouteDistinguisherIPAddressAS
	// - RouteDistinguisherFourOctetAS
	Rd          *google_protobuf.Any `protobuf:"bytes,1,opt,name=rd" json:"rd,omitempty"`
	EthernetTag uint32               `protobuf:"varint,2,opt,name=ethernet_tag,json=ethernetTag" json:"ethernet_tag,omitempty"`
	IpAddress   string               `protobuf:"bytes,3,opt,name=ip_address,json=ipAddress" json:"ip_address,omitempty"`
}

func (m *EVPNInclusiveMulticastEthernetTagRoute) Reset() {
	*m = EVPNInclusiveMulticastEthernetTagRoute{}
}
func (m *EVPNInclusiveMulticastEthernetTagRoute) String() string { return proto.CompactTextString(m) }
func (*EVPNInclusiveMulticastEthernetTagRoute) ProtoMessage()    {}
func (*EVPNInclusiveMulticastEthernetTagRoute) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{20}
}

func (m *EVPNInclusiveMulticastEthernetTagRoute) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *EVPNInclusiveMulticastEthernetTagRoute) GetEthernetTag() uint32 {
	if m != nil {
		return m.EthernetTag
	}
	return 0
}

func (m *EVPNInclusiveMulticastEthernetTagRoute) GetIpAddress() string {
	if m != nil {
		return m.IpAddress
	}
	return ""
}

// EVPNEthernetSegmentRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=4
type EVPNEthernetSegmentRoute struct {
	// One of:
	// - RouteDistinguisherTwoOctetAS
	// - RouteDistinguisherIPAddressAS
	// - RouteDistinguisherFourOctetAS
	Rd        *google_protobuf.Any       `protobuf:"bytes,1,opt,name=rd" json:"rd,omitempty"`
	Esi       *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi" json:"esi,omitempty"`
	IpAddress string                     `protobuf:"bytes,3,opt,name=ip_address,json=ipAddress" json:"ip_address,omitempty"`
}

func (m *EVPNEthernetSegmentRoute) Reset()                    { *m = EVPNEthernetSegmentRoute{} }
func (m *EVPNEthernetSegmentRoute) String() string            { return proto.CompactTextString(m) }
func (*EVPNEthernetSegmentRoute) ProtoMessage()               {}
func (*EVPNEthernetSegmentRoute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }

func (m *EVPNEthernetSegmentRoute) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *EVPNEthernetSegmentRoute) GetEsi() *EthernetSegmentIdentifier {
	if m != nil {
		return m.Esi
	}
	return nil
}

func (m *EVPNEthernetSegmentRoute) GetIpAddress() string {
	if m != nil {
		return m.IpAddress
	}
	return ""
}

// EVPNIPPrefixRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=5
type EVPNIPPrefixRoute struct {
	// One of:
	// - RouteDistinguisherTwoOctetAS
	// - RouteDistinguisherIPAddressAS
	// - RouteDistinguisherFourOctetAS
	Rd          *google_protobuf.Any       `protobuf:"bytes,1,opt,name=rd" json:"rd,omitempty"`
	Esi         *EthernetSegmentIdentifier `protobuf:"bytes,2,opt,name=esi" json:"esi,omitempty"`
	EthernetTag uint32                     `protobuf:"varint,3,opt,name=ethernet_tag,json=ethernetTag" json:"ethernet_tag,omitempty"`
	IpPrefix    string                     `protobuf:"bytes,4,opt,name=ip_prefix,json=ipPrefix" json:"ip_prefix,omitempty"`
	IpPrefixLen uint32                     `protobuf:"varint,5,opt,name=ip_prefix_len,json=ipPrefixLen" json:"ip_prefix_len,omitempty"`
	GwAddress   string                     `protobuf:"bytes,6,opt,name=gw_address,json=gwAddress" json:"gw_address,omitempty"`
	Label       uint32                     `protobuf:"varint,7,opt,name=label" json:"label,omitempty"`
}

func (m *EVPNIPPrefixRoute) Reset()                    { *m = EVPNIPPrefixRoute{} }
func (m *EVPNIPPrefixRoute) String() string            { return proto.CompactTextString(m) }
func (*EVPNIPPrefixRoute) ProtoMessage()               {}
func (*EVPNIPPrefixRoute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }

func (m *EVPNIPPrefixRoute) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *EVPNIPPrefixRoute) GetEsi() *EthernetSegmentIdentifier {
	if m != nil {
		return m.Esi
	}
	return nil
}

func (m *EVPNIPPrefixRoute) GetEthernetTag() uint32 {
	if m != nil {
		return m.EthernetTag
	}
	return 0
}

func (m *EVPNIPPrefixRoute) GetIpPrefix() string {
	if m != nil {
		return m.IpPrefix
	}
	return ""
}

func (m *EVPNIPPrefixRoute) GetIpPrefixLen() uint32 {
	if m != nil {
		return m.IpPrefixLen
	}
	return 0
}

func (m *EVPNIPPrefixRoute) GetGwAddress() string {
	if m != nil {
		return m.GwAddress
	}
	return ""
}

func (m *EVPNIPPrefixRoute) GetLabel() uint32 {
	if m != nil {
		return m.Label
	}
	return 0
}

// EVPNIPMSIRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=9
type EVPNIPMSIRoute struct {
	// One of:
	// - RouteDistinguisherTwoOctetAS
	// - RouteDistinguisherIPAddressAS
	// - RouteDistinguisherFourOctetAS
	Rd          *google_protobuf.Any `protobuf:"bytes,1,opt,name=rd" json:"rd,omitempty"`
	EthernetTag uint32               `protobuf:"varint,2,opt,name=ethernet_tag,json=ethernetTag" json:"ethernet_tag,omitempty"`
	Rt          *google_protobuf.Any `protobuf:"bytes,3,opt,name=rt" json:"rt,omitempty"`
}

func (m *EVPNIPMSIRoute) Reset()                    { *m = EVPNIPMSIRoute{} }
func (m *EVPNIPMSIRoute) String() string            { return proto.CompactTextString(m) }
func (*EVPNIPMSIRoute) ProtoMessage()               {}
func (*EVPNIPMSIRoute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }

func (m *EVPNIPMSIRoute) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *EVPNIPMSIRoute) GetEthernetTag() uint32 {
	if m != nil {
		return m.EthernetTag
	}
	return 0
}

func (m *EVPNIPMSIRoute) GetRt() *google_protobuf.Any {
	if m != nil {
		return m.Rt
	}
	return nil
}

// LabeledVPNIPAddressPrefix represents the NLRI for:
// - AFI=1, SAFI=128
// - AFI=2, SAFI=128
type LabeledVPNIPAddressPrefix struct {
	Labels []uint32 `protobuf:"varint,1,rep,packed,name=labels" json:"labels,omitempty"`
	// One of:
	// - TwoOctetAsSpecificExtended
	// - IPv4AddressSpecificExtended
	// - FourOctetAsSpecificExtended
	Rd        *google_protobuf.Any `protobuf:"bytes,2,opt,name=rd" json:"rd,omitempty"`
	PrefixLen uint32               `protobuf:"varint,3,opt,name=prefix_len,json=prefixLen" json:"prefix_len,omitempty"`
	Prefix    string               `protobuf:"bytes,4,opt,name=prefix" json:"prefix,omitempty"`
}

func (m *LabeledVPNIPAddressPrefix) Reset()                    { *m = LabeledVPNIPAddressPrefix{} }
func (m *LabeledVPNIPAddressPrefix) String() string            { return proto.CompactTextString(m) }
func (*LabeledVPNIPAddressPrefix) ProtoMessage()               {}
func (*LabeledVPNIPAddressPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }

func (m *LabeledVPNIPAddressPrefix) GetLabels() []uint32 {
	if m != nil {
		return m.Labels
	}
	return nil
}

func (m *LabeledVPNIPAddressPrefix) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *LabeledVPNIPAddressPrefix) GetPrefixLen() uint32 {
	if m != nil {
		return m.PrefixLen
	}
	return 0
}

func (m *LabeledVPNIPAddressPrefix) GetPrefix() string {
	if m != nil {
		return m.Prefix
	}
	return ""
}

// RouteTargetMembershipNLRI represents the NLRI for:
// - AFI=1, SAFI=132
type RouteTargetMembershipNLRI struct {
	As uint32 `protobuf:"varint,1,opt,name=as" json:"as,omitempty"`
	// One of:
	// - TwoOctetAsSpecificExtended
	// - IPv4AddressSpecificExtended
	// - FourOctetAsSpecificExtended
	Rt *google_protobuf.Any `protobuf:"bytes,2,opt,name=rt" json:"rt,omitempty"`
}

func (m *RouteTargetMembershipNLRI) Reset()                    { *m = RouteTargetMembershipNLRI{} }
func (m *RouteTargetMembershipNLRI) String() string            { return proto.CompactTextString(m) }
func (*RouteTargetMembershipNLRI) ProtoMessage()               {}
func (*RouteTargetMembershipNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }

func (m *RouteTargetMembershipNLRI) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *RouteTargetMembershipNLRI) GetRt() *google_protobuf.Any {
	if m != nil {
		return m.Rt
	}
	return nil
}

type FlowSpecIPPrefix struct {
	Type      uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	PrefixLen uint32 `protobuf:"varint,2,opt,name=prefix_len,json=prefixLen" json:"prefix_len,omitempty"`
	Prefix    string `protobuf:"bytes,3,opt,name=prefix" json:"prefix,omitempty"`
	// IPv6 only
	Offset uint32 `protobuf:"varint,4,opt,name=offset" json:"offset,omitempty"`
}

func (m *FlowSpecIPPrefix) Reset()                    { *m = FlowSpecIPPrefix{} }
func (m *FlowSpecIPPrefix) String() string            { return proto.CompactTextString(m) }
func (*FlowSpecIPPrefix) ProtoMessage()               {}
func (*FlowSpecIPPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }

func (m *FlowSpecIPPrefix) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *FlowSpecIPPrefix) GetPrefixLen() uint32 {
	if m != nil {
		return m.PrefixLen
	}
	return 0
}

func (m *FlowSpecIPPrefix) GetPrefix() string {
	if m != nil {
		return m.Prefix
	}
	return ""
}

func (m *FlowSpecIPPrefix) GetOffset() uint32 {
	if m != nil {
		return m.Offset
	}
	return 0
}

type FlowSpecMAC struct {
	Type    uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Address string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"`
}

func (m *FlowSpecMAC) Reset()                    { *m = FlowSpecMAC{} }
func (m *FlowSpecMAC) String() string            { return proto.CompactTextString(m) }
func (*FlowSpecMAC) ProtoMessage()               {}
func (*FlowSpecMAC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }

func (m *FlowSpecMAC) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *FlowSpecMAC) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

type FlowSpecComponentItem struct {
	// Operator for Numeric type, Operand for Bitmask type
	Op    uint32 `protobuf:"varint,1,opt,name=op" json:"op,omitempty"`
	Value uint64 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"`
}

func (m *FlowSpecComponentItem) Reset()                    { *m = FlowSpecComponentItem{} }
func (m *FlowSpecComponentItem) String() string            { return proto.CompactTextString(m) }
func (*FlowSpecComponentItem) ProtoMessage()               {}
func (*FlowSpecComponentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }

func (m *FlowSpecComponentItem) GetOp() uint32 {
	if m != nil {
		return m.Op
	}
	return 0
}

func (m *FlowSpecComponentItem) GetValue() uint64 {
	if m != nil {
		return m.Value
	}
	return 0
}

type FlowSpecComponent struct {
	Type  uint32                   `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Items []*FlowSpecComponentItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
}

func (m *FlowSpecComponent) Reset()                    { *m = FlowSpecComponent{} }
func (m *FlowSpecComponent) String() string            { return proto.CompactTextString(m) }
func (*FlowSpecComponent) ProtoMessage()               {}
func (*FlowSpecComponent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }

func (m *FlowSpecComponent) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *FlowSpecComponent) GetItems() []*FlowSpecComponentItem {
	if m != nil {
		return m.Items
	}
	return nil
}

// FlowSpecNLRI represents the NLRI for:
// - AFI=1, SAFI=133
// - AFI=2, SAFI=133
type FlowSpecNLRI struct {
	// One of:
	// - FlowSpecIPPrefix
	// - FlowSpecMAC
	// - FlowSpecComponent
	Rules []*google_protobuf.Any `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"`
}

func (m *FlowSpecNLRI) Reset()                    { *m = FlowSpecNLRI{} }
func (m *FlowSpecNLRI) String() string            { return proto.CompactTextString(m) }
func (*FlowSpecNLRI) ProtoMessage()               {}
func (*FlowSpecNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }

func (m *FlowSpecNLRI) GetRules() []*google_protobuf.Any {
	if m != nil {
		return m.Rules
	}
	return nil
}

// VPNFlowSpecNLRI represents the NLRI for:
// - AFI=1, SAFI=134
// - AFI=2, SAFI=134
// - AFI=25, SAFI=134
type VPNFlowSpecNLRI struct {
	// One of:
	// - RouteDistinguisherTwoOctetAS
	// - RouteDistinguisherIPAddressAS
	// - RouteDistinguisherFourOctetAS
	Rd *google_protobuf.Any `protobuf:"bytes,1,opt,name=rd" json:"rd,omitempty"`
	// One of:
	// - FlowSpecIPPrefix
	// - FlowSpecMAC
	// - FlowSpecComponent
	Rules []*google_protobuf.Any `protobuf:"bytes,2,rep,name=rules" json:"rules,omitempty"`
}

func (m *VPNFlowSpecNLRI) Reset()                    { *m = VPNFlowSpecNLRI{} }
func (m *VPNFlowSpecNLRI) String() string            { return proto.CompactTextString(m) }
func (*VPNFlowSpecNLRI) ProtoMessage()               {}
func (*VPNFlowSpecNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }

func (m *VPNFlowSpecNLRI) GetRd() *google_protobuf.Any {
	if m != nil {
		return m.Rd
	}
	return nil
}

func (m *VPNFlowSpecNLRI) GetRules() []*google_protobuf.Any {
	if m != nil {
		return m.Rules
	}
	return nil
}

// OpaqueNLRI represents the NLRI for:
// - AFI=16397, SAFI=241
type OpaqueNLRI struct {
	Key   []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (m *OpaqueNLRI) Reset()                    { *m = OpaqueNLRI{} }
func (m *OpaqueNLRI) String() string            { return proto.CompactTextString(m) }
func (*OpaqueNLRI) ProtoMessage()               {}
func (*OpaqueNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }

func (m *OpaqueNLRI) GetKey() []byte {
	if m != nil {
		return m.Key
	}
	return nil
}

func (m *OpaqueNLRI) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type LsNodeDescriptor struct {
	Asn         uint32 `protobuf:"varint,1,opt,name=asn" json:"asn,omitempty"`
	BgpLsId     uint32 `protobuf:"varint,2,opt,name=bgp_ls_id,json=bgpLsId" json:"bgp_ls_id,omitempty"`
	OspfAreaId  uint32 `protobuf:"varint,3,opt,name=ospf_area_id,json=ospfAreaId" json:"ospf_area_id,omitempty"`
	Pseudonode  bool   `protobuf:"varint,4,opt,name=pseudonode" json:"pseudonode,omitempty"`
	IgpRouterId string `protobuf:"bytes,5,opt,name=igp_router_id,json=igpRouterId" json:"igp_router_id,omitempty"`
}

func (m *LsNodeDescriptor) Reset()                    { *m = LsNodeDescriptor{} }
func (m *LsNodeDescriptor) String() string            { return proto.CompactTextString(m) }
func (*LsNodeDescriptor) ProtoMessage()               {}
func (*LsNodeDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }

func (m *LsNodeDescriptor) GetAsn() uint32 {
	if m != nil {
		return m.Asn
	}
	return 0
}

func (m *LsNodeDescriptor) GetBgpLsId() uint32 {
	if m != nil {
		return m.BgpLsId
	}
	return 0
}

func (m *LsNodeDescriptor) GetOspfAreaId() uint32 {
	if m != nil {
		return m.OspfAreaId
	}
	return 0
}

func (m *LsNodeDescriptor) GetPseudonode() bool {
	if m != nil {
		return m.Pseudonode
	}
	return false
}

func (m *LsNodeDescriptor) GetIgpRouterId() string {
	if m != nil {
		return m.IgpRouterId
	}
	return ""
}

type LsLinkDescriptor struct {
	LinkLocalId       uint32 `protobuf:"varint,1,opt,name=link_local_id,json=linkLocalId" json:"link_local_id,omitempty"`
	LinkRemoteId      uint32 `protobuf:"varint,2,opt,name=link_remote_id,json=linkRemoteId" json:"link_remote_id,omitempty"`
	InterfaceAddrIpv4 string `protobuf:"bytes,3,opt,name=interface_addr_ipv4,json=interfaceAddrIpv4" json:"interface_addr_ipv4,omitempty"`
	NeighborAddrIpv4  string `protobuf:"bytes,4,opt,name=neighbor_addr_ipv4,json=neighborAddrIpv4" json:"neighbor_addr_ipv4,omitempty"`
	InterfaceAddrIpv6 string `protobuf:"bytes,5,opt,name=interface_addr_ipv6,json=interfaceAddrIpv6" json:"interface_addr_ipv6,omitempty"`
	NeighborAddrIpv6  string `protobuf:"bytes,6,opt,name=neighbor_addr_ipv6,json=neighborAddrIpv6" json:"neighbor_addr_ipv6,omitempty"`
}

func (m *LsLinkDescriptor) Reset()                    { *m = LsLinkDescriptor{} }
func (m *LsLinkDescriptor) String() string            { return proto.CompactTextString(m) }
func (*LsLinkDescriptor) ProtoMessage()               {}
func (*LsLinkDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }

func (m *LsLinkDescriptor) GetLinkLocalId() uint32 {
	if m != nil {
		return m.LinkLocalId
	}
	return 0
}

func (m *LsLinkDescriptor) GetLinkRemoteId() uint32 {
	if m != nil {
		return m.LinkRemoteId
	}
	return 0
}

func (m *LsLinkDescriptor) GetInterfaceAddrIpv4() string {
	if m != nil {
		return m.InterfaceAddrIpv4
	}
	return ""
}

func (m *LsLinkDescriptor) GetNeighborAddrIpv4() string {
	if m != nil {
		return m.NeighborAddrIpv4
	}
	return ""
}

func (m *LsLinkDescriptor) GetInterfaceAddrIpv6() string {
	if m != nil {
		return m.InterfaceAddrIpv6
	}
	return ""
}

func (m *LsLinkDescriptor) GetNeighborAddrIpv6() string {
	if m != nil {
		return m.NeighborAddrIpv6
	}
	return ""
}

type LsPrefixDescriptor struct {
	IpReachability []string `protobuf:"bytes,1,rep,name=ip_reachability,json=ipReachability" json:"ip_reachability,omitempty"`
	OspfRouteType  string   `protobuf:"bytes,2,opt,name=ospf_route_type,json=ospfRouteType" json:"ospf_route_type,omitempty"`
}

func (m *LsPrefixDescriptor) Reset()                    { *m = LsPrefixDescriptor{} }
func (m *LsPrefixDescriptor) String() string            { return proto.CompactTextString(m) }
func (*LsPrefixDescriptor) ProtoMessage()               {}
func (*LsPrefixDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }

func (m *LsPrefixDescriptor) GetIpReachability() []string {
	if m != nil {
		return m.IpReachability
	}
	return nil
}

func (m *LsPrefixDescriptor) GetOspfRouteType() string {
	if m != nil {
		return m.OspfRouteType
	}
	return ""
}

type LsNodeNLRI struct {
	LocalNode *LsNodeDescriptor `protobuf:"bytes,1,opt,name=local_node,json=localNode" json:"local_node,omitempty"`
}

func (m *LsNodeNLRI) Reset()                    { *m = LsNodeNLRI{} }
func (m *LsNodeNLRI) String() string            { return proto.CompactTextString(m) }
func (*LsNodeNLRI) ProtoMessage()               {}
func (*LsNodeNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }

func (m *LsNodeNLRI) GetLocalNode() *LsNodeDescriptor {
	if m != nil {
		return m.LocalNode
	}
	return nil
}

type LsLinkNLRI struct {
	LocalNode      *LsNodeDescriptor `protobuf:"bytes,1,opt,name=local_node,json=localNode" json:"local_node,omitempty"`
	RemoteNode     *LsNodeDescriptor `protobuf:"bytes,2,opt,name=remote_node,json=remoteNode" json:"remote_node,omitempty"`
	LinkDescriptor *LsLinkDescriptor `protobuf:"bytes,3,opt,name=link_descriptor,json=linkDescriptor" json:"link_descriptor,omitempty"`
}

func (m *LsLinkNLRI) Reset()                    { *m = LsLinkNLRI{} }
func (m *LsLinkNLRI) String() string            { return proto.CompactTextString(m) }
func (*LsLinkNLRI) ProtoMessage()               {}
func (*LsLinkNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }

func (m *LsLinkNLRI) GetLocalNode() *LsNodeDescriptor {
	if m != nil {
		return m.LocalNode
	}
	return nil
}

func (m *LsLinkNLRI) GetRemoteNode() *LsNodeDescriptor {
	if m != nil {
		return m.RemoteNode
	}
	return nil
}

func (m *LsLinkNLRI) GetLinkDescriptor() *LsLinkDescriptor {
	if m != nil {
		return m.LinkDescriptor
	}
	return nil
}

type LsPrefixV4NLRI struct {
	LocalNode        *LsNodeDescriptor   `protobuf:"bytes,1,opt,name=local_node,json=localNode" json:"local_node,omitempty"`
	PrefixDescriptor *LsPrefixDescriptor `protobuf:"bytes,2,opt,name=prefix_descriptor,json=prefixDescriptor" json:"prefix_descriptor,omitempty"`
}

func (m *LsPrefixV4NLRI) Reset()                    { *m = LsPrefixV4NLRI{} }
func (m *LsPrefixV4NLRI) String() string            { return proto.CompactTextString(m) }
func (*LsPrefixV4NLRI) ProtoMessage()               {}
func (*LsPrefixV4NLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }

func (m *LsPrefixV4NLRI) GetLocalNode() *LsNodeDescriptor {
	if m != nil {
		return m.LocalNode
	}
	return nil
}

func (m *LsPrefixV4NLRI) GetPrefixDescriptor() *LsPrefixDescriptor {
	if m != nil {
		return m.PrefixDescriptor
	}
	return nil
}

type LsPrefixV6NLRI struct {
	LocalNode        *LsNodeDescriptor   `protobuf:"bytes,1,opt,name=local_node,json=localNode" json:"local_node,omitempty"`
	PrefixDescriptor *LsPrefixDescriptor `protobuf:"bytes,2,opt,name=prefix_descriptor,json=prefixDescriptor" json:"prefix_descriptor,omitempty"`
}

func (m *LsPrefixV6NLRI) Reset()                    { *m = LsPrefixV6NLRI{} }
func (m *LsPrefixV6NLRI) String() string            { return proto.CompactTextString(m) }
func (*LsPrefixV6NLRI) ProtoMessage()               {}
func (*LsPrefixV6NLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }

func (m *LsPrefixV6NLRI) GetLocalNode() *LsNodeDescriptor {
	if m != nil {
		return m.LocalNode
	}
	return nil
}

func (m *LsPrefixV6NLRI) GetPrefixDescriptor() *LsPrefixDescriptor {
	if m != nil {
		return m.PrefixDescriptor
	}
	return nil
}

// LsAddrPrefix represents the NLRI for:
// - AFI=16388, SAFI=71
type LsAddrPrefix struct {
	Type LsNLRIType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.LsNLRIType" json:"type,omitempty"`
	// One of:
	// - LsNodeNLRI
	// - LsLinkNLRI
	// - LsPrefixV4NLRI
	// - LsPrefixV6NLRI
	Nlri *google_protobuf.Any `protobuf:"bytes,2,opt,name=nlri" json:"nlri,omitempty"`
}

func (m *LsAddrPrefix) Reset()                    { *m = LsAddrPrefix{} }
func (m *LsAddrPrefix) String() string            { return proto.CompactTextString(m) }
func (*LsAddrPrefix) ProtoMessage()               {}
func (*LsAddrPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }

func (m *LsAddrPrefix) GetType() LsNLRIType {
	if m != nil {
		return m.Type
	}
	return LsNLRIType_LS_NLRI_UNKNOWN
}

func (m *LsAddrPrefix) GetNlri() *google_protobuf.Any {
	if m != nil {
		return m.Nlri
	}
	return nil
}

type MpReachNLRIAttribute struct {
	Family   *Family  `protobuf:"bytes,1,opt,name=family" json:"family,omitempty"`
	NextHops []string `protobuf:"bytes,2,rep,name=next_hops,json=nextHops" json:"next_hops,omitempty"`
	// Each NLRI must be one of:
	// - IPAddressPrefix
	// - LabeledIPAddressPrefix
	// - EncapsulationNLRI
	// - EVPNEthernetAutoDiscoveryRoute
	// - EVPNMACIPAdvertisementRoute
	// - EVPNInclusiveMulticastEthernetTagRoute
	// - EVPNEthernetSegmentRoute
	// - EVPNIPPrefixRoute
	// - EVPNIPMSIRoute
	// - LabeledVPNIPAddressPrefix
	// - RouteTargetMembershipNLRI
	// - FlowSpecNLRI
	// - VPNFlowSpecNLRI
	// - OpaqueNLRI
	// - LsAddrPrefix
	Nlris []*google_protobuf.Any `protobuf:"bytes,3,rep,name=nlris" json:"nlris,omitempty"`
}

func (m *MpReachNLRIAttribute) Reset()                    { *m = MpReachNLRIAttribute{} }
func (m *MpReachNLRIAttribute) String() string            { return proto.CompactTextString(m) }
func (*MpReachNLRIAttribute) ProtoMessage()               {}
func (*MpReachNLRIAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }

func (m *MpReachNLRIAttribute) GetFamily() *Family {
	if m != nil {
		return m.Family
	}
	return nil
}

func (m *MpReachNLRIAttribute) GetNextHops() []string {
	if m != nil {
		return m.NextHops
	}
	return nil
}

func (m *MpReachNLRIAttribute) GetNlris() []*google_protobuf.Any {
	if m != nil {
		return m.Nlris
	}
	return nil
}

type MpUnreachNLRIAttribute struct {
	Family *Family `protobuf:"bytes,1,opt,name=family" json:"family,omitempty"`
	// The same as NLRI field of MpReachNLRIAttribute
	Nlris []*google_protobuf.Any `protobuf:"bytes,3,rep,name=nlris" json:"nlris,omitempty"`
}

func (m *MpUnreachNLRIAttribute) Reset()                    { *m = MpUnreachNLRIAttribute{} }
func (m *MpUnreachNLRIAttribute) String() string            { return proto.CompactTextString(m) }
func (*MpUnreachNLRIAttribute) ProtoMessage()               {}
func (*MpUnreachNLRIAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }

func (m *MpUnreachNLRIAttribute) GetFamily() *Family {
	if m != nil {
		return m.Family
	}
	return nil
}

func (m *MpUnreachNLRIAttribute) GetNlris() []*google_protobuf.Any {
	if m != nil {
		return m.Nlris
	}
	return nil
}

type TwoOctetAsSpecificExtended struct {
	IsTransitive bool   `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive" json:"is_transitive,omitempty"`
	SubType      uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType" json:"sub_type,omitempty"`
	As           uint32 `protobuf:"varint,3,opt,name=as" json:"as,omitempty"`
	LocalAdmin   uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *TwoOctetAsSpecificExtended) Reset()                    { *m = TwoOctetAsSpecificExtended{} }
func (m *TwoOctetAsSpecificExtended) String() string            { return proto.CompactTextString(m) }
func (*TwoOctetAsSpecificExtended) ProtoMessage()               {}
func (*TwoOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }

func (m *TwoOctetAsSpecificExtended) GetIsTransitive() bool {
	if m != nil {
		return m.IsTransitive
	}
	return false
}

func (m *TwoOctetAsSpecificExtended) GetSubType() uint32 {
	if m != nil {
		return m.SubType
	}
	return 0
}

func (m *TwoOctetAsSpecificExtended) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *TwoOctetAsSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type IPv4AddressSpecificExtended struct {
	IsTransitive bool   `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive" json:"is_transitive,omitempty"`
	SubType      uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType" json:"sub_type,omitempty"`
	Address      string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
	LocalAdmin   uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *IPv4AddressSpecificExtended) Reset()                    { *m = IPv4AddressSpecificExtended{} }
func (m *IPv4AddressSpecificExtended) String() string            { return proto.CompactTextString(m) }
func (*IPv4AddressSpecificExtended) ProtoMessage()               {}
func (*IPv4AddressSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }

func (m *IPv4AddressSpecificExtended) GetIsTransitive() bool {
	if m != nil {
		return m.IsTransitive
	}
	return false
}

func (m *IPv4AddressSpecificExtended) GetSubType() uint32 {
	if m != nil {
		return m.SubType
	}
	return 0
}

func (m *IPv4AddressSpecificExtended) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *IPv4AddressSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type FourOctetAsSpecificExtended struct {
	IsTransitive bool   `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive" json:"is_transitive,omitempty"`
	SubType      uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType" json:"sub_type,omitempty"`
	As           uint32 `protobuf:"varint,3,opt,name=as" json:"as,omitempty"`
	LocalAdmin   uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *FourOctetAsSpecificExtended) Reset()                    { *m = FourOctetAsSpecificExtended{} }
func (m *FourOctetAsSpecificExtended) String() string            { return proto.CompactTextString(m) }
func (*FourOctetAsSpecificExtended) ProtoMessage()               {}
func (*FourOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }

func (m *FourOctetAsSpecificExtended) GetIsTransitive() bool {
	if m != nil {
		return m.IsTransitive
	}
	return false
}

func (m *FourOctetAsSpecificExtended) GetSubType() uint32 {
	if m != nil {
		return m.SubType
	}
	return 0
}

func (m *FourOctetAsSpecificExtended) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *FourOctetAsSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type ValidationExtended struct {
	State uint32 `protobuf:"varint,1,opt,name=state" json:"state,omitempty"`
}

func (m *ValidationExtended) Reset()                    { *m = ValidationExtended{} }
func (m *ValidationExtended) String() string            { return proto.CompactTextString(m) }
func (*ValidationExtended) ProtoMessage()               {}
func (*ValidationExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }

func (m *ValidationExtended) GetState() uint32 {
	if m != nil {
		return m.State
	}
	return 0
}

type ColorExtended struct {
	Color uint32 `protobuf:"varint,1,opt,name=color" json:"color,omitempty"`
}

func (m *ColorExtended) Reset()                    { *m = ColorExtended{} }
func (m *ColorExtended) String() string            { return proto.CompactTextString(m) }
func (*ColorExtended) ProtoMessage()               {}
func (*ColorExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }

func (m *ColorExtended) GetColor() uint32 {
	if m != nil {
		return m.Color
	}
	return 0
}

type EncapExtended struct {
	TunnelType uint32 `protobuf:"varint,1,opt,name=tunnel_type,json=tunnelType" json:"tunnel_type,omitempty"`
}

func (m *EncapExtended) Reset()                    { *m = EncapExtended{} }
func (m *EncapExtended) String() string            { return proto.CompactTextString(m) }
func (*EncapExtended) ProtoMessage()               {}
func (*EncapExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }

func (m *EncapExtended) GetTunnelType() uint32 {
	if m != nil {
		return m.TunnelType
	}
	return 0
}

type DefaultGatewayExtended struct {
}

func (m *DefaultGatewayExtended) Reset()                    { *m = DefaultGatewayExtended{} }
func (m *DefaultGatewayExtended) String() string            { return proto.CompactTextString(m) }
func (*DefaultGatewayExtended) ProtoMessage()               {}
func (*DefaultGatewayExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }

type OpaqueExtended struct {
	IsTransitive bool   `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive" json:"is_transitive,omitempty"`
	Value        []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
}

func (m *OpaqueExtended) Reset()                    { *m = OpaqueExtended{} }
func (m *OpaqueExtended) String() string            { return proto.CompactTextString(m) }
func (*OpaqueExtended) ProtoMessage()               {}
func (*OpaqueExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }

func (m *OpaqueExtended) GetIsTransitive() bool {
	if m != nil {
		return m.IsTransitive
	}
	return false
}

func (m *OpaqueExtended) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type ESILabelExtended struct {
	IsSingleActive bool   `protobuf:"varint,1,opt,name=is_single_active,json=isSingleActive" json:"is_single_active,omitempty"`
	Label          uint32 `protobuf:"varint,2,opt,name=label" json:"label,omitempty"`
}

func (m *ESILabelExtended) Reset()                    { *m = ESILabelExtended{} }
func (m *ESILabelExtended) String() string            { return proto.CompactTextString(m) }
func (*ESILabelExtended) ProtoMessage()               {}
func (*ESILabelExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }

func (m *ESILabelExtended) GetIsSingleActive() bool {
	if m != nil {
		return m.IsSingleActive
	}
	return false
}

func (m *ESILabelExtended) GetLabel() uint32 {
	if m != nil {
		return m.Label
	}
	return 0
}

type ESImportRouteTarget struct {
	EsImport string `protobuf:"bytes,1,opt,name=es_import,json=esImport" json:"es_import,omitempty"`
}

func (m *ESImportRouteTarget) Reset()                    { *m = ESImportRouteTarget{} }
func (m *ESImportRouteTarget) String() string            { return proto.CompactTextString(m) }
func (*ESImportRouteTarget) ProtoMessage()               {}
func (*ESImportRouteTarget) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }

func (m *ESImportRouteTarget) GetEsImport() string {
	if m != nil {
		return m.EsImport
	}
	return ""
}

type MacMobilityExtended struct {
	IsSticky    bool   `protobuf:"varint,1,opt,name=is_sticky,json=isSticky" json:"is_sticky,omitempty"`
	SequenceNum uint32 `protobuf:"varint,2,opt,name=sequence_num,json=sequenceNum" json:"sequence_num,omitempty"`
}

func (m *MacMobilityExtended) Reset()                    { *m = MacMobilityExtended{} }
func (m *MacMobilityExtended) String() string            { return proto.CompactTextString(m) }
func (*MacMobilityExtended) ProtoMessage()               {}
func (*MacMobilityExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }

func (m *MacMobilityExtended) GetIsSticky() bool {
	if m != nil {
		return m.IsSticky
	}
	return false
}

func (m *MacMobilityExtended) GetSequenceNum() uint32 {
	if m != nil {
		return m.SequenceNum
	}
	return 0
}

type RouterMacExtended struct {
	Mac string `protobuf:"bytes,1,opt,name=mac" json:"mac,omitempty"`
}

func (m *RouterMacExtended) Reset()                    { *m = RouterMacExtended{} }
func (m *RouterMacExtended) String() string            { return proto.CompactTextString(m) }
func (*RouterMacExtended) ProtoMessage()               {}
func (*RouterMacExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} }

func (m *RouterMacExtended) GetMac() string {
	if m != nil {
		return m.Mac
	}
	return ""
}

type TrafficRateExtended struct {
	As   uint32  `protobuf:"varint,1,opt,name=as" json:"as,omitempty"`
	Rate float32 `protobuf:"fixed32,2,opt,name=rate" json:"rate,omitempty"`
}

func (m *TrafficRateExtended) Reset()                    { *m = TrafficRateExtended{} }
func (m *TrafficRateExtended) String() string            { return proto.CompactTextString(m) }
func (*TrafficRateExtended) ProtoMessage()               {}
func (*TrafficRateExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} }

func (m *TrafficRateExtended) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *TrafficRateExtended) GetRate() float32 {
	if m != nil {
		return m.Rate
	}
	return 0
}

type TrafficActionExtended struct {
	Terminal bool `protobuf:"varint,1,opt,name=terminal" json:"terminal,omitempty"`
	Sample   bool `protobuf:"varint,2,opt,name=sample" json:"sample,omitempty"`
}

func (m *TrafficActionExtended) Reset()                    { *m = TrafficActionExtended{} }
func (m *TrafficActionExtended) String() string            { return proto.CompactTextString(m) }
func (*TrafficActionExtended) ProtoMessage()               {}
func (*TrafficActionExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} }

func (m *TrafficActionExtended) GetTerminal() bool {
	if m != nil {
		return m.Terminal
	}
	return false
}

func (m *TrafficActionExtended) GetSample() bool {
	if m != nil {
		return m.Sample
	}
	return false
}

type RedirectTwoOctetAsSpecificExtended struct {
	As         uint32 `protobuf:"varint,1,opt,name=as" json:"as,omitempty"`
	LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *RedirectTwoOctetAsSpecificExtended) Reset()         { *m = RedirectTwoOctetAsSpecificExtended{} }
func (m *RedirectTwoOctetAsSpecificExtended) String() string { return proto.CompactTextString(m) }
func (*RedirectTwoOctetAsSpecificExtended) ProtoMessage()    {}
func (*RedirectTwoOctetAsSpecificExtended) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{57}
}

func (m *RedirectTwoOctetAsSpecificExtended) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *RedirectTwoOctetAsSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type RedirectIPv4AddressSpecificExtended struct {
	Address    string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
	LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *RedirectIPv4AddressSpecificExtended) Reset()         { *m = RedirectIPv4AddressSpecificExtended{} }
func (m *RedirectIPv4AddressSpecificExtended) String() string { return proto.CompactTextString(m) }
func (*RedirectIPv4AddressSpecificExtended) ProtoMessage()    {}
func (*RedirectIPv4AddressSpecificExtended) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{58}
}

func (m *RedirectIPv4AddressSpecificExtended) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *RedirectIPv4AddressSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type RedirectFourOctetAsSpecificExtended struct {
	As         uint32 `protobuf:"varint,1,opt,name=as" json:"as,omitempty"`
	LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *RedirectFourOctetAsSpecificExtended) Reset()         { *m = RedirectFourOctetAsSpecificExtended{} }
func (m *RedirectFourOctetAsSpecificExtended) String() string { return proto.CompactTextString(m) }
func (*RedirectFourOctetAsSpecificExtended) ProtoMessage()    {}
func (*RedirectFourOctetAsSpecificExtended) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{59}
}

func (m *RedirectFourOctetAsSpecificExtended) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *RedirectFourOctetAsSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type TrafficRemarkExtended struct {
	Dscp uint32 `protobuf:"varint,1,opt,name=dscp" json:"dscp,omitempty"`
}

func (m *TrafficRemarkExtended) Reset()                    { *m = TrafficRemarkExtended{} }
func (m *TrafficRemarkExtended) String() string            { return proto.CompactTextString(m) }
func (*TrafficRemarkExtended) ProtoMessage()               {}
func (*TrafficRemarkExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} }

func (m *TrafficRemarkExtended) GetDscp() uint32 {
	if m != nil {
		return m.Dscp
	}
	return 0
}

type UnknownExtended struct {
	Type  uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (m *UnknownExtended) Reset()                    { *m = UnknownExtended{} }
func (m *UnknownExtended) String() string            { return proto.CompactTextString(m) }
func (*UnknownExtended) ProtoMessage()               {}
func (*UnknownExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} }

func (m *UnknownExtended) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *UnknownExtended) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type ExtendedCommunitiesAttribute struct {
	// Each Community must be one of:
	// - TwoOctetAsSpecificExtended
	// - IPv4AddressSpecificExtended
	// - FourOctetAsSpecificExtended
	// - OpaqueExtended
	// - ESILabelExtended
	// - MacMobilityExtended
	// - RouterMacExtended
	// - TrafficRateExtended
	// - TrafficActionExtended
	// - RedirectTwoOctetAsSpecificExtended
	// - RedirectIPv4AddressSpecificExtended
	// - RedirectFourOctetAsSpecificExtended
	// - TrafficRemarkExtended
	// - UnknownExtended
	Communities []*google_protobuf.Any `protobuf:"bytes,1,rep,name=communities" json:"communities,omitempty"`
}

func (m *ExtendedCommunitiesAttribute) Reset()                    { *m = ExtendedCommunitiesAttribute{} }
func (m *ExtendedCommunitiesAttribute) String() string            { return proto.CompactTextString(m) }
func (*ExtendedCommunitiesAttribute) ProtoMessage()               {}
func (*ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} }

func (m *ExtendedCommunitiesAttribute) GetCommunities() []*google_protobuf.Any {
	if m != nil {
		return m.Communities
	}
	return nil
}

type As4PathAttribute struct {
	Segments []*AsSegment `protobuf:"bytes,1,rep,name=segments" json:"segments,omitempty"`
}

func (m *As4PathAttribute) Reset()                    { *m = As4PathAttribute{} }
func (m *As4PathAttribute) String() string            { return proto.CompactTextString(m) }
func (*As4PathAttribute) ProtoMessage()               {}
func (*As4PathAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} }

func (m *As4PathAttribute) GetSegments() []*AsSegment {
	if m != nil {
		return m.Segments
	}
	return nil
}

type As4AggregatorAttribute struct {
	As      uint32 `protobuf:"varint,2,opt,name=as" json:"as,omitempty"`
	Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
}

func (m *As4AggregatorAttribute) Reset()                    { *m = As4AggregatorAttribute{} }
func (m *As4AggregatorAttribute) String() string            { return proto.CompactTextString(m) }
func (*As4AggregatorAttribute) ProtoMessage()               {}
func (*As4AggregatorAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} }

func (m *As4AggregatorAttribute) GetAs() uint32 {
	if m != nil {
		return m.As
	}
	return 0
}

func (m *As4AggregatorAttribute) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

type PmsiTunnelAttribute struct {
	Flags uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"`
	Type  uint32 `protobuf:"varint,2,opt,name=type" json:"type,omitempty"`
	Label uint32 `protobuf:"varint,3,opt,name=label" json:"label,omitempty"`
	Id    []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"`
}

func (m *PmsiTunnelAttribute) Reset()                    { *m = PmsiTunnelAttribute{} }
func (m *PmsiTunnelAttribute) String() string            { return proto.CompactTextString(m) }
func (*PmsiTunnelAttribute) ProtoMessage()               {}
func (*PmsiTunnelAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} }

func (m *PmsiTunnelAttribute) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *PmsiTunnelAttribute) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *PmsiTunnelAttribute) GetLabel() uint32 {
	if m != nil {
		return m.Label
	}
	return 0
}

func (m *PmsiTunnelAttribute) GetId() []byte {
	if m != nil {
		return m.Id
	}
	return nil
}

type TunnelEncapSubTLVEncapsulation struct {
	Key    uint32 `protobuf:"varint,1,opt,name=key" json:"key,omitempty"`
	Cookie []byte `protobuf:"bytes,2,opt,name=cookie,proto3" json:"cookie,omitempty"`
}

func (m *TunnelEncapSubTLVEncapsulation) Reset()         { *m = TunnelEncapSubTLVEncapsulation{} }
func (m *TunnelEncapSubTLVEncapsulation) String() string { return proto.CompactTextString(m) }
func (*TunnelEncapSubTLVEncapsulation) ProtoMessage()    {}
func (*TunnelEncapSubTLVEncapsulation) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{66}
}

func (m *TunnelEncapSubTLVEncapsulation) GetKey() uint32 {
	if m != nil {
		return m.Key
	}
	return 0
}

func (m *TunnelEncapSubTLVEncapsulation) GetCookie() []byte {
	if m != nil {
		return m.Cookie
	}
	return nil
}

type TunnelEncapSubTLVProtocol struct {
	Protocol uint32 `protobuf:"varint,1,opt,name=protocol" json:"protocol,omitempty"`
}

func (m *TunnelEncapSubTLVProtocol) Reset()                    { *m = TunnelEncapSubTLVProtocol{} }
func (m *TunnelEncapSubTLVProtocol) String() string            { return proto.CompactTextString(m) }
func (*TunnelEncapSubTLVProtocol) ProtoMessage()               {}
func (*TunnelEncapSubTLVProtocol) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} }

func (m *TunnelEncapSubTLVProtocol) GetProtocol() uint32 {
	if m != nil {
		return m.Protocol
	}
	return 0
}

type TunnelEncapSubTLVColor struct {
	Color uint32 `protobuf:"varint,1,opt,name=color" json:"color,omitempty"`
}

func (m *TunnelEncapSubTLVColor) Reset()                    { *m = TunnelEncapSubTLVColor{} }
func (m *TunnelEncapSubTLVColor) String() string            { return proto.CompactTextString(m) }
func (*TunnelEncapSubTLVColor) ProtoMessage()               {}
func (*TunnelEncapSubTLVColor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} }

func (m *TunnelEncapSubTLVColor) GetColor() uint32 {
	if m != nil {
		return m.Color
	}
	return 0
}

type TunnelEncapSubTLVUnknown struct {
	Type  uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (m *TunnelEncapSubTLVUnknown) Reset()                    { *m = TunnelEncapSubTLVUnknown{} }
func (m *TunnelEncapSubTLVUnknown) String() string            { return proto.CompactTextString(m) }
func (*TunnelEncapSubTLVUnknown) ProtoMessage()               {}
func (*TunnelEncapSubTLVUnknown) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} }

func (m *TunnelEncapSubTLVUnknown) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *TunnelEncapSubTLVUnknown) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type TunnelEncapTLV struct {
	Type uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	// Each TLV must be one of:
	// - TunnelEncapSubTLVEncapsulation
	// - TunnelEncapSubTLVProtocol
	// - TunnelEncapSubTLVColor
	// - TunnelEncapSubTLVUnknown
	Tlvs []*google_protobuf.Any `protobuf:"bytes,2,rep,name=tlvs" json:"tlvs,omitempty"`
}

func (m *TunnelEncapTLV) Reset()                    { *m = TunnelEncapTLV{} }
func (m *TunnelEncapTLV) String() string            { return proto.CompactTextString(m) }
func (*TunnelEncapTLV) ProtoMessage()               {}
func (*TunnelEncapTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} }

func (m *TunnelEncapTLV) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *TunnelEncapTLV) GetTlvs() []*google_protobuf.Any {
	if m != nil {
		return m.Tlvs
	}
	return nil
}

type TunnelEncapAttribute struct {
	Tlvs []*TunnelEncapTLV `protobuf:"bytes,1,rep,name=tlvs" json:"tlvs,omitempty"`
}

func (m *TunnelEncapAttribute) Reset()                    { *m = TunnelEncapAttribute{} }
func (m *TunnelEncapAttribute) String() string            { return proto.CompactTextString(m) }
func (*TunnelEncapAttribute) ProtoMessage()               {}
func (*TunnelEncapAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} }

func (m *TunnelEncapAttribute) GetTlvs() []*TunnelEncapTLV {
	if m != nil {
		return m.Tlvs
	}
	return nil
}

type IPv6AddressSpecificExtended struct {
	IsTransitive bool   `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive" json:"is_transitive,omitempty"`
	SubType      uint32 `protobuf:"varint,2,opt,name=sub_type,json=subType" json:"sub_type,omitempty"`
	Address      string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
	LocalAdmin   uint32 `protobuf:"varint,4,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *IPv6AddressSpecificExtended) Reset()                    { *m = IPv6AddressSpecificExtended{} }
func (m *IPv6AddressSpecificExtended) String() string            { return proto.CompactTextString(m) }
func (*IPv6AddressSpecificExtended) ProtoMessage()               {}
func (*IPv6AddressSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} }

func (m *IPv6AddressSpecificExtended) GetIsTransitive() bool {
	if m != nil {
		return m.IsTransitive
	}
	return false
}

func (m *IPv6AddressSpecificExtended) GetSubType() uint32 {
	if m != nil {
		return m.SubType
	}
	return 0
}

func (m *IPv6AddressSpecificExtended) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *IPv6AddressSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type RedirectIPv6AddressSpecificExtended struct {
	Address    string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
	LocalAdmin uint32 `protobuf:"varint,2,opt,name=local_admin,json=localAdmin" json:"local_admin,omitempty"`
}

func (m *RedirectIPv6AddressSpecificExtended) Reset()         { *m = RedirectIPv6AddressSpecificExtended{} }
func (m *RedirectIPv6AddressSpecificExtended) String() string { return proto.CompactTextString(m) }
func (*RedirectIPv6AddressSpecificExtended) ProtoMessage()    {}
func (*RedirectIPv6AddressSpecificExtended) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{73}
}

func (m *RedirectIPv6AddressSpecificExtended) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *RedirectIPv6AddressSpecificExtended) GetLocalAdmin() uint32 {
	if m != nil {
		return m.LocalAdmin
	}
	return 0
}

type IP6ExtendedCommunitiesAttribute struct {
	// Each Community must be one of:
	// - IPv6AddressSpecificExtended
	// - RedirectIPv6AddressSpecificExtended
	Communities []*google_protobuf.Any `protobuf:"bytes,1,rep,name=communities" json:"communities,omitempty"`
}

func (m *IP6ExtendedCommunitiesAttribute) Reset()         { *m = IP6ExtendedCommunitiesAttribute{} }
func (m *IP6ExtendedCommunitiesAttribute) String() string { return proto.CompactTextString(m) }
func (*IP6ExtendedCommunitiesAttribute) ProtoMessage()    {}
func (*IP6ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{74}
}

func (m *IP6ExtendedCommunitiesAttribute) GetCommunities() []*google_protobuf.Any {
	if m != nil {
		return m.Communities
	}
	return nil
}

type AigpTLVIGPMetric struct {
	Metric uint64 `protobuf:"varint,1,opt,name=metric" json:"metric,omitempty"`
}

func (m *AigpTLVIGPMetric) Reset()                    { *m = AigpTLVIGPMetric{} }
func (m *AigpTLVIGPMetric) String() string            { return proto.CompactTextString(m) }
func (*AigpTLVIGPMetric) ProtoMessage()               {}
func (*AigpTLVIGPMetric) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} }

func (m *AigpTLVIGPMetric) GetMetric() uint64 {
	if m != nil {
		return m.Metric
	}
	return 0
}

type AigpTLVUnknown struct {
	Type  uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"`
	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (m *AigpTLVUnknown) Reset()                    { *m = AigpTLVUnknown{} }
func (m *AigpTLVUnknown) String() string            { return proto.CompactTextString(m) }
func (*AigpTLVUnknown) ProtoMessage()               {}
func (*AigpTLVUnknown) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} }

func (m *AigpTLVUnknown) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *AigpTLVUnknown) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

type AigpAttribute struct {
	// Each TLV must be one of:
	// - AigpTLVIGPMetric
	// - AigpTLVUnknown
	Tlvs []*google_protobuf.Any `protobuf:"bytes,1,rep,name=tlvs" json:"tlvs,omitempty"`
}

func (m *AigpAttribute) Reset()                    { *m = AigpAttribute{} }
func (m *AigpAttribute) String() string            { return proto.CompactTextString(m) }
func (*AigpAttribute) ProtoMessage()               {}
func (*AigpAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} }

func (m *AigpAttribute) GetTlvs() []*google_protobuf.Any {
	if m != nil {
		return m.Tlvs
	}
	return nil
}

type LargeCommunity struct {
	GlobalAdmin uint32 `protobuf:"varint,1,opt,name=global_admin,json=globalAdmin" json:"global_admin,omitempty"`
	LocalData1  uint32 `protobuf:"varint,2,opt,name=local_data1,json=localData1" json:"local_data1,omitempty"`
	LocalData2  uint32 `protobuf:"varint,3,opt,name=local_data2,json=localData2" json:"local_data2,omitempty"`
}

func (m *LargeCommunity) Reset()                    { *m = LargeCommunity{} }
func (m *LargeCommunity) String() string            { return proto.CompactTextString(m) }
func (*LargeCommunity) ProtoMessage()               {}
func (*LargeCommunity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} }

func (m *LargeCommunity) GetGlobalAdmin() uint32 {
	if m != nil {
		return m.GlobalAdmin
	}
	return 0
}

func (m *LargeCommunity) GetLocalData1() uint32 {
	if m != nil {
		return m.LocalData1
	}
	return 0
}

func (m *LargeCommunity) GetLocalData2() uint32 {
	if m != nil {
		return m.LocalData2
	}
	return 0
}

type LargeCommunitiesAttribute struct {
	Communities []*LargeCommunity `protobuf:"bytes,1,rep,name=communities" json:"communities,omitempty"`
}

func (m *LargeCommunitiesAttribute) Reset()                    { *m = LargeCommunitiesAttribute{} }
func (m *LargeCommunitiesAttribute) String() string            { return proto.CompactTextString(m) }
func (*LargeCommunitiesAttribute) ProtoMessage()               {}
func (*LargeCommunitiesAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} }

func (m *LargeCommunitiesAttribute) GetCommunities() []*LargeCommunity {
	if m != nil {
		return m.Communities
	}
	return nil
}

type LsNodeFlags struct {
	Overload bool `protobuf:"varint,1,opt,name=overload" json:"overload,omitempty"`
	Attached bool `protobuf:"varint,2,opt,name=attached" json:"attached,omitempty"`
	External bool `protobuf:"varint,3,opt,name=external" json:"external,omitempty"`
	Abr      bool `protobuf:"varint,4,opt,name=abr" json:"abr,omitempty"`
	Router   bool `protobuf:"varint,5,opt,name=router" json:"router,omitempty"`
	V6       bool `protobuf:"varint,6,opt,name=v6" json:"v6,omitempty"`
}

func (m *LsNodeFlags) Reset()                    { *m = LsNodeFlags{} }
func (m *LsNodeFlags) String() string            { return proto.CompactTextString(m) }
func (*LsNodeFlags) ProtoMessage()               {}
func (*LsNodeFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} }

func (m *LsNodeFlags) GetOverload() bool {
	if m != nil {
		return m.Overload
	}
	return false
}

func (m *LsNodeFlags) GetAttached() bool {
	if m != nil {
		return m.Attached
	}
	return false
}

func (m *LsNodeFlags) GetExternal() bool {
	if m != nil {
		return m.External
	}
	return false
}

func (m *LsNodeFlags) GetAbr() bool {
	if m != nil {
		return m.Abr
	}
	return false
}

func (m *LsNodeFlags) GetRouter() bool {
	if m != nil {
		return m.Router
	}
	return false
}

func (m *LsNodeFlags) GetV6() bool {
	if m != nil {
		return m.V6
	}
	return false
}

type LsIGPFlags struct {
	Down          bool `protobuf:"varint,1,opt,name=down" json:"down,omitempty"`
	NoUnicast     bool `protobuf:"varint,2,opt,name=no_unicast,json=noUnicast" json:"no_unicast,omitempty"`
	LocalAddress  bool `protobuf:"varint,3,opt,name=local_address,json=localAddress" json:"local_address,omitempty"`
	PropagateNssa bool `protobuf:"varint,4,opt,name=propagate_nssa,json=propagateNssa" json:"propagate_nssa,omitempty"`
}

func (m *LsIGPFlags) Reset()                    { *m = LsIGPFlags{} }
func (m *LsIGPFlags) String() string            { return proto.CompactTextString(m) }
func (*LsIGPFlags) ProtoMessage()               {}
func (*LsIGPFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} }

func (m *LsIGPFlags) GetDown() bool {
	if m != nil {
		return m.Down
	}
	return false
}

func (m *LsIGPFlags) GetNoUnicast() bool {
	if m != nil {
		return m.NoUnicast
	}
	return false
}

func (m *LsIGPFlags) GetLocalAddress() bool {
	if m != nil {
		return m.LocalAddress
	}
	return false
}

func (m *LsIGPFlags) GetPropagateNssa() bool {
	if m != nil {
		return m.PropagateNssa
	}
	return false
}

type LsSrRange struct {
	Begin uint32 `protobuf:"varint,1,opt,name=begin" json:"begin,omitempty"`
	End   uint32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
}

func (m *LsSrRange) Reset()                    { *m = LsSrRange{} }
func (m *LsSrRange) String() string            { return proto.CompactTextString(m) }
func (*LsSrRange) ProtoMessage()               {}
func (*LsSrRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} }

func (m *LsSrRange) GetBegin() uint32 {
	if m != nil {
		return m.Begin
	}
	return 0
}

func (m *LsSrRange) GetEnd() uint32 {
	if m != nil {
		return m.End
	}
	return 0
}

type LsSrCapabilities struct {
	Ipv4Supported bool         `protobuf:"varint,1,opt,name=ipv4_supported,json=ipv4Supported" json:"ipv4_supported,omitempty"`
	Ipv6Supported bool         `protobuf:"varint,2,opt,name=ipv6_supported,json=ipv6Supported" json:"ipv6_supported,omitempty"`
	Ranges        []*LsSrRange `protobuf:"bytes,3,rep,name=ranges" json:"ranges,omitempty"`
}

func (m *LsSrCapabilities) Reset()                    { *m = LsSrCapabilities{} }
func (m *LsSrCapabilities) String() string            { return proto.CompactTextString(m) }
func (*LsSrCapabilities) ProtoMessage()               {}
func (*LsSrCapabilities) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} }

func (m *LsSrCapabilities) GetIpv4Supported() bool {
	if m != nil {
		return m.Ipv4Supported
	}
	return false
}

func (m *LsSrCapabilities) GetIpv6Supported() bool {
	if m != nil {
		return m.Ipv6Supported
	}
	return false
}

func (m *LsSrCapabilities) GetRanges() []*LsSrRange {
	if m != nil {
		return m.Ranges
	}
	return nil
}

type LsSrLocalBlock struct {
	Ranges []*LsSrRange `protobuf:"bytes,1,rep,name=ranges" json:"ranges,omitempty"`
}

func (m *LsSrLocalBlock) Reset()                    { *m = LsSrLocalBlock{} }
func (m *LsSrLocalBlock) String() string            { return proto.CompactTextString(m) }
func (*LsSrLocalBlock) ProtoMessage()               {}
func (*LsSrLocalBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} }

func (m *LsSrLocalBlock) GetRanges() []*LsSrRange {
	if m != nil {
		return m.Ranges
	}
	return nil
}

type LsAttributeNode struct {
	Name            string            `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Flags           *LsNodeFlags      `protobuf:"bytes,2,opt,name=flags" json:"flags,omitempty"`
	LocalRouterId   string            `protobuf:"bytes,3,opt,name=local_router_id,json=localRouterId" json:"local_router_id,omitempty"`
	LocalRouterIdV6 string            `protobuf:"bytes,4,opt,name=local_router_id_v6,json=localRouterIdV6" json:"local_router_id_v6,omitempty"`
	IsisArea        []byte            `protobuf:"bytes,5,opt,name=isis_area,json=isisArea,proto3" json:"isis_area,omitempty"`
	Opaque          []byte            `protobuf:"bytes,6,opt,name=opaque,proto3" json:"opaque,omitempty"`
	SrCapabilities  *LsSrCapabilities `protobuf:"bytes,7,opt,name=sr_capabilities,json=srCapabilities" json:"sr_capabilities,omitempty"`
	SrAlgorithms    []byte            `protobuf:"bytes,8,opt,name=sr_algorithms,json=srAlgorithms,proto3" json:"sr_algorithms,omitempty"`
	SrLocalBlock    *LsSrLocalBlock   `protobuf:"bytes,9,opt,name=sr_local_block,json=srLocalBlock" json:"sr_local_block,omitempty"`
}

func (m *LsAttributeNode) Reset()                    { *m = LsAttributeNode{} }
func (m *LsAttributeNode) String() string            { return proto.CompactTextString(m) }
func (*LsAttributeNode) ProtoMessage()               {}
func (*LsAttributeNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} }

func (m *LsAttributeNode) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *LsAttributeNode) GetFlags() *LsNodeFlags {
	if m != nil {
		return m.Flags
	}
	return nil
}

func (m *LsAttributeNode) GetLocalRouterId() string {
	if m != nil {
		return m.LocalRouterId
	}
	return ""
}

func (m *LsAttributeNode) GetLocalRouterIdV6() string {
	if m != nil {
		return m.LocalRouterIdV6
	}
	return ""
}

func (m *LsAttributeNode) GetIsisArea() []byte {
	if m != nil {
		return m.IsisArea
	}
	return nil
}

func (m *LsAttributeNode) GetOpaque() []byte {
	if m != nil {
		return m.Opaque
	}
	return nil
}

func (m *LsAttributeNode) GetSrCapabilities() *LsSrCapabilities {
	if m != nil {
		return m.SrCapabilities
	}
	return nil
}

func (m *LsAttributeNode) GetSrAlgorithms() []byte {
	if m != nil {
		return m.SrAlgorithms
	}
	return nil
}

func (m *LsAttributeNode) GetSrLocalBlock() *LsSrLocalBlock {
	if m != nil {
		return m.SrLocalBlock
	}
	return nil
}

type LsAttributeLink struct {
	Name                string    `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	LocalRouterId       string    `protobuf:"bytes,2,opt,name=local_router_id,json=localRouterId" json:"local_router_id,omitempty"`
	LocalRouterIdV6     string    `protobuf:"bytes,3,opt,name=local_router_id_v6,json=localRouterIdV6" json:"local_router_id_v6,omitempty"`
	RemoteRouterId      string    `protobuf:"bytes,4,opt,name=remote_router_id,json=remoteRouterId" json:"remote_router_id,omitempty"`
	RemoteRouterIdV6    string    `protobuf:"bytes,5,opt,name=remote_router_id_v6,json=remoteRouterIdV6" json:"remote_router_id_v6,omitempty"`
	AdminGroup          uint32    `protobuf:"varint,6,opt,name=admin_group,json=adminGroup" json:"admin_group,omitempty"`
	DefaultTeMetric     uint32    `protobuf:"varint,7,opt,name=default_te_metric,json=defaultTeMetric" json:"default_te_metric,omitempty"`
	IgpMetric           uint32    `protobuf:"varint,8,opt,name=igp_metric,json=igpMetric" json:"igp_metric,omitempty"`
	Opaque              []byte    `protobuf:"bytes,9,opt,name=opaque,proto3" json:"opaque,omitempty"`
	Bandwidth           float32   `protobuf:"fixed32,10,opt,name=bandwidth" json:"bandwidth,omitempty"`
	ReservableBandwidth float32   `protobuf:"fixed32,11,opt,name=reservable_bandwidth,json=reservableBandwidth" json:"reservable_bandwidth,omitempty"`
	UnreservedBandwidth []float32 `protobuf:"fixed32,12,rep,packed,name=unreserved_bandwidth,json=unreservedBandwidth" json:"unreserved_bandwidth,omitempty"`
	SrAdjacencySid      uint32    `protobuf:"varint,13,opt,name=sr_adjacency_sid,json=srAdjacencySid" json:"sr_adjacency_sid,omitempty"`
	Srlgs               []uint32  `protobuf:"varint,14,rep,packed,name=srlgs" json:"srlgs,omitempty"`
}

func (m *LsAttributeLink) Reset()                    { *m = LsAttributeLink{} }
func (m *LsAttributeLink) String() string            { return proto.CompactTextString(m) }
func (*LsAttributeLink) ProtoMessage()               {}
func (*LsAttributeLink) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} }

func (m *LsAttributeLink) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *LsAttributeLink) GetLocalRouterId() string {
	if m != nil {
		return m.LocalRouterId
	}
	return ""
}

func (m *LsAttributeLink) GetLocalRouterIdV6() string {
	if m != nil {
		return m.LocalRouterIdV6
	}
	return ""
}

func (m *LsAttributeLink) GetRemoteRouterId() string {
	if m != nil {
		return m.RemoteRouterId
	}
	return ""
}

func (m *LsAttributeLink) GetRemoteRouterIdV6() string {
	if m != nil {
		return m.RemoteRouterIdV6
	}
	return ""
}

func (m *LsAttributeLink) GetAdminGroup() uint32 {
	if m != nil {
		return m.AdminGroup
	}
	return 0
}

func (m *LsAttributeLink) GetDefaultTeMetric() uint32 {
	if m != nil {
		return m.DefaultTeMetric
	}
	return 0
}

func (m *LsAttributeLink) GetIgpMetric() uint32 {
	if m != nil {
		return m.IgpMetric
	}
	return 0
}

func (m *LsAttributeLink) GetOpaque() []byte {
	if m != nil {
		return m.Opaque
	}
	return nil
}

func (m *LsAttributeLink) GetBandwidth() float32 {
	if m != nil {
		return m.Bandwidth
	}
	return 0
}

func (m *LsAttributeLink) GetReservableBandwidth() float32 {
	if m != nil {
		return m.ReservableBandwidth
	}
	return 0
}

func (m *LsAttributeLink) GetUnreservedBandwidth() []float32 {
	if m != nil {
		return m.UnreservedBandwidth
	}
	return nil
}

func (m *LsAttributeLink) GetSrAdjacencySid() uint32 {
	if m != nil {
		return m.SrAdjacencySid
	}
	return 0
}

func (m *LsAttributeLink) GetSrlgs() []uint32 {
	if m != nil {
		return m.Srlgs
	}
	return nil
}

type LsAttributePrefix struct {
	IgpFlags    *LsIGPFlags `protobuf:"bytes,1,opt,name=igp_flags,json=igpFlags" json:"igp_flags,omitempty"`
	Opaque      []byte      `protobuf:"bytes,2,opt,name=opaque,proto3" json:"opaque,omitempty"`
	SrPrefixSid uint32      `protobuf:"varint,3,opt,name=sr_prefix_sid,json=srPrefixSid" json:"sr_prefix_sid,omitempty"`
}

func (m *LsAttributePrefix) Reset()                    { *m = LsAttributePrefix{} }
func (m *LsAttributePrefix) String() string            { return proto.CompactTextString(m) }
func (*LsAttributePrefix) ProtoMessage()               {}
func (*LsAttributePrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} }

func (m *LsAttributePrefix) GetIgpFlags() *LsIGPFlags {
	if m != nil {
		return m.IgpFlags
	}
	return nil
}

func (m *LsAttributePrefix) GetOpaque() []byte {
	if m != nil {
		return m.Opaque
	}
	return nil
}

func (m *LsAttributePrefix) GetSrPrefixSid() uint32 {
	if m != nil {
		return m.SrPrefixSid
	}
	return 0
}

type LsAttribute struct {
	Node   *LsAttributeNode   `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"`
	Link   *LsAttributeLink   `protobuf:"bytes,2,opt,name=link" json:"link,omitempty"`
	Prefix *LsAttributePrefix `protobuf:"bytes,3,opt,name=prefix" json:"prefix,omitempty"`
}

func (m *LsAttribute) Reset()                    { *m = LsAttribute{} }
func (m *LsAttribute) String() string            { return proto.CompactTextString(m) }
func (*LsAttribute) ProtoMessage()               {}
func (*LsAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} }

func (m *LsAttribute) GetNode() *LsAttributeNode {
	if m != nil {
		return m.Node
	}
	return nil
}

func (m *LsAttribute) GetLink() *LsAttributeLink {
	if m != nil {
		return m.Link
	}
	return nil
}

func (m *LsAttribute) GetPrefix() *LsAttributePrefix {
	if m != nil {
		return m.Prefix
	}
	return nil
}

type UnknownAttribute struct {
	Flags uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"`
	Type  uint32 `protobuf:"varint,2,opt,name=type" json:"type,omitempty"`
	Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
}

func (m *UnknownAttribute) Reset()                    { *m = UnknownAttribute{} }
func (m *UnknownAttribute) String() string            { return proto.CompactTextString(m) }
func (*UnknownAttribute) ProtoMessage()               {}
func (*UnknownAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} }

func (m *UnknownAttribute) GetFlags() uint32 {
	if m != nil {
		return m.Flags
	}
	return 0
}

func (m *UnknownAttribute) GetType() uint32 {
	if m != nil {
		return m.Type
	}
	return 0
}

func (m *UnknownAttribute) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2.1.1
type SRv6StructureSubSubTLV struct {
	LocalBlockLength    uint32 `protobuf:"varint,1,opt,name=local_block_length,json=localBlockLength" json:"local_block_length,omitempty"`
	LocalNodeLength     uint32 `protobuf:"varint,2,opt,name=local_node_length,json=localNodeLength" json:"local_node_length,omitempty"`
	FunctionLength      uint32 `protobuf:"varint,3,opt,name=function_length,json=functionLength" json:"function_length,omitempty"`
	ArgumentLength      uint32 `protobuf:"varint,4,opt,name=argument_length,json=argumentLength" json:"argument_length,omitempty"`
	TranspositionLength uint32 `protobuf:"varint,5,opt,name=transposition_length,json=transpositionLength" json:"transposition_length,omitempty"`
	TranspositionOffset uint32 `protobuf:"varint,6,opt,name=transposition_offset,json=transpositionOffset" json:"transposition_offset,omitempty"`
}

func (m *SRv6StructureSubSubTLV) Reset()                    { *m = SRv6StructureSubSubTLV{} }
func (m *SRv6StructureSubSubTLV) String() string            { return proto.CompactTextString(m) }
func (*SRv6StructureSubSubTLV) ProtoMessage()               {}
func (*SRv6StructureSubSubTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{90} }

func (m *SRv6StructureSubSubTLV) GetLocalBlockLength() uint32 {
	if m != nil {
		return m.LocalBlockLength
	}
	return 0
}

func (m *SRv6StructureSubSubTLV) GetLocalNodeLength() uint32 {
	if m != nil {
		return m.LocalNodeLength
	}
	return 0
}

func (m *SRv6StructureSubSubTLV) GetFunctionLength() uint32 {
	if m != nil {
		return m.FunctionLength
	}
	return 0
}

func (m *SRv6StructureSubSubTLV) GetArgumentLength() uint32 {
	if m != nil {
		return m.ArgumentLength
	}
	return 0
}

func (m *SRv6StructureSubSubTLV) GetTranspositionLength() uint32 {
	if m != nil {
		return m.TranspositionLength
	}
	return 0
}

func (m *SRv6StructureSubSubTLV) GetTranspositionOffset() uint32 {
	if m != nil {
		return m.TranspositionOffset
	}
	return 0
}

type SRv6SIDFlags struct {
	// Placeholder for future sid flags
	Flag_1 bool `protobuf:"varint,1,opt,name=flag_1,json=flag1" json:"flag_1,omitempty"`
}

func (m *SRv6SIDFlags) Reset()                    { *m = SRv6SIDFlags{} }
func (m *SRv6SIDFlags) String() string            { return proto.CompactTextString(m) }
func (*SRv6SIDFlags) ProtoMessage()               {}
func (*SRv6SIDFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{91} }

func (m *SRv6SIDFlags) GetFlag_1() bool {
	if m != nil {
		return m.Flag_1
	}
	return false
}

type SRv6TLV struct {
	Tlv []*google_protobuf.Any `protobuf:"bytes,1,rep,name=tlv" json:"tlv,omitempty"`
}

func (m *SRv6TLV) Reset()                    { *m = SRv6TLV{} }
func (m *SRv6TLV) String() string            { return proto.CompactTextString(m) }
func (*SRv6TLV) ProtoMessage()               {}
func (*SRv6TLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{92} }

func (m *SRv6TLV) GetTlv() []*google_protobuf.Any {
	if m != nil {
		return m.Tlv
	}
	return nil
}

// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2.1.1
type SRv6InformationSubTLV struct {
	Sid              []byte        `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"`
	Flags            *SRv6SIDFlags `protobuf:"bytes,2,opt,name=flags" json:"flags,omitempty"`
	EndpointBehavior uint32        `protobuf:"varint,3,opt,name=endpoint_behavior,json=endpointBehavior" json:"endpoint_behavior,omitempty"`
	// SRv6TLV is one of:
	// - SRv6StructureSubSubTLV
	SubSubTlvs map[uint32]*SRv6TLV `protobuf:"bytes,4,rep,name=sub_sub_tlvs,json=subSubTlvs" json:"sub_sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}

func (m *SRv6InformationSubTLV) Reset()                    { *m = SRv6InformationSubTLV{} }
func (m *SRv6InformationSubTLV) String() string            { return proto.CompactTextString(m) }
func (*SRv6InformationSubTLV) ProtoMessage()               {}
func (*SRv6InformationSubTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{93} }

func (m *SRv6InformationSubTLV) GetSid() []byte {
	if m != nil {
		return m.Sid
	}
	return nil
}

func (m *SRv6InformationSubTLV) GetFlags() *SRv6SIDFlags {
	if m != nil {
		return m.Flags
	}
	return nil
}

func (m *SRv6InformationSubTLV) GetEndpointBehavior() uint32 {
	if m != nil {
		return m.EndpointBehavior
	}
	return 0
}

func (m *SRv6InformationSubTLV) GetSubSubTlvs() map[uint32]*SRv6TLV {
	if m != nil {
		return m.SubSubTlvs
	}
	return nil
}

// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2
type SRv6L3ServiceTLV struct {
	// SRv6TLV is one of:
	// - SRv6InformationSubTLV
	SubTlvs map[uint32]*SRv6TLV `protobuf:"bytes,1,rep,name=sub_tlvs,json=subTlvs" json:"sub_tlvs,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}

func (m *SRv6L3ServiceTLV) Reset()                    { *m = SRv6L3ServiceTLV{} }
func (m *SRv6L3ServiceTLV) String() string            { return proto.CompactTextString(m) }
func (*SRv6L3ServiceTLV) ProtoMessage()               {}
func (*SRv6L3ServiceTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{94} }

func (m *SRv6L3ServiceTLV) GetSubTlvs() map[uint32]*SRv6TLV {
	if m != nil {
		return m.SubTlvs
	}
	return nil
}

// https://tools.ietf.org/html/rfc8669
type PrefixSID struct {
	// tlv is one of:
	// - IndexLabelTLV Type 1 (not yet implemented)
	// - OriginatorSRGBTLV Type 3 (not yet implemented)
	// - SRv6L3ServiceTLV Type 5
	// - SRv6L2ServiceTLV Type 6 (not yet implemented)
	Tlvs []*google_protobuf.Any `protobuf:"bytes,1,rep,name=tlvs" json:"tlvs,omitempty"`
}

func (m *PrefixSID) Reset()                    { *m = PrefixSID{} }
func (m *PrefixSID) String() string            { return proto.CompactTextString(m) }
func (*PrefixSID) ProtoMessage()               {}
func (*PrefixSID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{95} }

func (m *PrefixSID) GetTlvs() []*google_protobuf.Any {
	if m != nil {
		return m.Tlvs
	}
	return nil
}

func init() {
	proto.RegisterType((*OriginAttribute)(nil), "gobgpapi.OriginAttribute")
	proto.RegisterType((*AsSegment)(nil), "gobgpapi.AsSegment")
	proto.RegisterType((*AsPathAttribute)(nil), "gobgpapi.AsPathAttribute")
	proto.RegisterType((*NextHopAttribute)(nil), "gobgpapi.NextHopAttribute")
	proto.RegisterType((*MultiExitDiscAttribute)(nil), "gobgpapi.MultiExitDiscAttribute")
	proto.RegisterType((*LocalPrefAttribute)(nil), "gobgpapi.LocalPrefAttribute")
	proto.RegisterType((*AtomicAggregateAttribute)(nil), "gobgpapi.AtomicAggregateAttribute")
	proto.RegisterType((*AggregatorAttribute)(nil), "gobgpapi.AggregatorAttribute")
	proto.RegisterType((*CommunitiesAttribute)(nil), "gobgpapi.CommunitiesAttribute")
	proto.RegisterType((*OriginatorIdAttribute)(nil), "gobgpapi.OriginatorIdAttribute")
	proto.RegisterType((*ClusterListAttribute)(nil), "gobgpapi.ClusterListAttribute")
	proto.RegisterType((*IPAddressPrefix)(nil), "gobgpapi.IPAddressPrefix")
	proto.RegisterType((*LabeledIPAddressPrefix)(nil), "gobgpapi.LabeledIPAddressPrefix")
	proto.RegisterType((*EncapsulationNLRI)(nil), "gobgpapi.EncapsulationNLRI")
	proto.RegisterType((*RouteDistinguisherTwoOctetAS)(nil), "gobgpapi.RouteDistinguisherTwoOctetAS")
	proto.RegisterType((*RouteDistinguisherIPAddress)(nil), "gobgpapi.RouteDistinguisherIPAddress")
	proto.RegisterType((*RouteDistinguisherFourOctetAS)(nil), "gobgpapi.RouteDistinguisherFourOctetAS")
	proto.RegisterType((*EthernetSegmentIdentifier)(nil), "gobgpapi.EthernetSegmentIdentifier")
	proto.RegisterType((*EVPNEthernetAutoDiscoveryRoute)(nil), "gobgpapi.EVPNEthernetAutoDiscoveryRoute")
	proto.RegisterType((*EVPNMACIPAdvertisementRoute)(nil), "gobgpapi.EVPNMACIPAdvertisementRoute")
	proto.RegisterType((*EVPNInclusiveMulticastEthernetTagRoute)(nil), "gobgpapi.EVPNInclusiveMulticastEthernetTagRoute")
	proto.RegisterType((*EVPNEthernetSegmentRoute)(nil), "gobgpapi.EVPNEthernetSegmentRoute")
	proto.RegisterType((*EVPNIPPrefixRoute)(nil), "gobgpapi.EVPNIPPrefixRoute")
	proto.RegisterType((*EVPNIPMSIRoute)(nil), "gobgpapi.EVPNIPMSIRoute")
	proto.RegisterType((*LabeledVPNIPAddressPrefix)(nil), "gobgpapi.LabeledVPNIPAddressPrefix")
	proto.RegisterType((*RouteTargetMembershipNLRI)(nil), "gobgpapi.RouteTargetMembershipNLRI")
	proto.RegisterType((*FlowSpecIPPrefix)(nil), "gobgpapi.FlowSpecIPPrefix")
	proto.RegisterType((*FlowSpecMAC)(nil), "gobgpapi.FlowSpecMAC")
	proto.RegisterType((*FlowSpecComponentItem)(nil), "gobgpapi.FlowSpecComponentItem")
	proto.RegisterType((*FlowSpecComponent)(nil), "gobgpapi.FlowSpecComponent")
	proto.RegisterType((*FlowSpecNLRI)(nil), "gobgpapi.FlowSpecNLRI")
	proto.RegisterType((*VPNFlowSpecNLRI)(nil), "gobgpapi.VPNFlowSpecNLRI")
	proto.RegisterType((*OpaqueNLRI)(nil), "gobgpapi.OpaqueNLRI")
	proto.RegisterType((*LsNodeDescriptor)(nil), "gobgpapi.LsNodeDescriptor")
	proto.RegisterType((*LsLinkDescriptor)(nil), "gobgpapi.LsLinkDescriptor")
	proto.RegisterType((*LsPrefixDescriptor)(nil), "gobgpapi.LsPrefixDescriptor")
	proto.RegisterType((*LsNodeNLRI)(nil), "gobgpapi.LsNodeNLRI")
	proto.RegisterType((*LsLinkNLRI)(nil), "gobgpapi.LsLinkNLRI")
	proto.RegisterType((*LsPrefixV4NLRI)(nil), "gobgpapi.LsPrefixV4NLRI")
	proto.RegisterType((*LsPrefixV6NLRI)(nil), "gobgpapi.LsPrefixV6NLRI")
	proto.RegisterType((*LsAddrPrefix)(nil), "gobgpapi.LsAddrPrefix")
	proto.RegisterType((*MpReachNLRIAttribute)(nil), "gobgpapi.MpReachNLRIAttribute")
	proto.RegisterType((*MpUnreachNLRIAttribute)(nil), "gobgpapi.MpUnreachNLRIAttribute")
	proto.RegisterType((*TwoOctetAsSpecificExtended)(nil), "gobgpapi.TwoOctetAsSpecificExtended")
	proto.RegisterType((*IPv4AddressSpecificExtended)(nil), "gobgpapi.IPv4AddressSpecificExtended")
	proto.RegisterType((*FourOctetAsSpecificExtended)(nil), "gobgpapi.FourOctetAsSpecificExtended")
	proto.RegisterType((*ValidationExtended)(nil), "gobgpapi.ValidationExtended")
	proto.RegisterType((*ColorExtended)(nil), "gobgpapi.ColorExtended")
	proto.RegisterType((*EncapExtended)(nil), "gobgpapi.EncapExtended")
	proto.RegisterType((*DefaultGatewayExtended)(nil), "gobgpapi.DefaultGatewayExtended")
	proto.RegisterType((*OpaqueExtended)(nil), "gobgpapi.OpaqueExtended")
	proto.RegisterType((*ESILabelExtended)(nil), "gobgpapi.ESILabelExtended")
	proto.RegisterType((*ESImportRouteTarget)(nil), "gobgpapi.ESImportRouteTarget")
	proto.RegisterType((*MacMobilityExtended)(nil), "gobgpapi.MacMobilityExtended")
	proto.RegisterType((*RouterMacExtended)(nil), "gobgpapi.RouterMacExtended")
	proto.RegisterType((*TrafficRateExtended)(nil), "gobgpapi.TrafficRateExtended")
	proto.RegisterType((*TrafficActionExtended)(nil), "gobgpapi.TrafficActionExtended")
	proto.RegisterType((*RedirectTwoOctetAsSpecificExtended)(nil), "gobgpapi.RedirectTwoOctetAsSpecificExtended")
	proto.RegisterType((*RedirectIPv4AddressSpecificExtended)(nil), "gobgpapi.RedirectIPv4AddressSpecificExtended")
	proto.RegisterType((*RedirectFourOctetAsSpecificExtended)(nil), "gobgpapi.RedirectFourOctetAsSpecificExtended")
	proto.RegisterType((*TrafficRemarkExtended)(nil), "gobgpapi.TrafficRemarkExtended")
	proto.RegisterType((*UnknownExtended)(nil), "gobgpapi.UnknownExtended")
	proto.RegisterType((*ExtendedCommunitiesAttribute)(nil), "gobgpapi.ExtendedCommunitiesAttribute")
	proto.RegisterType((*As4PathAttribute)(nil), "gobgpapi.As4PathAttribute")
	proto.RegisterType((*As4AggregatorAttribute)(nil), "gobgpapi.As4AggregatorAttribute")
	proto.RegisterType((*PmsiTunnelAttribute)(nil), "gobgpapi.PmsiTunnelAttribute")
	proto.RegisterType((*TunnelEncapSubTLVEncapsulation)(nil), "gobgpapi.TunnelEncapSubTLVEncapsulation")
	proto.RegisterType((*TunnelEncapSubTLVProtocol)(nil), "gobgpapi.TunnelEncapSubTLVProtocol")
	proto.RegisterType((*TunnelEncapSubTLVColor)(nil), "gobgpapi.TunnelEncapSubTLVColor")
	proto.RegisterType((*TunnelEncapSubTLVUnknown)(nil), "gobgpapi.TunnelEncapSubTLVUnknown")
	proto.RegisterType((*TunnelEncapTLV)(nil), "gobgpapi.TunnelEncapTLV")
	proto.RegisterType((*TunnelEncapAttribute)(nil), "gobgpapi.TunnelEncapAttribute")
	proto.RegisterType((*IPv6AddressSpecificExtended)(nil), "gobgpapi.IPv6AddressSpecificExtended")
	proto.RegisterType((*RedirectIPv6AddressSpecificExtended)(nil), "gobgpapi.RedirectIPv6AddressSpecificExtended")
	proto.RegisterType((*IP6ExtendedCommunitiesAttribute)(nil), "gobgpapi.IP6ExtendedCommunitiesAttribute")
	proto.RegisterType((*AigpTLVIGPMetric)(nil), "gobgpapi.AigpTLVIGPMetric")
	proto.RegisterType((*AigpTLVUnknown)(nil), "gobgpapi.AigpTLVUnknown")
	proto.RegisterType((*AigpAttribute)(nil), "gobgpapi.AigpAttribute")
	proto.RegisterType((*LargeCommunity)(nil), "gobgpapi.LargeCommunity")
	proto.RegisterType((*LargeCommunitiesAttribute)(nil), "gobgpapi.LargeCommunitiesAttribute")
	proto.RegisterType((*LsNodeFlags)(nil), "gobgpapi.LsNodeFlags")
	proto.RegisterType((*LsIGPFlags)(nil), "gobgpapi.LsIGPFlags")
	proto.RegisterType((*LsSrRange)(nil), "gobgpapi.LsSrRange")
	proto.RegisterType((*LsSrCapabilities)(nil), "gobgpapi.LsSrCapabilities")
	proto.RegisterType((*LsSrLocalBlock)(nil), "gobgpapi.LsSrLocalBlock")
	proto.RegisterType((*LsAttributeNode)(nil), "gobgpapi.LsAttributeNode")
	proto.RegisterType((*LsAttributeLink)(nil), "gobgpapi.LsAttributeLink")
	proto.RegisterType((*LsAttributePrefix)(nil), "gobgpapi.LsAttributePrefix")
	proto.RegisterType((*LsAttribute)(nil), "gobgpapi.LsAttribute")
	proto.RegisterType((*UnknownAttribute)(nil), "gobgpapi.UnknownAttribute")
	proto.RegisterType((*SRv6StructureSubSubTLV)(nil), "gobgpapi.SRv6StructureSubSubTLV")
	proto.RegisterType((*SRv6SIDFlags)(nil), "gobgpapi.SRv6SIDFlags")
	proto.RegisterType((*SRv6TLV)(nil), "gobgpapi.SRv6TLV")
	proto.RegisterType((*SRv6InformationSubTLV)(nil), "gobgpapi.SRv6InformationSubTLV")
	proto.RegisterType((*SRv6L3ServiceTLV)(nil), "gobgpapi.SRv6L3ServiceTLV")
	proto.RegisterType((*PrefixSID)(nil), "gobgpapi.PrefixSID")
	proto.RegisterEnum("gobgpapi.LsNLRIType", LsNLRIType_name, LsNLRIType_value)
}

func init() { proto.RegisterFile("attribute.proto", fileDescriptor0) }

var fileDescriptor0 = []byte{
	// 3360 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0x1b, 0x49,
	0x76, 0x0f, 0x49, 0x59, 0x26, 0x1f, 0x3f, 0xd5, 0x92, 0x05, 0x4a, 0x1e, 0x8f, 0x9d, 0x9e, 0x9d,
	0xb1, 0x62, 0xcf, 0x68, 0x62, 0x59, 0xc3, 0xec, 0xcc, 0x60, 0x13, 0xd0, 0x92, 0xec, 0x65, 0x4c,
	0xc9, 0x9a, 0xa6, 0xac, 0x4d, 0x2e, 0xe9, 0x34, 0xbb, 0x8b, 0xad, 0x8a, 0x9a, 0xdd, 0xbd, 0x55,
	0xd5, 0xb4, 0x75, 0x0a, 0x90, 0x43, 0x80, 0x45, 0x90, 0x20, 0xa7, 0x60, 0x81, 0xbd, 0xe4, 0x92,
	0x00, 0xc9, 0x1f, 0x90, 0xff, 0x21, 0x7f, 0x50, 0xee, 0x41, 0x7d, 0xf5, 0x07, 0x45, 0x49, 0xf6,
	0x78, 0x06, 0xf0, 0xad, 0xeb, 0xd5, 0xab, 0x57, 0xaf, 0x5e, 0xfd, 0xea, 0x7d, 0x35, 0xb4, 0x1d,
	0xc6, 0x08, 0x1e, 0x27, 0x0c, 0x6d, 0xc7, 0x24, 0x62, 0x91, 0x51, 0xf5, 0xa3, 0xb1, 0x1f, 0x3b,
	0x31, 0xde, 0xdc, 0xf0, 0xa3, 0xc8, 0x0f, 0xd0, 0xd7, 0x82, 0x3e, 0x4e, 0x26, 0x5f, 0x3b, 0xe1,
	0x85, 0x64, 0xda, 0xac, 0x0b, 0x26, 0x39, 0x30, 0xff, 0x04, 0xda, 0xaf, 0x08, 0xf6, 0x71, 0xd8,
	0xd7, 0xa2, 0x8c, 0x75, 0x58, 0x8e, 0x04, 0xa9, 0x5b, 0x7a, 0x50, 0xda, 0x6a, 0x5a, 0x6a, 0x64,
	0x7e, 0x0b, 0xb5, 0x3e, 0x1d, 0x21, 0x7f, 0x8a, 0x42, 0x66, 0x18, 0xb0, 0xc4, 0x2e, 0x62, 0xa4,
	0x58, 0xc4, 0xb7, 0xd1, 0x85, 0xdb, 0x61, 0x32, 0x1d, 0x23, 0x42, 0xbb, 0xe5, 0x07, 0x95, 0xad,
	0xa6, 0xa5, 0x87, 0xe6, 0x33, 0x68, 0xf7, 0xe9, 0xb1, 0xc3, 0xce, 0xb2, 0x5d, 0xbe, 0x86, 0x2a,
	0x95, 0xb2, 0x68, 0xb7, 0xf4, 0xa0, 0xb2, 0x55, 0xdf, 0x59, 0xdd, 0xd6, 0xda, 0x6f, 0xa7, 0xfb,
	0x58, 0x29, 0x93, 0xf9, 0x15, 0x74, 0x8e, 0xd0, 0x5b, 0xf6, 0xeb, 0x28, 0xce, 0x84, 0x6c, 0x40,
	0x35, 0x44, 0x6f, 0x99, 0x7d, 0x16, 0xc5, 0x42, 0x93, 0x9a, 0x75, 0x3b, 0x94, 0x3c, 0xe6, 0x23,
	0x58, 0x3f, 0x4c, 0x02, 0x86, 0x0f, 0xde, 0x62, 0xb6, 0x8f, 0xa9, 0x9b, 0x2d, 0xea, 0x40, 0x65,
	0x8a, 0x3c, 0xa5, 0x39, 0xff, 0x34, 0x9f, 0x82, 0x31, 0x8c, 0x5c, 0x27, 0x38, 0x26, 0x68, 0x92,
	0xf1, 0xdd, 0x03, 0x08, 0x38, 0xd5, 0x8e, 0x09, 0x9a, 0x28, 0xf6, 0x5a, 0xa0, 0xf9, 0xcc, 0x4d,
	0xe8, 0xf6, 0x59, 0x34, 0xc5, 0x6e, 0xdf, 0xf7, 0x09, 0xf2, 0x1d, 0x86, 0xd2, 0xa5, 0xe6, 0x5f,
	0xc0, 0xaa, 0xa6, 0x46, 0x24, 0x93, 0xd8, 0x82, 0xb2, 0xc3, 0x6d, 0xc3, 0x25, 0x95, 0x1d, 0xca,
	0x0d, 0xe6, 0x78, 0x1e, 0x41, 0x94, 0x76, 0x2b, 0x52, 0x7b, 0x35, 0x34, 0x7f, 0x09, 0x6b, 0x7b,
	0xd1, 0x74, 0x9a, 0x84, 0x98, 0x61, 0x44, 0x33, 0x09, 0x0f, 0xa0, 0xee, 0x66, 0x74, 0x61, 0xb8,
	0xa6, 0x95, 0x27, 0x99, 0x0f, 0xe1, 0x8e, 0xbc, 0x50, 0xbe, 0xf5, 0xc0, 0x2b, 0x6c, 0x8e, 0x3d,
	0x65, 0xa5, 0x32, 0xf6, 0xcc, 0x2d, 0x58, 0xdb, 0x0b, 0x12, 0xca, 0x10, 0x19, 0x62, 0xca, 0x0a,
	0xe6, 0xc1, 0x9e, 0x14, 0x5d, 0xb3, 0xf8, 0xa7, 0xf9, 0x6b, 0x68, 0x0f, 0x8e, 0xfb, 0x52, 0x33,
	0x7e, 0x74, 0xfc, 0x96, 0xdb, 0x26, 0x16, 0x5f, 0x76, 0x80, 0x34, 0x4e, 0x6a, 0x92, 0x32, 0x44,
	0x21, 0x87, 0x90, 0x1c, 0x88, 0xc3, 0xd6, 0x2c, 0x35, 0x32, 0x7d, 0x58, 0x1f, 0x3a, 0x63, 0x14,
	0x20, 0x6f, 0x5e, 0xe0, 0x3a, 0x2c, 0x07, 0x7c, 0x46, 0x9f, 0x49, 0x8d, 0xe6, 0x36, 0x2a, 0x5f,
	0xbd, 0x51, 0xa5, 0xb0, 0xd1, 0x57, 0xb0, 0x72, 0x10, 0xba, 0x4e, 0x4c, 0x93, 0xc0, 0x61, 0x38,
	0x0a, 0x8f, 0x86, 0xd6, 0x20, 0x6f, 0xee, 0x52, 0xd1, 0xdc, 0xc7, 0xf0, 0x89, 0x15, 0x25, 0x0c,
	0xed, 0x63, 0xca, 0x70, 0xe8, 0x27, 0x98, 0x9e, 0x21, 0x72, 0xf2, 0x26, 0x7a, 0xe5, 0x32, 0xc4,
	0xfa, 0x23, 0x63, 0x0d, 0x6e, 0x39, 0xde, 0x34, 0x7d, 0x11, 0x72, 0x60, 0x6c, 0x42, 0xd5, 0xa1,
	0x14, 0xfb, 0x21, 0xf2, 0x94, 0x66, 0xe9, 0xd8, 0x7c, 0x05, 0x77, 0x2f, 0x4b, 0x4c, 0x0f, 0x5d,
	0x14, 0x58, 0x7b, 0x17, 0x81, 0x3f, 0xc0, 0xbd, 0xcb, 0x02, 0x9f, 0x47, 0x09, 0xf9, 0xf1, 0x3a,
	0x1e, 0xc0, 0xc6, 0x01, 0x3b, 0x43, 0x24, 0x44, 0x4c, 0x3d, 0xb7, 0x81, 0x87, 0x42, 0x86, 0x27,
	0x18, 0x91, 0x85, 0x0f, 0x7c, 0x0d, 0x6e, 0xcd, 0x9c, 0x20, 0x41, 0x42, 0x52, 0xc3, 0x92, 0x03,
	0xf3, 0x7f, 0x4a, 0xf0, 0xe9, 0xc1, 0xe9, 0xf1, 0x91, 0x96, 0xd5, 0x4f, 0x58, 0xc4, 0x5f, 0x5c,
	0x34, 0x43, 0xe4, 0x42, 0xe8, 0x6c, 0xfc, 0x02, 0xca, 0x44, 0x62, 0xaf, 0xbe, 0xb3, 0xb6, 0x2d,
	0x5d, 0xd3, 0xb6, 0x76, 0x4d, 0xdb, 0xfd, 0xf0, 0xc2, 0x2a, 0x13, 0xcf, 0xf8, 0x06, 0x2a, 0x88,
	0x62, 0x21, 0xbc, 0xbe, 0xf3, 0x59, 0xe6, 0x0d, 0xae, 0x54, 0xd2, 0xe2, 0xfc, 0xc6, 0x1f, 0x43,
	0x03, 0x29, 0x0e, 0x9b, 0x39, 0xbe, 0x40, 0x42, 0xd3, 0xaa, 0x6b, 0xda, 0x89, 0xe3, 0x73, 0xc5,
	0x05, 0x9e, 0xba, 0x4b, 0xd2, 0x36, 0x62, 0x60, 0xfe, 0x5f, 0x09, 0xee, 0x72, 0xc5, 0x0f, 0xfb,
	0x7b, 0xfc, 0x66, 0x66, 0x88, 0x30, 0x4c, 0x91, 0x70, 0x3b, 0x1f, 0x85, 0xd6, 0xf7, 0xa1, 0x3e,
	0x75, 0x5c, 0x5b, 0x63, 0x76, 0x49, 0x40, 0x05, 0xa6, 0x8e, 0xab, 0x51, 0x74, 0x0f, 0x00, 0xc7,
	0xe9, 0xfc, 0x2d, 0x31, 0x5f, 0xc3, 0xb1, 0x9e, 0xce, 0xde, 0xd4, 0x72, 0xfe, 0x4d, 0x99, 0xff,
	0x5a, 0x82, 0x2f, 0xf8, 0xb9, 0x07, 0xa1, 0x1b, 0x24, 0x14, 0xcf, 0x90, 0x70, 0x94, 0xae, 0x43,
	0xd9, 0x41, 0xb6, 0xfb, 0xfb, 0x98, 0x60, 0xfe, 0x2c, 0xe5, 0xcb, 0x67, 0x29, 0xaa, 0x5a, 0x99,
	0x53, 0xd5, 0xfc, 0xb7, 0x12, 0x74, 0xf3, 0x18, 0xd2, 0xee, 0xff, 0xe7, 0xbf, 0x87, 0x1b, 0x14,
	0xfb, 0x5d, 0x19, 0x56, 0x84, 0xad, 0x8e, 0xa5, 0xa3, 0xfa, 0x38, 0x90, 0x71, 0x17, 0x6a, 0x38,
	0xb6, 0x95, 0xe7, 0x93, 0xb8, 0xa8, 0xe2, 0x58, 0xb9, 0x52, 0x13, 0x9a, 0xe9, 0xa4, 0xf0, 0x9a,
	0xb7, 0xa4, 0x00, 0xcd, 0xc0, 0xfd, 0xe6, 0x3d, 0x00, 0xff, 0x4d, 0x7a, 0xea, 0x65, 0x79, 0x6a,
	0xff, 0x4d, 0xce, 0x3d, 0xc9, 0xf7, 0x72, 0x3b, 0xff, 0x5e, 0xfe, 0x1e, 0x5a, 0xd2, 0x14, 0x87,
	0xa3, 0xc1, 0x4f, 0x0c, 0x0f, 0x2e, 0x88, 0x89, 0x93, 0x5e, 0x2d, 0x88, 0x71, 0xe0, 0x6e, 0xa8,
	0xf8, 0x21, 0xf4, 0x78, 0xb7, 0x10, 0x22, 0x95, 0x2c, 0xdf, 0xa0, 0x64, 0x31, 0xd0, 0x54, 0xae,
	0x0e, 0x34, 0x4b, 0x85, 0x40, 0xf3, 0x03, 0x6c, 0x08, 0x53, 0x9c, 0x38, 0xc4, 0x47, 0xec, 0x10,
	0x89, 0x7c, 0xe7, 0x0c, 0xc7, 0x22, 0xe0, 0xc8, 0x78, 0x5f, 0x4a, 0xe3, 0xbd, 0x3c, 0x65, 0xf9,
	0x86, 0x53, 0x26, 0xd0, 0x79, 0x1e, 0x44, 0x6f, 0x46, 0x31, 0x72, 0x35, 0xea, 0x16, 0x7a, 0xe3,
	0x1f, 0x17, 0x1a, 0x45, 0x7a, 0x37, 0x99, 0x50, 0xc4, 0x94, 0x33, 0x54, 0x23, 0xf3, 0x7b, 0xa8,
	0xeb, 0x6d, 0x0f, 0xfb, 0x7b, 0x57, 0x25, 0x78, 0x1a, 0x32, 0xe5, 0x62, 0x00, 0xfd, 0x15, 0xdc,
	0xd1, 0x8b, 0xf7, 0xa2, 0x69, 0x1c, 0x85, 0x1c, 0xd7, 0x0c, 0x4d, 0xb9, 0x09, 0x54, 0x6e, 0xd6,
	0xb4, 0xca, 0x51, 0x5c, 0x0c, 0x21, 0x4b, 0x3a, 0x84, 0xfc, 0x0d, 0xac, 0x5c, 0x5a, 0xbe, 0x50,
	0x83, 0x6f, 0xe0, 0x16, 0x66, 0x68, 0x2a, 0x13, 0xcc, 0xfa, 0xce, 0xfd, 0xec, 0x51, 0x2d, 0xdc,
	0xde, 0x92, 0xdc, 0xe6, 0x77, 0xd0, 0xd0, 0xf3, 0xe2, 0x62, 0x1e, 0xc1, 0x2d, 0x92, 0x04, 0x48,
	0x67, 0x9e, 0x8b, 0xef, 0x42, 0xb2, 0x98, 0x2e, 0xb4, 0x4f, 0x8f, 0x8f, 0x0a, 0xcb, 0xdf, 0x0d,
	0xf6, 0xe9, 0x26, 0xe5, 0x9b, 0x37, 0xd9, 0x05, 0x78, 0x15, 0x3b, 0xbf, 0x4d, 0x90, 0x90, 0xdf,
	0x81, 0xca, 0x39, 0xba, 0x10, 0x1b, 0x34, 0x2c, 0xfe, 0x79, 0x45, 0xe4, 0xfd, 0xcf, 0x12, 0x74,
	0x86, 0xf4, 0x28, 0xf2, 0xd0, 0x3e, 0xa2, 0x2e, 0xc1, 0x31, 0x8b, 0x08, 0x5f, 0xec, 0x50, 0x9d,
	0x05, 0xf0, 0x4f, 0x63, 0x13, 0x6a, 0x63, 0x3f, 0xb6, 0x03, 0x6a, 0x63, 0x9d, 0x04, 0xdc, 0x1e,
	0xfb, 0xf1, 0x90, 0x0e, 0x3c, 0xe3, 0x01, 0x34, 0x22, 0x1a, 0x4f, 0x6c, 0x87, 0x20, 0x87, 0x4f,
	0x4b, 0xe0, 0x03, 0xa7, 0xf5, 0x09, 0x72, 0x06, 0x9e, 0xf1, 0x29, 0x40, 0x4c, 0x51, 0xe2, 0x45,
	0x61, 0xe4, 0x21, 0x81, 0x99, 0xaa, 0x95, 0xa3, 0x08, 0x77, 0xe3, 0xc7, 0x36, 0xe1, 0xaf, 0x80,
	0x70, 0x11, 0x32, 0x0e, 0xd5, 0xb1, 0x1f, 0x8b, 0x97, 0x41, 0x06, 0x9e, 0xf9, 0xfb, 0x32, 0x57,
	0x74, 0x88, 0xc3, 0xf3, 0x9c, 0xa2, 0x26, 0x34, 0x03, 0x1c, 0x9e, 0xdb, 0x32, 0xc9, 0xc6, 0x3a,
	0x23, 0xaf, 0x73, 0xa2, 0x48, 0xc7, 0x07, 0x9e, 0xf1, 0x0b, 0x68, 0x09, 0x1e, 0x82, 0xa6, 0x11,
	0x43, 0x99, 0xfe, 0x0d, 0x4e, 0xb5, 0x04, 0x71, 0xe0, 0x19, 0xdb, 0xb0, 0x8a, 0x43, 0x86, 0xc8,
	0xc4, 0x71, 0x91, 0x70, 0x6a, 0x36, 0x8e, 0x67, 0xbb, 0x0a, 0xf7, 0x2b, 0xe9, 0x14, 0x77, 0x17,
	0x83, 0x78, 0xb6, 0x6b, 0x7c, 0x09, 0x46, 0x88, 0xb0, 0x7f, 0x36, 0x8e, 0x48, 0x8e, 0x5d, 0x3e,
	0xec, 0x8e, 0x9e, 0x49, 0xb9, 0x17, 0x4a, 0xef, 0xa9, 0x63, 0x5e, 0x92, 0xde, 0x5b, 0x28, 0xbd,
	0xa7, 0x7c, 0xec, 0xbc, 0xf4, 0x9e, 0x89, 0xc0, 0x18, 0x2a, 0x0f, 0x96, 0xb3, 0xcd, 0x43, 0x68,
	0xe3, 0xd8, 0x26, 0xc8, 0x71, 0xcf, 0x9c, 0x31, 0x0e, 0x30, 0xbb, 0x50, 0x09, 0x79, 0x0b, 0xc7,
	0x56, 0x8e, 0x6a, 0x7c, 0x01, 0x6d, 0x71, 0x7f, 0xc2, 0xfc, 0xb6, 0x78, 0x2f, 0xf2, 0x69, 0x36,
	0x39, 0x59, 0xba, 0xa6, 0x8b, 0x18, 0x99, 0x2f, 0x00, 0x24, 0x52, 0x04, 0xc0, 0xbe, 0xd5, 0xa5,
	0x8d, 0xb8, 0x53, 0x09, 0xe4, 0xcd, 0xec, 0x2d, 0xcd, 0x63, 0x4a, 0x95, 0x3d, 0x9c, 0x68, 0xfe,
	0x6f, 0x89, 0x4b, 0xe2, 0x57, 0xf9, 0x81, 0x92, 0x8c, 0xef, 0xa1, 0xae, 0xae, 0x55, 0xac, 0x2d,
	0xdf, 0xb8, 0x16, 0x24, 0xbb, 0x58, 0xbc, 0x07, 0x6d, 0x01, 0x0c, 0x2f, 0x9d, 0x56, 0xd1, 0xa3,
	0x20, 0xa0, 0x88, 0x38, 0x4b, 0x60, 0x29, 0x1b, 0xf3, 0xac, 0xa3, 0xa5, 0x8d, 0x7f, 0xba, 0xfb,
	0xa1, 0xe7, 0x19, 0xc0, 0x8a, 0xf2, 0xc7, 0x39, 0xa5, 0xe4, 0xa9, 0x3e, 0xc9, 0x4b, 0x98, 0xbf,
	0x6c, 0xab, 0x13, 0xcf, 0x51, 0x8a, 0x8a, 0xf5, 0x3e, 0x22, 0xc5, 0xc6, 0xd0, 0x18, 0x52, 0x8e,
	0x5d, 0x15, 0x97, 0xb6, 0x72, 0x3e, 0xba, 0x25, 0x5c, 0x5c, 0xa6, 0xcf, 0xd0, 0x1a, 0x70, 0xe8,
	0x29, 0xcf, 0xbd, 0x05, 0x4b, 0x61, 0x40, 0xf0, 0xb5, 0xd1, 0x4f, 0x70, 0x98, 0xbf, 0x2b, 0xc1,
	0xda, 0xa1, 0x44, 0x39, 0x97, 0x91, 0x55, 0xa6, 0x5b, 0xb0, 0x3c, 0x71, 0xa6, 0x38, 0xb8, 0x50,
	0xc7, 0xef, 0xe4, 0xbc, 0xbf, 0xa0, 0x5b, 0x6a, 0x9e, 0xe7, 0x47, 0xba, 0x2f, 0x20, 0xdd, 0x6f,
	0xcd, 0xaa, 0xaa, 0xc6, 0x00, 0xe5, 0x7e, 0x99, 0xef, 0xc3, 0x93, 0xbd, 0x6b, 0xfc, 0xb2, 0x60,
	0x31, 0x43, 0x58, 0x3f, 0x8c, 0x5f, 0x87, 0xe4, 0x43, 0x94, 0x79, 0x9f, 0xfd, 0xfe, 0xb9, 0x04,
	0x9b, 0x69, 0xdd, 0x49, 0x79, 0xc0, 0xc1, 0x13, 0xec, 0x1e, 0xbc, 0x65, 0x28, 0xf4, 0x90, 0x67,
	0x7c, 0x06, 0x4d, 0x4c, 0x6d, 0x46, 0x9c, 0x90, 0x62, 0x86, 0x67, 0xd2, 0xee, 0x55, 0xab, 0x81,
	0xe9, 0x49, 0x4a, 0x33, 0x36, 0xa0, 0x4a, 0x93, 0x71, 0xe6, 0x0b, 0x9a, 0xd6, 0x6d, 0x9a, 0x8c,
	0xf9, 0x55, 0xa8, 0x84, 0xa4, 0x92, 0x26, 0x24, 0xf7, 0xa1, 0x2e, 0x41, 0x25, 0x2b, 0x47, 0x99,
	0x10, 0x48, 0x9c, 0xf5, 0x39, 0xc5, 0xfc, 0x7d, 0x09, 0xee, 0x0e, 0x8e, 0x67, 0xbb, 0x2a, 0xd3,
	0xfa, 0xc9, 0x15, 0xba, 0xb2, 0x03, 0x72, 0xb3, 0x6a, 0xff, 0x52, 0x82, 0xbb, 0x59, 0xfd, 0xfb,
	0x11, 0xd8, 0xea, 0x11, 0x18, 0xa7, 0x4e, 0x80, 0x3d, 0xd1, 0x70, 0x48, 0xd5, 0x58, 0x83, 0x5b,
	0x94, 0x39, 0x4c, 0xa7, 0x31, 0x72, 0x60, 0x7e, 0x0e, 0xcd, 0xbd, 0x28, 0x88, 0x48, 0x9e, 0xcd,
	0xe5, 0x04, 0xcd, 0x26, 0x06, 0xe6, 0x9f, 0x42, 0x53, 0xb4, 0x31, 0x52, 0xb6, 0xfb, 0x50, 0x67,
	0x49, 0x18, 0xa2, 0xc0, 0xce, 0xa5, 0x46, 0x20, 0x49, 0xc2, 0xcf, 0x77, 0x61, 0x7d, 0x1f, 0x4d,
	0x9c, 0x24, 0x60, 0x2f, 0x1c, 0x86, 0xde, 0x38, 0x17, 0x7a, 0xa9, 0xf9, 0x12, 0x5a, 0x32, 0xc5,
	0x78, 0x3f, 0x0b, 0xa5, 0x99, 0x47, 0x25, 0x9f, 0x79, 0x58, 0xd0, 0x39, 0x18, 0x0d, 0x44, 0x2e,
	0x9e, 0x8a, 0xdb, 0x82, 0x0e, 0xa6, 0x36, 0xc5, 0xa1, 0x1f, 0x20, 0xdb, 0x71, 0x73, 0x12, 0x5b,
	0x98, 0x8e, 0x04, 0xb9, 0xef, 0x6a, 0x99, 0xb2, 0xbc, 0x28, 0xe7, 0xcb, 0x8b, 0x1d, 0x58, 0x3d,
	0x18, 0x0d, 0xa6, 0x71, 0x44, 0x58, 0x2e, 0xa5, 0xe6, 0x6f, 0x19, 0x51, 0x1b, 0x0b, 0xba, 0x6a,
	0x97, 0x54, 0x11, 0x95, 0x7c, 0xe6, 0x6b, 0x58, 0x3d, 0x74, 0xdc, 0xc3, 0x48, 0x46, 0xc3, 0x54,
	0x15, 0x5e, 0x1f, 0x51, 0x9b, 0x32, 0xec, 0x9e, 0x5f, 0x28, 0x1d, 0xaa, 0x98, 0x8e, 0xc4, 0x98,
	0x97, 0x23, 0x14, 0xfd, 0x36, 0x41, 0xa1, 0x8b, 0xec, 0x30, 0x99, 0xea, 0x72, 0x44, 0xd3, 0x8e,
	0x92, 0xa9, 0xf9, 0x39, 0xac, 0xc8, 0xdc, 0xe5, 0xd0, 0xc9, 0x00, 0xd5, 0x81, 0xca, 0xd4, 0x71,
	0x95, 0x0a, 0xfc, 0xd3, 0xfc, 0x16, 0x56, 0x4f, 0x88, 0x33, 0x99, 0x60, 0xd7, 0x72, 0x58, 0x66,
	0xd7, 0xf9, 0xb4, 0xdf, 0x80, 0x25, 0xc2, 0x11, 0xc0, 0x37, 0x2a, 0x5b, 0xe2, 0xdb, 0x7c, 0x09,
	0x77, 0xd4, 0x52, 0x6e, 0x93, 0x1c, 0x5e, 0x36, 0xa1, 0xca, 0x10, 0x99, 0xe2, 0xd0, 0x09, 0xb4,
	0xe6, 0x7a, 0xcc, 0x53, 0x77, 0xea, 0x4c, 0xe3, 0x40, 0x8a, 0xaa, 0x5a, 0x6a, 0x64, 0xbe, 0x06,
	0xd3, 0x42, 0x1e, 0x26, 0xc8, 0x65, 0xd7, 0x38, 0x8f, 0x79, 0xb5, 0xe6, 0x00, 0x5d, 0xbe, 0x04,
	0xe8, 0xbf, 0x85, 0xcf, 0xb4, 0xd8, 0xeb, 0x7c, 0xc0, 0x95, 0x6d, 0xb5, 0x9b, 0x77, 0x38, 0xcd,
	0x76, 0xb8, 0xee, 0x29, 0xbf, 0xb7, 0xe6, 0x8f, 0x53, 0xeb, 0x5a, 0x68, 0xea, 0x90, 0xf3, 0x54,
	0x92, 0x01, 0x4b, 0x1e, 0x75, 0x75, 0x41, 0x22, 0xbe, 0xcd, 0xef, 0xa1, 0xfd, 0x3a, 0x3c, 0x0f,
	0xa3, 0x37, 0x61, 0x9e, 0xed, 0x1d, 0x9b, 0x5f, 0xa7, 0xf0, 0x89, 0x5e, 0xb5, 0xb0, 0x61, 0xdb,
	0xbb, 0xdc, 0xb0, 0xbd, 0x2a, 0x04, 0x14, 0xda, 0xb8, 0x7b, 0xd0, 0xe9, 0xd3, 0xdd, 0x0f, 0x6c,
	0x99, 0x3f, 0x83, 0xf5, 0x3e, 0xdd, 0xfd, 0xb0, 0x4e, 0x34, 0x82, 0xd5, 0xe3, 0x29, 0xc5, 0x27,
	0xc2, 0xc5, 0x64, 0x02, 0xd6, 0xe0, 0xd6, 0x24, 0x70, 0x7c, 0x7d, 0x2b, 0x72, 0x90, 0xda, 0xad,
	0x5c, 0xb4, 0x9b, 0x7c, 0xec, 0x95, 0xdc, 0x63, 0x57, 0xdd, 0xe8, 0x25, 0x61, 0xca, 0x32, 0xf6,
	0xcc, 0xbf, 0x84, 0x4f, 0xe5, 0x16, 0xc2, 0xdf, 0x8d, 0x92, 0xf1, 0xc9, 0xf0, 0xb4, 0xd0, 0xc1,
	0xcd, 0x17, 0x45, 0x4d, 0x59, 0x14, 0xad, 0xc3, 0xb2, 0x1b, 0x45, 0xe7, 0x58, 0x5f, 0x89, 0x1a,
	0x99, 0x7f, 0x06, 0x1b, 0x97, 0x64, 0x1d, 0x73, 0x4b, 0xbb, 0x51, 0xc0, 0xdf, 0x57, 0xac, 0xbe,
	0x95, 0xac, 0x74, 0x6c, 0x6e, 0xc3, 0xfa, 0xa5, 0x85, 0xc2, 0x4d, 0x5f, 0xe1, 0x9e, 0xf7, 0xa1,
	0x7b, 0x89, 0x5f, 0x41, 0xe9, 0x3d, 0x20, 0x74, 0x04, 0xad, 0x9c, 0x94, 0x93, 0xe1, 0xe9, 0xc2,
	0xb5, 0x3c, 0xd3, 0x0a, 0x66, 0xd7, 0x17, 0x93, 0x82, 0xc3, 0xdc, 0x87, 0xb5, 0x9c, 0xbc, 0xec,
	0xca, 0xbe, 0x54, 0x12, 0x24, 0x74, 0xba, 0x19, 0x74, 0x8a, 0xbb, 0x2b, 0x29, 0x2a, 0xf2, 0xf7,
	0x3e, 0xc2, 0xc8, 0x5f, 0xf4, 0x4b, 0xbd, 0x9f, 0xc1, 0x2f, 0xfd, 0x35, 0xdc, 0x1f, 0x1c, 0xf7,
	0x7e, 0x96, 0x87, 0xfd, 0x08, 0x3a, 0x7d, 0xec, 0x73, 0x43, 0x0f, 0x5e, 0x1c, 0x1f, 0x22, 0x46,
	0xb0, 0xcb, 0x81, 0x3c, 0x15, 0x5f, 0x42, 0xd1, 0x25, 0x4b, 0x8d, 0xcc, 0xef, 0xa0, 0xa5, 0x78,
	0xdf, 0x1f, 0x55, 0xdf, 0x42, 0x93, 0xaf, 0xcd, 0x27, 0xac, 0xf9, 0xeb, 0xbf, 0x0e, 0x40, 0x09,
	0xb4, 0x86, 0x3c, 0xf6, 0xea, 0x73, 0x8b, 0x90, 0xe9, 0x07, 0xd1, 0x38, 0xb5, 0x98, 0xaa, 0xd4,
	0x25, 0x4d, 0x98, 0x2c, 0xb3, 0xa9, 0xe7, 0x30, 0xe7, 0x49, 0xc1, 0xa6, 0xfb, 0x9c, 0x52, 0x64,
	0xd8, 0xd1, 0x8d, 0x86, 0x94, 0x61, 0xc7, 0xfc, 0x0d, 0x6c, 0x14, 0xb6, 0x2d, 0x98, 0xfb, 0xbb,
	0x45, 0xe6, 0xce, 0x61, 0xb8, 0xa8, 0x70, 0xd1, 0xe4, 0x7f, 0x28, 0x41, 0x5d, 0xd6, 0x47, 0xcf,
	0x85, 0x97, 0xda, 0x84, 0x6a, 0x34, 0x43, 0x24, 0x88, 0x1c, 0x4f, 0x87, 0x58, 0x3d, 0x16, 0xff,
	0x4b, 0x18, 0x73, 0xdc, 0x33, 0xf5, 0xbf, 0xa4, 0x6a, 0xa5, 0x63, 0x3e, 0x87, 0xde, 0x32, 0x44,
	0x78, 0x68, 0xae, 0xc8, 0x39, 0x3d, 0x16, 0x5d, 0x97, 0x31, 0x51, 0xed, 0x11, 0xfe, 0xc9, 0x2f,
	0x55, 0xf6, 0x44, 0x44, 0xa7, 0xa0, 0x6a, 0xa9, 0x11, 0xf7, 0x7c, 0xaa, 0x1d, 0x50, 0xb5, 0xca,
	0xb3, 0x9e, 0xf9, 0x4f, 0xa2, 0xa0, 0x1e, 0xbc, 0x38, 0x7e, 0xae, 0x5d, 0xa8, 0x17, 0xbd, 0x09,
	0x95, 0x62, 0xe2, 0xdb, 0xb8, 0x07, 0x10, 0x46, 0x76, 0x12, 0x8a, 0x1e, 0xbd, 0x52, 0xab, 0x16,
	0x46, 0xaf, 0x25, 0x81, 0x3f, 0x45, 0x0d, 0xe7, 0xec, 0x41, 0x55, 0xad, 0x86, 0x02, 0xb4, 0xc4,
	0xfc, 0xe7, 0xd0, 0x8a, 0x49, 0x14, 0x3b, 0xbe, 0xc3, 0x0b, 0x6e, 0x4a, 0x1d, 0xa5, 0x6b, 0x33,
	0xa5, 0x1e, 0x51, 0xea, 0x98, 0x4f, 0xa1, 0x36, 0xa4, 0x23, 0x62, 0x39, 0xa1, 0x2f, 0x90, 0x35,
	0x46, 0xd9, 0x8f, 0x60, 0x39, 0xe0, 0x47, 0x45, 0xa1, 0x6e, 0xc4, 0xf0, 0x4f, 0x5e, 0xb5, 0x74,
	0xf8, 0xaa, 0x3d, 0x27, 0x96, 0x7d, 0x09, 0x8c, 0xc4, 0x86, 0x38, 0x9e, 0xed, 0xda, 0x34, 0x89,
	0x79, 0xaa, 0x86, 0xb4, 0xad, 0x9b, 0x9c, 0x3a, 0xd2, 0x44, 0xc5, 0xd6, 0xcb, 0xb1, 0x95, 0x53,
	0xb6, 0x5e, 0xc6, 0xf6, 0x18, 0x96, 0x09, 0xd7, 0x49, 0x57, 0x51, 0xab, 0xf9, 0x52, 0x53, 0xe9,
	0x6b, 0x29, 0x16, 0xf3, 0x57, 0xbc, 0x7a, 0x1e, 0x11, 0xd1, 0x44, 0x7a, 0x16, 0x44, 0xee, 0x79,
	0x6e, 0x79, 0xe9, 0xe6, 0xe5, 0xff, 0x58, 0x81, 0xf6, 0x30, 0xc3, 0x9e, 0xa8, 0xa1, 0x0d, 0x58,
	0x0a, 0x9d, 0x29, 0x52, 0x9e, 0x44, 0x7c, 0x1b, 0x8f, 0x75, 0x0c, 0x94, 0x35, 0xed, 0x9d, 0xf9,
	0x6a, 0x5c, 0x5c, 0xa8, 0x0e, 0x8d, 0x5f, 0x40, 0x5b, 0x5e, 0x52, 0xd6, 0x28, 0x93, 0x7e, 0x4f,
	0xde, 0x9d, 0x6e, 0x95, 0x19, 0x8f, 0xc1, 0x98, 0xe3, 0xb3, 0x67, 0x3d, 0xd5, 0x9b, 0x6a, 0x17,
	0x58, 0x4f, 0x7b, 0x32, 0xcf, 0xc5, 0x54, 0x74, 0xef, 0x04, 0xcc, 0x1a, 0x3c, 0xcf, 0xc5, 0xb4,
	0x4f, 0x90, 0x23, 0x1a, 0xbd, 0x22, 0xe1, 0x17, 0x60, 0x6b, 0x58, 0x6a, 0x64, 0xec, 0x41, 0x9b,
	0x12, 0xdb, 0xcd, 0xdd, 0x95, 0x68, 0xf3, 0xcf, 0xb5, 0x13, 0x8a, 0xb7, 0x69, 0xb5, 0x68, 0xf1,
	0x76, 0x3f, 0x83, 0x26, 0x25, 0xb6, 0x13, 0xf8, 0x11, 0xc1, 0xec, 0x6c, 0x4a, 0xbb, 0x55, 0xb1,
	0x47, 0x83, 0x92, 0x7e, 0x4a, 0x33, 0xfe, 0x1c, 0x5a, 0x94, 0xa8, 0xfe, 0xde, 0x98, 0xdf, 0x43,
	0xb7, 0x26, 0x36, 0xea, 0x16, 0x37, 0xca, 0xee, 0x89, 0xaf, 0xcf, 0x46, 0xe6, 0x1f, 0x96, 0x0a,
	0x17, 0x31, 0xc4, 0xe1, 0xf9, 0xc2, 0x8b, 0x58, 0x60, 0xdb, 0xf2, 0xbb, 0xdb, 0xb6, 0xb2, 0xd8,
	0xb6, 0x5b, 0xd0, 0x51, 0xed, 0xa9, 0x4c, 0xaa, 0xbc, 0x86, 0x96, 0xa4, 0xa7, 0x62, 0xbf, 0x82,
	0xd5, 0x79, 0x4e, 0x3b, 0x6d, 0x10, 0x76, 0x8a, 0xcc, 0xa7, 0x3d, 0xee, 0x08, 0x85, 0x17, 0xb5,
	0x7d, 0x12, 0x25, 0xb1, 0xb8, 0x9c, 0xa6, 0x05, 0x82, 0xf4, 0x82, 0x53, 0x8c, 0x47, 0xb0, 0xe2,
	0xc9, 0x1a, 0xce, 0x66, 0xc8, 0x56, 0x91, 0x41, 0xfe, 0x89, 0x69, 0xab, 0x89, 0x13, 0xa4, 0x42,
	0xc7, 0x3d, 0x00, 0xec, 0xc7, 0x9a, 0xa9, 0x2a, 0x7f, 0x02, 0x60, 0x3f, 0xce, 0x22, 0x8b, 0xc2,
	0x40, 0xad, 0x80, 0x81, 0x4f, 0xa0, 0x36, 0x76, 0x42, 0xef, 0x0d, 0xf6, 0xd8, 0x59, 0x17, 0x44,
	0x5d, 0x92, 0x11, 0x8c, 0x27, 0xb0, 0x46, 0x10, 0x45, 0x64, 0xe6, 0x8c, 0x03, 0x64, 0x67, 0x8c,
	0x75, 0xc1, 0xb8, 0x9a, 0xcd, 0x3d, 0xcb, 0x2f, 0x49, 0x42, 0x39, 0x81, 0xbc, 0xdc, 0x92, 0xc6,
	0x83, 0x0a, 0x5f, 0x92, 0xcd, 0x65, 0x4b, 0xb6, 0xa0, 0xc3, 0x21, 0xe4, 0xfd, 0x9d, 0xe3, 0xa2,
	0xd0, 0xbd, 0xb0, 0x29, 0xf6, 0xba, 0x4d, 0x71, 0x80, 0x16, 0x25, 0x7d, 0x4d, 0x1e, 0x61, 0x59,
	0x43, 0x93, 0xc0, 0xa7, 0xdd, 0x96, 0xf8, 0xb1, 0x23, 0x07, 0xe6, 0x3f, 0x94, 0x60, 0x25, 0x87,
	0x0e, 0xd5, 0x91, 0x7a, 0x02, 0xfc, 0xf8, 0x76, 0x96, 0x9c, 0xd6, 0x8b, 0x6d, 0x29, 0xed, 0x68,
	0xad, 0x2a, 0xf6, 0x63, 0xe9, 0x72, 0x33, 0x23, 0x95, 0x0b, 0x46, 0x32, 0x05, 0xc6, 0x55, 0xeb,
	0x8c, 0xa6, 0xcd, 0xf1, 0x3a, 0x55, 0xdd, 0xaf, 0x11, 0xf6, 0xcc, 0x7f, 0x17, 0xb1, 0x25, 0x8b,
	0x53, 0x5f, 0xc1, 0x52, 0xae, 0x41, 0xb7, 0x91, 0xdf, 0xb9, 0xe0, 0x50, 0x2c, 0xc1, 0xc6, 0xd9,
	0x03, 0x1c, 0x9e, 0x2b, 0x0f, 0xb2, 0x98, 0x9d, 0xc3, 0xde, 0x12, 0x6c, 0xc6, 0xd3, 0xc2, 0x3f,
	0x9d, 0xfa, 0xce, 0xdd, 0x85, 0x0b, 0xd4, 0x9f, 0x4a, 0xfd, 0x8b, 0xca, 0x82, 0x8e, 0x4a, 0x1f,
	0x7e, 0x64, 0xfa, 0xbe, 0xa0, 0xfe, 0xff, 0xef, 0x32, 0xac, 0x8f, 0xac, 0x59, 0x6f, 0xc4, 0x48,
	0xe2, 0xb2, 0x84, 0xa0, 0x51, 0x32, 0x96, 0xf9, 0xaf, 0xf1, 0xa5, 0x7e, 0x64, 0xe2, 0xc5, 0xdb,
	0x01, 0x0a, 0x7d, 0x76, 0xa6, 0xf6, 0xe9, 0x04, 0xe9, 0xe3, 0x1e, 0x0a, 0x3a, 0xc7, 0x7a, 0xd6,
	0xd6, 0xd4, 0xcc, 0x72, 0xff, 0x76, 0xda, 0xc1, 0x54, 0xbc, 0x0f, 0xa1, 0x3d, 0x49, 0x42, 0x51,
	0x2e, 0x6b, 0x4e, 0x79, 0x23, 0x2d, 0x4d, 0xce, 0x18, 0x1d, 0xe2, 0x27, 0xbc, 0x08, 0xd2, 0x8c,
	0x32, 0x8b, 0x6c, 0x69, 0xb2, 0x62, 0x7c, 0x02, 0x6b, 0x22, 0x83, 0x8d, 0x23, 0x9e, 0xb0, 0x66,
	0x62, 0xe5, 0x1f, 0xd3, 0xd5, 0xc2, 0xdc, 0x55, 0x4b, 0xd4, 0xcf, 0xb4, 0xe5, 0x05, 0x4b, 0x5e,
	0xc9, 0x3f, 0x6b, 0x9f, 0x43, 0x43, 0xd8, 0x6a, 0xb0, 0x2f, 0xf1, 0x76, 0x07, 0x96, 0xb9, 0xbd,
	0xed, 0x27, 0x2a, 0x22, 0x0a, 0xeb, 0x3f, 0x31, 0x9f, 0xc0, 0x6d, 0xce, 0xc6, 0x6d, 0xf8, 0x05,
	0x54, 0x58, 0x30, 0xbb, 0x36, 0x55, 0xe3, 0x0c, 0xe6, 0x7f, 0x95, 0xe1, 0x0e, 0x5f, 0x33, 0x08,
	0x27, 0x11, 0x99, 0x8a, 0x3a, 0x49, 0xdd, 0x42, 0x07, 0x2a, 0x54, 0xfd, 0x52, 0x69, 0x58, 0xfc,
	0xd3, 0xf8, 0xb2, 0x18, 0xad, 0xd6, 0x33, 0xe8, 0xe4, 0x95, 0xd3, 0x50, 0x78, 0x0c, 0x2b, 0x28,
	0xf4, 0xe2, 0x08, 0x87, 0xcc, 0x1e, 0xa3, 0x33, 0x67, 0x86, 0x55, 0x87, 0xbd, 0x69, 0x75, 0xf4,
	0xc4, 0x33, 0x45, 0x37, 0x7e, 0x80, 0x06, 0x4f, 0xf3, 0x45, 0xaa, 0xcf, 0x53, 0xcc, 0x25, 0xa1,
	0xf7, 0xd7, 0xc5, 0x1d, 0x2e, 0xe9, 0xb8, 0xad, 0x30, 0x13, 0xcc, 0xe8, 0x41, 0xc8, 0xc8, 0x85,
	0x05, 0x34, 0x25, 0x6c, 0x1e, 0x43, 0x7b, 0x6e, 0x7a, 0x41, 0x01, 0xf8, 0x30, 0x9f, 0xf9, 0xd6,
	0x77, 0x56, 0x8a, 0x1b, 0xf2, 0x5a, 0x46, 0xce, 0x7f, 0x57, 0xfe, 0x65, 0xc9, 0xfc, 0x8f, 0x12,
	0x74, 0x38, 0x79, 0xf8, 0x74, 0x84, 0xc8, 0x0c, 0xbb, 0x88, 0x9b, 0xe9, 0x99, 0x2a, 0x50, 0xb2,
	0xc4, 0xf8, 0x61, 0x51, 0x48, 0x9e, 0x7b, 0xbb, 0xa0, 0xad, 0xa8, 0x64, 0xb8, 0xaa, 0x87, 0xd0,
	0xf8, 0x29, 0xf5, 0xfc, 0x06, 0x6a, 0xca, 0xbd, 0x0c, 0xf6, 0xdf, 0x3d, 0x69, 0x7f, 0x44, 0xc5,
	0x0f, 0x1e, 0xd5, 0x73, 0x37, 0x56, 0xa1, 0x3d, 0x1c, 0xd9, 0x7c, 0x68, 0xbf, 0x3e, 0x7a, 0x79,
	0xf4, 0xea, 0x37, 0x47, 0x9d, 0x3f, 0x32, 0x3a, 0xd0, 0xd0, 0xc4, 0xa3, 0x57, 0xfb, 0x07, 0x9d,
	0x52, 0x9e, 0x32, 0x1c, 0x1c, 0xbd, 0xec, 0x94, 0x8d, 0x3b, 0xb0, 0xa2, 0x29, 0xc7, 0xd6, 0xc1,
	0xf3, 0xc1, 0x5f, 0xd9, 0xa7, 0xbb, 0x9d, 0xca, 0x22, 0x72, 0xaf, 0xb3, 0x34, 0x5e, 0x16, 0x8a,
	0x3c, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x60, 0xbf, 0x64, 0x89, 0x28, 0x00, 0x00,
}
