// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v6.33.5
// source: common/geodata/geodat.proto

package geodata

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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 of domain value.
type Domain_Type int32

const (
	// The value is used as a sub string.
	Domain_Substr Domain_Type = 0
	// The value is used as a regular expression.
	Domain_Regex Domain_Type = 1
	// The value is a domain.
	Domain_Domain Domain_Type = 2
	// The value is a full domain.
	Domain_Full Domain_Type = 3
)

// Enum value maps for Domain_Type.
var (
	Domain_Type_name = map[int32]string{
		0: "Substr",
		1: "Regex",
		2: "Domain",
		3: "Full",
	}
	Domain_Type_value = map[string]int32{
		"Substr": 0,
		"Regex":  1,
		"Domain": 2,
		"Full":   3,
	}
)

func (x Domain_Type) Enum() *Domain_Type {
	p := new(Domain_Type)
	*p = x
	return p
}

func (x Domain_Type) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Domain_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_common_geodata_geodat_proto_enumTypes[0].Descriptor()
}

func (Domain_Type) Type() protoreflect.EnumType {
	return &file_common_geodata_geodat_proto_enumTypes[0]
}

func (x Domain_Type) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Domain_Type.Descriptor instead.
func (Domain_Type) EnumDescriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{0, 0}
}

type Domain struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Domain matching type.
	Type Domain_Type `protobuf:"varint,1,opt,name=type,proto3,enum=xray.common.geodata.Domain_Type" json:"type,omitempty"`
	// Domain value.
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// Attributes of this domain. May be used for filtering.
	Attribute     []*Domain_Attribute `protobuf:"bytes,3,rep,name=attribute,proto3" json:"attribute,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Domain) Reset() {
	*x = Domain{}
	mi := &file_common_geodata_geodat_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Domain) ProtoMessage() {}

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

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

func (x *Domain) GetType() Domain_Type {
	if x != nil {
		return x.Type
	}
	return Domain_Substr
}

func (x *Domain) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *Domain) GetAttribute() []*Domain_Attribute {
	if x != nil {
		return x.Attribute
	}
	return nil
}

type GeoSite struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          string                 `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
	Domain        []*Domain              `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GeoSite) Reset() {
	*x = GeoSite{}
	mi := &file_common_geodata_geodat_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GeoSite) ProtoMessage() {}

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

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

func (x *GeoSite) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *GeoSite) GetDomain() []*Domain {
	if x != nil {
		return x.Domain
	}
	return nil
}

type GeoSiteList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Entry         []*GeoSite             `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GeoSiteList) Reset() {
	*x = GeoSiteList{}
	mi := &file_common_geodata_geodat_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GeoSiteList) ProtoMessage() {}

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

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

func (x *GeoSiteList) GetEntry() []*GeoSite {
	if x != nil {
		return x.Entry
	}
	return nil
}

type GeoSiteRule struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	File          string                 `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
	Code          string                 `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
	Attrs         string                 `protobuf:"bytes,3,opt,name=attrs,proto3" json:"attrs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GeoSiteRule) Reset() {
	*x = GeoSiteRule{}
	mi := &file_common_geodata_geodat_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GeoSiteRule) ProtoMessage() {}

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

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

func (x *GeoSiteRule) GetFile() string {
	if x != nil {
		return x.File
	}
	return ""
}

func (x *GeoSiteRule) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *GeoSiteRule) GetAttrs() string {
	if x != nil {
		return x.Attrs
	}
	return ""
}

type DomainRule struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Value:
	//
	//	*DomainRule_Geosite
	//	*DomainRule_Custom
	Value         isDomainRule_Value `protobuf_oneof:"value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DomainRule) Reset() {
	*x = DomainRule{}
	mi := &file_common_geodata_geodat_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DomainRule) ProtoMessage() {}

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

// Deprecated: Use DomainRule.ProtoReflect.Descriptor instead.
func (*DomainRule) Descriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{4}
}

func (x *DomainRule) GetValue() isDomainRule_Value {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *DomainRule) GetGeosite() *GeoSiteRule {
	if x != nil {
		if x, ok := x.Value.(*DomainRule_Geosite); ok {
			return x.Geosite
		}
	}
	return nil
}

