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

package pem

import (
	fmt "fmt"
	rpc "github.com/celer-network/goCeler/rpc"
	proto "github.com/golang/protobuf/proto"
	math "math"
)

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

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

// Next tag: 19
type PayMessageType int32

const (
	PayMessageType_UNDEFINED_TYPE                   PayMessageType = 0
	PayMessageType_COND_PAY_REQUEST                 PayMessageType = 1
	PayMessageType_COND_PAY_RESPONSE                PayMessageType = 2
	PayMessageType_COND_PAY_RECEIPT                 PayMessageType = 3
	PayMessageType_REVEAL_SECRET                    PayMessageType = 4
	PayMessageType_REVEAL_SECRET_ACK                PayMessageType = 5
	PayMessageType_PAY_SETTLE_PROOF                 PayMessageType = 6
	PayMessageType_PAY_SETTLE_REQUEST               PayMessageType = 7
	PayMessageType_PAY_SETTLE_RESPONSE              PayMessageType = 8
	PayMessageType_SEND_TOKEN_API                   PayMessageType = 9
	PayMessageType_SRC_SETTLE_EXPIRED_PAY_API       PayMessageType = 10
	PayMessageType_DST_SETTLE_EXPIRED_PAY_API       PayMessageType = 11
	PayMessageType_CONFIRM_ON_CHAIN_PAY_API         PayMessageType = 12
	PayMessageType_REJECT_BOOLEAN_PAY_API           PayMessageType = 13
	PayMessageType_SETTLE_ON_CHAIN_RESOLVED_PAY_API PayMessageType = 14
	PayMessageType_WITHDRAW_REQUEST                 PayMessageType = 15
	PayMessageType_WITHDRAW_RESPONSE                PayMessageType = 16
	PayMessageType_CONFIRM_BOOLEAN_PAY_API          PayMessageType = 17
	PayMessageType_ROUTING_REQUEST                  PayMessageType = 18
)

var PayMessageType_name = map[int32]string{
	0:  "UNDEFINED_TYPE",
	1:  "COND_PAY_REQUEST",
	2:  "COND_PAY_RESPONSE",
	3:  "COND_PAY_RECEIPT",
	4:  "REVEAL_SECRET",
	5:  "REVEAL_SECRET_ACK",
	6:  "PAY_SETTLE_PROOF",
	7:  "PAY_SETTLE_REQUEST",
	8:  "PAY_SETTLE_RESPONSE",
	9:  "SEND_TOKEN_API",
	10: "SRC_SETTLE_EXPIRED_PAY_API",
	11: "DST_SETTLE_EXPIRED_PAY_API",
	12: "CONFIRM_ON_CHAIN_PAY_API",
	13: "REJECT_BOOLEAN_PAY_API",
	14: "SETTLE_ON_CHAIN_RESOLVED_PAY_API",
	15: "WITHDRAW_REQUEST",
	16: "WITHDRAW_RESPONSE",
	17: "CONFIRM_BOOLEAN_PAY_API",
	18: "ROUTING_REQUEST",
}

var PayMessageType_value = map[string]int32{
	"UNDEFINED_TYPE":                   0,
	"COND_PAY_REQUEST":                 1,
	"COND_PAY_RESPONSE":                2,
	"COND_PAY_RECEIPT":                 3,
	"REVEAL_SECRET":                    4,
	"REVEAL_SECRET_ACK":                5,
	"PAY_SETTLE_PROOF":                 6,
	"PAY_SETTLE_REQUEST":               7,
	"PAY_SETTLE_RESPONSE":              8,
	"SEND_TOKEN_API":                   9,
	"SRC_SETTLE_EXPIRED_PAY_API":       10,
	"DST_SETTLE_EXPIRED_PAY_API":       11,
	"CONFIRM_ON_CHAIN_PAY_API":         12,
	"REJECT_BOOLEAN_PAY_API":           13,
	"SETTLE_ON_CHAIN_RESOLVED_PAY_API": 14,
	"WITHDRAW_REQUEST":                 15,
	"WITHDRAW_RESPONSE":                16,
	"CONFIRM_BOOLEAN_PAY_API":          17,
	"ROUTING_REQUEST":                  18,
}

