routing: add outgoing channel restriction

This commit is contained in:
Joost Jager 2019-02-01 13:53:27 +01:00
parent c1ab49909f
commit 7c30a8c493
No known key found for this signature in database
GPG Key ID: A61B9D4C393C59C7
9 changed files with 735 additions and 579 deletions

@ -1951,6 +1951,12 @@ var sendPaymentCommand = cli.Command{
Name: "final_cltv_delta", Name: "final_cltv_delta",
Usage: "the number of blocks the last hop has to reveal the preimage", Usage: "the number of blocks the last hop has to reveal the preimage",
}, },
cli.Uint64Flag{
Name: "outgoing_chan_id",
Usage: "short channel id of the outgoing channel to " +
"use for the first hop of the payment",
Value: 0,
},
cli.BoolFlag{ cli.BoolFlag{
Name: "force, f", Name: "force, f",
Usage: "will skip payment request confirmation", Usage: "will skip payment request confirmation",
@ -2047,6 +2053,7 @@ func sendPayment(ctx *cli.Context) error {
PaymentRequest: ctx.String("pay_req"), PaymentRequest: ctx.String("pay_req"),
Amt: ctx.Int64("amt"), Amt: ctx.Int64("amt"),
FeeLimit: feeLimit, FeeLimit: feeLimit,
OutgoingChanId: ctx.Uint64("outgoing_chan_id"),
} }
return sendPaymentRequest(client, req) return sendPaymentRequest(client, req)
@ -2186,6 +2193,12 @@ var payInvoiceCommand = cli.Command{
Usage: "percentage of the payment's amount used as the" + Usage: "percentage of the payment's amount used as the" +
"maximum fee allowed when sending the payment", "maximum fee allowed when sending the payment",
}, },
cli.Uint64Flag{
Name: "outgoing_chan_id",
Usage: "short channel id of the outgoing channel to " +
"use for the first hop of the payment",
Value: 0,
},
cli.BoolFlag{ cli.BoolFlag{
Name: "force, f", Name: "force, f",
Usage: "will skip payment request confirmation", Usage: "will skip payment request confirmation",
@ -2225,6 +2238,7 @@ func payInvoice(ctx *cli.Context) error {
PaymentRequest: payReq, PaymentRequest: payReq,
Amt: ctx.Int64("amt"), Amt: ctx.Int64("amt"),
FeeLimit: feeLimit, FeeLimit: feeLimit,
OutgoingChanId: ctx.Uint64("outgoing_chan_id"),
} }
return sendPaymentRequest(client, req) return sendPaymentRequest(client, req)
} }