func (x *DomainRule) GetCustom() *Domain {
	if x != nil {
		if x, ok := x.Value.(*DomainRule_Custom); ok {
			return x.Custom
		}
	}
	return nil
}

type isDomainRule_Value interface {
	isDomainRule_Value()
}

type DomainRule_Geosite struct {
	Geosite *GeoSiteRule `protobuf:"bytes,1,opt,name=geosite,proto3,oneof"`
}

type DomainRule_Custom struct {
	Custom *Domain `protobuf:"bytes,2,opt,name=custom,proto3,oneof"`
}

func (*DomainRule_Geosite) isDomainRule_Value() {}

func (*DomainRule_Custom) isDomainRule_Value() {}

type CIDR struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// IP address, should be either 4 or 16 bytes.
	Ip []byte `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"`
	// Number of leading ones in the network mask.
	Prefix        uint32 `protobuf:"varint,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CIDR) Reset() {
	*x = CIDR{}
	mi := &file_common_geodata_geodat_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CIDR) ProtoMessage() {}

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

// Deprecated: Use CIDR.ProtoReflect.Descriptor instead.
func (*CIDR) Descriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{5}
}

func (x *CIDR) GetIp() []byte {
	if x != nil {
		return x.Ip
	}
	return nil
}

func (x *CIDR) GetPrefix() uint32 {
	if x != nil {
		return x.Prefix
	}
	return 0
}

type CIDRRule struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Cidr          *CIDR                  `protobuf:"bytes,1,opt,name=cidr,proto3" json:"cidr,omitempty"`
	ReverseMatch  bool                   `protobuf:"varint,2,opt,name=reverse_match,json=reverseMatch,proto3" json:"reverse_match,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CIDRRule) Reset() {
	*x = CIDRRule{}
	mi := &file_common_geodata_geodat_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CIDRRule) ProtoMessage() {}

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

// Deprecated: Use CIDRRule.ProtoReflect.Descriptor instead.
func (*CIDRRule) Descriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{6}
}

func (x *CIDRRule) GetCidr() *CIDR {
	if x != nil {
		return x.Cidr
	}
	return nil
}

func (x *CIDRRule) GetReverseMatch() bool {
	if x != nil {
		return x.ReverseMatch
	}
	return false
}

type GeoIP struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          string                 `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
	Cidr          []*CIDR                `protobuf:"bytes,2,rep,name=cidr,proto3" json:"cidr,omitempty"`
	ReverseMatch  bool                   `protobuf:"varint,3,opt,name=reverse_match,json=reverseMatch,proto3" json:"reverse_match,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GeoIP) Reset() {
	*x = GeoIP{}
	mi := &file_common_geodata_geodat_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GeoIP) ProtoMessage() {}

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

// Deprecated: Use GeoIP.ProtoReflect.Descriptor instead.
func (*GeoIP) Descriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{7}
}

func (x *GeoIP) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *GeoIP) GetCidr() []*CIDR {
	if x != nil {
		return x.Cidr
	}
	return nil
}

func (x *GeoIP) GetReverseMatch() bool {
	if x != nil {
		return x.ReverseMatch
	}
	return false
}

type GeoIPList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Entry         []*GeoIP               `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GeoIPList) Reset() {
	*x = GeoIPList{}
	mi := &file_common_geodata_geodat_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GeoIPList) ProtoMessage() {}

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

// Deprecated: Use GeoIPList.ProtoReflect.Descriptor instead.
func (*GeoIPList) Descriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{8}
}

func (x *GeoIPList) GetEntry() []*GeoIP {
	if x != nil {
		return x.Entry
	}
	return nil
}

type GeoIPRule struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	File          string                 `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
	Code          string                 `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
	ReverseMatch  bool                   `protobuf:"varint,3,opt,name=reverse_match,json=reverseMatch,proto3" json:"reverse_match,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GeoIPRule) Reset() {
	*x = GeoIPRule{}
	mi := &file_common_geodata_geodat_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GeoIPRule) ProtoMessage() {}

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

// Deprecated: Use GeoIPRule.ProtoReflect.Descriptor instead.
func (*GeoIPRule) Descriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{9}
}

