// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: expression.proto

package tipb

import (
	"fmt"

	proto "github.com/golang/protobuf/proto"

	math "math"

	io "io"
)

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

type ExprType int32

const (
	// Values are encoded bytes.
	ExprType_Null    ExprType = 0
	ExprType_Int64   ExprType = 1
	ExprType_Uint64  ExprType = 2
	ExprType_Float32 ExprType = 3
	ExprType_Float64 ExprType = 4
	ExprType_String  ExprType = 5
	ExprType_Bytes   ExprType = 6
	// Mysql specific types.
	ExprType_MysqlBit      ExprType = 101
	ExprType_MysqlDecimal  ExprType = 102
	ExprType_MysqlDuration ExprType = 103
	ExprType_MysqlEnum     ExprType = 104
	ExprType_MysqlHex      ExprType = 105
	ExprType_MysqlSet      ExprType = 106
	ExprType_MysqlTime     ExprType = 107
	ExprType_MysqlJson     ExprType = 108
	// Encoded value list.
	ExprType_ValueList ExprType = 151
	// Column reference. value is int64 column ID.
	ExprType_ColumnRef ExprType = 201
	// Unary operations, children count 1.
	ExprType_Not    ExprType = 1001
	ExprType_Neg    ExprType = 1002
	ExprType_BitNeg ExprType = 1003
	// Comparison operations.
	ExprType_LT     ExprType = 2001
	ExprType_LE     ExprType = 2002
	ExprType_EQ     ExprType = 2003
	ExprType_NE     ExprType = 2004
	ExprType_GE     ExprType = 2005
	ExprType_GT     ExprType = 2006
	ExprType_NullEQ ExprType = 2007
	// Bit operations.
	ExprType_BitAnd    ExprType = 2101
	ExprType_BitOr     ExprType = 2102
	ExprType_BitXor    ExprType = 2103
	ExprType_LeftShift ExprType = 2104
	ExprType_RighShift ExprType = 2105
	// Arithmatic.
	ExprType_Plus   ExprType = 2201
	ExprType_Minus  ExprType = 2202
	ExprType_Mul    ExprType = 2203
	ExprType_Div    ExprType = 2204
	ExprType_IntDiv ExprType = 2205
	ExprType_Mod    ExprType = 2206
	// Logic operations.
	ExprType_And ExprType = 2301
	ExprType_Or  ExprType = 2302
	ExprType_Xor ExprType = 2303
	// Aggregate functions.
	ExprType_Count       ExprType = 3001
	ExprType_Sum         ExprType = 3002
	ExprType_Avg         ExprType = 3003
	ExprType_Min         ExprType = 3004
	ExprType_Max         ExprType = 3005
	ExprType_First       ExprType = 3006
	ExprType_GroupConcat ExprType = 3007
	ExprType_Agg_BitAnd  ExprType = 3008
	ExprType_Agg_BitOr   ExprType = 3009
	ExprType_Agg_BitXor  ExprType = 3010
	ExprType_Std         ExprType = 3011
	ExprType_Stddev      ExprType = 3012
	ExprType_StddevPop   ExprType = 3013
	ExprType_StddevSamp  ExprType = 3014
	ExprType_VarPop      ExprType = 3015
	ExprType_VarSamp     ExprType = 3016
	ExprType_Variance    ExprType = 3017
	// Math functions.
	ExprType_Abs   ExprType = 3101
	ExprType_Pow   ExprType = 3102
	ExprType_Round ExprType = 3103
	// String functions.
	ExprType_Concat         ExprType = 3201
	ExprType_ConcatWS       ExprType = 3202
	ExprType_Left           ExprType = 3203
	ExprType_Length         ExprType = 3204
	ExprType_Lower          ExprType = 3205
	ExprType_Repeat         ExprType = 3206
	ExprType_Replace        ExprType = 3207
	ExprType_Upper          ExprType = 3208
	ExprType_Strcmp         ExprType = 3209
	ExprType_Convert        ExprType = 3210
	ExprType_Cast           ExprType = 3211
	ExprType_Substring      ExprType = 3212
	ExprType_SubstringIndex ExprType = 3213
	ExprType_Locate         ExprType = 3214
	ExprType_Trim           ExprType = 3215
	// Control flow functions.
	ExprType_If     ExprType = 3301
	ExprType_NullIf ExprType = 3302
	ExprType_IfNull ExprType = 3303
	// Time functions.
	ExprType_Date        ExprType = 3401
	ExprType_DateAdd     ExprType = 3402
	ExprType_DateSub     ExprType = 3403
	ExprType_Year        ExprType = 3411
	ExprType_YearWeek    ExprType = 3412
	ExprType_Month       ExprType = 3421
	ExprType_Week        ExprType = 3431
	ExprType_Weekday     ExprType = 3432
	ExprType_WeekOfYear  ExprType = 3433
	ExprType_Day         ExprType = 3441
	ExprType_DayName     ExprType = 3442
	ExprType_DayOfYear   ExprType = 3443
	ExprType_DayOfMonth  ExprType = 3444
	ExprType_DayOfWeek   ExprType = 3445
	ExprType_Hour        ExprType = 3451
	ExprType_Minute      ExprType = 3452
	ExprType_Second      ExprType = 3453
	ExprType_Microsecond ExprType = 3454
	ExprType_Extract     ExprType = 3461
	// Other functions;
	ExprType_Coalesce ExprType = 3501
	ExprType_Greatest ExprType = 3502
	ExprType_Least    ExprType = 3503
	// Json functions;
	ExprType_JsonExtract      ExprType = 3601
	ExprType_JsonType         ExprType = 3602
	ExprType_JsonArray        ExprType = 3603
	ExprType_JsonObject       ExprType = 3604
	ExprType_JsonMerge        ExprType = 3605
	ExprType_JsonValid        ExprType = 3606
	ExprType_JsonSet          ExprType = 3607
	ExprType_JsonInsert       ExprType = 3608
	ExprType_JsonReplace      ExprType = 3609
	ExprType_JsonRemove       ExprType = 3610
	ExprType_JsonContains     ExprType = 3611
	ExprType_JsonUnquote      ExprType = 3612
	ExprType_JsonContainsPath ExprType = 3613
	// Other expressions.
	ExprType_In         ExprType = 4001
	ExprType_IsTruth    ExprType = 4002
	ExprType_IsNull     ExprType = 4003
	ExprType_ExprRow    ExprType = 4004
	ExprType_Like       ExprType = 4005
	ExprType_RLike      ExprType = 4006
	ExprType_Case       ExprType = 4007
	ExprType_DateFormat ExprType = 6001
	// Scalar Function
	ExprType_ScalarFunc ExprType = 10000
)

