// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.20.0
// source: api/mesh/v1alpha1/tag_route.proto

package v1alpha1

import (
	_ "github.com/apache/dubbo-kubernetes/api/mesh"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type TagRoute struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Priority      int32  `protobuf:"varint,1,opt,name=priority,proto3" json:"priority,omitempty"`
	Enabled       bool   `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
	Runtime       bool   `protobuf:"varint,3,opt,name=runtime,proto3" json:"runtime,omitempty"`
	Key           string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
	ConfigVersion string `protobuf:"bytes,5,opt,name=configVersion,proto3" json:"configVersion,omitempty"`
	Force         bool   `protobuf:"varint,6,opt,name=force,proto3" json:"force,omitempty"`
	Tags          []*Tag `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
}

func (x *TagRoute) Reset() {
	*x = TagRoute{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TagRoute) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TagRoute) ProtoMessage() {}

func (x *TagRoute) ProtoReflect() protoreflect.Message {
	mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TagRoute.ProtoReflect.Descriptor instead.
func (*TagRoute) Descriptor() ([]byte, []int) {
	return file_api_mesh_v1alpha1_tag_route_proto_rawDescGZIP(), []int{0}
}

func (x *TagRoute) GetPriority() int32 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *TagRoute) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *TagRoute) GetRuntime() bool {
	if x != nil {
		return x.Runtime
	}
	return false
}

func (x *TagRoute) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *TagRoute) GetConfigVersion() string {
	if x != nil {
		return x.ConfigVersion
	}
	return ""
}

func (x *TagRoute) GetForce() bool {
	if x != nil {
		return x.Force
	}
	return false
}

func (x *TagRoute) GetTags() []*Tag {
	if x != nil {
		return x.Tags
	}
	return nil
}

type Tag struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name      string        `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Addresses []string      `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"`
	Match     []*ParamMatch `protobuf:"bytes,3,rep,name=match,proto3" json:"match,omitempty"`
}

func (x *Tag) Reset() {
	*x = Tag{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Tag) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Tag) ProtoMessage() {}