func (x PayMessageType) String() string {
	return proto.EnumName(PayMessageType_name, int32(x))
}

func (PayMessageType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_bd0bc1b1d60b57a8, []int{0}
}

type CrossNetPayState int32

const (
	CrossNetPayState_XNET_NULL    CrossNetPayState = 0
	CrossNetPayState_XNET_SRC     CrossNetPayState = 1
	CrossNetPayState_XNET_DST     CrossNetPayState = 2
	CrossNetPayState_XNET_INGRESS CrossNetPayState = 3
	CrossNetPayState_XNET_EGRESS  CrossNetPayState = 4
)

var CrossNetPayState_name = map[int32]string{
	0: "XNET_NULL",
	1: "XNET_SRC",
	2: "XNET_DST",
	3: "XNET_INGRESS",
	4: "XNET_EGRESS",
}

var CrossNetPayState_value = map[string]int32{
	"XNET_NULL":    0,
	"XNET_SRC":     1,
	"XNET_DST":     2,
	"XNET_INGRESS": 3,
	"XNET_EGRESS":  4,
}

func (x CrossNetPayState) String() string {
	return proto.EnumName(CrossNetPayState_name, int32(x))
}

func (CrossNetPayState) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_bd0bc1b1d60b57a8, []int{1}
}

// Next tag: 30
type PayEventMessage struct {
	Type PayMessageType `protobuf:"varint,1,opt,name=type,proto3,enum=pem.PayMessageType" json:"type,omitempty"`
	// pay_id this message is about.
	PayId string `protobuf:"bytes,2,opt,name=pay_id,json=payId,proto3" json:"pay_id,omitempty"`
	// token used by the pay.
	Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"`
	// message src
	Src string `protobuf:"bytes,5,opt,name=src,proto3" json:"src,omitempty"`
	// message dst
	Dst string `protobuf:"bytes,6,opt,name=dst,proto3" json:"dst,omitempty"`
	// direct peer the message comes from.
	MsgFrom string `protobuf:"bytes,7,opt,name=msg_from,json=msgFrom,proto3" json:"msg_from,omitempty"`
	// secret of the pay hash lock.
	Secret string `protobuf:"bytes,8,opt,name=secret,proto3" json:"secret,omitempty"`
	// reason of pay settlement
	SettleReason rpc.PaymentSettleReason `protobuf:"varint,9,opt,name=settle_reason,json=settleReason,proto3,enum=rpc.PaymentSettleReason" json:"settle_reason,omitempty"`
	// direct peer the message goes to.
	MsgTo string `protobuf:"bytes,10,opt,name=msg_to,json=msgTo,proto3" json:"msg_to,omitempty"`
	// which machine processed the message
	Machine string `protobuf:"bytes,11,opt,name=machine,proto3" json:"machine,omitempty"`
	// cid this message comes from
	FromCid string `protobuf:"bytes,12,opt,name=from_cid,json=fromCid,proto3" json:"from_cid,omitempty"`
	// cid this message goes to
	ToCid string `protobuf:"bytes,13,opt,name=to_cid,json=toCid,proto3" json:"to_cid,omitempty"`
	// error occured during message processing
	Error []string `protobuf:"bytes,14,rep,name=error,proto3" json:"error,omitempty"`
	// start timestamp of message processing
	StartTimeStamp int64 `protobuf:"varint,15,opt,name=start_time_stamp,json=startTimeStamp,proto3" json:"start_time_stamp,omitempty"`
	// end timestamp of message processing
	EndTimeStamp int64 `protobuf:"varint,16,opt,name=end_time_stamp,json=endTimeStamp,proto3" json:"end_time_stamp,omitempty"`
	// execution time in milliseconds
	ExecutionTimeMs float32 `protobuf:"fixed32,17,opt,name=execution_time_ms,json=executionTimeMs,proto3" json:"execution_time_ms,omitempty"`
	// if exists in ack msg, the message may contains several pays and this field is complete pay id set.
	PayIds []string `protobuf:"bytes,20,rep,name=pay_ids,json=payIds,proto3" json:"pay_ids,omitempty"`
	// if exists in nack msg, the message may contains several pays and this field is complete pay id set.
	NackPayIds []string `protobuf:"bytes,21,rep,name=nack_pay_ids,json=nackPayIds,proto3" json:"nack_pay_ids,omitempty"`
	// indicating if this machine that processes the message is forwarding out message outside the OSP.
	ForwardingExternal bool `protobuf:"varint,22,opt,name=forwarding_external,json=forwardingExternal,proto3" json:"forwarding_external,omitempty"`
	// simplex sequence numbers
	SeqNums *SimplexSeqNums `protobuf:"bytes,23,opt,name=seq_nums,json=seqNums,proto3" json:"seq_nums,omitempty"`
	// error returned in the nack message
	Nack *rpc.Error `protobuf:"bytes,24,opt,name=nack,proto3" json:"nack,omitempty"`
	// resend messages due to nack
	Resend []*PayEventMessage `protobuf:"bytes,25,rep,name=resend,proto3" json:"resend,omitempty"`
	// event is part of a direct-payment
	DirectPay bool `protobuf:"varint,26,opt,name=direct_pay,json=directPay,proto3" json:"direct_pay,omitempty"`
	// When filled, it means the node tries to delegate receiving the pay. This field logs delegation description
	DelegationDescription *rpc.DelegationDescription `protobuf:"bytes,27,opt,name=delegation_description,json=delegationDescription,proto3" json:"delegation_description,omitempty"`
	// pay routing path
	PayPath string `protobuf:"bytes,28,opt,name=pay_path,json=payPath,proto3" json:"pay_path,omitempty"`
	// cross net payment info
	Xnet                 *CrossNetInfo `protobuf:"bytes,29,opt,name=xnet,proto3" json:"xnet,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

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

func (m *PayEventMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PayEventMessage.Unmarshal(m, b)
}
func (m *PayEventMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PayEventMessage.Marshal(b, m, deterministic)
}
func (m *PayEventMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PayEventMessage.Merge(m, src)
}
func (m *PayEventMessage) XXX_Size() int {
	return xxx_messageInfo_PayEventMessage.Size(m)
}
func (m *PayEventMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_PayEventMessage.DiscardUnknown(m)
}

var xxx_messageInfo_PayEventMessage proto.InternalMessageInfo

func (m *PayEventMessage) GetType() PayMessageType {
	if m != nil {
		return m.Type
	}
	return PayMessageType_UNDEFINED_TYPE
}

func (m *PayEventMessage) GetPayId() string {
	if m != nil {
		return m.PayId
	}
	return ""
}

func (m *PayEventMessage) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

func (m *PayEventMessage) GetSrc() string {
	if m != nil {
		return m.Src
	}
	return ""
}

func (m *PayEventMessage) GetDst() string {
	if m != nil {
		return m.Dst
	}
	return ""
}

func (m *PayEventMessage) GetMsgFrom() string {
	if m != nil {
		return m.MsgFrom
	}
	return ""
}

func (m *PayEventMessage) GetSecret() string {
	if m != nil {
		return m.Secret
	}
	return ""
}

func (m *PayEventMessage) GetSettleReason() rpc.PaymentSettleReason {
	if m != nil {
		return m.SettleReason
	}
	return rpc.PaymentSettleReason_NONE
}

func (m *PayEventMessage) GetMsgTo() string {
	if m != nil {
		return m.MsgTo
	}
	return ""
}

func (m *PayEventMessage) GetMachine() string {
	if m != nil {
		return m.Machine
	}
	return ""
}

func (m *PayEventMessage) GetFromCid() string {
	if m != nil {
		return m.FromCid
	}
	return ""
}

func (m *PayEventMessage) GetToCid() string {
	if m != nil {
		return m.ToCid
	}
	return ""
}

func (m *PayEventMessage) GetError() []string {
	if m != nil {
		return m.Error
	}
	return nil
}

func (m *PayEventMessage) GetStartTimeStamp() int64 {
	if m != nil {
		return m.StartTimeStamp
	}
	return 0
}

func (m *PayEventMessage) GetEndTimeStamp() int64 {
	if m != nil {
		return m.EndTimeStamp
	}
	return 0
}

func (m *PayEventMessage) GetExecutionTimeMs() float32 {
	if m != nil {
		return m.ExecutionTimeMs
	}
	return 0
}

func (m *PayEventMessage) GetPayIds() []string {
	if m != nil {
		return m.PayIds
	}
	return nil
}

func (m *PayEventMessage) GetNackPayIds() []string {
	if m != nil {
		return m.NackPayIds
	}
	return nil
}

func (m *PayEventMessage) GetForwardingExternal() bool {
	if m != nil {
		return m.ForwardingExternal
	}
	return false
}

func (m *PayEventMessage) GetSeqNums() *SimplexSeqNums {
	if m != nil {
		return m.SeqNums
	}
	return nil
}

func (m *PayEventMessage) GetNack() *rpc.Error {
	if m != nil {
		return m.Nack
	}
	return nil
}

func (m *PayEventMessage) GetResend() []*PayEventMessage {
	if m != nil {
		return m.Resend
	}
	return nil
}

func (m *PayEventMessage) GetDirectPay() bool {
	if m != nil {
		return m.DirectPay
	}
	return false
}

func (m *PayEventMessage) GetDelegationDescription() *rpc.DelegationDescription {
	if m != nil {
		return m.DelegationDescription
	}
	return nil
}

func (m *PayEventMessage) GetPayPath() string {
	if m != nil {
		return m.PayPath
	}
	return ""
}

func (m *PayEventMessage) GetXnet() *CrossNetInfo {
	if m != nil {
		return m.Xnet
	}
	return nil
}

type SimplexSeqNums struct {
	// sequence number sent in outgoing message.
	Out uint64 `protobuf:"varint,1,opt,name=out,proto3" json:"out,omitempty"`
	// base of sequence number sent in outgoing message.
	OutBase uint64 `protobuf:"varint,2,opt,name=out_base,json=outBase,proto3" json:"out_base,omitempty"`
	// sequence number of received message
	In uint64 `protobuf:"varint,3,opt,name=in,proto3" json:"in,omitempty"`
	// base sequence number of received message
	InBase uint64 `protobuf:"varint,4,opt,name=in_base,json=inBase,proto3" json:"in_base,omitempty"`
	// stored co-signed simplex sequence number
	Stored uint64 `protobuf:"varint,5,opt,name=stored,proto3" json:"stored,omitempty"`
	// sequence number acked by the message
	Ack uint64 `protobuf:"varint,6,opt,name=ack,proto3" json:"ack,omitempty"`
	// highest inflight sequence number, usually needed only when there is a nack to trigger resend
	LastInflight         uint64   `protobuf:"varint,7,opt,name=last_inflight,json=lastInflight,proto3" json:"last_inflight,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *SimplexSeqNums) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SimplexSeqNums.Unmarshal(m, b)
}
func (m *SimplexSeqNums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SimplexSeqNums.Marshal(b, m, deterministic)
}
func (m *SimplexSeqNums) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SimplexSeqNums.Merge(m, src)
}
func (m *SimplexSeqNums) XXX_Size() int {
	return xxx_messageInfo_SimplexSeqNums.Size(m)
}
func (m *SimplexSeqNums) XXX_DiscardUnknown() {
	xxx_messageInfo_SimplexSeqNums.DiscardUnknown(m)
}