var ExprType_name = map[int32]string{
	0:     "Null",
	1:     "Int64",
	2:     "Uint64",
	3:     "Float32",
	4:     "Float64",
	5:     "String",
	6:     "Bytes",
	101:   "MysqlBit",
	102:   "MysqlDecimal",
	103:   "MysqlDuration",
	104:   "MysqlEnum",
	105:   "MysqlHex",
	106:   "MysqlSet",
	107:   "MysqlTime",
	108:   "MysqlJson",
	151:   "ValueList",
	201:   "ColumnRef",
	1001:  "Not",
	1002:  "Neg",
	1003:  "BitNeg",
	2001:  "LT",
	2002:  "LE",
	2003:  "EQ",
	2004:  "NE",
	2005:  "GE",
	2006:  "GT",
	2007:  "NullEQ",
	2101:  "BitAnd",
	2102:  "BitOr",
	2103:  "BitXor",
	2104:  "LeftShift",
	2105:  "RighShift",
	2201:  "Plus",
	2202:  "Minus",
	2203:  "Mul",
	2204:  "Div",
	2205:  "IntDiv",
	2206:  "Mod",
	2301:  "And",
	2302:  "Or",
	2303:  "Xor",
	3001:  "Count",
	3002:  "Sum",
	3003:  "Avg",
	3004:  "Min",
	3005:  "Max",
	3006:  "First",
	3007:  "GroupConcat",
	3008:  "Agg_BitAnd",
	3009:  "Agg_BitOr",
	3010:  "Agg_BitXor",
	3011:  "Std",
	3012:  "Stddev",
	3013:  "StddevPop",
	3014:  "StddevSamp",
	3015:  "VarPop",
	3016:  "VarSamp",
	3017:  "Variance",
	3101:  "Abs",
	3102:  "Pow",
	3103:  "Round",
	3201:  "Concat",
	3202:  "ConcatWS",
	3203:  "Left",
	3204:  "Length",
	3205:  "Lower",
	3206:  "Repeat",
	3207:  "Replace",
	3208:  "Upper",
	3209:  "Strcmp",
	3210:  "Convert",
	3211:  "Cast",
	3212:  "Substring",
	3213:  "SubstringIndex",
	3214:  "Locate",
	3215:  "Trim",
	3301:  "If",
	3302:  "NullIf",
	3303:  "IfNull",
	3401:  "Date",
	3402:  "DateAdd",
	3403:  "DateSub",
	3411:  "Year",
	3412:  "YearWeek",
	3421:  "Month",
	3431:  "Week",
	3432:  "Weekday",
	3433:  "WeekOfYear",
	3441:  "Day",
	3442:  "DayName",
	3443:  "DayOfYear",
	3444:  "DayOfMonth",
	3445:  "DayOfWeek",
	3451:  "Hour",
	3452:  "Minute",
	3453:  "Second",
	3454:  "Microsecond",
	3461:  "Extract",
	3501:  "Coalesce",
	3502:  "Greatest",
	3503:  "Least",
	3601:  "JsonExtract",
	3602:  "JsonType",
	3603:  "JsonArray",
	3604:  "JsonObject",
	3605:  "JsonMerge",
	3606:  "JsonValid",
	3607:  "JsonSet",
	3608:  "JsonInsert",
	3609:  "JsonReplace",
	3610:  "JsonRemove",
	3611:  "JsonContains",
	3612:  "JsonUnquote",
	3613:  "JsonContainsPath",
	4001:  "In",
	4002:  "IsTruth",
	4003:  "IsNull",
	4004:  "ExprRow",
	4005:  "Like",
	4006:  "RLike",
	4007:  "Case",
	6001:  "DateFormat",
	10000: "ScalarFunc",
}
var ExprType_value = map[string]int32{
	"Null":             0,
	"Int64":            1,
	"Uint64":           2,
	"Float32":          3,
	"Float64":          4,
	"String":           5,
	"Bytes":            6,
	"MysqlBit":         101,
	"MysqlDecimal":     102,
	"MysqlDuration":    103,
	"MysqlEnum":        104,
	"MysqlHex":         105,
	"MysqlSet":         106,
	"MysqlTime":        107,
	"MysqlJson":        108,
	"ValueList":        151,
	"ColumnRef":        201,
	"Not":              1001,
	"Neg":              1002,
	"BitNeg":           1003,
	"LT":               2001,
	"LE":               2002,
	"EQ":               2003,
	"NE":               2004,
	"GE":               2005,
	"GT":               2006,
	"NullEQ":           2007,
	"BitAnd":           2101,
	"BitOr":            2102,
	"BitXor":           2103,
	"LeftShift":        2104,
	"RighShift":        2105,
	"Plus":             2201,
	"Minus":            2202,
	"Mul":              2203,
	"Div":              2204,
	"IntDiv":           2205,
	"Mod":              2206,
	"And":              2301,
	"Or":               2302,
	"Xor":              2303,
	"Count":            3001,
	"Sum":              3002,
	"Avg":              3003,
	"Min":              3004,
	"Max":              3005,
	"First":            3006,
	"GroupConcat":      3007,
	"Agg_BitAnd":       3008,
	"Agg_BitOr":        3009,
	"Agg_BitXor":       3010,
	"Std":              3011,
	"Stddev":           3012,
	"StddevPop":        3013,
	"StddevSamp":       3014,
	"VarPop":           3015,
	"VarSamp":          3016,
	"Variance":         3017,
	"Abs":              3101,
	"Pow":              3102,
	"Round":            3103,
	"Concat":           3201,
	"ConcatWS":         3202,
	"Left":             3203,
	"Length":           3204,
	"Lower":            3205,
	"Repeat":           3206,
	"Replace":          3207,
	"Upper":            3208,
	"Strcmp":           3209,
	"Convert":          3210,
	"Cast":             3211,
	"Substring":        3212,
	"SubstringIndex":   3213,
	"Locate":           3214,
	"Trim":             3215,
	"If":               3301,
	"NullIf":           3302,
	"IfNull":           3303,
	"Date":             3401,
	"DateAdd":          3402,
	"DateSub":          3403,
	"Year":             3411,
	"YearWeek":         3412,
	"Month":            3421,
	"Week":             3431,
	"Weekday":          3432,
	"WeekOfYear":       3433,
	"Day":              3441,
	"DayName":          3442,
	"DayOfYear":        3443,
	"DayOfMonth":       3444,
	"DayOfWeek":        3445,
	"Hour":             3451,
	"Minute":           3452,
	"Second":           3453,
	"Microsecond":      3454,
	"Extract":          3461,
	"Coalesce":         3501,
	"Greatest":         3502,
	"Least":            3503,
	"JsonExtract":      3601,
	"JsonType":         3602,
	"JsonArray":        3603,
	"JsonObject":       3604,
	"JsonMerge":        3605,
	"JsonValid":        3606,
	"JsonSet":          3607,
	"JsonInsert":       3608,
	"JsonReplace":      3609,
	"JsonRemove":       3610,
	"JsonContains":     3611,
	"JsonUnquote":      3612,
	"JsonContainsPath": 3613,
	"In":               4001,
	"IsTruth":          4002,
	"IsNull":           4003,
	"ExprRow":          4004,
	"Like":             4005,
	"RLike":            4006,
	"Case":             4007,
	"DateFormat":       6001,
	"ScalarFunc":       10000,
}

func (x ExprType) Enum() *ExprType {
	p := new(ExprType)
	*p = x
	return p
}
func (x ExprType) String() string {
	return proto.EnumName(ExprType_name, int32(x))
}
func (x *ExprType) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(ExprType_value, data, "ExprType")
	if err != nil {
		return err
	}
	*x = ExprType(value)
	return nil
}
func (ExprType) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{0} }