func (x *GeoIPRule) GetFile() string {
	if x != nil {
		return x.File
	}
	return ""
}

func (x *GeoIPRule) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *GeoIPRule) GetReverseMatch() bool {
	if x != nil {
		return x.ReverseMatch
	}
	return false
}

type IPRule struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Value:
	//
	//	*IPRule_Geoip
	//	*IPRule_Custom
	Value         isIPRule_Value `protobuf_oneof:"value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IPRule) Reset() {
	*x = IPRule{}
	mi := &file_common_geodata_geodat_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*IPRule) ProtoMessage() {}

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

// Deprecated: Use IPRule.ProtoReflect.Descriptor instead.
func (*IPRule) Descriptor() ([]byte, []int) {
	return file_common_geodata_geodat_proto_rawDescGZIP(), []int{10}
}

func (x *IPRule) GetValue() isIPRule_Value {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *IPRule) GetGeoip() *GeoIPRule {
	if x != nil {
		if x, ok := x.Value.(*IPRule_Geoip); ok {
			return x.Geoip
		}
	}
	return nil
}

func (x *IPRule) GetCustom() *CIDRRule {
	if x != nil {
		if x, ok := x.Value.(*IPRule_Custom); ok {
			return x.Custom
		}
	}
	return nil
}

type isIPRule_Value interface {
	isIPRule_Value()
}

type IPRule_Geoip struct {
	Geoip *GeoIPRule `protobuf:"bytes,1,opt,name=geoip,proto3,oneof"`
}

type IPRule_Custom struct {
	Custom *CIDRRule `protobuf:"bytes,2,opt,name=custom,proto3,oneof"`
}

func (*IPRule_Geoip) isIPRule_Value() {}

func (*IPRule_Custom) isIPRule_Value() {}

type Domain_Attribute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Key   string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// Types that are valid to be assigned to TypedValue:
	//
	//	*Domain_Attribute_BoolValue
	//	*Domain_Attribute_IntValue
	TypedValue    isDomain_Attribute_TypedValue `protobuf_oneof:"typed_value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Domain_Attribute) Reset() {
	*x = Domain_Attribute{}
	mi := &file_common_geodata_geodat_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Domain_Attribute) ProtoMessage() {}

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

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

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

func (x *Domain_Attribute) GetTypedValue() isDomain_Attribute_TypedValue {
	if x != nil {
		return x.TypedValue
	}
	return nil
}

func (x *Domain_Attribute) GetBoolValue() bool {
	if x != nil {
		if x, ok := x.TypedValue.(*Domain_Attribute_BoolValue); ok {
			return x.BoolValue
		}
	}
	return false
}

func (x *Domain_Attribute) GetIntValue() int64 {
	if x != nil {
		if x, ok := x.TypedValue.(*Domain_Attribute_IntValue); ok {
			return x.IntValue
		}
	}
	return 0
}

type isDomain_Attribute_TypedValue interface {
	isDomain_Attribute_TypedValue()
}

type Domain_Attribute_BoolValue struct {
	BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof"`
}

type Domain_Attribute_IntValue struct {
	IntValue int64 `protobuf:"varint,3,opt,name=int_value,json=intValue,proto3,oneof"`
}

func (*Domain_Attribute_BoolValue) isDomain_Attribute_TypedValue() {}

func (*Domain_Attribute_IntValue) isDomain_Attribute_TypedValue() {}

var File_common_geodata_geodat_proto protoreflect.FileDescriptor