@ -49,7 +49,7 @@ func (x AddressType) String() string {
return proto.EnumName(AddressType_name, int32(x)) return proto.EnumName(AddressType_name, int32(x))
} }
func (AddressType) EnumDescriptor() ([]byte, []int) { func (AddressType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{0} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{0}
} }
type ChannelCloseSummary_ClosureType int32 type ChannelCloseSummary_ClosureType int32
@ -84,7 +84,7 @@ func (x ChannelCloseSummary_ClosureType) String() string {
return proto.EnumName(ChannelCloseSummary_ClosureType_name, int32(x)) return proto.EnumName(ChannelCloseSummary_ClosureType_name, int32(x))
} }
func (ChannelCloseSummary_ClosureType) EnumDescriptor() ([]byte, []int) { func (ChannelCloseSummary_ClosureType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{39, 0} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{39, 0}
} }
type ChannelEventUpdate_UpdateType int32 type ChannelEventUpdate_UpdateType int32
@ -113,7 +113,7 @@ func (x ChannelEventUpdate_UpdateType) String() string {
return proto.EnumName(ChannelEventUpdate_UpdateType_name, int32(x)) return proto.EnumName(ChannelEventUpdate_UpdateType_name, int32(x))
} }
func (ChannelEventUpdate_UpdateType) EnumDescriptor() ([]byte, []int) { func (ChannelEventUpdate_UpdateType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{60, 0} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{60, 0}
} }
type Invoice_InvoiceState int32 type Invoice_InvoiceState int32
@ -139,7 +139,7 @@ func (x Invoice_InvoiceState) String() string {
return proto.EnumName(Invoice_InvoiceState_name, int32(x)) return proto.EnumName(Invoice_InvoiceState_name, int32(x))
} }
func (Invoice_InvoiceState) EnumDescriptor() ([]byte, []int) { func (Invoice_InvoiceState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{89, 0} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{89, 0}
} }
type GenSeedRequest struct { type GenSeedRequest struct {
@ -160,7 +160,7 @@ func (m *GenSeedRequest) Reset() { *m = GenSeedRequest{} }
func (m *GenSeedRequest) String() string { return proto.CompactTextString(m) } func (m *GenSeedRequest) String() string { return proto.CompactTextString(m) }
func (*GenSeedRequest) ProtoMessage() {} func (*GenSeedRequest) ProtoMessage() {}
func (*GenSeedRequest) Descriptor() ([]byte, []int) { func (*GenSeedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{0} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{0}
} }
func (m *GenSeedRequest) XXX_Unmarshal(b []byte) error { func (m *GenSeedRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedRequest.Unmarshal(m, b) return xxx_messageInfo_GenSeedRequest.Unmarshal(m, b)
@ -215,7 +215,7 @@ func (m *GenSeedResponse) Reset() { *m = GenSeedResponse{} }
func (m *GenSeedResponse) String() string { return proto.CompactTextString(m) } func (m *GenSeedResponse) String() string { return proto.CompactTextString(m) }
func (*GenSeedResponse) ProtoMessage() {} func (*GenSeedResponse) ProtoMessage() {}
func (*GenSeedResponse) Descriptor() ([]byte, []int) { func (*GenSeedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{1} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{1}
} }
func (m *GenSeedResponse) XXX_Unmarshal(b []byte) error { func (m *GenSeedResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedResponse.Unmarshal(m, b) return xxx_messageInfo_GenSeedResponse.Unmarshal(m, b)
@ -280,7 +280,7 @@ func (m *InitWalletRequest) Reset() { *m = InitWalletRequest{} }
func (m *InitWalletRequest) String() string { return proto.CompactTextString(m) } func (m *InitWalletRequest) String() string { return proto.CompactTextString(m) }
func (*InitWalletRequest) ProtoMessage() {} func (*InitWalletRequest) ProtoMessage() {}
func (*InitWalletRequest) Descriptor() ([]byte, []int) { func (*InitWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{2} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{2}
} }
func (m *InitWalletRequest) XXX_Unmarshal(b []byte) error { func (m *InitWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletRequest.Unmarshal(m, b) return xxx_messageInfo_InitWalletRequest.Unmarshal(m, b)
@ -338,7 +338,7 @@ func (m *InitWalletResponse) Reset() { *m = InitWalletResponse{} }
func (m *InitWalletResponse) String() string { return proto.CompactTextString(m) } func (m *InitWalletResponse) String() string { return proto.CompactTextString(m) }
func (*InitWalletResponse) ProtoMessage() {} func (*InitWalletResponse) ProtoMessage() {}
func (*InitWalletResponse) Descriptor() ([]byte, []int) { func (*InitWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{3} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{3}
} }
func (m *InitWalletResponse) XXX_Unmarshal(b []byte) error { func (m *InitWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletResponse.Unmarshal(m, b) return xxx_messageInfo_InitWalletResponse.Unmarshal(m, b)
@ -380,7 +380,7 @@ func (m *UnlockWalletRequest) Reset() { *m = UnlockWalletRequest{} }
func (m *UnlockWalletRequest) String() string { return proto.CompactTextString(m) } func (m *UnlockWalletRequest) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletRequest) ProtoMessage() {} func (*UnlockWalletRequest) ProtoMessage() {}
func (*UnlockWalletRequest) Descriptor() ([]byte, []int) { func (*UnlockWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{4} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{4}
} }
func (m *UnlockWalletRequest) XXX_Unmarshal(b []byte) error { func (m *UnlockWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletRequest.Unmarshal(m, b) return xxx_messageInfo_UnlockWalletRequest.Unmarshal(m, b)
@ -424,7 +424,7 @@ func (m *UnlockWalletResponse) Reset() { *m = UnlockWalletResponse{} }
func (m *UnlockWalletResponse) String() string { return proto.CompactTextString(m) } func (m *UnlockWalletResponse) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletResponse) ProtoMessage() {} func (*UnlockWalletResponse) ProtoMessage() {}
func (*UnlockWalletResponse) Descriptor() ([]byte, []int) { func (*UnlockWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{5} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{5}
} }
func (m *UnlockWalletResponse) XXX_Unmarshal(b []byte) error { func (m *UnlockWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletResponse.Unmarshal(m, b) return xxx_messageInfo_UnlockWalletResponse.Unmarshal(m, b)
@ -462,7 +462,7 @@ func (m *ChangePasswordRequest) Reset() { *m = ChangePasswordRequest{} }
func (m *ChangePasswordRequest) String() string { return proto.CompactTextString(m) } func (m *ChangePasswordRequest) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordRequest) ProtoMessage() {} func (*ChangePasswordRequest) ProtoMessage() {}
func (*ChangePasswordRequest) Descriptor() ([]byte, []int) { func (*ChangePasswordRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{6} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{6}
} }
func (m *ChangePasswordRequest) XXX_Unmarshal(b []byte) error { func (m *ChangePasswordRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordRequest.Unmarshal(m, b) return xxx_messageInfo_ChangePasswordRequest.Unmarshal(m, b)
@ -506,7 +506,7 @@ func (m *ChangePasswordResponse) Reset() { *m = ChangePasswordResponse{}
func (m *ChangePasswordResponse) String() string { return proto.CompactTextString(m) } func (m *ChangePasswordResponse) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordResponse) ProtoMessage() {} func (*ChangePasswordResponse) ProtoMessage() {}
func (*ChangePasswordResponse) Descriptor() ([]byte, []int) { func (*ChangePasswordResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{7} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{7}
} }
func (m *ChangePasswordResponse) XXX_Unmarshal(b []byte) error { func (m *ChangePasswordResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordResponse.Unmarshal(m, b) return xxx_messageInfo_ChangePasswordResponse.Unmarshal(m, b)
@ -548,7 +548,7 @@ func (m *Utxo) Reset() { *m = Utxo{} }
func (m *Utxo) String() string { return proto.CompactTextString(m) } func (m *Utxo) String() string { return proto.CompactTextString(m) }
func (*Utxo) ProtoMessage() {} func (*Utxo) ProtoMessage() {}
func (*Utxo) Descriptor() ([]byte, []int) { func (*Utxo) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{8} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{8}
} }
func (m *Utxo) XXX_Unmarshal(b []byte) error { func (m *Utxo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Utxo.Unmarshal(m, b) return xxx_messageInfo_Utxo.Unmarshal(m, b)
@ -636,7 +636,7 @@ func (m *Transaction) Reset() { *m = Transaction{} }
func (m *Transaction) String() string { return proto.CompactTextString(m) } func (m *Transaction) String() string { return proto.CompactTextString(m) }
func (*Transaction) ProtoMessage() {} func (*Transaction) ProtoMessage() {}
func (*Transaction) Descriptor() ([]byte, []int) { func (*Transaction) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{9} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{9}
} }
func (m *Transaction) XXX_Unmarshal(b []byte) error { func (m *Transaction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Transaction.Unmarshal(m, b) return xxx_messageInfo_Transaction.Unmarshal(m, b)
@ -722,7 +722,7 @@ func (m *GetTransactionsRequest) Reset() { *m = GetTransactionsRequest{}
func (m *GetTransactionsRequest) String() string { return proto.CompactTextString(m) } func (m *GetTransactionsRequest) String() string { return proto.CompactTextString(m) }
func (*GetTransactionsRequest) ProtoMessage() {} func (*GetTransactionsRequest) ProtoMessage() {}
func (*GetTransactionsRequest) Descriptor() ([]byte, []int) { func (*GetTransactionsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{10} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{10}
} }
func (m *GetTransactionsRequest) XXX_Unmarshal(b []byte) error { func (m *GetTransactionsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetTransactionsRequest.Unmarshal(m, b) return xxx_messageInfo_GetTransactionsRequest.Unmarshal(m, b)
@ -754,7 +754,7 @@ func (m *TransactionDetails) Reset() { *m = TransactionDetails{} }
func (m *TransactionDetails) String() string { return proto.CompactTextString(m) } func (m *TransactionDetails) String() string { return proto.CompactTextString(m) }
func (*TransactionDetails) ProtoMessage() {} func (*TransactionDetails) ProtoMessage() {}
func (*TransactionDetails) Descriptor() ([]byte, []int) { func (*TransactionDetails) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{11} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{11}
} }
func (m *TransactionDetails) XXX_Unmarshal(b []byte) error { func (m *TransactionDetails) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransactionDetails.Unmarshal(m, b) return xxx_messageInfo_TransactionDetails.Unmarshal(m, b)
@ -795,7 +795,7 @@ func (m *FeeLimit) Reset() { *m = FeeLimit{} }
func (m *FeeLimit) String() string { return proto.CompactTextString(m) } func (m *FeeLimit) String() string { return proto.CompactTextString(m) }
func (*FeeLimit) ProtoMessage() {} func (*FeeLimit) ProtoMessage() {}
func (*FeeLimit) Descriptor() ([]byte, []int) { func (*FeeLimit) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{12} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{12}
} }
func (m *FeeLimit) XXX_Unmarshal(b []byte) error { func (m *FeeLimit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FeeLimit.Unmarshal(m, b) return xxx_messageInfo_FeeLimit.Unmarshal(m, b)
@ -941,17 +941,21 @@ type SendRequest struct {
// This value can be represented either as a percentage of the amount being // This value can be represented either as a percentage of the amount being
// sent, or as a fixed amount of the maximum fee the user is willing the pay to // sent, or as a fixed amount of the maximum fee the user is willing the pay to
// send the payment. // send the payment.
FeeLimit *FeeLimit `protobuf:"bytes,8,opt,name=fee_limit,json=feeLimit,proto3" json:"fee_limit,omitempty"` FeeLimit *FeeLimit `protobuf:"bytes,8,opt,name=fee_limit,json=feeLimit,proto3" json:"fee_limit,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` // *
XXX_unrecognized []byte `json:"-"` // The channel id of the channel that must be taken to the first hop. If zero,
XXX_sizecache int32 `json:"-"` // any channel may be used.
OutgoingChanId uint64 `protobuf:"varint,9,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *SendRequest) Reset() { *m = SendRequest{} } func (m *SendRequest) Reset() { *m = SendRequest{} }
func (m *SendRequest) String() string { return proto.CompactTextString(m) } func (m *SendRequest) String() string { return proto.CompactTextString(m) }
func (*SendRequest) ProtoMessage() {} func (*SendRequest) ProtoMessage() {}
func (*SendRequest) Descriptor() ([]byte, []int) { func (*SendRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{13} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{13}
} }
func (m *SendRequest) XXX_Unmarshal(b []byte) error { func (m *SendRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendRequest.Unmarshal(m, b) return xxx_messageInfo_SendRequest.Unmarshal(m, b)
@ -1027,6 +1031,13 @@ func (m *SendRequest) GetFeeLimit() *FeeLimit {
return nil return nil
} }
func (m *SendRequest) GetOutgoingChanId() uint64 {
if m != nil {
return m.OutgoingChanId
}
return 0
}
type SendResponse struct { type SendResponse struct {
PaymentError string `protobuf:"bytes,1,opt,name=payment_error,proto3" json:"payment_error,omitempty"` PaymentError string `protobuf:"bytes,1,opt,name=payment_error,proto3" json:"payment_error,omitempty"`
PaymentPreimage []byte `protobuf:"bytes,2,opt,name=payment_preimage,proto3" json:"payment_preimage,omitempty"` PaymentPreimage []byte `protobuf:"bytes,2,opt,name=payment_preimage,proto3" json:"payment_preimage,omitempty"`
@ -1041,7 +1052,7 @@ func (m *SendResponse) Reset() { *m = SendResponse{} }
func (m *SendResponse) String() string { return proto.CompactTextString(m) } func (m *SendResponse) String() string { return proto.CompactTextString(m) }
func (*SendResponse) ProtoMessage() {} func (*SendResponse) ProtoMessage() {}
func (*SendResponse) Descriptor() ([]byte, []int) { func (*SendResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{14} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{14}
} }
func (m *SendResponse) XXX_Unmarshal(b []byte) error { func (m *SendResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendResponse.Unmarshal(m, b) return xxx_messageInfo_SendResponse.Unmarshal(m, b)
@ -1111,7 +1122,7 @@ func (m *SendToRouteRequest) Reset() { *m = SendToRouteRequest{} }
func (m *SendToRouteRequest) String() string { return proto.CompactTextString(m) } func (m *SendToRouteRequest) String() string { return proto.CompactTextString(m) }
func (*SendToRouteRequest) ProtoMessage() {} func (*SendToRouteRequest) ProtoMessage() {}
func (*SendToRouteRequest) Descriptor() ([]byte, []int) { func (*SendToRouteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{15} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{15}
} }
func (m *SendToRouteRequest) XXX_Unmarshal(b []byte) error { func (m *SendToRouteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendToRouteRequest.Unmarshal(m, b) return xxx_messageInfo_SendToRouteRequest.Unmarshal(m, b)
@ -1176,7 +1187,7 @@ func (m *ChannelPoint) Reset() { *m = ChannelPoint{} }
func (m *ChannelPoint) String() string { return proto.CompactTextString(m) } func (m *ChannelPoint) String() string { return proto.CompactTextString(m) }
func (*ChannelPoint) ProtoMessage() {} func (*ChannelPoint) ProtoMessage() {}
func (*ChannelPoint) Descriptor() ([]byte, []int) { func (*ChannelPoint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{16} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{16}
} }
func (m *ChannelPoint) XXX_Unmarshal(b []byte) error { func (m *ChannelPoint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelPoint.Unmarshal(m, b) return xxx_messageInfo_ChannelPoint.Unmarshal(m, b)
@ -1322,7 +1333,7 @@ func (m *OutPoint) Reset() { *m = OutPoint{} }
func (m *OutPoint) String() string { return proto.CompactTextString(m) } func (m *OutPoint) String() string { return proto.CompactTextString(m) }
func (*OutPoint) ProtoMessage() {} func (*OutPoint) ProtoMessage() {}
func (*OutPoint) Descriptor() ([]byte, []int) { func (*OutPoint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{17} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{17}
} }
func (m *OutPoint) XXX_Unmarshal(b []byte) error { func (m *OutPoint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OutPoint.Unmarshal(m, b) return xxx_messageInfo_OutPoint.Unmarshal(m, b)
@ -1377,7 +1388,7 @@ func (m *LightningAddress) Reset() { *m = LightningAddress{} }
func (m *LightningAddress) String() string { return proto.CompactTextString(m) } func (m *LightningAddress) String() string { return proto.CompactTextString(m) }
func (*LightningAddress) ProtoMessage() {} func (*LightningAddress) ProtoMessage() {}
func (*LightningAddress) Descriptor() ([]byte, []int) { func (*LightningAddress) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{18} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{18}
} }
func (m *LightningAddress) XXX_Unmarshal(b []byte) error { func (m *LightningAddress) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LightningAddress.Unmarshal(m, b) return xxx_messageInfo_LightningAddress.Unmarshal(m, b)
@ -1427,7 +1438,7 @@ func (m *SendManyRequest) Reset() { *m = SendManyRequest{} }
func (m *SendManyRequest) String() string { return proto.CompactTextString(m) } func (m *SendManyRequest) String() string { return proto.CompactTextString(m) }
func (*SendManyRequest) ProtoMessage() {} func (*SendManyRequest) ProtoMessage() {}
func (*SendManyRequest) Descriptor() ([]byte, []int) { func (*SendManyRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{19} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{19}
} }
func (m *SendManyRequest) XXX_Unmarshal(b []byte) error { func (m *SendManyRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendManyRequest.Unmarshal(m, b) return xxx_messageInfo_SendManyRequest.Unmarshal(m, b)
@ -1480,7 +1491,7 @@ func (m *SendManyResponse) Reset() { *m = SendManyResponse{} }
func (m *SendManyResponse) String() string { return proto.CompactTextString(m) } func (m *SendManyResponse) String() string { return proto.CompactTextString(m) }
func (*SendManyResponse) ProtoMessage() {} func (*SendManyResponse) ProtoMessage() {}
func (*SendManyResponse) Descriptor() ([]byte, []int) { func (*SendManyResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{20} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{20}
} }
func (m *SendManyResponse) XXX_Unmarshal(b []byte) error { func (m *SendManyResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendManyResponse.Unmarshal(m, b) return xxx_messageInfo_SendManyResponse.Unmarshal(m, b)
@ -1530,7 +1541,7 @@ func (m *SendCoinsRequest) Reset() { *m = SendCoinsRequest{} }
func (m *SendCoinsRequest) String() string { return proto.CompactTextString(m) } func (m *SendCoinsRequest) String() string { return proto.CompactTextString(m) }
func (*SendCoinsRequest) ProtoMessage() {} func (*SendCoinsRequest) ProtoMessage() {}
func (*SendCoinsRequest) Descriptor() ([]byte, []int) { func (*SendCoinsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{21} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{21}
} }
func (m *SendCoinsRequest) XXX_Unmarshal(b []byte) error { func (m *SendCoinsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendCoinsRequest.Unmarshal(m, b) return xxx_messageInfo_SendCoinsRequest.Unmarshal(m, b)
@ -1597,7 +1608,7 @@ func (m *SendCoinsResponse) Reset() { *m = SendCoinsResponse{} }
func (m *SendCoinsResponse) String() string { return proto.CompactTextString(m) } func (m *SendCoinsResponse) String() string { return proto.CompactTextString(m) }
func (*SendCoinsResponse) ProtoMessage() {} func (*SendCoinsResponse) ProtoMessage() {}
func (*SendCoinsResponse) Descriptor() ([]byte, []int) { func (*SendCoinsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{22} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{22}
} }
func (m *SendCoinsResponse) XXX_Unmarshal(b []byte) error { func (m *SendCoinsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendCoinsResponse.Unmarshal(m, b) return xxx_messageInfo_SendCoinsResponse.Unmarshal(m, b)
@ -1638,7 +1649,7 @@ func (m *ListUnspentRequest) Reset() { *m = ListUnspentRequest{} }
func (m *ListUnspentRequest) String() string { return proto.CompactTextString(m) } func (m *ListUnspentRequest) String() string { return proto.CompactTextString(m) }
func (*ListUnspentRequest) ProtoMessage() {} func (*ListUnspentRequest) ProtoMessage() {}
func (*ListUnspentRequest) Descriptor() ([]byte, []int) { func (*ListUnspentRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{23} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{23}
} }
func (m *ListUnspentRequest) XXX_Unmarshal(b []byte) error { func (m *ListUnspentRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListUnspentRequest.Unmarshal(m, b) return xxx_messageInfo_ListUnspentRequest.Unmarshal(m, b)
@ -1684,7 +1695,7 @@ func (m *ListUnspentResponse) Reset() { *m = ListUnspentResponse{} }
func (m *ListUnspentResponse) String() string { return proto.CompactTextString(m) } func (m *ListUnspentResponse) String() string { return proto.CompactTextString(m) }
func (*ListUnspentResponse) ProtoMessage() {} func (*ListUnspentResponse) ProtoMessage() {}
func (*ListUnspentResponse) Descriptor() ([]byte, []int) { func (*ListUnspentResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{24} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{24}
} }
func (m *ListUnspentResponse) XXX_Unmarshal(b []byte) error { func (m *ListUnspentResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListUnspentResponse.Unmarshal(m, b) return xxx_messageInfo_ListUnspentResponse.Unmarshal(m, b)
@ -1723,7 +1734,7 @@ func (m *NewAddressRequest) Reset() { *m = NewAddressRequest{} }
func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) } func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) }
func (*NewAddressRequest) ProtoMessage() {} func (*NewAddressRequest) ProtoMessage() {}
func (*NewAddressRequest) Descriptor() ([]byte, []int) { func (*NewAddressRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{25} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{25}
} }
func (m *NewAddressRequest) XXX_Unmarshal(b []byte) error { func (m *NewAddressRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NewAddressRequest.Unmarshal(m, b) return xxx_messageInfo_NewAddressRequest.Unmarshal(m, b)
@ -1762,7 +1773,7 @@ func (m *NewAddressResponse) Reset() { *m = NewAddressResponse{} }
func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) } func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) }
func (*NewAddressResponse) ProtoMessage() {} func (*NewAddressResponse) ProtoMessage() {}
func (*NewAddressResponse) Descriptor() ([]byte, []int) { func (*NewAddressResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{26} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{26}
} }
func (m *NewAddressResponse) XXX_Unmarshal(b []byte) error { func (m *NewAddressResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NewAddressResponse.Unmarshal(m, b) return xxx_messageInfo_NewAddressResponse.Unmarshal(m, b)
@ -1801,7 +1812,7 @@ func (m *SignMessageRequest) Reset() { *m = SignMessageRequest{} }
func (m *SignMessageRequest) String() string { return proto.CompactTextString(m) } func (m *SignMessageRequest) String() string { return proto.CompactTextString(m) }
func (*SignMessageRequest) ProtoMessage() {} func (*SignMessageRequest) ProtoMessage() {}
func (*SignMessageRequest) Descriptor() ([]byte, []int) { func (*SignMessageRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{27} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{27}
} }
func (m *SignMessageRequest) XXX_Unmarshal(b []byte) error { func (m *SignMessageRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignMessageRequest.Unmarshal(m, b) return xxx_messageInfo_SignMessageRequest.Unmarshal(m, b)
@ -1840,7 +1851,7 @@ func (m *SignMessageResponse) Reset() { *m = SignMessageResponse{} }
func (m *SignMessageResponse) String() string { return proto.CompactTextString(m) } func (m *SignMessageResponse) String() string { return proto.CompactTextString(m) }
func (*SignMessageResponse) ProtoMessage() {} func (*SignMessageResponse) ProtoMessage() {}
func (*SignMessageResponse) Descriptor() ([]byte, []int) { func (*SignMessageResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{28} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{28}
} }
func (m *SignMessageResponse) XXX_Unmarshal(b []byte) error { func (m *SignMessageResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignMessageResponse.Unmarshal(m, b) return xxx_messageInfo_SignMessageResponse.Unmarshal(m, b)
@ -1881,7 +1892,7 @@ func (m *VerifyMessageRequest) Reset() { *m = VerifyMessageRequest{} }
func (m *VerifyMessageRequest) String() string { return proto.CompactTextString(m) } func (m *VerifyMessageRequest) String() string { return proto.CompactTextString(m) }
func (*VerifyMessageRequest) ProtoMessage() {} func (*VerifyMessageRequest) ProtoMessage() {}
func (*VerifyMessageRequest) Descriptor() ([]byte, []int) { func (*VerifyMessageRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{29} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{29}
} }
func (m *VerifyMessageRequest) XXX_Unmarshal(b []byte) error { func (m *VerifyMessageRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VerifyMessageRequest.Unmarshal(m, b) return xxx_messageInfo_VerifyMessageRequest.Unmarshal(m, b)
@ -1929,7 +1940,7 @@ func (m *VerifyMessageResponse) Reset() { *m = VerifyMessageResponse{} }
func (m *VerifyMessageResponse) String() string { return proto.CompactTextString(m) } func (m *VerifyMessageResponse) String() string { return proto.CompactTextString(m) }
func (*VerifyMessageResponse) ProtoMessage() {} func (*VerifyMessageResponse) ProtoMessage() {}
func (*VerifyMessageResponse) Descriptor() ([]byte, []int) { func (*VerifyMessageResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{30} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{30}
} }
func (m *VerifyMessageResponse) XXX_Unmarshal(b []byte) error { func (m *VerifyMessageResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VerifyMessageResponse.Unmarshal(m, b) return xxx_messageInfo_VerifyMessageResponse.Unmarshal(m, b)
@ -1978,7 +1989,7 @@ func (m *ConnectPeerRequest) Reset() { *m = ConnectPeerRequest{} }
func (m *ConnectPeerRequest) String() string { return proto.CompactTextString(m) } func (m *ConnectPeerRequest) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerRequest) ProtoMessage() {} func (*ConnectPeerRequest) ProtoMessage() {}
func (*ConnectPeerRequest) Descriptor() ([]byte, []int) { func (*ConnectPeerRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{31} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{31}
} }
func (m *ConnectPeerRequest) XXX_Unmarshal(b []byte) error { func (m *ConnectPeerRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConnectPeerRequest.Unmarshal(m, b) return xxx_messageInfo_ConnectPeerRequest.Unmarshal(m, b)
@ -2022,7 +2033,7 @@ func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} }
func (m *ConnectPeerResponse) String() string { return proto.CompactTextString(m) } func (m *ConnectPeerResponse) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerResponse) ProtoMessage() {} func (*ConnectPeerResponse) ProtoMessage() {}
func (*ConnectPeerResponse) Descriptor() ([]byte, []int) { func (*ConnectPeerResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{32} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{32}
} }
func (m *ConnectPeerResponse) XXX_Unmarshal(b []byte) error { func (m *ConnectPeerResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConnectPeerResponse.Unmarshal(m, b) return xxx_messageInfo_ConnectPeerResponse.Unmarshal(m, b)
@ -2054,7 +2065,7 @@ func (m *DisconnectPeerRequest) Reset() { *m = DisconnectPeerRequest{} }
func (m *DisconnectPeerRequest) String() string { return proto.CompactTextString(m) } func (m *DisconnectPeerRequest) String() string { return proto.CompactTextString(m) }
func (*DisconnectPeerRequest) ProtoMessage() {} func (*DisconnectPeerRequest) ProtoMessage() {}
func (*DisconnectPeerRequest) Descriptor() ([]byte, []int) { func (*DisconnectPeerRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{33} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{33}
} }
func (m *DisconnectPeerRequest) XXX_Unmarshal(b []byte) error { func (m *DisconnectPeerRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectPeerRequest.Unmarshal(m, b) return xxx_messageInfo_DisconnectPeerRequest.Unmarshal(m, b)
@ -2091,7 +2102,7 @@ func (m *DisconnectPeerResponse) Reset() { *m = DisconnectPeerResponse{}
func (m *DisconnectPeerResponse) String() string { return proto.CompactTextString(m) } func (m *DisconnectPeerResponse) String() string { return proto.CompactTextString(m) }
func (*DisconnectPeerResponse) ProtoMessage() {} func (*DisconnectPeerResponse) ProtoMessage() {}
func (*DisconnectPeerResponse) Descriptor() ([]byte, []int) { func (*DisconnectPeerResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{34} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{34}
} }
func (m *DisconnectPeerResponse) XXX_Unmarshal(b []byte) error { func (m *DisconnectPeerResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectPeerResponse.Unmarshal(m, b) return xxx_messageInfo_DisconnectPeerResponse.Unmarshal(m, b)
@ -2125,7 +2136,7 @@ func (m *HTLC) Reset() { *m = HTLC{} }
func (m *HTLC) String() string { return proto.CompactTextString(m) } func (m *HTLC) String() string { return proto.CompactTextString(m) }
func (*HTLC) ProtoMessage() {} func (*HTLC) ProtoMessage() {}
func (*HTLC) Descriptor() ([]byte, []int) { func (*HTLC) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{35} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{35}
} }
func (m *HTLC) XXX_Unmarshal(b []byte) error { func (m *HTLC) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_HTLC.Unmarshal(m, b) return xxx_messageInfo_HTLC.Unmarshal(m, b)
@ -2239,7 +2250,7 @@ func (m *Channel) Reset() { *m = Channel{} }
func (m *Channel) String() string { return proto.CompactTextString(m) } func (m *Channel) String() string { return proto.CompactTextString(m) }
func (*Channel) ProtoMessage() {} func (*Channel) ProtoMessage() {}
func (*Channel) Descriptor() ([]byte, []int) { func (*Channel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{36} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{36}
} }
func (m *Channel) XXX_Unmarshal(b []byte) error { func (m *Channel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Channel.Unmarshal(m, b) return xxx_messageInfo_Channel.Unmarshal(m, b)
@ -2399,7 +2410,7 @@ func (m *ListChannelsRequest) Reset() { *m = ListChannelsRequest{} }
func (m *ListChannelsRequest) String() string { return proto.CompactTextString(m) } func (m *ListChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*ListChannelsRequest) ProtoMessage() {} func (*ListChannelsRequest) ProtoMessage() {}
func (*ListChannelsRequest) Descriptor() ([]byte, []int) { func (*ListChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{37} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{37}
} }
func (m *ListChannelsRequest) XXX_Unmarshal(b []byte) error { func (m *ListChannelsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListChannelsRequest.Unmarshal(m, b) return xxx_messageInfo_ListChannelsRequest.Unmarshal(m, b)
@ -2459,7 +2470,7 @@ func (m *ListChannelsResponse) Reset() { *m = ListChannelsResponse{} }
func (m *ListChannelsResponse) String() string { return proto.CompactTextString(m) } func (m *ListChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*ListChannelsResponse) ProtoMessage() {} func (*ListChannelsResponse) ProtoMessage() {}
func (*ListChannelsResponse) Descriptor() ([]byte, []int) { func (*ListChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{38} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{38}
} }
func (m *ListChannelsResponse) XXX_Unmarshal(b []byte) error { func (m *ListChannelsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListChannelsResponse.Unmarshal(m, b) return xxx_messageInfo_ListChannelsResponse.Unmarshal(m, b)
@ -2516,7 +2527,7 @@ func (m *ChannelCloseSummary) Reset() { *m = ChannelCloseSummary{} }
func (m *ChannelCloseSummary) String() string { return proto.CompactTextString(m) } func (m *ChannelCloseSummary) String() string { return proto.CompactTextString(m) }
func (*ChannelCloseSummary) ProtoMessage() {} func (*ChannelCloseSummary) ProtoMessage() {}
func (*ChannelCloseSummary) Descriptor() ([]byte, []int) { func (*ChannelCloseSummary) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{39} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{39}
} }
func (m *ChannelCloseSummary) XXX_Unmarshal(b []byte) error { func (m *ChannelCloseSummary) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelCloseSummary.Unmarshal(m, b) return xxx_messageInfo_ChannelCloseSummary.Unmarshal(m, b)
@ -2622,7 +2633,7 @@ func (m *ClosedChannelsRequest) Reset() { *m = ClosedChannelsRequest{} }
func (m *ClosedChannelsRequest) String() string { return proto.CompactTextString(m) } func (m *ClosedChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelsRequest) ProtoMessage() {} func (*ClosedChannelsRequest) ProtoMessage() {}
func (*ClosedChannelsRequest) Descriptor() ([]byte, []int) { func (*ClosedChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{40} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{40}
} }
func (m *ClosedChannelsRequest) XXX_Unmarshal(b []byte) error { func (m *ClosedChannelsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClosedChannelsRequest.Unmarshal(m, b) return xxx_messageInfo_ClosedChannelsRequest.Unmarshal(m, b)
@ -2695,7 +2706,7 @@ func (m *ClosedChannelsResponse) Reset() { *m = ClosedChannelsResponse{}
func (m *ClosedChannelsResponse) String() string { return proto.CompactTextString(m) } func (m *ClosedChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelsResponse) ProtoMessage() {} func (*ClosedChannelsResponse) ProtoMessage() {}
func (*ClosedChannelsResponse) Descriptor() ([]byte, []int) { func (*ClosedChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{41} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{41}
} }
func (m *ClosedChannelsResponse) XXX_Unmarshal(b []byte) error { func (m *ClosedChannelsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClosedChannelsResponse.Unmarshal(m, b) return xxx_messageInfo_ClosedChannelsResponse.Unmarshal(m, b)
@ -2748,7 +2759,7 @@ func (m *Peer) Reset() { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) } func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage() {} func (*Peer) ProtoMessage() {}
func (*Peer) Descriptor() ([]byte, []int) { func (*Peer) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{42} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{42}
} }
func (m *Peer) XXX_Unmarshal(b []byte) error { func (m *Peer) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Peer.Unmarshal(m, b) return xxx_messageInfo_Peer.Unmarshal(m, b)
@ -2834,7 +2845,7 @@ func (m *ListPeersRequest) Reset() { *m = ListPeersRequest{} }
func (m *ListPeersRequest) String() string { return proto.CompactTextString(m) } func (m *ListPeersRequest) String() string { return proto.CompactTextString(m) }
func (*ListPeersRequest) ProtoMessage() {} func (*ListPeersRequest) ProtoMessage() {}
func (*ListPeersRequest) Descriptor() ([]byte, []int) { func (*ListPeersRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{43} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{43}
} }
func (m *ListPeersRequest) XXX_Unmarshal(b []byte) error { func (m *ListPeersRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPeersRequest.Unmarshal(m, b) return xxx_messageInfo_ListPeersRequest.Unmarshal(m, b)
@ -2866,7 +2877,7 @@ func (m *ListPeersResponse) Reset() { *m = ListPeersResponse{} }
func (m *ListPeersResponse) String() string { return proto.CompactTextString(m) } func (m *ListPeersResponse) String() string { return proto.CompactTextString(m) }
func (*ListPeersResponse) ProtoMessage() {} func (*ListPeersResponse) ProtoMessage() {}
func (*ListPeersResponse) Descriptor() ([]byte, []int) { func (*ListPeersResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{44} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{44}
} }
func (m *ListPeersResponse) XXX_Unmarshal(b []byte) error { func (m *ListPeersResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPeersResponse.Unmarshal(m, b) return xxx_messageInfo_ListPeersResponse.Unmarshal(m, b)
@ -2903,7 +2914,7 @@ func (m *GetInfoRequest) Reset() { *m = GetInfoRequest{} }
func (m *GetInfoRequest) String() string { return proto.CompactTextString(m) } func (m *GetInfoRequest) String() string { return proto.CompactTextString(m) }
func (*GetInfoRequest) ProtoMessage() {} func (*GetInfoRequest) ProtoMessage() {}
func (*GetInfoRequest) Descriptor() ([]byte, []int) { func (*GetInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{45} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{45}
} }
func (m *GetInfoRequest) XXX_Unmarshal(b []byte) error { func (m *GetInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInfoRequest.Unmarshal(m, b) return xxx_messageInfo_GetInfoRequest.Unmarshal(m, b)
@ -2963,7 +2974,7 @@ func (m *GetInfoResponse) Reset() { *m = GetInfoResponse{} }
func (m *GetInfoResponse) String() string { return proto.CompactTextString(m) } func (m *GetInfoResponse) String() string { return proto.CompactTextString(m) }
func (*GetInfoResponse) ProtoMessage() {} func (*GetInfoResponse) ProtoMessage() {}
func (*GetInfoResponse) Descriptor() ([]byte, []int) { func (*GetInfoResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{46} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{46}
} }
func (m *GetInfoResponse) XXX_Unmarshal(b []byte) error { func (m *GetInfoResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInfoResponse.Unmarshal(m, b) return xxx_messageInfo_GetInfoResponse.Unmarshal(m, b)
@ -3096,7 +3107,7 @@ func (m *Chain) Reset() { *m = Chain{} }
func (m *Chain) String() string { return proto.CompactTextString(m) } func (m *Chain) String() string { return proto.CompactTextString(m) }
func (*Chain) ProtoMessage() {} func (*Chain) ProtoMessage() {}
func (*Chain) Descriptor() ([]byte, []int) { func (*Chain) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{47} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{47}
} }
func (m *Chain) XXX_Unmarshal(b []byte) error { func (m *Chain) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Chain.Unmarshal(m, b) return xxx_messageInfo_Chain.Unmarshal(m, b)
@ -3143,7 +3154,7 @@ func (m *ConfirmationUpdate) Reset() { *m = ConfirmationUpdate{} }
func (m *ConfirmationUpdate) String() string { return proto.CompactTextString(m) } func (m *ConfirmationUpdate) String() string { return proto.CompactTextString(m) }
func (*ConfirmationUpdate) ProtoMessage() {} func (*ConfirmationUpdate) ProtoMessage() {}
func (*ConfirmationUpdate) Descriptor() ([]byte, []int) { func (*ConfirmationUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{48} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{48}
} }
func (m *ConfirmationUpdate) XXX_Unmarshal(b []byte) error { func (m *ConfirmationUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfirmationUpdate.Unmarshal(m, b) return xxx_messageInfo_ConfirmationUpdate.Unmarshal(m, b)
@ -3195,7 +3206,7 @@ func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} }
func (m *ChannelOpenUpdate) String() string { return proto.CompactTextString(m) } func (m *ChannelOpenUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelOpenUpdate) ProtoMessage() {} func (*ChannelOpenUpdate) ProtoMessage() {}
func (*ChannelOpenUpdate) Descriptor() ([]byte, []int) { func (*ChannelOpenUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{49} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{49}
} }
func (m *ChannelOpenUpdate) XXX_Unmarshal(b []byte) error { func (m *ChannelOpenUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelOpenUpdate.Unmarshal(m, b) return xxx_messageInfo_ChannelOpenUpdate.Unmarshal(m, b)
@ -3234,7 +3245,7 @@ func (m *ChannelCloseUpdate) Reset() { *m = ChannelCloseUpdate{} }
func (m *ChannelCloseUpdate) String() string { return proto.CompactTextString(m) } func (m *ChannelCloseUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelCloseUpdate) ProtoMessage() {} func (*ChannelCloseUpdate) ProtoMessage() {}
func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) { func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{50} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{50}
} }
func (m *ChannelCloseUpdate) XXX_Unmarshal(b []byte) error { func (m *ChannelCloseUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelCloseUpdate.Unmarshal(m, b) return xxx_messageInfo_ChannelCloseUpdate.Unmarshal(m, b)
@ -3289,7 +3300,7 @@ func (m *CloseChannelRequest) Reset() { *m = CloseChannelRequest{} }
func (m *CloseChannelRequest) String() string { return proto.CompactTextString(m) } func (m *CloseChannelRequest) String() string { return proto.CompactTextString(m) }
func (*CloseChannelRequest) ProtoMessage() {} func (*CloseChannelRequest) ProtoMessage() {}
func (*CloseChannelRequest) Descriptor() ([]byte, []int) { func (*CloseChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{51} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{51}
} }
func (m *CloseChannelRequest) XXX_Unmarshal(b []byte) error { func (m *CloseChannelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CloseChannelRequest.Unmarshal(m, b) return xxx_messageInfo_CloseChannelRequest.Unmarshal(m, b)
@ -3351,7 +3362,7 @@ func (m *CloseStatusUpdate) Reset() { *m = CloseStatusUpdate{} }
func (m *CloseStatusUpdate) String() string { return proto.CompactTextString(m) } func (m *CloseStatusUpdate) String() string { return proto.CompactTextString(m) }
func (*CloseStatusUpdate) ProtoMessage() {} func (*CloseStatusUpdate) ProtoMessage() {}
func (*CloseStatusUpdate) Descriptor() ([]byte, []int) { func (*CloseStatusUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{52} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{52}
} }
func (m *CloseStatusUpdate) XXX_Unmarshal(b []byte) error { func (m *CloseStatusUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CloseStatusUpdate.Unmarshal(m, b) return xxx_messageInfo_CloseStatusUpdate.Unmarshal(m, b)
@ -3494,7 +3505,7 @@ func (m *PendingUpdate) Reset() { *m = PendingUpdate{} }
func (m *PendingUpdate) String() string { return proto.CompactTextString(m) } func (m *PendingUpdate) String() string { return proto.CompactTextString(m) }
func (*PendingUpdate) ProtoMessage() {} func (*PendingUpdate) ProtoMessage() {}
func (*PendingUpdate) Descriptor() ([]byte, []int) { func (*PendingUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{53} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{53}
} }
func (m *PendingUpdate) XXX_Unmarshal(b []byte) error { func (m *PendingUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingUpdate.Unmarshal(m, b) return xxx_messageInfo_PendingUpdate.Unmarshal(m, b)
@ -3560,7 +3571,7 @@ func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) } func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) }
func (*OpenChannelRequest) ProtoMessage() {} func (*OpenChannelRequest) ProtoMessage() {}
func (*OpenChannelRequest) Descriptor() ([]byte, []int) { func (*OpenChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{54} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{54}
} }
func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error { func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OpenChannelRequest.Unmarshal(m, b) return xxx_messageInfo_OpenChannelRequest.Unmarshal(m, b)
@ -3671,7 +3682,7 @@ func (m *OpenStatusUpdate) Reset() { *m = OpenStatusUpdate{} }
func (m *OpenStatusUpdate) String() string { return proto.CompactTextString(m) } func (m *OpenStatusUpdate) String() string { return proto.CompactTextString(m) }
func (*OpenStatusUpdate) ProtoMessage() {} func (*OpenStatusUpdate) ProtoMessage() {}
func (*OpenStatusUpdate) Descriptor() ([]byte, []int) { func (*OpenStatusUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{55} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{55}
} }
func (m *OpenStatusUpdate) XXX_Unmarshal(b []byte) error { func (m *OpenStatusUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OpenStatusUpdate.Unmarshal(m, b) return xxx_messageInfo_OpenStatusUpdate.Unmarshal(m, b)
@ -3827,7 +3838,7 @@ func (m *PendingHTLC) Reset() { *m = PendingHTLC{} }
func (m *PendingHTLC) String() string { return proto.CompactTextString(m) } func (m *PendingHTLC) String() string { return proto.CompactTextString(m) }
func (*PendingHTLC) ProtoMessage() {} func (*PendingHTLC) ProtoMessage() {}
func (*PendingHTLC) Descriptor() ([]byte, []int) { func (*PendingHTLC) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{56} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{56}
} }
func (m *PendingHTLC) XXX_Unmarshal(b []byte) error { func (m *PendingHTLC) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingHTLC.Unmarshal(m, b) return xxx_messageInfo_PendingHTLC.Unmarshal(m, b)
@ -3899,7 +3910,7 @@ func (m *PendingChannelsRequest) Reset() { *m = PendingChannelsRequest{}
func (m *PendingChannelsRequest) String() string { return proto.CompactTextString(m) } func (m *PendingChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsRequest) ProtoMessage() {} func (*PendingChannelsRequest) ProtoMessage() {}
func (*PendingChannelsRequest) Descriptor() ([]byte, []int) { func (*PendingChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{57} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{57}
} }
func (m *PendingChannelsRequest) XXX_Unmarshal(b []byte) error { func (m *PendingChannelsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsRequest.Unmarshal(m, b) return xxx_messageInfo_PendingChannelsRequest.Unmarshal(m, b)
@ -3939,7 +3950,7 @@ func (m *PendingChannelsResponse) Reset() { *m = PendingChannelsResponse
func (m *PendingChannelsResponse) String() string { return proto.CompactTextString(m) } func (m *PendingChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse) ProtoMessage() {} func (*PendingChannelsResponse) ProtoMessage() {}
func (*PendingChannelsResponse) Descriptor() ([]byte, []int) { func (*PendingChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58}
} }
func (m *PendingChannelsResponse) XXX_Unmarshal(b []byte) error { func (m *PendingChannelsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse.Unmarshal(m, b) return xxx_messageInfo_PendingChannelsResponse.Unmarshal(m, b)
@ -4011,7 +4022,7 @@ func (m *PendingChannelsResponse_PendingChannel) Reset() {
func (m *PendingChannelsResponse_PendingChannel) String() string { return proto.CompactTextString(m) } func (m *PendingChannelsResponse_PendingChannel) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse_PendingChannel) ProtoMessage() {} func (*PendingChannelsResponse_PendingChannel) ProtoMessage() {}
func (*PendingChannelsResponse_PendingChannel) Descriptor() ([]byte, []int) { func (*PendingChannelsResponse_PendingChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 0} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 0}
} }
func (m *PendingChannelsResponse_PendingChannel) XXX_Unmarshal(b []byte) error { func (m *PendingChannelsResponse_PendingChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_PendingChannel.Unmarshal(m, b) return xxx_messageInfo_PendingChannelsResponse_PendingChannel.Unmarshal(m, b)
@ -4098,7 +4109,7 @@ func (m *PendingChannelsResponse_PendingOpenChannel) String() string {
} }
func (*PendingChannelsResponse_PendingOpenChannel) ProtoMessage() {} func (*PendingChannelsResponse_PendingOpenChannel) ProtoMessage() {}
func (*PendingChannelsResponse_PendingOpenChannel) Descriptor() ([]byte, []int) { func (*PendingChannelsResponse_PendingOpenChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 1} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 1}
} }
func (m *PendingChannelsResponse_PendingOpenChannel) XXX_Unmarshal(b []byte) error { func (m *PendingChannelsResponse_PendingOpenChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_PendingOpenChannel.Unmarshal(m, b) return xxx_messageInfo_PendingChannelsResponse_PendingOpenChannel.Unmarshal(m, b)
@ -4171,7 +4182,7 @@ func (m *PendingChannelsResponse_WaitingCloseChannel) String() string {
} }
func (*PendingChannelsResponse_WaitingCloseChannel) ProtoMessage() {} func (*PendingChannelsResponse_WaitingCloseChannel) ProtoMessage() {}
func (*PendingChannelsResponse_WaitingCloseChannel) Descriptor() ([]byte, []int) { func (*PendingChannelsResponse_WaitingCloseChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 2} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 2}
} }
func (m *PendingChannelsResponse_WaitingCloseChannel) XXX_Unmarshal(b []byte) error { func (m *PendingChannelsResponse_WaitingCloseChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_WaitingCloseChannel.Unmarshal(m, b) return xxx_messageInfo_PendingChannelsResponse_WaitingCloseChannel.Unmarshal(m, b)
@ -4219,7 +4230,7 @@ func (m *PendingChannelsResponse_ClosedChannel) Reset() { *m = PendingCh
func (m *PendingChannelsResponse_ClosedChannel) String() string { return proto.CompactTextString(m) } func (m *PendingChannelsResponse_ClosedChannel) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse_ClosedChannel) ProtoMessage() {} func (*PendingChannelsResponse_ClosedChannel) ProtoMessage() {}
func (*PendingChannelsResponse_ClosedChannel) Descriptor() ([]byte, []int) { func (*PendingChannelsResponse_ClosedChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 3} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 3}
} }
func (m *PendingChannelsResponse_ClosedChannel) XXX_Unmarshal(b []byte) error { func (m *PendingChannelsResponse_ClosedChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_ClosedChannel.Unmarshal(m, b) return xxx_messageInfo_PendingChannelsResponse_ClosedChannel.Unmarshal(m, b)
@ -4283,7 +4294,7 @@ func (m *PendingChannelsResponse_ForceClosedChannel) String() string {
} }
func (*PendingChannelsResponse_ForceClosedChannel) ProtoMessage() {} func (*PendingChannelsResponse_ForceClosedChannel) ProtoMessage() {}
func (*PendingChannelsResponse_ForceClosedChannel) Descriptor() ([]byte, []int) { func (*PendingChannelsResponse_ForceClosedChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 4} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 4}
} }
func (m *PendingChannelsResponse_ForceClosedChannel) XXX_Unmarshal(b []byte) error { func (m *PendingChannelsResponse_ForceClosedChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_ForceClosedChannel.Unmarshal(m, b) return xxx_messageInfo_PendingChannelsResponse_ForceClosedChannel.Unmarshal(m, b)
@ -4362,7 +4373,7 @@ func (m *ChannelEventSubscription) Reset() { *m = ChannelEventSubscripti
func (m *ChannelEventSubscription) String() string { return proto.CompactTextString(m) } func (m *ChannelEventSubscription) String() string { return proto.CompactTextString(m) }
func (*ChannelEventSubscription) ProtoMessage() {} func (*ChannelEventSubscription) ProtoMessage() {}
func (*ChannelEventSubscription) Descriptor() ([]byte, []int) { func (*ChannelEventSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{59} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{59}
} }
func (m *ChannelEventSubscription) XXX_Unmarshal(b []byte) error { func (m *ChannelEventSubscription) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEventSubscription.Unmarshal(m, b) return xxx_messageInfo_ChannelEventSubscription.Unmarshal(m, b)
@ -4399,7 +4410,7 @@ func (m *ChannelEventUpdate) Reset() { *m = ChannelEventUpdate{} }
func (m *ChannelEventUpdate) String() string { return proto.CompactTextString(m) } func (m *ChannelEventUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelEventUpdate) ProtoMessage() {} func (*ChannelEventUpdate) ProtoMessage() {}
func (*ChannelEventUpdate) Descriptor() ([]byte, []int) { func (*ChannelEventUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{60} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{60}
} }
func (m *ChannelEventUpdate) XXX_Unmarshal(b []byte) error { func (m *ChannelEventUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEventUpdate.Unmarshal(m, b) return xxx_messageInfo_ChannelEventUpdate.Unmarshal(m, b)
@ -4611,7 +4622,7 @@ func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} }
func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) } func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceRequest) ProtoMessage() {} func (*WalletBalanceRequest) ProtoMessage() {}
func (*WalletBalanceRequest) Descriptor() ([]byte, []int) { func (*WalletBalanceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{61} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{61}
} }
func (m *WalletBalanceRequest) XXX_Unmarshal(b []byte) error { func (m *WalletBalanceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WalletBalanceRequest.Unmarshal(m, b) return xxx_messageInfo_WalletBalanceRequest.Unmarshal(m, b)
@ -4647,7 +4658,7 @@ func (m *WalletBalanceResponse) Reset() { *m = WalletBalanceResponse{} }
func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) } func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceResponse) ProtoMessage() {} func (*WalletBalanceResponse) ProtoMessage() {}
func (*WalletBalanceResponse) Descriptor() ([]byte, []int) { func (*WalletBalanceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{62} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{62}
} }
func (m *WalletBalanceResponse) XXX_Unmarshal(b []byte) error { func (m *WalletBalanceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WalletBalanceResponse.Unmarshal(m, b) return xxx_messageInfo_WalletBalanceResponse.Unmarshal(m, b)
@ -4698,7 +4709,7 @@ func (m *ChannelBalanceRequest) Reset() { *m = ChannelBalanceRequest{} }
func (m *ChannelBalanceRequest) String() string { return proto.CompactTextString(m) } func (m *ChannelBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*ChannelBalanceRequest) ProtoMessage() {} func (*ChannelBalanceRequest) ProtoMessage() {}
func (*ChannelBalanceRequest) Descriptor() ([]byte, []int) { func (*ChannelBalanceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{63} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{63}
} }
func (m *ChannelBalanceRequest) XXX_Unmarshal(b []byte) error { func (m *ChannelBalanceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelBalanceRequest.Unmarshal(m, b) return xxx_messageInfo_ChannelBalanceRequest.Unmarshal(m, b)
@ -4732,7 +4743,7 @@ func (m *ChannelBalanceResponse) Reset() { *m = ChannelBalanceResponse{}
func (m *ChannelBalanceResponse) String() string { return proto.CompactTextString(m) } func (m *ChannelBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*ChannelBalanceResponse) ProtoMessage() {} func (*ChannelBalanceResponse) ProtoMessage() {}
func (*ChannelBalanceResponse) Descriptor() ([]byte, []int) { func (*ChannelBalanceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{64} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{64}
} }
func (m *ChannelBalanceResponse) XXX_Unmarshal(b []byte) error { func (m *ChannelBalanceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelBalanceResponse.Unmarshal(m, b) return xxx_messageInfo_ChannelBalanceResponse.Unmarshal(m, b)
@ -4790,7 +4801,7 @@ func (m *QueryRoutesRequest) Reset() { *m = QueryRoutesRequest{} }
func (m *QueryRoutesRequest) String() string { return proto.CompactTextString(m) } func (m *QueryRoutesRequest) String() string { return proto.CompactTextString(m) }
func (*QueryRoutesRequest) ProtoMessage() {} func (*QueryRoutesRequest) ProtoMessage() {}
func (*QueryRoutesRequest) Descriptor() ([]byte, []int) { func (*QueryRoutesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{65} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{65}
} }
func (m *QueryRoutesRequest) XXX_Unmarshal(b []byte) error { func (m *QueryRoutesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryRoutesRequest.Unmarshal(m, b) return xxx_messageInfo_QueryRoutesRequest.Unmarshal(m, b)
@ -4856,7 +4867,7 @@ func (m *QueryRoutesResponse) Reset() { *m = QueryRoutesResponse{} }
func (m *QueryRoutesResponse) String() string { return proto.CompactTextString(m) } func (m *QueryRoutesResponse) String() string { return proto.CompactTextString(m) }
func (*QueryRoutesResponse) ProtoMessage() {} func (*QueryRoutesResponse) ProtoMessage() {}
func (*QueryRoutesResponse) Descriptor() ([]byte, []int) { func (*QueryRoutesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{66} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{66}
} }
func (m *QueryRoutesResponse) XXX_Unmarshal(b []byte) error { func (m *QueryRoutesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryRoutesResponse.Unmarshal(m, b) return xxx_messageInfo_QueryRoutesResponse.Unmarshal(m, b)
@ -4908,7 +4919,7 @@ func (m *Hop) Reset() { *m = Hop{} }
func (m *Hop) String() string { return proto.CompactTextString(m) } func (m *Hop) String() string { return proto.CompactTextString(m) }
func (*Hop) ProtoMessage() {} func (*Hop) ProtoMessage() {}
func (*Hop) Descriptor() ([]byte, []int) { func (*Hop) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{67} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{67}
} }
func (m *Hop) XXX_Unmarshal(b []byte) error { func (m *Hop) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Hop.Unmarshal(m, b) return xxx_messageInfo_Hop.Unmarshal(m, b)
@ -5029,7 +5040,7 @@ func (m *Route) Reset() { *m = Route{} }
func (m *Route) String() string { return proto.CompactTextString(m) } func (m *Route) String() string { return proto.CompactTextString(m) }
func (*Route) ProtoMessage() {} func (*Route) ProtoMessage() {}
func (*Route) Descriptor() ([]byte, []int) { func (*Route) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{68} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{68}
} }
func (m *Route) XXX_Unmarshal(b []byte) error { func (m *Route) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Route.Unmarshal(m, b) return xxx_messageInfo_Route.Unmarshal(m, b)
@ -5105,7 +5116,7 @@ func (m *NodeInfoRequest) Reset() { *m = NodeInfoRequest{} }
func (m *NodeInfoRequest) String() string { return proto.CompactTextString(m) } func (m *NodeInfoRequest) String() string { return proto.CompactTextString(m) }
func (*NodeInfoRequest) ProtoMessage() {} func (*NodeInfoRequest) ProtoMessage() {}
func (*NodeInfoRequest) Descriptor() ([]byte, []int) { func (*NodeInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{69} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{69}
} }
func (m *NodeInfoRequest) XXX_Unmarshal(b []byte) error { func (m *NodeInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeInfoRequest.Unmarshal(m, b) return xxx_messageInfo_NodeInfoRequest.Unmarshal(m, b)
@ -5150,7 +5161,7 @@ func (m *NodeInfo) Reset() { *m = NodeInfo{} }
func (m *NodeInfo) String() string { return proto.CompactTextString(m) } func (m *NodeInfo) String() string { return proto.CompactTextString(m) }
func (*NodeInfo) ProtoMessage() {} func (*NodeInfo) ProtoMessage() {}
func (*NodeInfo) Descriptor() ([]byte, []int) { func (*NodeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{70} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{70}
} }
func (m *NodeInfo) XXX_Unmarshal(b []byte) error { func (m *NodeInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeInfo.Unmarshal(m, b) return xxx_messageInfo_NodeInfo.Unmarshal(m, b)
@ -5211,7 +5222,7 @@ func (m *LightningNode) Reset() { *m = LightningNode{} }
func (m *LightningNode) String() string { return proto.CompactTextString(m) } func (m *LightningNode) String() string { return proto.CompactTextString(m) }
func (*LightningNode) ProtoMessage() {} func (*LightningNode) ProtoMessage() {}
func (*LightningNode) Descriptor() ([]byte, []int) { func (*LightningNode) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{71} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{71}
} }
func (m *LightningNode) XXX_Unmarshal(b []byte) error { func (m *LightningNode) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LightningNode.Unmarshal(m, b) return xxx_messageInfo_LightningNode.Unmarshal(m, b)
@ -5278,7 +5289,7 @@ func (m *NodeAddress) Reset() { *m = NodeAddress{} }
func (m *NodeAddress) String() string { return proto.CompactTextString(m) } func (m *NodeAddress) String() string { return proto.CompactTextString(m) }
func (*NodeAddress) ProtoMessage() {} func (*NodeAddress) ProtoMessage() {}
func (*NodeAddress) Descriptor() ([]byte, []int) { func (*NodeAddress) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{72} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{72}
} }
func (m *NodeAddress) XXX_Unmarshal(b []byte) error { func (m *NodeAddress) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeAddress.Unmarshal(m, b) return xxx_messageInfo_NodeAddress.Unmarshal(m, b)
@ -5327,7 +5338,7 @@ func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} }
func (m *RoutingPolicy) String() string { return proto.CompactTextString(m) } func (m *RoutingPolicy) String() string { return proto.CompactTextString(m) }
func (*RoutingPolicy) ProtoMessage() {} func (*RoutingPolicy) ProtoMessage() {}
func (*RoutingPolicy) Descriptor() ([]byte, []int) { func (*RoutingPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{73} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{73}
} }
func (m *RoutingPolicy) XXX_Unmarshal(b []byte) error { func (m *RoutingPolicy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RoutingPolicy.Unmarshal(m, b) return xxx_messageInfo_RoutingPolicy.Unmarshal(m, b)
@ -5410,7 +5421,7 @@ func (m *ChannelEdge) Reset() { *m = ChannelEdge{} }
func (m *ChannelEdge) String() string { return proto.CompactTextString(m) } func (m *ChannelEdge) String() string { return proto.CompactTextString(m) }
func (*ChannelEdge) ProtoMessage() {} func (*ChannelEdge) ProtoMessage() {}
func (*ChannelEdge) Descriptor() ([]byte, []int) { func (*ChannelEdge) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{74} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{74}
} }
func (m *ChannelEdge) XXX_Unmarshal(b []byte) error { func (m *ChannelEdge) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEdge.Unmarshal(m, b) return xxx_messageInfo_ChannelEdge.Unmarshal(m, b)
@ -5501,7 +5512,7 @@ func (m *ChannelGraphRequest) Reset() { *m = ChannelGraphRequest{} }
func (m *ChannelGraphRequest) String() string { return proto.CompactTextString(m) } func (m *ChannelGraphRequest) String() string { return proto.CompactTextString(m) }
func (*ChannelGraphRequest) ProtoMessage() {} func (*ChannelGraphRequest) ProtoMessage() {}
func (*ChannelGraphRequest) Descriptor() ([]byte, []int) { func (*ChannelGraphRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{75} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{75}
} }
func (m *ChannelGraphRequest) XXX_Unmarshal(b []byte) error { func (m *ChannelGraphRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelGraphRequest.Unmarshal(m, b) return xxx_messageInfo_ChannelGraphRequest.Unmarshal(m, b)
@ -5543,7 +5554,7 @@ func (m *ChannelGraph) Reset() { *m = ChannelGraph{} }
func (m *ChannelGraph) String() string { return proto.CompactTextString(m) } func (m *ChannelGraph) String() string { return proto.CompactTextString(m) }
func (*ChannelGraph) ProtoMessage() {} func (*ChannelGraph) ProtoMessage() {}
func (*ChannelGraph) Descriptor() ([]byte, []int) { func (*ChannelGraph) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{76} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{76}
} }
func (m *ChannelGraph) XXX_Unmarshal(b []byte) error { func (m *ChannelGraph) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelGraph.Unmarshal(m, b) return xxx_messageInfo_ChannelGraph.Unmarshal(m, b)
@ -5592,7 +5603,7 @@ func (m *ChanInfoRequest) Reset() { *m = ChanInfoRequest{} }
func (m *ChanInfoRequest) String() string { return proto.CompactTextString(m) } func (m *ChanInfoRequest) String() string { return proto.CompactTextString(m) }
func (*ChanInfoRequest) ProtoMessage() {} func (*ChanInfoRequest) ProtoMessage() {}
func (*ChanInfoRequest) Descriptor() ([]byte, []int) { func (*ChanInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{77} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{77}
} }
func (m *ChanInfoRequest) XXX_Unmarshal(b []byte) error { func (m *ChanInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChanInfoRequest.Unmarshal(m, b) return xxx_messageInfo_ChanInfoRequest.Unmarshal(m, b)
@ -5629,7 +5640,7 @@ func (m *NetworkInfoRequest) Reset() { *m = NetworkInfoRequest{} }
func (m *NetworkInfoRequest) String() string { return proto.CompactTextString(m) } func (m *NetworkInfoRequest) String() string { return proto.CompactTextString(m) }
func (*NetworkInfoRequest) ProtoMessage() {} func (*NetworkInfoRequest) ProtoMessage() {}
func (*NetworkInfoRequest) Descriptor() ([]byte, []int) { func (*NetworkInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{78} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{78}
} }
func (m *NetworkInfoRequest) XXX_Unmarshal(b []byte) error { func (m *NetworkInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkInfoRequest.Unmarshal(m, b) return xxx_messageInfo_NetworkInfoRequest.Unmarshal(m, b)
@ -5668,7 +5679,7 @@ func (m *NetworkInfo) Reset() { *m = NetworkInfo{} }
func (m *NetworkInfo) String() string { return proto.CompactTextString(m) } func (m *NetworkInfo) String() string { return proto.CompactTextString(m) }
func (*NetworkInfo) ProtoMessage() {} func (*NetworkInfo) ProtoMessage() {}
func (*NetworkInfo) Descriptor() ([]byte, []int) { func (*NetworkInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{79} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{79}
} }
func (m *NetworkInfo) XXX_Unmarshal(b []byte) error { func (m *NetworkInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkInfo.Unmarshal(m, b) return xxx_messageInfo_NetworkInfo.Unmarshal(m, b)
@ -5761,7 +5772,7 @@ func (m *StopRequest) Reset() { *m = StopRequest{} }
func (m *StopRequest) String() string { return proto.CompactTextString(m) } func (m *StopRequest) String() string { return proto.CompactTextString(m) }
func (*StopRequest) ProtoMessage() {} func (*StopRequest) ProtoMessage() {}
func (*StopRequest) Descriptor() ([]byte, []int) { func (*StopRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{80} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{80}
} }
func (m *StopRequest) XXX_Unmarshal(b []byte) error { func (m *StopRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopRequest.Unmarshal(m, b) return xxx_messageInfo_StopRequest.Unmarshal(m, b)
@ -5791,7 +5802,7 @@ func (m *StopResponse) Reset() { *m = StopResponse{} }
func (m *StopResponse) String() string { return proto.CompactTextString(m) } func (m *StopResponse) String() string { return proto.CompactTextString(m) }
func (*StopResponse) ProtoMessage() {} func (*StopResponse) ProtoMessage() {}
func (*StopResponse) Descriptor() ([]byte, []int) { func (*StopResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{81} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{81}
} }
func (m *StopResponse) XXX_Unmarshal(b []byte) error { func (m *StopResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopResponse.Unmarshal(m, b) return xxx_messageInfo_StopResponse.Unmarshal(m, b)
@ -5821,7 +5832,7 @@ func (m *GraphTopologySubscription) Reset() { *m = GraphTopologySubscrip
func (m *GraphTopologySubscription) String() string { return proto.CompactTextString(m) } func (m *GraphTopologySubscription) String() string { return proto.CompactTextString(m) }
func (*GraphTopologySubscription) ProtoMessage() {} func (*GraphTopologySubscription) ProtoMessage() {}
func (*GraphTopologySubscription) Descriptor() ([]byte, []int) { func (*GraphTopologySubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{82} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{82}
} }
func (m *GraphTopologySubscription) XXX_Unmarshal(b []byte) error { func (m *GraphTopologySubscription) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GraphTopologySubscription.Unmarshal(m, b) return xxx_messageInfo_GraphTopologySubscription.Unmarshal(m, b)
@ -5854,7 +5865,7 @@ func (m *GraphTopologyUpdate) Reset() { *m = GraphTopologyUpdate{} }
func (m *GraphTopologyUpdate) String() string { return proto.CompactTextString(m) } func (m *GraphTopologyUpdate) String() string { return proto.CompactTextString(m) }
func (*GraphTopologyUpdate) ProtoMessage() {} func (*GraphTopologyUpdate) ProtoMessage() {}
func (*GraphTopologyUpdate) Descriptor() ([]byte, []int) { func (*GraphTopologyUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{83} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{83}
} }
func (m *GraphTopologyUpdate) XXX_Unmarshal(b []byte) error { func (m *GraphTopologyUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GraphTopologyUpdate.Unmarshal(m, b) return xxx_messageInfo_GraphTopologyUpdate.Unmarshal(m, b)
@ -5909,7 +5920,7 @@ func (m *NodeUpdate) Reset() { *m = NodeUpdate{} }
func (m *NodeUpdate) String() string { return proto.CompactTextString(m) } func (m *NodeUpdate) String() string { return proto.CompactTextString(m) }
func (*NodeUpdate) ProtoMessage() {} func (*NodeUpdate) ProtoMessage() {}
func (*NodeUpdate) Descriptor() ([]byte, []int) { func (*NodeUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{84} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{84}
} }
func (m *NodeUpdate) XXX_Unmarshal(b []byte) error { func (m *NodeUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeUpdate.Unmarshal(m, b) return xxx_messageInfo_NodeUpdate.Unmarshal(m, b)
@ -5977,7 +5988,7 @@ func (m *ChannelEdgeUpdate) Reset() { *m = ChannelEdgeUpdate{} }
func (m *ChannelEdgeUpdate) String() string { return proto.CompactTextString(m) } func (m *ChannelEdgeUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelEdgeUpdate) ProtoMessage() {} func (*ChannelEdgeUpdate) ProtoMessage() {}
func (*ChannelEdgeUpdate) Descriptor() ([]byte, []int) { func (*ChannelEdgeUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{85} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{85}
} }
func (m *ChannelEdgeUpdate) XXX_Unmarshal(b []byte) error { func (m *ChannelEdgeUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEdgeUpdate.Unmarshal(m, b) return xxx_messageInfo_ChannelEdgeUpdate.Unmarshal(m, b)
@ -6057,7 +6068,7 @@ func (m *ClosedChannelUpdate) Reset() { *m = ClosedChannelUpdate{} }
func (m *ClosedChannelUpdate) String() string { return proto.CompactTextString(m) } func (m *ClosedChannelUpdate) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelUpdate) ProtoMessage() {} func (*ClosedChannelUpdate) ProtoMessage() {}
func (*ClosedChannelUpdate) Descriptor() ([]byte, []int) { func (*ClosedChannelUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{86} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{86}
} }
func (m *ClosedChannelUpdate) XXX_Unmarshal(b []byte) error { func (m *ClosedChannelUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClosedChannelUpdate.Unmarshal(m, b) return xxx_messageInfo_ClosedChannelUpdate.Unmarshal(m, b)
@ -6127,7 +6138,7 @@ func (m *HopHint) Reset() { *m = HopHint{} }
func (m *HopHint) String() string { return proto.CompactTextString(m) } func (m *HopHint) String() string { return proto.CompactTextString(m) }
func (*HopHint) ProtoMessage() {} func (*HopHint) ProtoMessage() {}
func (*HopHint) Descriptor() ([]byte, []int) { func (*HopHint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{87} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{87}
} }
func (m *HopHint) XXX_Unmarshal(b []byte) error { func (m *HopHint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_HopHint.Unmarshal(m, b) return xxx_messageInfo_HopHint.Unmarshal(m, b)
@ -6196,7 +6207,7 @@ func (m *RouteHint) Reset() { *m = RouteHint{} }
func (m *RouteHint) String() string { return proto.CompactTextString(m) } func (m *RouteHint) String() string { return proto.CompactTextString(m) }
func (*RouteHint) ProtoMessage() {} func (*RouteHint) ProtoMessage() {}
func (*RouteHint) Descriptor() ([]byte, []int) { func (*RouteHint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{88} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{88}
} }
func (m *RouteHint) XXX_Unmarshal(b []byte) error { func (m *RouteHint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RouteHint.Unmarshal(m, b) return xxx_messageInfo_RouteHint.Unmarshal(m, b)
@ -6311,7 +6322,7 @@ func (m *Invoice) Reset() { *m = Invoice{} }
func (m *Invoice) String() string { return proto.CompactTextString(m) } func (m *Invoice) String() string { return proto.CompactTextString(m) }
func (*Invoice) ProtoMessage() {} func (*Invoice) ProtoMessage() {}
func (*Invoice) Descriptor() ([]byte, []int) { func (*Invoice) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{89} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{89}
} }
func (m *Invoice) XXX_Unmarshal(b []byte) error { func (m *Invoice) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Invoice.Unmarshal(m, b) return xxx_messageInfo_Invoice.Unmarshal(m, b)
@ -6503,7 +6514,7 @@ func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} }
func (m *AddInvoiceResponse) String() string { return proto.CompactTextString(m) } func (m *AddInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*AddInvoiceResponse) ProtoMessage() {} func (*AddInvoiceResponse) ProtoMessage() {}
func (*AddInvoiceResponse) Descriptor() ([]byte, []int) { func (*AddInvoiceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{90} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{90}
} }
func (m *AddInvoiceResponse) XXX_Unmarshal(b []byte) error { func (m *AddInvoiceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddInvoiceResponse.Unmarshal(m, b) return xxx_messageInfo_AddInvoiceResponse.Unmarshal(m, b)
@ -6560,7 +6571,7 @@ func (m *PaymentHash) Reset() { *m = PaymentHash{} }
func (m *PaymentHash) String() string { return proto.CompactTextString(m) } func (m *PaymentHash) String() string { return proto.CompactTextString(m) }
func (*PaymentHash) ProtoMessage() {} func (*PaymentHash) ProtoMessage() {}
func (*PaymentHash) Descriptor() ([]byte, []int) { func (*PaymentHash) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{91} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{91}
} }
func (m *PaymentHash) XXX_Unmarshal(b []byte) error { func (m *PaymentHash) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PaymentHash.Unmarshal(m, b) return xxx_messageInfo_PaymentHash.Unmarshal(m, b)
@ -6616,7 +6627,7 @@ func (m *ListInvoiceRequest) Reset() { *m = ListInvoiceRequest{} }
func (m *ListInvoiceRequest) String() string { return proto.CompactTextString(m) } func (m *ListInvoiceRequest) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceRequest) ProtoMessage() {} func (*ListInvoiceRequest) ProtoMessage() {}
func (*ListInvoiceRequest) Descriptor() ([]byte, []int) { func (*ListInvoiceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{92} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{92}
} }
func (m *ListInvoiceRequest) XXX_Unmarshal(b []byte) error { func (m *ListInvoiceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListInvoiceRequest.Unmarshal(m, b) return xxx_messageInfo_ListInvoiceRequest.Unmarshal(m, b)
@ -6686,7 +6697,7 @@ func (m *ListInvoiceResponse) Reset() { *m = ListInvoiceResponse{} }
func (m *ListInvoiceResponse) String() string { return proto.CompactTextString(m) } func (m *ListInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceResponse) ProtoMessage() {} func (*ListInvoiceResponse) ProtoMessage() {}
func (*ListInvoiceResponse) Descriptor() ([]byte, []int) { func (*ListInvoiceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{93} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{93}
} }
func (m *ListInvoiceResponse) XXX_Unmarshal(b []byte) error { func (m *ListInvoiceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListInvoiceResponse.Unmarshal(m, b) return xxx_messageInfo_ListInvoiceResponse.Unmarshal(m, b)
@ -6749,7 +6760,7 @@ func (m *InvoiceSubscription) Reset() { *m = InvoiceSubscription{} }
func (m *InvoiceSubscription) String() string { return proto.CompactTextString(m) } func (m *InvoiceSubscription) String() string { return proto.CompactTextString(m) }
func (*InvoiceSubscription) ProtoMessage() {} func (*InvoiceSubscription) ProtoMessage() {}
func (*InvoiceSubscription) Descriptor() ([]byte, []int) { func (*InvoiceSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{94} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{94}
} }
func (m *InvoiceSubscription) XXX_Unmarshal(b []byte) error { func (m *InvoiceSubscription) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvoiceSubscription.Unmarshal(m, b) return xxx_messageInfo_InvoiceSubscription.Unmarshal(m, b)
@ -6809,7 +6820,7 @@ func (m *Payment) Reset() { *m = Payment{} }
func (m *Payment) String() string { return proto.CompactTextString(m) } func (m *Payment) String() string { return proto.CompactTextString(m) }
func (*Payment) ProtoMessage() {} func (*Payment) ProtoMessage() {}
func (*Payment) Descriptor() ([]byte, []int) { func (*Payment) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{95} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{95}
} }
func (m *Payment) XXX_Unmarshal(b []byte) error { func (m *Payment) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Payment.Unmarshal(m, b) return xxx_messageInfo_Payment.Unmarshal(m, b)
@ -6896,7 +6907,7 @@ func (m *ListPaymentsRequest) Reset() { *m = ListPaymentsRequest{} }
func (m *ListPaymentsRequest) String() string { return proto.CompactTextString(m) } func (m *ListPaymentsRequest) String() string { return proto.CompactTextString(m) }
func (*ListPaymentsRequest) ProtoMessage() {} func (*ListPaymentsRequest) ProtoMessage() {}
func (*ListPaymentsRequest) Descriptor() ([]byte, []int) { func (*ListPaymentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{96} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{96}
} }
func (m *ListPaymentsRequest) XXX_Unmarshal(b []byte) error { func (m *ListPaymentsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPaymentsRequest.Unmarshal(m, b) return xxx_messageInfo_ListPaymentsRequest.Unmarshal(m, b)
@ -6928,7 +6939,7 @@ func (m *ListPaymentsResponse) Reset() { *m = ListPaymentsResponse{} }
func (m *ListPaymentsResponse) String() string { return proto.CompactTextString(m) } func (m *ListPaymentsResponse) String() string { return proto.CompactTextString(m) }
func (*ListPaymentsResponse) ProtoMessage() {} func (*ListPaymentsResponse) ProtoMessage() {}
func (*ListPaymentsResponse) Descriptor() ([]byte, []int) { func (*ListPaymentsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{97} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{97}
} }
func (m *ListPaymentsResponse) XXX_Unmarshal(b []byte) error { func (m *ListPaymentsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPaymentsResponse.Unmarshal(m, b) return xxx_messageInfo_ListPaymentsResponse.Unmarshal(m, b)
@ -6965,7 +6976,7 @@ func (m *DeleteAllPaymentsRequest) Reset() { *m = DeleteAllPaymentsReque
func (m *DeleteAllPaymentsRequest) String() string { return proto.CompactTextString(m) } func (m *DeleteAllPaymentsRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteAllPaymentsRequest) ProtoMessage() {} func (*DeleteAllPaymentsRequest) ProtoMessage() {}
func (*DeleteAllPaymentsRequest) Descriptor() ([]byte, []int) { func (*DeleteAllPaymentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{98} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{98}
} }
func (m *DeleteAllPaymentsRequest) XXX_Unmarshal(b []byte) error { func (m *DeleteAllPaymentsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteAllPaymentsRequest.Unmarshal(m, b) return xxx_messageInfo_DeleteAllPaymentsRequest.Unmarshal(m, b)
@ -6995,7 +7006,7 @@ func (m *DeleteAllPaymentsResponse) Reset() { *m = DeleteAllPaymentsResp
func (m *DeleteAllPaymentsResponse) String() string { return proto.CompactTextString(m) } func (m *DeleteAllPaymentsResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteAllPaymentsResponse) ProtoMessage() {} func (*DeleteAllPaymentsResponse) ProtoMessage() {}
func (*DeleteAllPaymentsResponse) Descriptor() ([]byte, []int) { func (*DeleteAllPaymentsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{99} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{99}
} }
func (m *DeleteAllPaymentsResponse) XXX_Unmarshal(b []byte) error { func (m *DeleteAllPaymentsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteAllPaymentsResponse.Unmarshal(m, b) return xxx_messageInfo_DeleteAllPaymentsResponse.Unmarshal(m, b)
@ -7026,7 +7037,7 @@ func (m *AbandonChannelRequest) Reset() { *m = AbandonChannelRequest{} }
func (m *AbandonChannelRequest) String() string { return proto.CompactTextString(m) } func (m *AbandonChannelRequest) String() string { return proto.CompactTextString(m) }
func (*AbandonChannelRequest) ProtoMessage() {} func (*AbandonChannelRequest) ProtoMessage() {}
func (*AbandonChannelRequest) Descriptor() ([]byte, []int) { func (*AbandonChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{100} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{100}
} }
func (m *AbandonChannelRequest) XXX_Unmarshal(b []byte) error { func (m *AbandonChannelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AbandonChannelRequest.Unmarshal(m, b) return xxx_messageInfo_AbandonChannelRequest.Unmarshal(m, b)
@ -7063,7 +7074,7 @@ func (m *AbandonChannelResponse) Reset() { *m = AbandonChannelResponse{}
func (m *AbandonChannelResponse) String() string { return proto.CompactTextString(m) } func (m *AbandonChannelResponse) String() string { return proto.CompactTextString(m) }
func (*AbandonChannelResponse) ProtoMessage() {} func (*AbandonChannelResponse) ProtoMessage() {}
func (*AbandonChannelResponse) Descriptor() ([]byte, []int) { func (*AbandonChannelResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{101} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{101}
} }
func (m *AbandonChannelResponse) XXX_Unmarshal(b []byte) error { func (m *AbandonChannelResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AbandonChannelResponse.Unmarshal(m, b) return xxx_messageInfo_AbandonChannelResponse.Unmarshal(m, b)
@ -7095,7 +7106,7 @@ func (m *DebugLevelRequest) Reset() { *m = DebugLevelRequest{} }
func (m *DebugLevelRequest) String() string { return proto.CompactTextString(m) } func (m *DebugLevelRequest) String() string { return proto.CompactTextString(m) }
func (*DebugLevelRequest) ProtoMessage() {} func (*DebugLevelRequest) ProtoMessage() {}
func (*DebugLevelRequest) Descriptor() ([]byte, []int) { func (*DebugLevelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{102} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{102}
} }
func (m *DebugLevelRequest) XXX_Unmarshal(b []byte) error { func (m *DebugLevelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DebugLevelRequest.Unmarshal(m, b) return xxx_messageInfo_DebugLevelRequest.Unmarshal(m, b)
@ -7140,7 +7151,7 @@ func (m *DebugLevelResponse) Reset() { *m = DebugLevelResponse{} }
func (m *DebugLevelResponse) String() string { return proto.CompactTextString(m) } func (m *DebugLevelResponse) String() string { return proto.CompactTextString(m) }
func (*DebugLevelResponse) ProtoMessage() {} func (*DebugLevelResponse) ProtoMessage() {}
func (*DebugLevelResponse) Descriptor() ([]byte, []int) { func (*DebugLevelResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{103} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{103}
} }
func (m *DebugLevelResponse) XXX_Unmarshal(b []byte) error { func (m *DebugLevelResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DebugLevelResponse.Unmarshal(m, b) return xxx_messageInfo_DebugLevelResponse.Unmarshal(m, b)
@ -7179,7 +7190,7 @@ func (m *PayReqString) Reset() { *m = PayReqString{} }
func (m *PayReqString) String() string { return proto.CompactTextString(m) } func (m *PayReqString) String() string { return proto.CompactTextString(m) }
func (*PayReqString) ProtoMessage() {} func (*PayReqString) ProtoMessage() {}
func (*PayReqString) Descriptor() ([]byte, []int) { func (*PayReqString) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{104} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{104}
} }
func (m *PayReqString) XXX_Unmarshal(b []byte) error { func (m *PayReqString) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PayReqString.Unmarshal(m, b) return xxx_messageInfo_PayReqString.Unmarshal(m, b)
@ -7226,7 +7237,7 @@ func (m *PayReq) Reset() { *m = PayReq{} }
func (m *PayReq) String() string { return proto.CompactTextString(m) } func (m *PayReq) String() string { return proto.CompactTextString(m) }
func (*PayReq) ProtoMessage() {} func (*PayReq) ProtoMessage() {}
func (*PayReq) Descriptor() ([]byte, []int) { func (*PayReq) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{105} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{105}
} }
func (m *PayReq) XXX_Unmarshal(b []byte) error { func (m *PayReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PayReq.Unmarshal(m, b) return xxx_messageInfo_PayReq.Unmarshal(m, b)
@ -7326,7 +7337,7 @@ func (m *FeeReportRequest) Reset() { *m = FeeReportRequest{} }
func (m *FeeReportRequest) String() string { return proto.CompactTextString(m) } func (m *FeeReportRequest) String() string { return proto.CompactTextString(m) }
func (*FeeReportRequest) ProtoMessage() {} func (*FeeReportRequest) ProtoMessage() {}
func (*FeeReportRequest) Descriptor() ([]byte, []int) { func (*FeeReportRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{106} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{106}
} }
func (m *FeeReportRequest) XXX_Unmarshal(b []byte) error { func (m *FeeReportRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FeeReportRequest.Unmarshal(m, b) return xxx_messageInfo_FeeReportRequest.Unmarshal(m, b)
@ -7364,7 +7375,7 @@ func (m *ChannelFeeReport) Reset() { *m = ChannelFeeReport{} }
func (m *ChannelFeeReport) String() string { return proto.CompactTextString(m) } func (m *ChannelFeeReport) String() string { return proto.CompactTextString(m) }
func (*ChannelFeeReport) ProtoMessage() {} func (*ChannelFeeReport) ProtoMessage() {}
func (*ChannelFeeReport) Descriptor() ([]byte, []int) { func (*ChannelFeeReport) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{107} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{107}
} }
func (m *ChannelFeeReport) XXX_Unmarshal(b []byte) error { func (m *ChannelFeeReport) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelFeeReport.Unmarshal(m, b) return xxx_messageInfo_ChannelFeeReport.Unmarshal(m, b)
@ -7430,7 +7441,7 @@ func (m *FeeReportResponse) Reset() { *m = FeeReportResponse{} }
func (m *FeeReportResponse) String() string { return proto.CompactTextString(m) } func (m *FeeReportResponse) String() string { return proto.CompactTextString(m) }
func (*FeeReportResponse) ProtoMessage() {} func (*FeeReportResponse) ProtoMessage() {}
func (*FeeReportResponse) Descriptor() ([]byte, []int) { func (*FeeReportResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{108} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{108}
} }
func (m *FeeReportResponse) XXX_Unmarshal(b []byte) error { func (m *FeeReportResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FeeReportResponse.Unmarshal(m, b) return xxx_messageInfo_FeeReportResponse.Unmarshal(m, b)
@ -7498,7 +7509,7 @@ func (m *PolicyUpdateRequest) Reset() { *m = PolicyUpdateRequest{} }
func (m *PolicyUpdateRequest) String() string { return proto.CompactTextString(m) } func (m *PolicyUpdateRequest) String() string { return proto.CompactTextString(m) }
func (*PolicyUpdateRequest) ProtoMessage() {} func (*PolicyUpdateRequest) ProtoMessage() {}
func (*PolicyUpdateRequest) Descriptor() ([]byte, []int) { func (*PolicyUpdateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{109} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{109}
} }
func (m *PolicyUpdateRequest) XXX_Unmarshal(b []byte) error { func (m *PolicyUpdateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PolicyUpdateRequest.Unmarshal(m, b) return xxx_messageInfo_PolicyUpdateRequest.Unmarshal(m, b)
@ -7659,7 +7670,7 @@ func (m *PolicyUpdateResponse) Reset() { *m = PolicyUpdateResponse{} }
func (m *PolicyUpdateResponse) String() string { return proto.CompactTextString(m) } func (m *PolicyUpdateResponse) String() string { return proto.CompactTextString(m) }
func (*PolicyUpdateResponse) ProtoMessage() {} func (*PolicyUpdateResponse) ProtoMessage() {}
func (*PolicyUpdateResponse) Descriptor() ([]byte, []int) { func (*PolicyUpdateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{110} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{110}
} }
func (m *PolicyUpdateResponse) XXX_Unmarshal(b []byte) error { func (m *PolicyUpdateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PolicyUpdateResponse.Unmarshal(m, b) return xxx_messageInfo_PolicyUpdateResponse.Unmarshal(m, b)
@ -7697,7 +7708,7 @@ func (m *ForwardingHistoryRequest) Reset() { *m = ForwardingHistoryReque
func (m *ForwardingHistoryRequest) String() string { return proto.CompactTextString(m) } func (m *ForwardingHistoryRequest) String() string { return proto.CompactTextString(m) }
func (*ForwardingHistoryRequest) ProtoMessage() {} func (*ForwardingHistoryRequest) ProtoMessage() {}
func (*ForwardingHistoryRequest) Descriptor() ([]byte, []int) { func (*ForwardingHistoryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{111} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{111}
} }
func (m *ForwardingHistoryRequest) XXX_Unmarshal(b []byte) error { func (m *ForwardingHistoryRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ForwardingHistoryRequest.Unmarshal(m, b) return xxx_messageInfo_ForwardingHistoryRequest.Unmarshal(m, b)
@ -7769,7 +7780,7 @@ func (m *ForwardingEvent) Reset() { *m = ForwardingEvent{} }
func (m *ForwardingEvent) String() string { return proto.CompactTextString(m) } func (m *ForwardingEvent) String() string { return proto.CompactTextString(m) }
func (*ForwardingEvent) ProtoMessage() {} func (*ForwardingEvent) ProtoMessage() {}
func (*ForwardingEvent) Descriptor() ([]byte, []int) { func (*ForwardingEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{112} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{112}
} }
func (m *ForwardingEvent) XXX_Unmarshal(b []byte) error { func (m *ForwardingEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ForwardingEvent.Unmarshal(m, b) return xxx_messageInfo_ForwardingEvent.Unmarshal(m, b)
@ -7852,7 +7863,7 @@ func (m *ForwardingHistoryResponse) Reset() { *m = ForwardingHistoryResp
func (m *ForwardingHistoryResponse) String() string { return proto.CompactTextString(m) } func (m *ForwardingHistoryResponse) String() string { return proto.CompactTextString(m) }
func (*ForwardingHistoryResponse) ProtoMessage() {} func (*ForwardingHistoryResponse) ProtoMessage() {}
func (*ForwardingHistoryResponse) Descriptor() ([]byte, []int) { func (*ForwardingHistoryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{113} return fileDescriptor_rpc_39d91cdf3094ea9f, []int{113}
} }
func (m *ForwardingHistoryResponse) XXX_Unmarshal(b []byte) error { func (m *ForwardingHistoryResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ForwardingHistoryResponse.Unmarshal(m, b) return xxx_messageInfo_ForwardingHistoryResponse.Unmarshal(m, b)
@ -10352,444 +10363,446 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
Metadata: "rpc.proto", Metadata: "rpc.proto",
} }
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_rpc_77ead11e8ea54150) } func init() { proto.RegisterFile("rpc.proto", fileDescriptor_rpc_39d91cdf3094ea9f) }
var fileDescriptor_rpc_77ead11e8ea54150 = []byte{ var fileDescriptor_rpc_39d91cdf3094ea9f = []byte{
// 6974 bytes of a gzipped FileDescriptorProto // 7002 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x5f, 0x6c, 0x24, 0xc9, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x5f, 0x6c, 0x24, 0xc9,
0x59, 0xdf, 0x9e, 0x3f, 0xf6, 0xcc, 0x37, 0xe3, 0xf1, 0xb8, 0xfc, 0x6f, 0x76, 0x6e, 0x6f, 0x6f, 0x59, 0xdf, 0x9e, 0x3f, 0xf6, 0xcc, 0x37, 0xe3, 0xf1, 0xb8, 0xfc, 0x67, 0x67, 0xe7, 0xf6, 0xf6,
0xaf, 0xb3, 0xdc, 0x6e, 0x9c, 0x63, 0xbd, 0xb7, 0x49, 0x8e, 0xcb, 0x1d, 0x09, 0x78, 0x6d, 0xef, 0xf6, 0x3a, 0xcb, 0xad, 0xe3, 0x1c, 0xeb, 0xbd, 0x4d, 0x72, 0x5c, 0xee, 0x48, 0xc0, 0x6b, 0x7b,
0x7a, 0x13, 0x9f, 0xd7, 0x69, 0xef, 0x66, 0xc9, 0x25, 0x68, 0xd2, 0x9e, 0x29, 0x8f, 0xfb, 0xb6, 0xd7, 0x9b, 0xf8, 0xbc, 0x4e, 0x7b, 0x37, 0x4b, 0x2e, 0x41, 0x93, 0xf6, 0x4c, 0x79, 0xdc, 0xb7,
0xa7, 0x7b, 0xd2, 0xdd, 0x63, 0xef, 0xe4, 0x38, 0x09, 0x01, 0x22, 0x12, 0x02, 0x21, 0xe0, 0x85, 0x3d, 0xdd, 0x93, 0xee, 0x1e, 0x7b, 0x27, 0xc7, 0x49, 0x08, 0x10, 0x91, 0x10, 0x08, 0x01, 0x2f,
0xa0, 0x20, 0xa4, 0x80, 0x44, 0xf2, 0xc8, 0x43, 0x22, 0x24, 0xe0, 0x0d, 0x21, 0x81, 0x84, 0x10, 0x04, 0x05, 0x21, 0x05, 0x24, 0xc8, 0x23, 0x0f, 0x89, 0x90, 0x80, 0x37, 0x84, 0x04, 0x12, 0x42,
0xca, 0x23, 0x12, 0x2f, 0xf0, 0x12, 0x78, 0x43, 0xe2, 0x11, 0x09, 0xd5, 0x57, 0x7f, 0xba, 0xaa, 0x90, 0x47, 0x24, 0x5e, 0xe0, 0x25, 0xf0, 0x86, 0xc4, 0x23, 0x12, 0xaa, 0xaf, 0xfe, 0x74, 0x55,
0xbb, 0x67, 0xbd, 0x97, 0x04, 0x9e, 0xec, 0xfa, 0xd5, 0xd7, 0xf5, 0xf7, 0xfb, 0x57, 0x5f, 0x7d, 0x77, 0xcf, 0x7a, 0x2f, 0x09, 0x3c, 0xd9, 0xf5, 0xab, 0xaf, 0xeb, 0xef, 0xf7, 0xaf, 0xbe, 0xfa,
0x35, 0x50, 0x8f, 0xc6, 0xfd, 0x5b, 0xe3, 0x28, 0x4c, 0x42, 0x52, 0xf5, 0x83, 0x68, 0xdc, 0xef, 0x6a, 0xa0, 0x1e, 0x8d, 0xfb, 0xb7, 0xc6, 0x51, 0x98, 0x84, 0xa4, 0xea, 0x07, 0xd1, 0xb8, 0xdf,
0x5e, 0x19, 0x86, 0xe1, 0xd0, 0xa7, 0x9b, 0xee, 0xd8, 0xdb, 0x74, 0x83, 0x20, 0x4c, 0xdc, 0xc4, 0xbd, 0x3a, 0x0c, 0xc3, 0xa1, 0x4f, 0x37, 0xdd, 0xb1, 0xb7, 0xe9, 0x06, 0x41, 0x98, 0xb8, 0x89,
0x0b, 0x83, 0x98, 0x13, 0xd9, 0x5f, 0x83, 0xd6, 0x7d, 0x1a, 0x1c, 0x51, 0x3a, 0x70, 0xe8, 0xd7, 0x17, 0x06, 0x31, 0x27, 0xb2, 0xbf, 0x06, 0xad, 0xfb, 0x34, 0x38, 0xa2, 0x74, 0xe0, 0xd0, 0xaf,
0x27, 0x34, 0x4e, 0xc8, 0x27, 0x60, 0xc9, 0xa5, 0xdf, 0xa0, 0x74, 0xd0, 0x1b, 0xbb, 0x71, 0x3c, 0x4f, 0x68, 0x9c, 0x90, 0x4f, 0xc0, 0x92, 0x4b, 0xbf, 0x41, 0xe9, 0xa0, 0x37, 0x76, 0xe3, 0x78,
0x3e, 0x8d, 0xdc, 0x98, 0x76, 0xac, 0x6b, 0xd6, 0xcd, 0xa6, 0xd3, 0xe6, 0x15, 0x87, 0x0a, 0x27, 0x7c, 0x1a, 0xb9, 0x31, 0xed, 0x58, 0xd7, 0xad, 0xf5, 0xa6, 0xd3, 0xe6, 0x15, 0x87, 0x0a, 0x27,
0xaf, 0x42, 0x33, 0x66, 0xa4, 0x34, 0x48, 0xa2, 0x70, 0x3c, 0xed, 0x94, 0x90, 0xae, 0xc1, 0xb0, 0xaf, 0x42, 0x33, 0x66, 0xa4, 0x34, 0x48, 0xa2, 0x70, 0x3c, 0xed, 0x94, 0x90, 0xae, 0xc1, 0xb0,
0x5d, 0x0e, 0xd9, 0x3e, 0x2c, 0xaa, 0x1e, 0xe2, 0x71, 0x18, 0xc4, 0x94, 0xdc, 0x86, 0x95, 0xbe, 0x5d, 0x0e, 0xd9, 0x3e, 0x2c, 0xaa, 0x1e, 0xe2, 0x71, 0x18, 0xc4, 0x94, 0xdc, 0x86, 0x95, 0xbe,
0x37, 0x3e, 0xa5, 0x51, 0x0f, 0x3f, 0x1e, 0x05, 0x74, 0x14, 0x06, 0x5e, 0xbf, 0x63, 0x5d, 0x2b, 0x37, 0x3e, 0xa5, 0x51, 0x0f, 0x3f, 0x1e, 0x05, 0x74, 0x14, 0x06, 0x5e, 0xbf, 0x63, 0x5d, 0x2f,
0xdf, 0xac, 0x3b, 0x84, 0xd7, 0xb1, 0x2f, 0xde, 0x15, 0x35, 0xe4, 0x06, 0x2c, 0xd2, 0x80, 0xe3, 0xaf, 0xd7, 0x1d, 0xc2, 0xeb, 0xd8, 0x17, 0xef, 0x8a, 0x1a, 0x72, 0x13, 0x16, 0x69, 0xc0, 0x71,
0x74, 0x80, 0x5f, 0x89, 0xae, 0x5a, 0x29, 0xcc, 0x3e, 0xb0, 0xff, 0xd6, 0x82, 0xa5, 0x07, 0x81, 0x3a, 0xc0, 0xaf, 0x44, 0x57, 0xad, 0x14, 0x66, 0x1f, 0xd8, 0x7f, 0x63, 0xc1, 0xd2, 0x83, 0xc0,
0x97, 0x3c, 0x71, 0x7d, 0x9f, 0x26, 0x72, 0x4e, 0x37, 0x60, 0xf1, 0x1c, 0x01, 0x9c, 0xd3, 0x79, 0x4b, 0x9e, 0xb8, 0xbe, 0x4f, 0x13, 0x39, 0xa7, 0x9b, 0xb0, 0x78, 0x8e, 0x00, 0xce, 0xe9, 0x3c,
0x18, 0x0d, 0xc4, 0x8c, 0x5a, 0x1c, 0x3e, 0x14, 0xe8, 0xcc, 0x91, 0x95, 0x66, 0x8e, 0xac, 0x70, 0x8c, 0x06, 0x62, 0x46, 0x2d, 0x0e, 0x1f, 0x0a, 0x74, 0xe6, 0xc8, 0x4a, 0x33, 0x47, 0x56, 0xb8,
0xb9, 0xca, 0x33, 0x96, 0xeb, 0x06, 0x2c, 0x46, 0xb4, 0x1f, 0x9e, 0xd1, 0x68, 0xda, 0x3b, 0xf7, 0x5c, 0xe5, 0x19, 0xcb, 0x75, 0x13, 0x16, 0x23, 0xda, 0x0f, 0xcf, 0x68, 0x34, 0xed, 0x9d, 0x7b,
0x82, 0x41, 0x78, 0xde, 0xa9, 0x5c, 0xb3, 0x6e, 0x56, 0x9d, 0x96, 0x84, 0x9f, 0x20, 0x6a, 0xaf, 0xc1, 0x20, 0x3c, 0xef, 0x54, 0xae, 0x5b, 0xeb, 0x55, 0xa7, 0x25, 0xe1, 0x27, 0x88, 0xda, 0x2b,
0x00, 0xd1, 0x67, 0xc1, 0xd7, 0xcd, 0x1e, 0xc2, 0xf2, 0xe3, 0xc0, 0x0f, 0xfb, 0x4f, 0x7f, 0xcc, 0x40, 0xf4, 0x59, 0xf0, 0x75, 0xb3, 0x87, 0xb0, 0xfc, 0x38, 0xf0, 0xc3, 0xfe, 0xd3, 0x1f, 0x71,
0xd9, 0x15, 0x74, 0x5f, 0x2a, 0xec, 0x7e, 0x0d, 0x56, 0xcc, 0x8e, 0xc4, 0x00, 0x28, 0xac, 0x6e, 0x76, 0x05, 0xdd, 0x97, 0x0a, 0xbb, 0x5f, 0x83, 0x15, 0xb3, 0x23, 0x31, 0x00, 0x0a, 0xab, 0xdb,
0x9f, 0xba, 0xc1, 0x90, 0xca, 0x26, 0xe5, 0x10, 0x3e, 0x0e, 0xed, 0xfe, 0x24, 0x8a, 0x68, 0x90, 0xa7, 0x6e, 0x30, 0xa4, 0xb2, 0x49, 0x39, 0x84, 0x8f, 0x43, 0xbb, 0x3f, 0x89, 0x22, 0x1a, 0xe4,
0x1b, 0xc3, 0xa2, 0xc0, 0xd5, 0x20, 0x5e, 0x85, 0x66, 0x40, 0xcf, 0x53, 0x32, 0xc1, 0x32, 0x01, 0xc6, 0xb0, 0x28, 0x70, 0x35, 0x88, 0x57, 0xa1, 0x19, 0xd0, 0xf3, 0x94, 0x4c, 0xb0, 0x4c, 0x40,
0x3d, 0x97, 0x24, 0x76, 0x07, 0xd6, 0xb2, 0xdd, 0x88, 0x01, 0xfc, 0xc8, 0x82, 0xca, 0xe3, 0xe4, 0xcf, 0x25, 0x89, 0xdd, 0x81, 0xb5, 0x6c, 0x37, 0x62, 0x00, 0x3f, 0xb4, 0xa0, 0xf2, 0x38, 0x79,
0x59, 0x48, 0x6e, 0x41, 0x25, 0x99, 0x8e, 0x39, 0x63, 0xb6, 0xee, 0x90, 0x5b, 0xc8, 0xeb, 0xb7, 0x16, 0x92, 0x5b, 0x50, 0x49, 0xa6, 0x63, 0xce, 0x98, 0xad, 0x3b, 0xe4, 0x16, 0xf2, 0xfa, 0xad,
0xb6, 0x06, 0x83, 0x88, 0xc6, 0xf1, 0xa3, 0xe9, 0x98, 0x3a, 0x4d, 0x97, 0x17, 0x7a, 0x8c, 0x8e, 0xad, 0xc1, 0x20, 0xa2, 0x71, 0xfc, 0x68, 0x3a, 0xa6, 0x4e, 0xd3, 0xe5, 0x85, 0x1e, 0xa3, 0x23,
0x74, 0x60, 0x5e, 0x94, 0xb1, 0xc3, 0xba, 0x23, 0x8b, 0xe4, 0x2a, 0x80, 0x3b, 0x0a, 0x27, 0x41, 0x1d, 0x98, 0x17, 0x65, 0xec, 0xb0, 0xee, 0xc8, 0x22, 0xb9, 0x06, 0xe0, 0x8e, 0xc2, 0x49, 0x90,
0xd2, 0x8b, 0xdd, 0x04, 0x77, 0xae, 0xec, 0x68, 0x08, 0xb9, 0x0e, 0x0b, 0x71, 0x3f, 0xf2, 0xc6, 0xf4, 0x62, 0x37, 0xc1, 0x9d, 0x2b, 0x3b, 0x1a, 0x42, 0x6e, 0xc0, 0x42, 0xdc, 0x8f, 0xbc, 0x71,
0x49, 0x6f, 0x3c, 0x39, 0x7e, 0x4a, 0xa7, 0xb8, 0x63, 0x75, 0xc7, 0x04, 0xc9, 0x27, 0xa0, 0x16, 0xd2, 0x1b, 0x4f, 0x8e, 0x9f, 0xd2, 0x29, 0xee, 0x58, 0xdd, 0x31, 0x41, 0xf2, 0x09, 0xa8, 0x85,
0x4e, 0x92, 0x71, 0xe8, 0x05, 0x49, 0xa7, 0x7a, 0xcd, 0xba, 0xd9, 0xb8, 0xb3, 0x28, 0xc6, 0xf4, 0x93, 0x64, 0x1c, 0x7a, 0x41, 0xd2, 0xa9, 0x5e, 0xb7, 0xd6, 0x1b, 0x77, 0x16, 0xc5, 0x98, 0x1e,
0x70, 0x92, 0x1c, 0x32, 0xd8, 0x51, 0x04, 0xac, 0xc9, 0x7e, 0x18, 0x9c, 0x78, 0xd1, 0x88, 0xcb, 0x4e, 0x92, 0x43, 0x06, 0x3b, 0x8a, 0x80, 0x35, 0xd9, 0x0f, 0x83, 0x13, 0x2f, 0x1a, 0x71, 0x59,
0x62, 0x67, 0x0e, 0x7b, 0x35, 0x41, 0xfb, 0x5b, 0x25, 0x68, 0x3c, 0x8a, 0xdc, 0x20, 0x76, 0xfb, 0xec, 0xcc, 0x61, 0xaf, 0x26, 0x68, 0x7f, 0xab, 0x04, 0x8d, 0x47, 0x91, 0x1b, 0xc4, 0x6e, 0x9f,
0x0c, 0x60, 0x53, 0x48, 0x9e, 0xf5, 0x4e, 0xdd, 0xf8, 0x14, 0x67, 0x5d, 0x77, 0x64, 0x91, 0xac, 0x01, 0x6c, 0x0a, 0xc9, 0xb3, 0xde, 0xa9, 0x1b, 0x9f, 0xe2, 0xac, 0xeb, 0x8e, 0x2c, 0x92, 0x35,
0xc1, 0x1c, 0x1f, 0x30, 0xce, 0xad, 0xec, 0x88, 0x12, 0x79, 0x1d, 0x96, 0x82, 0xc9, 0xa8, 0x67, 0x98, 0xe3, 0x03, 0xc6, 0xb9, 0x95, 0x1d, 0x51, 0x22, 0xaf, 0xc3, 0x52, 0x30, 0x19, 0xf5, 0xcc,
0xf6, 0x55, 0xc6, 0x1d, 0xcf, 0x57, 0xb0, 0x85, 0x38, 0x66, 0x7b, 0xce, 0xbb, 0xe0, 0xb3, 0xd4, 0xbe, 0xca, 0xb8, 0xe3, 0xf9, 0x0a, 0xb6, 0x10, 0xc7, 0x6c, 0xcf, 0x79, 0x17, 0x7c, 0x96, 0x1a,
0x10, 0x62, 0x43, 0x53, 0x94, 0xa8, 0x37, 0x3c, 0xe5, 0xd3, 0xac, 0x3a, 0x06, 0xc6, 0xda, 0x48, 0x42, 0x6c, 0x68, 0x8a, 0x12, 0xf5, 0x86, 0xa7, 0x7c, 0x9a, 0x55, 0xc7, 0xc0, 0x58, 0x1b, 0x89,
0xbc, 0x11, 0xed, 0xc5, 0x89, 0x3b, 0x1a, 0x8b, 0x69, 0x69, 0x08, 0xd6, 0x87, 0x89, 0xeb, 0xf7, 0x37, 0xa2, 0xbd, 0x38, 0x71, 0x47, 0x63, 0x31, 0x2d, 0x0d, 0xc1, 0xfa, 0x30, 0x71, 0xfd, 0xde,
0x4e, 0x28, 0x8d, 0x3b, 0xf3, 0xa2, 0x5e, 0x21, 0xe4, 0x35, 0x68, 0x0d, 0x68, 0x9c, 0xf4, 0xc4, 0x09, 0xa5, 0x71, 0x67, 0x5e, 0xd4, 0x2b, 0x84, 0xbc, 0x06, 0xad, 0x01, 0x8d, 0x93, 0x9e, 0xd8,
0xe6, 0xd0, 0xb8, 0x53, 0x43, 0xc9, 0xcb, 0xa0, 0x8c, 0x43, 0xee, 0xd3, 0x44, 0x5b, 0x9d, 0x58, 0x1c, 0x1a, 0x77, 0x6a, 0x28, 0x79, 0x19, 0x94, 0x71, 0xc8, 0x7d, 0x9a, 0x68, 0xab, 0x13, 0x0b,
0x70, 0xa2, 0xbd, 0x0f, 0x44, 0x83, 0x77, 0x68, 0xe2, 0x7a, 0x7e, 0x4c, 0xde, 0x84, 0x66, 0xa2, 0x4e, 0xb4, 0xf7, 0x81, 0x68, 0xf0, 0x0e, 0x4d, 0x5c, 0xcf, 0x8f, 0xc9, 0x9b, 0xd0, 0x4c, 0x34,
0x11, 0xa3, 0xa6, 0x69, 0x28, 0xb6, 0xd1, 0x3e, 0x70, 0x0c, 0x3a, 0xfb, 0x3e, 0xd4, 0xee, 0x51, 0x62, 0xd4, 0x34, 0x0d, 0xc5, 0x36, 0xda, 0x07, 0x8e, 0x41, 0x67, 0xdf, 0x87, 0xda, 0x3d, 0x4a,
0xba, 0xef, 0x8d, 0xbc, 0x84, 0xac, 0x41, 0xf5, 0xc4, 0x7b, 0x46, 0x39, 0x63, 0x97, 0xf7, 0x2e, 0xf7, 0xbd, 0x91, 0x97, 0x90, 0x35, 0xa8, 0x9e, 0x78, 0xcf, 0x28, 0x67, 0xec, 0xf2, 0xde, 0x25,
0x39, 0xbc, 0x48, 0xba, 0x30, 0x3f, 0xa6, 0x51, 0x9f, 0xca, 0xe5, 0xdf, 0xbb, 0xe4, 0x48, 0xe0, 0x87, 0x17, 0x49, 0x17, 0xe6, 0xc7, 0x34, 0xea, 0x53, 0xb9, 0xfc, 0x7b, 0x97, 0x1c, 0x09, 0xdc,
0xee, 0x3c, 0x54, 0x7d, 0xf6, 0xb1, 0xfd, 0xdd, 0x12, 0x34, 0x8e, 0x68, 0xa0, 0x04, 0x86, 0x40, 0x9d, 0x87, 0xaa, 0xcf, 0x3e, 0xb6, 0xff, 0xb9, 0x04, 0x8d, 0x23, 0x1a, 0x28, 0x81, 0x21, 0x50,
0x85, 0x4d, 0x49, 0x08, 0x09, 0xfe, 0x4f, 0x5e, 0x81, 0x06, 0x4e, 0x33, 0x4e, 0x22, 0x2f, 0x18, 0x61, 0x53, 0x12, 0x42, 0x82, 0xff, 0x93, 0x57, 0xa0, 0x81, 0xd3, 0x8c, 0x93, 0xc8, 0x0b, 0x86,
0x0a, 0x3e, 0x05, 0x06, 0x1d, 0x21, 0x42, 0xda, 0x50, 0x76, 0x47, 0x92, 0x47, 0xd9, 0xbf, 0x4c, 0x82, 0x4f, 0x81, 0x41, 0x47, 0x88, 0x90, 0x36, 0x94, 0xdd, 0x91, 0xe4, 0x51, 0xf6, 0x2f, 0x13,
0x98, 0xc6, 0xee, 0x74, 0xc4, 0xe4, 0x4e, 0xed, 0x5a, 0xd3, 0x69, 0x08, 0x6c, 0x8f, 0x6d, 0xdb, 0xa6, 0xb1, 0x3b, 0x1d, 0x31, 0xb9, 0x53, 0xbb, 0xd6, 0x74, 0x1a, 0x02, 0xdb, 0x63, 0xdb, 0x76,
0x2d, 0x58, 0xd6, 0x49, 0x64, 0xeb, 0x55, 0x6c, 0x7d, 0x49, 0xa3, 0x14, 0x9d, 0xdc, 0x80, 0x45, 0x0b, 0x96, 0x75, 0x12, 0xd9, 0x7a, 0x15, 0x5b, 0x5f, 0xd2, 0x28, 0x45, 0x27, 0x37, 0x61, 0x51,
0x49, 0x1f, 0xf1, 0xc1, 0xe2, 0x3e, 0xd6, 0x9d, 0x96, 0x80, 0xe5, 0x14, 0x6e, 0x42, 0xfb, 0xc4, 0xd2, 0x47, 0x7c, 0xb0, 0xb8, 0x8f, 0x75, 0xa7, 0x25, 0x60, 0x39, 0x85, 0x75, 0x68, 0x9f, 0x78,
0x0b, 0x5c, 0xbf, 0xd7, 0xf7, 0x93, 0xb3, 0xde, 0x80, 0xfa, 0x89, 0x8b, 0x3b, 0x5a, 0x75, 0x5a, 0x81, 0xeb, 0xf7, 0xfa, 0x7e, 0x72, 0xd6, 0x1b, 0x50, 0x3f, 0x71, 0x71, 0x47, 0xab, 0x4e, 0x0b,
0x88, 0x6f, 0xfb, 0xc9, 0xd9, 0x0e, 0x43, 0xc9, 0xeb, 0x50, 0x3f, 0xa1, 0xb4, 0x87, 0x2b, 0xd1, 0xf1, 0x6d, 0x3f, 0x39, 0xdb, 0x61, 0x28, 0x79, 0x1d, 0xea, 0x27, 0x94, 0xf6, 0x70, 0x25, 0x3a,
0xa9, 0x19, 0xd2, 0x21, 0x57, 0xd7, 0xa9, 0x9d, 0x88, 0xff, 0xec, 0xbf, 0xb4, 0xa0, 0xc9, 0x97, 0x35, 0x43, 0x3a, 0xe4, 0xea, 0x3a, 0xb5, 0x13, 0xb9, 0xce, 0xeb, 0xd0, 0x0e, 0x27, 0xc9, 0x30,
0x4a, 0x98, 0x8b, 0xeb, 0xb0, 0x20, 0x47, 0x44, 0xa3, 0x28, 0x8c, 0x04, 0xfb, 0x9b, 0x20, 0xd9, 0xf4, 0x82, 0x61, 0xaf, 0x7f, 0xea, 0x06, 0x3d, 0x6f, 0xd0, 0xa9, 0x5f, 0xb7, 0xd6, 0x2b, 0x4e,
0x80, 0xb6, 0x04, 0xc6, 0x11, 0xf5, 0x46, 0xee, 0x90, 0x0a, 0xdd, 0x92, 0xc3, 0xc9, 0x9d, 0xb4, 0x4b, 0xe2, 0x4c, 0x3b, 0x3c, 0x18, 0xd8, 0x7f, 0x61, 0x41, 0x93, 0x2f, 0xaa, 0x30, 0x2c, 0x37,
0xc5, 0x28, 0x9c, 0x24, 0x5c, 0x61, 0x37, 0xee, 0x34, 0xc5, 0xa0, 0x1c, 0x86, 0x39, 0x26, 0x09, 0x60, 0x41, 0x8e, 0x9d, 0x46, 0x51, 0x18, 0x09, 0x41, 0x31, 0x41, 0xb2, 0x01, 0x6d, 0x09, 0x8c,
0x63, 0xff, 0x82, 0xa5, 0x36, 0x30, 0xfb, 0xfb, 0x16, 0x10, 0x36, 0xf4, 0x47, 0x21, 0x6f, 0x42, 0x23, 0xea, 0x8d, 0xdc, 0x21, 0x15, 0x5a, 0x28, 0x87, 0x93, 0x3b, 0x69, 0x8b, 0x51, 0x38, 0x49,
0xac, 0x54, 0x76, 0x97, 0xac, 0x17, 0xde, 0xa5, 0xd2, 0xac, 0x5d, 0xba, 0x09, 0x73, 0x38, 0x2c, 0xb8, 0x6a, 0x6f, 0xdc, 0x69, 0x8a, 0xe1, 0x3b, 0x0c, 0x73, 0x4c, 0x12, 0x26, 0x28, 0x05, 0x9b,
0x26, 0xcf, 0xe5, 0xec, 0xd0, 0xef, 0x96, 0x3a, 0x96, 0x23, 0xea, 0x89, 0x0d, 0x55, 0x3e, 0xc7, 0x62, 0x60, 0xf6, 0xf7, 0x2c, 0x20, 0x6c, 0xe8, 0x8f, 0x42, 0xde, 0x84, 0x58, 0xd3, 0xec, 0x7e,
0x4a, 0xc1, 0x1c, 0x79, 0x95, 0xfd, 0x1d, 0x0b, 0x9a, 0x4c, 0xe3, 0x06, 0xd4, 0x47, 0x5d, 0x45, 0x5a, 0x2f, 0xbc, 0x9f, 0xa5, 0x59, 0xfb, 0xb9, 0x0e, 0x73, 0x38, 0x2c, 0x26, 0xf9, 0xe5, 0xec,
0x6e, 0x03, 0x39, 0x99, 0x04, 0x03, 0x2f, 0x18, 0xf6, 0x92, 0x67, 0xde, 0xa0, 0x77, 0x3c, 0x65, 0xd0, 0xef, 0x96, 0x3a, 0x96, 0x23, 0xea, 0x89, 0x0d, 0x55, 0x3e, 0xc7, 0x4a, 0xc1, 0x1c, 0x79,
0x5d, 0xe1, 0xb8, 0xf7, 0x2e, 0x39, 0x05, 0x75, 0xe4, 0x75, 0x68, 0x1b, 0x68, 0x9c, 0x44, 0x7c, 0x95, 0xfd, 0x1d, 0x0b, 0x9a, 0x6c, 0xf5, 0x03, 0xea, 0xa3, 0x56, 0x23, 0xb7, 0x81, 0x9c, 0x4c,
0xf4, 0x7b, 0x97, 0x9c, 0x5c, 0x0d, 0x5b, 0x4c, 0xa6, 0x0d, 0x27, 0x49, 0xcf, 0x0b, 0x06, 0xf4, 0x82, 0x01, 0xdb, 0xac, 0xe4, 0x99, 0x37, 0xe8, 0x1d, 0x4f, 0x59, 0x57, 0x38, 0xee, 0xbd, 0x4b,
0x19, 0xae, 0xff, 0x82, 0x63, 0x60, 0x77, 0x5b, 0xd0, 0xd4, 0xbf, 0xb3, 0xdf, 0x87, 0x9a, 0xd4, 0x4e, 0x41, 0x1d, 0x79, 0x1d, 0xda, 0x06, 0x1a, 0x27, 0x11, 0x1f, 0xfd, 0xde, 0x25, 0x27, 0x57,
0xa5, 0xa8, 0x47, 0x32, 0xe3, 0x72, 0x34, 0x84, 0x74, 0xa1, 0x66, 0x8e, 0xc2, 0xa9, 0x7d, 0x94, 0xc3, 0x16, 0x93, 0xe9, 0xcd, 0x49, 0xd2, 0xf3, 0x82, 0x01, 0x7d, 0x86, 0xeb, 0xbf, 0xe0, 0x18,
0xbe, 0xed, 0xcf, 0x41, 0x7b, 0x9f, 0x29, 0xb4, 0xc0, 0x0b, 0x86, 0xc2, 0xa8, 0x30, 0x2d, 0x2b, 0xd8, 0xdd, 0x16, 0x34, 0xf5, 0xef, 0xec, 0xf7, 0xa1, 0x26, 0xb5, 0x2e, 0x6a, 0x9c, 0xcc, 0xb8,
0x2c, 0x00, 0xe7, 0x3f, 0x51, 0x62, 0xa2, 0x7c, 0x1a, 0xc6, 0x89, 0xe8, 0x07, 0xff, 0xb7, 0xff, 0x1c, 0x0d, 0x21, 0x5d, 0xa8, 0x99, 0xa3, 0x70, 0x6a, 0x1f, 0xa5, 0x6f, 0xfb, 0x73, 0xd0, 0xde,
0xcd, 0x82, 0x45, 0xc6, 0x08, 0xef, 0xba, 0xc1, 0x54, 0x72, 0xc1, 0x3e, 0x34, 0x59, 0x53, 0x8f, 0x67, 0xaa, 0x2f, 0xf0, 0x82, 0xa1, 0x30, 0x3f, 0x4c, 0x1f, 0x0b, 0x5b, 0xc1, 0xf9, 0x4f, 0x94,
0xc2, 0x2d, 0xae, 0xab, 0xb9, 0x0e, 0xba, 0x29, 0xf6, 0x23, 0x43, 0x7d, 0x4b, 0x27, 0x65, 0xae, 0x98, 0xd0, 0x9f, 0x86, 0x71, 0x22, 0xfa, 0xc1, 0xff, 0xed, 0x7f, 0xb3, 0x60, 0x91, 0x31, 0xc2,
0xd4, 0xd4, 0x31, 0xbe, 0x66, 0xca, 0x22, 0x71, 0xa3, 0x21, 0x4d, 0x50, 0x8b, 0x0b, 0xad, 0x0e, 0xbb, 0x6e, 0x30, 0x95, 0x5c, 0xb0, 0x0f, 0x4d, 0xd6, 0xd4, 0xa3, 0x70, 0x8b, 0x6b, 0x75, 0xae,
0x1c, 0xda, 0x0e, 0x83, 0x13, 0x72, 0x0d, 0x9a, 0xb1, 0x9b, 0xf4, 0xc6, 0x34, 0xc2, 0x35, 0x41, 0xad, 0xd6, 0xc5, 0x7e, 0x64, 0xa8, 0x6f, 0xe9, 0xa4, 0xcc, 0xe9, 0x9a, 0x3a, 0xc6, 0xd7, 0x4c,
0x81, 0x2f, 0x3b, 0x10, 0xbb, 0xc9, 0x21, 0x8d, 0xee, 0x4e, 0x13, 0xda, 0xfd, 0x05, 0x58, 0xca, 0xad, 0x24, 0x6e, 0x34, 0xa4, 0x09, 0xea, 0x7b, 0xa1, 0xff, 0x81, 0x43, 0xdb, 0x61, 0x70, 0x42,
0xf5, 0xc2, 0x74, 0x4c, 0x3a, 0x45, 0xf6, 0x2f, 0x59, 0x81, 0xea, 0x99, 0xeb, 0x4f, 0xa8, 0x30, 0xae, 0x43, 0x33, 0x76, 0x93, 0xde, 0x98, 0x46, 0xb8, 0x26, 0xa8, 0x1a, 0xca, 0x0e, 0xc4, 0x6e,
0x2e, 0xbc, 0xf0, 0x76, 0xe9, 0x2d, 0xcb, 0x7e, 0x0d, 0xda, 0xe9, 0xb0, 0x85, 0xb0, 0x12, 0xa8, 0x72, 0x48, 0xa3, 0xbb, 0xd3, 0x84, 0x76, 0x7f, 0x0e, 0x96, 0x72, 0xbd, 0x30, 0x6d, 0x94, 0x4e,
0xb0, 0x95, 0x16, 0x0d, 0xe0, 0xff, 0xf6, 0xb7, 0x2d, 0x4e, 0xb8, 0x1d, 0x7a, 0x4a, 0x51, 0x33, 0x91, 0xfd, 0x4b, 0x56, 0xa0, 0x7a, 0xe6, 0xfa, 0x13, 0x2a, 0xcc, 0x10, 0x2f, 0xbc, 0x5d, 0x7a,
0x42, 0xa6, 0xcf, 0x25, 0x21, 0xfb, 0x7f, 0xa6, 0x21, 0xfb, 0xc9, 0x27, 0x4b, 0x2e, 0x43, 0x2d, 0xcb, 0xb2, 0x5f, 0x83, 0x76, 0x3a, 0x6c, 0x21, 0xac, 0x04, 0x2a, 0x6c, 0xa5, 0x45, 0x03, 0xf8,
0xa6, 0xc1, 0xa0, 0xe7, 0xfa, 0x3e, 0xea, 0xb3, 0x9a, 0x33, 0xcf, 0xca, 0x5b, 0xbe, 0x6f, 0xdf, 0xbf, 0xfd, 0x6d, 0x8b, 0x13, 0x6e, 0x87, 0x9e, 0x52, 0xe9, 0x8c, 0x90, 0x69, 0x7e, 0x49, 0xc8,
0x80, 0x25, 0x6d, 0x74, 0xcf, 0x99, 0xc7, 0x01, 0x90, 0x7d, 0x2f, 0x4e, 0x1e, 0x07, 0xf1, 0x58, 0xfe, 0x9f, 0x69, 0xf2, 0x7e, 0xfc, 0xc9, 0x92, 0x2b, 0x50, 0x8b, 0x69, 0x30, 0xe8, 0xb9, 0xbe,
0xd3, 0x83, 0x2f, 0x41, 0x7d, 0xe4, 0x05, 0x38, 0x32, 0xce, 0x8a, 0x55, 0xa7, 0x36, 0xf2, 0x02, 0x8f, 0x9a, 0xaf, 0xe6, 0xcc, 0xb3, 0xf2, 0x96, 0xef, 0xdb, 0x37, 0x61, 0x49, 0x1b, 0xdd, 0x73,
0x36, 0xae, 0x18, 0x2b, 0xdd, 0x67, 0xa2, 0xb2, 0x24, 0x2a, 0xdd, 0x67, 0x58, 0x69, 0xbf, 0x05, 0xe6, 0x71, 0x00, 0x64, 0xdf, 0x8b, 0x93, 0xc7, 0x41, 0x3c, 0xd6, 0x34, 0xe6, 0x4b, 0x50, 0x1f,
0xcb, 0x46, 0x7b, 0xa2, 0xeb, 0x57, 0xa1, 0x3a, 0x49, 0x9e, 0x85, 0xd2, 0x4a, 0x35, 0x04, 0x87, 0x79, 0x01, 0x8e, 0x8c, 0xb3, 0x62, 0xd5, 0xa9, 0x8d, 0xbc, 0x80, 0x8d, 0x2b, 0xc6, 0x4a, 0xf7,
0x30, 0xbf, 0xc7, 0xe1, 0x35, 0xf6, 0x3b, 0xb0, 0x74, 0x40, 0xcf, 0x05, 0x67, 0xca, 0x81, 0xbc, 0x99, 0xa8, 0x2c, 0x89, 0x4a, 0xf7, 0x19, 0x56, 0xda, 0x6f, 0xc1, 0xb2, 0xd1, 0x9e, 0xe8, 0xfa,
0x76, 0xa1, 0x4f, 0x84, 0xf5, 0xf6, 0x2d, 0x20, 0xfa, 0xc7, 0xa2, 0x57, 0xcd, 0x43, 0xb2, 0x0c, 0x55, 0xa8, 0x4e, 0x92, 0x67, 0xa1, 0xb4, 0x67, 0x0d, 0xc1, 0x21, 0xcc, 0x43, 0x72, 0x78, 0x8d,
0x0f, 0xc9, 0x7e, 0x0d, 0xc8, 0x91, 0x37, 0x0c, 0xde, 0xa5, 0x71, 0xec, 0x0e, 0x95, 0x52, 0x6b, 0xfd, 0x0e, 0x2c, 0x1d, 0xd0, 0x73, 0xc1, 0x99, 0x72, 0x20, 0xaf, 0x5d, 0xe8, 0x3d, 0x61, 0xbd,
0x43, 0x79, 0x14, 0x0f, 0x85, 0xec, 0xb1, 0x7f, 0xed, 0x4f, 0xc2, 0xb2, 0x41, 0x27, 0x1a, 0xbe, 0x7d, 0x0b, 0x88, 0xfe, 0xb1, 0xe8, 0x55, 0xf3, 0xa5, 0x2c, 0xc3, 0x97, 0xb2, 0x5f, 0x03, 0x72,
0x02, 0xf5, 0xd8, 0x1b, 0x06, 0x6e, 0x32, 0x89, 0xa8, 0x68, 0x3a, 0x05, 0xec, 0x7b, 0xb0, 0xf2, 0xe4, 0x0d, 0x83, 0x77, 0x69, 0x1c, 0xbb, 0x43, 0xa5, 0xd4, 0xda, 0x50, 0x1e, 0xc5, 0x43, 0x21,
0x25, 0x1a, 0x79, 0x27, 0xd3, 0x8b, 0x9a, 0x37, 0xdb, 0x29, 0x65, 0xdb, 0xd9, 0x85, 0xd5, 0x4c, 0x7b, 0xec, 0x5f, 0xfb, 0x93, 0xb0, 0x6c, 0xd0, 0x89, 0x86, 0xaf, 0x42, 0x3d, 0xf6, 0x86, 0x81,
0x3b, 0xa2, 0x7b, 0xce, 0xbe, 0x62, 0x27, 0x6b, 0x0e, 0x2f, 0x68, 0xc2, 0x5c, 0xd2, 0x85, 0xd9, 0x9b, 0x4c, 0x22, 0x2a, 0x9a, 0x4e, 0x01, 0xfb, 0x1e, 0xac, 0x7c, 0x89, 0x46, 0xde, 0xc9, 0xf4,
0x7e, 0x0c, 0x64, 0x3b, 0x0c, 0x02, 0xda, 0x4f, 0x0e, 0x29, 0x8d, 0xd2, 0x33, 0x51, 0xca, 0xab, 0xa2, 0xe6, 0xcd, 0x76, 0x4a, 0xd9, 0x76, 0x76, 0x61, 0x35, 0xd3, 0x8e, 0xe8, 0x9e, 0xb3, 0xaf,
0x8d, 0x3b, 0xeb, 0x62, 0x65, 0xb3, 0x1a, 0x42, 0x30, 0x31, 0x81, 0xca, 0x98, 0x46, 0x23, 0x6c, 0xd8, 0xc9, 0x9a, 0xc3, 0x0b, 0x9a, 0x30, 0x97, 0x74, 0x61, 0xb6, 0x1f, 0x03, 0xd9, 0x0e, 0x83,
0xb8, 0xe6, 0xe0, 0xff, 0xf6, 0x2a, 0x2c, 0x1b, 0xcd, 0x0a, 0x77, 0xf6, 0x0d, 0x58, 0xdd, 0xf1, 0x80, 0xf6, 0x93, 0x43, 0x4a, 0xa3, 0xf4, 0xf4, 0x94, 0xf2, 0x6a, 0xe3, 0xce, 0x65, 0xb1, 0xb2,
0xe2, 0x7e, 0xbe, 0xc3, 0x0e, 0xcc, 0x8f, 0x27, 0xc7, 0xbd, 0x54, 0x12, 0x65, 0x91, 0x79, 0x3e, 0x59, 0x0d, 0x21, 0x98, 0x98, 0x40, 0x65, 0x4c, 0xa3, 0x11, 0x36, 0x5c, 0x73, 0xf0, 0x7f, 0x7b,
0xd9, 0x4f, 0x44, 0x63, 0xbf, 0x69, 0x41, 0x65, 0xef, 0xd1, 0xfe, 0x36, 0x53, 0x7e, 0x5e, 0xd0, 0x15, 0x96, 0x8d, 0x66, 0x85, 0xe3, 0xfb, 0x06, 0xac, 0xee, 0x78, 0x71, 0x3f, 0xdf, 0x61, 0x07,
0x0f, 0x47, 0xcc, 0x80, 0xf0, 0x49, 0xab, 0xf2, 0x4c, 0x09, 0xbb, 0x02, 0x75, 0xb4, 0x3b, 0xcc, 0xe6, 0xc7, 0x93, 0xe3, 0x5e, 0x2a, 0x89, 0xb2, 0xc8, 0x7c, 0xa4, 0xec, 0x27, 0xa2, 0xb1, 0x5f,
0x99, 0x13, 0xc7, 0x97, 0x14, 0x60, 0x8e, 0x24, 0x7d, 0x36, 0xf6, 0x22, 0xf4, 0x14, 0xa5, 0xff, 0xb7, 0xa0, 0xb2, 0xf7, 0x68, 0x7f, 0x9b, 0x29, 0x3f, 0x2f, 0xe8, 0x87, 0x23, 0x66, 0x40, 0xf8,
0x57, 0x41, 0xbd, 0x99, 0xaf, 0xb0, 0xbf, 0x5d, 0x85, 0x79, 0x61, 0x4d, 0xb0, 0xbf, 0x7e, 0xe2, 0xa4, 0x55, 0x79, 0xa6, 0x84, 0x5d, 0x85, 0x3a, 0xda, 0x1d, 0xe6, 0xf6, 0x89, 0x83, 0x4e, 0x0a,
0x9d, 0x51, 0x31, 0x12, 0x51, 0x62, 0x36, 0x3d, 0xa2, 0xa3, 0x30, 0xa1, 0x3d, 0x63, 0x1b, 0x4c, 0x30, 0x97, 0x93, 0x3e, 0x1b, 0x7b, 0x11, 0xfa, 0x94, 0xd2, 0x53, 0xac, 0xa0, 0xde, 0xcc, 0x57,
0x10, 0x1d, 0x65, 0xde, 0x50, 0x8f, 0xbb, 0xd6, 0x65, 0x4e, 0x65, 0x80, 0x6c, 0xb1, 0x18, 0xd0, 0xd8, 0xdf, 0xae, 0xc2, 0xbc, 0xb0, 0x26, 0xd8, 0x5f, 0x3f, 0xf1, 0xce, 0xa8, 0x18, 0x89, 0x28,
0xf3, 0x06, 0x38, 0xa6, 0x8a, 0x23, 0x8b, 0x6c, 0x25, 0xfa, 0xee, 0xd8, 0xed, 0x7b, 0xc9, 0x54, 0x31, 0x9b, 0x1e, 0xd1, 0x51, 0x98, 0xd0, 0x9e, 0xb1, 0x0d, 0x26, 0x88, 0x2e, 0x35, 0x6f, 0xa8,
0xa8, 0x04, 0x55, 0x66, 0x6d, 0xfb, 0x61, 0xdf, 0xf5, 0x7b, 0xc7, 0xae, 0xef, 0x06, 0x7d, 0x2a, 0xc7, 0x9d, 0xf0, 0x32, 0xa7, 0x32, 0x40, 0xb6, 0x58, 0xd2, 0xa3, 0xa8, 0xa0, 0x47, 0x21, 0x8b,
0x9d, 0x70, 0x03, 0x64, 0x0e, 0xa9, 0x18, 0x92, 0x24, 0xe3, 0x4e, 0x6b, 0x06, 0x65, 0x06, 0xa9, 0x6c, 0x25, 0xfa, 0xee, 0xd8, 0xed, 0x7b, 0xc9, 0x54, 0xa8, 0x04, 0x55, 0x66, 0x6d, 0xfb, 0x61,
0x1f, 0x8e, 0x46, 0x5e, 0xc2, 0xfc, 0x58, 0xf4, 0x71, 0xca, 0x8e, 0x86, 0x70, 0x97, 0x1f, 0x4b, 0xdf, 0xf5, 0x7b, 0xc7, 0xae, 0xef, 0x06, 0x7d, 0x2a, 0xdd, 0x75, 0x03, 0x64, 0xae, 0xab, 0x18,
0xe7, 0x7c, 0xf5, 0xea, 0xd2, 0xe5, 0xd7, 0x40, 0xd6, 0x0a, 0x73, 0x94, 0x98, 0x1a, 0x7b, 0x7a, 0x92, 0x24, 0xe3, 0xee, 0x6d, 0x06, 0x65, 0x06, 0xa9, 0x1f, 0x8e, 0x46, 0x5e, 0xc2, 0x3c, 0x5e,
0xde, 0x01, 0xde, 0x4a, 0x8a, 0xb0, 0x7d, 0x98, 0x04, 0x31, 0x4d, 0x12, 0x9f, 0x0e, 0xd4, 0x80, 0xf4, 0x86, 0xca, 0x8e, 0x86, 0xf0, 0xc3, 0x01, 0x96, 0xce, 0xf9, 0xea, 0xd5, 0xe5, 0xe1, 0x40,
0x1a, 0x48, 0x96, 0xaf, 0x20, 0xb7, 0x61, 0x99, 0xbb, 0xd6, 0xb1, 0x9b, 0x84, 0xf1, 0xa9, 0x17, 0x03, 0x59, 0x2b, 0xcc, 0xa5, 0x62, 0x6a, 0xec, 0xe9, 0x79, 0x07, 0x78, 0x2b, 0x29, 0xc2, 0xf6,
0xf7, 0x62, 0xe6, 0xa4, 0x36, 0x91, 0xbe, 0xa8, 0x8a, 0xbc, 0x05, 0xeb, 0x19, 0x38, 0xa2, 0x7d, 0x61, 0x12, 0xc4, 0x34, 0x49, 0x7c, 0x3a, 0x50, 0x03, 0x6a, 0x20, 0x59, 0xbe, 0x82, 0xdc, 0x86,
0xea, 0x9d, 0xd1, 0x41, 0x67, 0x01, 0xbf, 0x9a, 0x55, 0x4d, 0xae, 0x41, 0x83, 0x9d, 0x28, 0x26, 0x65, 0xee, 0x84, 0xc7, 0x6e, 0x12, 0xc6, 0xa7, 0x5e, 0xdc, 0x8b, 0x99, 0x3b, 0xdb, 0x44, 0xfa,
0xe3, 0x81, 0xcb, 0x2c, 0x72, 0x0b, 0xf7, 0x41, 0x87, 0xc8, 0x1b, 0xb0, 0x30, 0xa6, 0xdc, 0x9c, 0xa2, 0x2a, 0xf2, 0x16, 0x5c, 0xce, 0xc0, 0x11, 0xed, 0x53, 0xef, 0x8c, 0x0e, 0x3a, 0x0b, 0xf8,
0x9f, 0x26, 0x7e, 0x3f, 0xee, 0x2c, 0x1a, 0xda, 0x8d, 0x71, 0xae, 0x63, 0x52, 0x30, 0xa6, 0xec, 0xd5, 0xac, 0x6a, 0x72, 0x1d, 0x1a, 0xec, 0xec, 0x31, 0x19, 0x0f, 0x5c, 0x66, 0x91, 0x5b, 0xb8,
0xc7, 0xe8, 0x5a, 0xba, 0xd3, 0x4e, 0x1b, 0xd9, 0x2d, 0x05, 0x50, 0x46, 0x22, 0xef, 0xcc, 0x4d, 0x0f, 0x3a, 0x44, 0xde, 0x80, 0x85, 0x31, 0xe5, 0xe6, 0xfc, 0x34, 0xf1, 0xfb, 0x71, 0x67, 0xd1,
0x68, 0x67, 0x89, 0x2b, 0x74, 0x51, 0x64, 0xdf, 0x79, 0x81, 0x97, 0x78, 0x6e, 0x12, 0x46, 0x1d, 0xd0, 0x6e, 0x8c, 0x73, 0x1d, 0x93, 0x82, 0x31, 0x65, 0x3f, 0x46, 0x27, 0xd4, 0x9d, 0x76, 0xda,
0x82, 0x75, 0x29, 0x60, 0xff, 0x89, 0xc5, 0xd5, 0xae, 0x60, 0x51, 0xa5, 0x3e, 0x5f, 0x81, 0x06, 0xc8, 0x6e, 0x29, 0x80, 0x32, 0x12, 0x79, 0x67, 0x6e, 0x42, 0x3b, 0x4b, 0x5c, 0xa1, 0x8b, 0x22,
0x67, 0xce, 0x5e, 0x18, 0xf8, 0x53, 0xc1, 0xaf, 0xc0, 0xa1, 0x87, 0x81, 0x3f, 0x25, 0x1f, 0x83, 0xfb, 0xce, 0x0b, 0xbc, 0xc4, 0x73, 0x93, 0x30, 0xea, 0x10, 0xac, 0x4b, 0x01, 0xfb, 0x8f, 0x2c,
0x05, 0x2f, 0xd0, 0x49, 0xb8, 0x84, 0x37, 0x25, 0x88, 0x44, 0xaf, 0x40, 0x63, 0x3c, 0x39, 0xf6, 0xae, 0x76, 0x05, 0x8b, 0x2a, 0xf5, 0xf9, 0x0a, 0x34, 0x38, 0x73, 0xf6, 0xc2, 0xc0, 0x9f, 0x0a,
0xbd, 0x3e, 0x27, 0x29, 0xf3, 0x56, 0x38, 0x84, 0x04, 0xcc, 0x19, 0xe4, 0xe3, 0xe4, 0x14, 0x15, 0x7e, 0x05, 0x0e, 0x3d, 0x0c, 0xfc, 0x29, 0xf9, 0x18, 0x2c, 0x78, 0x81, 0x4e, 0xc2, 0x25, 0xbc,
0xa4, 0x68, 0x08, 0x8c, 0x91, 0xd8, 0x77, 0x61, 0xc5, 0x1c, 0xa0, 0x50, 0x65, 0x1b, 0x50, 0x13, 0x29, 0x41, 0x24, 0x7a, 0x05, 0x1a, 0xe3, 0xc9, 0xb1, 0xef, 0xf5, 0x39, 0x49, 0x99, 0xb7, 0xc2,
0x9c, 0x1f, 0x77, 0x1a, 0xb8, 0x7a, 0x2d, 0xb1, 0x7a, 0x82, 0xd4, 0x51, 0xf5, 0xf6, 0x0f, 0x2a, 0x21, 0x24, 0x60, 0xce, 0x20, 0x1f, 0x27, 0xa7, 0xa8, 0x20, 0x45, 0x43, 0x60, 0x8c, 0xc4, 0xbe,
0xb0, 0x2c, 0xd0, 0x6d, 0x3f, 0x8c, 0xe9, 0xd1, 0x64, 0x34, 0x72, 0xa3, 0x02, 0x91, 0xb2, 0x2e, 0x0b, 0x2b, 0xe6, 0x00, 0x85, 0x2a, 0xdb, 0x80, 0x9a, 0xe0, 0xfc, 0xb8, 0xd3, 0xc0, 0xd5, 0x6b,
0x10, 0xa9, 0x92, 0x29, 0x52, 0x8c, 0xd1, 0x4f, 0x5d, 0x2f, 0xe0, 0x9e, 0x2c, 0x97, 0x47, 0x0d, 0x89, 0xd5, 0x13, 0xa4, 0x8e, 0xaa, 0xb7, 0xbf, 0x5f, 0x81, 0x65, 0x81, 0x6e, 0xfb, 0x61, 0x4c,
0x21, 0x37, 0x61, 0xb1, 0xef, 0x87, 0x31, 0xf7, 0xda, 0xf4, 0xa3, 0x64, 0x16, 0xce, 0xab, 0x80, 0x8f, 0x26, 0xa3, 0x91, 0x1b, 0x15, 0x88, 0x94, 0x75, 0x81, 0x48, 0x95, 0x4c, 0x91, 0x62, 0x8c,
0x6a, 0x91, 0x0a, 0xd0, 0x45, 0x78, 0x2e, 0x23, 0xc2, 0x36, 0x34, 0x59, 0xa3, 0x54, 0x6a, 0xa4, 0x7e, 0xea, 0x7a, 0x01, 0xf7, 0x64, 0xb9, 0x3c, 0x6a, 0x08, 0x59, 0x87, 0xc5, 0xbe, 0x1f, 0xc6,
0x79, 0xee, 0xc9, 0xe9, 0x18, 0x1b, 0x4f, 0x56, 0x60, 0xb8, 0x74, 0x2e, 0x16, 0x89, 0x0b, 0x3b, 0xdc, 0x6b, 0xd3, 0x0f, 0x9d, 0x59, 0x38, 0xaf, 0x02, 0xaa, 0x45, 0x2a, 0x40, 0x17, 0xe1, 0xb9,
0xa9, 0x32, 0x8d, 0xa7, 0x51, 0xd7, 0x85, 0xb8, 0xe4, 0xab, 0xc8, 0x3d, 0x00, 0xde, 0x17, 0x9a, 0x8c, 0x08, 0xdb, 0xd0, 0x64, 0x8d, 0x52, 0xa9, 0x91, 0xe6, 0xb9, 0x27, 0xa7, 0x63, 0x6c, 0x3c,
0x5d, 0x40, 0xb3, 0xfb, 0x9a, 0xb9, 0x23, 0xfa, 0xda, 0xdf, 0x62, 0x85, 0x49, 0x44, 0xd1, 0x14, 0x59, 0x81, 0xe1, 0xd2, 0xb9, 0x58, 0x24, 0x2e, 0xec, 0x4c, 0xcb, 0x34, 0x9e, 0x46, 0x5d, 0x17,
0x6b, 0x5f, 0xda, 0xbf, 0x65, 0x41, 0x43, 0xab, 0x23, 0xab, 0xb0, 0xb4, 0xfd, 0xf0, 0xe1, 0xe1, 0xe2, 0x92, 0xaf, 0x22, 0xf7, 0x00, 0x78, 0x5f, 0x68, 0x76, 0x01, 0xcd, 0xee, 0x6b, 0xe6, 0x8e,
0xae, 0xb3, 0xf5, 0xe8, 0xc1, 0x97, 0x76, 0x7b, 0xdb, 0xfb, 0x0f, 0x8f, 0x76, 0xdb, 0x97, 0x18, 0xe8, 0x6b, 0x7f, 0x8b, 0x15, 0x26, 0x11, 0x45, 0x53, 0xac, 0x7d, 0x69, 0xff, 0x86, 0x05, 0x0d,
0xbc, 0xff, 0x70, 0x7b, 0x6b, 0xbf, 0x77, 0xef, 0xa1, 0xb3, 0x2d, 0x61, 0x8b, 0xac, 0x01, 0x71, 0xad, 0x8e, 0xac, 0xc2, 0xd2, 0xf6, 0xc3, 0x87, 0x87, 0xbb, 0xce, 0xd6, 0xa3, 0x07, 0x5f, 0xda,
0x76, 0xdf, 0x7d, 0xf8, 0x68, 0xd7, 0xc0, 0x4b, 0xa4, 0x0d, 0xcd, 0xbb, 0xce, 0xee, 0xd6, 0xf6, 0xed, 0x6d, 0xef, 0x3f, 0x3c, 0xda, 0x6d, 0x5f, 0x62, 0xf0, 0xfe, 0xc3, 0xed, 0xad, 0xfd, 0xde,
0x9e, 0x40, 0xca, 0x64, 0x05, 0xda, 0xf7, 0x1e, 0x1f, 0xec, 0x3c, 0x38, 0xb8, 0xdf, 0xdb, 0xde, 0xbd, 0x87, 0xce, 0xb6, 0x84, 0x2d, 0xb2, 0x06, 0xc4, 0xd9, 0x7d, 0xf7, 0xe1, 0xa3, 0x5d, 0x03,
0x3a, 0xd8, 0xde, 0xdd, 0xdf, 0xdd, 0x69, 0x57, 0xc8, 0x02, 0xd4, 0xb7, 0xee, 0x6e, 0x1d, 0xec, 0x2f, 0x91, 0x36, 0x34, 0xef, 0x3a, 0xbb, 0x5b, 0xdb, 0x7b, 0x02, 0x29, 0x93, 0x15, 0x68, 0xdf,
0x3c, 0x3c, 0xd8, 0xdd, 0x69, 0x57, 0xed, 0x7f, 0xb5, 0x60, 0x15, 0x47, 0x3d, 0xc8, 0x0a, 0xc8, 0x7b, 0x7c, 0xb0, 0xf3, 0xe0, 0xe0, 0x7e, 0x6f, 0x7b, 0xeb, 0x60, 0x7b, 0x77, 0x7f, 0x77, 0xa7,
0x35, 0x68, 0xf4, 0xc3, 0x70, 0x4c, 0x99, 0xb6, 0x57, 0x0a, 0x5d, 0x87, 0x18, 0xf3, 0x73, 0xf5, 0x5d, 0x21, 0x0b, 0x50, 0xdf, 0xba, 0xbb, 0x75, 0xb0, 0xf3, 0xf0, 0x60, 0x77, 0xa7, 0x5d, 0xb5,
0x79, 0x12, 0x46, 0x7d, 0x2a, 0xe4, 0x03, 0x10, 0xba, 0xc7, 0x10, 0xc6, 0xfc, 0x62, 0x7b, 0x39, 0xff, 0xd5, 0x82, 0x55, 0x1c, 0xf5, 0x20, 0x2b, 0x20, 0xd7, 0xa1, 0xd1, 0x0f, 0xc3, 0x31, 0x65,
0x05, 0x17, 0x8f, 0x06, 0xc7, 0x38, 0xc9, 0x1a, 0xcc, 0x1d, 0x47, 0xd4, 0xed, 0x9f, 0x0a, 0xc9, 0xda, 0x5e, 0x29, 0x74, 0x1d, 0x62, 0xcc, 0xcf, 0xd5, 0xe7, 0x49, 0x18, 0xf5, 0xa9, 0x90, 0x0f,
0x10, 0x25, 0xf2, 0xf1, 0xf4, 0x80, 0xd1, 0x67, 0xab, 0xef, 0xd3, 0x01, 0x72, 0x4c, 0xcd, 0x59, 0x40, 0xe8, 0x1e, 0x43, 0x18, 0xf3, 0x8b, 0xed, 0xe5, 0x14, 0x5c, 0x3c, 0x1a, 0x1c, 0xe3, 0x24,
0x14, 0xf8, 0xb6, 0x80, 0x99, 0xfc, 0xbb, 0xc7, 0x6e, 0x30, 0x08, 0x03, 0x3a, 0x10, 0xce, 0x5e, 0x6b, 0x30, 0x77, 0x1c, 0x51, 0xb7, 0x7f, 0x2a, 0x24, 0x43, 0x94, 0xc8, 0xc7, 0xd3, 0x03, 0x46,
0x0a, 0xd8, 0x87, 0xb0, 0x96, 0x9d, 0x9f, 0x90, 0xaf, 0x37, 0x35, 0xf9, 0xe2, 0xbe, 0x57, 0x77, 0x9f, 0xad, 0xbe, 0x4f, 0x07, 0xc8, 0x31, 0x35, 0x67, 0x51, 0xe0, 0xdb, 0x02, 0x66, 0xf2, 0xef,
0xf6, 0x6e, 0x6a, 0xb2, 0xf6, 0x1f, 0x16, 0x54, 0x98, 0x29, 0x9e, 0x6d, 0xb6, 0x75, 0xef, 0xaa, 0x1e, 0xbb, 0xc1, 0x20, 0x0c, 0xe8, 0x40, 0x38, 0x7b, 0x29, 0x60, 0x1f, 0xc2, 0x5a, 0x76, 0x7e,
0x9c, 0x8b, 0x3f, 0xe1, 0x99, 0x85, 0x2b, 0x67, 0x6e, 0xc0, 0x34, 0x24, 0xad, 0x8f, 0x68, 0xff, 0x42, 0xbe, 0xde, 0xd4, 0xe4, 0x8b, 0xfb, 0x5e, 0xdd, 0xd9, 0xbb, 0xa9, 0xc9, 0xda, 0x7f, 0x58,
0x0c, 0x67, 0xac, 0xea, 0x19, 0xc2, 0x04, 0x84, 0xb9, 0xbe, 0xf8, 0xb5, 0x10, 0x10, 0x59, 0x96, 0x50, 0x61, 0xa6, 0x78, 0xb6, 0xd9, 0xd6, 0xbd, 0xab, 0x72, 0x2e, 0x52, 0x85, 0x67, 0x16, 0xae,
0x75, 0xf8, 0xe5, 0x7c, 0x5a, 0x87, 0xdf, 0x75, 0x60, 0xde, 0x0b, 0x8e, 0xc3, 0x49, 0x30, 0x40, 0x9c, 0xb9, 0x01, 0xd3, 0x90, 0xb4, 0x3e, 0xa2, 0xfd, 0x33, 0x9c, 0xb1, 0xaa, 0x67, 0x08, 0x13,
0x81, 0xa8, 0x39, 0xb2, 0xc8, 0x96, 0x6f, 0x8c, 0x82, 0xea, 0x8d, 0x24, 0xfb, 0xa7, 0x80, 0x4d, 0x10, 0xe6, 0xfa, 0xe2, 0xd7, 0x42, 0x40, 0x64, 0x59, 0xd6, 0xe1, 0x97, 0xf3, 0x69, 0x1d, 0x7e,
0xd8, 0xd1, 0x28, 0x46, 0xd7, 0x43, 0x05, 0x5d, 0xde, 0x84, 0x25, 0x0d, 0x4b, 0xdd, 0xd8, 0x31, 0xd7, 0x81, 0x79, 0x2f, 0x38, 0x0e, 0x27, 0xc1, 0x00, 0x05, 0xa2, 0xe6, 0xc8, 0x22, 0x5b, 0xbe,
0x03, 0x32, 0x6e, 0x2c, 0xfa, 0x2c, 0xbc, 0xc6, 0x6e, 0x43, 0xeb, 0x3e, 0x4d, 0x1e, 0x04, 0x27, 0x31, 0x0a, 0xaa, 0x37, 0x92, 0xec, 0x9f, 0x02, 0x36, 0x61, 0x47, 0xa3, 0x18, 0x5d, 0x0f, 0x15,
0xa1, 0x6c, 0xe9, 0xcf, 0x2b, 0xb0, 0xa8, 0x20, 0xd1, 0xd0, 0x4d, 0x58, 0xf4, 0x06, 0x34, 0x48, 0x9e, 0x79, 0x13, 0x96, 0x34, 0x2c, 0x75, 0x63, 0xc7, 0x0c, 0xc8, 0xb8, 0xb1, 0xe8, 0xb3, 0xf0,
0xbc, 0x64, 0xda, 0x33, 0x4e, 0x60, 0x59, 0x98, 0xf9, 0x7a, 0xae, 0xef, 0xb9, 0x32, 0xc6, 0xc7, 0x1a, 0xbb, 0x0d, 0xad, 0xfb, 0x34, 0x79, 0x10, 0x9c, 0x84, 0xb2, 0xa5, 0x3f, 0xad, 0xc0, 0xa2,
0x0b, 0xe4, 0x0e, 0xac, 0x30, 0x43, 0x24, 0x6d, 0x8b, 0xda, 0x62, 0x7e, 0xf0, 0x2b, 0xac, 0x63, 0x82, 0x44, 0x43, 0xeb, 0xb0, 0xe8, 0x0d, 0x68, 0x90, 0x78, 0xc9, 0xb4, 0x67, 0x9c, 0xc0, 0xb2,
0xca, 0x80, 0xe1, 0x42, 0xdb, 0xab, 0x4f, 0xb8, 0xcf, 0x53, 0x54, 0xc5, 0x56, 0x8d, 0xb7, 0xc4, 0x30, 0xf3, 0xf5, 0x5c, 0xdf, 0x73, 0x65, 0x34, 0x90, 0x17, 0xc8, 0x1d, 0x58, 0x61, 0x86, 0x48,
0xa6, 0x5c, 0xe5, 0xc6, 0x4a, 0x01, 0xb9, 0xe0, 0xd9, 0x1c, 0x57, 0x55, 0xd9, 0xe0, 0x99, 0x16, 0xda, 0x16, 0xb5, 0xc5, 0xfc, 0xe0, 0x57, 0x58, 0xc7, 0x94, 0x01, 0xc3, 0x85, 0xb6, 0x57, 0x9f,
0x80, 0xab, 0xe5, 0x02, 0x70, 0x4c, 0x95, 0x4d, 0x83, 0x3e, 0x1d, 0xf4, 0x92, 0xb0, 0x87, 0x2a, 0x70, 0x9f, 0xa7, 0xa8, 0x8a, 0xad, 0x1a, 0x6f, 0x89, 0x4d, 0xb9, 0xca, 0x8d, 0x95, 0x02, 0x72,
0x17, 0x77, 0xa7, 0xe6, 0x64, 0x61, 0x72, 0x05, 0xe6, 0x13, 0x1a, 0x27, 0x01, 0x4d, 0x50, 0x2b, 0x61, 0xb6, 0x39, 0xae, 0xaa, 0xb2, 0x61, 0x36, 0x2d, 0x54, 0x57, 0xcb, 0x85, 0xea, 0x98, 0x2a,
0xd5, 0x30, 0x20, 0x20, 0x21, 0xe6, 0xa0, 0x4e, 0x22, 0x2f, 0xee, 0x34, 0x31, 0xb4, 0x86, 0xff, 0x9b, 0x06, 0x7d, 0x3a, 0xe8, 0x25, 0x61, 0x0f, 0x55, 0x2e, 0xee, 0x4e, 0xcd, 0xc9, 0xc2, 0xe4,
0x93, 0x4f, 0xc1, 0xea, 0x31, 0x8d, 0x93, 0xde, 0x29, 0x75, 0x07, 0x34, 0xc2, 0x9d, 0xe6, 0x31, 0x2a, 0xcc, 0x27, 0x34, 0x4e, 0x02, 0x9a, 0xa0, 0x56, 0xaa, 0x61, 0x40, 0x40, 0x42, 0xcc, 0x41,
0x3c, 0x6e, 0xf7, 0x8b, 0x2b, 0x19, 0x0f, 0x9d, 0xd1, 0x28, 0xf6, 0xc2, 0x00, 0x2d, 0x7e, 0xdd, 0x9d, 0x44, 0x5e, 0xdc, 0x69, 0x62, 0x10, 0x0e, 0xff, 0x27, 0x9f, 0x82, 0xd5, 0x63, 0x1a, 0x27,
0x91, 0x45, 0xd6, 0x1e, 0x9b, 0xbc, 0xb2, 0x97, 0x6a, 0x05, 0x17, 0x71, 0xe2, 0xc5, 0x95, 0xe4, 0xbd, 0x53, 0xea, 0x0e, 0x68, 0x84, 0x3b, 0xcd, 0xa3, 0x7d, 0xdc, 0xee, 0x17, 0x57, 0x32, 0x1e,
0x3a, 0xcc, 0xe1, 0x04, 0xe2, 0x4e, 0xdb, 0x88, 0x6a, 0x6c, 0x33, 0xd0, 0x11, 0x75, 0x9f, 0xaf, 0x3a, 0xa3, 0x51, 0xec, 0x85, 0x01, 0x5a, 0xfc, 0xba, 0x23, 0x8b, 0xac, 0x3d, 0x36, 0x79, 0x65,
0xd4, 0x1a, 0xed, 0xa6, 0xfd, 0x73, 0x50, 0x45, 0x98, 0x6d, 0x3a, 0x5f, 0x0c, 0xce, 0x14, 0xbc, 0x2f, 0xd5, 0x0a, 0x2e, 0xe2, 0xc4, 0x8b, 0x2b, 0xc9, 0x0d, 0x98, 0xc3, 0x09, 0xc4, 0x9d, 0xb6,
0xc0, 0x86, 0x16, 0xd0, 0xe4, 0x3c, 0x8c, 0x9e, 0xca, 0x80, 0xaf, 0x28, 0xda, 0xdf, 0x40, 0x17, 0x11, 0xd5, 0xd8, 0x66, 0xa0, 0x23, 0xea, 0x3e, 0x5f, 0xa9, 0x35, 0xda, 0x4d, 0xfb, 0x67, 0xa0,
0x5f, 0x05, 0x3e, 0x1f, 0xa3, 0x7f, 0xc2, 0x0e, 0x6a, 0x7c, 0xa9, 0xe3, 0x53, 0x57, 0x9c, 0x3a, 0x8a, 0x30, 0xdb, 0x74, 0xbe, 0x18, 0x9c, 0x29, 0x78, 0x81, 0x0d, 0x2d, 0xa0, 0xc9, 0x79, 0x18,
0x6a, 0x08, 0x1c, 0x9d, 0xba, 0x4c, 0x6d, 0x19, 0xbb, 0xc7, 0x0f, 0x72, 0x0d, 0xc4, 0xf6, 0xf8, 0x3d, 0x95, 0xa1, 0x61, 0x51, 0xb4, 0xbf, 0x81, 0x2e, 0xbe, 0x0a, 0x91, 0x3e, 0x46, 0xff, 0x84,
0xe6, 0x5d, 0x87, 0x96, 0x0c, 0xa9, 0xc6, 0x3d, 0x9f, 0x9e, 0x24, 0x32, 0xae, 0x10, 0x4c, 0x46, 0x1d, 0xd4, 0xf8, 0x52, 0xc7, 0xa7, 0xae, 0x38, 0x75, 0xd4, 0x10, 0x38, 0x3a, 0x75, 0x99, 0xda,
0x78, 0xda, 0xdb, 0xa7, 0x27, 0x89, 0x7d, 0x00, 0x4b, 0x42, 0x95, 0x3c, 0x1c, 0x53, 0xd9, 0xf5, 0x32, 0x76, 0x8f, 0x1f, 0xe4, 0x1a, 0x88, 0xed, 0xf1, 0xcd, 0xbb, 0x01, 0x2d, 0x19, 0x7c, 0x8d,
0x67, 0x8a, 0x4c, 0x72, 0xe3, 0xce, 0xb2, 0xa9, 0x7b, 0x78, 0x10, 0xd9, 0xa4, 0xb4, 0x1d, 0x20, 0x7b, 0x3e, 0x3d, 0x49, 0x64, 0x5c, 0x21, 0x98, 0x8c, 0xf0, 0xb4, 0xb7, 0x4f, 0x4f, 0x12, 0xfb,
0xba, 0x6a, 0x12, 0x0d, 0x0a, 0xbb, 0x28, 0x23, 0x27, 0x62, 0x3a, 0x06, 0xc6, 0xd6, 0x27, 0x9e, 0x00, 0x96, 0x84, 0x2a, 0x79, 0x38, 0xa6, 0xb2, 0xeb, 0xcf, 0x14, 0x99, 0xe4, 0xc6, 0x9d, 0x65,
0xf4, 0xfb, 0x32, 0x20, 0xce, 0x8e, 0xc3, 0xbc, 0x68, 0x7f, 0xd7, 0x82, 0x65, 0x6c, 0x4d, 0x3a, 0x53, 0xf7, 0xf0, 0x70, 0xb3, 0x49, 0x69, 0x3b, 0x40, 0x74, 0xd5, 0x24, 0x1a, 0x14, 0x76, 0x51,
0x15, 0x42, 0xfd, 0xbf, 0xf5, 0x11, 0x86, 0xd9, 0xec, 0xeb, 0xd1, 0xa4, 0x15, 0xa8, 0xea, 0x06, 0x46, 0x4e, 0xc4, 0x74, 0x0c, 0x8c, 0xad, 0x4f, 0x3c, 0xe9, 0xf7, 0x65, 0xe8, 0x9c, 0x1d, 0x87,
0x81, 0x17, 0x3e, 0xfa, 0xa1, 0xbe, 0x92, 0x3d, 0xd4, 0xdb, 0x7f, 0x68, 0xc1, 0x12, 0xd7, 0xc9, 0x79, 0xd1, 0xfe, 0x33, 0x0b, 0x96, 0xb1, 0x35, 0xe9, 0x54, 0x08, 0xf5, 0xff, 0xd6, 0x47, 0x18,
0x89, 0x9b, 0x4c, 0x62, 0x31, 0xfd, 0x9f, 0x87, 0x05, 0x6e, 0x5c, 0x85, 0x54, 0x8b, 0x81, 0xae, 0x66, 0xb3, 0xaf, 0x47, 0x93, 0x56, 0xa0, 0xaa, 0x1b, 0x04, 0x5e, 0xf8, 0xe8, 0x87, 0xfa, 0x4a,
0x28, 0x05, 0x84, 0x28, 0x27, 0xde, 0xbb, 0xe4, 0x98, 0xc4, 0xe4, 0x1d, 0x74, 0x70, 0x82, 0x1e, 0xf6, 0x50, 0x6f, 0xff, 0xbe, 0x05, 0x4b, 0x5c, 0x27, 0x27, 0x6e, 0x32, 0x89, 0xc5, 0xf4, 0x7f,
0xa2, 0x22, 0x30, 0x78, 0xb9, 0xc0, 0x0c, 0xa8, 0xef, 0x35, 0xf2, 0xbb, 0x35, 0x98, 0xe3, 0xfe, 0x16, 0x16, 0xb8, 0x71, 0x15, 0x52, 0x2d, 0x06, 0xba, 0xa2, 0x14, 0x10, 0xa2, 0x9c, 0x78, 0xef,
0xae, 0x7d, 0x1f, 0x16, 0x8c, 0x8e, 0x8c, 0x80, 0x42, 0x93, 0x07, 0x14, 0x72, 0xa1, 0xa8, 0x52, 0x92, 0x63, 0x12, 0x93, 0x77, 0xd0, 0xc1, 0x09, 0x7a, 0x88, 0x8a, 0xc0, 0xe0, 0x95, 0x02, 0x33,
0x41, 0x28, 0xea, 0x2f, 0xca, 0x40, 0x18, 0xb3, 0x64, 0x76, 0x83, 0x39, 0xdc, 0xe1, 0xc0, 0x38, 0xa0, 0xbe, 0xd7, 0xc8, 0xef, 0xd6, 0x60, 0x8e, 0xfb, 0xbb, 0xf6, 0x7d, 0x58, 0x30, 0x3a, 0x32,
0x3e, 0x35, 0x1d, 0x1d, 0x22, 0xb7, 0x80, 0x68, 0x45, 0x19, 0x51, 0xe4, 0xd6, 0xa7, 0xa0, 0x86, 0x02, 0x0a, 0x4d, 0x1e, 0x50, 0xc8, 0x85, 0xa2, 0x4a, 0x05, 0xa1, 0xa8, 0x3f, 0x2f, 0x03, 0x61,
0xa9, 0x49, 0x61, 0xbc, 0x85, 0x99, 0x15, 0x07, 0x45, 0xbe, 0xec, 0x85, 0x75, 0xcc, 0xc0, 0x8c, 0xcc, 0x92, 0xd9, 0x0d, 0xe6, 0x70, 0x87, 0x03, 0xe3, 0xf8, 0xd4, 0x74, 0x74, 0x88, 0xdc, 0x02,
0x27, 0xf1, 0x29, 0x5e, 0x9d, 0x88, 0x03, 0x96, 0x2c, 0x67, 0xf7, 0x77, 0xee, 0xc2, 0xfd, 0x9d, 0xa2, 0x15, 0x65, 0x44, 0x91, 0x5b, 0x9f, 0x82, 0x1a, 0xa6, 0x26, 0x85, 0xf1, 0x16, 0x66, 0x56,
0xcf, 0x05, 0x6d, 0x34, 0x17, 0xbf, 0x66, 0xba, 0xf8, 0xd7, 0x61, 0x61, 0xc4, 0x5c, 0xce, 0xc4, 0x1c, 0x14, 0xf9, 0xb2, 0x17, 0xd6, 0x31, 0x03, 0x33, 0x9e, 0xc4, 0xa7, 0x78, 0xc9, 0x22, 0x0e,
0xef, 0xf7, 0x46, 0xac, 0x77, 0x71, 0x9e, 0x32, 0x40, 0xb2, 0x01, 0x6d, 0xe1, 0x6e, 0xa4, 0xe7, 0x58, 0xb2, 0x9c, 0xdd, 0xdf, 0xb9, 0x0b, 0xf7, 0x77, 0x3e, 0x17, 0xb4, 0xd1, 0x5c, 0xfc, 0x9a,
0x08, 0xc0, 0x35, 0xce, 0xe1, 0x4c, 0x7f, 0xa7, 0x61, 0x9c, 0x06, 0x0e, 0x36, 0x05, 0xd8, 0xc9, 0xe9, 0xe2, 0xdf, 0x80, 0x85, 0x11, 0x73, 0x39, 0x13, 0xbf, 0xdf, 0x1b, 0xb1, 0xde, 0xc5, 0x79,
0x2b, 0x66, 0x1c, 0xd2, 0x9b, 0x04, 0xe2, 0xd6, 0x84, 0x0e, 0xf0, 0x24, 0x55, 0x73, 0xf2, 0x15, 0xca, 0x00, 0xc9, 0x06, 0xb4, 0x85, 0xbb, 0x91, 0x9e, 0x23, 0x00, 0xd7, 0x38, 0x87, 0x33, 0xfd,
0xf6, 0xef, 0x5b, 0xd0, 0x66, 0x7b, 0x66, 0xb0, 0xe5, 0xdb, 0x80, 0x52, 0xf1, 0x82, 0x5c, 0x69, 0x9d, 0x86, 0x71, 0x1a, 0x38, 0xd8, 0x14, 0x60, 0x27, 0xaf, 0x98, 0x71, 0x48, 0x6f, 0x12, 0x88,
0xd0, 0x92, 0xb7, 0xa0, 0x8e, 0xe5, 0x70, 0x4c, 0x03, 0xc1, 0x93, 0x1d, 0x93, 0x27, 0x53, 0x7d, 0xfb, 0x15, 0x3a, 0xc0, 0x93, 0x54, 0xcd, 0xc9, 0x57, 0xd8, 0xbf, 0x6b, 0x41, 0x9b, 0xed, 0x99,
0xb2, 0x77, 0xc9, 0x49, 0x89, 0x35, 0x8e, 0xfc, 0x27, 0x0b, 0x1a, 0xa2, 0x97, 0x1f, 0x3b, 0x4c, 0xc1, 0x96, 0x6f, 0x03, 0x4a, 0xc5, 0x0b, 0x72, 0xa5, 0x41, 0x4b, 0xde, 0x82, 0x3a, 0x96, 0xc3,
0xd0, 0xd5, 0xae, 0xb9, 0x38, 0x27, 0xa5, 0xb7, 0x5a, 0x37, 0x61, 0x71, 0xe4, 0x26, 0x93, 0x88, 0x31, 0x0d, 0x04, 0x4f, 0x76, 0x4c, 0x9e, 0x4c, 0xf5, 0xc9, 0xde, 0x25, 0x27, 0x25, 0xd6, 0x38,
0xd9, 0x63, 0x23, 0x44, 0x90, 0x85, 0x99, 0x71, 0x45, 0xd5, 0x19, 0xf7, 0x12, 0xcf, 0xef, 0xc9, 0xf2, 0x1f, 0x2d, 0x68, 0x88, 0x5e, 0x7e, 0xe4, 0x30, 0x41, 0x57, 0xbb, 0x10, 0xe3, 0x9c, 0x94,
0x5a, 0x71, 0xa1, 0x54, 0x54, 0xc5, 0x34, 0x48, 0x9c, 0xb8, 0x43, 0x2a, 0xec, 0x26, 0x2f, 0xd8, 0xde, 0x7f, 0xad, 0xc3, 0xe2, 0xc8, 0x4d, 0x26, 0x11, 0xb3, 0xc7, 0x46, 0x88, 0x20, 0x0b, 0x33,
0x1d, 0x58, 0x13, 0x13, 0xca, 0xb8, 0xaa, 0xf6, 0xdf, 0x34, 0x61, 0x3d, 0x57, 0xa5, 0x6e, 0x9f, 0xe3, 0x8a, 0xaa, 0x33, 0xee, 0x25, 0x9e, 0xdf, 0x93, 0xb5, 0xe2, 0xea, 0xa9, 0xa8, 0x8a, 0x69,
0xc5, 0xd9, 0xd7, 0xf7, 0x46, 0xc7, 0xa1, 0xf2, 0xf3, 0x2d, 0xfd, 0x58, 0x6c, 0x54, 0x91, 0x21, 0x90, 0x38, 0x71, 0x87, 0x54, 0xd8, 0x4d, 0x5e, 0xb0, 0x3b, 0xb0, 0x26, 0x26, 0x94, 0x71, 0x55,
0xac, 0x4a, 0x07, 0x81, 0xad, 0x69, 0x6a, 0xcc, 0x4a, 0x68, 0xa5, 0xde, 0x30, 0xb7, 0x30, 0xdb, 0xed, 0xbf, 0x6e, 0xc2, 0xe5, 0x5c, 0x95, 0xba, 0xa7, 0x16, 0x67, 0x5f, 0xdf, 0x1b, 0x1d, 0x87,
0xa1, 0xc4, 0x75, 0x21, 0x2e, 0x6e, 0x8f, 0x9c, 0x42, 0x47, 0x79, 0x22, 0x42, 0x59, 0x6b, 0xde, 0xca, 0xcf, 0xb7, 0xf4, 0x63, 0xb1, 0x51, 0x45, 0x86, 0xb0, 0x2a, 0x1d, 0x04, 0xb6, 0xa6, 0xa9,
0x0a, 0xeb, 0xeb, 0xf5, 0x0b, 0xfa, 0x32, 0x3c, 0x5b, 0x67, 0x66, 0x6b, 0x64, 0x0a, 0x57, 0x65, 0x31, 0x2b, 0xa1, 0x95, 0x7a, 0xc3, 0xdc, 0xc2, 0x6c, 0x87, 0x12, 0xd7, 0x85, 0xb8, 0xb8, 0x3d,
0x1d, 0x6a, 0xe3, 0x7c, 0x7f, 0x95, 0x17, 0x9a, 0x1b, 0xfa, 0xec, 0x66, 0xa7, 0x17, 0x34, 0x4c, 0x72, 0x0a, 0x1d, 0xe5, 0x89, 0x08, 0x65, 0xad, 0x79, 0x2b, 0xac, 0xaf, 0xd7, 0x2f, 0xe8, 0xcb,
0xde, 0x87, 0xb5, 0x73, 0xd7, 0x4b, 0xe4, 0xb0, 0x34, 0xdf, 0xa0, 0x8a, 0x5d, 0xde, 0xb9, 0xa0, 0xf0, 0x6c, 0x9d, 0x99, 0xad, 0x91, 0x29, 0x5c, 0x93, 0x75, 0xa8, 0x8d, 0xf3, 0xfd, 0x55, 0x5e,
0xcb, 0x27, 0xfc, 0x63, 0xc3, 0x44, 0xcd, 0x68, 0xb1, 0xfb, 0x0f, 0x16, 0xb4, 0xcc, 0x76, 0x18, 0x68, 0x6e, 0xe8, 0xb3, 0x9b, 0x9d, 0x5e, 0xd0, 0x30, 0x79, 0x1f, 0xd6, 0xce, 0x5d, 0x2f, 0x91,
0x9b, 0x0a, 0xd9, 0x97, 0x3a, 0x50, 0x7a, 0x93, 0x19, 0x38, 0x7f, 0x54, 0x2e, 0x15, 0x1d, 0x95, 0xc3, 0xd2, 0x7c, 0x83, 0x2a, 0x76, 0x79, 0xe7, 0x82, 0x2e, 0x9f, 0xf0, 0x8f, 0x0d, 0x13, 0x35,
0xf5, 0x03, 0x6a, 0xf9, 0xa2, 0x18, 0x53, 0xe5, 0xc5, 0x62, 0x4c, 0xd5, 0xa2, 0x18, 0x53, 0xf7, 0xa3, 0xc5, 0xee, 0xdf, 0x5b, 0xd0, 0x32, 0xdb, 0x61, 0x6c, 0x2a, 0x64, 0x5f, 0xea, 0x40, 0xe9,
0xbf, 0x2d, 0x20, 0x79, 0x5e, 0x22, 0xf7, 0xf9, 0x59, 0x3d, 0xa0, 0xbe, 0x50, 0x29, 0x3f, 0xfb, 0x4d, 0x66, 0xe0, 0xfc, 0x51, 0xb9, 0x54, 0x74, 0x54, 0xd6, 0x0f, 0xa8, 0xe5, 0x8b, 0x62, 0x4c,
0x62, 0xfc, 0x28, 0xd7, 0x4e, 0x7e, 0xcd, 0x04, 0x43, 0xbf, 0x11, 0xd6, 0x9d, 0x9d, 0x05, 0xa7, 0x95, 0x17, 0x8b, 0x31, 0x55, 0x8b, 0x62, 0x4c, 0xdd, 0xff, 0xb6, 0x80, 0xe4, 0x79, 0x89, 0xdc,
0xa8, 0x2a, 0x13, 0xf5, 0xaa, 0x5c, 0x1c, 0xf5, 0xaa, 0x5e, 0x1c, 0xf5, 0x9a, 0xcb, 0x46, 0xbd, 0xe7, 0x67, 0xf5, 0x80, 0xfa, 0x42, 0xa5, 0xfc, 0xf4, 0x8b, 0xf1, 0xa3, 0x5c, 0x3b, 0xf9, 0x35,
0xba, 0xbf, 0x61, 0xc1, 0x72, 0xc1, 0xa6, 0xff, 0xf4, 0x26, 0xce, 0xb6, 0xc9, 0xd0, 0x05, 0x25, 0x13, 0x0c, 0xfd, 0xee, 0x58, 0x77, 0x76, 0x16, 0x9c, 0xa2, 0xaa, 0x4c, 0xd4, 0xab, 0x72, 0x71,
0xb1, 0x4d, 0x3a, 0xd8, 0xfd, 0x15, 0x58, 0x30, 0x18, 0xfd, 0xa7, 0xd7, 0x7f, 0xd6, 0x5f, 0xe3, 0xd4, 0xab, 0x7a, 0x71, 0xd4, 0x6b, 0x2e, 0x1b, 0xf5, 0xea, 0xfe, 0x9a, 0x05, 0xcb, 0x05, 0x9b,
0x7c, 0x66, 0x60, 0xdd, 0xff, 0x2c, 0x01, 0xc9, 0x0b, 0xdb, 0xff, 0xeb, 0x18, 0xf2, 0xeb, 0x54, 0xfe, 0x93, 0x9b, 0x38, 0xdb, 0x26, 0x43, 0x17, 0x94, 0xc4, 0x36, 0xe9, 0x60, 0xf7, 0x97, 0x60,
0x2e, 0x58, 0xa7, 0xff, 0x53, 0x3b, 0xf0, 0x3a, 0x2c, 0x89, 0x54, 0x15, 0x2d, 0x42, 0xc3, 0x39, 0xc1, 0x60, 0xf4, 0x9f, 0x5c, 0xff, 0x59, 0x7f, 0x8d, 0xf3, 0x99, 0x81, 0x75, 0xff, 0xb3, 0x04,
0x26, 0x5f, 0xc1, 0x3c, 0x56, 0x33, 0xe4, 0x58, 0x33, 0xae, 0xfd, 0x35, 0x63, 0x98, 0x89, 0x3c, 0x24, 0x2f, 0x6c, 0xff, 0xaf, 0x63, 0xc8, 0xaf, 0x53, 0xb9, 0x60, 0x9d, 0xfe, 0x4f, 0xed, 0xc0,
0xda, 0x5d, 0xe8, 0x88, 0x15, 0xda, 0x3d, 0xa3, 0x41, 0x72, 0x34, 0x39, 0xe6, 0xe9, 0x1e, 0x5e, 0xeb, 0xb0, 0x24, 0x92, 0x5a, 0xb4, 0x08, 0x0d, 0xe7, 0x98, 0x7c, 0x05, 0xf3, 0x58, 0xcd, 0x90,
0x18, 0xd8, 0xdf, 0x2f, 0x2b, 0xa7, 0x1b, 0x2b, 0x85, 0x79, 0xff, 0x14, 0x34, 0x75, 0x65, 0x2e, 0x63, 0xcd, 0x48, 0x10, 0xd0, 0x8c, 0x61, 0x26, 0xf2, 0x68, 0x77, 0xa1, 0x23, 0x56, 0x68, 0xf7,
0xb6, 0x23, 0x13, 0xa0, 0x63, 0x86, 0x5d, 0xa7, 0x22, 0x3b, 0xd0, 0x42, 0x95, 0x35, 0x50, 0xdf, 0x8c, 0x06, 0xc9, 0xd1, 0xe4, 0x98, 0x27, 0x86, 0x78, 0x61, 0x60, 0x7f, 0xaf, 0xac, 0x9c, 0x6e,
0x95, 0xf0, 0xbb, 0xe7, 0x04, 0x1e, 0xf6, 0x2e, 0x39, 0x99, 0x6f, 0xc8, 0x67, 0xa1, 0x65, 0x1e, 0xac, 0x14, 0xe6, 0xfd, 0x53, 0xd0, 0xd4, 0x95, 0xb9, 0xd8, 0x8e, 0x4c, 0x80, 0x8e, 0x19, 0x76,
0xa5, 0x84, 0x8f, 0x50, 0xe4, 0x9b, 0xb3, 0xcf, 0x4d, 0x62, 0xb2, 0x05, 0xed, 0xec, 0x59, 0x4c, 0x9d, 0x8a, 0xec, 0x40, 0x0b, 0x55, 0xd6, 0x40, 0x7d, 0x57, 0xc2, 0xef, 0x9e, 0x13, 0x78, 0xd8,
0xdc, 0x16, 0xcf, 0x68, 0x20, 0x47, 0x4e, 0xde, 0x12, 0x77, 0x4f, 0x55, 0x0c, 0x82, 0x5d, 0x37, 0xbb, 0xe4, 0x64, 0xbe, 0x21, 0x9f, 0x85, 0x96, 0x79, 0x94, 0x12, 0x3e, 0x42, 0x91, 0x6f, 0xce,
0x3f, 0xd3, 0x96, 0xe9, 0x16, 0xff, 0xa3, 0xdd, 0x46, 0x7d, 0x15, 0x20, 0xc5, 0x48, 0x1b, 0x9a, 0x3e, 0x37, 0x89, 0xc9, 0x16, 0xb4, 0xb3, 0x67, 0x31, 0x71, 0x5b, 0x3c, 0xa3, 0x81, 0x1c, 0x39,
0x0f, 0x0f, 0x77, 0x0f, 0x7a, 0xdb, 0x7b, 0x5b, 0x07, 0x07, 0xbb, 0xfb, 0xed, 0x4b, 0x84, 0x40, 0x79, 0x4b, 0xdc, 0x3d, 0x55, 0x31, 0x08, 0x76, 0xc3, 0xfc, 0x4c, 0x5b, 0xa6, 0x5b, 0xfc, 0x8f,
0x0b, 0xe3, 0x57, 0x3b, 0x0a, 0xb3, 0x18, 0xb6, 0xb5, 0xcd, 0x63, 0x63, 0x02, 0x2b, 0x91, 0x15, 0x76, 0x1b, 0xf5, 0x55, 0x80, 0x14, 0x23, 0x6d, 0x68, 0x3e, 0x3c, 0xdc, 0x3d, 0xe8, 0x6d, 0xef,
0x68, 0x3f, 0x38, 0xc8, 0xa0, 0xe5, 0xbb, 0x75, 0x25, 0x1f, 0xf6, 0x1a, 0xac, 0xf0, 0x74, 0xa6, 0x6d, 0x1d, 0x1c, 0xec, 0xee, 0xb7, 0x2f, 0x11, 0x02, 0x2d, 0x8c, 0x5f, 0xed, 0x28, 0xcc, 0x62,
0xbb, 0x9c, 0x3d, 0xa4, 0xaf, 0xf0, 0xc7, 0x16, 0xac, 0x66, 0x2a, 0xd2, 0xc4, 0x03, 0xee, 0x0e, 0xd8, 0xd6, 0x36, 0x8f, 0x8d, 0x09, 0xac, 0x44, 0x56, 0xa0, 0xfd, 0xe0, 0x20, 0x83, 0x96, 0xef,
0x98, 0x3e, 0x82, 0x09, 0x32, 0x9e, 0x54, 0x9e, 0x5f, 0x46, 0x83, 0xe4, 0x2b, 0x18, 0xcf, 0x6b, 0xd6, 0x95, 0x7c, 0xd8, 0x6b, 0xb0, 0xc2, 0x13, 0x9f, 0xee, 0x72, 0xf6, 0x90, 0xbe, 0xc2, 0x1f,
0x9e, 0x62, 0x46, 0x92, 0x8a, 0xaa, 0xec, 0x75, 0x9e, 0x74, 0x15, 0x50, 0x3f, 0x33, 0xf0, 0x13, 0x5a, 0xb0, 0x9a, 0xa9, 0x48, 0x13, 0x0f, 0xb8, 0x3b, 0x60, 0xfa, 0x08, 0x26, 0xc8, 0x78, 0x52,
0x9e, 0x26, 0xa5, 0x57, 0xa4, 0x77, 0x79, 0xe6, 0x90, 0x65, 0x91, 0x39, 0xf9, 0x86, 0xeb, 0x61, 0x79, 0x7e, 0x19, 0x0d, 0x92, 0xaf, 0x60, 0x3c, 0xaf, 0x79, 0x8a, 0x19, 0x49, 0x2a, 0xaa, 0xb2,
0x8e, 0xb7, 0xb0, 0xce, 0xfe, 0x81, 0x05, 0xe4, 0x8b, 0x13, 0x1a, 0x4d, 0x31, 0x67, 0x40, 0x85, 0x2f, 0xf3, 0xf4, 0xac, 0x80, 0xfa, 0x99, 0x81, 0x9f, 0xf0, 0x84, 0x2a, 0xbd, 0x22, 0xbd, 0xcb,
0x03, 0xd7, 0xb3, 0xc1, 0xae, 0xb9, 0xf1, 0xe4, 0xf8, 0x0b, 0x74, 0x2a, 0xd3, 0x54, 0x4a, 0x69, 0x33, 0x87, 0x2c, 0x8b, 0xcc, 0xc9, 0x37, 0x5c, 0x0f, 0x73, 0xbc, 0x85, 0x75, 0xf6, 0xf7, 0x2d,
0x9a, 0xca, 0xcb, 0x00, 0xec, 0x70, 0xac, 0x32, 0x16, 0xd0, 0xb9, 0x0e, 0x26, 0x23, 0xde, 0x60, 0x20, 0x5f, 0x9c, 0xd0, 0x68, 0x8a, 0x39, 0x03, 0x2a, 0x1c, 0x78, 0x39, 0x1b, 0xec, 0x9a, 0x1b,
0x61, 0x26, 0x49, 0xe5, 0xe2, 0x4c, 0x92, 0xea, 0x45, 0x99, 0x24, 0xef, 0xc0, 0xb2, 0x31, 0x6e, 0x4f, 0x8e, 0xbf, 0x40, 0xa7, 0x32, 0xa1, 0xa5, 0x94, 0x26, 0xb4, 0xbc, 0x0c, 0xc0, 0x0e, 0xc7,
0xb5, 0xad, 0x32, 0x77, 0xc2, 0xca, 0xe7, 0x4e, 0xc8, 0xbc, 0x09, 0xfb, 0x9b, 0x25, 0x28, 0xef, 0x2a, 0x63, 0x01, 0x9d, 0xeb, 0x60, 0x32, 0xe2, 0x0d, 0x16, 0xe6, 0x9c, 0x54, 0x2e, 0xce, 0x39,
0x85, 0x63, 0x3d, 0x14, 0x6e, 0x99, 0xa1, 0x70, 0xe1, 0x1f, 0xf4, 0x94, 0xf9, 0x17, 0x66, 0xc3, 0xa9, 0x5e, 0x90, 0x73, 0x62, 0xbf, 0x03, 0xcb, 0xc6, 0xb8, 0xd5, 0xb6, 0xca, 0xdc, 0x09, 0x2b,
0x00, 0xc9, 0x06, 0xb4, 0xdc, 0x51, 0xd2, 0x4b, 0x42, 0xe6, 0x0f, 0x9d, 0xbb, 0xd1, 0x80, 0xef, 0x9f, 0x3b, 0x21, 0xf3, 0x26, 0xec, 0x6f, 0x96, 0xa0, 0xbc, 0x17, 0x8e, 0xf5, 0x50, 0xb8, 0x65,
0x35, 0x86, 0x64, 0x32, 0x35, 0x64, 0x05, 0xca, 0xca, 0x90, 0x22, 0x01, 0x2b, 0x32, 0x67, 0x1c, 0x86, 0xc2, 0x85, 0x7f, 0xd0, 0x53, 0xe6, 0x5f, 0x98, 0x0d, 0x03, 0x24, 0x1b, 0xd0, 0x72, 0x47,
0x2f, 0xd9, 0xa6, 0x22, 0xac, 0x24, 0x4a, 0x8c, 0x95, 0xcc, 0xef, 0xf9, 0x49, 0x88, 0xab, 0xc3, 0x49, 0x2f, 0x09, 0x99, 0x3f, 0x74, 0xee, 0x46, 0x03, 0xbe, 0xd7, 0x18, 0x92, 0xc9, 0xd4, 0x90,
0xa2, 0x2a, 0xe6, 0xab, 0xb0, 0xe5, 0x43, 0x32, 0x11, 0x0f, 0x94, 0x65, 0x3d, 0x76, 0x59, 0x33, 0x15, 0x28, 0x2b, 0x43, 0x8a, 0x04, 0xac, 0xc8, 0x9c, 0x71, 0xbc, 0x64, 0x9b, 0x8a, 0xb0, 0x92,
0xaf, 0x1c, 0x7f, 0x64, 0x41, 0x15, 0xd7, 0x86, 0xa9, 0x76, 0xce, 0xfb, 0x2a, 0x1a, 0x8e, 0x6b, 0x28, 0x31, 0x56, 0x32, 0xbf, 0xe7, 0x27, 0x21, 0xae, 0x0e, 0x8b, 0xaa, 0x98, 0xaf, 0xc2, 0x96,
0xb2, 0xe0, 0x64, 0x61, 0x62, 0x1b, 0x89, 0x5e, 0x25, 0x35, 0x21, 0x3d, 0xd9, 0xeb, 0x1a, 0xd4, 0x0f, 0xc9, 0x44, 0x3c, 0x50, 0x96, 0xf5, 0xd8, 0x65, 0xcd, 0xbc, 0x72, 0xfc, 0xa1, 0x05, 0x55,
0x79, 0x49, 0x25, 0x35, 0x21, 0x49, 0x0a, 0x92, 0xab, 0x50, 0x39, 0x0d, 0xc7, 0xd2, 0x17, 0x05, 0x5c, 0x1b, 0xa6, 0xda, 0x39, 0xef, 0xab, 0x68, 0x38, 0xae, 0xc9, 0x82, 0x93, 0x85, 0x89, 0x6d,
0x79, 0x55, 0x14, 0x8e, 0x1d, 0xc4, 0xd3, 0xf1, 0xb0, 0xf6, 0xf8, 0xb4, 0xb8, 0x87, 0x91, 0x85, 0xa4, 0x84, 0x95, 0xd4, 0x84, 0xf4, 0xb4, 0xb0, 0xeb, 0x50, 0xe7, 0x25, 0x95, 0xfe, 0x84, 0x24,
0x99, 0x8f, 0xa5, 0x9a, 0xd5, 0x97, 0x29, 0x83, 0xda, 0x1b, 0xb0, 0x78, 0x10, 0x0e, 0xa8, 0x16, 0x29, 0x48, 0xae, 0x41, 0xe5, 0x34, 0x1c, 0x4b, 0x5f, 0x14, 0xe4, 0x55, 0x51, 0x38, 0x76, 0x10,
0x92, 0x9c, 0xc9, 0xe7, 0xf6, 0xaf, 0x5a, 0x50, 0x93, 0xc4, 0xe4, 0x26, 0x54, 0x98, 0xe3, 0x98, 0x4f, 0xc7, 0xc3, 0xda, 0xe3, 0xd3, 0xe2, 0x1e, 0x46, 0x16, 0x66, 0x3e, 0x96, 0x6a, 0x56, 0x5f,
0x39, 0xd5, 0xa9, 0x2b, 0x62, 0x46, 0xe7, 0x20, 0x05, 0xb3, 0xb4, 0x18, 0x29, 0x4a, 0x0f, 0x11, 0xa6, 0x0c, 0x6a, 0x6f, 0xc0, 0xe2, 0x41, 0x38, 0xa0, 0x5a, 0x48, 0x72, 0x26, 0x9f, 0xdb, 0xbf,
0x32, 0x4e, 0x94, 0xfa, 0xc8, 0x6a, 0xb8, 0x19, 0xd7, 0x32, 0x83, 0xda, 0xdf, 0xb3, 0x60, 0xc1, 0x6c, 0x41, 0x4d, 0x12, 0x93, 0x75, 0xa8, 0x30, 0xc7, 0x31, 0x73, 0xaa, 0x53, 0x57, 0xc4, 0x8c,
0xe8, 0x83, 0x5c, 0x83, 0x86, 0xef, 0xc6, 0x89, 0xb8, 0x76, 0x13, 0xdb, 0xa3, 0x43, 0xfa, 0x46, 0xce, 0x41, 0x0a, 0x66, 0x69, 0x31, 0x52, 0x94, 0x1e, 0x22, 0x64, 0x9c, 0x28, 0xf5, 0x91, 0xd5,
0x97, 0xcc, 0x20, 0xb5, 0x0a, 0x9f, 0x96, 0xf5, 0xf0, 0xe9, 0x6d, 0xa8, 0xa7, 0xe9, 0x78, 0x15, 0x70, 0x33, 0xae, 0x65, 0x06, 0xb5, 0xbf, 0x6b, 0xc1, 0x82, 0xd1, 0x07, 0xb9, 0x0e, 0x0d, 0xdf,
0xc3, 0x82, 0xb2, 0x1e, 0xe5, 0xe5, 0x77, 0x4a, 0x84, 0x11, 0xb9, 0xd0, 0x0f, 0x23, 0x71, 0xa3, 0x8d, 0x13, 0x71, 0xed, 0x26, 0xb6, 0x47, 0x87, 0xf4, 0x8d, 0x2e, 0x99, 0x41, 0x6a, 0x15, 0x3e,
0xc3, 0x0b, 0xf6, 0x3b, 0xd0, 0xd0, 0xe8, 0xf5, 0x00, 0x9d, 0x65, 0x04, 0xe8, 0x54, 0x66, 0x48, 0x2d, 0xeb, 0xe1, 0xd3, 0xdb, 0x50, 0x4f, 0x13, 0xf7, 0x2a, 0x86, 0x05, 0x65, 0x3d, 0xca, 0xcb,
0x29, 0xcd, 0x0c, 0xb1, 0xff, 0xde, 0x82, 0x05, 0xc6, 0x83, 0x5e, 0x30, 0x3c, 0x0c, 0x7d, 0xaf, 0xef, 0x94, 0x08, 0x23, 0x72, 0xa1, 0x1f, 0x46, 0xe2, 0x46, 0x87, 0x17, 0xec, 0x77, 0xa0, 0xa1,
0x3f, 0xc5, 0xbd, 0x97, 0xec, 0x26, 0x74, 0x86, 0xe4, 0x45, 0x13, 0x66, 0x5c, 0x2f, 0xc3, 0x02, 0xd1, 0xeb, 0x01, 0x3a, 0xcb, 0x08, 0xd0, 0xa9, 0xcc, 0x90, 0x52, 0x9a, 0x19, 0x62, 0xff, 0x9d,
0x42, 0x44, 0x55, 0x99, 0xc9, 0x30, 0x93, 0x80, 0x63, 0x37, 0x16, 0x62, 0x21, 0x5c, 0x1a, 0x03, 0x05, 0x0b, 0x8c, 0x07, 0xbd, 0x60, 0x78, 0x18, 0xfa, 0x5e, 0x7f, 0x8a, 0x7b, 0x2f, 0xd9, 0x4d,
0x64, 0x92, 0xc6, 0x80, 0xc8, 0x4d, 0x68, 0x6f, 0xe4, 0xf9, 0xbe, 0xc7, 0x69, 0xb9, 0xc3, 0x5b, 0xe8, 0x0c, 0xc9, 0x8b, 0x26, 0xcc, 0xb8, 0x5e, 0x86, 0x05, 0x84, 0x88, 0xaa, 0x32, 0x93, 0x61,
0x54, 0xc5, 0xfa, 0x1c, 0x78, 0xb1, 0x7b, 0x9c, 0xde, 0x52, 0xa8, 0xb2, 0xfd, 0x57, 0x25, 0x68, 0x26, 0x01, 0xc7, 0x6e, 0x2c, 0xc4, 0x42, 0xb8, 0x34, 0x06, 0xc8, 0x24, 0x8d, 0x01, 0x91, 0x9b,
0x48, 0xcb, 0x38, 0x18, 0x52, 0x71, 0xa5, 0x86, 0x47, 0x0a, 0xa5, 0x64, 0x34, 0x44, 0xd6, 0x1b, 0xd0, 0xde, 0xc8, 0xf3, 0x7d, 0x8f, 0xd3, 0x72, 0x87, 0xb7, 0xa8, 0x8a, 0xf5, 0x39, 0xf0, 0x62,
0x87, 0x10, 0x0d, 0xc9, 0x6e, 0x79, 0x39, 0xbf, 0xe5, 0x57, 0xa0, 0xce, 0x58, 0xef, 0x0d, 0x3c, 0xf7, 0x38, 0xbd, 0xa5, 0x50, 0x65, 0xfb, 0x2f, 0x4b, 0xd0, 0x90, 0x96, 0x71, 0x30, 0xa4, 0xe2,
0xed, 0xf0, 0xeb, 0xb8, 0x14, 0x90, 0xb5, 0x77, 0xb0, 0xb6, 0x9a, 0xd6, 0x22, 0xf0, 0xdc, 0x0b, 0x4a, 0x0d, 0x8f, 0x14, 0x4a, 0xc9, 0x68, 0x88, 0xac, 0x37, 0x0e, 0x21, 0x1a, 0x92, 0xdd, 0xf2,
0xb8, 0xb7, 0xa0, 0x29, 0x9a, 0xc1, 0x3d, 0x41, 0x9d, 0x92, 0x32, 0xbf, 0xb1, 0x5f, 0x8e, 0x41, 0x72, 0x7e, 0xcb, 0xaf, 0x42, 0x9d, 0xb1, 0xde, 0x1b, 0x78, 0xda, 0xe1, 0xd7, 0x71, 0x29, 0x20,
0x29, 0xbf, 0xbc, 0x23, 0xbf, 0xac, 0x5d, 0xf4, 0xa5, 0xa4, 0xb4, 0xef, 0xab, 0x7b, 0xcd, 0xfb, 0x6b, 0xef, 0x60, 0x6d, 0x35, 0xad, 0x45, 0xe0, 0xb9, 0x17, 0x70, 0x6f, 0x41, 0x53, 0x34, 0x83,
0x91, 0x3b, 0x3e, 0x95, 0x52, 0x7a, 0x1b, 0x96, 0xbd, 0xa0, 0xef, 0x4f, 0x06, 0xb4, 0x37, 0x09, 0x7b, 0x82, 0x3a, 0x25, 0x65, 0x7e, 0x63, 0xbf, 0x1c, 0x83, 0x52, 0x7e, 0x79, 0x47, 0x7e, 0x59,
0xdc, 0x20, 0x08, 0x27, 0x41, 0x9f, 0xca, 0xa4, 0x8f, 0xa2, 0x2a, 0x7b, 0xa0, 0x72, 0xde, 0xb0, 0xbb, 0xe8, 0x4b, 0x49, 0x69, 0xdf, 0x57, 0xf7, 0x9a, 0xf7, 0x23, 0x77, 0x7c, 0x2a, 0xa5, 0xf4,
0x21, 0xb2, 0x01, 0x55, 0xd6, 0x91, 0xb4, 0x0a, 0xc5, 0x22, 0xcc, 0x49, 0xc8, 0x4d, 0xa8, 0xd2, 0x36, 0x2c, 0x7b, 0x41, 0xdf, 0x9f, 0x0c, 0x68, 0x6f, 0x12, 0xb8, 0x41, 0x10, 0x4e, 0x82, 0x3e,
0xc1, 0x90, 0xca, 0x08, 0x00, 0xc9, 0xf8, 0x3b, 0x83, 0x21, 0x75, 0x38, 0x01, 0x53, 0x28, 0x0c, 0x95, 0x49, 0x1f, 0x45, 0x55, 0xf6, 0x40, 0xe5, 0xbc, 0x61, 0x43, 0x64, 0x03, 0xaa, 0xac, 0x23,
0xcd, 0x28, 0x14, 0xd3, 0xa2, 0xcc, 0xb1, 0xe2, 0x83, 0x81, 0xbd, 0x02, 0xe4, 0x80, 0xcb, 0x80, 0x69, 0x15, 0x8a, 0x45, 0x98, 0x93, 0x90, 0x75, 0xa8, 0xd2, 0xc1, 0x90, 0xca, 0x08, 0x00, 0xc9,
0x7e, 0x25, 0xf2, 0xeb, 0x65, 0x68, 0x68, 0x30, 0xd3, 0x0d, 0x43, 0x36, 0xe0, 0xde, 0xc0, 0x73, 0xf8, 0x3b, 0x83, 0x21, 0x75, 0x38, 0x01, 0x53, 0x28, 0x98, 0xd7, 0x68, 0x2a, 0x14, 0xd3, 0xa2,
0x47, 0x34, 0xa1, 0x91, 0xe0, 0xfb, 0x0c, 0xca, 0xe8, 0xdc, 0xb3, 0x61, 0x2f, 0x9c, 0x24, 0xbd, 0xcc, 0xf5, 0x79, 0xe6, 0xe3, 0x0a, 0x90, 0x03, 0x2e, 0x03, 0xfa, 0x95, 0xc8, 0xaf, 0x96, 0xa1,
0x01, 0x1d, 0x46, 0x94, 0x1b, 0x79, 0x66, 0x74, 0x0c, 0x94, 0xd1, 0x8d, 0xdc, 0x67, 0x3a, 0x1d, 0xa1, 0xc1, 0x4c, 0x37, 0x0c, 0xd9, 0x80, 0x7b, 0x03, 0xcf, 0x1d, 0xd1, 0x84, 0x46, 0x82, 0xef,
0xe7, 0xa0, 0x0c, 0x2a, 0x2f, 0x38, 0xf8, 0x1a, 0x55, 0xd2, 0x0b, 0x0e, 0xbe, 0x22, 0x59, 0xad, 0x33, 0x28, 0xa3, 0x73, 0xcf, 0x86, 0xbd, 0x70, 0x92, 0xf4, 0x06, 0x74, 0x18, 0x51, 0x6e, 0xe4,
0x56, 0x2d, 0xd0, 0x6a, 0x6f, 0xc2, 0x1a, 0xd7, 0x5f, 0x42, 0xd2, 0x7b, 0x19, 0xc6, 0x9a, 0x51, 0x99, 0xd1, 0x31, 0x50, 0x46, 0x37, 0x72, 0x9f, 0xe9, 0x74, 0x9c, 0x83, 0x32, 0xa8, 0xbc, 0xe0,
0x4b, 0x36, 0xa0, 0xcd, 0xc6, 0x2c, 0x45, 0x22, 0xf6, 0xbe, 0xc1, 0x83, 0x85, 0x96, 0x93, 0xc3, 0xe0, 0x6b, 0x54, 0x49, 0x2f, 0x38, 0xf8, 0x8a, 0x64, 0xb5, 0x5a, 0xb5, 0x40, 0xab, 0xbd, 0x09,
0x19, 0x2d, 0x46, 0xed, 0x74, 0x5a, 0x7e, 0xe1, 0x9b, 0xc3, 0x91, 0xd6, 0x7d, 0x66, 0xd2, 0xd6, 0x6b, 0x5c, 0x7f, 0x09, 0x49, 0xef, 0x65, 0x18, 0x6b, 0x46, 0x2d, 0xd9, 0x80, 0x36, 0x1b, 0xb3,
0x05, 0x6d, 0x06, 0xb7, 0x17, 0xa0, 0x71, 0x94, 0x84, 0x63, 0xb9, 0x29, 0x2d, 0x68, 0xf2, 0xa2, 0x14, 0x89, 0xd8, 0xfb, 0x06, 0x0f, 0x16, 0x5a, 0x4e, 0x0e, 0x67, 0xb4, 0x18, 0xb5, 0xd3, 0x69,
0x48, 0xbe, 0x79, 0x09, 0x2e, 0x23, 0x17, 0x3d, 0x0a, 0xc7, 0xa1, 0x1f, 0x0e, 0xa7, 0xc6, 0x89, 0xf9, 0x85, 0x6f, 0x0e, 0x47, 0x5a, 0xf7, 0x99, 0x49, 0x5b, 0x17, 0xb4, 0x19, 0xdc, 0x5e, 0x80,
0xe1, 0x1f, 0x2d, 0x58, 0x36, 0x6a, 0xd3, 0x23, 0x03, 0x06, 0x1b, 0x64, 0xd6, 0x04, 0x67, 0xbc, 0xc6, 0x51, 0x12, 0x8e, 0xe5, 0xa6, 0xb4, 0xa0, 0xc9, 0x8b, 0x22, 0xf9, 0xe6, 0x25, 0xb8, 0x82,
0x25, 0x4d, 0xb9, 0x72, 0x42, 0x1e, 0xd7, 0x7d, 0x2c, 0x12, 0x29, 0xb6, 0x60, 0x51, 0x8e, 0x4c, 0x5c, 0xf4, 0x28, 0x1c, 0x87, 0x7e, 0x38, 0x9c, 0x1a, 0x27, 0x86, 0x7f, 0xb0, 0x60, 0xd9, 0xa8,
0x7e, 0xc8, 0xb9, 0xb0, 0x93, 0xe7, 0x42, 0xf1, 0x7d, 0x4b, 0x7c, 0x20, 0x9b, 0xf8, 0xac, 0xb8, 0x4d, 0x8f, 0x0c, 0x18, 0x6c, 0x90, 0x59, 0x13, 0x9c, 0xf1, 0x96, 0x34, 0xe5, 0xca, 0x09, 0x79,
0x38, 0xe7, 0x27, 0x08, 0x19, 0x5b, 0x52, 0x67, 0x0e, 0xfd, 0x84, 0x29, 0x47, 0xd0, 0x57, 0x60, 0x5c, 0xf7, 0xb1, 0x48, 0xa4, 0xd8, 0x82, 0x45, 0x39, 0x32, 0xf9, 0x21, 0xe7, 0xc2, 0x4e, 0x9e,
0x6c, 0xff, 0xb6, 0x05, 0x90, 0x8e, 0x0e, 0xaf, 0x5b, 0x95, 0x81, 0xe0, 0x6f, 0x38, 0x34, 0x63, 0x0b, 0xc5, 0xf7, 0x2d, 0xf1, 0x81, 0x6c, 0xe2, 0xb3, 0xe2, 0xe2, 0x9c, 0x9f, 0x20, 0x64, 0x6c,
0xf0, 0x2a, 0x34, 0xd5, 0x35, 0x5d, 0x6a, 0x73, 0x1a, 0x12, 0x63, 0x0e, 0xe3, 0x0d, 0x58, 0x1c, 0x49, 0x9d, 0x39, 0xf4, 0x13, 0xa6, 0x1c, 0x41, 0x5f, 0x81, 0xb1, 0xfd, 0x9b, 0x16, 0x40, 0x3a,
0xfa, 0xe1, 0x31, 0x1a, 0x6c, 0xcc, 0xe6, 0x8a, 0x45, 0x0a, 0x52, 0x8b, 0xc3, 0xf7, 0x04, 0x9a, 0x3a, 0xbc, 0x6e, 0x55, 0x06, 0x82, 0xbf, 0xf6, 0xd0, 0x8c, 0xc1, 0xab, 0xd0, 0x54, 0xd7, 0x74,
0x1a, 0xa8, 0x8a, 0x66, 0xa0, 0xec, 0xdf, 0x29, 0xa9, 0x5b, 0x95, 0x74, 0xce, 0x33, 0xa5, 0x8c, 0xa9, 0xcd, 0x69, 0x48, 0x8c, 0x39, 0x8c, 0x37, 0x61, 0x71, 0xe8, 0x87, 0xc7, 0x68, 0xb0, 0x31,
0xdc, 0xc9, 0xa9, 0xd3, 0x19, 0x97, 0x18, 0x18, 0x45, 0x3d, 0xbc, 0x30, 0xc8, 0xf3, 0x0e, 0xb4, 0x9b, 0x2b, 0x16, 0x29, 0x48, 0x2d, 0x0e, 0xdf, 0x13, 0x68, 0x6a, 0xa0, 0x2a, 0x9a, 0x81, 0xb2,
0x22, 0xae, 0xaf, 0xa4, 0x32, 0xab, 0x3c, 0x47, 0x99, 0x2d, 0x44, 0x86, 0x15, 0xfb, 0x38, 0xb4, 0x7f, 0xab, 0xa4, 0x6e, 0x55, 0xd2, 0x39, 0xcf, 0x94, 0x32, 0x72, 0x27, 0xa7, 0x4e, 0x67, 0x5c,
0xdd, 0xc1, 0x19, 0x8d, 0x12, 0x0f, 0x8f, 0xd9, 0xe8, 0x42, 0x70, 0x15, 0xbc, 0xa8, 0xe1, 0x68, 0x62, 0x60, 0x14, 0xf5, 0xf0, 0xc2, 0x20, 0xcf, 0x3b, 0xd0, 0x8a, 0xb8, 0xbe, 0x92, 0xca, 0xac,
0xd9, 0x6f, 0xc0, 0xa2, 0x48, 0xfb, 0x52, 0x94, 0x22, 0x31, 0x3b, 0x85, 0x19, 0xa1, 0xfd, 0xa7, 0xf2, 0x1c, 0x65, 0xb6, 0x10, 0x19, 0x56, 0xec, 0xe3, 0xd0, 0x76, 0x07, 0x67, 0x34, 0x4a, 0x3c,
0xf2, 0x02, 0xc7, 0xdc, 0xc3, 0xd9, 0x2b, 0xa2, 0xcf, 0xae, 0x94, 0x99, 0xdd, 0xc7, 0xc4, 0x65, 0x3c, 0x66, 0xa3, 0x0b, 0xc1, 0x55, 0xf0, 0xa2, 0x86, 0xa3, 0x65, 0xbf, 0x09, 0x8b, 0x22, 0xed,
0xca, 0x40, 0x9e, 0xe5, 0xcb, 0x5a, 0x92, 0xc5, 0x40, 0x5c, 0x7e, 0x99, 0x4b, 0x5a, 0x79, 0x91, 0x4b, 0x51, 0x8a, 0x14, 0xee, 0x14, 0x66, 0x84, 0xf6, 0x1f, 0xcb, 0x0b, 0x1c, 0x73, 0x0f, 0x67,
0x25, 0xb5, 0x7f, 0x68, 0xc1, 0xfc, 0x5e, 0x38, 0xde, 0x13, 0xe9, 0x26, 0x28, 0x08, 0x2a, 0xdf, 0xaf, 0x88, 0x3e, 0xbb, 0x52, 0x66, 0x76, 0x1f, 0x13, 0x97, 0x29, 0x03, 0x79, 0x96, 0x2f, 0x6b,
0x52, 0x16, 0x9f, 0x93, 0x88, 0x52, 0x68, 0xb9, 0x17, 0xb2, 0x96, 0xfb, 0x17, 0xe1, 0x25, 0x8c, 0x49, 0x16, 0x03, 0x71, 0xf9, 0x65, 0x2e, 0x69, 0xe5, 0x45, 0x96, 0xd4, 0xfe, 0x81, 0x05, 0xf3,
0x24, 0x45, 0xe1, 0x38, 0x8c, 0x98, 0x30, 0xba, 0x3e, 0x37, 0xd3, 0x61, 0x90, 0x9c, 0x4a, 0x35, 0x7b, 0xe1, 0x78, 0x4f, 0xa4, 0x9b, 0xa0, 0x20, 0xa8, 0x7c, 0x4b, 0x59, 0x7c, 0x4e, 0x22, 0x4a,
0xf6, 0x3c, 0x12, 0x3c, 0xde, 0xb1, 0x63, 0x09, 0x77, 0xba, 0x85, 0xa7, 0xc1, 0xb5, 0x5b, 0xbe, 0xa1, 0xe5, 0x5e, 0xc8, 0x5a, 0xee, 0x9f, 0x87, 0x97, 0x30, 0x92, 0x14, 0x85, 0xe3, 0x30, 0x62,
0xc2, 0xfe, 0x0c, 0xd4, 0xd1, 0x55, 0xc6, 0x69, 0xbd, 0x0e, 0xf5, 0xd3, 0x70, 0xdc, 0x3b, 0xf5, 0xc2, 0xe8, 0xfa, 0xdc, 0x4c, 0x87, 0x41, 0x72, 0x2a, 0xd5, 0xd8, 0xf3, 0x48, 0xf0, 0x78, 0xc7,
0x82, 0x44, 0x0a, 0x77, 0x2b, 0xf5, 0x61, 0xf7, 0x70, 0x41, 0x14, 0x81, 0xfd, 0xcd, 0x39, 0x98, 0x8e, 0x25, 0xdc, 0xe9, 0x16, 0x9e, 0x06, 0xd7, 0x6e, 0xf9, 0x0a, 0xfb, 0x33, 0x50, 0x47, 0x57,
0x7f, 0x10, 0x9c, 0x85, 0x5e, 0x1f, 0x2f, 0x8b, 0x46, 0x74, 0x14, 0xca, 0xec, 0x53, 0xf6, 0x3f, 0x19, 0xa7, 0xf5, 0x3a, 0xd4, 0x4f, 0xc3, 0x71, 0xef, 0xd4, 0x0b, 0x12, 0x29, 0xdc, 0xad, 0xd4,
0xb9, 0x02, 0xf3, 0x98, 0x6e, 0x35, 0xe6, 0x4c, 0xdb, 0xe4, 0x97, 0xba, 0x02, 0x62, 0x4e, 0x42, 0x87, 0xdd, 0xc3, 0x05, 0x51, 0x04, 0xf6, 0x37, 0xe7, 0x60, 0xfe, 0x41, 0x70, 0x16, 0x7a, 0x7d,
0x94, 0x26, 0xbe, 0x73, 0xf1, 0xd1, 0x10, 0x76, 0x88, 0x88, 0xf4, 0xc4, 0x75, 0x51, 0x4a, 0xb3, 0xbc, 0x2c, 0x1a, 0xd1, 0x51, 0x28, 0xb3, 0x4f, 0xd9, 0xff, 0xe4, 0x2a, 0xcc, 0x63, 0xba, 0xd5,
0x7b, 0xab, 0x5a, 0x76, 0x2f, 0xeb, 0x4b, 0xa4, 0xc7, 0xf0, 0xfc, 0x09, 0xde, 0x97, 0x80, 0xf0, 0x98, 0x33, 0x6d, 0x93, 0x5f, 0xea, 0x0a, 0x88, 0x39, 0x09, 0x51, 0x9a, 0xf8, 0xce, 0xc5, 0x47,
0xe0, 0x13, 0x51, 0x1e, 0x09, 0x44, 0x97, 0x63, 0x5e, 0x1c, 0x7c, 0x74, 0x90, 0xb9, 0x25, 0xfc, 0x43, 0xd8, 0x21, 0x22, 0xd2, 0x13, 0xd7, 0x45, 0x29, 0xcd, 0xee, 0xad, 0x6a, 0xd9, 0xbd, 0xac,
0x03, 0x4e, 0xc3, 0x95, 0xb0, 0x0e, 0x31, 0x17, 0x2e, 0xfb, 0xd4, 0xa0, 0xce, 0x79, 0x3f, 0x03, 0x2f, 0x91, 0x1e, 0xc3, 0xf3, 0x27, 0x78, 0x5f, 0x02, 0xc2, 0x83, 0x4f, 0x44, 0x79, 0x24, 0x10,
0x33, 0x4d, 0x3d, 0xa0, 0x4a, 0xa1, 0xf2, 0x79, 0x00, 0x4f, 0xee, 0xcf, 0xe2, 0xda, 0x71, 0x89, 0x5d, 0x8e, 0x79, 0x71, 0xf0, 0xd1, 0x41, 0xe6, 0x96, 0xf0, 0x0f, 0x38, 0x0d, 0x57, 0xc2, 0x3a,
0x67, 0xc6, 0xc9, 0xe3, 0x12, 0x63, 0x18, 0xd7, 0xf7, 0x8f, 0xdd, 0xfe, 0x53, 0x7c, 0x49, 0x82, 0xc4, 0x5c, 0xb8, 0xec, 0xa3, 0x84, 0x3a, 0xe7, 0xfd, 0x0c, 0xcc, 0x34, 0xf5, 0x80, 0x2a, 0x85,
0xd7, 0x37, 0x75, 0xc7, 0x04, 0x31, 0xc9, 0x25, 0xdd, 0x55, 0xbc, 0xfe, 0xae, 0x38, 0x3a, 0x44, 0xca, 0xe7, 0x01, 0x3c, 0xb9, 0x3f, 0x8b, 0x6b, 0xc7, 0x25, 0x9e, 0x19, 0x27, 0x8f, 0x4b, 0x8c,
0xee, 0x40, 0x03, 0x8f, 0x88, 0x62, 0x5f, 0x5b, 0xb8, 0xaf, 0x6d, 0xfd, 0x0c, 0x89, 0x3b, 0xab, 0x61, 0x5c, 0xdf, 0x3f, 0x76, 0xfb, 0x4f, 0xf1, 0xcd, 0x09, 0x5e, 0xdf, 0xd4, 0x1d, 0x13, 0xc4,
0x13, 0xe9, 0x17, 0x59, 0x8b, 0xb9, 0x5c, 0x35, 0x77, 0x30, 0x10, 0xf7, 0x7f, 0x6d, 0xec, 0x2d, 0x24, 0x97, 0x74, 0x57, 0xf1, 0xfa, 0xbb, 0xe2, 0xe8, 0x10, 0xb9, 0x03, 0x0d, 0x3c, 0x22, 0x8a,
0x05, 0x98, 0x55, 0x15, 0x0b, 0xc6, 0x09, 0x96, 0x90, 0xc0, 0xc0, 0xc8, 0x55, 0xa8, 0xb1, 0xe3, 0x7d, 0x6d, 0xe1, 0xbe, 0xb6, 0xf5, 0x33, 0x24, 0xee, 0xac, 0x4e, 0xa4, 0x5f, 0x64, 0x2d, 0xe6,
0xcb, 0xd8, 0xf5, 0x06, 0x98, 0xec, 0xc6, 0x4f, 0x51, 0x0a, 0x63, 0x6d, 0xc8, 0xff, 0xf1, 0x9e, 0x72, 0xd5, 0xdc, 0xc1, 0x40, 0xdc, 0xff, 0xb5, 0xb1, 0xb7, 0x14, 0x60, 0x56, 0x55, 0x2c, 0x18,
0x6e, 0x19, 0x57, 0xc5, 0xc0, 0xd8, 0xda, 0xa8, 0x32, 0x0a, 0xd3, 0x0a, 0xdf, 0x51, 0x03, 0x24, 0x27, 0x58, 0x42, 0x02, 0x03, 0x23, 0xd7, 0xa0, 0xc6, 0x8e, 0x2f, 0x63, 0xd7, 0x1b, 0x60, 0xb2,
0x6f, 0xe0, 0x2d, 0x4c, 0x42, 0x3b, 0xab, 0x18, 0xe5, 0x79, 0x49, 0xcc, 0x59, 0x30, 0xad, 0xfc, 0x1b, 0x3f, 0x45, 0x29, 0x8c, 0xb5, 0x21, 0xff, 0xc7, 0x7b, 0xba, 0x65, 0x5c, 0x15, 0x03, 0x63,
0x7b, 0xc4, 0x48, 0x1c, 0x4e, 0x69, 0x7f, 0x12, 0x9a, 0x3a, 0x4c, 0x6a, 0x50, 0x79, 0x78, 0xb8, 0x6b, 0xa3, 0xca, 0x28, 0x4c, 0x2b, 0x7c, 0x47, 0x0d, 0x90, 0xbc, 0x81, 0xb7, 0x30, 0x09, 0xed,
0x7b, 0xd0, 0xbe, 0x44, 0x1a, 0x30, 0x7f, 0xb4, 0xfb, 0xe8, 0xd1, 0xfe, 0xee, 0x4e, 0xdb, 0x22, 0xac, 0x62, 0x94, 0xe7, 0x25, 0x31, 0x67, 0xc1, 0xb4, 0xf2, 0xef, 0x11, 0x23, 0x71, 0x38, 0xa5,
0x4d, 0xa8, 0xa9, 0x8c, 0xa4, 0x92, 0x9d, 0x00, 0xd9, 0x1a, 0x0c, 0xc4, 0x77, 0xea, 0xd8, 0x9e, 0xfd, 0x49, 0x68, 0xea, 0x30, 0xa9, 0x41, 0xe5, 0xe1, 0xe1, 0xee, 0x41, 0xfb, 0x12, 0x69, 0xc0,
0x72, 0xb0, 0x65, 0x70, 0x70, 0x01, 0x17, 0x95, 0x8a, 0xb9, 0xe8, 0xb9, 0x6b, 0x6d, 0xef, 0x42, 0xfc, 0xd1, 0xee, 0xa3, 0x47, 0xfb, 0xbb, 0x3b, 0x6d, 0x8b, 0x34, 0xa1, 0xa6, 0x32, 0x92, 0x4a,
0xe3, 0x50, 0x7b, 0x91, 0x81, 0x02, 0x25, 0xdf, 0x62, 0x08, 0x41, 0xd4, 0x10, 0x6d, 0x38, 0x25, 0x76, 0x02, 0x64, 0x6b, 0x30, 0x10, 0xdf, 0xa9, 0x63, 0x7b, 0xca, 0xc1, 0x96, 0xc1, 0xc1, 0x05,
0x7d, 0x38, 0xf6, 0x9f, 0x59, 0x3c, 0x4b, 0x5c, 0x0d, 0x9f, 0xf7, 0x6d, 0x43, 0x53, 0x05, 0x57, 0x5c, 0x54, 0x2a, 0xe6, 0xa2, 0xe7, 0xae, 0xb5, 0xbd, 0x0b, 0x8d, 0x43, 0xed, 0x45, 0x06, 0x0a,
0xd2, 0xf4, 0x42, 0x03, 0x63, 0x34, 0x38, 0x94, 0x5e, 0x78, 0x72, 0x12, 0x53, 0x99, 0x0c, 0x64, 0x94, 0x7c, 0x8b, 0x21, 0x04, 0x51, 0x43, 0xb4, 0xe1, 0x94, 0xf4, 0xe1, 0xd8, 0x7f, 0x62, 0xf1,
0x60, 0x4c, 0x12, 0x98, 0x4f, 0xc5, 0xfc, 0x13, 0x8f, 0xf7, 0x10, 0x8b, 0xa4, 0xa0, 0x1c, 0xce, 0x2c, 0x71, 0x35, 0x7c, 0xde, 0xb7, 0x0d, 0x4d, 0x15, 0x5c, 0x49, 0xd3, 0x0b, 0x0d, 0x8c, 0xd1,
0xf4, 0x7a, 0x44, 0xcf, 0x68, 0x14, 0xab, 0x34, 0x28, 0x55, 0x56, 0x59, 0x90, 0xd9, 0x55, 0xde, 0xe0, 0x50, 0x7a, 0xe1, 0xc9, 0x49, 0x4c, 0x65, 0x32, 0x90, 0x81, 0x31, 0x49, 0x60, 0x3e, 0x15,
0x80, 0x9a, 0x6a, 0xd7, 0x54, 0x59, 0x92, 0x52, 0xd5, 0x33, 0xd5, 0x88, 0xa7, 0x0c, 0x63, 0xd0, 0xf3, 0x4f, 0x3c, 0xde, 0x43, 0x2c, 0x92, 0x82, 0x72, 0x38, 0xd3, 0xeb, 0x11, 0x3d, 0xa3, 0x51,
0x5c, 0x4d, 0xe7, 0x2b, 0xc8, 0x2d, 0x20, 0x27, 0x5e, 0x94, 0x25, 0x2f, 0x23, 0x79, 0x41, 0x8d, 0xac, 0xd2, 0xa0, 0x54, 0x59, 0x65, 0x41, 0x66, 0x57, 0x79, 0x03, 0x6a, 0xaa, 0x5d, 0x53, 0x65,
0xfd, 0x04, 0x96, 0x25, 0xeb, 0x68, 0xce, 0x94, 0xb9, 0x89, 0xd6, 0x45, 0x02, 0x53, 0xca, 0x0b, 0x49, 0x4a, 0x55, 0xcf, 0x54, 0x23, 0x9e, 0x32, 0x8c, 0x41, 0x73, 0x35, 0x9d, 0xaf, 0x20, 0xb7,
0x8c, 0xfd, 0x3f, 0x16, 0xcc, 0x8b, 0x9d, 0xce, 0xbd, 0xea, 0xe1, 0xfb, 0x6c, 0x60, 0xa4, 0x63, 0x80, 0x9c, 0x78, 0x51, 0x96, 0xbc, 0x8c, 0xe4, 0x05, 0x35, 0xf6, 0x13, 0x58, 0x96, 0xac, 0xa3,
0x3c, 0x80, 0x40, 0xe9, 0x12, 0x6a, 0x32, 0xa7, 0x08, 0xcb, 0x45, 0x8a, 0x90, 0x40, 0x65, 0xec, 0x39, 0x53, 0xe6, 0x26, 0x5a, 0x17, 0x09, 0x4c, 0x29, 0x2f, 0x30, 0xf6, 0xff, 0x58, 0x30, 0x2f,
0x26, 0xa7, 0x78, 0x76, 0xae, 0x3b, 0xf8, 0x3f, 0x69, 0xf3, 0x48, 0x0f, 0x57, 0xba, 0x18, 0xe5, 0x76, 0x3a, 0xf7, 0xaa, 0x87, 0xef, 0xb3, 0x81, 0x91, 0x8e, 0xf1, 0x00, 0x02, 0xa5, 0x4b, 0xa8,
0x29, 0x7a, 0xbf, 0xc4, 0xed, 0x7b, 0xfe, 0xfd, 0xd2, 0x15, 0xa8, 0xe3, 0x00, 0x7a, 0x69, 0x20, 0xc9, 0x9c, 0x22, 0x2c, 0x17, 0x29, 0x42, 0x02, 0x95, 0xb1, 0x9b, 0x9c, 0xe2, 0xd9, 0xb9, 0xee,
0x27, 0x05, 0x18, 0xe7, 0xf2, 0x02, 0x4a, 0xb2, 0xc8, 0x45, 0x4e, 0x11, 0x7b, 0x95, 0xef, 0xbc, 0xe0, 0xff, 0xa4, 0xcd, 0x23, 0x3d, 0x5c, 0xe9, 0x62, 0x94, 0xa7, 0xe8, 0xfd, 0x12, 0xb7, 0xef,
0x58, 0x02, 0x75, 0x67, 0x2a, 0xb2, 0x4e, 0x53, 0x38, 0xe5, 0x08, 0x31, 0x80, 0x2c, 0x47, 0x08, 0xf9, 0xf7, 0x4b, 0x57, 0xa1, 0x8e, 0x03, 0xe8, 0xa5, 0x81, 0x9c, 0x14, 0x60, 0x9c, 0xcb, 0x0b,
0x52, 0x47, 0xd5, 0xdb, 0x5d, 0xe8, 0xec, 0x50, 0x9f, 0x26, 0x74, 0xcb, 0xf7, 0xb3, 0xed, 0xbf, 0x28, 0xc9, 0x22, 0x17, 0x39, 0x45, 0xec, 0x55, 0xbe, 0xf3, 0x62, 0x09, 0xd4, 0x9d, 0xa9, 0xc8,
0x04, 0x97, 0x0b, 0xea, 0x84, 0xff, 0xfc, 0x45, 0x58, 0xdd, 0xe2, 0x19, 0x7a, 0x3f, 0xad, 0xac, 0x3a, 0x4d, 0xe1, 0x94, 0x23, 0xc4, 0x00, 0xb2, 0x1c, 0x21, 0x48, 0x1d, 0x55, 0x6f, 0x77, 0xa1,
0x13, 0xbb, 0x03, 0x6b, 0xd9, 0x26, 0x45, 0x67, 0xf7, 0x60, 0x69, 0x87, 0x1e, 0x4f, 0x86, 0xfb, 0xb3, 0x43, 0x7d, 0x9a, 0xd0, 0x2d, 0xdf, 0xcf, 0xb6, 0xff, 0x12, 0x5c, 0x29, 0xa8, 0x13, 0xfe,
0xf4, 0x2c, 0xed, 0x88, 0x40, 0x25, 0x3e, 0x0d, 0xcf, 0x85, 0x60, 0xe2, 0xff, 0xe4, 0x65, 0x00, 0xf3, 0x17, 0x61, 0x75, 0x8b, 0x67, 0xe8, 0xfd, 0xa4, 0xb2, 0x4e, 0xec, 0x0e, 0xac, 0x65, 0x9b,
0x9f, 0xd1, 0xf4, 0xe2, 0x31, 0xed, 0xcb, 0x37, 0x07, 0x88, 0x1c, 0x8d, 0x69, 0xdf, 0x7e, 0x13, 0x14, 0x9d, 0xdd, 0x83, 0xa5, 0x1d, 0x7a, 0x3c, 0x19, 0xee, 0xd3, 0xb3, 0xb4, 0x23, 0x02, 0x95,
0x88, 0xde, 0x8e, 0x58, 0x2f, 0x66, 0xf7, 0x26, 0xc7, 0xbd, 0x78, 0x1a, 0x27, 0x74, 0x24, 0x1f, 0xf8, 0x34, 0x3c, 0x17, 0x82, 0x89, 0xff, 0x93, 0x97, 0x01, 0x7c, 0x46, 0xd3, 0x8b, 0xc7, 0xb4,
0x53, 0xe8, 0x90, 0x7d, 0x03, 0x9a, 0x87, 0xee, 0xd4, 0xa1, 0x5f, 0x17, 0x8f, 0xb9, 0xd6, 0x61, 0x2f, 0xdf, 0x1c, 0x20, 0x72, 0x34, 0xa6, 0x7d, 0xfb, 0x4d, 0x20, 0x7a, 0x3b, 0x62, 0xbd, 0x98,
0x7e, 0xec, 0x4e, 0x99, 0x9a, 0x52, 0x11, 0x26, 0xac, 0xb6, 0xff, 0xab, 0x04, 0x73, 0x9c, 0x92, 0xdd, 0x9b, 0x1c, 0xf7, 0xe2, 0x69, 0x9c, 0xd0, 0x91, 0x7c, 0x4c, 0xa1, 0x43, 0xf6, 0x4d, 0x68,
0xb5, 0x3a, 0xa0, 0x71, 0xe2, 0x05, 0xc8, 0x58, 0xb2, 0x55, 0x0d, 0xca, 0xb1, 0x72, 0xa9, 0x80, 0x1e, 0xba, 0x53, 0x87, 0x7e, 0x5d, 0x3c, 0xe6, 0xba, 0x0c, 0xf3, 0x63, 0x77, 0xca, 0xd4, 0x94,
0x95, 0xc5, 0x29, 0x4d, 0xe6, 0x6f, 0x0b, 0x7e, 0x35, 0x30, 0xc6, 0x5c, 0x69, 0xfa, 0x17, 0x0f, 0x8a, 0x30, 0x61, 0xb5, 0xfd, 0x5f, 0x25, 0x98, 0xe3, 0x94, 0xac, 0xd5, 0x01, 0x8d, 0x13, 0x2f,
0x71, 0xa4, 0x40, 0x26, 0x18, 0x99, 0x5a, 0x57, 0x3e, 0x3e, 0x29, 0xa5, 0x82, 0x73, 0x75, 0xa8, 0x40, 0xc6, 0x92, 0xad, 0x6a, 0x50, 0x8e, 0x95, 0x4b, 0x05, 0xac, 0x2c, 0x4e, 0x69, 0x32, 0x7f,
0xd0, 0x86, 0xcf, 0x73, 0x06, 0xcf, 0xd9, 0xf0, 0x9c, 0xad, 0xae, 0xbd, 0x80, 0xad, 0xe6, 0x47, 0x5b, 0xf0, 0xab, 0x81, 0x31, 0xe6, 0x4a, 0xd3, 0xbf, 0x78, 0x88, 0x23, 0x05, 0x32, 0xc1, 0xc8,
0xb7, 0xe7, 0xd9, 0x6a, 0x78, 0x01, 0x5b, 0x6d, 0x13, 0x68, 0xdf, 0xa3, 0xd4, 0xa1, 0xcc, 0x1b, 0xd4, 0xba, 0xf2, 0xf1, 0x49, 0x29, 0x15, 0x9c, 0xab, 0x43, 0x85, 0x36, 0x7c, 0x9e, 0x33, 0x78,
0x94, 0xbc, 0xfb, 0x2d, 0x0b, 0xda, 0x82, 0x8b, 0x54, 0x1d, 0x79, 0xd5, 0xf0, 0x7a, 0x0b, 0xf3, 0xce, 0x86, 0xe7, 0x6c, 0x75, 0xed, 0x05, 0x6c, 0x35, 0x3f, 0xba, 0x3d, 0xcf, 0x56, 0xc3, 0x0b,
0xa8, 0xaf, 0xc3, 0x02, 0xfa, 0xa2, 0x2a, 0xea, 0x2a, 0x42, 0xc4, 0x06, 0xc8, 0xe6, 0x21, 0xaf, 0xd8, 0x6a, 0x9b, 0x40, 0xfb, 0x1e, 0xa5, 0x0e, 0x65, 0xde, 0xa0, 0xe4, 0xdd, 0x6f, 0x59, 0xd0,
0x3b, 0x47, 0x9e, 0x2f, 0x36, 0x45, 0x87, 0x64, 0xe0, 0x36, 0x72, 0x45, 0x1a, 0x94, 0xe5, 0xa8, 0x16, 0x5c, 0xa4, 0xea, 0xc8, 0xab, 0x86, 0xd7, 0x5b, 0x98, 0x47, 0x7d, 0x03, 0x16, 0xd0, 0x17,
0xb2, 0xfd, 0xd7, 0x16, 0x2c, 0x69, 0x03, 0x16, 0x5c, 0xf8, 0x0e, 0x48, 0x69, 0xe0, 0x21, 0x58, 0x55, 0x51, 0x57, 0x11, 0x22, 0x36, 0x40, 0x36, 0x0f, 0x79, 0xdd, 0x39, 0xf2, 0x7c, 0xb1, 0x29,
0x2e, 0xb9, 0xeb, 0xa6, 0xd8, 0xa4, 0x9f, 0x19, 0xc4, 0xb8, 0x99, 0xee, 0x14, 0x07, 0x18, 0x4f, 0x3a, 0x24, 0x03, 0xb7, 0x91, 0x2b, 0xd2, 0xa0, 0x2c, 0x47, 0x95, 0xed, 0xbf, 0xb2, 0x60, 0x49,
0x46, 0x42, 0x89, 0xea, 0x10, 0x63, 0xa4, 0x73, 0x4a, 0x9f, 0x2a, 0x12, 0xae, 0xc6, 0x0d, 0x0c, 0x1b, 0xb0, 0xe0, 0xc2, 0x77, 0x40, 0x4a, 0x03, 0x0f, 0xc1, 0x72, 0xc9, 0xbd, 0x6c, 0x8a, 0x4d,
0x73, 0x74, 0x98, 0x0f, 0xad, 0x88, 0xb8, 0x3d, 0x33, 0x41, 0xfb, 0x5f, 0x2c, 0x58, 0xe6, 0x87, 0xfa, 0x99, 0x41, 0x8c, 0x9b, 0xe9, 0x4e, 0x71, 0x80, 0xf1, 0x64, 0x24, 0x94, 0xa8, 0x0e, 0x31,
0x21, 0x71, 0xd4, 0x54, 0x4f, 0x60, 0xe6, 0xf8, 0xe9, 0x8f, 0x4b, 0xe4, 0xde, 0x25, 0x47, 0x94, 0x46, 0x3a, 0xa7, 0xf4, 0xa9, 0x22, 0xe1, 0x6a, 0xdc, 0xc0, 0x30, 0x47, 0x87, 0xf9, 0xd0, 0x8a,
0xc9, 0xa7, 0x5f, 0xf0, 0x00, 0xa7, 0x72, 0xb3, 0x66, 0xec, 0x45, 0xb9, 0x68, 0x2f, 0x9e, 0xb3, 0x88, 0xdb, 0x33, 0x13, 0xb4, 0xff, 0xc5, 0x82, 0x65, 0x7e, 0x18, 0x12, 0x47, 0x4d, 0xf5, 0x04,
0xd2, 0x45, 0x21, 0xc7, 0x6a, 0x61, 0xc8, 0xf1, 0xee, 0x3c, 0x54, 0xe3, 0x7e, 0x38, 0xa6, 0xf6, 0x66, 0x8e, 0x9f, 0xfe, 0xb8, 0x44, 0xee, 0x5d, 0x72, 0x44, 0x99, 0x7c, 0xfa, 0x05, 0x0f, 0x70,
0x1a, 0xac, 0x98, 0x93, 0x13, 0x2a, 0xe8, 0x3b, 0x16, 0x74, 0xee, 0xf1, 0xd0, 0xbc, 0x17, 0x0c, 0x2a, 0x37, 0x6b, 0xc6, 0x5e, 0x94, 0x8b, 0xf6, 0xe2, 0x39, 0x2b, 0x5d, 0x14, 0x72, 0xac, 0x16,
0xf7, 0xbc, 0x38, 0x09, 0x23, 0xf5, 0x52, 0xf0, 0x2a, 0x40, 0x9c, 0xb8, 0x51, 0xc2, 0x33, 0x70, 0x86, 0x1c, 0xef, 0xce, 0x43, 0x35, 0xee, 0x87, 0x63, 0x6a, 0xaf, 0xc1, 0x8a, 0x39, 0x39, 0xa1,
0x45, 0x40, 0x30, 0x45, 0xd8, 0x18, 0x69, 0x30, 0xe0, 0xb5, 0x7c, 0x6f, 0x54, 0x39, 0xe7, 0x43, 0x82, 0xbe, 0x63, 0x41, 0xe7, 0x1e, 0x0f, 0xcd, 0x7b, 0xc1, 0x70, 0xcf, 0x8b, 0x93, 0x30, 0x52,
0x88, 0xe3, 0x9a, 0x61, 0x89, 0x5f, 0xe3, 0xb9, 0x8a, 0xcc, 0x57, 0xa0, 0x67, 0xa8, 0xd7, 0xf9, 0x2f, 0x05, 0xaf, 0x01, 0xc4, 0x89, 0x1b, 0x25, 0x3c, 0x03, 0x57, 0x04, 0x04, 0x53, 0x84, 0x8d,
0x39, 0x28, 0x83, 0xda, 0xff, 0x6c, 0xc1, 0x62, 0x3a, 0x48, 0xbc, 0xc5, 0x33, 0xb5, 0x83, 0x30, 0x91, 0x06, 0x03, 0x5e, 0xcb, 0xf7, 0x46, 0x95, 0x73, 0x3e, 0x84, 0x38, 0xae, 0x19, 0x96, 0xf8,
0xbf, 0xa9, 0x76, 0x90, 0xa1, 0x4a, 0x8f, 0xd9, 0x63, 0x31, 0x36, 0x0d, 0x41, 0x89, 0x15, 0xa5, 0x35, 0x9e, 0xab, 0xc8, 0x7c, 0x05, 0x7a, 0x86, 0x7a, 0x9d, 0x9f, 0x83, 0x32, 0xa8, 0xfd, 0x4f,
0x70, 0x22, 0x1d, 0x1c, 0x1d, 0xe2, 0x99, 0x47, 0xcc, 0x13, 0x10, 0x5e, 0x8d, 0x28, 0x61, 0x02, 0x16, 0x2c, 0xa6, 0x83, 0xc4, 0x5b, 0x3c, 0x53, 0x3b, 0x08, 0xf3, 0x9b, 0x6a, 0x07, 0x19, 0xaa,
0xf5, 0x28, 0xc1, 0xaf, 0xe6, 0xf8, 0x41, 0x50, 0x14, 0xa5, 0x29, 0x9d, 0x47, 0x14, 0x4d, 0xa9, 0xf4, 0x98, 0x3d, 0x16, 0x63, 0xd3, 0x10, 0x94, 0x58, 0x51, 0x0a, 0x27, 0xd2, 0xc1, 0xd1, 0x21,
0x7e, 0xcd, 0x51, 0xe3, 0xeb, 0x23, 0xcb, 0xf6, 0xef, 0x5a, 0x70, 0xb9, 0x60, 0xe1, 0x85, 0xd4, 0x9e, 0x79, 0xc4, 0x3c, 0x01, 0xe1, 0xd5, 0x88, 0x12, 0x26, 0x50, 0x8f, 0x12, 0xfc, 0x6a, 0x8e,
0xec, 0xc0, 0xd2, 0x89, 0xaa, 0x94, 0x8b, 0xc3, 0x45, 0x67, 0x4d, 0xde, 0x33, 0x99, 0x0b, 0xe2, 0x1f, 0x04, 0x45, 0x51, 0x9a, 0xd2, 0x79, 0x44, 0xd1, 0x94, 0xea, 0xd7, 0x1c, 0x35, 0xbe, 0x3e,
0xe4, 0x3f, 0x50, 0x7e, 0x11, 0x5f, 0x6e, 0x23, 0xb7, 0x2f, 0x5f, 0xb1, 0xf1, 0x39, 0x68, 0x68, 0xb2, 0x6c, 0xff, 0xb6, 0x05, 0x57, 0x0a, 0x16, 0x5e, 0x48, 0xcd, 0x0e, 0x2c, 0x9d, 0xa8, 0x4a,
0x6f, 0xf4, 0xc8, 0x3a, 0x2c, 0x3f, 0x79, 0xf0, 0xe8, 0x60, 0xf7, 0xe8, 0xa8, 0x77, 0xf8, 0xf8, 0xb9, 0x38, 0x5c, 0x74, 0xd6, 0xe4, 0x3d, 0x93, 0xb9, 0x20, 0x4e, 0xfe, 0x03, 0xe5, 0x17, 0xf1,
0xee, 0x17, 0x76, 0xbf, 0xdc, 0xdb, 0xdb, 0x3a, 0xda, 0x6b, 0x5f, 0x22, 0x6b, 0x40, 0x0e, 0x76, 0xe5, 0x36, 0x72, 0xfb, 0xf2, 0x15, 0x1b, 0x9f, 0x83, 0x86, 0xf6, 0x46, 0x8f, 0x5c, 0x86, 0xe5,
0x8f, 0x1e, 0xed, 0xee, 0x18, 0xb8, 0x75, 0xe7, 0xf7, 0xca, 0xd0, 0xe2, 0xf7, 0x97, 0xfc, 0x37, 0x27, 0x0f, 0x1e, 0x1d, 0xec, 0x1e, 0x1d, 0xf5, 0x0e, 0x1f, 0xdf, 0xfd, 0xc2, 0xee, 0x97, 0x7b,
0x1b, 0x68, 0x44, 0xde, 0x85, 0x79, 0xf1, 0x9b, 0x1b, 0x64, 0x55, 0x0c, 0xdb, 0xfc, 0x95, 0x8f, 0x7b, 0x5b, 0x47, 0x7b, 0xed, 0x4b, 0x64, 0x0d, 0xc8, 0xc1, 0xee, 0xd1, 0xa3, 0xdd, 0x1d, 0x03,
0xee, 0x5a, 0x16, 0x16, 0x7c, 0xb9, 0xfc, 0x6b, 0x3f, 0xfc, 0xf7, 0x3f, 0x28, 0x2d, 0x90, 0xc6, 0xb7, 0xee, 0xfc, 0x4e, 0x19, 0x5a, 0xfc, 0xfe, 0x92, 0xff, 0xba, 0x03, 0x8d, 0xc8, 0xbb, 0x30,
0xe6, 0xd9, 0x1b, 0x9b, 0x43, 0x1a, 0xc4, 0xac, 0x8d, 0xaf, 0x02, 0xa4, 0xbf, 0x46, 0x41, 0x3a, 0x2f, 0x7e, 0x9d, 0x83, 0xac, 0x8a, 0x61, 0x9b, 0xbf, 0x07, 0xd2, 0x5d, 0xcb, 0xc2, 0x82, 0x2f,
0xca, 0x1f, 0xcc, 0xfc, 0xcc, 0x46, 0xf7, 0x72, 0x41, 0x8d, 0x68, 0xf7, 0x32, 0xb6, 0xbb, 0x6c, 0x97, 0x7f, 0xe5, 0x07, 0xff, 0xfe, 0x7b, 0xa5, 0x05, 0xd2, 0xd8, 0x3c, 0x7b, 0x63, 0x73, 0x48,
0xb7, 0x58, 0xbb, 0x5e, 0xe0, 0x25, 0xfc, 0xa7, 0x29, 0xde, 0xb6, 0x36, 0xc8, 0x00, 0x9a, 0xfa, 0x83, 0x98, 0xb5, 0xf1, 0x55, 0x80, 0xf4, 0x77, 0x2b, 0x48, 0x47, 0xf9, 0x83, 0x99, 0x1f, 0xe4,
0x8f, 0x4d, 0x10, 0x19, 0x86, 0x2a, 0xf8, 0xa9, 0x8b, 0xee, 0x4b, 0x85, 0x75, 0x32, 0x06, 0x87, 0xe8, 0x5e, 0x29, 0xa8, 0x11, 0xed, 0x5e, 0xc1, 0x76, 0x97, 0xed, 0x16, 0x6b, 0xd7, 0x0b, 0xbc,
0x7d, 0xac, 0xda, 0x6d, 0xd6, 0xc7, 0x04, 0x29, 0xd2, 0x5e, 0x7c, 0x68, 0x99, 0xbf, 0x29, 0x41, 0x84, 0xff, 0x88, 0xc5, 0xdb, 0xd6, 0x06, 0x19, 0x40, 0x53, 0xff, 0x59, 0x0a, 0x22, 0xc3, 0x50,
0xae, 0x68, 0x2a, 0x23, 0xf7, 0x8b, 0x16, 0xdd, 0x97, 0x67, 0xd4, 0x8a, 0xbe, 0x5e, 0xc6, 0xbe, 0x05, 0x3f, 0x8a, 0xd1, 0x7d, 0xa9, 0xb0, 0x4e, 0xc6, 0xe0, 0xb0, 0x8f, 0x55, 0xbb, 0xcd, 0xfa,
0xd6, 0x6d, 0xc2, 0xfa, 0xea, 0x23, 0x8d, 0xfc, 0x45, 0x8b, 0xb7, 0xad, 0x8d, 0x3b, 0x7f, 0x77, 0x98, 0x20, 0x45, 0xda, 0x8b, 0x0f, 0x2d, 0xf3, 0xd7, 0x27, 0xc8, 0x55, 0x4d, 0x65, 0xe4, 0x7e,
0x0d, 0xea, 0x2a, 0x70, 0x4c, 0xde, 0x87, 0x05, 0xe3, 0x82, 0x99, 0xc8, 0x69, 0x14, 0xdd, 0x47, 0xfb, 0xa2, 0xfb, 0xf2, 0x8c, 0x5a, 0xd1, 0xd7, 0xcb, 0xd8, 0xd7, 0x65, 0x9b, 0xb0, 0xbe, 0xfa,
0x77, 0xaf, 0x14, 0x57, 0x8a, 0x8e, 0xaf, 0x62, 0xc7, 0x1d, 0xb2, 0xc6, 0x3a, 0x16, 0x37, 0xb4, 0x48, 0x23, 0x7f, 0xfb, 0xe2, 0x6d, 0x6b, 0xe3, 0xce, 0xdf, 0x5e, 0x87, 0xba, 0x0a, 0x1c, 0x93,
0x9b, 0x98, 0x2a, 0xc1, 0xf3, 0x9e, 0x9f, 0xf2, 0x79, 0xa6, 0x97, 0xc2, 0xc6, 0x3c, 0x73, 0x97, 0xf7, 0x61, 0xc1, 0xb8, 0x60, 0x26, 0x72, 0x1a, 0x45, 0xf7, 0xd1, 0xdd, 0xab, 0xc5, 0x95, 0xa2,
0xc8, 0xc6, 0x3c, 0xf3, 0x37, 0xc9, 0xf6, 0x15, 0xec, 0x6e, 0x8d, 0xac, 0xe8, 0xdd, 0xa9, 0x80, 0xe3, 0x6b, 0xd8, 0x71, 0x87, 0xac, 0xb1, 0x8e, 0xc5, 0x0d, 0xed, 0x26, 0xa6, 0x4a, 0xf0, 0xbc,
0x2e, 0xc5, 0x64, 0x7d, 0xfd, 0x67, 0x18, 0xc8, 0xcb, 0x8a, 0xb1, 0x8a, 0x7e, 0x9e, 0x41, 0xb1, 0xe7, 0xa7, 0x7c, 0x9e, 0xe9, 0xa5, 0xb0, 0x31, 0xcf, 0xdc, 0x25, 0xb2, 0x31, 0xcf, 0xfc, 0x4d,
0x48, 0xfe, 0x37, 0x1a, 0xec, 0x0e, 0x76, 0x45, 0x08, 0x6e, 0x9f, 0xfe, 0x2b, 0x0c, 0xe4, 0x2b, 0xb2, 0x7d, 0x15, 0xbb, 0x5b, 0x23, 0x2b, 0x7a, 0x77, 0x2a, 0xa0, 0x4b, 0x31, 0x59, 0x5f, 0xff,
0x50, 0x57, 0x0f, 0x74, 0xc9, 0xba, 0xf6, 0x60, 0x5a, 0x7f, 0x50, 0xdc, 0xed, 0xe4, 0x2b, 0x8a, 0xc1, 0x06, 0xf2, 0xb2, 0x62, 0xac, 0xa2, 0x1f, 0x72, 0x50, 0x2c, 0x92, 0xff, 0x35, 0x07, 0xbb,
0x18, 0x43, 0x6f, 0x99, 0x31, 0xc6, 0x13, 0x68, 0x68, 0x8f, 0x70, 0xc9, 0x65, 0x15, 0xf6, 0xcf, 0x83, 0x5d, 0x11, 0x82, 0xdb, 0xa7, 0xff, 0x5e, 0x03, 0xf9, 0x0a, 0xd4, 0xd5, 0x03, 0x5d, 0x72,
0x3e, 0xf4, 0xed, 0x76, 0x8b, 0xaa, 0x44, 0x17, 0x4b, 0xd8, 0x45, 0x83, 0xd4, 0x91, 0xf7, 0x92, 0x59, 0x7b, 0x30, 0xad, 0x3f, 0x28, 0xee, 0x76, 0xf2, 0x15, 0x45, 0x8c, 0xa1, 0xb7, 0xcc, 0x18,
0x67, 0x61, 0x4c, 0xf6, 0x61, 0x55, 0x1c, 0x5c, 0x8e, 0xe9, 0x47, 0x59, 0xa2, 0x82, 0x5f, 0xa5, 0xe3, 0x09, 0x34, 0xb4, 0x47, 0xb8, 0xe4, 0x8a, 0x0a, 0xfb, 0x67, 0x1f, 0xfa, 0x76, 0xbb, 0x45,
0xb8, 0x6d, 0x91, 0x77, 0xa0, 0x26, 0xdf, 0x5a, 0x93, 0xb5, 0xe2, 0x37, 0xe3, 0xdd, 0xf5, 0x1c, 0x55, 0xa2, 0x8b, 0x25, 0xec, 0xa2, 0x41, 0xea, 0xc8, 0x7b, 0xc9, 0xb3, 0x30, 0x26, 0xfb, 0xb0,
0x2e, 0xd4, 0xda, 0x97, 0x01, 0xd2, 0x17, 0xbf, 0x4a, 0x80, 0x73, 0x2f, 0x88, 0xd5, 0xee, 0xe4, 0x2a, 0x0e, 0x2e, 0xc7, 0xf4, 0xa3, 0x2c, 0x51, 0xc1, 0xef, 0x57, 0xdc, 0xb6, 0xc8, 0x3b, 0x50,
0x9f, 0x07, 0xdb, 0x6b, 0x38, 0xc1, 0x36, 0x41, 0x01, 0x0e, 0xe8, 0xb9, 0x7c, 0xbe, 0xf2, 0x35, 0x93, 0x6f, 0xad, 0xc9, 0x5a, 0xf1, 0x9b, 0xf1, 0xee, 0xe5, 0x1c, 0x2e, 0xd4, 0xda, 0x97, 0x01,
0x68, 0x68, 0x8f, 0x7e, 0xd5, 0xf2, 0xe5, 0x1f, 0x0c, 0xab, 0xe5, 0x2b, 0x78, 0x23, 0x6c, 0x77, 0xd2, 0x17, 0xbf, 0x4a, 0x80, 0x73, 0x2f, 0x88, 0xd5, 0xee, 0xe4, 0x9f, 0x07, 0xdb, 0x6b, 0x38,
0xb1, 0xf5, 0x15, 0x7b, 0x91, 0xb5, 0x1e, 0x7b, 0xc3, 0x60, 0xc4, 0x09, 0xd8, 0x06, 0x9d, 0xc2, 0xc1, 0x36, 0x41, 0x01, 0x0e, 0xe8, 0xb9, 0x7c, 0xbe, 0xf2, 0x35, 0x68, 0x68, 0x8f, 0x7e, 0xd5,
0x82, 0xf1, 0xb2, 0x57, 0x49, 0x4f, 0xd1, 0xbb, 0x61, 0x25, 0x3d, 0x85, 0x8f, 0x81, 0x25, 0x3b, 0xf2, 0xe5, 0x1f, 0x0c, 0xab, 0xe5, 0x2b, 0x78, 0x23, 0x6c, 0x77, 0xb1, 0xf5, 0x15, 0x7b, 0x91,
0xdb, 0x4b, 0xac, 0x9f, 0x33, 0x24, 0xd1, 0x7a, 0x7a, 0x0f, 0x1a, 0xda, 0x2b, 0x5d, 0x35, 0x97, 0xb5, 0x1e, 0x7b, 0xc3, 0x60, 0xc4, 0x09, 0xd8, 0x06, 0x9d, 0xc2, 0x82, 0xf1, 0xb2, 0x57, 0x49,
0xfc, 0x83, 0x60, 0x35, 0x97, 0xa2, 0x47, 0xbd, 0x2b, 0xd8, 0x47, 0xcb, 0x46, 0x56, 0xc0, 0xd7, 0x4f, 0xd1, 0xbb, 0x61, 0x25, 0x3d, 0x85, 0x8f, 0x81, 0x25, 0x3b, 0xdb, 0x4b, 0xac, 0x9f, 0x33,
0x1f, 0xac, 0xed, 0xf7, 0xa1, 0x65, 0xbe, 0xdb, 0x55, 0x72, 0x59, 0xf8, 0x02, 0x58, 0xc9, 0xe5, 0x24, 0xd1, 0x7a, 0x7a, 0x0f, 0x1a, 0xda, 0x2b, 0x5d, 0x35, 0x97, 0xfc, 0x83, 0x60, 0x35, 0x97,
0x8c, 0xc7, 0xbe, 0x82, 0xa5, 0x37, 0x96, 0x55, 0x27, 0x9b, 0x1f, 0x88, 0x6b, 0xdc, 0x0f, 0xc9, 0xa2, 0x47, 0xbd, 0x2b, 0xd8, 0x47, 0xcb, 0x46, 0x56, 0xc0, 0xd7, 0x1f, 0xac, 0xed, 0xf7, 0xa1,
0x17, 0x99, 0xf2, 0x11, 0xcf, 0x71, 0xc8, 0xba, 0xc6, 0xb5, 0xfa, 0xa3, 0x1d, 0x25, 0x2f, 0xb9, 0x65, 0xbe, 0xdb, 0x55, 0x72, 0x59, 0xf8, 0x02, 0x58, 0xc9, 0xe5, 0x8c, 0xc7, 0xbe, 0x82, 0xa5,
0x97, 0x3b, 0x26, 0x33, 0xf3, 0xf7, 0x2b, 0x68, 0x51, 0xf0, 0x59, 0x8e, 0x66, 0x51, 0xf4, 0x97, 0x37, 0x96, 0x55, 0x27, 0x9b, 0x1f, 0x88, 0x6b, 0xdc, 0x0f, 0xc9, 0x17, 0x99, 0xf2, 0x11, 0xcf,
0x3b, 0x9a, 0x45, 0x31, 0x5e, 0xef, 0x64, 0x2d, 0x4a, 0xe2, 0xb1, 0x36, 0x02, 0x58, 0xcc, 0x24, 0x71, 0xc8, 0x65, 0x8d, 0x6b, 0xf5, 0x47, 0x3b, 0x4a, 0x5e, 0x72, 0x2f, 0x77, 0x4c, 0x66, 0xe6,
0xa8, 0x29, 0xa9, 0x28, 0xce, 0xe8, 0xed, 0x5e, 0x7d, 0x7e, 0x5e, 0x9b, 0xa9, 0xa8, 0xa4, 0x82, 0xef, 0x57, 0xd0, 0xa2, 0xe0, 0xb3, 0x1c, 0xcd, 0xa2, 0xe8, 0x2f, 0x77, 0x34, 0x8b, 0x62, 0xbc,
0xda, 0x94, 0xf9, 0xd3, 0xbf, 0x0c, 0x4d, 0xfd, 0x45, 0x25, 0xd1, 0x45, 0x39, 0xdb, 0xd3, 0x4b, 0xde, 0xc9, 0x5a, 0x94, 0xc4, 0x63, 0x6d, 0x04, 0xb0, 0x98, 0x49, 0x50, 0x53, 0x52, 0x51, 0x9c,
0x85, 0x75, 0xe6, 0xe6, 0x92, 0xa6, 0xde, 0x0d, 0xf9, 0x12, 0xac, 0x29, 0x51, 0xd7, 0x73, 0x9e, 0xd1, 0xdb, 0xbd, 0xf6, 0xfc, 0xbc, 0x36, 0x53, 0x51, 0x49, 0x05, 0xb5, 0x29, 0xf3, 0xa7, 0x7f,
0x62, 0xf2, 0x4a, 0x41, 0x26, 0x94, 0x1e, 0xce, 0xe8, 0x5e, 0x9e, 0x99, 0x2a, 0x75, 0xdb, 0x62, 0x11, 0x9a, 0xfa, 0x8b, 0x4a, 0xa2, 0x8b, 0x72, 0xb6, 0xa7, 0x97, 0x0a, 0xeb, 0xcc, 0xcd, 0x25,
0x4c, 0x63, 0x3e, 0x55, 0x4b, 0x95, 0x79, 0xd1, 0x0b, 0xbd, 0x54, 0x99, 0x17, 0xbe, 0x6f, 0x93, 0x4d, 0xbd, 0x1b, 0xf2, 0x25, 0x58, 0x53, 0xa2, 0xae, 0xe7, 0x3c, 0xc5, 0xe4, 0x95, 0x82, 0x4c,
0x4c, 0x43, 0x96, 0x8d, 0x35, 0xe2, 0x91, 0x7c, 0xf2, 0x1e, 0x2c, 0x6a, 0x59, 0xa5, 0x47, 0xd3, 0x28, 0x3d, 0x9c, 0xd1, 0xbd, 0x32, 0x33, 0x55, 0xea, 0xb6, 0xc5, 0x98, 0xc6, 0x7c, 0xaa, 0x96,
0xa0, 0xaf, 0x04, 0x20, 0xff, 0xfc, 0xa0, 0x5b, 0xe4, 0x6f, 0xdb, 0xeb, 0xd8, 0xfe, 0x92, 0x6d, 0x2a, 0xf3, 0xa2, 0x17, 0x7a, 0xa9, 0x32, 0x2f, 0x7c, 0xdf, 0x26, 0x99, 0x86, 0x2c, 0x1b, 0x6b,
0x2c, 0x0e, 0x63, 0xfe, 0x6d, 0x68, 0xe8, 0x19, 0xab, 0xcf, 0x69, 0x77, 0x5d, 0xab, 0xd2, 0xb3, 0xc4, 0x23, 0xf9, 0xe4, 0x3d, 0x58, 0xd4, 0xb2, 0x4a, 0x8f, 0xa6, 0x41, 0x5f, 0x09, 0x40, 0xfe,
0xe7, 0x6f, 0x5b, 0xe4, 0x8f, 0x2c, 0x68, 0x1a, 0xf9, 0x9f, 0xc6, 0x7d, 0x55, 0xa6, 0x9d, 0x8e, 0xf9, 0x41, 0xb7, 0xc8, 0xdf, 0xb6, 0x2f, 0x63, 0xfb, 0x4b, 0xb6, 0xb1, 0x38, 0x8c, 0xf9, 0xb7,
0x5e, 0xa7, 0x37, 0x64, 0x3b, 0x38, 0xc8, 0xfd, 0x8d, 0xcf, 0x1b, 0x8b, 0xf0, 0x81, 0x71, 0x6e, 0xa1, 0xa1, 0x67, 0xac, 0x3e, 0xa7, 0xdd, 0xcb, 0x5a, 0x95, 0x9e, 0x3d, 0x7f, 0xdb, 0x22, 0x7f,
0xbb, 0x95, 0xfd, 0xc1, 0x92, 0x0f, 0xb3, 0x04, 0xfa, 0x13, 0x8d, 0x0f, 0x6f, 0x5b, 0xe4, 0x7b, 0x60, 0x41, 0xd3, 0xc8, 0xff, 0x34, 0xee, 0xab, 0x32, 0xed, 0x74, 0xf4, 0x3a, 0xbd, 0x21, 0xdb,
0x16, 0xb4, 0xcc, 0x68, 0x83, 0xda, 0xaa, 0xc2, 0xb8, 0x86, 0xda, 0xaa, 0x19, 0x21, 0x8a, 0xf7, 0xc1, 0x41, 0xee, 0x6f, 0x7c, 0xde, 0x58, 0x84, 0x0f, 0x8c, 0x73, 0xdb, 0xad, 0xec, 0x0f, 0x96,
0x70, 0x94, 0x8f, 0x36, 0x1c, 0x63, 0x94, 0xe2, 0x11, 0xe3, 0x4f, 0x36, 0x5a, 0xf2, 0x36, 0xff, 0x7c, 0x98, 0x25, 0xd0, 0x9f, 0x68, 0x7c, 0x78, 0xdb, 0x22, 0xdf, 0xb5, 0xa0, 0x65, 0x46, 0x1b,
0x29, 0x22, 0x19, 0x02, 0x23, 0x9a, 0xd5, 0xc8, 0x6e, 0xaf, 0xfe, 0x3b, 0x3c, 0x37, 0xad, 0xdb, 0xd4, 0x56, 0x15, 0xc6, 0x35, 0xd4, 0x56, 0xcd, 0x08, 0x51, 0xbc, 0x87, 0xa3, 0x7c, 0xb4, 0xe1,
0x16, 0xf9, 0x1a, 0xff, 0x5d, 0x13, 0xf1, 0x2d, 0x72, 0xc9, 0x8b, 0x7e, 0x6f, 0x5f, 0xc7, 0x39, 0x18, 0xa3, 0x14, 0x8f, 0x18, 0x7f, 0xbc, 0xd1, 0x92, 0xb7, 0xf9, 0x8f, 0x16, 0xc9, 0x10, 0x18,
0x5d, 0xb5, 0x2f, 0x1b, 0x73, 0xca, 0xda, 0xe3, 0x2d, 0x3e, 0x3a, 0xf1, 0x13, 0x3a, 0xa9, 0x41, 0xd1, 0xac, 0x46, 0x76, 0x7b, 0xf5, 0xdf, 0xe1, 0x59, 0xb7, 0x6e, 0x5b, 0xe4, 0x6b, 0xfc, 0x77,
0xc9, 0xfd, 0xac, 0xce, 0xec, 0x41, 0x8e, 0xf8, 0x20, 0x05, 0xb9, 0xc1, 0xca, 0x2f, 0xd8, 0x8c, 0x4d, 0xc4, 0xb7, 0xc8, 0x25, 0x2f, 0xfa, 0xbd, 0x7d, 0x03, 0xe7, 0x74, 0xcd, 0xbe, 0x62, 0xcc,
0xbd, 0x81, 0x63, 0xbd, 0x6e, 0xbf, 0x32, 0x73, 0xac, 0x9b, 0x18, 0x33, 0x60, 0x23, 0x3e, 0x04, 0x29, 0x6b, 0x8f, 0xb7, 0xf8, 0xe8, 0xc4, 0x4f, 0xe8, 0xa4, 0x06, 0x25, 0xf7, 0xb3, 0x3a, 0xb3,
0x48, 0xc3, 0xd5, 0x24, 0x13, 0x2e, 0x55, 0x02, 0x9e, 0x8f, 0x68, 0x9b, 0xf2, 0x22, 0xa3, 0xaa, 0x07, 0x39, 0xe2, 0x83, 0x14, 0xe4, 0x06, 0x2b, 0xbf, 0x60, 0x33, 0xf6, 0x06, 0x8e, 0xf5, 0x86,
0xac, 0xc5, 0xaf, 0x70, 0x75, 0xf5, 0x40, 0x06, 0x5a, 0x75, 0xa7, 0xc4, 0x8c, 0x2b, 0x1b, 0x4e, 0xfd, 0xca, 0xcc, 0xb1, 0x6e, 0x62, 0xcc, 0x80, 0x8d, 0xf8, 0x10, 0x20, 0x0d, 0x57, 0x93, 0x4c,
0x49, 0xb6, 0x7d, 0x43, 0x59, 0xa9, 0xa8, 0xed, 0x63, 0x58, 0xd8, 0x0f, 0xc3, 0xa7, 0x93, 0xb1, 0xb8, 0x54, 0x09, 0x78, 0x3e, 0xa2, 0x6d, 0xca, 0x8b, 0x8c, 0xaa, 0xb2, 0x16, 0xbf, 0xc2, 0xd5,
0xba, 0x6c, 0x32, 0xc3, 0x79, 0x7b, 0x6e, 0x7c, 0xda, 0xcd, 0xcc, 0xc2, 0xbe, 0x86, 0x4d, 0x75, 0xd5, 0x03, 0x19, 0x68, 0xd5, 0x9d, 0x12, 0x33, 0xae, 0x6c, 0x38, 0x25, 0xd9, 0xf6, 0x0d, 0x65,
0x49, 0x47, 0x6b, 0x6a, 0xf3, 0x83, 0x34, 0x1c, 0xfe, 0x21, 0x71, 0x61, 0x49, 0xe9, 0x40, 0x35, 0xa5, 0xa2, 0xb6, 0x8f, 0x61, 0x61, 0x3f, 0x0c, 0x9f, 0x4e, 0xc6, 0xea, 0xb2, 0xc9, 0x0c, 0xe7,
0xf0, 0xae, 0xd9, 0x8c, 0xa1, 0xf9, 0xb2, 0x5d, 0x18, 0x9e, 0xad, 0x1c, 0xed, 0x66, 0x2c, 0xdb, 0xed, 0xb9, 0xf1, 0x69, 0x37, 0x33, 0x0b, 0xfb, 0x3a, 0x36, 0xd5, 0x25, 0x1d, 0xad, 0xa9, 0xcd,
0xbc, 0x6d, 0x91, 0x43, 0x68, 0xee, 0xd0, 0x7e, 0x38, 0xa0, 0x22, 0x26, 0xb6, 0x9c, 0x0e, 0x5c, 0x0f, 0xd2, 0x70, 0xf8, 0x87, 0xc4, 0x85, 0x25, 0xa5, 0x03, 0xd5, 0xc0, 0xbb, 0x66, 0x33, 0x86,
0x05, 0xd3, 0xba, 0x0b, 0x06, 0x68, 0xda, 0x85, 0xb1, 0x3b, 0x8d, 0xe8, 0xd7, 0x37, 0x3f, 0x10, 0xe6, 0xcb, 0x76, 0x61, 0x78, 0xb6, 0x72, 0xb4, 0x9b, 0xb1, 0x6c, 0xf3, 0xb6, 0x45, 0x0e, 0xa1,
0xd1, 0xb6, 0x0f, 0xa5, 0x5d, 0x90, 0xe1, 0x48, 0xc3, 0x2e, 0x64, 0xe2, 0x97, 0x86, 0x5d, 0xc8, 0xb9, 0x43, 0xfb, 0xe1, 0x80, 0x8a, 0x98, 0xd8, 0x72, 0x3a, 0x70, 0x15, 0x4c, 0xeb, 0x2e, 0x18,
0xc5, 0x2f, 0x8d, 0xa5, 0x96, 0xe1, 0x50, 0xe2, 0xc3, 0x52, 0x2e, 0xe4, 0xa9, 0x4c, 0xc2, 0xac, 0xa0, 0x69, 0x17, 0xc6, 0xee, 0x34, 0xa2, 0x5f, 0xdf, 0xfc, 0x40, 0x44, 0xdb, 0x3e, 0x94, 0x76,
0x40, 0x69, 0xf7, 0xda, 0x6c, 0x02, 0xb3, 0xb7, 0x0d, 0xb3, 0xb7, 0x23, 0x58, 0xd8, 0xa1, 0x7c, 0x41, 0x86, 0x23, 0x0d, 0xbb, 0x90, 0x89, 0x5f, 0x1a, 0x76, 0x21, 0x17, 0xbf, 0x34, 0x96, 0x5a,
0xb1, 0x78, 0x46, 0x4b, 0x26, 0x89, 0x58, 0xcf, 0x97, 0xc9, 0x2a, 0x70, 0xac, 0x33, 0x0d, 0x3f, 0x86, 0x43, 0x89, 0x0f, 0x4b, 0xb9, 0x90, 0xa7, 0x32, 0x09, 0xb3, 0x02, 0xa5, 0xdd, 0xeb, 0xb3,
0xa6, 0x93, 0x90, 0xaf, 0x40, 0xe3, 0x3e, 0x4d, 0x64, 0x0a, 0x8b, 0x72, 0x3d, 0x33, 0x39, 0x2d, 0x09, 0xcc, 0xde, 0x36, 0xcc, 0xde, 0x8e, 0x60, 0x61, 0x87, 0xf2, 0xc5, 0xe2, 0x19, 0x2d, 0x99,
0xdd, 0x82, 0x0c, 0x18, 0x93, 0x67, 0xb0, 0xb5, 0x4d, 0x3a, 0x18, 0x52, 0xae, 0x9c, 0x7a, 0xde, 0x24, 0x62, 0x3d, 0x5f, 0x26, 0xab, 0xc0, 0xb1, 0xce, 0x34, 0xfc, 0x98, 0x4e, 0x42, 0xbe, 0x02,
0xe0, 0x43, 0xf2, 0x4b, 0xd8, 0xb8, 0xca, 0xa1, 0x5b, 0xd3, 0x32, 0x1f, 0xf4, 0xc6, 0x17, 0x33, 0x8d, 0xfb, 0x34, 0x91, 0x29, 0x2c, 0xca, 0xf5, 0xcc, 0xe4, 0xb4, 0x74, 0x0b, 0x32, 0x60, 0x4c,
0x78, 0x51, 0xcb, 0x41, 0x38, 0xa0, 0x9a, 0x0b, 0x14, 0x40, 0x43, 0x4b, 0xfd, 0x54, 0x02, 0x94, 0x9e, 0xc1, 0xd6, 0x36, 0xe9, 0x60, 0x48, 0xb9, 0x72, 0xea, 0x79, 0x83, 0x0f, 0xc9, 0x2f, 0x60,
0x4f, 0x63, 0x55, 0x02, 0x54, 0x90, 0x29, 0x6a, 0xdf, 0xc4, 0x7e, 0x6c, 0x72, 0x2d, 0xed, 0x87, 0xe3, 0x2a, 0x87, 0x6e, 0x4d, 0xcb, 0x7c, 0xd0, 0x1b, 0x5f, 0xcc, 0xe0, 0x45, 0x2d, 0x07, 0xe1,
0x67, 0x87, 0xa6, 0x3d, 0x6d, 0x7e, 0xe0, 0x8e, 0x92, 0x0f, 0xc9, 0x13, 0x7c, 0xc9, 0xac, 0xa7, 0x80, 0x6a, 0x2e, 0x50, 0x00, 0x0d, 0x2d, 0xf5, 0x53, 0x09, 0x50, 0x3e, 0x8d, 0x55, 0x09, 0x50,
0xe9, 0xa4, 0xbe, 0x74, 0x36, 0xa3, 0x47, 0x2d, 0x96, 0x56, 0x65, 0xfa, 0xd7, 0xbc, 0x2b, 0xf4, 0x41, 0xa6, 0xa8, 0xbd, 0x8e, 0xfd, 0xd8, 0xe4, 0x7a, 0xda, 0x0f, 0xcf, 0x0e, 0x4d, 0x7b, 0xda,
0x94, 0x3e, 0x0d, 0x70, 0x94, 0x84, 0xe3, 0x1d, 0x97, 0x8e, 0xc2, 0x20, 0xd5, 0xb5, 0x69, 0x2a, 0xfc, 0xc0, 0x1d, 0x25, 0x1f, 0x92, 0x27, 0xf8, 0x92, 0x59, 0x4f, 0xd3, 0x49, 0x7d, 0xe9, 0x6c,
0x4a, 0xaa, 0xbf, 0xb4, 0x7c, 0x14, 0xf2, 0x44, 0x3b, 0x7c, 0x18, 0x59, 0x4e, 0x92, 0xb9, 0x66, 0x46, 0x8f, 0x5a, 0x2c, 0xad, 0xca, 0xf4, 0xaf, 0x79, 0x57, 0xe8, 0x29, 0x7d, 0x1a, 0xe0, 0x28,
0x66, 0xab, 0xa8, 0x05, 0x29, 0xc8, 0x58, 0xb9, 0x6d, 0x91, 0x2d, 0x80, 0x34, 0xe6, 0xad, 0x8e, 0x09, 0xc7, 0x3b, 0x2e, 0x1d, 0x85, 0x41, 0xaa, 0x6b, 0xd3, 0x54, 0x94, 0x54, 0x7f, 0x69, 0xf9,
0x12, 0xb9, 0x70, 0xba, 0x52, 0x7b, 0x05, 0x01, 0xf2, 0x43, 0xa8, 0xa7, 0x41, 0xd4, 0xf5, 0x34, 0x28, 0xe4, 0x89, 0x76, 0xf8, 0x30, 0xb2, 0x9c, 0x24, 0x73, 0xcd, 0xcc, 0x56, 0x51, 0x0b, 0x52,
0x7d, 0xd7, 0x08, 0xb9, 0x2a, 0x0b, 0x9e, 0x0b, 0x6d, 0xda, 0x6d, 0x5c, 0x2a, 0x20, 0x35, 0xb6, 0x90, 0xb1, 0x72, 0xdb, 0x22, 0x5b, 0x00, 0x69, 0xcc, 0x5b, 0x1d, 0x25, 0x72, 0xe1, 0x74, 0xa5,
0x54, 0x18, 0xaf, 0xf4, 0x60, 0x99, 0x0f, 0x50, 0xb9, 0x23, 0x98, 0x5c, 0x21, 0x67, 0x52, 0x10, 0xf6, 0x0a, 0x02, 0xe4, 0x87, 0x50, 0x4f, 0x83, 0xa8, 0x97, 0xd3, 0xf4, 0x5d, 0x23, 0xe4, 0xaa,
0x5e, 0x54, 0xd2, 0x5c, 0x18, 0x9d, 0x33, 0xa2, 0x15, 0x8c, 0x5b, 0x79, 0x62, 0x07, 0x53, 0xcd, 0x2c, 0x78, 0x2e, 0xb4, 0x69, 0xb7, 0x71, 0xa9, 0x80, 0xd4, 0xd8, 0x52, 0x61, 0xbc, 0xd2, 0x83,
0x23, 0x58, 0xca, 0x85, 0x8f, 0x94, 0x48, 0xcf, 0x8a, 0xe8, 0x29, 0x91, 0x9e, 0x19, 0x79, 0xb2, 0x65, 0x3e, 0x40, 0xe5, 0x8e, 0x60, 0x72, 0x85, 0x9c, 0x49, 0x41, 0x78, 0x51, 0x49, 0x73, 0x61,
0x57, 0xb1, 0xcb, 0x45, 0x1b, 0xf0, 0x04, 0x74, 0xee, 0x25, 0xfd, 0xd3, 0xb7, 0xad, 0x8d, 0xbb, 0x74, 0xce, 0x88, 0x56, 0x30, 0x6e, 0xe5, 0x89, 0x1d, 0x4c, 0x35, 0x8f, 0x60, 0x29, 0x17, 0x3e,
0x37, 0xde, 0xfb, 0x99, 0xa1, 0x97, 0x9c, 0x4e, 0x8e, 0x6f, 0xf5, 0xc3, 0xd1, 0xa6, 0x2f, 0x43, 0x52, 0x22, 0x3d, 0x2b, 0xa2, 0xa7, 0x44, 0x7a, 0x66, 0xe4, 0xc9, 0x5e, 0xc5, 0x2e, 0x17, 0x6d,
0x0a, 0x22, 0x45, 0x6a, 0xd3, 0x0f, 0x06, 0x9b, 0xd8, 0xf2, 0xf1, 0x1c, 0xfe, 0x9e, 0xeb, 0x27, 0xc0, 0x13, 0xd0, 0xb9, 0x97, 0xf4, 0x4f, 0xdf, 0xb6, 0x36, 0xee, 0xde, 0x7c, 0xef, 0xa7, 0x86,
0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x06, 0x09, 0xb9, 0x01, 0x56, 0x00, 0x00, 0x5e, 0x72, 0x3a, 0x39, 0xbe, 0xd5, 0x0f, 0x47, 0x9b, 0xbe, 0x0c, 0x29, 0x88, 0x14, 0xa9, 0x4d,
0x3f, 0x18, 0x6c, 0x62, 0xcb, 0xc7, 0x73, 0xf8, 0xcb, 0xaf, 0x9f, 0xfc, 0xdf, 0x00, 0x00, 0x00,
0xff, 0xff, 0x7d, 0x0e, 0xcf, 0xb2, 0x2b, 0x56, 0x00, 0x00,
} }

@ -774,6 +774,12 @@ message SendRequest {
send the payment. send the payment.
*/ */
FeeLimit fee_limit = 8; FeeLimit fee_limit = 8;
/**
The channel id of the channel that must be taken to the first hop. If zero,
any channel may be used.
*/
uint64 outgoing_chan_id = 9;
} }
message SendResponse { message SendResponse {
string payment_error = 1 [json_name = "payment_error"]; string payment_error = 1 [json_name = "payment_error"];

@ -2903,6 +2903,11 @@
"fee_limit": { "fee_limit": {
"$ref": "#/definitions/lnrpcFeeLimit", "$ref": "#/definitions/lnrpcFeeLimit",
"description": "*\nThe maximum number of satoshis that will be paid as a fee of the payment.\nThis value can be represented either as a percentage of the amount being\nsent, or as a fixed amount of the maximum fee the user is willing the pay to\nsend the payment." "description": "*\nThe maximum number of satoshis that will be paid as a fee of the payment.\nThis value can be represented either as a percentage of the amount being\nsent, or as a fixed amount of the maximum fee the user is willing the pay to\nsend the payment."
},
"outgoing_chan_id": {
"type": "string",
"format": "uint64",
"description": "*\nThe channel id of the channel that must be taken to the first hop. If zero,\nany channel may be used."
} }
} }
}, },

@ -11,7 +11,7 @@ import (
"github.com/btcsuite/btcd/btcec" "github.com/btcsuite/btcd/btcec"
"github.com/coreos/bbolt" "github.com/coreos/bbolt"
"github.com/lightningnetwork/lightning-onion" sphinx "github.com/lightningnetwork/lightning-onion"
"github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/lnwire" "github.com/lightningnetwork/lnd/lnwire"
) )
@ -453,6 +453,10 @@ type restrictParams struct {
// feeLimit is a maximum fee amount allowed to be used on the path from // feeLimit is a maximum fee amount allowed to be used on the path from
// the source to the target. // the source to the target.
feeLimit lnwire.MilliSatoshi feeLimit lnwire.MilliSatoshi
// outgoingChannelID is the channel that needs to be taken to the first
// hop. If nil, any channel may be used.
outgoingChannelID *uint64
} }
// findPath attempts to find a path from the source node within the // findPath attempts to find a path from the source node within the
@ -563,6 +567,7 @@ func findPath(g *graphParams, r *restrictParams,
// TODO(halseth): also ignore disable flags for non-local // TODO(halseth): also ignore disable flags for non-local
// channels if bandwidth hint is set? // channels if bandwidth hint is set?
isSourceChan := fromVertex == sourceVertex isSourceChan := fromVertex == sourceVertex
edgeFlags := edge.ChannelFlags edgeFlags := edge.ChannelFlags
isDisabled := edgeFlags&lnwire.ChanUpdateDisabled != 0 isDisabled := edgeFlags&lnwire.ChanUpdateDisabled != 0
@ -570,6 +575,14 @@ func findPath(g *graphParams, r *restrictParams,
return return
} }
// If we have an outgoing channel restriction and this is not
// the specified channel, skip it.
if isSourceChan && r.outgoingChannelID != nil &&
*r.outgoingChannelID != edge.ChannelID {
return
}
// If this vertex or edge has been black listed, then we'll // If this vertex or edge has been black listed, then we'll
// skip exploring this edge. // skip exploring this edge.
if _, ok := r.ignoredNodes[fromVertex]; ok { if _, ok := r.ignoredNodes[fromVertex]; ok {

@ -1918,3 +1918,95 @@ func TestNewRouteFromEmptyHops(t *testing.T) {
t.Fatalf("expected empty hops error: instead got: %v", err) t.Fatalf("expected empty hops error: instead got: %v", err)
} }
} }
// TestRestrictOutgoingChannel asserts that a outgoing channel restriction is
// obeyed by the path finding algorithm.
func TestRestrictOutgoingChannel(t *testing.T) {
t.Parallel()
// Set up a test graph with three possible paths from roasbeef to
// target. The path through channel 2 is the highest cost path.
testChannels := []*testChannel{
symmetricTestChannel("roasbeef", "a", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 400,
MinHTLC: 1,
}, 1),
symmetricTestChannel("a", "target", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 400,
MinHTLC: 1,
}),
symmetricTestChannel("roasbeef", "b", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 800,
MinHTLC: 1,
}, 2),
symmetricTestChannel("roasbeef", "b", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 600,
MinHTLC: 1,
}, 3),
symmetricTestChannel("b", "target", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 400,
MinHTLC: 1,
}),
}
testGraphInstance, err := createTestGraphFromChannels(testChannels)
if err != nil {
t.Fatalf("unable to create graph: %v", err)
}
defer testGraphInstance.cleanUp()
sourceNode, err := testGraphInstance.graph.SourceNode()
if err != nil {
t.Fatalf("unable to fetch source node: %v", err)
}
sourceVertex := Vertex(sourceNode.PubKeyBytes)
ignoredEdges := make(map[edgeLocator]struct{})
ignoredVertexes := make(map[Vertex]struct{})
const (
startingHeight = 100
finalHopCLTV = 1
)
paymentAmt := lnwire.NewMSatFromSatoshis(100)
target := testGraphInstance.aliasMap["target"]
outgoingChannelID := uint64(2)
// Find the best path given the restriction to only use channel 2 as the
// outgoing channel.
path, err := findPath(
&graphParams{
graph: testGraphInstance.graph,
},
&restrictParams{
ignoredNodes: ignoredVertexes,
ignoredEdges: ignoredEdges,
feeLimit: noFeeLimit,
outgoingChannelID: &outgoingChannelID,
},
sourceNode, target, paymentAmt,
)
if err != nil {
t.Fatalf("unable to find path: %v", err)
}
route, err := newRoute(
paymentAmt, infinity, sourceVertex, path, startingHeight,
finalHopCLTV,
)
if err != nil {
t.Fatalf("unable to create path: %v", err)
}
// Assert that the route starts with channel 2, in line with the
// specified restriction.
if route.Hops[0].ChannelID != 2 {
t.Fatalf("expected route to pass through channel 2, "+
"but channel %v was selected instead", route.Hops[0].ChannelID)
}
}

@ -148,9 +148,10 @@ func (p *paymentSession) RequestRoute(payment *LightningPayment,
bandwidthHints: p.bandwidthHints, bandwidthHints: p.bandwidthHints,
}, },
&restrictParams{ &restrictParams{
ignoredNodes: pruneView.vertexes, ignoredNodes: pruneView.vertexes,
ignoredEdges: pruneView.edges, ignoredEdges: pruneView.edges,
feeLimit: payment.FeeLimit, feeLimit: payment.FeeLimit,
outgoingChannelID: payment.OutgoingChannelID,
}, },
p.mc.selfNode, payment.Target, payment.Amount, p.mc.selfNode, payment.Target, payment.Amount,
) )

@ -17,7 +17,7 @@ import (
"github.com/davecgh/go-spew/spew" "github.com/davecgh/go-spew/spew"
"github.com/go-errors/errors" "github.com/go-errors/errors"
"github.com/lightningnetwork/lightning-onion" sphinx "github.com/lightningnetwork/lightning-onion"
"github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/htlcswitch" "github.com/lightningnetwork/lnd/htlcswitch"
"github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/input"
@ -1612,6 +1612,10 @@ type LightningPayment struct {
// destination successfully. // destination successfully.
RouteHints [][]HopHint RouteHints [][]HopHint
// OutgoingChannelID is the channel that needs to be taken to the first
// hop. If nil, any channel may be used.
OutgoingChannelID *uint64
// TODO(roasbeef): add e2e message? // TODO(roasbeef): add e2e message?
} }

@ -2732,12 +2732,13 @@ func unmarshallSendToRouteRequest(req *lnrpc.SendToRouteRequest,
// hints), or we'll get a fully populated route from the user that we'll pass // hints), or we'll get a fully populated route from the user that we'll pass
// directly to the channel router for dispatching. // directly to the channel router for dispatching.
type rpcPaymentIntent struct { type rpcPaymentIntent struct {
msat lnwire.MilliSatoshi msat lnwire.MilliSatoshi
feeLimit lnwire.MilliSatoshi feeLimit lnwire.MilliSatoshi
dest *btcec.PublicKey dest *btcec.PublicKey
rHash [32]byte rHash [32]byte
cltvDelta uint16 cltvDelta uint16
routeHints [][]routing.HopHint routeHints [][]routing.HopHint
outgoingChannelID *uint64
routes []*routing.Route routes []*routing.Route
} }
@ -2771,6 +2772,12 @@ func extractPaymentIntent(rpcPayReq *rpcPaymentRequest) (rpcPaymentIntent, error
return payIntent, nil return payIntent, nil
} }
// If there are no routes specified, pass along a outgoing channel
// restriction if specified.
if rpcPayReq.OutgoingChanId != 0 {
payIntent.outgoingChannelID = &rpcPayReq.OutgoingChanId
}
// If the payment request field isn't blank, then the details of the // If the payment request field isn't blank, then the details of the
// invoice are encoded entirely within the encoded payReq. So we'll // invoice are encoded entirely within the encoded payReq. So we'll
// attempt to decode it, populating the payment accordingly. // attempt to decode it, populating the payment accordingly.
@ -2920,11 +2927,12 @@ func (r *rpcServer) dispatchPaymentIntent(
// router, otherwise we'll create a payment session to execute it. // router, otherwise we'll create a payment session to execute it.
if len(payIntent.routes) == 0 { if len(payIntent.routes) == 0 {
payment := &routing.LightningPayment{ payment := &routing.LightningPayment{
Target: payIntent.dest, Target: payIntent.dest,
Amount: payIntent.msat, Amount: payIntent.msat,
FeeLimit: payIntent.feeLimit, FeeLimit: payIntent.feeLimit,
PaymentHash: payIntent.rHash, PaymentHash: payIntent.rHash,
RouteHints: payIntent.routeHints, RouteHints: payIntent.routeHints,
OutgoingChannelID: payIntent.outgoingChannelID,
} }
// If the final CLTV value was specified, then we'll use that // If the final CLTV value was specified, then we'll use that