type ScalarFuncSig int32

const (
	// Casting
	ScalarFuncSig_CastIntAsInt           ScalarFuncSig = 0
	ScalarFuncSig_CastIntAsReal          ScalarFuncSig = 1
	ScalarFuncSig_CastIntAsString        ScalarFuncSig = 2
	ScalarFuncSig_CastIntAsDecimal       ScalarFuncSig = 3
	ScalarFuncSig_CastIntAsTime          ScalarFuncSig = 4
	ScalarFuncSig_CastIntAsDuration      ScalarFuncSig = 5
	ScalarFuncSig_CastIntAsJson          ScalarFuncSig = 6
	ScalarFuncSig_CastRealAsInt          ScalarFuncSig = 10
	ScalarFuncSig_CastRealAsReal         ScalarFuncSig = 11
	ScalarFuncSig_CastRealAsString       ScalarFuncSig = 12
	ScalarFuncSig_CastRealAsDecimal      ScalarFuncSig = 13
	ScalarFuncSig_CastRealAsTime         ScalarFuncSig = 14
	ScalarFuncSig_CastRealAsDuration     ScalarFuncSig = 15
	ScalarFuncSig_CastRealAsJson         ScalarFuncSig = 16
	ScalarFuncSig_CastDecimalAsInt       ScalarFuncSig = 20
	ScalarFuncSig_CastDecimalAsReal      ScalarFuncSig = 21
	ScalarFuncSig_CastDecimalAsString    ScalarFuncSig = 22
	ScalarFuncSig_CastDecimalAsDecimal   ScalarFuncSig = 23
	ScalarFuncSig_CastDecimalAsTime      ScalarFuncSig = 24
	ScalarFuncSig_CastDecimalAsDuration  ScalarFuncSig = 25
	ScalarFuncSig_CastDecimalAsJson      ScalarFuncSig = 26
	ScalarFuncSig_CastStringAsInt        ScalarFuncSig = 30
	ScalarFuncSig_CastStringAsReal       ScalarFuncSig = 31
	ScalarFuncSig_CastStringAsString     ScalarFuncSig = 32
	ScalarFuncSig_CastStringAsDecimal    ScalarFuncSig = 33
	ScalarFuncSig_CastStringAsTime       ScalarFuncSig = 34
	ScalarFuncSig_CastStringAsDuration   ScalarFuncSig = 35
	ScalarFuncSig_CastStringAsJson       ScalarFuncSig = 36
	ScalarFuncSig_CastTimeAsInt          ScalarFuncSig = 40
	ScalarFuncSig_CastTimeAsReal         ScalarFuncSig = 41
	ScalarFuncSig_CastTimeAsString       ScalarFuncSig = 42
	ScalarFuncSig_CastTimeAsDecimal      ScalarFuncSig = 43
	ScalarFuncSig_CastTimeAsTime         ScalarFuncSig = 44
	ScalarFuncSig_CastTimeAsDuration     ScalarFuncSig = 45
	ScalarFuncSig_CastTimeAsJson         ScalarFuncSig = 46
	ScalarFuncSig_CastDurationAsInt      ScalarFuncSig = 50
	ScalarFuncSig_CastDurationAsReal     ScalarFuncSig = 51
	ScalarFuncSig_CastDurationAsString   ScalarFuncSig = 52
	ScalarFuncSig_CastDurationAsDecimal  ScalarFuncSig = 53
	ScalarFuncSig_CastDurationAsTime     ScalarFuncSig = 54
	ScalarFuncSig_CastDurationAsDuration ScalarFuncSig = 55
	ScalarFuncSig_CastDurationAsJson     ScalarFuncSig = 56
	ScalarFuncSig_CastJsonAsInt          ScalarFuncSig = 60
	ScalarFuncSig_CastJsonAsReal         ScalarFuncSig = 61
	ScalarFuncSig_CastJsonAsString       ScalarFuncSig = 62
	ScalarFuncSig_CastJsonAsDecimal      ScalarFuncSig = 63
	ScalarFuncSig_CastJsonAsTime         ScalarFuncSig = 64
	ScalarFuncSig_CastJsonAsDuration     ScalarFuncSig = 65
	ScalarFuncSig_CastJsonAsJson         ScalarFuncSig = 66
	ScalarFuncSig_LTInt                  ScalarFuncSig = 100
	ScalarFuncSig_LTReal                 ScalarFuncSig = 101
	ScalarFuncSig_LTDecimal              ScalarFuncSig = 102
	ScalarFuncSig_LTString               ScalarFuncSig = 103
	ScalarFuncSig_LTTime                 ScalarFuncSig = 104
	ScalarFuncSig_LTDuration             ScalarFuncSig = 105
	ScalarFuncSig_LTJson                 ScalarFuncSig = 106
	ScalarFuncSig_LEInt                  ScalarFuncSig = 110
	ScalarFuncSig_LEReal                 ScalarFuncSig = 111
	ScalarFuncSig_LEDecimal              ScalarFuncSig = 112
	ScalarFuncSig_LEString               ScalarFuncSig = 113
	ScalarFuncSig_LETime                 ScalarFuncSig = 114
	ScalarFuncSig_LEDuration             ScalarFuncSig = 115
	ScalarFuncSig_LEJson                 ScalarFuncSig = 116
	ScalarFuncSig_GTInt                  ScalarFuncSig = 120
	ScalarFuncSig_GTReal                 ScalarFuncSig = 121
	ScalarFuncSig_GTDecimal              ScalarFuncSig = 122
	ScalarFuncSig_GTString               ScalarFuncSig = 123
	ScalarFuncSig_GTTime                 ScalarFuncSig = 124
	ScalarFuncSig_GTDuration             ScalarFuncSig = 125
	ScalarFuncSig_GTJson                 ScalarFuncSig = 126
	ScalarFuncSig_GEInt                  ScalarFuncSig = 130
	ScalarFuncSig_GEReal                 ScalarFuncSig = 131
	ScalarFuncSig_GEDecimal              ScalarFuncSig = 132
	ScalarFuncSig_GEString               ScalarFuncSig = 133
	ScalarFuncSig_GETime                 ScalarFuncSig = 134
	ScalarFuncSig_GEDuration             ScalarFuncSig = 135
	ScalarFuncSig_GEJson                 ScalarFuncSig = 136
	ScalarFuncSig_EQInt                  ScalarFuncSig = 140
	ScalarFuncSig_EQReal                 ScalarFuncSig = 141
	ScalarFuncSig_EQDecimal              ScalarFuncSig = 142
	ScalarFuncSig_EQString               ScalarFuncSig = 143
	ScalarFuncSig_EQTime                 ScalarFuncSig = 144
	ScalarFuncSig_EQDuration             ScalarFuncSig = 145
	ScalarFuncSig_EQJson                 ScalarFuncSig = 146
	ScalarFuncSig_NEInt                  ScalarFuncSig = 150
	ScalarFuncSig_NEReal                 ScalarFuncSig = 151
	ScalarFuncSig_NEDecimal              ScalarFuncSig = 152
	ScalarFuncSig_NEString               ScalarFuncSig = 153
	ScalarFuncSig_NETime                 ScalarFuncSig = 154
	ScalarFuncSig_NEDuration             ScalarFuncSig = 155
	ScalarFuncSig_NEJson                 ScalarFuncSig = 156
	ScalarFuncSig_NullEQInt              ScalarFuncSig = 160
	ScalarFuncSig_NullEQReal             ScalarFuncSig = 161
	ScalarFuncSig_NullEQDecimal          ScalarFuncSig = 162
	ScalarFuncSig_NullEQString           ScalarFuncSig = 163
	ScalarFuncSig_NullEQTime             ScalarFuncSig = 164
	ScalarFuncSig_NullEQDuration         ScalarFuncSig = 165
	ScalarFuncSig_NullEQJson             ScalarFuncSig = 166
	ScalarFuncSig_PlusReal               ScalarFuncSig = 200
	ScalarFuncSig_PlusDecimal            ScalarFuncSig = 201
	ScalarFuncSig_PlusInt                ScalarFuncSig = 203
	ScalarFuncSig_MinusReal              ScalarFuncSig = 204
	ScalarFuncSig_MinusDecimal           ScalarFuncSig = 205
	ScalarFuncSig_MinusInt               ScalarFuncSig = 207
	ScalarFuncSig_MultiplyReal           ScalarFuncSig = 208
	ScalarFuncSig_MultiplyDecimal        ScalarFuncSig = 209
	ScalarFuncSig_MultiplyInt            ScalarFuncSig = 210
	ScalarFuncSig_DivideReal             ScalarFuncSig = 211
	ScalarFuncSig_DivideDecimal          ScalarFuncSig = 212
	ScalarFuncSig_AbsInt                 ScalarFuncSig = 2101
	ScalarFuncSig_AbsUInt                ScalarFuncSig = 2102
	ScalarFuncSig_AbsReal                ScalarFuncSig = 2103
	ScalarFuncSig_AbsDecimal             ScalarFuncSig = 2104
	ScalarFuncSig_CeilIntToDec           ScalarFuncSig = 2105
	ScalarFuncSig_CeilIntToInt           ScalarFuncSig = 2106
	ScalarFuncSig_CeilDecToInt           ScalarFuncSig = 2107
	ScalarFuncSig_CeilDecToDec           ScalarFuncSig = 2108
	ScalarFuncSig_CeilReal               ScalarFuncSig = 2109
	ScalarFuncSig_FloorIntToDec          ScalarFuncSig = 2110
	ScalarFuncSig_FloorIntToInt          ScalarFuncSig = 2111
	ScalarFuncSig_FloorDecToInt          ScalarFuncSig = 2112
	ScalarFuncSig_FloorDecToDec          ScalarFuncSig = 2113
	ScalarFuncSig_FloorReal              ScalarFuncSig = 2114
	ScalarFuncSig_LogicalAnd             ScalarFuncSig = 3101
	ScalarFuncSig_LogicalOr              ScalarFuncSig = 3102
	ScalarFuncSig_LogicalXor             ScalarFuncSig = 3103
	ScalarFuncSig_UnaryNot               ScalarFuncSig = 3104
	ScalarFuncSig_UnaryMinusInt          ScalarFuncSig = 3108
	ScalarFuncSig_UnaryMinusReal         ScalarFuncSig = 3109
	ScalarFuncSig_UnaryMinusDecimal      ScalarFuncSig = 3110
	ScalarFuncSig_DecimalIsNull          ScalarFuncSig = 3111
	ScalarFuncSig_DurationIsNull         ScalarFuncSig = 3112
	ScalarFuncSig_RealIsNull             ScalarFuncSig = 3113
	ScalarFuncSig_StringIsNull           ScalarFuncSig = 3114
	ScalarFuncSig_TimeIsNull             ScalarFuncSig = 3115
	ScalarFuncSig_IntIsNull              ScalarFuncSig = 3116
	ScalarFuncSig_JsonIsNull             ScalarFuncSig = 3117
	ScalarFuncSig_BitAndSig              ScalarFuncSig = 3118
	ScalarFuncSig_BitOrSig               ScalarFuncSig = 3119
	ScalarFuncSig_BitXorSig              ScalarFuncSig = 3120
	ScalarFuncSig_BitNegSig              ScalarFuncSig = 3121
	ScalarFuncSig_IntIsTrue              ScalarFuncSig = 3122
	ScalarFuncSig_RealIsTrue             ScalarFuncSig = 3123
	ScalarFuncSig_DecimalIsTrue          ScalarFuncSig = 3124
	ScalarFuncSig_IntIsFalse             ScalarFuncSig = 3125
	ScalarFuncSig_RealIsFalse            ScalarFuncSig = 3126
	ScalarFuncSig_DecimalIsFalse         ScalarFuncSig = 3127
	ScalarFuncSig_InInt                  ScalarFuncSig = 4001
	ScalarFuncSig_InReal                 ScalarFuncSig = 4002
	ScalarFuncSig_InDecimal              ScalarFuncSig = 4003
	ScalarFuncSig_InString               ScalarFuncSig = 4004
	ScalarFuncSig_InTime                 ScalarFuncSig = 4005
	ScalarFuncSig_InDuration             ScalarFuncSig = 4006
	ScalarFuncSig_InJson                 ScalarFuncSig = 4007
	ScalarFuncSig_IfNullInt              ScalarFuncSig = 4101
	ScalarFuncSig_IfNullReal             ScalarFuncSig = 4102
	ScalarFuncSig_IfNullDecimal          ScalarFuncSig = 4103
	ScalarFuncSig_IfNullString           ScalarFuncSig = 4104
	ScalarFuncSig_IfNullTime             ScalarFuncSig = 4105
	ScalarFuncSig_IfNullDuration         ScalarFuncSig = 4106
	ScalarFuncSig_IfInt                  ScalarFuncSig = 4107
	ScalarFuncSig_IfReal                 ScalarFuncSig = 4108
	ScalarFuncSig_IfDecimal              ScalarFuncSig = 4109
	ScalarFuncSig_IfString               ScalarFuncSig = 4110
	ScalarFuncSig_IfTime                 ScalarFuncSig = 4111
	ScalarFuncSig_IfDuration             ScalarFuncSig = 4112
	ScalarFuncSig_IfNullJson             ScalarFuncSig = 4113
	ScalarFuncSig_IfJson                 ScalarFuncSig = 4114
	ScalarFuncSig_CoalesceInt            ScalarFuncSig = 4201
	ScalarFuncSig_CoalesceReal           ScalarFuncSig = 4202
	ScalarFuncSig_CoalesceDecimal        ScalarFuncSig = 4203
	ScalarFuncSig_CoalesceString         ScalarFuncSig = 4204
	ScalarFuncSig_CoalesceTime           ScalarFuncSig = 4205
	ScalarFuncSig_CoalesceDuration       ScalarFuncSig = 4206
	ScalarFuncSig_CoalesceJson           ScalarFuncSig = 4207
	ScalarFuncSig_CaseWhenInt            ScalarFuncSig = 4208
	ScalarFuncSig_CaseWhenReal           ScalarFuncSig = 4209
	ScalarFuncSig_CaseWhenDecimal        ScalarFuncSig = 4210
	ScalarFuncSig_CaseWhenString         ScalarFuncSig = 4211
	ScalarFuncSig_CaseWhenTime           ScalarFuncSig = 4212
	ScalarFuncSig_CaseWhenDuration       ScalarFuncSig = 4213
	ScalarFuncSig_CaseWhenJson           ScalarFuncSig = 4214
	//
	// Here we use suffix *Sig* to avoid name conflict. After we removes
	// all same things in ExprType, we can rename them back.
	ScalarFuncSig_LikeSig        ScalarFuncSig = 4310
	ScalarFuncSig_JsonExtractSig ScalarFuncSig = 5001
	ScalarFuncSig_JsonUnquoteSig ScalarFuncSig = 5002
	ScalarFuncSig_JsonTypeSig    ScalarFuncSig = 5003
	ScalarFuncSig_JsonSetSig     ScalarFuncSig = 5004
	ScalarFuncSig_JsonInsertSig  ScalarFuncSig = 5005
	ScalarFuncSig_JsonReplaceSig ScalarFuncSig = 5006
	ScalarFuncSig_JsonRemoveSig  ScalarFuncSig = 5007
	ScalarFuncSig_JsonMergeSig   ScalarFuncSig = 5008
	ScalarFuncSig_JsonObjectSig  ScalarFuncSig = 5009
	ScalarFuncSig_JsonArraySig   ScalarFuncSig = 5010
	ScalarFuncSig_DateFormatSig  ScalarFuncSig = 6001
)