const file_common_geodata_geodat_proto_rawDesc = "" +
	"\n" +
	"\x1bcommon/geodata/geodat.proto\x12\x13xray.common.geodata\"\xbc\x02\n" +
	"\x06Domain\x124\n" +
	"\x04type\x18\x01 \x01(\x0e2 .xray.common.geodata.Domain.TypeR\x04type\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value\x12C\n" +
	"\tattribute\x18\x03 \x03(\v2%.xray.common.geodata.Domain.AttributeR\tattribute\x1al\n" +
	"\tAttribute\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x1f\n" +
	"\n" +
	"bool_value\x18\x02 \x01(\bH\x00R\tboolValue\x12\x1d\n" +
	"\tint_value\x18\x03 \x01(\x03H\x00R\bintValueB\r\n" +
	"\vtyped_value\"3\n" +
	"\x04Type\x12\n" +
	"\n" +
	"\x06Substr\x10\x00\x12\t\n" +
	"\x05Regex\x10\x01\x12\n" +
	"\n" +
	"\x06Domain\x10\x02\x12\b\n" +
	"\x04Full\x10\x03\"R\n" +
	"\aGeoSite\x12\x12\n" +
	"\x04code\x18\x01 \x01(\tR\x04code\x123\n" +
	"\x06domain\x18\x02 \x03(\v2\x1b.xray.common.geodata.DomainR\x06domain\"A\n" +
	"\vGeoSiteList\x122\n" +
	"\x05entry\x18\x01 \x03(\v2\x1c.xray.common.geodata.GeoSiteR\x05entry\"K\n" +
	"\vGeoSiteRule\x12\x12\n" +
	"\x04file\x18\x01 \x01(\tR\x04file\x12\x12\n" +
	"\x04code\x18\x02 \x01(\tR\x04code\x12\x14\n" +
	"\x05attrs\x18\x03 \x01(\tR\x05attrs\"\x8a\x01\n" +
	"\n" +
	"DomainRule\x12<\n" +
	"\ageosite\x18\x01 \x01(\v2 .xray.common.geodata.GeoSiteRuleH\x00R\ageosite\x125\n" +
	"\x06custom\x18\x02 \x01(\v2\x1b.xray.common.geodata.DomainH\x00R\x06customB\a\n" +
	"\x05value\".\n" +
	"\x04CIDR\x12\x0e\n" +
	"\x02ip\x18\x01 \x01(\fR\x02ip\x12\x16\n" +
	"\x06prefix\x18\x02 \x01(\rR\x06prefix\"^\n" +
	"\bCIDRRule\x12-\n" +
	"\x04cidr\x18\x01 \x01(\v2\x19.xray.common.geodata.CIDRR\x04cidr\x12#\n" +
	"\rreverse_match\x18\x02 \x01(\bR\freverseMatch\"o\n" +
	"\x05GeoIP\x12\x12\n" +
	"\x04code\x18\x01 \x01(\tR\x04code\x12-\n" +
	"\x04cidr\x18\x02 \x03(\v2\x19.xray.common.geodata.CIDRR\x04cidr\x12#\n" +
	"\rreverse_match\x18\x03 \x01(\bR\freverseMatch\"=\n" +
	"\tGeoIPList\x120\n" +
	"\x05entry\x18\x01 \x03(\v2\x1a.xray.common.geodata.GeoIPR\x05entry\"X\n" +
	"\tGeoIPRule\x12\x12\n" +
	"\x04file\x18\x01 \x01(\tR\x04file\x12\x12\n" +
	"\x04code\x18\x02 \x01(\tR\x04code\x12#\n" +
	"\rreverse_match\x18\x03 \x01(\bR\freverseMatch\"\x82\x01\n" +
	"\x06IPRule\x126\n" +
	"\x05geoip\x18\x01 \x01(\v2\x1e.xray.common.geodata.GeoIPRuleH\x00R\x05geoip\x127\n" +
	"\x06custom\x18\x02 \x01(\v2\x1d.xray.common.geodata.CIDRRuleH\x00R\x06customB\a\n" +
	"\x05valueB[\n" +
	"\x17com.xray.common.geodataP\x01Z(github.com/xtls/xray-core/common/geodata\xaa\x02\x13Xray.Common.Geodatab\x06proto3"

var (
	file_common_geodata_geodat_proto_rawDescOnce sync.Once
	file_common_geodata_geodat_proto_rawDescData []byte
)

func file_common_geodata_geodat_proto_rawDescGZIP() []byte {
	file_common_geodata_geodat_proto_rawDescOnce.Do(func() {
		file_common_geodata_geodat_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_common_geodata_geodat_proto_rawDesc), len(file_common_geodata_geodat_proto_rawDesc)))
	})
	return file_common_geodata_geodat_proto_rawDescData
}