var xxx_messageInfo_SimplexSeqNums proto.InternalMessageInfo

func (m *SimplexSeqNums) GetOut() uint64 {
	if m != nil {
		return m.Out
	}
	return 0
}

func (m *SimplexSeqNums) GetOutBase() uint64 {
	if m != nil {
		return m.OutBase
	}
	return 0
}

func (m *SimplexSeqNums) GetIn() uint64 {
	if m != nil {
		return m.In
	}
	return 0
}

func (m *SimplexSeqNums) GetInBase() uint64 {
	if m != nil {
		return m.InBase
	}
	return 0
}

func (m *SimplexSeqNums) GetStored() uint64 {
	if m != nil {
		return m.Stored
	}
	return 0
}

func (m *SimplexSeqNums) GetAck() uint64 {
	if m != nil {
		return m.Ack
	}
	return 0
}

func (m *SimplexSeqNums) GetLastInflight() uint64 {
	if m != nil {
		return m.LastInflight
	}
	return 0
}

type CrossNetInfo struct {
	SrcNetId             uint64           `protobuf:"varint,1,opt,name=src_net_id,json=srcNetId,proto3" json:"src_net_id,omitempty"`
	DstNetId             uint64           `protobuf:"varint,2,opt,name=dst_net_id,json=dstNetId,proto3" json:"dst_net_id,omitempty"`
	OriginalPayId        string           `protobuf:"bytes,3,opt,name=original_pay_id,json=originalPayId,proto3" json:"original_pay_id,omitempty"`
	FromPayId            string           `protobuf:"bytes,4,opt,name=from_pay_id,json=fromPayId,proto3" json:"from_pay_id,omitempty"`
	ToBridgeAddr         string           `protobuf:"bytes,5,opt,name=to_bridge_addr,json=toBridgeAddr,proto3" json:"to_bridge_addr,omitempty"`
	ToBridgeNetId        uint64           `protobuf:"varint,6,opt,name=to_bridge_net_id,json=toBridgeNetId,proto3" json:"to_bridge_net_id,omitempty"`
	FromBridgeId         uint64           `protobuf:"varint,7,opt,name=from_bridge_id,json=fromBridgeId,proto3" json:"from_bridge_id,omitempty"`
	State                CrossNetPayState `protobuf:"varint,8,opt,name=state,proto3,enum=pem.CrossNetPayState" json:"state,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

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

func (m *CrossNetInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CrossNetInfo.Unmarshal(m, b)
}
func (m *CrossNetInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CrossNetInfo.Marshal(b, m, deterministic)
}
func (m *CrossNetInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CrossNetInfo.Merge(m, src)
}
func (m *CrossNetInfo) XXX_Size() int {
	return xxx_messageInfo_CrossNetInfo.Size(m)
}
func (m *CrossNetInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_CrossNetInfo.DiscardUnknown(m)
}

var xxx_messageInfo_CrossNetInfo proto.InternalMessageInfo

func (m *CrossNetInfo) GetSrcNetId() uint64 {
	if m != nil {
		return m.SrcNetId
	}
	return 0
}

func (m *CrossNetInfo) GetDstNetId() uint64 {
	if m != nil {
		return m.DstNetId
	}
	return 0
}

func (m *CrossNetInfo) GetOriginalPayId() string {
	if m != nil {
		return m.OriginalPayId
	}
	return ""
}

func (m *CrossNetInfo) GetFromPayId() string {
	if m != nil {
		return m.FromPayId
	}
	return ""
}

func (m *CrossNetInfo) GetToBridgeAddr() string {
	if m != nil {
		return m.ToBridgeAddr
	}
	return ""
}

func (m *CrossNetInfo) GetToBridgeNetId() uint64 {
	if m != nil {
		return m.ToBridgeNetId
	}
	return 0
}

func (m *CrossNetInfo) GetFromBridgeId() uint64 {
	if m != nil {
		return m.FromBridgeId
	}
	return 0
}

func (m *CrossNetInfo) GetState() CrossNetPayState {
	if m != nil {
		return m.State
	}
	return CrossNetPayState_XNET_NULL
}

func init() {
	proto.RegisterEnum("pem.PayMessageType", PayMessageType_name, PayMessageType_value)
	proto.RegisterEnum("pem.CrossNetPayState", CrossNetPayState_name, CrossNetPayState_value)
	proto.RegisterType((*PayEventMessage)(nil), "pem.PayEventMessage")
	proto.RegisterType((*SimplexSeqNums)(nil), "pem.SimplexSeqNums")
	proto.RegisterType((*CrossNetInfo)(nil), "pem.CrossNetInfo")
}

func init() { proto.RegisterFile("pem.proto", fileDescriptor_bd0bc1b1d60b57a8) }

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