var ScalarFuncSig_name = map[int32]string{
	0:    "CastIntAsInt",
	1:    "CastIntAsReal",
	2:    "CastIntAsString",
	3:    "CastIntAsDecimal",
	4:    "CastIntAsTime",
	5:    "CastIntAsDuration",
	6:    "CastIntAsJson",
	10:   "CastRealAsInt",
	11:   "CastRealAsReal",
	12:   "CastRealAsString",
	13:   "CastRealAsDecimal",
	14:   "CastRealAsTime",
	15:   "CastRealAsDuration",
	16:   "CastRealAsJson",
	20:   "CastDecimalAsInt",
	21:   "CastDecimalAsReal",
	22:   "CastDecimalAsString",
	23:   "CastDecimalAsDecimal",
	24:   "CastDecimalAsTime",
	25:   "CastDecimalAsDuration",
	26:   "CastDecimalAsJson",
	30:   "CastStringAsInt",
	31:   "CastStringAsReal",
	32:   "CastStringAsString",
	33:   "CastStringAsDecimal",
	34:   "CastStringAsTime",
	35:   "CastStringAsDuration",
	36:   "CastStringAsJson",
	40:   "CastTimeAsInt",
	41:   "CastTimeAsReal",
	42:   "CastTimeAsString",
	43:   "CastTimeAsDecimal",
	44:   "CastTimeAsTime",
	45:   "CastTimeAsDuration",
	46:   "CastTimeAsJson",
	50:   "CastDurationAsInt",
	51:   "CastDurationAsReal",
	52:   "CastDurationAsString",
	53:   "CastDurationAsDecimal",
	54:   "CastDurationAsTime",
	55:   "CastDurationAsDuration",
	56:   "CastDurationAsJson",
	60:   "CastJsonAsInt",
	61:   "CastJsonAsReal",
	62:   "CastJsonAsString",
	63:   "CastJsonAsDecimal",
	64:   "CastJsonAsTime",
	65:   "CastJsonAsDuration",
	66:   "CastJsonAsJson",
	100:  "LTInt",
	101:  "LTReal",
	102:  "LTDecimal",
	103:  "LTString",
	104:  "LTTime",
	105:  "LTDuration",
	106:  "LTJson",
	110:  "LEInt",
	111:  "LEReal",
	112:  "LEDecimal",
	113:  "LEString",
	114:  "LETime",
	115:  "LEDuration",
	116:  "LEJson",
	120:  "GTInt",
	121:  "GTReal",
	122:  "GTDecimal",
	123:  "GTString",
	124:  "GTTime",
	125:  "GTDuration",
	126:  "GTJson",
	130:  "GEInt",
	131:  "GEReal",
	132:  "GEDecimal",
	133:  "GEString",
	134:  "GETime",
	135:  "GEDuration",
	136:  "GEJson",
	140:  "EQInt",
	141:  "EQReal",
	142:  "EQDecimal",
	143:  "EQString",
	144:  "EQTime",
	145:  "EQDuration",
	146:  "EQJson",
	150:  "NEInt",
	151:  "NEReal",
	152:  "NEDecimal",
	153:  "NEString",
	154:  "NETime",
	155:  "NEDuration",
	156:  "NEJson",
	160:  "NullEQInt",
	161:  "NullEQReal",
	162:  "NullEQDecimal",
	163:  "NullEQString",
	164:  "NullEQTime",
	165:  "NullEQDuration",
	166:  "NullEQJson",
	200:  "PlusReal",
	201:  "PlusDecimal",
	203:  "PlusInt",
	204:  "MinusReal",
	205:  "MinusDecimal",
	207:  "MinusInt",
	208:  "MultiplyReal",
	209:  "MultiplyDecimal",
	210:  "MultiplyInt",
	211:  "DivideReal",
	212:  "DivideDecimal",
	2101: "AbsInt",
	2102: "AbsUInt",
	2103: "AbsReal",
	2104: "AbsDecimal",
	2105: "CeilIntToDec",
	2106: "CeilIntToInt",
	2107: "CeilDecToInt",
	2108: "CeilDecToDec",
	2109: "CeilReal",
	2110: "FloorIntToDec",
	2111: "FloorIntToInt",
	2112: "FloorDecToInt",
	2113: "FloorDecToDec",
	2114: "FloorReal",
	3101: "LogicalAnd",
	3102: "LogicalOr",
	3103: "LogicalXor",
	3104: "UnaryNot",
	3108: "UnaryMinusInt",
	3109: "UnaryMinusReal",
	3110: "UnaryMinusDecimal",
	3111: "DecimalIsNull",
	3112: "DurationIsNull",
	3113: "RealIsNull",
	3114: "StringIsNull",
	3115: "TimeIsNull",
	3116: "IntIsNull",
	3117: "JsonIsNull",
	3118: "BitAndSig",
	3119: "BitOrSig",
	3120: "BitXorSig",
	3121: "BitNegSig",
	3122: "IntIsTrue",
	3123: "RealIsTrue",
	3124: "DecimalIsTrue",
	3125: "IntIsFalse",
	3126: "RealIsFalse",
	3127: "DecimalIsFalse",
	4001: "InInt",
	4002: "InReal",
	4003: "InDecimal",
	4004: "InString",
	4005: "InTime",
	4006: "InDuration",
	4007: "InJson",
	4101: "IfNullInt",
	4102: "IfNullReal",
	4103: "IfNullDecimal",
	4104: "IfNullString",
	4105: "IfNullTime",
	4106: "IfNullDuration",
	4107: "IfInt",
	4108: "IfReal",
	4109: "IfDecimal",
	4110: "IfString",
	4111: "IfTime",
	4112: "IfDuration",
	4113: "IfNullJson",
	4114: "IfJson",
	4201: "CoalesceInt",
	4202: "CoalesceReal",
	4203: "CoalesceDecimal",
	4204: "CoalesceString",
	4205: "CoalesceTime",
	4206: "CoalesceDuration",
	4207: "CoalesceJson",
	4208: "CaseWhenInt",
	4209: "CaseWhenReal",
	4210: "CaseWhenDecimal",
	4211: "CaseWhenString",
	4212: "CaseWhenTime",
	4213: "CaseWhenDuration",
	4214: "CaseWhenJson",
	4310: "LikeSig",
	5001: "JsonExtractSig",
	5002: "JsonUnquoteSig",
	5003: "JsonTypeSig",
	5004: "JsonSetSig",
	5005: "JsonInsertSig",
	5006: "JsonReplaceSig",
	5007: "JsonRemoveSig",
	5008: "JsonMergeSig",
	5009: "JsonObjectSig",
	5010: "JsonArraySig",
	6001: "DateFormatSig",
}
var ScalarFuncSig_value = map[string]int32{
	"CastIntAsInt":           0,
	"CastIntAsReal":          1,
	"CastIntAsString":        2,
	"CastIntAsDecimal":       3,
	"CastIntAsTime":          4,
	"CastIntAsDuration":      5,
	"CastIntAsJson":          6,
	"CastRealAsInt":          10,
	"CastRealAsReal":         11,
	"CastRealAsString":       12,
	"CastRealAsDecimal":      13,
	"CastRealAsTime":         14,
	"CastRealAsDuration":     15,
	"CastRealAsJson":         16,
	"CastDecimalAsInt":       20,
	"CastDecimalAsReal":      21,
	"CastDecimalAsString":    22,
	"CastDecimalAsDecimal":   23,
	"CastDecimalAsTime":      24,
	"CastDecimalAsDuration":  25,
	"CastDecimalAsJson":      26,
	"CastStringAsInt":        30,
	"CastStringAsReal":       31,
	"CastStringAsString":     32,
	"CastStringAsDecimal":    33,
	"CastStringAsTime":       34,
	"CastStringAsDuration":   35,
	"CastStringAsJson":       36,
	"CastTimeAsInt":          40,
	"CastTimeAsReal":         41,
	"CastTimeAsString":       42,
	"CastTimeAsDecimal":      43,
	"CastTimeAsTime":         44,
	"CastTimeAsDuration":     45,
	"CastTimeAsJson":         46,
	"CastDurationAsInt":      50,
	"CastDurationAsReal":     51,
	"CastDurationAsString":   52,
	"CastDurationAsDecimal":  53,
	"CastDurationAsTime":     54,
	"CastDurationAsDuration": 55,
	"CastDurationAsJson":     56,
	"CastJsonAsInt":          60,
	"CastJsonAsReal":         61,
	"CastJsonAsString":       62,
	"CastJsonAsDecimal":      63,
	"CastJsonAsTime":         64,
	"CastJsonAsDuration":     65,
	"CastJsonAsJson":         66,
	"LTInt":                  100,
	"LTReal":                 101,
	"LTDecimal":              102,
	"LTString":               103,
	"LTTime":                 104,
	"LTDuration":             105,
	"LTJson":                 106,
	"LEInt":                  110,
	"LEReal":                 111,
	"LEDecimal":              112,
	"LEString":               113,
	"LETime":                 114,
	"LEDuration":             115,
	"LEJson":                 116,
	"GTInt":                  120,
	"GTReal":                 121,
	"GTDecimal":              122,
	"GTString":               123,
	"GTTime":                 124,
	"GTDuration":             125,
	"GTJson":                 126,
	"GEInt":                  130,
	"GEReal":                 131,
	"GEDecimal":              132,
	"GEString":               133,
	"GETime":                 134,
	"GEDuration":             135,
	"GEJson":                 136,
	"EQInt":                  140,
	"EQReal":                 141,
	"EQDecimal":              142,
	"EQString":               143,
	"EQTime":                 144,
	"EQDuration":             145,
	"EQJson":                 146,
	"NEInt":                  150,
	"NEReal":                 151,
	"NEDecimal":              152,
	"NEString":               153,
	"NETime":                 154,
	"NEDuration":             155,
	"NEJson":                 156,
	"NullEQInt":              160,
	"NullEQReal":             161,
	"NullEQDecimal":          162,
	"NullEQString":           163,
	"NullEQTime":             164,
	"NullEQDuration":         165,
	"NullEQJson":             166,
	"PlusReal":               200,
	"PlusDecimal":            201,
	"PlusInt":                203,
	"MinusReal":              204,
	"MinusDecimal":           205,
	"MinusInt":               207,
	"MultiplyReal":           208,
	"MultiplyDecimal":        209,
	"MultiplyInt":            210,
	"DivideReal":             211,
	"DivideDecimal":          212,
	"AbsInt":                 2101,
	"AbsUInt":                2102,
	"AbsReal":                2103,
	"AbsDecimal":             2104,
	"CeilIntToDec":           2105,
	"CeilIntToInt":           2106,
	"CeilDecToInt":           2107,
	"CeilDecToDec":           2108,
	"CeilReal":               2109,
	"FloorIntToDec":          2110,
	"FloorIntToInt":          2111,
	"FloorDecToInt":          2112,
	"FloorDecToDec":          2113,
	"FloorReal":              2114,
	"LogicalAnd":             3101,
	"LogicalOr":              3102,
	"LogicalXor":             3103,
	"UnaryNot":               3104,
	"UnaryMinusInt":          3108,
	"UnaryMinusReal":         3109,
	"UnaryMinusDecimal":      3110,
	"DecimalIsNull":          3111,
	"DurationIsNull":         3112,
	"RealIsNull":             3113,
	"StringIsNull":           3114,
	"TimeIsNull":             3115,
	"IntIsNull":              3116,
	"JsonIsNull":             3117,
	"BitAndSig":              3118,
	"BitOrSig":               3119,
	"BitXorSig":              3120,
	"BitNegSig":              3121,
	"IntIsTrue":              3122,
	"RealIsTrue":             3123,
	"DecimalIsTrue":          3124,
	"IntIsFalse":             3125,
	"RealIsFalse":            3126,
	"DecimalIsFalse":         3127,
	"InInt":                  4001,
	"InReal":                 4002,
	"InDecimal":              4003,
	"InString":               4004,
	"InTime":                 4005,
	"InDuration":             4006,
	"InJson":                 4007,
	"IfNullInt":              4101,
	"IfNullReal":             4102,
	"IfNullDecimal":          4103,
	"IfNullString":           4104,
	"IfNullTime":             4105,
	"IfNullDuration":         4106,
	"IfInt":                  4107,
	"IfReal":                 4108,
	"IfDecimal":              4109,
	"IfString":               4110,
	"IfTime":                 4111,
	"IfDuration":             4112,
	"IfNullJson":             4113,
	"IfJson":                 4114,
	"CoalesceInt":            4201,
	"CoalesceReal":           4202,
	"CoalesceDecimal":        4203,
	"CoalesceString":         4204,
	"CoalesceTime":           4205,
	"CoalesceDuration":       4206,
	"CoalesceJson":           4207,
	"CaseWhenInt":            4208,
	"CaseWhenReal":           4209,
	"CaseWhenDecimal":        4210,
	"CaseWhenString":         4211,
	"CaseWhenTime":           4212,
	"CaseWhenDuration":       4213,
	"CaseWhenJson":           4214,
	"LikeSig":                4310,
	"JsonExtractSig":         5001,
	"JsonUnquoteSig":         5002,
	"JsonTypeSig":            5003,
	"JsonSetSig":             5004,
	"JsonInsertSig":          5005,
	"JsonReplaceSig":         5006,
	"JsonRemoveSig":          5007,
	"JsonMergeSig":           5008,
	"JsonObjectSig":          5009,
	"JsonArraySig":           5010,
	"DateFormatSig":          6001,
}