var file_common_geodata_geodat_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_common_geodata_geodat_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_common_geodata_geodat_proto_goTypes = []any{
	(Domain_Type)(0),         // 0: xray.common.geodata.Domain.Type
	(*Domain)(nil),           // 1: xray.common.geodata.Domain
	(*GeoSite)(nil),          // 2: xray.common.geodata.GeoSite
	(*GeoSiteList)(nil),      // 3: xray.common.geodata.GeoSiteList
	(*GeoSiteRule)(nil),      // 4: xray.common.geodata.GeoSiteRule
	(*DomainRule)(nil),       // 5: xray.common.geodata.DomainRule
	(*CIDR)(nil),             // 6: xray.common.geodata.CIDR
	(*CIDRRule)(nil),         // 7: xray.common.geodata.CIDRRule
	(*GeoIP)(nil),            // 8: xray.common.geodata.GeoIP
	(*GeoIPList)(nil),        // 9: xray.common.geodata.GeoIPList
	(*GeoIPRule)(nil),        // 10: xray.common.geodata.GeoIPRule
	(*IPRule)(nil),           // 11: xray.common.geodata.IPRule
	(*Domain_Attribute)(nil), // 12: xray.common.geodata.Domain.Attribute
}
var file_common_geodata_geodat_proto_depIdxs = []int32{
	0,  // 0: xray.common.geodata.Domain.type:type_name -> xray.common.geodata.Domain.Type
	12, // 1: xray.common.geodata.Domain.attribute:type_name -> xray.common.geodata.Domain.Attribute
	1,  // 2: xray.common.geodata.GeoSite.domain:type_name -> xray.common.geodata.Domain
	2,  // 3: xray.common.geodata.GeoSiteList.entry:type_name -> xray.common.geodata.GeoSite
	4,  // 4: xray.common.geodata.DomainRule.geosite:type_name -> xray.common.geodata.GeoSiteRule
	1,  // 5: xray.common.geodata.DomainRule.custom:type_name -> xray.common.geodata.Domain
	6,  // 6: xray.common.geodata.CIDRRule.cidr:type_name -> xray.common.geodata.CIDR
	6,  // 7: xray.common.geodata.GeoIP.cidr:type_name -> xray.common.geodata.CIDR
	8,  // 8: xray.common.geodata.GeoIPList.entry:type_name -> xray.common.geodata.GeoIP
	10, // 9: xray.common.geodata.IPRule.geoip:type_name -> xray.common.geodata.GeoIPRule
	7,  // 10: xray.common.geodata.IPRule.custom:type_name -> xray.common.geodata.CIDRRule
	11, // [11:11] is the sub-list for method output_type
	11, // [11:11] is the sub-list for method input_type
	11, // [11:11] is the sub-list for extension type_name
	11, // [11:11] is the sub-list for extension extendee
	0,  // [0:11] is the sub-list for field type_name
}

func init() { file_common_geodata_geodat_proto_init() }
func file_common_geodata_geodat_proto_init() {
	if File_common_geodata_geodat_proto != nil {
		return
	}
	file_common_geodata_geodat_proto_msgTypes[4].OneofWrappers = []any{
		(*DomainRule_Geosite)(nil),
		(*DomainRule_Custom)(nil),
	}
	file_common_geodata_geodat_proto_msgTypes[10].OneofWrappers = []any{
		(*IPRule_Geoip)(nil),
		(*IPRule_Custom)(nil),
	}
	file_common_geodata_geodat_proto_msgTypes[11].OneofWrappers = []any{
		(*Domain_Attribute_BoolValue)(nil),
		(*Domain_Attribute_IntValue)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_common_geodata_geodat_proto_rawDesc), len(file_common_geodata_geodat_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   12,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_common_geodata_geodat_proto_goTypes,
		DependencyIndexes: file_common_geodata_geodat_proto_depIdxs,
		EnumInfos:         file_common_geodata_geodat_proto_enumTypes,
		MessageInfos:      file_common_geodata_geodat_proto_msgTypes,
	}.Build()
	File_common_geodata_geodat_proto = out.File
	file_common_geodata_geodat_proto_goTypes = nil
	file_common_geodata_geodat_proto_depIdxs = nil
}