func (x *Tag) ProtoReflect() protoreflect.Message {
	mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Tag.ProtoReflect.Descriptor instead.
func (*Tag) Descriptor() ([]byte, []int) {
	return file_api_mesh_v1alpha1_tag_route_proto_rawDescGZIP(), []int{1}
}

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

func (x *Tag) GetAddresses() []string {
	if x != nil {
		return x.Addresses
	}
	return nil
}

func (x *Tag) GetMatch() []*ParamMatch {
	if x != nil {
		return x.Match
	}
	return nil
}

type StringMatch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Exact    string `protobuf:"bytes,1,opt,name=exact,proto3" json:"exact,omitempty"`
	Prefix   string `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
	Regex    string `protobuf:"bytes,3,opt,name=regex,proto3" json:"regex,omitempty"`
	Noempty  string `protobuf:"bytes,4,opt,name=noempty,proto3" json:"noempty,omitempty"`
	Empty    string `protobuf:"bytes,5,opt,name=empty,proto3" json:"empty,omitempty"`
	Wildcard string `protobuf:"bytes,6,opt,name=wildcard,proto3" json:"wildcard,omitempty"`
}

func (x *StringMatch) Reset() {
	*x = StringMatch{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StringMatch) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StringMatch) ProtoMessage() {}

func (x *StringMatch) ProtoReflect() protoreflect.Message {
	mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StringMatch.ProtoReflect.Descriptor instead.
func (*StringMatch) Descriptor() ([]byte, []int) {
	return file_api_mesh_v1alpha1_tag_route_proto_rawDescGZIP(), []int{2}
}

func (x *StringMatch) GetExact() string {
	if x != nil {
		return x.Exact
	}
	return ""
}

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

func (x *StringMatch) GetRegex() string {
	if x != nil {
		return x.Regex
	}
	return ""
}

func (x *StringMatch) GetNoempty() string {
	if x != nil {
		return x.Noempty
	}
	return ""
}

func (x *StringMatch) GetEmpty() string {
	if x != nil {
		return x.Empty
	}
	return ""
}

func (x *StringMatch) GetWildcard() string {
	if x != nil {
		return x.Wildcard
	}
	return ""
}

type ParamMatch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key   string       `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value *StringMatch `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *ParamMatch) Reset() {
	*x = ParamMatch{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ParamMatch) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParamMatch) ProtoMessage() {}

func (x *ParamMatch) ProtoReflect() protoreflect.Message {
	mi := &file_api_mesh_v1alpha1_tag_route_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParamMatch.ProtoReflect.Descriptor instead.
func (*ParamMatch) Descriptor() ([]byte, []int) {
	return file_api_mesh_v1alpha1_tag_route_proto_rawDescGZIP(), []int{3}
}

func (x *ParamMatch) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *ParamMatch) GetValue() *StringMatch {
	if x != nil {
		return x.Value
	}
	return nil
}

var File_api_mesh_v1alpha1_tag_route_proto protoreflect.FileDescriptor

var file_api_mesh_v1alpha1_tag_route_proto_rawDesc = []byte{
	0x0a, 0x21, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
	0x68, 0x61, 0x31, 0x2f, 0x74, 0x61, 0x67, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x13, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e,
	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x16, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65,
	0x73, 0x68, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0xc3, 0x02, 0x0a, 0x08, 0x54, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
	0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x74,
	0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x75, 0x62, 0x62,
	0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
	0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x3a, 0x6b, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
	0x12, 0x0a, 0x10, 0x54, 0x61, 0x67, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0a, 0x12, 0x08, 0x54, 0x61, 0x67, 0x52, 0x6f,
	0x75, 0x74, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x06, 0x22, 0x04, 0x6d, 0x65, 0x73, 0x68, 0xaa,
	0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x10, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0c, 0x3a,
	0x0a, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x72, 0x6f, 0x75, 0x74, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
	0x0d, 0x3a, 0x0b, 0x12, 0x09, 0x74, 0x61, 0x67, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0xaa, 0x8c,
	0x89, 0xa6, 0x01, 0x02, 0x68, 0x01, 0x22, 0x6e, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12,
	0x35, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
	0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
	0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52,
	0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72,
	0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x6f,
	0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x6f, 0x65,
	0x6d, 0x70, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x69,
	0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x69,
	0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4d,
	0x61, 0x74, 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65,
	0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x36,
	0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61,
	0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e,
	0x65, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31,
	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_api_mesh_v1alpha1_tag_route_proto_rawDescOnce sync.Once
	file_api_mesh_v1alpha1_tag_route_proto_rawDescData = file_api_mesh_v1alpha1_tag_route_proto_rawDesc
)

func file_api_mesh_v1alpha1_tag_route_proto_rawDescGZIP() []byte {
	file_api_mesh_v1alpha1_tag_route_proto_rawDescOnce.Do(func() {
		file_api_mesh_v1alpha1_tag_route_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_mesh_v1alpha1_tag_route_proto_rawDescData)
	})
	return file_api_mesh_v1alpha1_tag_route_proto_rawDescData
}

var file_api_mesh_v1alpha1_tag_route_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_api_mesh_v1alpha1_tag_route_proto_goTypes = []interface{}{
	(*TagRoute)(nil),    // 0: dubbo.mesh.v1alpha1.TagRoute
	(*Tag)(nil),         // 1: dubbo.mesh.v1alpha1.Tag
	(*StringMatch)(nil), // 2: dubbo.mesh.v1alpha1.StringMatch
	(*ParamMatch)(nil),  // 3: dubbo.mesh.v1alpha1.ParamMatch
}
var file_api_mesh_v1alpha1_tag_route_proto_depIdxs = []int32{
	1, // 0: dubbo.mesh.v1alpha1.TagRoute.tags:type_name -> dubbo.mesh.v1alpha1.Tag
	3, // 1: dubbo.mesh.v1alpha1.Tag.match:type_name -> dubbo.mesh.v1alpha1.ParamMatch
	2, // 2: dubbo.mesh.v1alpha1.ParamMatch.value:type_name -> dubbo.mesh.v1alpha1.StringMatch
	3, // [3:3] is the sub-list for method output_type
	3, // [3:3] is the sub-list for method input_type
	3, // [3:3] is the sub-list for extension type_name
	3, // [3:3] is the sub-list for extension extendee
	0, // [0:3] is the sub-list for field type_name
}

func init() { file_api_mesh_v1alpha1_tag_route_proto_init() }
func file_api_mesh_v1alpha1_tag_route_proto_init() {
	if File_api_mesh_v1alpha1_tag_route_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TagRoute); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Tag); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StringMatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_mesh_v1alpha1_tag_route_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ParamMatch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_api_mesh_v1alpha1_tag_route_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   4,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_api_mesh_v1alpha1_tag_route_proto_goTypes,
		DependencyIndexes: file_api_mesh_v1alpha1_tag_route_proto_depIdxs,
		MessageInfos:      file_api_mesh_v1alpha1_tag_route_proto_msgTypes,
	}.Build()
	File_api_mesh_v1alpha1_tag_route_proto = out.File
	file_api_mesh_v1alpha1_tag_route_proto_rawDesc = nil
	file_api_mesh_v1alpha1_tag_route_proto_goTypes = nil
	file_api_mesh_v1alpha1_tag_route_proto_depIdxs = nil
}