func (x ScalarFuncSig) Enum() *ScalarFuncSig {
	p := new(ScalarFuncSig)
	*p = x
	return p
}
func (x ScalarFuncSig) String() string {
	return proto.EnumName(ScalarFuncSig_name, int32(x))
}
func (x *ScalarFuncSig) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(ScalarFuncSig_value, data, "ScalarFuncSig")
	if err != nil {
		return err
	}
	*x = ScalarFuncSig(value)
	return nil
}
func (ScalarFuncSig) EnumDescriptor() ([]byte, []int) { return fileDescriptorExpression, []int{1} }

type FieldType struct {
	Tp               int32  `protobuf:"varint,1,opt,name=tp" json:"tp"`
	Flag             uint32 `protobuf:"varint,2,opt,name=flag" json:"flag"`
	Flen             int32  `protobuf:"varint,3,opt,name=flen" json:"flen"`
	Decimal          int32  `protobuf:"varint,4,opt,name=decimal" json:"decimal"`
	Collate          int32  `protobuf:"varint,5,opt,name=collate" json:"collate"`
	Charset          string `protobuf:"bytes,6,opt,name=charset" json:"charset"`
	XXX_unrecognized []byte `json:"-"`
}

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

func (m *FieldType) GetTp() int32 {
	if m != nil {
		return m.Tp
	}
	return 0
}

func (m *FieldType) GetFlag() uint32 {
	if m != nil {
		return m.Flag
	}
	return 0
}

func (m *FieldType) GetFlen() int32 {
	if m != nil {
		return m.Flen
	}
	return 0
}

func (m *FieldType) GetDecimal() int32 {
	if m != nil {
		return m.Decimal
	}
	return 0
}

func (m *FieldType) GetCollate() int32 {
	if m != nil {
		return m.Collate
	}
	return 0
}

func (m *FieldType) GetCharset() string {
	if m != nil {
		return m.Charset
	}
	return ""
}

// Evaluators should implement evaluation functions for every expression type.
type Expr struct {
	Tp               ExprType      `protobuf:"varint,1,opt,name=tp,enum=tipb.ExprType" json:"tp"`
	Val              []byte        `protobuf:"bytes,2,opt,name=val" json:"val,omitempty"`
	Children         []*Expr       `protobuf:"bytes,3,rep,name=children" json:"children,omitempty"`
	Sig              ScalarFuncSig `protobuf:"varint,4,opt,name=sig,enum=tipb.ScalarFuncSig" json:"sig"`
	FieldType        *FieldType    `protobuf:"bytes,5,opt,name=field_type,json=fieldType" json:"field_type,omitempty"`
	XXX_unrecognized []byte        `json:"-"`
}

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

func (m *Expr) GetTp() ExprType {
	if m != nil {
		return m.Tp
	}
	return ExprType_Null
}

func (m *Expr) GetVal() []byte {
	if m != nil {
		return m.Val
	}
	return nil
}

func (m *Expr) GetChildren() []*Expr {
	if m != nil {
		return m.Children
	}
	return nil
}

func (m *Expr) GetSig() ScalarFuncSig {
	if m != nil {
		return m.Sig
	}
	return ScalarFuncSig_CastIntAsInt
}

func (m *Expr) GetFieldType() *FieldType {
	if m != nil {
		return m.FieldType
	}
	return nil
}

// ByItem type for group by and order by.
type ByItem struct {
	Expr             *Expr  `protobuf:"bytes,1,opt,name=expr" json:"expr,omitempty"`
	Desc             bool   `protobuf:"varint,2,opt,name=desc" json:"desc"`
	XXX_unrecognized []byte `json:"-"`
}

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

func (m *ByItem) GetExpr() *Expr {
	if m != nil {
		return m.Expr
	}
	return nil
}

func (m *ByItem) GetDesc() bool {
	if m != nil {
		return m.Desc
	}
	return false
}

func init() {
	proto.RegisterType((*FieldType)(nil), "tipb.FieldType")
	proto.RegisterType((*Expr)(nil), "tipb.Expr")
	proto.RegisterType((*ByItem)(nil), "tipb.ByItem")
	proto.RegisterEnum("tipb.ExprType", ExprType_name, ExprType_value)
	proto.RegisterEnum("tipb.ScalarFuncSig", ScalarFuncSig_name, ScalarFuncSig_value)
}
func (m *FieldType) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *FieldType) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	dAtA[i] = 0x8
	i++
	i = encodeVarintExpression(dAtA, i, uint64(m.Tp))
	dAtA[i] = 0x10
	i++
	i = encodeVarintExpression(dAtA, i, uint64(m.Flag))
	dAtA[i] = 0x18
	i++
	i = encodeVarintExpression(dAtA, i, uint64(m.Flen))
	dAtA[i] = 0x20
	i++
	i = encodeVarintExpression(dAtA, i, uint64(m.Decimal))
	dAtA[i] = 0x28
	i++
	i = encodeVarintExpression(dAtA, i, uint64(m.Collate))
	dAtA[i] = 0x32
	i++
	i = encodeVarintExpression(dAtA, i, uint64(len(m.Charset)))
	i += copy(dAtA[i:], m.Charset)
	if m.XXX_unrecognized != nil {
		i += copy(dAtA[i:], m.XXX_unrecognized)
	}
	return i, nil
}

func (m *Expr) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Expr) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	dAtA[i] = 0x8
	i++
	i = encodeVarintExpression(dAtA, i, uint64(m.Tp))
	if m.Val != nil {
		dAtA[i] = 0x12
		i++
		i = encodeVarintExpression(dAtA, i, uint64(len(m.Val)))
		i += copy(dAtA[i:], m.Val)
	}
	if len(m.Children) > 0 {
		for _, msg := range m.Children {
			dAtA[i] = 0x1a
			i++
			i = encodeVarintExpression(dAtA, i, uint64(msg.Size()))
			n, err := msg.MarshalTo(dAtA[i:])
			if err != nil {
				return 0, err
			}
			i += n
		}
	}
	dAtA[i] = 0x20
	i++
	i = encodeVarintExpression(dAtA, i, uint64(m.Sig))
	if m.FieldType != nil {
		dAtA[i] = 0x2a
		i++
		i = encodeVarintExpression(dAtA, i, uint64(m.FieldType.Size()))
		n1, err := m.FieldType.MarshalTo(dAtA[i:])
		if err != nil {
			return 0, err
		}
		i += n1
	}
	if m.XXX_unrecognized != nil {
		i += copy(dAtA[i:], m.XXX_unrecognized)
	}
	return i, nil
}

func (m *ByItem) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *ByItem) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	if m.Expr != nil {
		dAtA[i] = 0xa
		i++
		i = encodeVarintExpression(dAtA, i, uint64(m.Expr.Size()))
		n2, err := m.Expr.MarshalTo(dAtA[i:])
		if err != nil {
			return 0, err
		}
		i += n2
	}
	dAtA[i] = 0x10
	i++
	if m.Desc {
		dAtA[i] = 1
	} else {
		dAtA[i] = 0
	}
	i++
	if m.XXX_unrecognized != nil {
		i += copy(dAtA[i:], m.XXX_unrecognized)
	}
	return i, nil
}

func encodeFixed64Expression(dAtA []byte, offset int, v uint64) int {
	dAtA[offset] = uint8(v)
	dAtA[offset+1] = uint8(v >> 8)
	dAtA[offset+2] = uint8(v >> 16)
	dAtA[offset+3] = uint8(v >> 24)
	dAtA[offset+4] = uint8(v >> 32)
	dAtA[offset+5] = uint8(v >> 40)
	dAtA[offset+6] = uint8(v >> 48)
	dAtA[offset+7] = uint8(v >> 56)
	return offset + 8
}
func encodeFixed32Expression(dAtA []byte, offset int, v uint32) int {
	dAtA[offset] = uint8(v)
	dAtA[offset+1] = uint8(v >> 8)
	dAtA[offset+2] = uint8(v >> 16)
	dAtA[offset+3] = uint8(v >> 24)
	return offset + 4
}
func encodeVarintExpression(dAtA []byte, offset int, v uint64) int {
	for v >= 1<<7 {
		dAtA[offset] = uint8(v&0x7f | 0x80)
		v >>= 7
		offset++
	}
	dAtA[offset] = uint8(v)
	return offset + 1
}
func (m *FieldType) Size() (n int) {
	var l int
	_ = l
	n += 1 + sovExpression(uint64(m.Tp))
	n += 1 + sovExpression(uint64(m.Flag))
	n += 1 + sovExpression(uint64(m.Flen))
	n += 1 + sovExpression(uint64(m.Decimal))
	n += 1 + sovExpression(uint64(m.Collate))
	l = len(m.Charset)
	n += 1 + l + sovExpression(uint64(l))
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *Expr) Size() (n int) {
	var l int
	_ = l
	n += 1 + sovExpression(uint64(m.Tp))
	if m.Val != nil {
		l = len(m.Val)
		n += 1 + l + sovExpression(uint64(l))
	}
	if len(m.Children) > 0 {
		for _, e := range m.Children {
			l = e.Size()
			n += 1 + l + sovExpression(uint64(l))
		}
	}
	n += 1 + sovExpression(uint64(m.Sig))
	if m.FieldType != nil {
		l = m.FieldType.Size()
		n += 1 + l + sovExpression(uint64(l))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *ByItem) Size() (n int) {
	var l int
	_ = l
	if m.Expr != nil {
		l = m.Expr.Size()
		n += 1 + l + sovExpression(uint64(l))
	}
	n += 2
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func sovExpression(x uint64) (n int) {
	for {
		n++
		x >>= 7
		if x == 0 {
			break
		}
	}
	return n
}
func sozExpression(x uint64) (n int) {
	return sovExpression(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (m *FieldType) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowExpression
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: FieldType: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: FieldType: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType)
			}
			m.Tp = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Tp |= (int32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 2:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Flag", wireType)
			}
			m.Flag = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Flag |= (uint32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 3:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Flen", wireType)
			}
			m.Flen = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Flen |= (int32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 4:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Decimal", wireType)
			}
			m.Decimal = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Decimal |= (int32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 5:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Collate", wireType)
			}
			m.Collate = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Collate |= (int32(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 6:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Charset", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= (uint64(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthExpression
			}
			postIndex := iNdEx + intStringLen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Charset = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		default:
			iNdEx = preIndex
			skippy, err := skipExpression(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if skippy < 0 {
				return ErrInvalidLengthExpression
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *Expr) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowExpression
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Expr: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Expr: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Tp", wireType)
			}
			m.Tp = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Tp |= (ExprType(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Val", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthExpression
			}
			postIndex := iNdEx + byteLen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Val = append(m.Val[:0], dAtA[iNdEx:postIndex]...)
			if m.Val == nil {
				m.Val = []byte{}
			}
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Children", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthExpression
			}
			postIndex := iNdEx + msglen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.Children = append(m.Children, &Expr{})
			if err := m.Children[len(m.Children)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 4:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Sig", wireType)
			}
			m.Sig = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Sig |= (ScalarFuncSig(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 5:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field FieldType", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthExpression
			}
			postIndex := iNdEx + msglen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.FieldType == nil {
				m.FieldType = &FieldType{}
			}
			if err := m.FieldType.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		default:
			iNdEx = preIndex
			skippy, err := skipExpression(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if skippy < 0 {
				return ErrInvalidLengthExpression
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func (m *ByItem) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowExpression
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: ByItem: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: ByItem: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Expr", wireType)
			}
			var msglen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				msglen |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if msglen < 0 {
				return ErrInvalidLengthExpression
			}
			postIndex := iNdEx + msglen
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if m.Expr == nil {
				m.Expr = &Expr{}
			}
			if err := m.Expr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 2:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Desc", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.Desc = bool(v != 0)
		default:
			iNdEx = preIndex
			skippy, err := skipExpression(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if skippy < 0 {
				return ErrInvalidLengthExpression
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func skipExpression(dAtA []byte) (n int, err error) {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return 0, ErrIntOverflowExpression
			}
			if iNdEx >= l {
				return 0, io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		wireType := int(wire & 0x7)
		switch wireType {
		case 0:
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				iNdEx++
				if dAtA[iNdEx-1] < 0x80 {
					break
				}
			}
			return iNdEx, nil
		case 1:
			iNdEx += 8
			return iNdEx, nil
		case 2:
			var length int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowExpression
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				length |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			iNdEx += length
			if length < 0 {
				return 0, ErrInvalidLengthExpression
			}
			return iNdEx, nil
		case 3:
			for {
				var innerWire uint64
				var start int = iNdEx
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return 0, ErrIntOverflowExpression
					}
					if iNdEx >= l {
						return 0, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					innerWire |= (uint64(b) & 0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				innerWireType := int(innerWire & 0x7)
				if innerWireType == 4 {
					break
				}
				next, err := skipExpression(dAtA[start:])
				if err != nil {
					return 0, err
				}
				iNdEx = start + next
			}
			return iNdEx, nil
		case 4:
			return iNdEx, nil
		case 5:
			iNdEx += 4
			return iNdEx, nil
		default:
			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
		}
	}
	panic("unreachable")
}

var (
	ErrInvalidLengthExpression = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowExpression   = fmt.Errorf("proto: integer overflow")
)

func init() { proto.RegisterFile("expression.proto", fileDescriptorExpression) }

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