invoices: accept mpp payments

This commit is contained in:
Joost Jager 2019-09-03 12:23:39 +02:00
parent 56958493fe
commit b2f43858c3
No known key found for this signature in database
GPG Key ID: A61B9D4C393C59C7
10 changed files with 1125 additions and 594 deletions

@ -117,6 +117,7 @@ const (
resolveTimeType tlv.Type = 11
expiryHeightType tlv.Type = 13
htlcStateType tlv.Type = 15
mppTotalAmtType tlv.Type = 17
// A set of tlv type definitions used to serialize invoice bodiees.
//
@ -289,6 +290,10 @@ type InvoiceHTLC struct {
// Amt is the amount that is carried by this htlc.
Amt lnwire.MilliSatoshi
// MppTotalAmt is a field for mpp that indicates the expected total
// amount.
MppTotalAmt lnwire.MilliSatoshi
// AcceptHeight is the block height at which the invoice registry
// decided to accept this htlc as a payment to the invoice. At this
// height, the invoice cltv delay must have been met.
@ -323,6 +328,10 @@ type HtlcAcceptDesc struct {
// Amt is the amount that is carried by this htlc.
Amt lnwire.MilliSatoshi
// MppTotalAmt is a field for mpp that indicates the expected total
// amount.
MppTotalAmt lnwire.MilliSatoshi
// Expiry is the expiry height of this htlc.
Expiry uint32
@ -1018,6 +1027,7 @@ func serializeHtlcs(w io.Writer, htlcs map[CircuitKey]*InvoiceHTLC) error {
// Encode the htlc in a tlv stream.
chanID := key.ChanID.ToUint64()
amt := uint64(htlc.Amt)
mppTotalAmt := uint64(htlc.MppTotalAmt)
acceptTime := uint64(htlc.AcceptTime.UnixNano())
resolveTime := uint64(htlc.ResolveTime.UnixNano())
state := uint8(htlc.State)
@ -1034,6 +1044,7 @@ func serializeHtlcs(w io.Writer, htlcs map[CircuitKey]*InvoiceHTLC) error {
tlv.MakePrimitiveRecord(resolveTimeType, &resolveTime),
tlv.MakePrimitiveRecord(expiryHeightType, &htlc.Expiry),
tlv.MakePrimitiveRecord(htlcStateType, &state),
tlv.MakePrimitiveRecord(mppTotalAmtType, &mppTotalAmt),
)
// Convert the custom records to tlv.Record types that are ready
@ -1193,7 +1204,7 @@ func deserializeHtlcs(r io.Reader) (map[CircuitKey]*InvoiceHTLC, error) {
chanID uint64
state uint8
acceptTime, resolveTime uint64
amt uint64
amt, mppTotalAmt uint64
)
tlvStream, err := tlv.NewStream(
tlv.MakePrimitiveRecord(chanIDType, &chanID),
@ -1206,6 +1217,7 @@ func deserializeHtlcs(r io.Reader) (map[CircuitKey]*InvoiceHTLC, error) {
tlv.MakePrimitiveRecord(resolveTimeType, &resolveTime),
tlv.MakePrimitiveRecord(expiryHeightType, &htlc.Expiry),
tlv.MakePrimitiveRecord(htlcStateType, &state),
tlv.MakePrimitiveRecord(mppTotalAmtType, &mppTotalAmt),
)
if err != nil {
return nil, err
@ -1221,6 +1233,7 @@ func deserializeHtlcs(r io.Reader) (map[CircuitKey]*InvoiceHTLC, error) {
htlc.ResolveTime = time.Unix(0, int64(resolveTime))
htlc.State = HtlcState(state)
htlc.Amt = lnwire.MilliSatoshi(amt)
htlc.MppTotalAmt = lnwire.MilliSatoshi(mppTotalAmt)
// Reconstruct the custom records fields from the parsed types
// map return from the tlv parser.
@ -1324,6 +1337,7 @@ func (d *DB) updateInvoice(hash lntypes.Hash, invoices, settleIndex *bbolt.Bucke
htlc := &InvoiceHTLC{
Amt: htlcUpdate.Amt,
MppTotalAmt: htlcUpdate.MppTotalAmt,
Expiry: htlcUpdate.Expiry,
AcceptHeight: uint32(htlcUpdate.AcceptHeight),
AcceptTime: now,

@ -2,8 +2,10 @@ package invoices
import (
"errors"
"fmt"
"sync"
"sync/atomic"
"time"
"github.com/davecgh/go-spew/spew"
"github.com/lightningnetwork/lnd/channeldb"
@ -26,6 +28,12 @@ var (
ErrShuttingDown = errors.New("invoice registry shutting down")
)
const (
// DefaultHtlcHoldDuration defines the default for how long mpp htlcs
// are held while waiting for the other set members to arrive.
DefaultHtlcHoldDuration = 120 * time.Second
)
// HodlEvent describes how an htlc should be resolved. If HodlEvent.Preimage is
// set, the event indicates a settle event. If Preimage is nil, it is a cancel
// event.
@ -49,6 +57,38 @@ type RegistryConfig struct {
// expiry of any invoice we create and the code effectuating this should
// not be hit.
FinalCltvRejectDelta int32
// HtlcHoldDuration defines for how long mpp htlcs are held while
// waiting for the other set members to arrive.
HtlcHoldDuration time.Duration
// Now returns the current time.
Now func() time.Time
// TickAfter returns a channel that is sent on after the specified
// duration as passed.
TickAfter func(duration time.Duration) <-chan time.Time
}
// htlcReleaseEvent describes an htlc auto-release event. It is used to release
// mpp htlcs for which the complete set didn't arrive in time.
type htlcReleaseEvent struct {
// hash is the payment hash of the htlc to release.
hash lntypes.Hash
// key is the circuit key of the htlc to release.
key channeldb.CircuitKey
// releaseTime is the time at which to release the htlc.
releaseTime time.Time
}
// Less is used to order PriorityQueueItem's by their release time such that
// items with the older release time are at the top of the queue.
//
// NOTE: Part of the queue.PriorityQueueItem interface.
func (r *htlcReleaseEvent) Less(other queue.PriorityQueueItem) bool {
return r.releaseTime.Before(other.(*htlcReleaseEvent).releaseTime)
}
// InvoiceRegistry is a central registry of all the outstanding invoices
@ -82,6 +122,10 @@ type InvoiceRegistry struct {
// subscriber. This is used to unsubscribe from all hashes efficiently.
hodlReverseSubscriptions map[chan<- interface{}]map[channeldb.CircuitKey]struct{}
// htlcAutoReleaseChan contains the new htlcs that need to be
// auto-released.
htlcAutoReleaseChan chan *htlcReleaseEvent
wg sync.WaitGroup
quit chan struct{}
}
@ -91,7 +135,6 @@ type InvoiceRegistry struct {
// layer. The in-memory layer is in place such that debug invoices can be added
// which are volatile yet available system wide within the daemon.
func NewRegistry(cdb *channeldb.DB, cfg *RegistryConfig) *InvoiceRegistry {
return &InvoiceRegistry{
cdb: cdb,
notificationClients: make(map[uint32]*InvoiceSubscription),
@ -102,6 +145,7 @@ func NewRegistry(cdb *channeldb.DB, cfg *RegistryConfig) *InvoiceRegistry {
hodlSubscriptions: make(map[channeldb.CircuitKey]map[chan<- interface{}]struct{}),
hodlReverseSubscriptions: make(map[chan<- interface{}]map[channeldb.CircuitKey]struct{}),
cfg: cfg,
htlcAutoReleaseChan: make(chan *htlcReleaseEvent),
quit: make(chan struct{}),
}
}
@ -110,7 +154,7 @@ func NewRegistry(cdb *channeldb.DB, cfg *RegistryConfig) *InvoiceRegistry {
func (i *InvoiceRegistry) Start() error {
i.wg.Add(1)
go i.invoiceEventNotifier()
go i.invoiceEventLoop()
return nil
}
@ -130,13 +174,31 @@ type invoiceEvent struct {
invoice *channeldb.Invoice
}
// invoiceEventNotifier is the dedicated goroutine responsible for accepting
// tickAt returns a channel that ticks at the specified time. If the time has
// already passed, it will tick immediately.
func (i *InvoiceRegistry) tickAt(t time.Time) <-chan time.Time {
now := i.cfg.Now()
return i.cfg.TickAfter(t.Sub(now))
}
// invoiceEventLoop is the dedicated goroutine responsible for accepting
// new notification subscriptions, cancelling old subscriptions, and
// dispatching new invoice events.
func (i *InvoiceRegistry) invoiceEventNotifier() {
func (i *InvoiceRegistry) invoiceEventLoop() {
defer i.wg.Done()
// Set up a heap for htlc auto-releases.
autoReleaseHeap := &queue.PriorityQueue{}
for {
// If there is something to release, set up a release tick
// channel.
var nextReleaseTick <-chan time.Time
if autoReleaseHeap.Len() > 0 {
head := autoReleaseHeap.Top().(*htlcReleaseEvent)
nextReleaseTick = i.tickAt(head.releaseTime)
}
select {
// A new invoice subscription for all invoices has just arrived!
// We'll query for any backlog notifications, then add it to the
@ -202,6 +264,29 @@ func (i *InvoiceRegistry) invoiceEventNotifier() {
i.singleNotificationClients[e.id] = e
}
// A new htlc came in for auto-release.
case event := <-i.htlcAutoReleaseChan:
log.Debugf("Scheduling auto-release for htlc: "+
"hash=%v, key=%v at %v",
event.hash, event.key, event.releaseTime)
// We use an independent timer for every htlc rather
// than a set timer that is reset with every htlc coming
// in. Otherwise the sender could keep resetting the
// timer until the broadcast window is entered and our
// channel is force closed.
autoReleaseHeap.Push(event)
// The htlc at the top of the heap needs to be auto-released.
case <-nextReleaseTick:
event := autoReleaseHeap.Pop().(*htlcReleaseEvent)
err := i.cancelSingleHtlc(
event.hash, event.key,
)
if err != nil {
log.Errorf("HTLC timer: %v", err)
}
case <-i.quit:
return
}
@ -418,6 +503,114 @@ func (i *InvoiceRegistry) LookupInvoice(rHash lntypes.Hash) (channeldb.Invoice,
return i.cdb.LookupInvoice(rHash)
}
// startHtlcTimer starts a new timer via the invoice registry main loop that
// cancels a single htlc on an invoice when the htlc hold duration has passed.
func (i *InvoiceRegistry) startHtlcTimer(hash lntypes.Hash,
key channeldb.CircuitKey, acceptTime time.Time) error {
releaseTime := acceptTime.Add(i.cfg.HtlcHoldDuration)
event := &htlcReleaseEvent{
hash: hash,
key: key,
releaseTime: releaseTime,
}
select {
case i.htlcAutoReleaseChan <- event:
return nil
case <-i.quit:
return ErrShuttingDown
}
}
// cancelSingleHtlc cancels a single accepted htlc on an invoice.
func (i *InvoiceRegistry) cancelSingleHtlc(hash lntypes.Hash,
key channeldb.CircuitKey) error {
i.Lock()
defer i.Unlock()
updateInvoice := func(invoice *channeldb.Invoice) (
*channeldb.InvoiceUpdateDesc, error) {
// Only allow individual htlc cancelation on open invoices.
if invoice.State != channeldb.ContractOpen {
log.Debugf("cancelSingleHtlc: invoice %v no longer "+
"open", hash)
return nil, nil
}
// Lookup the current status of the htlc in the database.
htlc, ok := invoice.Htlcs[key]
if !ok {
return nil, fmt.Errorf("htlc %v not found", key)
}
// Cancelation is only possible if the htlc wasn't already
// resolved.
if htlc.State != channeldb.HtlcStateAccepted {
log.Debugf("cancelSingleHtlc: htlc %v on invoice %v "+
"is already resolved", key, hash)
return nil, nil
}
log.Debugf("cancelSingleHtlc: cancelling htlc %v on invoice %v",
key, hash)
// Return an update descriptor that cancels htlc and keeps
// invoice open.
canceledHtlcs := map[channeldb.CircuitKey]struct{}{
key: {},
}
return &channeldb.InvoiceUpdateDesc{
CancelHtlcs: canceledHtlcs,
}, nil
}
// Try to mark the specified htlc as canceled in the invoice database.
// Intercept the update descriptor to set the local updated variable. If
// no invoice update is performed, we can return early.
var updated bool
invoice, err := i.cdb.UpdateInvoice(hash,
func(invoice *channeldb.Invoice) (
*channeldb.InvoiceUpdateDesc, error) {
updateDesc, err := updateInvoice(invoice)
if err != nil {
return nil, err
}
updated = updateDesc != nil
return updateDesc, err
},
)
if err != nil {
return err
}
if !updated {
return nil
}
// The invoice has been updated. Notify subscribers of the htlc
// resolution.
htlc, ok := invoice.Htlcs[key]
if !ok {
return fmt.Errorf("htlc %v not found", key)
}
if htlc.State == channeldb.HtlcStateCanceled {
i.notifyHodlSubscribers(HodlEvent{
CircuitKey: key,
AcceptHeight: int32(htlc.AcceptHeight),
Preimage: nil,
})
}
return nil
}
// NotifyExitHopHtlc attempts to mark an invoice as settled. The return value
// describes how the htlc should be resolved.
//
@ -428,6 +621,11 @@ func (i *InvoiceRegistry) LookupInvoice(rHash lntypes.Hash) (channeldb.Invoice,
// to be taken on the htlc (settle or cancel). The caller needs to ensure that
// the channel is either buffered or received on from another goroutine to
// prevent deadlock.
//
// In the case that the htlc is part of a larger set of htlcs that pay to the
// same invoice (multi-path payment), the htlc is held until the set is
// complete. If the set doesn't fully arrive in time, a timer will cancel the
// held htlc.
func (i *InvoiceRegistry) NotifyExitHopHtlc(rHash lntypes.Hash,
amtPaid lnwire.MilliSatoshi, expiry uint32, currentHeight int32,
circuitKey channeldb.CircuitKey, hodlChan chan<- interface{},
@ -436,9 +634,11 @@ func (i *InvoiceRegistry) NotifyExitHopHtlc(rHash lntypes.Hash,
i.Lock()
defer i.Unlock()
mpp := payload.MultiPath()
debugLog := func(s string) {
log.Debugf("Invoice(%x): %v, amt=%v, expiry=%v, circuit=%v",
rHash[:], s, amtPaid, expiry, circuitKey)
log.Debugf("Invoice(%x): %v, amt=%v, expiry=%v, circuit=%v, "+
"mpp=%v", rHash[:], s, amtPaid, expiry, circuitKey, mpp)
}
// Create the update context containing the relevant details of the
@ -450,6 +650,7 @@ func (i *InvoiceRegistry) NotifyExitHopHtlc(rHash lntypes.Hash,
currentHeight: currentHeight,
finalCltvRejectDelta: i.cfg.FinalCltvRejectDelta,
customRecords: payload.CustomRecords(),
mpp: mpp,
}
// We'll attempt to settle an invoice matching this rHash on disk (if
@ -514,6 +715,21 @@ func (i *InvoiceRegistry) NotifyExitHopHtlc(rHash lntypes.Hash,
}, nil
case channeldb.HtlcStateSettled:
// Also settle any previously accepted htlcs. The invoice state
// is leading. If an htlc is marked as settled, we should follow
// now and settle the htlc with our peer.
for key, htlc := range invoice.Htlcs {
if htlc.State != channeldb.HtlcStateSettled {
continue
}
i.notifyHodlSubscribers(HodlEvent{
CircuitKey: key,
Preimage: &invoice.Terms.PaymentPreimage,
AcceptHeight: int32(htlc.AcceptHeight),
})
}
return &HodlEvent{
CircuitKey: circuitKey,
Preimage: &invoice.Terms.PaymentPreimage,
@ -521,6 +737,19 @@ func (i *InvoiceRegistry) NotifyExitHopHtlc(rHash lntypes.Hash,
}, nil
case channeldb.HtlcStateAccepted:
// (Re)start the htlc timer if the invoice is still open. It can
// only happen for mpp payments that there are htlcs in state
// Accepted while the invoice is Open.
if invoice.State == channeldb.ContractOpen {
err := i.startHtlcTimer(
rHash, circuitKey,
invoiceHtlc.AcceptTime,
)
if err != nil {
return nil, err
}
}
i.hodlSubscribe(hodlChan, circuitKey)
return nil, nil

@ -16,6 +16,8 @@ import (
var (
testTimeout = 5 * time.Second
testTime = time.Date(2018, time.February, 2, 14, 0, 0, 0, time.UTC)
preimage = lntypes.Preimage{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
@ -59,20 +61,27 @@ var (
type testContext struct {
registry *InvoiceRegistry
clock *testClock
cleanup func()
t *testing.T
}
func newTestContext(t *testing.T) *testContext {
clock := newTestClock(testTime)
cdb, cleanup, err := newDB()
if err != nil {
t.Fatal(err)
}
cdb.Now = clock.now
// Instantiate and start the invoice ctx.registry.
cfg := RegistryConfig{
FinalCltvRejectDelta: testFinalCltvRejectDelta,
HtlcHoldDuration: 30 * time.Second,
Now: clock.now,
TickAfter: clock.tickAfter,
}
registry := NewRegistry(cdb, &cfg)
@ -84,6 +93,7 @@ func newTestContext(t *testing.T) *testContext {
ctx := testContext{
registry: registry,
clock: clock,
t: t,
cleanup: func() {
registry.Stop()
@ -683,3 +693,85 @@ func (p *mockPayload) MultiPath() *record.MPP {
func (p *mockPayload) CustomRecords() hop.CustomRecordSet {
return make(hop.CustomRecordSet)
}
// TestSettleMpp tests settling of an invoice with multiple partial payments.
func TestSettleMpp(t *testing.T) {
defer timeout(t)()
ctx := newTestContext(t)
defer ctx.cleanup()
// Add the invoice.
_, err := ctx.registry.AddInvoice(testInvoice, hash)
if err != nil {
t.Fatal(err)
}
mppPayload := &mockPayload{
mpp: record.NewMPP(testInvoiceAmt, [32]byte{}),
}
// Send htlc 1.
hodlChan1 := make(chan interface{}, 1)
event, err := ctx.registry.NotifyExitHopHtlc(
hash, testInvoice.Terms.Value/2,
testHtlcExpiry,
testCurrentHeight, getCircuitKey(10), hodlChan1, mppPayload,
)
if err != nil {
t.Fatal(err)
}
if event != nil {
t.Fatal("expected no direct resolution")
}
// Simulate mpp timeout releasing htlc 1.
ctx.clock.setTime(testTime.Add(30 * time.Second))
hodlEvent := (<-hodlChan1).(HodlEvent)
if hodlEvent.Preimage != nil {
t.Fatal("expected cancel event")
}
// Send htlc 2.
hodlChan2 := make(chan interface{}, 1)
event, err = ctx.registry.NotifyExitHopHtlc(
hash, testInvoice.Terms.Value/2,
testHtlcExpiry,
testCurrentHeight, getCircuitKey(11), hodlChan2, mppPayload,
)
if err != nil {
t.Fatal(err)
}
if event != nil {
t.Fatal("expected no direct resolution")
}
// Send htlc 3.
hodlChan3 := make(chan interface{}, 1)
event, err = ctx.registry.NotifyExitHopHtlc(
hash, testInvoice.Terms.Value/2,
testHtlcExpiry,
testCurrentHeight, getCircuitKey(12), hodlChan3, mppPayload,
)
if err != nil {
t.Fatal(err)
}
if event == nil {
t.Fatal("expected a settle event")
}
// Check that settled amount is equal to the sum of values of the htlcs
// 0 and 1.
inv, err := ctx.registry.LookupInvoice(hash)
if err != nil {
t.Fatal(err)
}
if inv.State != channeldb.ContractSettled {
t.Fatal("expected invoice to be settled")
}
if inv.AmtPaid != testInvoice.Terms.Value {
t.Fatalf("amount incorrect, expected %v but got %v",
testInvoice.Terms.Value, inv.AmtPaid)
}
}

@ -7,6 +7,7 @@ import (
"github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/lnwire"
"github.com/lightningnetwork/lnd/record"
)
// updateResult is the result of the invoice update call.
@ -24,6 +25,13 @@ const (
resultDuplicateToSettled
resultAccepted
resultSettled
resultInvoiceNotOpen
resultPartialAccepted
resultMppInProgress
resultAddressMismatch
resultHtlcSetTotalMismatch
resultHtlcSetTotalTooLow
resultHtlcSetOverpayment
)
// String returns a human-readable representation of the invoice update result.
@ -63,6 +71,27 @@ func (u updateResult) String() string {
case resultSettled:
return "settled"
case resultInvoiceNotOpen:
return "invoice no longer open"
case resultPartialAccepted:
return "partial payment accepted"
case resultMppInProgress:
return "mpp reception in progress"
case resultAddressMismatch:
return "payment address mismatch"
case resultHtlcSetTotalMismatch:
return "htlc total amt doesn't match set total"
case resultHtlcSetTotalTooLow:
return "set total too low for invoice"
case resultHtlcSetOverpayment:
return "mpp is overpaying set total"
default:
return "unknown"
}
@ -77,6 +106,7 @@ type invoiceUpdateCtx struct {
currentHeight int32
finalCltvRejectDelta int32
customRecords hop.CustomRecordSet
mpp *record.MPP
}
// updateInvoice is a callback for DB.UpdateInvoice that contains the invoice
@ -102,8 +132,125 @@ func updateInvoice(ctx *invoiceUpdateCtx, inv *channeldb.Invoice) (
}
}
// If the invoice is already canceled, there is no further checking to
// do.
if ctx.mpp == nil {
return updateLegacy(ctx, inv)
}
return updateMpp(ctx, inv)
}
// updateMpp is a callback for DB.UpdateInvoice that contains the invoice
// settlement logic for mpp payments.
func updateMpp(ctx *invoiceUpdateCtx, inv *channeldb.Invoice) (
*channeldb.InvoiceUpdateDesc, updateResult, error) {
// Start building the accept descriptor.
acceptDesc := &channeldb.HtlcAcceptDesc{
Amt: ctx.amtPaid,
Expiry: ctx.expiry,
AcceptHeight: ctx.currentHeight,
MppTotalAmt: ctx.mpp.TotalMsat(),
CustomRecords: ctx.customRecords,
}
// Only accept payments to open invoices. This behaviour differs from
// non-mpp payments that are accepted even after the invoice is settled.
// Because non-mpp payments don't have a payment address, this is needed
// to thwart probing.
if inv.State != channeldb.ContractOpen {
return nil, resultInvoiceNotOpen, nil
}
// Check the payment address that authorizes the payment.
if ctx.mpp.PaymentAddr() != inv.Terms.PaymentAddr {
return nil, resultAddressMismatch, nil
}
// Don't accept zero-valued sets.
if ctx.mpp.TotalMsat() == 0 {
return nil, resultHtlcSetTotalTooLow, nil
}
// Check that the total amt of the htlc set is high enough. In case this
// is a zero-valued invoice, it will always be enough.
if ctx.mpp.TotalMsat() < inv.Terms.Value {
return nil, resultHtlcSetTotalTooLow, nil
}
// Check whether total amt matches other htlcs in the set.
var newSetTotal lnwire.MilliSatoshi
for _, htlc := range inv.Htlcs {
// Only consider accepted mpp htlcs. It is possible that there
// are htlcs registered in the invoice database that previously
// timed out and are in the canceled state now.
if htlc.State != channeldb.HtlcStateAccepted {
continue
}
if ctx.mpp.TotalMsat() != htlc.MppTotalAmt {
return nil, resultHtlcSetTotalMismatch, nil
}
newSetTotal += htlc.Amt
}
// Add amount of new htlc.
newSetTotal += ctx.amtPaid
// Make sure the communicated set total isn't overpaid.
if newSetTotal > ctx.mpp.TotalMsat() {
return nil, resultHtlcSetOverpayment, nil
}
// The invoice is still open. Check the expiry.
if ctx.expiry < uint32(ctx.currentHeight+ctx.finalCltvRejectDelta) {
return nil, resultExpiryTooSoon, nil
}
if ctx.expiry < uint32(ctx.currentHeight+inv.Terms.FinalCltvDelta) {
return nil, resultExpiryTooSoon, nil
}
// Record HTLC in the invoice database.
newHtlcs := map[channeldb.CircuitKey]*channeldb.HtlcAcceptDesc{
ctx.circuitKey: acceptDesc,
}
update := channeldb.InvoiceUpdateDesc{
AddHtlcs: newHtlcs,
}
// If the invoice cannot be settled yet, only record the htlc.
setComplete := newSetTotal == ctx.mpp.TotalMsat()
if !setComplete {
return &update, resultPartialAccepted, nil
}
// Check to see if we can settle or this is an hold invoice and
// we need to wait for the preimage.
holdInvoice := inv.Terms.PaymentPreimage == channeldb.UnknownPreimage
if holdInvoice {
update.State = &channeldb.InvoiceStateUpdateDesc{
NewState: channeldb.ContractAccepted,
}
return &update, resultAccepted, nil
}
update.State = &channeldb.InvoiceStateUpdateDesc{
NewState: channeldb.ContractSettled,
Preimage: inv.Terms.PaymentPreimage,
}
return &update, resultSettled, nil
}
// updateLegacy is a callback for DB.UpdateInvoice that contains the invoice
// settlement logic for legacy payments.
func updateLegacy(ctx *invoiceUpdateCtx, inv *channeldb.Invoice) (
*channeldb.InvoiceUpdateDesc, updateResult, error) {
// If the invoice is already canceled, there is no further
// checking to do.
if inv.State == channeldb.ContractCanceled {
return nil, resultInvoiceAlreadyCanceled, nil
}
@ -116,6 +263,20 @@ func updateInvoice(ctx *invoiceUpdateCtx, inv *channeldb.Invoice) (
return nil, resultAmountTooLow, nil
}
// TODO(joostjager): Check invoice mpp required feature
// bit when feature becomes mandatory.
// Don't allow settling the invoice with an old style
// htlc if we are already in the process of gathering an
// mpp set.
for _, htlc := range inv.Htlcs {
if htlc.State == channeldb.HtlcStateAccepted &&
htlc.MppTotalAmt > 0 {
return nil, resultMppInProgress, nil
}
}
// The invoice is still open. Check the expiry.
if ctx.expiry < uint32(ctx.currentHeight+ctx.finalCltvRejectDelta) {
return nil, resultExpiryTooSoon, nil

@ -83,6 +83,7 @@ func CreateRPCInvoice(invoice *channeldb.Invoice,
AmtMsat: uint64(htlc.Amt),
State: state,
CustomRecords: htlc.CustomRecords,
MppTotalAmtMsat: uint64(htlc.MppTotalAmt),
}
// Only report resolved times if htlc is resolved.

@ -7324,6 +7324,8 @@ type InvoiceHTLC struct {
State InvoiceHTLCState `protobuf:"varint,8,opt,name=state,proto3,enum=lnrpc.InvoiceHTLCState" json:"state,omitempty"`
/// Custom tlv records.
CustomRecords map[uint64][]byte `protobuf:"bytes,9,rep,name=custom_records,proto3" json:"custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
/// The total amount of the mpp payment in msat.
MppTotalAmtMsat uint64 `protobuf:"varint,10,opt,name=mpp_total_amt_msat,proto3" json:"mpp_total_amt_msat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -7417,6 +7419,13 @@ func (m *InvoiceHTLC) GetCustomRecords() map[uint64][]byte {
return nil
}
func (m *InvoiceHTLC) GetMppTotalAmtMsat() uint64 {
if m != nil {
return m.MppTotalAmtMsat
}
return 0
}
type AddInvoiceResponse struct {
RHash []byte `protobuf:"bytes,1,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
//*
@ -9793,573 +9802,573 @@ func init() {
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 9047 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x4d, 0x6c, 0x1c, 0x49,
0x96, 0x1f, 0xae, 0xfa, 0x20, 0x59, 0xf5, 0xaa, 0x48, 0x16, 0x83, 0x14, 0x59, 0xaa, 0x96, 0xd4,
0xea, 0x1c, 0x8d, 0xa4, 0xd6, 0xf4, 0x50, 0x6a, 0xce, 0x4c, 0xff, 0x7b, 0xbb, 0xff, 0xeb, 0x5d,
0x8a, 0xa4, 0x44, 0x75, 0x53, 0x14, 0x27, 0x29, 0x8d, 0x3c, 0x33, 0xbb, 0xc8, 0x49, 0x56, 0x05,
0xc9, 0x1c, 0x55, 0x65, 0x56, 0x67, 0x66, 0x91, 0xe2, 0xb4, 0xdb, 0x07, 0xc3, 0x30, 0x0c, 0x5f,
0x16, 0x63, 0xc3, 0x80, 0x6d, 0xd8, 0x58, 0x60, 0xd6, 0x80, 0xb1, 0xf0, 0xc1, 0xbe, 0x18, 0xf0,
0x1a, 0xeb, 0x93, 0x0f, 0x0b, 0x18, 0x30, 0x7c, 0xb0, 0x01, 0x03, 0x36, 0xb0, 0x86, 0x61, 0x03,
0xf6, 0xc2, 0xf0, 0xcd, 0xbe, 0x1b, 0xef, 0xc5, 0x47, 0x46, 0x64, 0x66, 0x49, 0xea, 0x99, 0xf1,
0x9e, 0x58, 0xf1, 0x8b, 0xc8, 0xf8, 0x7c, 0xef, 0xc5, 0x8b, 0xf7, 0x5e, 0x04, 0xa1, 0x19, 0x8f,
0xfb, 0xeb, 0xe3, 0x38, 0x4a, 0x23, 0x36, 0x33, 0x0c, 0xe3, 0x71, 0xbf, 0x77, 0xf5, 0x24, 0x8a,
0x4e, 0x86, 0xfc, 0x9e, 0x3f, 0x0e, 0xee, 0xf9, 0x61, 0x18, 0xa5, 0x7e, 0x1a, 0x44, 0x61, 0x22,
0x0a, 0x39, 0x3f, 0x81, 0x85, 0x47, 0x3c, 0x3c, 0xe4, 0x7c, 0xe0, 0xf2, 0x2f, 0x26, 0x3c, 0x49,
0xd9, 0xb7, 0x60, 0xc9, 0xe7, 0x3f, 0xe3, 0x7c, 0xe0, 0x8d, 0xfd, 0x24, 0x19, 0x9f, 0xc6, 0x7e,
0xc2, 0xbb, 0x95, 0x1b, 0x95, 0x3b, 0x6d, 0xb7, 0x23, 0x32, 0x0e, 0x34, 0xce, 0xde, 0x83, 0x76,
0x82, 0x45, 0x79, 0x98, 0xc6, 0xd1, 0xf8, 0xa2, 0x5b, 0xa5, 0x72, 0x2d, 0xc4, 0x76, 0x04, 0xe4,
0x0c, 0x61, 0x51, 0xb7, 0x90, 0x8c, 0xa3, 0x30, 0xe1, 0xec, 0x3e, 0xac, 0xf4, 0x83, 0xf1, 0x29,
0x8f, 0x3d, 0xfa, 0x78, 0x14, 0xf2, 0x51, 0x14, 0x06, 0xfd, 0x6e, 0xe5, 0x46, 0xed, 0x4e, 0xd3,
0x65, 0x22, 0x0f, 0xbf, 0x78, 0x22, 0x73, 0xd8, 0x6d, 0x58, 0xe4, 0xa1, 0xc0, 0xf9, 0x80, 0xbe,
0x92, 0x4d, 0x2d, 0x64, 0x30, 0x7e, 0xe0, 0xfc, 0xf5, 0x2a, 0x2c, 0x3d, 0x0e, 0x83, 0xf4, 0x85,
0x3f, 0x1c, 0xf2, 0x54, 0x8d, 0xe9, 0x36, 0x2c, 0x9e, 0x13, 0x40, 0x63, 0x3a, 0x8f, 0xe2, 0x81,
0x1c, 0xd1, 0x82, 0x80, 0x0f, 0x24, 0x3a, 0xb5, 0x67, 0xd5, 0xa9, 0x3d, 0x2b, 0x9d, 0xae, 0xda,
0x94, 0xe9, 0xba, 0x0d, 0x8b, 0x31, 0xef, 0x47, 0x67, 0x3c, 0xbe, 0xf0, 0xce, 0x83, 0x70, 0x10,
0x9d, 0x77, 0xeb, 0x37, 0x2a, 0x77, 0x66, 0xdc, 0x05, 0x05, 0xbf, 0x20, 0x94, 0x3d, 0x80, 0xc5,
0xfe, 0xa9, 0x1f, 0x86, 0x7c, 0xe8, 0x1d, 0xf9, 0xfd, 0x97, 0x93, 0x71, 0xd2, 0x9d, 0xb9, 0x51,
0xb9, 0xd3, 0xda, 0xb8, 0xb2, 0x4e, 0xab, 0xba, 0xbe, 0x75, 0xea, 0x87, 0x0f, 0x28, 0xe7, 0x30,
0xf4, 0xc7, 0xc9, 0x69, 0x94, 0xba, 0x0b, 0xf2, 0x0b, 0x01, 0x27, 0xce, 0x0a, 0x30, 0x73, 0x26,
0xc4, 0xdc, 0x3b, 0xff, 0xb8, 0x02, 0xcb, 0xcf, 0xc3, 0x61, 0xd4, 0x7f, 0xf9, 0x4b, 0x4e, 0x51,
0xc9, 0x18, 0xaa, 0x6f, 0x3b, 0x86, 0xda, 0xd7, 0x1d, 0xc3, 0x2a, 0xac, 0xd8, 0x9d, 0x95, 0xa3,
0xe0, 0x70, 0x19, 0xbf, 0x3e, 0xe1, 0xaa, 0x5b, 0x6a, 0x18, 0xef, 0x43, 0xa7, 0x3f, 0x89, 0x63,
0x1e, 0x16, 0xc6, 0xb1, 0x28, 0x71, 0x3d, 0x90, 0xf7, 0xa0, 0x1d, 0xf2, 0xf3, 0xac, 0x98, 0xa4,
0xdd, 0x90, 0x9f, 0xab, 0x22, 0x4e, 0x17, 0x56, 0xf3, 0xcd, 0xc8, 0x0e, 0xfc, 0x97, 0x0a, 0xd4,
0x9f, 0xa7, 0xaf, 0x22, 0xb6, 0x0e, 0xf5, 0xf4, 0x62, 0x2c, 0x38, 0x64, 0x61, 0x83, 0xc9, 0xa1,
0x6d, 0x0e, 0x06, 0x31, 0x4f, 0x92, 0x67, 0x17, 0x63, 0xee, 0xb6, 0x7d, 0x91, 0xf0, 0xb0, 0x1c,
0xeb, 0xc2, 0x9c, 0x4c, 0x53, 0x83, 0x4d, 0x57, 0x25, 0xd9, 0x75, 0x00, 0x7f, 0x14, 0x4d, 0xc2,
0xd4, 0x4b, 0xfc, 0x94, 0xa6, 0xaa, 0xe6, 0x1a, 0x08, 0xbb, 0x0a, 0xcd, 0xf1, 0x4b, 0x2f, 0xe9,
0xc7, 0xc1, 0x38, 0x25, 0xb2, 0x69, 0xba, 0x19, 0xc0, 0xbe, 0x05, 0x8d, 0x68, 0x92, 0x8e, 0xa3,
0x20, 0x4c, 0x25, 0xa9, 0x2c, 0xca, 0xbe, 0x3c, 0x9d, 0xa4, 0x07, 0x08, 0xbb, 0xba, 0x00, 0xbb,
0x09, 0xf3, 0xfd, 0x28, 0x3c, 0x0e, 0xe2, 0x91, 0x10, 0x06, 0xdd, 0x59, 0x6a, 0xcd, 0x06, 0x9d,
0x3f, 0xaa, 0x42, 0xeb, 0x59, 0xec, 0x87, 0x89, 0xdf, 0x47, 0x00, 0xbb, 0x9e, 0xbe, 0xf2, 0x4e,
0xfd, 0xe4, 0x94, 0x46, 0xdb, 0x74, 0x55, 0x92, 0xad, 0xc2, 0xac, 0xe8, 0x28, 0x8d, 0xa9, 0xe6,
0xca, 0x14, 0xfb, 0x00, 0x96, 0xc2, 0xc9, 0xc8, 0xb3, 0xdb, 0xaa, 0x11, 0xb5, 0x14, 0x33, 0x70,
0x02, 0x8e, 0x70, 0xad, 0x45, 0x13, 0x62, 0x84, 0x06, 0xc2, 0x1c, 0x68, 0xcb, 0x14, 0x0f, 0x4e,
0x4e, 0xc5, 0x30, 0x67, 0x5c, 0x0b, 0xc3, 0x3a, 0xd2, 0x60, 0xc4, 0xbd, 0x24, 0xf5, 0x47, 0x63,
0x39, 0x2c, 0x03, 0xa1, 0xfc, 0x28, 0xf5, 0x87, 0xde, 0x31, 0xe7, 0x49, 0x77, 0x4e, 0xe6, 0x6b,
0x84, 0xdd, 0x82, 0x85, 0x01, 0x4f, 0x52, 0x4f, 0x2e, 0x0a, 0x4f, 0xba, 0x0d, 0x62, 0xfd, 0x1c,
0x8a, 0xf5, 0xc4, 0xfe, 0xb9, 0x87, 0x13, 0xc0, 0x5f, 0x75, 0x9b, 0xa2, 0xaf, 0x19, 0x82, 0x94,
0xf3, 0x88, 0xa7, 0xc6, 0xec, 0x25, 0x92, 0x42, 0x9d, 0x3d, 0x60, 0x06, 0xbc, 0xcd, 0x53, 0x3f,
0x18, 0x26, 0xec, 0x23, 0x68, 0xa7, 0x46, 0x61, 0x12, 0x85, 0x2d, 0x4d, 0x4e, 0xc6, 0x07, 0xae,
0x55, 0xce, 0x39, 0x85, 0xc6, 0x43, 0xce, 0xf7, 0x82, 0x51, 0x90, 0xb2, 0x55, 0x98, 0x39, 0x0e,
0x5e, 0x71, 0x41, 0xf0, 0xb5, 0xdd, 0x4b, 0xae, 0x48, 0xb2, 0x77, 0x01, 0xe8, 0x87, 0x37, 0xd2,
0x84, 0xb5, 0x7b, 0xc9, 0x6d, 0x12, 0xf6, 0x04, 0x29, 0xab, 0x07, 0x73, 0x63, 0x1e, 0xf7, 0xb9,
0x5a, 0xbf, 0xdd, 0x4b, 0xae, 0x02, 0x1e, 0xcc, 0xc1, 0xcc, 0x10, 0x6b, 0x77, 0x7e, 0x6f, 0x06,
0x5a, 0x87, 0x3c, 0xd4, 0x9c, 0xc6, 0xa0, 0x8e, 0x73, 0x22, 0xb9, 0x8b, 0x7e, 0xb3, 0x6f, 0x40,
0x8b, 0xe6, 0x29, 0x49, 0xe3, 0x20, 0x3c, 0x11, 0x04, 0xfe, 0xa0, 0xda, 0xad, 0xb8, 0x80, 0xf0,
0x21, 0xa1, 0xac, 0x03, 0x35, 0x7f, 0xa4, 0x08, 0x1c, 0x7f, 0xb2, 0x2b, 0xd0, 0xf0, 0x47, 0xa9,
0xe8, 0x5e, 0x9b, 0xe0, 0x39, 0x7f, 0x94, 0x52, 0xd7, 0xde, 0x83, 0xf6, 0xd8, 0xbf, 0x18, 0x21,
0x3f, 0x6b, 0xaa, 0x68, 0xbb, 0x2d, 0x89, 0xed, 0x22, 0x59, 0x6c, 0xc0, 0xb2, 0x59, 0x44, 0x35,
0x3e, 0xa3, 0x1b, 0x5f, 0x32, 0x4a, 0xcb, 0x3e, 0xdc, 0x86, 0x45, 0xf5, 0x4d, 0x2c, 0xc6, 0x43,
0xb4, 0xd2, 0x74, 0x17, 0x24, 0xac, 0x46, 0x79, 0x07, 0x3a, 0xc7, 0x41, 0xe8, 0x0f, 0xbd, 0xfe,
0x30, 0x3d, 0xf3, 0x06, 0x7c, 0x98, 0xfa, 0x44, 0x35, 0x33, 0xee, 0x02, 0xe1, 0x5b, 0xc3, 0xf4,
0x6c, 0x1b, 0x51, 0xf6, 0x01, 0x34, 0x8f, 0x39, 0xf7, 0x68, 0xb2, 0xba, 0x0d, 0x8b, 0x03, 0xd5,
0x0a, 0xb9, 0x8d, 0x63, 0xb5, 0x56, 0x1f, 0x40, 0x27, 0x9a, 0xa4, 0x27, 0x51, 0x10, 0x9e, 0x78,
0x28, 0xf3, 0xbc, 0x60, 0x40, 0x54, 0x54, 0x7f, 0x50, 0xbd, 0x5f, 0x71, 0x17, 0x54, 0x1e, 0x4a,
0x9f, 0xc7, 0x03, 0x76, 0x0b, 0x16, 0x87, 0x7e, 0x92, 0x7a, 0xa7, 0xd1, 0xd8, 0x1b, 0x4f, 0x8e,
0x5e, 0xf2, 0x8b, 0xee, 0x3c, 0x4d, 0xc4, 0x3c, 0xc2, 0xbb, 0xd1, 0xf8, 0x80, 0x40, 0x76, 0x0d,
0x80, 0xfa, 0x29, 0x3a, 0x01, 0x37, 0x2a, 0x77, 0xe6, 0xdd, 0x26, 0x22, 0xa2, 0xd1, 0x1f, 0xc2,
0x32, 0x2d, 0x4f, 0x7f, 0x92, 0xa4, 0xd1, 0xc8, 0x43, 0x79, 0x1d, 0x0f, 0x92, 0x6e, 0x8b, 0x68,
0xed, 0x7d, 0xd9, 0x59, 0x63, 0x8d, 0xd7, 0xb7, 0x79, 0x92, 0x6e, 0x51, 0x61, 0x57, 0x94, 0xc5,
0x4d, 0xfd, 0xc2, 0x5d, 0x1a, 0xe4, 0x71, 0xf6, 0x01, 0x30, 0x7f, 0x38, 0x8c, 0xce, 0xbd, 0x84,
0x0f, 0x8f, 0x3d, 0x39, 0x89, 0xdd, 0x85, 0x1b, 0x95, 0x3b, 0x0d, 0xb7, 0x43, 0x39, 0x87, 0x7c,
0x78, 0x7c, 0x20, 0xf0, 0xde, 0x36, 0xac, 0x96, 0x57, 0x8d, 0xc4, 0x81, 0xa3, 0x43, 0xa2, 0xaa,
0xbb, 0xf8, 0x93, 0xad, 0xc0, 0xcc, 0x99, 0x3f, 0x9c, 0x70, 0x29, 0x9f, 0x45, 0xe2, 0x93, 0xea,
0xc7, 0x15, 0xe7, 0x9f, 0x57, 0xa0, 0x2d, 0x7a, 0x2b, 0xf5, 0x8a, 0x9b, 0x30, 0xaf, 0x56, 0x95,
0xc7, 0x71, 0x14, 0x4b, 0x31, 0x65, 0x83, 0xec, 0x2e, 0x74, 0x14, 0x30, 0x8e, 0x79, 0x30, 0xf2,
0x4f, 0x54, 0xdd, 0x05, 0x9c, 0x6d, 0x64, 0x35, 0xc6, 0xd1, 0x24, 0xe5, 0x72, 0x07, 0x6b, 0xcb,
0xb9, 0x72, 0x11, 0x73, 0xed, 0x22, 0x28, 0xa6, 0x4a, 0x48, 0xd6, 0xc2, 0x9c, 0xbf, 0x5d, 0x01,
0x86, 0x5d, 0x7f, 0x16, 0x89, 0x2a, 0x24, 0xb5, 0xe5, 0xa9, 0xbd, 0xf2, 0xd6, 0xd4, 0x5e, 0x7d,
0x1d, 0xb5, 0x3b, 0x30, 0x23, 0x7a, 0x5f, 0x2f, 0xe9, 0xbd, 0xc8, 0xfa, 0xac, 0xde, 0xa8, 0x75,
0xea, 0xce, 0x7f, 0xac, 0xc1, 0xca, 0x96, 0xd8, 0x82, 0x37, 0xfb, 0x7d, 0x3e, 0xd6, 0x7c, 0xf0,
0x2e, 0xb4, 0xc2, 0x68, 0xc0, 0x15, 0xf5, 0x89, 0x8e, 0x01, 0x42, 0x06, 0xe9, 0x9d, 0xfa, 0x41,
0x28, 0x3a, 0x2e, 0xe6, 0xb3, 0x49, 0x08, 0x75, 0xfb, 0x16, 0x2c, 0x8e, 0x79, 0x38, 0x30, 0xc9,
0x5d, 0x28, 0x49, 0xf3, 0x12, 0x96, 0x94, 0xfe, 0x2e, 0xb4, 0x8e, 0x27, 0xa2, 0x1c, 0x0a, 0x89,
0x3a, 0xd1, 0x01, 0x48, 0x68, 0x53, 0xc8, 0x8a, 0xf1, 0x24, 0x39, 0xa5, 0xdc, 0x19, 0xca, 0x9d,
0xc3, 0x34, 0x66, 0x5d, 0x03, 0x18, 0x4c, 0x92, 0x54, 0x52, 0xff, 0x2c, 0x65, 0x36, 0x11, 0x11,
0xd4, 0xff, 0x6d, 0x58, 0x1e, 0xf9, 0xaf, 0x3c, 0xa2, 0x1f, 0x2f, 0x08, 0xbd, 0xe3, 0x21, 0xed,
0x22, 0x73, 0x54, 0xae, 0x33, 0xf2, 0x5f, 0xfd, 0x00, 0x73, 0x1e, 0x87, 0x0f, 0x09, 0x47, 0x11,
0xa1, 0xd4, 0x97, 0x98, 0x27, 0x3c, 0x3e, 0xe3, 0xc4, 0xd5, 0x75, 0xad, 0xa3, 0xb8, 0x02, 0xc5,
0x1e, 0x8d, 0x70, 0xdc, 0xe9, 0xb0, 0x2f, 0x58, 0xd8, 0x9d, 0x1b, 0x05, 0xe1, 0x6e, 0x3a, 0xec,
0xb3, 0xab, 0x00, 0x28, 0x13, 0xc6, 0x3c, 0xf6, 0x5e, 0x9e, 0x13, 0x3f, 0xd6, 0x49, 0x06, 0x1c,
0xf0, 0xf8, 0xf3, 0x73, 0xf6, 0x0e, 0x34, 0xfb, 0x09, 0x09, 0x15, 0xff, 0xa2, 0xdb, 0x22, 0x66,
0x6d, 0xf4, 0x13, 0x14, 0x27, 0xfe, 0x05, 0x32, 0x14, 0xf6, 0xd6, 0xa7, 0x55, 0xe0, 0x03, 0xaa,
0x3e, 0x21, 0xe9, 0x38, 0x4f, 0x9d, 0xdd, 0x94, 0x19, 0xd8, 0x4e, 0xc2, 0xbe, 0x01, 0xf3, 0xaa,
0xb3, 0xc7, 0x43, 0xff, 0x24, 0x21, 0xf1, 0x30, 0xef, 0xb6, 0x25, 0xf8, 0x10, 0x31, 0xe7, 0x85,
0x50, 0x9a, 0x8c, 0xb5, 0x95, 0x7c, 0x83, 0xdb, 0x37, 0x21, 0xb4, 0xae, 0x0d, 0x57, 0xa6, 0xca,
0x16, 0xad, 0x5a, 0xb2, 0x68, 0xce, 0x2f, 0x2a, 0xd0, 0x96, 0x35, 0x93, 0xa6, 0xc1, 0xee, 0x03,
0x53, 0xab, 0x98, 0xbe, 0x0a, 0x06, 0xde, 0xd1, 0x45, 0xca, 0x13, 0x41, 0x34, 0xbb, 0x97, 0xdc,
0x92, 0x3c, 0x94, 0x87, 0x16, 0x9a, 0xa4, 0xb1, 0xa0, 0xe9, 0xdd, 0x4b, 0x6e, 0x21, 0x07, 0x59,
0x0c, 0x75, 0x99, 0x49, 0xea, 0x05, 0xe1, 0x80, 0xbf, 0x22, 0x52, 0x9a, 0x77, 0x2d, 0xec, 0xc1,
0x02, 0xb4, 0xcd, 0xef, 0x9c, 0x9f, 0x42, 0x43, 0x69, 0x42, 0xa4, 0x05, 0xe4, 0xfa, 0xe5, 0x1a,
0x08, 0xeb, 0x41, 0xc3, 0xee, 0x85, 0xdb, 0xf8, 0x3a, 0x6d, 0x3b, 0x7f, 0x01, 0x3a, 0x7b, 0x48,
0x44, 0x21, 0x12, 0xad, 0x54, 0xef, 0x56, 0x61, 0xd6, 0x60, 0x9e, 0xa6, 0x2b, 0x53, 0xb8, 0x8f,
0x9e, 0x46, 0x49, 0x2a, 0xdb, 0xa1, 0xdf, 0xce, 0x9f, 0x54, 0x80, 0xed, 0x24, 0x69, 0x30, 0xf2,
0x53, 0xfe, 0x90, 0x6b, 0xf1, 0xf0, 0x14, 0xda, 0x58, 0xdb, 0xb3, 0x68, 0x53, 0x28, 0x5b, 0x42,
0x49, 0xf8, 0x96, 0x64, 0xe7, 0xe2, 0x07, 0xeb, 0x66, 0x69, 0x21, 0xba, 0xad, 0x0a, 0x90, 0xdb,
0x52, 0x3f, 0x3e, 0xe1, 0x29, 0x69, 0x62, 0x52, 0x8f, 0x07, 0x01, 0x6d, 0x45, 0xe1, 0x71, 0xef,
0xb7, 0x60, 0xa9, 0x50, 0x87, 0x29, 0xa3, 0x9b, 0x25, 0x32, 0xba, 0x66, 0xca, 0xe8, 0x3e, 0x2c,
0x5b, 0xfd, 0x92, 0x14, 0xd7, 0x85, 0x39, 0x64, 0x0c, 0xdc, 0xf0, 0x2b, 0x62, 0xc3, 0x97, 0x49,
0xb6, 0x01, 0x2b, 0xc7, 0x9c, 0xc7, 0x7e, 0x4a, 0x49, 0x62, 0x1d, 0x5c, 0x13, 0x59, 0x73, 0x69,
0x9e, 0xf3, 0x5f, 0x2b, 0xb0, 0x88, 0xd2, 0xf4, 0x89, 0x1f, 0x5e, 0xa8, 0xb9, 0xda, 0x2b, 0x9d,
0xab, 0x3b, 0xc6, 0x26, 0x67, 0x94, 0xfe, 0xba, 0x13, 0x55, 0xcb, 0x4f, 0x14, 0xbb, 0x01, 0x6d,
0xab, 0xbb, 0x33, 0x42, 0xb3, 0x4c, 0xfc, 0xf4, 0x80, 0xc7, 0x0f, 0x2e, 0x52, 0xfe, 0xab, 0x4f,
0xe5, 0x2d, 0xe8, 0x64, 0xdd, 0x96, 0xf3, 0xc8, 0xa0, 0x8e, 0x84, 0x29, 0x2b, 0xa0, 0xdf, 0xce,
0xdf, 0xaf, 0x88, 0x82, 0x5b, 0x51, 0xa0, 0xb5, 0x4e, 0x2c, 0x88, 0xca, 0xab, 0x2a, 0x88, 0xbf,
0xa7, 0x6a, 0xed, 0xbf, 0xfa, 0x60, 0x51, 0x26, 0x26, 0x3c, 0x1c, 0x78, 0xfe, 0x70, 0x48, 0x82,
0xb8, 0xe1, 0xce, 0x61, 0x7a, 0x73, 0x38, 0x74, 0x6e, 0xc3, 0x92, 0xd1, 0xbb, 0xd7, 0x8c, 0x63,
0x1f, 0xd8, 0x5e, 0x90, 0xa4, 0xcf, 0xc3, 0x64, 0x6c, 0x28, 0x64, 0xef, 0x40, 0x13, 0xa5, 0x2d,
0xf6, 0x4c, 0x70, 0xee, 0x8c, 0x8b, 0xe2, 0x17, 0xfb, 0x95, 0x50, 0xa6, 0xff, 0x4a, 0x66, 0x56,
0x65, 0xa6, 0xff, 0x8a, 0x32, 0x9d, 0x8f, 0x61, 0xd9, 0xaa, 0x4f, 0x36, 0xfd, 0x1e, 0xcc, 0x4c,
0xd2, 0x57, 0x91, 0x52, 0xb9, 0x5b, 0x92, 0x42, 0xf0, 0x70, 0xe7, 0x8a, 0x1c, 0xe7, 0x53, 0x58,
0xda, 0xe7, 0xe7, 0x92, 0x91, 0x55, 0x47, 0x6e, 0xbd, 0xf1, 0xe0, 0x47, 0xf9, 0xce, 0x3a, 0x30,
0xf3, 0xe3, 0x8c, 0x01, 0xd4, 0x31, 0xb0, 0x62, 0x1d, 0x03, 0x9d, 0x5b, 0xc0, 0x0e, 0x83, 0x93,
0xf0, 0x09, 0x4f, 0x12, 0xff, 0x44, 0xb3, 0x7e, 0x07, 0x6a, 0xa3, 0xe4, 0x44, 0x8a, 0x2a, 0xfc,
0xe9, 0x7c, 0x07, 0x96, 0xad, 0x72, 0xb2, 0xe2, 0xab, 0xd0, 0x4c, 0x82, 0x93, 0xd0, 0x4f, 0x27,
0x31, 0x97, 0x55, 0x67, 0x80, 0xf3, 0x10, 0x56, 0x7e, 0xc0, 0xe3, 0xe0, 0xf8, 0xe2, 0x4d, 0xd5,
0xdb, 0xf5, 0x54, 0xf3, 0xf5, 0xec, 0xc0, 0xe5, 0x5c, 0x3d, 0xb2, 0x79, 0x41, 0xbe, 0x72, 0x25,
0x1b, 0xae, 0x48, 0x18, 0xb2, 0xaf, 0x6a, 0xca, 0x3e, 0xe7, 0x39, 0xb0, 0xad, 0x28, 0x0c, 0x79,
0x3f, 0x3d, 0xe0, 0x3c, 0xce, 0x2c, 0x50, 0x19, 0xad, 0xb6, 0x36, 0xd6, 0xe4, 0xcc, 0xe6, 0x05,
0xaa, 0x24, 0x62, 0x06, 0xf5, 0x31, 0x8f, 0x47, 0x54, 0x71, 0xc3, 0xa5, 0xdf, 0xce, 0x65, 0x58,
0xb6, 0xaa, 0x95, 0x67, 0xf6, 0x0f, 0xe1, 0xf2, 0x76, 0x90, 0xf4, 0x8b, 0x0d, 0x76, 0x61, 0x6e,
0x3c, 0x39, 0xf2, 0x32, 0x4e, 0x54, 0x49, 0x3c, 0xc6, 0xe5, 0x3f, 0x91, 0x95, 0xfd, 0xb5, 0x0a,
0xd4, 0x77, 0x9f, 0xed, 0x6d, 0xe1, 0x5e, 0x11, 0x84, 0xfd, 0x68, 0x84, 0x5a, 0x98, 0x18, 0xb4,
0x4e, 0x4f, 0xe5, 0xb0, 0xab, 0xd0, 0x24, 0xe5, 0x0d, 0x4f, 0xae, 0x52, 0x0f, 0xca, 0x00, 0x3c,
0x35, 0xf3, 0x57, 0xe3, 0x20, 0xa6, 0x63, 0xb1, 0x3a, 0xec, 0xd6, 0x69, 0x9b, 0x29, 0x66, 0x38,
0xbf, 0x98, 0x83, 0x39, 0xb9, 0xf9, 0x8a, 0x8d, 0x3c, 0x0d, 0xce, 0x78, 0xb6, 0x91, 0x63, 0x0a,
0x15, 0xe3, 0x98, 0x8f, 0xa2, 0x54, 0xeb, 0x6f, 0x62, 0x19, 0x6c, 0x90, 0xac, 0x02, 0x52, 0x89,
0x10, 0x76, 0x84, 0x9a, 0x28, 0x65, 0x81, 0xec, 0x2a, 0xcc, 0x29, 0x65, 0xa0, 0xae, 0x0f, 0x2c,
0x0a, 0xc2, 0xd9, 0xe8, 0xfb, 0x63, 0xbf, 0x1f, 0xa4, 0x17, 0x52, 0x2c, 0xe8, 0x34, 0xd6, 0x3f,
0x8c, 0xfa, 0xfe, 0xd0, 0x3b, 0xf2, 0x87, 0x7e, 0xd8, 0xe7, 0xca, 0xea, 0x60, 0x81, 0x78, 0x02,
0x97, 0xdd, 0x52, 0xc5, 0xc4, 0x29, 0x3d, 0x87, 0xe2, 0x1e, 0xde, 0x8f, 0x46, 0xa3, 0x20, 0xc5,
0x83, 0x3b, 0xa9, 0x66, 0x35, 0xd7, 0x40, 0x84, 0x8d, 0x83, 0x52, 0xe7, 0x62, 0x06, 0x9b, 0xca,
0xc6, 0x61, 0x80, 0x58, 0x4b, 0x4e, 0x43, 0xab, 0xb9, 0x06, 0x82, 0x6b, 0x31, 0x09, 0x13, 0x9e,
0xa6, 0x43, 0x3e, 0xd0, 0x1d, 0x6a, 0x51, 0xb1, 0x62, 0x06, 0xbb, 0x0f, 0xcb, 0xc2, 0x96, 0x90,
0xf8, 0x69, 0x94, 0x9c, 0x06, 0x89, 0x97, 0xe0, 0x31, 0x48, 0x9c, 0x69, 0xcb, 0xb2, 0xd8, 0xc7,
0xb0, 0x96, 0x83, 0x63, 0xde, 0xe7, 0xc1, 0x19, 0x1f, 0x90, 0x0a, 0x57, 0x73, 0xa7, 0x65, 0xb3,
0x1b, 0xd0, 0x0a, 0x27, 0x23, 0x6f, 0x32, 0x1e, 0xf8, 0xa8, 0xc4, 0x2c, 0x90, 0x72, 0x69, 0x42,
0xec, 0x43, 0x50, 0x7a, 0x9a, 0xd4, 0x1e, 0x17, 0x2d, 0x09, 0x87, 0xd4, 0xeb, 0xda, 0x25, 0x90,
0x30, 0x33, 0x95, 0xb4, 0x23, 0xcf, 0x8f, 0x0a, 0x20, 0x3e, 0x89, 0x83, 0x33, 0x3f, 0xe5, 0xdd,
0x25, 0x21, 0xd4, 0x65, 0x12, 0xbf, 0x0b, 0xc2, 0x20, 0x0d, 0xfc, 0x34, 0x8a, 0xbb, 0x8c, 0xf2,
0x32, 0x00, 0x27, 0x91, 0xe8, 0x23, 0x49, 0xfd, 0x74, 0x92, 0x48, 0x0d, 0x75, 0x99, 0x88, 0xab,
0x98, 0xc1, 0x3e, 0x82, 0x55, 0x41, 0x11, 0x94, 0x25, 0x75, 0x6f, 0x52, 0x15, 0x56, 0x68, 0x46,
0xa6, 0xe4, 0xe2, 0x54, 0x4a, 0x12, 0x29, 0x7c, 0x78, 0x59, 0x4c, 0xe5, 0x94, 0x6c, 0xec, 0x1f,
0xf6, 0x20, 0xe8, 0x7b, 0xb2, 0x04, 0xb2, 0xc8, 0x2a, 0x8d, 0xa2, 0x98, 0x81, 0x24, 0x3e, 0x0c,
0x8e, 0x79, 0x1a, 0x8c, 0x78, 0x77, 0x4d, 0x90, 0xb8, 0x4a, 0x23, 0x03, 0x4e, 0xc6, 0x94, 0xd3,
0x15, 0x0c, 0x2f, 0x52, 0xce, 0xef, 0x57, 0xc4, 0xe6, 0x23, 0x19, 0x35, 0x31, 0x8e, 0x55, 0x82,
0x45, 0xbd, 0x28, 0x1c, 0x5e, 0x48, 0xae, 0x05, 0x01, 0x3d, 0x0d, 0x87, 0x17, 0xa8, 0xd8, 0x07,
0xa1, 0x59, 0x44, 0xc8, 0xb9, 0xb6, 0x02, 0xa9, 0xd0, 0xbb, 0xd0, 0x1a, 0x4f, 0x8e, 0x86, 0x41,
0x5f, 0x14, 0xa9, 0x89, 0x5a, 0x04, 0x44, 0x05, 0xf0, 0x5c, 0x29, 0x56, 0x4a, 0x94, 0xa8, 0x53,
0x89, 0x96, 0xc4, 0xb0, 0x88, 0xf3, 0x00, 0x56, 0xec, 0x0e, 0x4a, 0x81, 0x7e, 0x17, 0x1a, 0x92,
0xff, 0x95, 0xa1, 0x60, 0xc1, 0x30, 0xdf, 0xe2, 0x31, 0x48, 0xe7, 0x3b, 0xff, 0xa2, 0x0e, 0xcb,
0x12, 0xdd, 0x1a, 0x46, 0x09, 0x3f, 0x9c, 0x8c, 0x46, 0x7e, 0x5c, 0x22, 0x58, 0x2a, 0x6f, 0x10,
0x2c, 0xd5, 0xa2, 0x60, 0xb9, 0x6e, 0x9d, 0x2f, 0x85, 0x64, 0x32, 0x10, 0x76, 0x07, 0x16, 0xfb,
0xc3, 0x28, 0x11, 0xea, 0xbe, 0x69, 0x41, 0xcc, 0xc3, 0x45, 0x61, 0x38, 0x53, 0x26, 0x0c, 0x4d,
0x41, 0x36, 0x9b, 0x13, 0x64, 0x0e, 0xb4, 0xb1, 0x52, 0xae, 0x64, 0xf3, 0x9c, 0x3c, 0x6c, 0x19,
0x18, 0xf6, 0x27, 0x2f, 0x36, 0x84, 0x8c, 0x5a, 0x2c, 0x13, 0x1a, 0xc1, 0x88, 0x93, 0xec, 0x37,
0x4a, 0x37, 0xa5, 0xd0, 0x28, 0x66, 0xb1, 0x87, 0x00, 0xa2, 0x2d, 0x52, 0x40, 0x80, 0x14, 0x90,
0x5b, 0xf6, 0xaa, 0x98, 0xf3, 0xbf, 0x8e, 0x89, 0x49, 0xcc, 0x49, 0x29, 0x31, 0xbe, 0x74, 0xfe,
0x46, 0x05, 0x5a, 0x46, 0x1e, 0xbb, 0x0c, 0x4b, 0x5b, 0x4f, 0x9f, 0x1e, 0xec, 0xb8, 0x9b, 0xcf,
0x1e, 0xff, 0x60, 0xc7, 0xdb, 0xda, 0x7b, 0x7a, 0xb8, 0xd3, 0xb9, 0x84, 0xf0, 0xde, 0xd3, 0xad,
0xcd, 0x3d, 0xef, 0xe1, 0x53, 0x77, 0x4b, 0xc1, 0x15, 0xb6, 0x0a, 0xcc, 0xdd, 0x79, 0xf2, 0xf4,
0xd9, 0x8e, 0x85, 0x57, 0x59, 0x07, 0xda, 0x0f, 0xdc, 0x9d, 0xcd, 0xad, 0x5d, 0x89, 0xd4, 0xd8,
0x0a, 0x74, 0x1e, 0x3e, 0xdf, 0xdf, 0x7e, 0xbc, 0xff, 0xc8, 0xdb, 0xda, 0xdc, 0xdf, 0xda, 0xd9,
0xdb, 0xd9, 0xee, 0xd4, 0xd9, 0x3c, 0x34, 0x37, 0x1f, 0x6c, 0xee, 0x6f, 0x3f, 0xdd, 0xdf, 0xd9,
0xee, 0xcc, 0x38, 0x7f, 0x5a, 0x81, 0xcb, 0xd4, 0xeb, 0x41, 0x9e, 0x49, 0x6e, 0x40, 0xab, 0x1f,
0x45, 0x63, 0x54, 0xfc, 0xb3, 0xad, 0xcd, 0x84, 0x90, 0x01, 0x84, 0x50, 0x38, 0x8e, 0xe2, 0x3e,
0x97, 0x3c, 0x02, 0x04, 0x3d, 0x44, 0x04, 0x19, 0x40, 0x2e, 0xaf, 0x28, 0x21, 0x58, 0xa4, 0x25,
0x30, 0x51, 0x64, 0x15, 0x66, 0x8f, 0x62, 0xee, 0xf7, 0x4f, 0x25, 0x77, 0xc8, 0x14, 0x7b, 0x3f,
0x3b, 0x99, 0xf6, 0x71, 0xf6, 0x87, 0x7c, 0x40, 0x14, 0xd3, 0x70, 0x17, 0x25, 0xbe, 0x25, 0x61,
0x94, 0x82, 0xfe, 0x91, 0x1f, 0x0e, 0xa2, 0x90, 0x0f, 0xa4, 0xda, 0x9b, 0x01, 0xce, 0x01, 0xac,
0xe6, 0xc7, 0x27, 0x79, 0xec, 0x23, 0x83, 0xc7, 0x84, 0x16, 0xda, 0x9b, 0xbe, 0x9a, 0x06, 0xbf,
0xfd, 0xe7, 0x2a, 0xd4, 0x51, 0x29, 0x99, 0xae, 0xc0, 0x98, 0x7a, 0x66, 0xad, 0xe0, 0x6e, 0xa0,
0xc3, 0xae, 0xd8, 0xa2, 0xa4, 0xa1, 0x25, 0x43, 0xb2, 0xfc, 0x98, 0xf7, 0xcf, 0xa4, 0xa9, 0xc5,
0x40, 0x90, 0x41, 0xf0, 0x10, 0x40, 0x5f, 0x4b, 0x06, 0x51, 0x69, 0x95, 0x47, 0x5f, 0xce, 0x65,
0x79, 0xf4, 0x5d, 0x17, 0xe6, 0x82, 0xf0, 0x28, 0x9a, 0x84, 0x03, 0x62, 0x88, 0x86, 0xab, 0x92,
0xe4, 0xe0, 0x20, 0x46, 0x45, 0xf9, 0x29, 0xc8, 0x3f, 0x03, 0xd8, 0x06, 0x34, 0x93, 0x8b, 0xb0,
0x6f, 0xd2, 0xfc, 0x8a, 0x9c, 0x25, 0x9c, 0x83, 0xf5, 0xc3, 0x8b, 0xb0, 0x4f, 0x14, 0x9e, 0x15,
0x73, 0x7e, 0x0b, 0x1a, 0x0a, 0x46, 0xb2, 0x7c, 0xbe, 0xff, 0xf9, 0xfe, 0xd3, 0x17, 0xfb, 0xde,
0xe1, 0x0f, 0xf7, 0xb7, 0x3a, 0x97, 0xd8, 0x22, 0xb4, 0x36, 0xb7, 0x88, 0xd2, 0x09, 0xa8, 0x60,
0x91, 0x83, 0xcd, 0xc3, 0x43, 0x8d, 0x54, 0x1d, 0x86, 0x07, 0xf9, 0x84, 0x34, 0x3f, 0x6d, 0xc0,
0xff, 0x08, 0x96, 0x0c, 0x2c, 0x3b, 0x45, 0x8c, 0x11, 0xc8, 0x9d, 0x22, 0x48, 0x65, 0x14, 0x39,
0x4e, 0x07, 0x16, 0x1e, 0xf1, 0xf4, 0x71, 0x78, 0x1c, 0xa9, 0x9a, 0xfe, 0x7b, 0x1d, 0x16, 0x35,
0x24, 0x2b, 0xba, 0x03, 0x8b, 0xc1, 0x80, 0x87, 0x69, 0x90, 0x5e, 0x78, 0x96, 0xbd, 0x20, 0x0f,
0xa3, 0xaa, 0xed, 0x0f, 0x03, 0x5f, 0xf9, 0x91, 0x44, 0x02, 0xcf, 0xcf, 0xa8, 0x03, 0x98, 0x76,
0x1b, 0xa2, 0x2b, 0x61, 0xa6, 0x28, 0xcd, 0x43, 0x09, 0x84, 0xb8, 0xdc, 0x66, 0xf4, 0x27, 0x42,
0xe5, 0x2c, 0xcb, 0xc2, 0xa5, 0x12, 0x35, 0xe1, 0x90, 0x67, 0x84, 0x9e, 0xa0, 0x81, 0x82, 0xa3,
0x66, 0x56, 0xc8, 0xc7, 0xbc, 0xa3, 0xc6, 0x70, 0xf6, 0x34, 0x0a, 0xce, 0x1e, 0x94, 0x9f, 0x17,
0x61, 0x9f, 0x0f, 0xbc, 0x34, 0xf2, 0x48, 0xce, 0x13, 0x49, 0x34, 0xdc, 0x3c, 0x8c, 0xfb, 0x46,
0xca, 0x93, 0x34, 0xe4, 0xc2, 0xe2, 0xdd, 0x20, 0x2b, 0xa8, 0x82, 0xf0, 0x7c, 0x30, 0x89, 0x83,
0xa4, 0xdb, 0x26, 0x37, 0x0e, 0xfd, 0x66, 0xdf, 0x85, 0xcb, 0x47, 0x3c, 0x49, 0xbd, 0x53, 0xee,
0x0f, 0x78, 0x4c, 0xe4, 0x25, 0xfc, 0x45, 0x42, 0xe5, 0x2a, 0xcf, 0x44, 0xc2, 0x3d, 0xe3, 0x71,
0x12, 0x44, 0x21, 0x29, 0x5b, 0x4d, 0x57, 0x25, 0xb1, 0x3e, 0x1c, 0xbc, 0xde, 0xa8, 0xf5, 0x0c,
0x2e, 0xd2, 0xc0, 0xcb, 0x33, 0xd9, 0x4d, 0x98, 0xa5, 0x01, 0x24, 0xdd, 0x0e, 0xd1, 0x4c, 0x3b,
0xe3, 0xf9, 0x20, 0x74, 0x65, 0x1e, 0xae, 0x72, 0x3f, 0x1a, 0x46, 0x31, 0x69, 0x5c, 0x4d, 0x57,
0x24, 0xec, 0xd9, 0x39, 0x89, 0xfd, 0xf1, 0xa9, 0xd4, 0xba, 0xf2, 0xf0, 0x67, 0xf5, 0x46, 0xab,
0xd3, 0x76, 0xfe, 0x3f, 0x98, 0xa1, 0x6a, 0xa9, 0x3a, 0x9a, 0xcc, 0x8a, 0xac, 0x8e, 0xd0, 0x2e,
0xcc, 0x85, 0x3c, 0x3d, 0x8f, 0xe2, 0x97, 0xca, 0x29, 0x29, 0x93, 0xce, 0xcf, 0xe8, 0x84, 0xa6,
0x9d, 0x74, 0xcf, 0x49, 0xb5, 0xc4, 0x73, 0xb6, 0x58, 0xaa, 0xe4, 0xd4, 0x97, 0x87, 0xc6, 0x06,
0x01, 0x87, 0xa7, 0x3e, 0xca, 0x5a, 0x6b, 0xf5, 0xc5, 0x39, 0xbc, 0x45, 0xd8, 0xae, 0x58, 0xfc,
0x9b, 0xb0, 0xa0, 0xdc, 0x7f, 0x89, 0x37, 0xe4, 0xc7, 0xa9, 0xb2, 0xa2, 0x85, 0x93, 0x11, 0x1d,
0xd6, 0xf7, 0xf8, 0x71, 0xea, 0xec, 0xc3, 0x92, 0x94, 0x7f, 0x4f, 0xc7, 0x5c, 0x35, 0xfd, 0x1b,
0x65, 0xba, 0x44, 0x6b, 0x63, 0xd9, 0x16, 0x98, 0xc2, 0xe1, 0x69, 0x97, 0x74, 0x5c, 0x60, 0xa6,
0x3c, 0x95, 0x15, 0xca, 0xcd, 0x5c, 0xd9, 0x09, 0xe5, 0x70, 0x2c, 0x0c, 0xe7, 0x27, 0x99, 0xf4,
0xfb, 0xca, 0x69, 0xdb, 0x70, 0x55, 0xd2, 0xf9, 0xf7, 0x15, 0x58, 0xa6, 0xda, 0x94, 0x36, 0x24,
0xf7, 0xac, 0x8f, 0xbf, 0x46, 0x37, 0x95, 0x95, 0x56, 0xd8, 0x26, 0x57, 0x60, 0xc6, 0xdc, 0xc5,
0x44, 0xe2, 0xeb, 0xdb, 0x64, 0xea, 0x05, 0x9b, 0xcc, 0x5d, 0xe8, 0x0c, 0xf8, 0x30, 0x20, 0xc7,
0xbd, 0xda, 0x13, 0x84, 0xea, 0x53, 0xc0, 0x9d, 0xbf, 0x53, 0x81, 0x25, 0xb1, 0xe9, 0x90, 0x66,
0x2e, 0xa7, 0xea, 0xff, 0x87, 0x79, 0xa1, 0x3d, 0x48, 0x09, 0x22, 0x07, 0x95, 0x89, 0x61, 0x42,
0x45, 0xe1, 0xdd, 0x4b, 0xae, 0x5d, 0x98, 0x7d, 0x4a, 0x1a, 0x5c, 0xe8, 0x11, 0x5a, 0x12, 0x0a,
0x60, 0xaf, 0xcb, 0xee, 0x25, 0xd7, 0x28, 0xfe, 0xa0, 0x81, 0x8a, 0x35, 0xe2, 0xce, 0x23, 0x98,
0xb7, 0x1a, 0xb2, 0x6c, 0x47, 0x6d, 0x61, 0x3b, 0x2a, 0x18, 0x69, 0xab, 0x25, 0x46, 0xda, 0x7f,
0x56, 0x03, 0x86, 0x84, 0x95, 0x5b, 0xb9, 0x1b, 0xb6, 0xa7, 0x43, 0x45, 0x05, 0x64, 0x10, 0xdb,
0x00, 0x66, 0x24, 0x95, 0x07, 0xa6, 0xa6, 0x3d, 0x30, 0x25, 0xb9, 0x28, 0x96, 0xa5, 0x86, 0xa2,
0xbd, 0x1b, 0x64, 0x17, 0x10, 0xcb, 0x54, 0x9a, 0x87, 0xbb, 0x28, 0xb9, 0x3a, 0xf0, 0x04, 0x23,
0xcf, 0xd2, 0x2a, 0x9d, 0xa7, 0x87, 0xd9, 0x37, 0xd2, 0xc3, 0x5c, 0x81, 0x1e, 0x8c, 0xd3, 0x5c,
0xc3, 0x3e, 0xcd, 0xdd, 0x84, 0x79, 0xe5, 0xd1, 0x10, 0x4e, 0x59, 0x79, 0x74, 0xb6, 0x40, 0xa4,
0x27, 0x75, 0xa0, 0xd2, 0x47, 0x46, 0xe1, 0x72, 0x2c, 0xe0, 0xb8, 0x5f, 0x64, 0x56, 0xbb, 0x16,
0x75, 0x36, 0x03, 0xe8, 0xfc, 0x85, 0x54, 0xe2, 0x4d, 0x42, 0x19, 0x11, 0xc0, 0x07, 0x74, 0x68,
0xc6, 0xf3, 0x57, 0x3e, 0xc3, 0xf9, 0x9b, 0x15, 0xe8, 0xe0, 0xba, 0x59, 0xa4, 0xf9, 0x09, 0x10,
0x17, 0xbd, 0x25, 0x65, 0x5a, 0x65, 0xd9, 0xc7, 0xd0, 0xa4, 0x74, 0x34, 0xe6, 0xa1, 0xa4, 0xcb,
0xae, 0x4d, 0x97, 0x99, 0xfc, 0xd9, 0xbd, 0xe4, 0x66, 0x85, 0x0d, 0xaa, 0xfc, 0xb7, 0x15, 0x68,
0xc9, 0x56, 0x7e, 0x69, 0xab, 0x50, 0xcf, 0x08, 0xe1, 0x10, 0xca, 0x5a, 0x16, 0xb1, 0x71, 0x07,
0x16, 0x47, 0x7e, 0x3a, 0x89, 0x71, 0xff, 0xb7, 0x2c, 0x42, 0x79, 0x18, 0x37, 0x73, 0x12, 0xb5,
0x89, 0x97, 0x06, 0x43, 0x4f, 0xe5, 0xca, 0x60, 0x89, 0xb2, 0x2c, 0x94, 0x38, 0x49, 0xea, 0x9f,
0x70, 0xb9, 0x4f, 0x8b, 0x84, 0xd3, 0x85, 0xd5, 0x83, 0xcc, 0xcb, 0x63, 0xe8, 0xe3, 0xce, 0x3f,
0x99, 0x87, 0xb5, 0x42, 0x96, 0x0e, 0xed, 0x92, 0x66, 0x8e, 0x61, 0x30, 0x3a, 0x8a, 0xf4, 0x61,
0xa6, 0x62, 0x5a, 0x40, 0xac, 0x2c, 0x76, 0x02, 0x97, 0x95, 0x42, 0x82, 0x73, 0x9a, 0x6d, 0x9e,
0x55, 0xda, 0x15, 0x3f, 0xb4, 0x97, 0x30, 0xdf, 0xa0, 0xc2, 0x4d, 0x46, 0x2e, 0xaf, 0x8f, 0x9d,
0x42, 0x57, 0x6b, 0x3e, 0x52, 0xb8, 0x1b, 0xda, 0x11, 0xb6, 0xf5, 0xc1, 0x1b, 0xda, 0xb2, 0xd4,
0x77, 0x77, 0x6a, 0x6d, 0xec, 0x02, 0xae, 0xab, 0x3c, 0x92, 0xde, 0xc5, 0xf6, 0xea, 0x6f, 0x35,
0x36, 0x3a, 0x98, 0xd8, 0x8d, 0xbe, 0xa1, 0x62, 0xf6, 0x53, 0x58, 0x3d, 0xf7, 0x83, 0x54, 0x75,
0xcb, 0xd0, 0x45, 0x66, 0xa8, 0xc9, 0x8d, 0x37, 0x34, 0xf9, 0x42, 0x7c, 0x6c, 0x6d, 0x69, 0x53,
0x6a, 0xec, 0xfd, 0x71, 0x15, 0x16, 0xec, 0x7a, 0x90, 0x4c, 0x25, 0xef, 0x2b, 0x19, 0xa8, 0xb4,
0xd7, 0x1c, 0x5c, 0xb4, 0x09, 0x54, 0xcb, 0x6c, 0x02, 0xe6, 0x29, 0xbc, 0xf6, 0x26, 0x73, 0x62,
0xfd, 0xed, 0xcc, 0x89, 0x33, 0xa5, 0xe6, 0xc4, 0xe9, 0x56, 0xa7, 0xd9, 0x5f, 0xd6, 0xea, 0x34,
0xf7, 0x5a, 0xab, 0x53, 0xef, 0xff, 0x54, 0x80, 0x15, 0xa9, 0x97, 0x3d, 0x12, 0x66, 0x90, 0x90,
0x0f, 0xa5, 0x10, 0xfb, 0xf6, 0xdb, 0x71, 0x80, 0x5a, 0x2d, 0xf5, 0x35, 0xb2, 0xa2, 0x19, 0x5f,
0x65, 0xaa, 0x63, 0xf3, 0x6e, 0x59, 0x56, 0xce, 0xa4, 0x5a, 0x7f, 0xb3, 0x49, 0x75, 0xe6, 0xcd,
0x26, 0xd5, 0xd9, 0xbc, 0x49, 0xb5, 0xf7, 0x57, 0x2b, 0xb0, 0x5c, 0x42, 0x66, 0xbf, 0xbe, 0x81,
0x23, 0x61, 0x58, 0xd2, 0xa7, 0x2a, 0x09, 0xc3, 0x04, 0x7b, 0x7f, 0x09, 0xe6, 0x2d, 0xd6, 0xfa,
0xf5, 0xb5, 0x9f, 0xd7, 0x28, 0x05, 0x65, 0x5b, 0x58, 0xef, 0x7f, 0x56, 0x81, 0x15, 0xd9, 0xfb,
0xcf, 0xb5, 0x0f, 0xc5, 0x79, 0xaa, 0x95, 0xcc, 0xd3, 0xff, 0xd3, 0x9d, 0xe7, 0x03, 0x58, 0x92,
0x41, 0xa3, 0x86, 0xe1, 0x4b, 0x50, 0x4c, 0x31, 0x03, 0x75, 0x6a, 0xdb, 0x9e, 0xdd, 0xb0, 0x82,
0xe4, 0x8c, 0xed, 0x37, 0x67, 0xd6, 0x76, 0x7a, 0xd0, 0x95, 0x33, 0xb4, 0x73, 0xc6, 0xc3, 0xf4,
0x70, 0x72, 0x24, 0xa2, 0x26, 0x83, 0x28, 0x24, 0x35, 0xd0, 0xcc, 0x94, 0x0a, 0xc5, 0x77, 0xa1,
0x6d, 0x6e, 0x1f, 0x72, 0x39, 0x72, 0xb6, 0x4f, 0x54, 0x25, 0xcc, 0x52, 0x6c, 0x1b, 0x16, 0x48,
0x48, 0x0e, 0xf4, 0x77, 0x55, 0xfa, 0xee, 0x35, 0xf6, 0x9c, 0xdd, 0x4b, 0x6e, 0xee, 0x1b, 0xf6,
0x9b, 0xb0, 0x60, 0x1f, 0x16, 0xa5, 0x56, 0x52, 0x76, 0x7a, 0xc0, 0xcf, 0xed, 0xc2, 0x6c, 0x13,
0x3a, 0xf9, 0xd3, 0xa6, 0x8c, 0xfc, 0x99, 0x52, 0x41, 0xa1, 0x38, 0xfb, 0x58, 0x3a, 0x37, 0x67,
0xc8, 0xce, 0x72, 0xd3, 0xfe, 0xcc, 0x98, 0xa6, 0x75, 0xf1, 0xc7, 0x70, 0x77, 0xfe, 0x0e, 0x40,
0x86, 0xb1, 0x0e, 0xb4, 0x9f, 0x1e, 0xec, 0xec, 0x7b, 0x5b, 0xbb, 0x9b, 0xfb, 0xfb, 0x3b, 0x7b,
0x9d, 0x4b, 0x8c, 0xc1, 0x02, 0x99, 0x05, 0xb7, 0x35, 0x56, 0x41, 0x4c, 0x1a, 0x62, 0x14, 0x56,
0x65, 0x2b, 0xd0, 0x79, 0xbc, 0x9f, 0x43, 0x6b, 0x0f, 0x9a, 0x9a, 0x3f, 0x9c, 0x55, 0x58, 0x11,
0x41, 0xc1, 0x0f, 0x04, 0x79, 0x28, 0xed, 0xe4, 0x1f, 0x54, 0xe0, 0x72, 0x2e, 0x23, 0x0b, 0x0f,
0x13, 0x0a, 0x88, 0xad, 0x95, 0xd8, 0x20, 0x39, 0x2b, 0x94, 0xae, 0x99, 0x93, 0x20, 0xc5, 0x0c,
0xa4, 0x79, 0x43, 0x37, 0xcd, 0x71, 0x52, 0x59, 0x96, 0xb3, 0xa6, 0xa3, 0x70, 0x72, 0x1d, 0x3f,
0x16, 0xc1, 0xc6, 0x66, 0x46, 0xe6, 0x2c, 0xb6, 0xbb, 0xac, 0x92, 0x78, 0xac, 0xb0, 0x94, 0x1d,
0xbb, 0xbf, 0xa5, 0x79, 0xce, 0xff, 0xaa, 0x03, 0xfb, 0xfe, 0x84, 0xc7, 0x17, 0x14, 0xff, 0xa5,
0xad, 0xac, 0x6b, 0x79, 0x1b, 0xe2, 0xec, 0x78, 0x72, 0xf4, 0x39, 0xbf, 0x50, 0xf1, 0x9a, 0xd5,
0xb7, 0x8a, 0xd7, 0x2c, 0x8b, 0x97, 0xac, 0xbf, 0x39, 0x5e, 0x72, 0xe6, 0x4d, 0xf1, 0x92, 0xdf,
0x80, 0xf9, 0xe0, 0x24, 0x8c, 0x50, 0x1c, 0xa0, 0x0a, 0x91, 0x74, 0x67, 0x6f, 0xd4, 0xf0, 0x98,
0x2e, 0xc1, 0x7d, 0xc4, 0xd8, 0xa7, 0x59, 0x21, 0x3e, 0x38, 0xa1, 0xf8, 0x5e, 0x53, 0x40, 0xec,
0x0c, 0x4e, 0xf8, 0x5e, 0xd4, 0xf7, 0xd3, 0x28, 0xa6, 0x73, 0x9a, 0xfa, 0x18, 0xf1, 0x84, 0xdd,
0x84, 0x85, 0x24, 0x9a, 0xa0, 0x52, 0xa5, 0xa6, 0x41, 0x18, 0xa5, 0xda, 0x02, 0x3d, 0x10, 0x93,
0xb1, 0x0e, 0xcb, 0x93, 0x84, 0x7b, 0xa3, 0x20, 0x49, 0x70, 0xe3, 0xec, 0x47, 0x61, 0x1a, 0x47,
0x43, 0x69, 0x9a, 0x5a, 0x9a, 0x24, 0xfc, 0x89, 0xc8, 0xd9, 0x12, 0x19, 0xec, 0xbb, 0x59, 0x97,
0xc6, 0x7e, 0x10, 0x27, 0x5d, 0xa0, 0x2e, 0xa9, 0x91, 0x62, 0xbf, 0x0f, 0xfc, 0x20, 0xd6, 0x7d,
0xc1, 0x44, 0x92, 0x8b, 0xe3, 0x6c, 0xe5, 0xe3, 0x38, 0x7f, 0x52, 0x1e, 0xc7, 0x39, 0x4f, 0x55,
0xdf, 0x97, 0x55, 0x17, 0x97, 0xf8, 0xed, 0xc3, 0x39, 0x7f, 0x3d, 0x01, 0x9a, 0x32, 0xa6, 0x70,
0x1d, 0x1a, 0x6a, 0x98, 0x78, 0x56, 0x3f, 0x8e, 0xa3, 0x91, 0x3a, 0xab, 0xe3, 0x6f, 0xb6, 0x00,
0xd5, 0x34, 0x92, 0x1f, 0x57, 0xd3, 0xc8, 0xf9, 0x5d, 0x68, 0x19, 0x2b, 0xc5, 0xde, 0x13, 0x66,
0x03, 0xd4, 0x09, 0xe5, 0x21, 0x5f, 0x78, 0x86, 0x9a, 0x12, 0x7d, 0x3c, 0x60, 0xdf, 0x82, 0xa5,
0x41, 0x10, 0x73, 0x0a, 0x89, 0xf6, 0x62, 0x7e, 0xc6, 0xe3, 0x44, 0x99, 0x4f, 0x3a, 0x3a, 0xc3,
0x15, 0xb8, 0xe3, 0xc1, 0xb2, 0x35, 0x35, 0x5a, 0x38, 0xcc, 0x52, 0x20, 0xa4, 0xb2, 0xe0, 0xda,
0x41, 0x92, 0x32, 0x0f, 0xb7, 0x55, 0x69, 0xf9, 0xf1, 0xc6, 0x71, 0x74, 0x44, 0x8d, 0x54, 0x5c,
0x0b, 0x73, 0xfe, 0x47, 0x0d, 0x6a, 0xbb, 0xd1, 0xd8, 0xf4, 0x67, 0x55, 0x8a, 0xfe, 0x2c, 0xa9,
0xff, 0x7a, 0x5a, 0xbd, 0x95, 0x4a, 0x8a, 0x05, 0xb2, 0xbb, 0xb0, 0x80, 0x9c, 0x96, 0x46, 0xa8,
0xef, 0x9f, 0xfb, 0xb1, 0x88, 0x9a, 0xac, 0x11, 0xf9, 0xe6, 0x72, 0xd8, 0x0a, 0xd4, 0xb4, 0xda,
0x46, 0x05, 0x30, 0x89, 0x87, 0x4d, 0x8a, 0x19, 0xb8, 0x90, 0x66, 0x5a, 0x99, 0x42, 0xc1, 0x65,
0x7f, 0x2f, 0xd8, 0x59, 0x6c, 0xbe, 0x65, 0x59, 0xa8, 0x8b, 0x23, 0xc3, 0x8e, 0x32, 0xd5, 0x56,
0xa7, 0x4d, 0x07, 0x44, 0xc3, 0x76, 0x40, 0xdc, 0x80, 0x56, 0x3a, 0x3c, 0xf3, 0xc6, 0xfe, 0xc5,
0x30, 0xf2, 0x07, 0x92, 0x51, 0x4c, 0x88, 0xdd, 0x07, 0x18, 0x8d, 0xc7, 0x92, 0x8a, 0xc9, 0x82,
0xd0, 0xda, 0xe8, 0xc8, 0xd9, 0x7f, 0x72, 0x70, 0x20, 0xa8, 0xcf, 0x35, 0xca, 0xb0, 0x1d, 0x58,
0x28, 0x0d, 0x61, 0xbe, 0xa6, 0x3c, 0xdb, 0xd1, 0x78, 0xbd, 0x84, 0xce, 0x73, 0x1f, 0xf5, 0x7e,
0x1b, 0xd8, 0xaf, 0x18, 0x81, 0xfc, 0x02, 0x9a, 0xba, 0x87, 0x66, 0xdc, 0x2f, 0x85, 0xaf, 0xb4,
0xec, 0xb8, 0x5f, 0x8a, 0x56, 0xb9, 0x05, 0x0b, 0x62, 0xb7, 0xd1, 0xf2, 0x53, 0x84, 0x1c, 0xe4,
0x50, 0xe7, 0xcf, 0x2a, 0x30, 0x43, 0x94, 0x87, 0xea, 0x97, 0xc8, 0xd3, 0x8e, 0x40, 0xea, 0xda,
0xbc, 0x9b, 0x87, 0x99, 0x63, 0x5d, 0x6d, 0xa8, 0x6a, 0x32, 0x30, 0xaf, 0x37, 0xdc, 0x80, 0xa6,
0x6e, 0xc9, 0x20, 0xa5, 0x0c, 0x64, 0xd7, 0xa1, 0x7e, 0x1a, 0x8d, 0xd5, 0x09, 0x15, 0xb2, 0x19,
0x75, 0x09, 0xcf, 0xfa, 0x83, 0xf5, 0x89, 0x21, 0x88, 0x53, 0x40, 0x1e, 0x2e, 0x19, 0xeb, 0x6c,
0xe9, 0x58, 0x9f, 0xc3, 0x22, 0xca, 0x07, 0xc3, 0x31, 0x32, 0x7d, 0x2f, 0x7a, 0x1f, 0x55, 0x9b,
0xfe, 0x70, 0x32, 0xe0, 0xa6, 0x9d, 0x80, 0x0c, 0xdf, 0x12, 0x57, 0x1a, 0xb2, 0xf3, 0x4f, 0x2b,
0x42, 0xee, 0x60, 0xbd, 0xec, 0x0e, 0xd4, 0x71, 0xdb, 0xc8, 0x99, 0x85, 0x74, 0x48, 0x11, 0x96,
0x73, 0xa9, 0x04, 0xae, 0x22, 0x99, 0xa6, 0xcd, 0xda, 0x85, 0x61, 0x3a, 0x3b, 0x64, 0xeb, 0x91,
0xe5, 0xce, 0xa6, 0x39, 0x94, 0xad, 0x1b, 0x7e, 0xbd, 0xba, 0xb5, 0x15, 0x29, 0x4d, 0x6a, 0x70,
0xc2, 0x0d, 0x7f, 0xde, 0x1f, 0x56, 0x60, 0xde, 0xea, 0x13, 0x72, 0x0f, 0x05, 0xfe, 0x0b, 0x2b,
0x93, 0x5c, 0x79, 0x13, 0x32, 0x39, 0xaf, 0x6a, 0x73, 0x9e, 0xf6, 0x0f, 0xd5, 0x4c, 0xff, 0xd0,
0x7d, 0x68, 0x66, 0x77, 0x5b, 0xec, 0x4e, 0x61, 0x8b, 0x2a, 0xb8, 0x2a, 0x2b, 0x94, 0x79, 0x20,
0x66, 0x0c, 0x0f, 0x84, 0xf3, 0x29, 0xb4, 0x8c, 0xf2, 0xa6, 0x07, 0xa1, 0x62, 0x79, 0x10, 0x74,
0xe4, 0x61, 0x35, 0x8b, 0x3c, 0x74, 0x7e, 0x5e, 0x85, 0x79, 0x24, 0xef, 0x20, 0x3c, 0x39, 0x88,
0x86, 0x41, 0xff, 0x82, 0xc8, 0x4a, 0x51, 0xb2, 0x54, 0x1b, 0x14, 0x99, 0xdb, 0x30, 0x8a, 0x21,
0x1d, 0x6e, 0x2d, 0x64, 0xa6, 0x4e, 0xa3, 0x50, 0x45, 0x91, 0x74, 0xe4, 0x27, 0xdc, 0xb8, 0xec,
0xe2, 0xda, 0x20, 0x8a, 0x3e, 0x04, 0x28, 0x8e, 0x74, 0x14, 0x0c, 0x87, 0x81, 0x28, 0x2b, 0xce,
0xbb, 0x65, 0x59, 0xd8, 0xe6, 0x20, 0x48, 0xfc, 0xa3, 0xcc, 0xf7, 0xab, 0xd3, 0x64, 0x2c, 0xf5,
0x5f, 0x19, 0xc6, 0x52, 0x11, 0x78, 0x6e, 0x83, 0xf9, 0x85, 0x9c, 0x2b, 0x2c, 0xa4, 0xf3, 0xaf,
0xaa, 0xd0, 0x32, 0xc8, 0x02, 0xd9, 0xb9, 0x74, 0xdf, 0x33, 0x50, 0x19, 0x14, 0x11, 0x5a, 0x16,
0x14, 0x03, 0x61, 0x37, 0xed, 0x56, 0xc9, 0xc9, 0x42, 0x0c, 0x6f, 0x91, 0xd0, 0x55, 0x68, 0x22,
0xe9, 0x7f, 0x48, 0xe6, 0x1a, 0x79, 0xb1, 0x4c, 0x03, 0x2a, 0x77, 0x83, 0x72, 0x67, 0xb2, 0x5c,
0x02, 0x5e, 0x1b, 0x26, 0xf1, 0x31, 0xb4, 0x65, 0x35, 0xb4, 0xc6, 0x34, 0xe8, 0x8c, 0xf9, 0xac,
0xf5, 0x77, 0xad, 0x92, 0xea, 0xcb, 0x0d, 0xf5, 0x65, 0xe3, 0x4d, 0x5f, 0xaa, 0x92, 0xce, 0x23,
0x1d, 0x81, 0xf2, 0x28, 0xf6, 0xc7, 0xa7, 0x4a, 0xa0, 0xdc, 0x87, 0x65, 0x25, 0x37, 0x26, 0xa1,
0x1f, 0x86, 0xd1, 0x24, 0xec, 0x73, 0x15, 0xa4, 0x58, 0x96, 0xe5, 0x0c, 0x74, 0x48, 0x3b, 0x55,
0xc4, 0xee, 0xc2, 0x8c, 0x50, 0x3c, 0x85, 0x7a, 0x50, 0x2e, 0x42, 0x44, 0x11, 0x76, 0x07, 0x66,
0x84, 0xfe, 0x59, 0x9d, 0xca, 0xf4, 0xa2, 0x80, 0xb3, 0x0e, 0x8b, 0x14, 0x43, 0x6f, 0xc8, 0xbe,
0x77, 0xca, 0xd4, 0x86, 0xd9, 0xbe, 0x88, 0xb4, 0x5f, 0x01, 0xb6, 0x2f, 0xf8, 0xca, 0xf4, 0x23,
0xff, 0x59, 0x0d, 0x5a, 0x06, 0x8c, 0xf2, 0x89, 0x9c, 0x7f, 0xde, 0x20, 0xf0, 0x47, 0x3c, 0xe5,
0xb1, 0xe4, 0xa5, 0x1c, 0x8a, 0xe5, 0xfc, 0xb3, 0x13, 0x2f, 0x9a, 0xa4, 0xde, 0x80, 0x9f, 0xc4,
0x9c, 0x4b, 0x7d, 0x26, 0x87, 0x62, 0x39, 0xa4, 0x66, 0xa3, 0x9c, 0x70, 0xd7, 0xe5, 0x50, 0xe5,
0x15, 0x16, 0xf3, 0x54, 0xcf, 0xbc, 0xc2, 0x62, 0x56, 0xf2, 0x92, 0x75, 0xa6, 0x44, 0xb2, 0x7e,
0x04, 0xab, 0x42, 0x86, 0x4a, 0xe9, 0xe1, 0xe5, 0x88, 0x6b, 0x4a, 0x2e, 0xbb, 0x0b, 0x1d, 0xec,
0xb3, 0x62, 0x8d, 0x24, 0xf8, 0x99, 0xe0, 0xb1, 0x8a, 0x5b, 0xc0, 0xb1, 0x2c, 0xb9, 0x1e, 0xcc,
0xb2, 0x22, 0x34, 0xa7, 0x80, 0x53, 0x59, 0xff, 0x95, 0x5d, 0xb6, 0x29, 0xcb, 0xe6, 0x70, 0xf6,
0x31, 0xac, 0x8d, 0xf8, 0x20, 0xf0, 0xed, 0x2a, 0xbc, 0x6c, 0x93, 0x9f, 0x96, 0x8d, 0xad, 0xe0,
0x2c, 0xfc, 0x2c, 0x1a, 0x1d, 0x05, 0x62, 0x63, 0x13, 0x4e, 0x92, 0xba, 0x5b, 0xc0, 0x9d, 0x79,
0x68, 0x1d, 0xa6, 0xd1, 0x58, 0x2d, 0xfd, 0x02, 0xb4, 0x45, 0x52, 0x86, 0xa5, 0xbe, 0x03, 0x57,
0x88, 0x5e, 0x9f, 0x45, 0xe3, 0x68, 0x18, 0x9d, 0x5c, 0x58, 0xa6, 0x8e, 0x7f, 0x53, 0x81, 0x65,
0x2b, 0x37, 0xb3, 0x75, 0x90, 0x5d, 0x56, 0xc5, 0x12, 0x0a, 0x12, 0x5f, 0x32, 0xb6, 0x05, 0x51,
0x50, 0xb8, 0xc1, 0x9e, 0xcb, 0xf0, 0xc2, 0xcd, 0xec, 0x82, 0x8c, 0xfa, 0x50, 0xd0, 0x7b, 0xb7,
0x48, 0xef, 0xf2, 0x7b, 0x75, 0x75, 0x46, 0x55, 0xf1, 0x9b, 0x32, 0x90, 0x6a, 0x20, 0x07, 0x5d,
0xb3, 0x83, 0x5f, 0x4c, 0xd3, 0x98, 0xea, 0x41, 0x5f, 0x83, 0x89, 0xf3, 0x8b, 0x0a, 0x40, 0xd6,
0x3b, 0x0a, 0xbf, 0xd1, 0x5b, 0x9b, 0xb8, 0x4b, 0x6e, 0x6c, 0x63, 0xef, 0x41, 0x5b, 0x47, 0x50,
0x64, 0xbb, 0x65, 0x4b, 0x61, 0xa8, 0x5d, 0xdc, 0x86, 0xc5, 0x93, 0x61, 0x74, 0x44, 0x5a, 0x0c,
0xc5, 0x39, 0x27, 0x32, 0x38, 0x77, 0x41, 0xc0, 0x0f, 0x25, 0x9a, 0x6d, 0xad, 0x75, 0x73, 0x6b,
0x2d, 0xdf, 0x28, 0x7f, 0x5e, 0xd5, 0x6e, 0xec, 0x6c, 0x26, 0x5e, 0xcb, 0xe5, 0x6c, 0xa3, 0x20,
0xd6, 0xa7, 0x78, 0x8e, 0xe9, 0x0c, 0x74, 0xf0, 0x46, 0x4b, 0xf9, 0xa7, 0xb0, 0x10, 0x0b, 0x99,
0xa9, 0x04, 0x6a, 0xfd, 0x35, 0x02, 0x75, 0x3e, 0xb6, 0x76, 0xe6, 0xf7, 0xa1, 0xe3, 0x0f, 0xce,
0x78, 0x9c, 0x06, 0x64, 0x39, 0x24, 0x35, 0x4a, 0x0c, 0x70, 0xd1, 0xc0, 0x49, 0x5b, 0xb9, 0x0d,
0x8b, 0x32, 0x54, 0x5a, 0x97, 0x94, 0xb7, 0x2a, 0x33, 0x18, 0x0b, 0x3a, 0xff, 0x48, 0x79, 0xcd,
0xed, 0xd5, 0x7d, 0xfd, 0xac, 0x98, 0x23, 0xac, 0xe6, 0x46, 0xf8, 0x0d, 0xe9, 0x99, 0x1e, 0x28,
0x13, 0x65, 0xcd, 0x08, 0xc9, 0x1b, 0xc8, 0xa8, 0x03, 0x7b, 0x5a, 0xeb, 0x6f, 0x33, 0xad, 0xce,
0x7f, 0xa8, 0xc0, 0xdc, 0x6e, 0x34, 0xde, 0xc5, 0x29, 0x46, 0x1d, 0x07, 0xd9, 0x44, 0xdf, 0x53,
0x50, 0xc9, 0x37, 0x84, 0x2e, 0x96, 0x6a, 0x25, 0xf3, 0x79, 0xad, 0xe4, 0xb7, 0xe1, 0x1d, 0x32,
0x92, 0xc7, 0xd1, 0x38, 0x8a, 0x91, 0x5d, 0xfd, 0xa1, 0x50, 0x41, 0xa2, 0x30, 0x3d, 0x55, 0xe2,
0xf4, 0x75, 0x45, 0xc8, 0x72, 0x35, 0x4c, 0xcf, 0x3c, 0x71, 0xc2, 0x93, 0x5a, 0x94, 0x90, 0xb2,
0xc5, 0x0c, 0xe7, 0x37, 0xa0, 0x49, 0x27, 0x0c, 0x1a, 0xda, 0x07, 0xd0, 0x3c, 0x8d, 0xc6, 0xde,
0x69, 0x10, 0xa6, 0x8a, 0xfd, 0x17, 0x32, 0xd5, 0x7f, 0x97, 0x26, 0x45, 0x17, 0x70, 0xfe, 0x64,
0x16, 0xe6, 0x1e, 0x87, 0x67, 0x51, 0xd0, 0x27, 0xef, 0xfb, 0x88, 0x8f, 0x22, 0x75, 0x73, 0x03,
0x7f, 0xd3, 0xe5, 0xe8, 0xec, 0x6e, 0xa5, 0x60, 0x21, 0x03, 0xc1, 0x33, 0x69, 0x6c, 0xde, 0x8d,
0x94, 0xa9, 0xec, 0xa0, 0x35, 0x63, 0xdc, 0x7d, 0xc1, 0xda, 0xc4, 0x9d, 0x3d, 0x9a, 0x3b, 0x11,
0x71, 0x6b, 0x20, 0x38, 0xf9, 0x32, 0xa4, 0x52, 0xc4, 0xdc, 0x89, 0xf8, 0x1f, 0x09, 0xd1, 0x39,
0x3b, 0xe6, 0xc2, 0xcd, 0xa1, 0x55, 0x2f, 0x3c, 0x67, 0x9b, 0x20, 0xaa, 0x67, 0xe2, 0x03, 0x51,
0x46, 0x6c, 0x07, 0x26, 0x84, 0x0a, 0x6a, 0xfe, 0xc6, 0xb0, 0xb8, 0xf5, 0x9d, 0x87, 0x45, 0x9c,
0x85, 0x16, 0xba, 0x62, 0x9c, 0x20, 0xee, 0x97, 0xe6, 0x71, 0xe3, 0x74, 0x2e, 0x62, 0xca, 0xd5,
0xe9, 0x1c, 0x49, 0xc6, 0x1f, 0x0e, 0x8f, 0xfc, 0xfe, 0x4b, 0x71, 0x98, 0x6c, 0x0b, 0xef, 0x98,
0x05, 0x52, 0x60, 0x64, 0xb6, 0xae, 0x14, 0xbd, 0x54, 0x77, 0x4d, 0x88, 0x6d, 0x40, 0x8b, 0x2c,
0x17, 0x72, 0x65, 0x17, 0x68, 0x65, 0x3b, 0xa6, 0x69, 0x83, 0xd6, 0xd6, 0x2c, 0x64, 0xc6, 0x05,
0x2c, 0x16, 0xa2, 0xbc, 0xfd, 0xc1, 0x40, 0x86, 0x54, 0x74, 0xc4, 0xfd, 0x4a, 0x0d, 0x90, 0x6d,
0x44, 0x4c, 0x98, 0x28, 0xb0, 0x44, 0x05, 0x2c, 0x8c, 0x5d, 0x17, 0x96, 0xc3, 0xb1, 0x1f, 0x0c,
0x28, 0x60, 0x49, 0x1c, 0x3f, 0x35, 0x86, 0x75, 0xa8, 0xdf, 0xb4, 0x71, 0x2e, 0xd3, 0xac, 0x58,
0x18, 0xce, 0x8d, 0x4e, 0x8f, 0xb2, 0xb0, 0x70, 0x1b, 0x64, 0x1f, 0x92, 0x53, 0x3b, 0xe5, 0x14,
0xfb, 0xbd, 0xb0, 0xf1, 0x8e, 0x1c, 0xb3, 0x24, 0x5b, 0xf5, 0xf7, 0x10, 0x8b, 0xb8, 0xa2, 0x24,
0xaa, 0x6d, 0xc2, 0xaf, 0xb0, 0x6a, 0xa9, 0x6d, 0xb2, 0x28, 0xf9, 0x15, 0x44, 0x01, 0x67, 0x13,
0xda, 0x66, 0x05, 0xac, 0x01, 0xf5, 0xa7, 0x07, 0x3b, 0xfb, 0x9d, 0x4b, 0xac, 0x05, 0x73, 0x87,
0x3b, 0xcf, 0x9e, 0xed, 0xed, 0x6c, 0x77, 0x2a, 0xac, 0x0d, 0x0d, 0x1d, 0xef, 0x5a, 0xc5, 0xd4,
0xe6, 0xd6, 0xd6, 0xce, 0xc1, 0xb3, 0x9d, 0xed, 0x4e, 0xed, 0xb3, 0x7a, 0xa3, 0xda, 0xa9, 0x39,
0x7f, 0x54, 0x83, 0x96, 0x51, 0xff, 0x1b, 0x6c, 0x46, 0xd7, 0x01, 0xe8, 0x44, 0x91, 0xc5, 0xb4,
0xd4, 0x5d, 0x03, 0x41, 0x09, 0xa9, 0xcf, 0xda, 0x35, 0x71, 0xd9, 0x54, 0xa5, 0x69, 0xd6, 0xe8,
0x56, 0xa7, 0xe9, 0xc4, 0x99, 0x71, 0x6d, 0x10, 0x29, 0x4a, 0x02, 0x14, 0x84, 0x29, 0xf8, 0xd0,
0x84, 0x70, 0x85, 0x62, 0x9e, 0x44, 0xc3, 0x33, 0x2e, 0x8a, 0x08, 0xbd, 0xcc, 0xc2, 0xb0, 0x2d,
0x29, 0x6a, 0x8c, 0x00, 0xe9, 0x19, 0xd7, 0x06, 0xd9, 0xb7, 0xd5, 0x0a, 0x35, 0x68, 0x85, 0xd6,
0x8a, 0xd3, 0x6d, 0xad, 0xce, 0x93, 0x82, 0xd1, 0xa7, 0x49, 0xcb, 0xf4, 0xcd, 0xe2, 0x77, 0x7f,
0x3e, 0xc6, 0x9f, 0x14, 0xd8, 0xe6, 0x60, 0x20, 0x9b, 0x35, 0xef, 0xd2, 0xc6, 0xe6, 0xe5, 0x6d,
0x25, 0xdb, 0x4a, 0xe4, 0x47, 0xb5, 0x5c, 0x7e, 0xbc, 0x96, 0xcb, 0x9c, 0xc7, 0xd0, 0x3a, 0x30,
0xae, 0x83, 0x3b, 0x28, 0x6a, 0xd5, 0x45, 0x70, 0x21, 0x84, 0x85, 0xd1, 0x27, 0x43, 0x8d, 0x2e,
0x55, 0xcd, 0x2e, 0x39, 0xff, 0xb0, 0x22, 0x6e, 0xd8, 0xe9, 0x21, 0x88, 0xf6, 0x1d, 0x68, 0x6b,
0xbf, 0x41, 0x76, 0x29, 0xc1, 0xc2, 0xb0, 0x0c, 0x75, 0xc7, 0x8b, 0x8e, 0x8f, 0x13, 0xae, 0xc2,
0x87, 0x2d, 0x4c, 0x69, 0xb5, 0xa8, 0x27, 0x07, 0xa2, 0x85, 0x44, 0x86, 0x11, 0x17, 0x70, 0xa4,
0x5c, 0x69, 0xb7, 0x55, 0x81, 0xd3, 0x3a, 0xad, 0xef, 0x4e, 0xe4, 0x67, 0xfa, 0x2e, 0x34, 0x74,
0xbd, 0xf6, 0x96, 0xa5, 0x4a, 0xea, 0x7c, 0xdc, 0x1a, 0xe9, 0xc4, 0x6b, 0x75, 0x5a, 0x30, 0x50,
0x31, 0x83, 0xad, 0x03, 0x3b, 0x0e, 0xe2, 0x7c, 0x71, 0xc1, 0x51, 0x25, 0x39, 0xce, 0x0b, 0x58,
0x56, 0xe2, 0xc0, 0x50, 0xb7, 0xed, 0x85, 0xac, 0xbc, 0x49, 0x5c, 0x56, 0x8b, 0xe2, 0xd2, 0xf9,
0x97, 0x75, 0x98, 0x93, 0xab, 0x5d, 0x78, 0x56, 0x40, 0x6c, 0xb8, 0x16, 0xc6, 0xba, 0xd6, 0xe5,
0x51, 0x22, 0x04, 0xb9, 0x89, 0xde, 0xc9, 0x6f, 0x83, 0x99, 0xf1, 0x2f, 0xb7, 0x15, 0xae, 0x42,
0x7d, 0xec, 0xa7, 0xa7, 0x64, 0x1b, 0x12, 0xb4, 0x44, 0x69, 0x65, 0x5e, 0x9e, 0xb1, 0xcd, 0xcb,
0x65, 0x8f, 0x29, 0x08, 0x9d, 0xaf, 0xf8, 0x98, 0xc2, 0x55, 0x68, 0x8a, 0x6d, 0x3b, 0xb3, 0x20,
0x67, 0x40, 0x6e, 0x9b, 0x6f, 0x14, 0xb6, 0xf9, 0xb7, 0xdf, 0x80, 0xbf, 0x0b, 0xb3, 0xe2, 0x42,
0x91, 0x0c, 0x13, 0xbf, 0xaa, 0x1c, 0xc4, 0xa2, 0x9c, 0xfa, 0x2b, 0xe2, 0xc7, 0x5c, 0x59, 0xd6,
0xbc, 0x92, 0xdc, 0xb2, 0xaf, 0x24, 0x9b, 0x86, 0xef, 0x76, 0xce, 0xf0, 0x7d, 0x17, 0x3a, 0x7a,
0xfa, 0xc8, 0x52, 0x15, 0x26, 0x32, 0x8a, 0xb8, 0x80, 0x67, 0xfb, 0xcb, 0x82, 0xb5, 0xbf, 0xa0,
0xc4, 0xda, 0x4c, 0x53, 0x3e, 0x1a, 0xa7, 0x6a, 0x7f, 0x79, 0x08, 0xf3, 0x56, 0x27, 0x71, 0x5b,
0x91, 0xc1, 0xeb, 0x9d, 0x4b, 0x6c, 0x1e, 0x9a, 0x8f, 0xf7, 0xbd, 0x87, 0x7b, 0x8f, 0x1f, 0xed,
0x3e, 0xeb, 0x54, 0x30, 0x79, 0xf8, 0x7c, 0x6b, 0x6b, 0x67, 0x67, 0x9b, 0xb6, 0x19, 0x80, 0xd9,
0x87, 0x9b, 0x8f, 0x71, 0xcb, 0xa9, 0x39, 0xff, 0xbb, 0x02, 0x2d, 0xa3, 0x7a, 0xf6, 0x3d, 0x3d,
0x33, 0xe2, 0xd6, 0xea, 0xb5, 0x62, 0x17, 0xd6, 0x95, 0xe0, 0x35, 0xa6, 0x46, 0xbf, 0x1f, 0x51,
0x9d, 0xfa, 0x7e, 0x04, 0x2e, 0x8f, 0x2f, 0x6a, 0xd0, 0xf3, 0x20, 0x8e, 0x21, 0x79, 0x58, 0xc4,
0x08, 0x65, 0xbb, 0x05, 0x96, 0x14, 0xa6, 0xb7, 0x3c, 0xec, 0x7c, 0x04, 0x90, 0xf5, 0xc6, 0x1e,
0xf6, 0x25, 0x7b, 0xd8, 0x15, 0x63, 0xd8, 0x55, 0x67, 0x5b, 0x08, 0x0c, 0x39, 0x85, 0xda, 0xc3,
0xf9, 0x6d, 0x60, 0xca, 0xd2, 0x43, 0xb1, 0x78, 0xe3, 0x21, 0x4f, 0xd5, 0x75, 0x92, 0x25, 0x99,
0xf3, 0x58, 0x67, 0xa8, 0x1b, 0x51, 0x59, 0x2d, 0x99, 0xdc, 0x91, 0x14, 0x97, 0x97, 0x3b, 0xb2,
0xa8, 0xab, 0xf3, 0x9d, 0x1e, 0x74, 0xb7, 0x39, 0xd6, 0xb6, 0x39, 0x1c, 0xe6, 0xba, 0x83, 0x47,
0xf5, 0x92, 0x3c, 0x79, 0x8e, 0xff, 0x3e, 0x5c, 0xde, 0x14, 0x37, 0x47, 0x7e, 0x5d, 0x81, 0xc5,
0x4e, 0x17, 0x56, 0xf3, 0x55, 0xca, 0xc6, 0x1e, 0xc2, 0xd2, 0x36, 0x3f, 0x9a, 0x9c, 0xec, 0xf1,
0xb3, 0xac, 0x21, 0x06, 0xf5, 0xe4, 0x34, 0x3a, 0x97, 0xf3, 0x43, 0xbf, 0xd9, 0x35, 0x80, 0x21,
0x96, 0xf1, 0x92, 0x31, 0xef, 0xab, 0x5b, 0xc1, 0x84, 0x1c, 0x8e, 0x79, 0xdf, 0xf9, 0x08, 0x98,
0x59, 0x8f, 0x9c, 0x2f, 0xd4, 0xad, 0x27, 0x47, 0x5e, 0x72, 0x91, 0xa4, 0x7c, 0xa4, 0xae, 0x3b,
0x9b, 0x90, 0x73, 0x1b, 0xda, 0x07, 0xfe, 0x85, 0xcb, 0xbf, 0x90, 0xef, 0x95, 0xac, 0xc1, 0xdc,
0xd8, 0xbf, 0x40, 0x7e, 0xd6, 0xe6, 0x7f, 0xca, 0x76, 0xfe, 0xb4, 0x06, 0xb3, 0xa2, 0x24, 0xd6,
0x3a, 0xe0, 0x49, 0x1a, 0x84, 0xc4, 0x63, 0xaa, 0x56, 0x03, 0x2a, 0x08, 0xcc, 0x6a, 0x89, 0xc0,
0x94, 0x36, 0x29, 0x75, 0xbb, 0x52, 0x92, 0xac, 0x85, 0xa1, 0xd8, 0xca, 0x6e, 0x08, 0x08, 0x4a,
0xcd, 0x80, 0x9c, 0x7f, 0x2d, 0xd3, 0xe0, 0x45, 0xff, 0xd4, 0x5e, 0x20, 0x65, 0xa2, 0x09, 0x95,
0x9e, 0x13, 0xe6, 0x54, 0x3c, 0x76, 0xee, 0x9c, 0x50, 0x38, 0x0f, 0x34, 0xde, 0xe2, 0x3c, 0x20,
0x0c, 0x55, 0xaf, 0x3b, 0x0f, 0xc0, 0xdb, 0x9c, 0x07, 0xde, 0xc6, 0xaf, 0xd5, 0x83, 0x06, 0xed,
0xe9, 0x86, 0x88, 0x54, 0x69, 0xe4, 0x17, 0x6d, 0x4e, 0x99, 0xb7, 0xf8, 0x45, 0xda, 0x53, 0x5c,
0x9d, 0xef, 0x8c, 0x60, 0x4e, 0x82, 0xa8, 0x8a, 0x1d, 0x05, 0xa9, 0xb4, 0x5c, 0xe2, 0x4f, 0xa4,
0xc8, 0xd0, 0x1f, 0xa9, 0xdb, 0xe8, 0xf4, 0x1b, 0x87, 0x4c, 0x97, 0x62, 0xbf, 0x98, 0x04, 0x31,
0x1f, 0xa8, 0x7b, 0x5d, 0x06, 0x44, 0x91, 0xb8, 0x89, 0xf7, 0x32, 0x8c, 0xce, 0x43, 0x79, 0xb3,
0x4b, 0xa7, 0x1d, 0x06, 0x1d, 0x7a, 0x95, 0x02, 0x8f, 0xd3, 0x8a, 0x2d, 0xff, 0x6e, 0x05, 0x3a,
0x92, 0x41, 0x74, 0x9e, 0x72, 0x42, 0xbf, 0xee, 0xfa, 0xe2, 0x4d, 0x98, 0xa7, 0xc3, 0xbc, 0xde,
0x2a, 0xa4, 0x43, 0xd7, 0x02, 0xb1, 0xbf, 0x2a, 0x14, 0x6e, 0x14, 0x0c, 0x25, 0xbd, 0x99, 0x90,
0xda, 0x6d, 0x62, 0x5f, 0x06, 0xf1, 0x57, 0x5c, 0x9d, 0x76, 0xfe, 0xb8, 0x02, 0x4b, 0x46, 0x87,
0x25, 0x83, 0x7d, 0x0a, 0x6d, 0xfd, 0xf8, 0x0b, 0xd7, 0xca, 0xd0, 0x9a, 0x2d, 0x11, 0xb2, 0xcf,
0xac, 0xc2, 0x44, 0xa7, 0xfe, 0x05, 0x75, 0x30, 0x99, 0x8c, 0xa4, 0x16, 0x62, 0x42, 0xb8, 0xfe,
0xe7, 0x9c, 0xbf, 0xd4, 0x45, 0x84, 0x1e, 0x64, 0x61, 0xe4, 0x04, 0x89, 0xc2, 0xf4, 0x54, 0x17,
0xaa, 0x4b, 0x27, 0x88, 0x09, 0x3a, 0xff, 0xa9, 0x0a, 0xcb, 0xc2, 0xaa, 0x24, 0xad, 0x79, 0xfa,
0xfe, 0xfd, 0xac, 0x30, 0xb0, 0x09, 0x61, 0xb3, 0x7b, 0xc9, 0x95, 0x69, 0xf6, 0xbd, 0xb7, 0xb4,
0x84, 0xe9, 0xdb, 0x02, 0x53, 0xd6, 0xa2, 0x56, 0xb6, 0x16, 0xaf, 0x99, 0xe9, 0x32, 0x7f, 0xd4,
0x4c, 0xb9, 0x3f, 0xea, 0xed, 0xfc, 0x3f, 0x85, 0x90, 0xfa, 0x39, 0x59, 0xca, 0x0a, 0xa9, 0xdf,
0x80, 0x35, 0x0b, 0x20, 0x39, 0x1b, 0x1c, 0x07, 0x5c, 0xdd, 0x95, 0x5b, 0x4a, 0x78, 0xea, 0x59,
0x45, 0x1e, 0xcc, 0xc1, 0x4c, 0xd2, 0x8f, 0xc6, 0xdc, 0x59, 0x85, 0x15, 0x7b, 0x72, 0xa5, 0x74,
0xff, 0x45, 0x05, 0xba, 0x0f, 0x85, 0x23, 0x3f, 0x08, 0x4f, 0x76, 0x83, 0x24, 0x8d, 0x62, 0xfd,
0x4c, 0xca, 0x75, 0x80, 0x24, 0xf5, 0x63, 0x79, 0xde, 0x13, 0x4a, 0xaa, 0x81, 0xe0, 0x1c, 0xf1,
0x70, 0x20, 0x72, 0x05, 0x6d, 0xe8, 0x74, 0xe1, 0x10, 0x20, 0x6d, 0x6e, 0x96, 0x2a, 0x7d, 0x4b,
0xdc, 0xf4, 0xc1, 0xc9, 0xe0, 0x67, 0xb4, 0x65, 0x0a, 0x43, 0x56, 0x0e, 0x75, 0x7e, 0xbf, 0x0a,
0x8b, 0x59, 0x27, 0x29, 0xc2, 0xcc, 0x16, 0xbc, 0x52, 0x7f, 0xce, 0x04, 0xaf, 0xf4, 0x8f, 0x79,
0x01, 0x2a, 0xd4, 0x86, 0xd9, 0xcd, 0x40, 0xd9, 0x4d, 0x68, 0xa9, 0x54, 0x34, 0x49, 0x8d, 0xf7,
0x0a, 0x4c, 0x58, 0xc4, 0xe3, 0xa3, 0x4a, 0x2f, 0x8f, 0x27, 0x32, 0x45, 0x77, 0x27, 0x47, 0x29,
0x7d, 0x29, 0xd6, 0x54, 0x25, 0x51, 0x36, 0xa1, 0x2e, 0x2c, 0xd6, 0x90, 0xf4, 0x60, 0x53, 0x47,
0x6c, 0xe8, 0x77, 0x9e, 0x34, 0xcf, 0x8b, 0x1a, 0xb3, 0xcb, 0x14, 0x75, 0xd7, 0x84, 0x94, 0xd9,
0x23, 0x9a, 0x18, 0x41, 0x01, 0x75, 0xd7, 0xc2, 0x9c, 0xdf, 0xab, 0xc0, 0x95, 0x92, 0x65, 0x94,
0x32, 0x60, 0x1b, 0x96, 0x8e, 0x75, 0xa6, 0x9a, 0x6a, 0x21, 0x08, 0x56, 0x95, 0xb4, 0xb5, 0xa7,
0xd7, 0x2d, 0x7e, 0xa0, 0x8f, 0x49, 0x62, 0xf1, 0xac, 0xbb, 0x33, 0xc5, 0x0c, 0xe7, 0x00, 0x7a,
0x3b, 0xaf, 0x50, 0xa4, 0x6c, 0x99, 0x8f, 0x76, 0x2a, 0xca, 0xda, 0x28, 0x88, 0xcc, 0x37, 0x5b,
0x5b, 0x8f, 0x61, 0xde, 0xaa, 0x8b, 0x7d, 0xe7, 0x6d, 0x2b, 0x31, 0xb9, 0xff, 0x86, 0x5c, 0x75,
0xf1, 0xea, 0xa8, 0xba, 0xc1, 0x63, 0x40, 0xce, 0x19, 0x2c, 0x3e, 0x99, 0x0c, 0xd3, 0x20, 0x7b,
0x81, 0x94, 0x7d, 0x4f, 0x7e, 0x44, 0x55, 0xa8, 0xa9, 0x2b, 0x6d, 0xca, 0x2c, 0x87, 0x33, 0x36,
0xc2, 0x9a, 0xbc, 0x62, 0x8b, 0xc5, 0x0c, 0xe7, 0x0a, 0xac, 0x65, 0x4d, 0x8a, 0xb9, 0x53, 0xdb,
0xce, 0x1f, 0x54, 0x44, 0x18, 0xaa, 0xfd, 0x20, 0x2a, 0x7b, 0x04, 0xcb, 0x49, 0x10, 0x9e, 0x0c,
0xb9, 0x59, 0x4f, 0x22, 0x67, 0xe2, 0xb2, 0xdd, 0x3d, 0xf9, 0x68, 0xaa, 0x5b, 0xf6, 0x05, 0x12,
0x48, 0x79, 0x47, 0x33, 0x02, 0xc9, 0x4d, 0x49, 0xd9, 0x00, 0x3e, 0x83, 0x05, 0xbb, 0x31, 0xf6,
0xb1, 0xbc, 0x78, 0x93, 0xf5, 0xcc, 0x74, 0x8f, 0xda, 0x94, 0x61, 0x95, 0x74, 0x7e, 0x5e, 0x81,
0xae, 0xcb, 0x91, 0x8c, 0xb9, 0xd1, 0xa8, 0xa4, 0x9e, 0x4f, 0x0b, 0xd5, 0x4e, 0x1f, 0xb0, 0xbe,
0xd0, 0xa3, 0xc6, 0xba, 0x3e, 0x75, 0x51, 0x76, 0x2f, 0x95, 0x8c, 0xea, 0x41, 0x03, 0x66, 0xe5,
0xf8, 0xd6, 0xe0, 0xb2, 0xec, 0x92, 0xea, 0x4e, 0xe6, 0x57, 0xb3, 0x1a, 0xb5, 0xfc, 0x6a, 0x3d,
0xe8, 0x8a, 0xd7, 0x70, 0xcc, 0x71, 0xc8, 0x0f, 0xb7, 0x81, 0x3d, 0xf1, 0xfb, 0x7e, 0x1c, 0x45,
0xe1, 0x01, 0x8f, 0x65, 0xdc, 0x20, 0x69, 0x8d, 0xe4, 0x76, 0x52, 0x0a, 0xae, 0x48, 0xa9, 0x07,
0x5c, 0xa2, 0x50, 0x3d, 0x94, 0x23, 0x52, 0x8e, 0x0b, 0xcb, 0x0f, 0xfc, 0x97, 0x5c, 0xd5, 0x94,
0xcd, 0x52, 0x6b, 0xac, 0x2b, 0x55, 0x73, 0xaf, 0xee, 0xd4, 0x15, 0x9b, 0x75, 0xcd, 0xd2, 0xce,
0x06, 0xac, 0xd8, 0x75, 0x4a, 0x51, 0xd2, 0x83, 0xc6, 0x48, 0x62, 0xb2, 0x77, 0x3a, 0x7d, 0xf7,
0x2b, 0x68, 0x19, 0x2f, 0x1c, 0xb1, 0x35, 0x58, 0x7e, 0xf1, 0xf8, 0xd9, 0xfe, 0xce, 0xe1, 0xa1,
0x77, 0xf0, 0xfc, 0xc1, 0xe7, 0x3b, 0x3f, 0xf4, 0x76, 0x37, 0x0f, 0x77, 0x3b, 0x97, 0xd8, 0x2a,
0xb0, 0xfd, 0x9d, 0xc3, 0x67, 0x3b, 0xdb, 0x16, 0x5e, 0x61, 0xd7, 0xa1, 0xf7, 0x7c, 0xff, 0xf9,
0xe1, 0xce, 0xb6, 0x57, 0xf6, 0x5d, 0x95, 0x5d, 0x83, 0x2b, 0x32, 0xbf, 0xe4, 0xf3, 0xda, 0xdd,
0x4f, 0xa1, 0x93, 0x37, 0x0f, 0x5a, 0x66, 0xd5, 0xd7, 0xd9, 0x5f, 0x37, 0x7e, 0x5e, 0x83, 0x05,
0x11, 0x18, 0x2c, 0x9e, 0x14, 0xe6, 0x31, 0x7b, 0x02, 0x73, 0xf2, 0x6d, 0x6a, 0xa6, 0x48, 0xcb,
0x7e, 0x0d, 0xbb, 0xb7, 0x9a, 0x87, 0xe5, 0xb2, 0x2e, 0xff, 0x95, 0x7f, 0xf7, 0xdf, 0xfe, 0x56,
0x75, 0x9e, 0xb5, 0xee, 0x9d, 0x7d, 0x78, 0xef, 0x84, 0x87, 0x09, 0xd6, 0xf1, 0x3b, 0x00, 0xd9,
0x8b, 0xcb, 0xac, 0xab, 0xad, 0x51, 0xb9, 0xe7, 0xa8, 0x7b, 0x57, 0x4a, 0x72, 0x64, 0xbd, 0x57,
0xa8, 0xde, 0x65, 0x67, 0x01, 0xeb, 0x0d, 0xc2, 0x20, 0x15, 0xaf, 0x2f, 0x7f, 0x52, 0xb9, 0xcb,
0x06, 0xd0, 0x36, 0xdf, 0x42, 0x66, 0xca, 0x4d, 0x5a, 0xf2, 0x9a, 0x73, 0xef, 0x9d, 0xd2, 0x3c,
0x45, 0xcb, 0xd4, 0xc6, 0x65, 0xa7, 0x83, 0x6d, 0x4c, 0xa8, 0x44, 0xd6, 0xca, 0x50, 0x70, 0x78,
0xf6, 0xe4, 0x31, 0xbb, 0x6a, 0x30, 0x5d, 0xe1, 0xc1, 0xe5, 0xde, 0xb5, 0x29, 0xb9, 0xb2, 0xad,
0x6b, 0xd4, 0xd6, 0x9a, 0xc3, 0xb0, 0xad, 0x3e, 0x95, 0x51, 0x0f, 0x2e, 0x7f, 0x52, 0xb9, 0xbb,
0xf1, 0xaf, 0x6f, 0x43, 0x53, 0x87, 0x50, 0xb0, 0x9f, 0xc2, 0xbc, 0x15, 0xb9, 0xcd, 0xd4, 0x30,
0xca, 0x02, 0xbd, 0x7b, 0x57, 0xcb, 0x33, 0x65, 0xc3, 0xd7, 0xa9, 0xe1, 0x2e, 0x5b, 0xc5, 0x86,
0x65, 0xe8, 0xf3, 0x3d, 0xba, 0x83, 0x20, 0xae, 0x3c, 0xbf, 0x34, 0x24, 0x99, 0x68, 0xec, 0x6a,
0x5e, 0xb8, 0x58, 0xad, 0x5d, 0x9b, 0x92, 0x2b, 0x9b, 0xbb, 0x4a, 0xcd, 0xad, 0xb2, 0x15, 0xb3,
0x39, 0x1d, 0xd6, 0xc0, 0xe9, 0x9e, 0xbf, 0xf9, 0x1a, 0x30, 0xbb, 0xa6, 0x09, 0xab, 0xec, 0x95,
0x60, 0x4d, 0x22, 0xc5, 0xa7, 0x82, 0x9d, 0x2e, 0x35, 0xc5, 0x18, 0x2d, 0x9f, 0xf9, 0x18, 0x30,
0x3b, 0x82, 0x96, 0xf1, 0xd8, 0x1e, 0xbb, 0x32, 0xf5, 0x61, 0xc0, 0x5e, 0xaf, 0x2c, 0xab, 0x6c,
0x28, 0x66, 0xfd, 0xf7, 0x50, 0xd1, 0xf9, 0x31, 0x34, 0xf5, 0xf3, 0x6d, 0x6c, 0xcd, 0x78, 0x4e,
0xcf, 0x7c, 0x6e, 0xae, 0xd7, 0x2d, 0x66, 0x94, 0x11, 0x9f, 0x59, 0x3b, 0x12, 0xdf, 0x0b, 0x68,
0x19, 0x4f, 0xb4, 0xe9, 0x01, 0x14, 0x9f, 0x81, 0xd3, 0x03, 0x28, 0x79, 0xd1, 0xcd, 0x59, 0xa2,
0x26, 0x5a, 0xac, 0x49, 0xf4, 0x9d, 0xbe, 0x8a, 0x12, 0xb6, 0x07, 0x97, 0xa5, 0xc4, 0x3e, 0xe2,
0x5f, 0x67, 0x19, 0x4a, 0x1e, 0x60, 0xbe, 0x5f, 0x61, 0x9f, 0x42, 0x43, 0xbd, 0xc4, 0xc7, 0x56,
0xcb, 0x5f, 0x14, 0xec, 0xad, 0x15, 0x70, 0x29, 0x5e, 0x7f, 0x08, 0x90, 0xbd, 0x07, 0xa7, 0x85,
0x44, 0xe1, 0x7d, 0x39, 0x4d, 0x01, 0xc5, 0xc7, 0xe3, 0x9c, 0x55, 0x1a, 0x60, 0x87, 0x91, 0x90,
0x08, 0xf9, 0xb9, 0x7a, 0xd2, 0xe3, 0x27, 0xd0, 0x32, 0x9e, 0x84, 0xd3, 0xd3, 0x57, 0x7c, 0x4e,
0x4e, 0x4f, 0x5f, 0xc9, 0x0b, 0x72, 0x4e, 0x8f, 0x6a, 0x5f, 0x71, 0x16, 0xb1, 0xf6, 0x24, 0x38,
0x09, 0x47, 0xa2, 0x00, 0x2e, 0xd0, 0x29, 0xcc, 0x5b, 0xef, 0xbe, 0x69, 0x0e, 0x2d, 0x7b, 0x55,
0x4e, 0x73, 0x68, 0xe9, 0x53, 0x71, 0x8a, 0xce, 0x9c, 0x25, 0x6c, 0xe7, 0x8c, 0x8a, 0x18, 0x2d,
0xfd, 0x08, 0x5a, 0xc6, 0x1b, 0x6e, 0x7a, 0x2c, 0xc5, 0xe7, 0xe2, 0xf4, 0x58, 0xca, 0x9e, 0x7c,
0x5b, 0xa1, 0x36, 0x16, 0x1c, 0x22, 0x05, 0x7a, 0x9c, 0x02, 0xeb, 0xfe, 0x29, 0x2c, 0xd8, 0xaf,
0xba, 0x69, 0xde, 0x2f, 0x7d, 0x1f, 0x4e, 0xf3, 0xfe, 0x94, 0xa7, 0xe0, 0x24, 0x49, 0xdf, 0x5d,
0xd6, 0x8d, 0xdc, 0xfb, 0x52, 0x06, 0x61, 0x7e, 0xc5, 0xbe, 0x8f, 0x02, 0x4e, 0xbe, 0x16, 0xc2,
0xd6, 0x0c, 0xaa, 0x35, 0xdf, 0x14, 0xd1, 0xfc, 0x52, 0x78, 0x58, 0xc4, 0x26, 0x66, 0xf1, 0xbc,
0x06, 0xed, 0x5a, 0xf4, 0x6a, 0x88, 0xb1, 0x6b, 0x99, 0x0f, 0x8b, 0x18, 0xbb, 0x96, 0xf5, 0xb8,
0x48, 0x7e, 0xd7, 0x4a, 0x03, 0xac, 0x23, 0x84, 0xc5, 0xdc, 0xed, 0x32, 0xcd, 0x15, 0xe5, 0x17,
0x80, 0x7b, 0xd7, 0x5f, 0x7f, 0x29, 0xcd, 0x96, 0x20, 0x4a, 0x08, 0xde, 0x53, 0xd7, 0xad, 0x7f,
0x17, 0xda, 0xe6, 0x4b, 0x53, 0xcc, 0x64, 0xe5, 0x7c, 0x4b, 0xef, 0x94, 0xe6, 0xd9, 0x8b, 0xcb,
0xda, 0x66, 0x33, 0xec, 0x07, 0xb0, 0xaa, 0x59, 0xdd, 0xbc, 0xb0, 0x94, 0xb0, 0x77, 0x4b, 0xae,
0x31, 0x99, 0x7a, 0x5c, 0xef, 0xca, 0xd4, 0x7b, 0x4e, 0xf7, 0x2b, 0x48, 0x34, 0xf6, 0xf3, 0x3d,
0xd9, 0x86, 0x51, 0xf6, 0x6a, 0x51, 0xb6, 0x61, 0x94, 0xbe, 0xf9, 0xa3, 0x88, 0x86, 0x2d, 0x5b,
0x73, 0x24, 0xe2, 0x55, 0xd8, 0x8f, 0x60, 0xd1, 0xb8, 0x12, 0x7a, 0x78, 0x11, 0xf6, 0x35, 0x03,
0x14, 0x5f, 0x2c, 0xe8, 0x95, 0x9d, 0x52, 0x9c, 0x35, 0xaa, 0x7f, 0xc9, 0xb1, 0x26, 0x07, 0x89,
0x7f, 0x0b, 0x5a, 0xe6, 0x75, 0xd3, 0xd7, 0xd4, 0xbb, 0x66, 0x64, 0x99, 0x97, 0xed, 0xef, 0x57,
0xd8, 0x81, 0x88, 0x5b, 0xd4, 0x4f, 0x09, 0x47, 0x71, 0x7e, 0xfb, 0xb4, 0x9f, 0x18, 0xd6, 0x0b,
0x59, 0xf6, 0xb8, 0xf4, 0x9d, 0xca, 0xfd, 0x0a, 0xfb, 0x7b, 0x15, 0x68, 0x5b, 0xd7, 0x41, 0xad,
0x28, 0xb0, 0x5c, 0xcf, 0xba, 0x66, 0x9e, 0xd9, 0x35, 0xc7, 0xa5, 0x61, 0xef, 0xdd, 0xfd, 0xcc,
0x9a, 0xd6, 0x2f, 0x2d, 0x53, 0xdd, 0x7a, 0xfe, 0x3d, 0xe1, 0xaf, 0xf2, 0x05, 0xcc, 0x77, 0x22,
0xbe, 0xba, 0x5f, 0x61, 0x7f, 0x58, 0x81, 0x05, 0xdb, 0x76, 0xae, 0x87, 0x5b, 0x6a, 0xa5, 0xd7,
0x8b, 0x3f, 0xc5, 0xe0, 0xfe, 0x23, 0xea, 0xe5, 0xb3, 0xbb, 0xae, 0xd5, 0x4b, 0xf9, 0x54, 0xd4,
0xaf, 0xd6, 0x5b, 0xf6, 0x89, 0x78, 0xa6, 0x5f, 0xb9, 0x0d, 0x59, 0xf1, 0x59, 0x77, 0x4d, 0x30,
0xe6, 0xe3, 0xe9, 0xb4, 0x08, 0x3f, 0x11, 0xef, 0xe8, 0x2a, 0xdf, 0x13, 0xd2, 0xdd, 0xdb, 0x7e,
0xef, 0xdc, 0xa4, 0x31, 0x5d, 0x77, 0xae, 0x58, 0x63, 0xca, 0xef, 0xf0, 0x9b, 0xa2, 0x77, 0xf2,
0xdd, 0xf3, 0x6c, 0x8b, 0x2a, 0xbc, 0x85, 0x3e, 0xbd, 0x93, 0x23, 0xd1, 0x49, 0x59, 0xdc, 0x62,
0x8e, 0xb7, 0xac, 0xc6, 0xb9, 0x4b, 0x7d, 0xbd, 0xe9, 0xbc, 0x3b, 0xb5, 0xaf, 0xf7, 0xc8, 0x02,
0x8e, 0x3d, 0x3e, 0x00, 0xc8, 0xdc, 0xfc, 0x2c, 0xe7, 0x62, 0xd6, 0x22, 0xa3, 0x18, 0x09, 0x60,
0x73, 0xa0, 0xf2, 0x44, 0x63, 0x8d, 0x3f, 0x16, 0x02, 0xf0, 0xb1, 0x72, 0x4e, 0x9b, 0x6a, 0x8e,
0xed, 0x8b, 0xb7, 0xd4, 0x9c, 0x7c, 0xfd, 0x96, 0xf8, 0xd3, 0x9e, 0xee, 0xe7, 0x30, 0xbf, 0x17,
0x45, 0x2f, 0x27, 0x63, 0x1d, 0xa0, 0x65, 0x3b, 0xa7, 0x76, 0xfd, 0xe4, 0xb4, 0x97, 0x1b, 0x85,
0x73, 0x83, 0xaa, 0xea, 0xb1, 0xae, 0x51, 0xd5, 0xbd, 0x2f, 0xb3, 0x10, 0x82, 0xaf, 0x98, 0x0f,
0x4b, 0x5a, 0xaa, 0xea, 0x8e, 0xf7, 0xec, 0x6a, 0x2c, 0x59, 0x9a, 0x6f, 0xc2, 0xd2, 0xc7, 0x55,
0x6f, 0xef, 0x25, 0xaa, 0x4e, 0x92, 0x29, 0xed, 0x6d, 0xde, 0xa7, 0x9b, 0x62, 0xe4, 0xe1, 0x59,
0xce, 0x3a, 0xae, 0x5d, 0x43, 0xbd, 0x79, 0x0b, 0xb4, 0x77, 0x9a, 0xb1, 0x7f, 0x11, 0xf3, 0x2f,
0xee, 0x7d, 0x29, 0x7d, 0x47, 0x5f, 0xa9, 0x9d, 0x46, 0x39, 0xd7, 0xac, 0x9d, 0x26, 0xe7, 0x8d,
0xb3, 0x76, 0x9a, 0x82, 0x37, 0xce, 0x9a, 0x6a, 0xe5, 0xdc, 0x63, 0x43, 0x58, 0x2a, 0x38, 0xf0,
0xf4, 0x26, 0x33, 0xcd, 0xed, 0xd7, 0xbb, 0x31, 0xbd, 0x80, 0xdd, 0xda, 0x5d, 0xbb, 0xb5, 0x43,
0x98, 0xdf, 0xe6, 0x62, 0xb2, 0x44, 0x44, 0x7a, 0xee, 0x4e, 0xb1, 0x19, 0xef, 0x9e, 0xdf, 0x12,
0x28, 0xcf, 0x56, 0x25, 0x28, 0x14, 0x9c, 0xfd, 0x18, 0x5a, 0x8f, 0x78, 0xaa, 0x42, 0xd0, 0xb5,
0x32, 0x9b, 0x8b, 0x49, 0xef, 0x95, 0x44, 0xb0, 0xdb, 0x34, 0x43, 0xb5, 0xdd, 0xe3, 0x83, 0x13,
0x2e, 0x84, 0x93, 0x17, 0x0c, 0xbe, 0x62, 0x7f, 0x91, 0x2a, 0xd7, 0x77, 0x70, 0x56, 0x8d, 0x78,
0x62, 0xb3, 0xf2, 0xc5, 0x1c, 0x5e, 0x56, 0x73, 0x18, 0x0d, 0xb8, 0xa1, 0x54, 0x85, 0xd0, 0x32,
0xee, 0xf0, 0x69, 0x06, 0x2a, 0x5e, 0x79, 0xd4, 0x0c, 0x54, 0x72, 0xe5, 0xcf, 0xb9, 0x43, 0xed,
0x38, 0xec, 0x46, 0xd6, 0x8e, 0xb8, 0xe6, 0x97, 0xb5, 0x74, 0xef, 0x4b, 0x7f, 0x94, 0x7e, 0xc5,
0x5e, 0xd0, 0xd3, 0x6d, 0x66, 0x88, 0x7d, 0xa6, 0x9d, 0xe7, 0xa3, 0xf1, 0xf5, 0x64, 0x19, 0x59,
0xb6, 0xc6, 0x2e, 0x9a, 0x22, 0xdd, 0xeb, 0x7b, 0x00, 0x87, 0x69, 0x34, 0xde, 0xf6, 0xf9, 0x28,
0x0a, 0x33, 0x59, 0x9b, 0x05, 0x78, 0x67, 0xf2, 0xcb, 0x88, 0xf2, 0x66, 0x2f, 0x8c, 0xe3, 0x8c,
0x75, 0x4b, 0x41, 0x11, 0xd7, 0xd4, 0x18, 0x70, 0x3d, 0x21, 0x25, 0x71, 0xe0, 0xf7, 0x2b, 0x6c,
0x13, 0x20, 0xf3, 0xe0, 0xea, 0xc3, 0x49, 0xc1, 0x39, 0xac, 0xc5, 0x5e, 0x89, 0xbb, 0xf7, 0x00,
0x9a, 0x99, 0xdf, 0x6c, 0x2d, 0xbb, 0xd1, 0x6b, 0x79, 0xd9, 0xf4, 0x0e, 0x5e, 0xf0, 0x66, 0x39,
0x1d, 0x9a, 0x2a, 0x60, 0x0d, 0x9c, 0x2a, 0x72, 0x51, 0x05, 0xb0, 0x2c, 0x3a, 0xa8, 0x15, 0x1c,
0x0a, 0x4c, 0x56, 0x23, 0x29, 0xf1, 0x28, 0x69, 0x6e, 0x2e, 0x75, 0x88, 0x58, 0x36, 0x16, 0xa4,
0x56, 0x11, 0x14, 0x8d, 0xa2, 0x79, 0x04, 0x4b, 0x05, 0x1b, 0xbb, 0x66, 0xe9, 0x69, 0x4e, 0x14,
0xcd, 0xd2, 0x53, 0xcd, 0xf3, 0xce, 0x65, 0x6a, 0x72, 0xd1, 0x01, 0x3a, 0x53, 0x9d, 0x07, 0x69,
0xff, 0x14, 0x9b, 0xfb, 0x83, 0x0a, 0x2c, 0x97, 0x98, 0xd0, 0xd9, 0x7b, 0xea, 0x78, 0x3e, 0xd5,
0xbc, 0xde, 0x2b, 0xb5, 0xb0, 0x3a, 0x87, 0xd4, 0xce, 0x13, 0xf6, 0xb9, 0xb5, 0xb1, 0x09, 0xe3,
0xa6, 0xe4, 0xcc, 0xd7, 0x2a, 0x15, 0xa5, 0x1a, 0xc5, 0x17, 0xb0, 0x26, 0x3a, 0xb2, 0x39, 0x1c,
0xe6, 0xac, 0xbf, 0xd7, 0x0b, 0xff, 0xca, 0xcb, 0xb2, 0x6a, 0xf7, 0xa6, 0xff, 0xab, 0xaf, 0x29,
0x0a, 0xb0, 0xe8, 0x2a, 0x9b, 0x40, 0x27, 0x6f, 0x51, 0x65, 0xd3, 0xeb, 0xea, 0xbd, 0x6b, 0x1d,
0x34, 0x4b, 0xac, 0xb0, 0xdf, 0xa4, 0xc6, 0xde, 0x75, 0x7a, 0x65, 0xf3, 0x22, 0xce, 0x9e, 0xb8,
0x1e, 0x7f, 0x59, 0x9b, 0x7f, 0x73, 0xe3, 0x54, 0x0d, 0x4c, 0xb3, 0x57, 0xeb, 0xa3, 0x6e, 0xb9,
0xf5, 0xf8, 0x16, 0x35, 0x7f, 0xc3, 0x79, 0xa7, 0xac, 0xf9, 0x58, 0x7c, 0x22, 0x0e, 0xbd, 0x6b,
0x79, 0xbe, 0x56, 0x3d, 0xb8, 0x51, 0xb6, 0xde, 0x53, 0x4f, 0x2f, 0xb9, 0xb9, 0xbe, 0x44, 0xba,
0x5d, 0xdb, 0x34, 0xf7, 0x6a, 0xf6, 0x29, 0xb1, 0x2b, 0x6b, 0xf6, 0x29, 0xb3, 0x0f, 0xdb, 0x7a,
0x8d, 0xb2, 0x0c, 0x7f, 0x52, 0xb9, 0xfb, 0xe0, 0xf6, 0x8f, 0xbe, 0x79, 0x12, 0xa4, 0xa7, 0x93,
0xa3, 0xf5, 0x7e, 0x34, 0xba, 0x37, 0x54, 0x66, 0x3d, 0x79, 0x59, 0xe7, 0xde, 0x30, 0x1c, 0xdc,
0xa3, 0x6a, 0x8f, 0x66, 0xe9, 0x7f, 0x0f, 0x7e, 0xe7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x55,
0x01, 0x55, 0xb7, 0xad, 0x70, 0x00, 0x00,
// 9056 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7d, 0x4d, 0x6c, 0x1c, 0x49,
0x96, 0x9e, 0xea, 0x87, 0x64, 0xd5, 0xab, 0x22, 0x59, 0x0c, 0x52, 0x64, 0xa9, 0x5a, 0x52, 0xab,
0x73, 0x34, 0x92, 0x46, 0xd3, 0x43, 0xa9, 0x39, 0x33, 0xed, 0xde, 0x6e, 0xaf, 0x77, 0x29, 0x92,
0x12, 0xd5, 0x2d, 0x51, 0x9c, 0xa4, 0x34, 0xf2, 0xcc, 0xec, 0x22, 0x27, 0x59, 0x15, 0x24, 0x73,
0x54, 0x95, 0x59, 0x9d, 0x99, 0x45, 0x8a, 0xd3, 0x6e, 0x1f, 0x0c, 0xc3, 0x30, 0x7c, 0x59, 0x8c,
0x0d, 0x03, 0xb6, 0x61, 0x63, 0x81, 0x59, 0x03, 0xc6, 0xc2, 0x07, 0xfb, 0x62, 0xc0, 0x36, 0xd6,
0x27, 0x1f, 0x16, 0x30, 0x60, 0xf8, 0x60, 0x03, 0x06, 0x6c, 0x60, 0x0d, 0xc3, 0x06, 0xec, 0x85,
0xe1, 0x9b, 0x7d, 0x37, 0xde, 0x8b, 0x9f, 0x8c, 0xc8, 0xcc, 0x92, 0xd8, 0x33, 0xed, 0x3d, 0xb1,
0xe2, 0x8b, 0xc8, 0xf8, 0x7d, 0xef, 0xc5, 0x8b, 0xf7, 0x5e, 0x04, 0xa1, 0x19, 0x8f, 0xfb, 0xeb,
0xe3, 0x38, 0x4a, 0x23, 0x36, 0x33, 0x0c, 0xe3, 0x71, 0xbf, 0x77, 0xf5, 0x38, 0x8a, 0x8e, 0x87,
0xfc, 0x9e, 0x3f, 0x0e, 0xee, 0xf9, 0x61, 0x18, 0xa5, 0x7e, 0x1a, 0x44, 0x61, 0x22, 0x0a, 0x39,
0x3f, 0x85, 0x85, 0x47, 0x3c, 0x3c, 0xe0, 0x7c, 0xe0, 0xf2, 0xcf, 0x27, 0x3c, 0x49, 0xd9, 0xb7,
0x61, 0xc9, 0xe7, 0x3f, 0xe7, 0x7c, 0xe0, 0x8d, 0xfd, 0x24, 0x19, 0x9f, 0xc4, 0x7e, 0xc2, 0xbb,
0x95, 0x1b, 0x95, 0x3b, 0x6d, 0xb7, 0x23, 0x32, 0xf6, 0x35, 0xce, 0xde, 0x83, 0x76, 0x82, 0x45,
0x79, 0x98, 0xc6, 0xd1, 0xf8, 0xbc, 0x5b, 0xa5, 0x72, 0x2d, 0xc4, 0x76, 0x04, 0xe4, 0x0c, 0x61,
0x51, 0xb7, 0x90, 0x8c, 0xa3, 0x30, 0xe1, 0xec, 0x3e, 0xac, 0xf4, 0x83, 0xf1, 0x09, 0x8f, 0x3d,
0xfa, 0x78, 0x14, 0xf2, 0x51, 0x14, 0x06, 0xfd, 0x6e, 0xe5, 0x46, 0xed, 0x4e, 0xd3, 0x65, 0x22,
0x0f, 0xbf, 0x78, 0x2a, 0x73, 0xd8, 0x6d, 0x58, 0xe4, 0xa1, 0xc0, 0xf9, 0x80, 0xbe, 0x92, 0x4d,
0x2d, 0x64, 0x30, 0x7e, 0xe0, 0xfc, 0xf5, 0x2a, 0x2c, 0x3d, 0x0e, 0x83, 0xf4, 0xa5, 0x3f, 0x1c,
0xf2, 0x54, 0x8d, 0xe9, 0x36, 0x2c, 0x9e, 0x11, 0x40, 0x63, 0x3a, 0x8b, 0xe2, 0x81, 0x1c, 0xd1,
0x82, 0x80, 0xf7, 0x25, 0x3a, 0xb5, 0x67, 0xd5, 0xa9, 0x3d, 0x2b, 0x9d, 0xae, 0xda, 0x94, 0xe9,
0xba, 0x0d, 0x8b, 0x31, 0xef, 0x47, 0xa7, 0x3c, 0x3e, 0xf7, 0xce, 0x82, 0x70, 0x10, 0x9d, 0x75,
0xeb, 0x37, 0x2a, 0x77, 0x66, 0xdc, 0x05, 0x05, 0xbf, 0x24, 0x94, 0x3d, 0x80, 0xc5, 0xfe, 0x89,
0x1f, 0x86, 0x7c, 0xe8, 0x1d, 0xfa, 0xfd, 0x57, 0x93, 0x71, 0xd2, 0x9d, 0xb9, 0x51, 0xb9, 0xd3,
0xda, 0xb8, 0xb2, 0x4e, 0xab, 0xba, 0xbe, 0x75, 0xe2, 0x87, 0x0f, 0x28, 0xe7, 0x20, 0xf4, 0xc7,
0xc9, 0x49, 0x94, 0xba, 0x0b, 0xf2, 0x0b, 0x01, 0x27, 0xce, 0x0a, 0x30, 0x73, 0x26, 0xc4, 0xdc,
0x3b, 0xff, 0xb8, 0x02, 0xcb, 0x2f, 0xc2, 0x61, 0xd4, 0x7f, 0xf5, 0x2b, 0x4e, 0x51, 0xc9, 0x18,
0xaa, 0x17, 0x1d, 0x43, 0xed, 0xab, 0x8e, 0x61, 0x15, 0x56, 0xec, 0xce, 0xca, 0x51, 0x70, 0xb8,
0x8c, 0x5f, 0x1f, 0x73, 0xd5, 0x2d, 0x35, 0x8c, 0x6f, 0x41, 0xa7, 0x3f, 0x89, 0x63, 0x1e, 0x16,
0xc6, 0xb1, 0x28, 0x71, 0x3d, 0x90, 0xf7, 0xa0, 0x1d, 0xf2, 0xb3, 0xac, 0x98, 0xa4, 0xdd, 0x90,
0x9f, 0xa9, 0x22, 0x4e, 0x17, 0x56, 0xf3, 0xcd, 0xc8, 0x0e, 0xfc, 0xd7, 0x0a, 0xd4, 0x5f, 0xa4,
0xaf, 0x23, 0xb6, 0x0e, 0xf5, 0xf4, 0x7c, 0x2c, 0x38, 0x64, 0x61, 0x83, 0xc9, 0xa1, 0x6d, 0x0e,
0x06, 0x31, 0x4f, 0x92, 0xe7, 0xe7, 0x63, 0xee, 0xb6, 0x7d, 0x91, 0xf0, 0xb0, 0x1c, 0xeb, 0xc2,
0x9c, 0x4c, 0x53, 0x83, 0x4d, 0x57, 0x25, 0xd9, 0x75, 0x00, 0x7f, 0x14, 0x4d, 0xc2, 0xd4, 0x4b,
0xfc, 0x94, 0xa6, 0xaa, 0xe6, 0x1a, 0x08, 0xbb, 0x0a, 0xcd, 0xf1, 0x2b, 0x2f, 0xe9, 0xc7, 0xc1,
0x38, 0x25, 0xb2, 0x69, 0xba, 0x19, 0xc0, 0xbe, 0x0d, 0x8d, 0x68, 0x92, 0x8e, 0xa3, 0x20, 0x4c,
0x25, 0xa9, 0x2c, 0xca, 0xbe, 0x3c, 0x9b, 0xa4, 0xfb, 0x08, 0xbb, 0xba, 0x00, 0xbb, 0x09, 0xf3,
0xfd, 0x28, 0x3c, 0x0a, 0xe2, 0x91, 0x10, 0x06, 0xdd, 0x59, 0x6a, 0xcd, 0x06, 0x9d, 0x7f, 0x51,
0x85, 0xd6, 0xf3, 0xd8, 0x0f, 0x13, 0xbf, 0x8f, 0x00, 0x76, 0x3d, 0x7d, 0xed, 0x9d, 0xf8, 0xc9,
0x09, 0x8d, 0xb6, 0xe9, 0xaa, 0x24, 0x5b, 0x85, 0x59, 0xd1, 0x51, 0x1a, 0x53, 0xcd, 0x95, 0x29,
0xf6, 0x3e, 0x2c, 0x85, 0x93, 0x91, 0x67, 0xb7, 0x55, 0x23, 0x6a, 0x29, 0x66, 0xe0, 0x04, 0x1c,
0xe2, 0x5a, 0x8b, 0x26, 0xc4, 0x08, 0x0d, 0x84, 0x39, 0xd0, 0x96, 0x29, 0x1e, 0x1c, 0x9f, 0x88,
0x61, 0xce, 0xb8, 0x16, 0x86, 0x75, 0xa4, 0xc1, 0x88, 0x7b, 0x49, 0xea, 0x8f, 0xc6, 0x72, 0x58,
0x06, 0x42, 0xf9, 0x51, 0xea, 0x0f, 0xbd, 0x23, 0xce, 0x93, 0xee, 0x9c, 0xcc, 0xd7, 0x08, 0xbb,
0x05, 0x0b, 0x03, 0x9e, 0xa4, 0x9e, 0x5c, 0x14, 0x9e, 0x74, 0x1b, 0xc4, 0xfa, 0x39, 0x14, 0xeb,
0x89, 0xfd, 0x33, 0x0f, 0x27, 0x80, 0xbf, 0xee, 0x36, 0x45, 0x5f, 0x33, 0x04, 0x29, 0xe7, 0x11,
0x4f, 0x8d, 0xd9, 0x4b, 0x24, 0x85, 0x3a, 0x4f, 0x80, 0x19, 0xf0, 0x36, 0x4f, 0xfd, 0x60, 0x98,
0xb0, 0x0f, 0xa1, 0x9d, 0x1a, 0x85, 0x49, 0x14, 0xb6, 0x34, 0x39, 0x19, 0x1f, 0xb8, 0x56, 0x39,
0xe7, 0x04, 0x1a, 0x0f, 0x39, 0x7f, 0x12, 0x8c, 0x82, 0x94, 0xad, 0xc2, 0xcc, 0x51, 0xf0, 0x9a,
0x0b, 0x82, 0xaf, 0xed, 0x5e, 0x72, 0x45, 0x92, 0xbd, 0x0b, 0x40, 0x3f, 0xbc, 0x91, 0x26, 0xac,
0xdd, 0x4b, 0x6e, 0x93, 0xb0, 0xa7, 0x48, 0x59, 0x3d, 0x98, 0x1b, 0xf3, 0xb8, 0xcf, 0xd5, 0xfa,
0xed, 0x5e, 0x72, 0x15, 0xf0, 0x60, 0x0e, 0x66, 0x86, 0x58, 0xbb, 0xf3, 0x7b, 0x33, 0xd0, 0x3a,
0xe0, 0xa1, 0xe6, 0x34, 0x06, 0x75, 0x9c, 0x13, 0xc9, 0x5d, 0xf4, 0x9b, 0x7d, 0x03, 0x5a, 0x34,
0x4f, 0x49, 0x1a, 0x07, 0xe1, 0xb1, 0x20, 0xf0, 0x07, 0xd5, 0x6e, 0xc5, 0x05, 0x84, 0x0f, 0x08,
0x65, 0x1d, 0xa8, 0xf9, 0x23, 0x45, 0xe0, 0xf8, 0x93, 0x5d, 0x81, 0x86, 0x3f, 0x4a, 0x45, 0xf7,
0xda, 0x04, 0xcf, 0xf9, 0xa3, 0x94, 0xba, 0xf6, 0x1e, 0xb4, 0xc7, 0xfe, 0xf9, 0x08, 0xf9, 0x59,
0x53, 0x45, 0xdb, 0x6d, 0x49, 0x6c, 0x17, 0xc9, 0x62, 0x03, 0x96, 0xcd, 0x22, 0xaa, 0xf1, 0x19,
0xdd, 0xf8, 0x92, 0x51, 0x5a, 0xf6, 0xe1, 0x36, 0x2c, 0xaa, 0x6f, 0x62, 0x31, 0x1e, 0xa2, 0x95,
0xa6, 0xbb, 0x20, 0x61, 0x35, 0xca, 0x3b, 0xd0, 0x39, 0x0a, 0x42, 0x7f, 0xe8, 0xf5, 0x87, 0xe9,
0xa9, 0x37, 0xe0, 0xc3, 0xd4, 0x27, 0xaa, 0x99, 0x71, 0x17, 0x08, 0xdf, 0x1a, 0xa6, 0xa7, 0xdb,
0x88, 0xb2, 0xf7, 0xa1, 0x79, 0xc4, 0xb9, 0x47, 0x93, 0xd5, 0x6d, 0x58, 0x1c, 0xa8, 0x56, 0xc8,
0x6d, 0x1c, 0xa9, 0xb5, 0x7a, 0x1f, 0x3a, 0xd1, 0x24, 0x3d, 0x8e, 0x82, 0xf0, 0xd8, 0x43, 0x99,
0xe7, 0x05, 0x03, 0xa2, 0xa2, 0xfa, 0x83, 0xea, 0xfd, 0x8a, 0xbb, 0xa0, 0xf2, 0x50, 0xfa, 0x3c,
0x1e, 0xb0, 0x5b, 0xb0, 0x38, 0xf4, 0x93, 0xd4, 0x3b, 0x89, 0xc6, 0xde, 0x78, 0x72, 0xf8, 0x8a,
0x9f, 0x77, 0xe7, 0x69, 0x22, 0xe6, 0x11, 0xde, 0x8d, 0xc6, 0xfb, 0x04, 0xb2, 0x6b, 0x00, 0xd4,
0x4f, 0xd1, 0x09, 0xb8, 0x51, 0xb9, 0x33, 0xef, 0x36, 0x11, 0x11, 0x8d, 0xfe, 0x08, 0x96, 0x69,
0x79, 0xfa, 0x93, 0x24, 0x8d, 0x46, 0x1e, 0xca, 0xeb, 0x78, 0x90, 0x74, 0x5b, 0x44, 0x6b, 0xdf,
0x92, 0x9d, 0x35, 0xd6, 0x78, 0x7d, 0x9b, 0x27, 0xe9, 0x16, 0x15, 0x76, 0x45, 0x59, 0xdc, 0xd4,
0xcf, 0xdd, 0xa5, 0x41, 0x1e, 0x67, 0xef, 0x03, 0xf3, 0x87, 0xc3, 0xe8, 0xcc, 0x4b, 0xf8, 0xf0,
0xc8, 0x93, 0x93, 0xd8, 0x5d, 0xb8, 0x51, 0xb9, 0xd3, 0x70, 0x3b, 0x94, 0x73, 0xc0, 0x87, 0x47,
0xfb, 0x02, 0xef, 0x6d, 0xc3, 0x6a, 0x79, 0xd5, 0x48, 0x1c, 0x38, 0x3a, 0x24, 0xaa, 0xba, 0x8b,
0x3f, 0xd9, 0x0a, 0xcc, 0x9c, 0xfa, 0xc3, 0x09, 0x97, 0xf2, 0x59, 0x24, 0x3e, 0xae, 0x7e, 0x54,
0x71, 0xfe, 0x79, 0x05, 0xda, 0xa2, 0xb7, 0x52, 0xaf, 0xb8, 0x09, 0xf3, 0x6a, 0x55, 0x79, 0x1c,
0x47, 0xb1, 0x14, 0x53, 0x36, 0xc8, 0xee, 0x42, 0x47, 0x01, 0xe3, 0x98, 0x07, 0x23, 0xff, 0x58,
0xd5, 0x5d, 0xc0, 0xd9, 0x46, 0x56, 0x63, 0x1c, 0x4d, 0x52, 0x2e, 0x77, 0xb0, 0xb6, 0x9c, 0x2b,
0x17, 0x31, 0xd7, 0x2e, 0x82, 0x62, 0xaa, 0x84, 0x64, 0x2d, 0xcc, 0xf9, 0xdb, 0x15, 0x60, 0xd8,
0xf5, 0xe7, 0x91, 0xa8, 0x42, 0x52, 0x5b, 0x9e, 0xda, 0x2b, 0x17, 0xa6, 0xf6, 0xea, 0x9b, 0xa8,
0xdd, 0x81, 0x19, 0xd1, 0xfb, 0x7a, 0x49, 0xef, 0x45, 0xd6, 0xa7, 0xf5, 0x46, 0xad, 0x53, 0x77,
0xfe, 0x53, 0x0d, 0x56, 0xb6, 0xc4, 0x16, 0xbc, 0xd9, 0xef, 0xf3, 0xb1, 0xe6, 0x83, 0x77, 0xa1,
0x15, 0x46, 0x03, 0xae, 0xa8, 0x4f, 0x74, 0x0c, 0x10, 0x32, 0x48, 0xef, 0xc4, 0x0f, 0x42, 0xd1,
0x71, 0x31, 0x9f, 0x4d, 0x42, 0xa8, 0xdb, 0xb7, 0x60, 0x71, 0xcc, 0xc3, 0x81, 0x49, 0xee, 0x42,
0x49, 0x9a, 0x97, 0xb0, 0xa4, 0xf4, 0x77, 0xa1, 0x75, 0x34, 0x11, 0xe5, 0x50, 0x48, 0xd4, 0x89,
0x0e, 0x40, 0x42, 0x9b, 0x42, 0x56, 0x8c, 0x27, 0xc9, 0x09, 0xe5, 0xce, 0x50, 0xee, 0x1c, 0xa6,
0x31, 0xeb, 0x1a, 0xc0, 0x60, 0x92, 0xa4, 0x92, 0xfa, 0x67, 0x29, 0xb3, 0x89, 0x88, 0xa0, 0xfe,
0xef, 0xc0, 0xf2, 0xc8, 0x7f, 0xed, 0x11, 0xfd, 0x78, 0x41, 0xe8, 0x1d, 0x0d, 0x69, 0x17, 0x99,
0xa3, 0x72, 0x9d, 0x91, 0xff, 0xfa, 0x87, 0x98, 0xf3, 0x38, 0x7c, 0x48, 0x38, 0x8a, 0x08, 0xa5,
0xbe, 0xc4, 0x3c, 0xe1, 0xf1, 0x29, 0x27, 0xae, 0xae, 0x6b, 0x1d, 0xc5, 0x15, 0x28, 0xf6, 0x68,
0x84, 0xe3, 0x4e, 0x87, 0x7d, 0xc1, 0xc2, 0xee, 0xdc, 0x28, 0x08, 0x77, 0xd3, 0x61, 0x9f, 0x5d,
0x05, 0x40, 0x99, 0x30, 0xe6, 0xb1, 0xf7, 0xea, 0x8c, 0xf8, 0xb1, 0x4e, 0x32, 0x60, 0x9f, 0xc7,
0x9f, 0x9d, 0xb1, 0x77, 0xa0, 0xd9, 0x4f, 0x48, 0xa8, 0xf8, 0xe7, 0xdd, 0x16, 0x31, 0x6b, 0xa3,
0x9f, 0xa0, 0x38, 0xf1, 0xcf, 0x91, 0xa1, 0xb0, 0xb7, 0x3e, 0xad, 0x02, 0x1f, 0x50, 0xf5, 0x09,
0x49, 0xc7, 0x79, 0xea, 0xec, 0xa6, 0xcc, 0xc0, 0x76, 0x12, 0xf6, 0x0d, 0x98, 0x57, 0x9d, 0x3d,
0x1a, 0xfa, 0xc7, 0x09, 0x89, 0x87, 0x79, 0xb7, 0x2d, 0xc1, 0x87, 0x88, 0x39, 0x2f, 0x85, 0xd2,
0x64, 0xac, 0xad, 0xe4, 0x1b, 0xdc, 0xbe, 0x09, 0xa1, 0x75, 0x6d, 0xb8, 0x32, 0x55, 0xb6, 0x68,
0xd5, 0x92, 0x45, 0x73, 0x7e, 0x59, 0x81, 0xb6, 0xac, 0x99, 0x34, 0x0d, 0x76, 0x1f, 0x98, 0x5a,
0xc5, 0xf4, 0x75, 0x30, 0xf0, 0x0e, 0xcf, 0x53, 0x9e, 0x08, 0xa2, 0xd9, 0xbd, 0xe4, 0x96, 0xe4,
0xa1, 0x3c, 0xb4, 0xd0, 0x24, 0x8d, 0x05, 0x4d, 0xef, 0x5e, 0x72, 0x0b, 0x39, 0xc8, 0x62, 0xa8,
0xcb, 0x4c, 0x52, 0x2f, 0x08, 0x07, 0xfc, 0x35, 0x91, 0xd2, 0xbc, 0x6b, 0x61, 0x0f, 0x16, 0xa0,
0x6d, 0x7e, 0xe7, 0xfc, 0x0c, 0x1a, 0x4a, 0x13, 0x22, 0x2d, 0x20, 0xd7, 0x2f, 0xd7, 0x40, 0x58,
0x0f, 0x1a, 0x76, 0x2f, 0xdc, 0xc6, 0x57, 0x69, 0xdb, 0xf9, 0x0b, 0xd0, 0x79, 0x82, 0x44, 0x14,
0x22, 0xd1, 0x4a, 0xf5, 0x6e, 0x15, 0x66, 0x0d, 0xe6, 0x69, 0xba, 0x32, 0x85, 0xfb, 0xe8, 0x49,
0x94, 0xa4, 0xb2, 0x1d, 0xfa, 0xed, 0xfc, 0x71, 0x05, 0xd8, 0x4e, 0x92, 0x06, 0x23, 0x3f, 0xe5,
0x0f, 0xb9, 0x16, 0x0f, 0xcf, 0xa0, 0x8d, 0xb5, 0x3d, 0x8f, 0x36, 0x85, 0xb2, 0x25, 0x94, 0x84,
0x6f, 0x4b, 0x76, 0x2e, 0x7e, 0xb0, 0x6e, 0x96, 0x16, 0xa2, 0xdb, 0xaa, 0x00, 0xb9, 0x2d, 0xf5,
0xe3, 0x63, 0x9e, 0x92, 0x26, 0x26, 0xf5, 0x78, 0x10, 0xd0, 0x56, 0x14, 0x1e, 0xf5, 0x7e, 0x0b,
0x96, 0x0a, 0x75, 0x98, 0x32, 0xba, 0x59, 0x22, 0xa3, 0x6b, 0xa6, 0x8c, 0xee, 0xc3, 0xb2, 0xd5,
0x2f, 0x49, 0x71, 0x5d, 0x98, 0x43, 0xc6, 0xc0, 0x0d, 0xbf, 0x22, 0x36, 0x7c, 0x99, 0x64, 0x1b,
0xb0, 0x72, 0xc4, 0x79, 0xec, 0xa7, 0x94, 0x24, 0xd6, 0xc1, 0x35, 0x91, 0x35, 0x97, 0xe6, 0x39,
0xff, 0xad, 0x02, 0x8b, 0x28, 0x4d, 0x9f, 0xfa, 0xe1, 0xb9, 0x9a, 0xab, 0x27, 0xa5, 0x73, 0x75,
0xc7, 0xd8, 0xe4, 0x8c, 0xd2, 0x5f, 0x75, 0xa2, 0x6a, 0xf9, 0x89, 0x62, 0x37, 0xa0, 0x6d, 0x75,
0x77, 0x46, 0x68, 0x96, 0x89, 0x9f, 0xee, 0xf3, 0xf8, 0xc1, 0x79, 0xca, 0x7f, 0xfd, 0xa9, 0xbc,
0x05, 0x9d, 0xac, 0xdb, 0x72, 0x1e, 0x19, 0xd4, 0x91, 0x30, 0x65, 0x05, 0xf4, 0xdb, 0xf9, 0xfb,
0x15, 0x51, 0x70, 0x2b, 0x0a, 0xb4, 0xd6, 0x89, 0x05, 0x51, 0x79, 0x55, 0x05, 0xf1, 0xf7, 0x54,
0xad, 0xfd, 0xd7, 0x1f, 0x2c, 0xca, 0xc4, 0x84, 0x87, 0x03, 0xcf, 0x1f, 0x0e, 0x49, 0x10, 0x37,
0xdc, 0x39, 0x4c, 0x6f, 0x0e, 0x87, 0xce, 0x6d, 0x58, 0x32, 0x7a, 0xf7, 0x86, 0x71, 0xec, 0x01,
0x7b, 0x12, 0x24, 0xe9, 0x8b, 0x30, 0x19, 0x1b, 0x0a, 0xd9, 0x3b, 0xd0, 0x44, 0x69, 0x8b, 0x3d,
0x13, 0x9c, 0x3b, 0xe3, 0xa2, 0xf8, 0xc5, 0x7e, 0x25, 0x94, 0xe9, 0xbf, 0x96, 0x99, 0x55, 0x99,
0xe9, 0xbf, 0xa6, 0x4c, 0xe7, 0x23, 0x58, 0xb6, 0xea, 0x93, 0x4d, 0xbf, 0x07, 0x33, 0x93, 0xf4,
0x75, 0xa4, 0x54, 0xee, 0x96, 0xa4, 0x10, 0x3c, 0xdc, 0xb9, 0x22, 0xc7, 0xf9, 0x04, 0x96, 0xf6,
0xf8, 0x99, 0x64, 0x64, 0xd5, 0x91, 0x5b, 0x6f, 0x3d, 0xf8, 0x51, 0xbe, 0xb3, 0x0e, 0xcc, 0xfc,
0x38, 0x63, 0x00, 0x75, 0x0c, 0xac, 0x58, 0xc7, 0x40, 0xe7, 0x16, 0xb0, 0x83, 0xe0, 0x38, 0x7c,
0xca, 0x93, 0xc4, 0x3f, 0xd6, 0xac, 0xdf, 0x81, 0xda, 0x28, 0x39, 0x96, 0xa2, 0x0a, 0x7f, 0x3a,
0xdf, 0x85, 0x65, 0xab, 0x9c, 0xac, 0xf8, 0x2a, 0x34, 0x93, 0xe0, 0x38, 0xf4, 0xd3, 0x49, 0xcc,
0x65, 0xd5, 0x19, 0xe0, 0x3c, 0x84, 0x95, 0x1f, 0xf2, 0x38, 0x38, 0x3a, 0x7f, 0x5b, 0xf5, 0x76,
0x3d, 0xd5, 0x7c, 0x3d, 0x3b, 0x70, 0x39, 0x57, 0x8f, 0x6c, 0x5e, 0x90, 0xaf, 0x5c, 0xc9, 0x86,
0x2b, 0x12, 0x86, 0xec, 0xab, 0x9a, 0xb2, 0xcf, 0x79, 0x01, 0x6c, 0x2b, 0x0a, 0x43, 0xde, 0x4f,
0xf7, 0x39, 0x8f, 0x33, 0x0b, 0x54, 0x46, 0xab, 0xad, 0x8d, 0x35, 0x39, 0xb3, 0x79, 0x81, 0x2a,
0x89, 0x98, 0x41, 0x7d, 0xcc, 0xe3, 0x11, 0x55, 0xdc, 0x70, 0xe9, 0xb7, 0x73, 0x19, 0x96, 0xad,
0x6a, 0xe5, 0x99, 0xfd, 0x03, 0xb8, 0xbc, 0x1d, 0x24, 0xfd, 0x62, 0x83, 0x5d, 0x98, 0x1b, 0x4f,
0x0e, 0xbd, 0x8c, 0x13, 0x55, 0x12, 0x8f, 0x71, 0xf9, 0x4f, 0x64, 0x65, 0x7f, 0xad, 0x02, 0xf5,
0xdd, 0xe7, 0x4f, 0xb6, 0x70, 0xaf, 0x08, 0xc2, 0x7e, 0x34, 0x42, 0x2d, 0x4c, 0x0c, 0x5a, 0xa7,
0xa7, 0x72, 0xd8, 0x55, 0x68, 0x92, 0xf2, 0x86, 0x27, 0x57, 0xa9, 0x07, 0x65, 0x00, 0x9e, 0x9a,
0xf9, 0xeb, 0x71, 0x10, 0xd3, 0xb1, 0x58, 0x1d, 0x76, 0xeb, 0xb4, 0xcd, 0x14, 0x33, 0x9c, 0x5f,
0xce, 0xc1, 0x9c, 0xdc, 0x7c, 0xc5, 0x46, 0x9e, 0x06, 0xa7, 0x3c, 0xdb, 0xc8, 0x31, 0x85, 0x8a,
0x71, 0xcc, 0x47, 0x51, 0xaa, 0xf5, 0x37, 0xb1, 0x0c, 0x36, 0x48, 0x56, 0x01, 0xa9, 0x44, 0x08,
0x3b, 0x42, 0x4d, 0x94, 0xb2, 0x40, 0x76, 0x15, 0xe6, 0x94, 0x32, 0x50, 0xd7, 0x07, 0x16, 0x05,
0xe1, 0x6c, 0xf4, 0xfd, 0xb1, 0xdf, 0x0f, 0xd2, 0x73, 0x29, 0x16, 0x74, 0x1a, 0xeb, 0x1f, 0x46,
0x7d, 0x7f, 0xe8, 0x1d, 0xfa, 0x43, 0x3f, 0xec, 0x73, 0x65, 0x75, 0xb0, 0x40, 0x3c, 0x81, 0xcb,
0x6e, 0xa9, 0x62, 0xe2, 0x94, 0x9e, 0x43, 0x71, 0x0f, 0xef, 0x47, 0xa3, 0x51, 0x90, 0xe2, 0xc1,
0x9d, 0x54, 0xb3, 0x9a, 0x6b, 0x20, 0xc2, 0xc6, 0x41, 0xa9, 0x33, 0x31, 0x83, 0x4d, 0x65, 0xe3,
0x30, 0x40, 0xac, 0x25, 0xa7, 0xa1, 0xd5, 0x5c, 0x03, 0xc1, 0xb5, 0x98, 0x84, 0x09, 0x4f, 0xd3,
0x21, 0x1f, 0xe8, 0x0e, 0xb5, 0xa8, 0x58, 0x31, 0x83, 0xdd, 0x87, 0x65, 0x61, 0x4b, 0x48, 0xfc,
0x34, 0x4a, 0x4e, 0x82, 0xc4, 0x4b, 0xf0, 0x18, 0x24, 0xce, 0xb4, 0x65, 0x59, 0xec, 0x23, 0x58,
0xcb, 0xc1, 0x31, 0xef, 0xf3, 0xe0, 0x94, 0x0f, 0x48, 0x85, 0xab, 0xb9, 0xd3, 0xb2, 0xd9, 0x0d,
0x68, 0x85, 0x93, 0x91, 0x37, 0x19, 0x0f, 0x7c, 0x54, 0x62, 0x16, 0x48, 0xb9, 0x34, 0x21, 0xf6,
0x01, 0x28, 0x3d, 0x4d, 0x6a, 0x8f, 0x8b, 0x96, 0x84, 0x43, 0xea, 0x75, 0xed, 0x12, 0x48, 0x98,
0x99, 0x4a, 0xda, 0x91, 0xe7, 0x47, 0x05, 0x10, 0x9f, 0xc4, 0xc1, 0xa9, 0x9f, 0xf2, 0xee, 0x92,
0x10, 0xea, 0x32, 0x89, 0xdf, 0x05, 0x61, 0x90, 0x06, 0x7e, 0x1a, 0xc5, 0x5d, 0x46, 0x79, 0x19,
0x80, 0x93, 0x48, 0xf4, 0x91, 0xa4, 0x7e, 0x3a, 0x49, 0xa4, 0x86, 0xba, 0x4c, 0xc4, 0x55, 0xcc,
0x60, 0x1f, 0xc2, 0xaa, 0xa0, 0x08, 0xca, 0x92, 0xba, 0x37, 0xa9, 0x0a, 0x2b, 0x34, 0x23, 0x53,
0x72, 0x71, 0x2a, 0x25, 0x89, 0x14, 0x3e, 0xbc, 0x2c, 0xa6, 0x72, 0x4a, 0x36, 0xf6, 0x0f, 0x7b,
0x10, 0xf4, 0x3d, 0x59, 0x02, 0x59, 0x64, 0x95, 0x46, 0x51, 0xcc, 0x40, 0x12, 0x1f, 0x06, 0x47,
0x3c, 0x0d, 0x46, 0xbc, 0xbb, 0x26, 0x48, 0x5c, 0xa5, 0x91, 0x01, 0x27, 0x63, 0xca, 0xe9, 0x0a,
0x86, 0x17, 0x29, 0xe7, 0xf7, 0x2b, 0x62, 0xf3, 0x91, 0x8c, 0x9a, 0x18, 0xc7, 0x2a, 0xc1, 0xa2,
0x5e, 0x14, 0x0e, 0xcf, 0x25, 0xd7, 0x82, 0x80, 0x9e, 0x85, 0xc3, 0x73, 0x54, 0xec, 0x83, 0xd0,
0x2c, 0x22, 0xe4, 0x5c, 0x5b, 0x81, 0x54, 0xe8, 0x5d, 0x68, 0x8d, 0x27, 0x87, 0xc3, 0xa0, 0x2f,
0x8a, 0xd4, 0x44, 0x2d, 0x02, 0xa2, 0x02, 0x78, 0xae, 0x14, 0x2b, 0x25, 0x4a, 0xd4, 0xa9, 0x44,
0x4b, 0x62, 0x58, 0xc4, 0x79, 0x00, 0x2b, 0x76, 0x07, 0xa5, 0x40, 0xbf, 0x0b, 0x0d, 0xc9, 0xff,
0xca, 0x50, 0xb0, 0x60, 0x98, 0x6f, 0xf1, 0x18, 0xa4, 0xf3, 0x9d, 0x7f, 0x59, 0x87, 0x65, 0x89,
0x6e, 0x0d, 0xa3, 0x84, 0x1f, 0x4c, 0x46, 0x23, 0x3f, 0x2e, 0x11, 0x2c, 0x95, 0xb7, 0x08, 0x96,
0x6a, 0x51, 0xb0, 0x5c, 0xb7, 0xce, 0x97, 0x42, 0x32, 0x19, 0x08, 0xbb, 0x03, 0x8b, 0xfd, 0x61,
0x94, 0x08, 0x75, 0xdf, 0xb4, 0x20, 0xe6, 0xe1, 0xa2, 0x30, 0x9c, 0x29, 0x13, 0x86, 0xa6, 0x20,
0x9b, 0xcd, 0x09, 0x32, 0x07, 0xda, 0x58, 0x29, 0x57, 0xb2, 0x79, 0x4e, 0x1e, 0xb6, 0x0c, 0x0c,
0xfb, 0x93, 0x17, 0x1b, 0x42, 0x46, 0x2d, 0x96, 0x09, 0x8d, 0x60, 0xc4, 0x49, 0xf6, 0x1b, 0xa5,
0x9b, 0x52, 0x68, 0x14, 0xb3, 0xd8, 0x43, 0x00, 0xd1, 0x16, 0x29, 0x20, 0x40, 0x0a, 0xc8, 0x2d,
0x7b, 0x55, 0xcc, 0xf9, 0x5f, 0xc7, 0xc4, 0x24, 0xe6, 0xa4, 0x94, 0x18, 0x5f, 0x3a, 0x7f, 0xa3,
0x02, 0x2d, 0x23, 0x8f, 0x5d, 0x86, 0xa5, 0xad, 0x67, 0xcf, 0xf6, 0x77, 0xdc, 0xcd, 0xe7, 0x8f,
0x7f, 0xb8, 0xe3, 0x6d, 0x3d, 0x79, 0x76, 0xb0, 0xd3, 0xb9, 0x84, 0xf0, 0x93, 0x67, 0x5b, 0x9b,
0x4f, 0xbc, 0x87, 0xcf, 0xdc, 0x2d, 0x05, 0x57, 0xd8, 0x2a, 0x30, 0x77, 0xe7, 0xe9, 0xb3, 0xe7,
0x3b, 0x16, 0x5e, 0x65, 0x1d, 0x68, 0x3f, 0x70, 0x77, 0x36, 0xb7, 0x76, 0x25, 0x52, 0x63, 0x2b,
0xd0, 0x79, 0xf8, 0x62, 0x6f, 0xfb, 0xf1, 0xde, 0x23, 0x6f, 0x6b, 0x73, 0x6f, 0x6b, 0xe7, 0xc9,
0xce, 0x76, 0xa7, 0xce, 0xe6, 0xa1, 0xb9, 0xf9, 0x60, 0x73, 0x6f, 0xfb, 0xd9, 0xde, 0xce, 0x76,
0x67, 0xc6, 0xf9, 0x93, 0x0a, 0x5c, 0xa6, 0x5e, 0x0f, 0xf2, 0x4c, 0x72, 0x03, 0x5a, 0xfd, 0x28,
0x1a, 0xa3, 0xe2, 0x9f, 0x6d, 0x6d, 0x26, 0x84, 0x0c, 0x20, 0x84, 0xc2, 0x51, 0x14, 0xf7, 0xb9,
0xe4, 0x11, 0x20, 0xe8, 0x21, 0x22, 0xc8, 0x00, 0x72, 0x79, 0x45, 0x09, 0xc1, 0x22, 0x2d, 0x81,
0x89, 0x22, 0xab, 0x30, 0x7b, 0x18, 0x73, 0xbf, 0x7f, 0x22, 0xb9, 0x43, 0xa6, 0xd8, 0xb7, 0xb2,
0x93, 0x69, 0x1f, 0x67, 0x7f, 0xc8, 0x07, 0x44, 0x31, 0x0d, 0x77, 0x51, 0xe2, 0x5b, 0x12, 0x46,
0x29, 0xe8, 0x1f, 0xfa, 0xe1, 0x20, 0x0a, 0xf9, 0x40, 0xaa, 0xbd, 0x19, 0xe0, 0xec, 0xc3, 0x6a,
0x7e, 0x7c, 0x92, 0xc7, 0x3e, 0x34, 0x78, 0x4c, 0x68, 0xa1, 0xbd, 0xe9, 0xab, 0x69, 0xf0, 0xdb,
0x7f, 0xa9, 0x42, 0x1d, 0x95, 0x92, 0xe9, 0x0a, 0x8c, 0xa9, 0x67, 0xd6, 0x0a, 0xee, 0x06, 0x3a,
0xec, 0x8a, 0x2d, 0x4a, 0x1a, 0x5a, 0x32, 0x24, 0xcb, 0x8f, 0x79, 0xff, 0x54, 0x9a, 0x5a, 0x0c,
0x04, 0x19, 0x04, 0x0f, 0x01, 0xf4, 0xb5, 0x64, 0x10, 0x95, 0x56, 0x79, 0xf4, 0xe5, 0x5c, 0x96,
0x47, 0xdf, 0x75, 0x61, 0x2e, 0x08, 0x0f, 0xa3, 0x49, 0x38, 0x20, 0x86, 0x68, 0xb8, 0x2a, 0x49,
0x0e, 0x0e, 0x62, 0x54, 0x94, 0x9f, 0x82, 0xfc, 0x33, 0x80, 0x6d, 0x40, 0x33, 0x39, 0x0f, 0xfb,
0x26, 0xcd, 0xaf, 0xc8, 0x59, 0xc2, 0x39, 0x58, 0x3f, 0x38, 0x0f, 0xfb, 0x44, 0xe1, 0x59, 0x31,
0xe7, 0xb7, 0xa0, 0xa1, 0x60, 0x24, 0xcb, 0x17, 0x7b, 0x9f, 0xed, 0x3d, 0x7b, 0xb9, 0xe7, 0x1d,
0xfc, 0x68, 0x6f, 0xab, 0x73, 0x89, 0x2d, 0x42, 0x6b, 0x73, 0x8b, 0x28, 0x9d, 0x80, 0x0a, 0x16,
0xd9, 0xdf, 0x3c, 0x38, 0xd0, 0x48, 0xd5, 0x61, 0x78, 0x90, 0x4f, 0x48, 0xf3, 0xd3, 0x06, 0xfc,
0x0f, 0x61, 0xc9, 0xc0, 0xb2, 0x53, 0xc4, 0x18, 0x81, 0xdc, 0x29, 0x82, 0x54, 0x46, 0x91, 0xe3,
0x74, 0x60, 0xe1, 0x11, 0x4f, 0x1f, 0x87, 0x47, 0x91, 0xaa, 0xe9, 0x7f, 0xd4, 0x61, 0x51, 0x43,
0xb2, 0xa2, 0x3b, 0xb0, 0x18, 0x0c, 0x78, 0x98, 0x06, 0xe9, 0xb9, 0x67, 0xd9, 0x0b, 0xf2, 0x30,
0xaa, 0xda, 0xfe, 0x30, 0xf0, 0x95, 0x1f, 0x49, 0x24, 0xf0, 0xfc, 0x8c, 0x3a, 0x80, 0x69, 0xb7,
0x21, 0xba, 0x12, 0x66, 0x8a, 0xd2, 0x3c, 0x94, 0x40, 0x88, 0xcb, 0x6d, 0x46, 0x7f, 0x22, 0x54,
0xce, 0xb2, 0x2c, 0x5c, 0x2a, 0x51, 0x13, 0x0e, 0x79, 0x46, 0xe8, 0x09, 0x1a, 0x28, 0x38, 0x6a,
0x66, 0x85, 0x7c, 0xcc, 0x3b, 0x6a, 0x0c, 0x67, 0x4f, 0xa3, 0xe0, 0xec, 0x41, 0xf9, 0x79, 0x1e,
0xf6, 0xf9, 0xc0, 0x4b, 0x23, 0x8f, 0xe4, 0x3c, 0x91, 0x44, 0xc3, 0xcd, 0xc3, 0xb8, 0x6f, 0xa4,
0x3c, 0x49, 0x43, 0x2e, 0x2c, 0xde, 0x0d, 0xb2, 0x82, 0x2a, 0x08, 0xcf, 0x07, 0x93, 0x38, 0x48,
0xba, 0x6d, 0x72, 0xe3, 0xd0, 0x6f, 0xf6, 0x3d, 0xb8, 0x7c, 0xc8, 0x93, 0xd4, 0x3b, 0xe1, 0xfe,
0x80, 0xc7, 0x44, 0x5e, 0xc2, 0x5f, 0x24, 0x54, 0xae, 0xf2, 0x4c, 0x24, 0xdc, 0x53, 0x1e, 0x27,
0x41, 0x14, 0x92, 0xb2, 0xd5, 0x74, 0x55, 0x12, 0xeb, 0xc3, 0xc1, 0xeb, 0x8d, 0x5a, 0xcf, 0xe0,
0x22, 0x0d, 0xbc, 0x3c, 0x93, 0xdd, 0x84, 0x59, 0x1a, 0x40, 0xd2, 0xed, 0x10, 0xcd, 0xb4, 0x33,
0x9e, 0x0f, 0x42, 0x57, 0xe6, 0xe1, 0x2a, 0xf7, 0xa3, 0x61, 0x14, 0x93, 0xc6, 0xd5, 0x74, 0x45,
0xc2, 0x9e, 0x9d, 0xe3, 0xd8, 0x1f, 0x9f, 0x48, 0xad, 0x2b, 0x0f, 0x7f, 0x5a, 0x6f, 0xb4, 0x3a,
0x6d, 0xe7, 0xcf, 0xc1, 0x0c, 0x55, 0x4b, 0xd5, 0xd1, 0x64, 0x56, 0x64, 0x75, 0x84, 0x76, 0x61,
0x2e, 0xe4, 0xe9, 0x59, 0x14, 0xbf, 0x52, 0x4e, 0x49, 0x99, 0x74, 0x7e, 0x4e, 0x27, 0x34, 0xed,
0xa4, 0x7b, 0x41, 0xaa, 0x25, 0x9e, 0xb3, 0xc5, 0x52, 0x25, 0x27, 0xbe, 0x3c, 0x34, 0x36, 0x08,
0x38, 0x38, 0xf1, 0x51, 0xd6, 0x5a, 0xab, 0x2f, 0xce, 0xe1, 0x2d, 0xc2, 0x76, 0xc5, 0xe2, 0xdf,
0x84, 0x05, 0xe5, 0xfe, 0x4b, 0xbc, 0x21, 0x3f, 0x4a, 0x95, 0x15, 0x2d, 0x9c, 0x8c, 0xe8, 0xb0,
0xfe, 0x84, 0x1f, 0xa5, 0xce, 0x1e, 0x2c, 0x49, 0xf9, 0xf7, 0x6c, 0xcc, 0x55, 0xd3, 0xbf, 0x51,
0xa6, 0x4b, 0xb4, 0x36, 0x96, 0x6d, 0x81, 0x29, 0x1c, 0x9e, 0x76, 0x49, 0xc7, 0x05, 0x66, 0xca,
0x53, 0x59, 0xa1, 0xdc, 0xcc, 0x95, 0x9d, 0x50, 0x0e, 0xc7, 0xc2, 0x70, 0x7e, 0x92, 0x49, 0xbf,
0xaf, 0x9c, 0xb6, 0x0d, 0x57, 0x25, 0x9d, 0xff, 0x50, 0x81, 0x65, 0xaa, 0x4d, 0x69, 0x43, 0x72,
0xcf, 0xfa, 0xe8, 0x2b, 0x74, 0x53, 0x59, 0x69, 0x85, 0x6d, 0x72, 0x05, 0x66, 0xcc, 0x5d, 0x4c,
0x24, 0xbe, 0xba, 0x4d, 0xa6, 0x5e, 0xb0, 0xc9, 0xdc, 0x85, 0xce, 0x80, 0x0f, 0x03, 0x72, 0xdc,
0xab, 0x3d, 0x41, 0xa8, 0x3e, 0x05, 0xdc, 0xf9, 0x3b, 0x15, 0x58, 0x12, 0x9b, 0x0e, 0x69, 0xe6,
0x72, 0xaa, 0xfe, 0x3c, 0xcc, 0x0b, 0xed, 0x41, 0x4a, 0x10, 0x39, 0xa8, 0x4c, 0x0c, 0x13, 0x2a,
0x0a, 0xef, 0x5e, 0x72, 0xed, 0xc2, 0xec, 0x13, 0xd2, 0xe0, 0x42, 0x8f, 0xd0, 0x92, 0x50, 0x00,
0x7b, 0x5d, 0x76, 0x2f, 0xb9, 0x46, 0xf1, 0x07, 0x0d, 0x54, 0xac, 0x11, 0x77, 0x1e, 0xc1, 0xbc,
0xd5, 0x90, 0x65, 0x3b, 0x6a, 0x0b, 0xdb, 0x51, 0xc1, 0x48, 0x5b, 0x2d, 0x31, 0xd2, 0xfe, 0xb3,
0x1a, 0x30, 0x24, 0xac, 0xdc, 0xca, 0xdd, 0xb0, 0x3d, 0x1d, 0x2a, 0x2a, 0x20, 0x83, 0xd8, 0x06,
0x30, 0x23, 0xa9, 0x3c, 0x30, 0x35, 0xed, 0x81, 0x29, 0xc9, 0x45, 0xb1, 0x2c, 0x35, 0x14, 0xed,
0xdd, 0x20, 0xbb, 0x80, 0x58, 0xa6, 0xd2, 0x3c, 0xdc, 0x45, 0xc9, 0xd5, 0x81, 0x27, 0x18, 0x79,
0x96, 0x56, 0xe9, 0x3c, 0x3d, 0xcc, 0xbe, 0x95, 0x1e, 0xe6, 0x0a, 0xf4, 0x60, 0x9c, 0xe6, 0x1a,
0xf6, 0x69, 0xee, 0x26, 0xcc, 0x2b, 0x8f, 0x86, 0x70, 0xca, 0xca, 0xa3, 0xb3, 0x05, 0x22, 0x3d,
0xa9, 0x03, 0x95, 0x3e, 0x32, 0x0a, 0x97, 0x63, 0x01, 0xc7, 0xfd, 0x22, 0xb3, 0xda, 0xb5, 0xa8,
0xb3, 0x19, 0x40, 0xe7, 0x2f, 0xa4, 0x12, 0x6f, 0x12, 0xca, 0x88, 0x00, 0x3e, 0xa0, 0x43, 0x33,
0x9e, 0xbf, 0xf2, 0x19, 0xce, 0xdf, 0xac, 0x40, 0x07, 0xd7, 0xcd, 0x22, 0xcd, 0x8f, 0x81, 0xb8,
0xe8, 0x82, 0x94, 0x69, 0x95, 0x65, 0x1f, 0x41, 0x93, 0xd2, 0xd1, 0x98, 0x87, 0x92, 0x2e, 0xbb,
0x36, 0x5d, 0x66, 0xf2, 0x67, 0xf7, 0x92, 0x9b, 0x15, 0x36, 0xa8, 0xf2, 0xdf, 0x55, 0xa0, 0x25,
0x5b, 0xf9, 0x95, 0xad, 0x42, 0x3d, 0x23, 0x84, 0x43, 0x28, 0x6b, 0x59, 0xc4, 0xc6, 0x1d, 0x58,
0x1c, 0xf9, 0xe9, 0x24, 0xc6, 0xfd, 0xdf, 0xb2, 0x08, 0xe5, 0x61, 0xdc, 0xcc, 0x49, 0xd4, 0x26,
0x5e, 0x1a, 0x0c, 0x3d, 0x95, 0x2b, 0x83, 0x25, 0xca, 0xb2, 0x50, 0xe2, 0x24, 0xa9, 0x7f, 0xcc,
0xe5, 0x3e, 0x2d, 0x12, 0x4e, 0x17, 0x56, 0xf7, 0x33, 0x2f, 0x8f, 0xa1, 0x8f, 0x3b, 0xff, 0x64,
0x1e, 0xd6, 0x0a, 0x59, 0x3a, 0xb4, 0x4b, 0x9a, 0x39, 0x86, 0xc1, 0xe8, 0x30, 0xd2, 0x87, 0x99,
0x8a, 0x69, 0x01, 0xb1, 0xb2, 0xd8, 0x31, 0x5c, 0x56, 0x0a, 0x09, 0xce, 0x69, 0xb6, 0x79, 0x56,
0x69, 0x57, 0xfc, 0xc0, 0x5e, 0xc2, 0x7c, 0x83, 0x0a, 0x37, 0x19, 0xb9, 0xbc, 0x3e, 0x76, 0x02,
0x5d, 0xad, 0xf9, 0x48, 0xe1, 0x6e, 0x68, 0x47, 0xd8, 0xd6, 0xfb, 0x6f, 0x69, 0xcb, 0x52, 0xdf,
0xdd, 0xa9, 0xb5, 0xb1, 0x73, 0xb8, 0xae, 0xf2, 0x48, 0x7a, 0x17, 0xdb, 0xab, 0x5f, 0x68, 0x6c,
0x74, 0x30, 0xb1, 0x1b, 0x7d, 0x4b, 0xc5, 0xec, 0x67, 0xb0, 0x7a, 0xe6, 0x07, 0xa9, 0xea, 0x96,
0xa1, 0x8b, 0xcc, 0x50, 0x93, 0x1b, 0x6f, 0x69, 0xf2, 0xa5, 0xf8, 0xd8, 0xda, 0xd2, 0xa6, 0xd4,
0xd8, 0xfb, 0xa3, 0x2a, 0x2c, 0xd8, 0xf5, 0x20, 0x99, 0x4a, 0xde, 0x57, 0x32, 0x50, 0x69, 0xaf,
0x39, 0xb8, 0x68, 0x13, 0xa8, 0x96, 0xd9, 0x04, 0xcc, 0x53, 0x78, 0xed, 0x6d, 0xe6, 0xc4, 0xfa,
0xc5, 0xcc, 0x89, 0x33, 0xa5, 0xe6, 0xc4, 0xe9, 0x56, 0xa7, 0xd9, 0x5f, 0xd5, 0xea, 0x34, 0xf7,
0x46, 0xab, 0x53, 0xef, 0xff, 0x56, 0x80, 0x15, 0xa9, 0x97, 0x3d, 0x12, 0x66, 0x90, 0x90, 0x0f,
0xa5, 0x10, 0xfb, 0xce, 0xc5, 0x38, 0x40, 0xad, 0x96, 0xfa, 0x1a, 0x59, 0xd1, 0x8c, 0xaf, 0x32,
0xd5, 0xb1, 0x79, 0xb7, 0x2c, 0x2b, 0x67, 0x52, 0xad, 0xbf, 0xdd, 0xa4, 0x3a, 0xf3, 0x76, 0x93,
0xea, 0x6c, 0xde, 0xa4, 0xda, 0xfb, 0xab, 0x15, 0x58, 0x2e, 0x21, 0xb3, 0xaf, 0x6f, 0xe0, 0x48,
0x18, 0x96, 0xf4, 0xa9, 0x4a, 0xc2, 0x30, 0xc1, 0xde, 0x5f, 0x82, 0x79, 0x8b, 0xb5, 0xbe, 0xbe,
0xf6, 0xf3, 0x1a, 0xa5, 0xa0, 0x6c, 0x0b, 0xeb, 0xfd, 0xaf, 0x2a, 0xb0, 0x22, 0x7b, 0xff, 0x99,
0xf6, 0xa1, 0x38, 0x4f, 0xb5, 0x92, 0x79, 0xfa, 0xff, 0xba, 0xf3, 0xbc, 0x0f, 0x4b, 0x32, 0x68,
0xd4, 0x30, 0x7c, 0x09, 0x8a, 0x29, 0x66, 0xa0, 0x4e, 0x6d, 0xdb, 0xb3, 0x1b, 0x56, 0x90, 0x9c,
0xb1, 0xfd, 0xe6, 0xcc, 0xda, 0x4e, 0x0f, 0xba, 0x72, 0x86, 0x76, 0x4e, 0x79, 0x98, 0x1e, 0x4c,
0x0e, 0x45, 0xd4, 0x64, 0x10, 0x85, 0xa4, 0x06, 0x9a, 0x99, 0x52, 0xa1, 0xf8, 0x1e, 0xb4, 0xcd,
0xed, 0x43, 0x2e, 0x47, 0xce, 0xf6, 0x89, 0xaa, 0x84, 0x59, 0x8a, 0x6d, 0xc3, 0x02, 0x09, 0xc9,
0x81, 0xfe, 0xae, 0x4a, 0xdf, 0xbd, 0xc1, 0x9e, 0xb3, 0x7b, 0xc9, 0xcd, 0x7d, 0xc3, 0x7e, 0x13,
0x16, 0xec, 0xc3, 0xa2, 0xd4, 0x4a, 0xca, 0x4e, 0x0f, 0xf8, 0xb9, 0x5d, 0x98, 0x6d, 0x42, 0x27,
0x7f, 0xda, 0x94, 0x91, 0x3f, 0x53, 0x2a, 0x28, 0x14, 0x67, 0x1f, 0x49, 0xe7, 0xe6, 0x0c, 0xd9,
0x59, 0x6e, 0xda, 0x9f, 0x19, 0xd3, 0xb4, 0x2e, 0xfe, 0x18, 0xee, 0xce, 0xdf, 0x01, 0xc8, 0x30,
0xd6, 0x81, 0xf6, 0xb3, 0xfd, 0x9d, 0x3d, 0x6f, 0x6b, 0x77, 0x73, 0x6f, 0x6f, 0xe7, 0x49, 0xe7,
0x12, 0x63, 0xb0, 0x40, 0x66, 0xc1, 0x6d, 0x8d, 0x55, 0x10, 0x93, 0x86, 0x18, 0x85, 0x55, 0xd9,
0x0a, 0x74, 0x1e, 0xef, 0xe5, 0xd0, 0xda, 0x83, 0xa6, 0xe6, 0x0f, 0x67, 0x15, 0x56, 0x44, 0x50,
0xf0, 0x03, 0x41, 0x1e, 0x4a, 0x3b, 0xf9, 0x07, 0x15, 0xb8, 0x9c, 0xcb, 0xc8, 0xc2, 0xc3, 0x84,
0x02, 0x62, 0x6b, 0x25, 0x36, 0x48, 0xce, 0x0a, 0xa5, 0x6b, 0xe6, 0x24, 0x48, 0x31, 0x03, 0x69,
0xde, 0xd0, 0x4d, 0x73, 0x9c, 0x54, 0x96, 0xe5, 0xac, 0xe9, 0x28, 0x9c, 0x5c, 0xc7, 0x8f, 0x44,
0xb0, 0xb1, 0x99, 0x91, 0x39, 0x8b, 0xed, 0x2e, 0xab, 0x24, 0x1e, 0x2b, 0x2c, 0x65, 0xc7, 0xee,
0x6f, 0x69, 0x9e, 0xf3, 0xbf, 0xeb, 0xc0, 0x7e, 0x30, 0xe1, 0xf1, 0x39, 0xc5, 0x7f, 0x69, 0x2b,
0xeb, 0x5a, 0xde, 0x86, 0x38, 0x3b, 0x9e, 0x1c, 0x7e, 0xc6, 0xcf, 0x55, 0xbc, 0x66, 0xf5, 0x42,
0xf1, 0x9a, 0x65, 0xf1, 0x92, 0xf5, 0xb7, 0xc7, 0x4b, 0xce, 0xbc, 0x2d, 0x5e, 0xf2, 0x1b, 0x30,
0x1f, 0x1c, 0x87, 0x11, 0x8a, 0x03, 0x54, 0x21, 0x92, 0xee, 0xec, 0x8d, 0x1a, 0x1e, 0xd3, 0x25,
0xb8, 0x87, 0x18, 0xfb, 0x24, 0x2b, 0xc4, 0x07, 0xc7, 0x14, 0xdf, 0x6b, 0x0a, 0x88, 0x9d, 0xc1,
0x31, 0x7f, 0x12, 0xf5, 0xfd, 0x34, 0x8a, 0xe9, 0x9c, 0xa6, 0x3e, 0x46, 0x3c, 0x61, 0x37, 0x61,
0x21, 0x89, 0x26, 0xa8, 0x54, 0xa9, 0x69, 0x10, 0x46, 0xa9, 0xb6, 0x40, 0xf7, 0xc5, 0x64, 0xac,
0xc3, 0xf2, 0x24, 0xe1, 0xde, 0x28, 0x48, 0x12, 0xdc, 0x38, 0xfb, 0x51, 0x98, 0xc6, 0xd1, 0x50,
0x9a, 0xa6, 0x96, 0x26, 0x09, 0x7f, 0x2a, 0x72, 0xb6, 0x44, 0x06, 0xfb, 0x5e, 0xd6, 0xa5, 0xb1,
0x1f, 0xc4, 0x49, 0x17, 0xa8, 0x4b, 0x6a, 0xa4, 0xd8, 0xef, 0x7d, 0x3f, 0x88, 0x75, 0x5f, 0x30,
0x91, 0xe4, 0xe2, 0x38, 0x5b, 0xf9, 0x38, 0xce, 0x9f, 0x96, 0xc7, 0x71, 0xce, 0x53, 0xd5, 0xf7,
0x65, 0xd5, 0xc5, 0x25, 0xbe, 0x78, 0x38, 0xe7, 0xd7, 0x13, 0xa0, 0x29, 0x63, 0x0a, 0xd7, 0xa1,
0xa1, 0x86, 0x89, 0x67, 0xf5, 0xa3, 0x38, 0x1a, 0xa9, 0xb3, 0x3a, 0xfe, 0x66, 0x0b, 0x50, 0x4d,
0x23, 0xf9, 0x71, 0x35, 0x8d, 0x9c, 0xdf, 0x85, 0x96, 0xb1, 0x52, 0xec, 0x3d, 0x61, 0x36, 0x40,
0x9d, 0x50, 0x1e, 0xf2, 0x85, 0x67, 0xa8, 0x29, 0xd1, 0xc7, 0x03, 0xf6, 0x6d, 0x58, 0x1a, 0x04,
0x31, 0xa7, 0x90, 0x68, 0x2f, 0xe6, 0xa7, 0x3c, 0x4e, 0x94, 0xf9, 0xa4, 0xa3, 0x33, 0x5c, 0x81,
0x3b, 0x1e, 0x2c, 0x5b, 0x53, 0xa3, 0x85, 0xc3, 0x2c, 0x05, 0x42, 0x2a, 0x0b, 0xae, 0x1d, 0x24,
0x29, 0xf3, 0x70, 0x5b, 0x95, 0x96, 0x1f, 0x6f, 0x1c, 0x47, 0x87, 0xd4, 0x48, 0xc5, 0xb5, 0x30,
0xe7, 0x7f, 0xd6, 0xa0, 0xb6, 0x1b, 0x8d, 0x4d, 0x7f, 0x56, 0xa5, 0xe8, 0xcf, 0x92, 0xfa, 0xaf,
0xa7, 0xd5, 0x5b, 0xa9, 0xa4, 0x58, 0x20, 0xbb, 0x0b, 0x0b, 0xc8, 0x69, 0x69, 0x84, 0xfa, 0xfe,
0x99, 0x1f, 0x8b, 0xa8, 0xc9, 0x1a, 0x91, 0x6f, 0x2e, 0x87, 0xad, 0x40, 0x4d, 0xab, 0x6d, 0x54,
0x00, 0x93, 0x78, 0xd8, 0xa4, 0x98, 0x81, 0x73, 0x69, 0xa6, 0x95, 0x29, 0x14, 0x5c, 0xf6, 0xf7,
0x82, 0x9d, 0xc5, 0xe6, 0x5b, 0x96, 0x85, 0xba, 0x38, 0x32, 0xec, 0x28, 0x53, 0x6d, 0x75, 0xda,
0x74, 0x40, 0x34, 0x6c, 0x07, 0xc4, 0x0d, 0x68, 0xa5, 0xc3, 0x53, 0x6f, 0xec, 0x9f, 0x0f, 0x23,
0x7f, 0x20, 0x19, 0xc5, 0x84, 0xd8, 0x7d, 0x80, 0xd1, 0x78, 0x2c, 0xa9, 0x98, 0x2c, 0x08, 0xad,
0x8d, 0x8e, 0x9c, 0xfd, 0xa7, 0xfb, 0xfb, 0x82, 0xfa, 0x5c, 0xa3, 0x0c, 0xdb, 0x81, 0x85, 0xd2,
0x10, 0xe6, 0x6b, 0xca, 0xb3, 0x1d, 0x8d, 0xd7, 0x4b, 0xe8, 0x3c, 0xf7, 0x51, 0xef, 0xb7, 0x81,
0xfd, 0x9a, 0x11, 0xc8, 0x2f, 0xa1, 0xa9, 0x7b, 0x68, 0xc6, 0xfd, 0x52, 0xf8, 0x4a, 0xcb, 0x8e,
0xfb, 0xa5, 0x68, 0x95, 0x5b, 0xb0, 0x20, 0x76, 0x1b, 0x2d, 0x3f, 0x45, 0xc8, 0x41, 0x0e, 0x75,
0xfe, 0xb4, 0x02, 0x33, 0x44, 0x79, 0xa8, 0x7e, 0x89, 0x3c, 0xed, 0x08, 0xa4, 0xae, 0xcd, 0xbb,
0x79, 0x98, 0x39, 0xd6, 0xd5, 0x86, 0xaa, 0x26, 0x03, 0xf3, 0x7a, 0xc3, 0x0d, 0x68, 0xea, 0x96,
0x0c, 0x52, 0xca, 0x40, 0x76, 0x1d, 0xea, 0x27, 0xd1, 0x58, 0x9d, 0x50, 0x21, 0x9b, 0x51, 0x97,
0xf0, 0xac, 0x3f, 0x58, 0x9f, 0x18, 0x82, 0x38, 0x05, 0xe4, 0xe1, 0x92, 0xb1, 0xce, 0x96, 0x8e,
0xf5, 0x05, 0x2c, 0xa2, 0x7c, 0x30, 0x1c, 0x23, 0xd3, 0xf7, 0xa2, 0x6f, 0xa1, 0x6a, 0xd3, 0x1f,
0x4e, 0x06, 0xdc, 0xb4, 0x13, 0x90, 0xe1, 0x5b, 0xe2, 0x4a, 0x43, 0x76, 0xfe, 0x69, 0x45, 0xc8,
0x1d, 0xac, 0x97, 0xdd, 0x81, 0x3a, 0x6e, 0x1b, 0x39, 0xb3, 0x90, 0x0e, 0x29, 0xc2, 0x72, 0x2e,
0x95, 0xc0, 0x55, 0x24, 0xd3, 0xb4, 0x59, 0xbb, 0x30, 0x4c, 0x67, 0x87, 0x6c, 0x3d, 0xb2, 0xdc,
0xd9, 0x34, 0x87, 0xb2, 0x75, 0xc3, 0xaf, 0x57, 0xb7, 0xb6, 0x22, 0xa5, 0x49, 0x0d, 0x8e, 0xb9,
0xe1, 0xcf, 0xfb, 0xc3, 0x0a, 0xcc, 0x5b, 0x7d, 0x42, 0xee, 0xa1, 0xc0, 0x7f, 0x61, 0x65, 0x92,
0x2b, 0x6f, 0x42, 0x26, 0xe7, 0x55, 0x6d, 0xce, 0xd3, 0xfe, 0xa1, 0x9a, 0xe9, 0x1f, 0xba, 0x0f,
0xcd, 0xec, 0x6e, 0x8b, 0xdd, 0x29, 0x6c, 0x51, 0x05, 0x57, 0x65, 0x85, 0x32, 0x0f, 0xc4, 0x8c,
0xe1, 0x81, 0x70, 0x3e, 0x81, 0x96, 0x51, 0xde, 0xf4, 0x20, 0x54, 0x2c, 0x0f, 0x82, 0x8e, 0x3c,
0xac, 0x66, 0x91, 0x87, 0xce, 0x2f, 0xaa, 0x30, 0x8f, 0xe4, 0x1d, 0x84, 0xc7, 0xfb, 0xd1, 0x30,
0xe8, 0x9f, 0x13, 0x59, 0x29, 0x4a, 0x96, 0x6a, 0x83, 0x22, 0x73, 0x1b, 0x46, 0x31, 0xa4, 0xc3,
0xad, 0x85, 0xcc, 0xd4, 0x69, 0x14, 0xaa, 0x28, 0x92, 0x0e, 0xfd, 0x84, 0x1b, 0x97, 0x5d, 0x5c,
0x1b, 0x44, 0xd1, 0x87, 0x00, 0xc5, 0x91, 0x8e, 0x82, 0xe1, 0x30, 0x10, 0x65, 0xc5, 0x79, 0xb7,
0x2c, 0x0b, 0xdb, 0x1c, 0x04, 0x89, 0x7f, 0x98, 0xf9, 0x7e, 0x75, 0x9a, 0x8c, 0xa5, 0xfe, 0x6b,
0xc3, 0x58, 0x2a, 0x02, 0xcf, 0x6d, 0x30, 0xbf, 0x90, 0x73, 0x85, 0x85, 0x74, 0xfe, 0x75, 0x15,
0x5a, 0x06, 0x59, 0x20, 0x3b, 0x97, 0xee, 0x7b, 0x06, 0x2a, 0x83, 0x22, 0x42, 0xcb, 0x82, 0x62,
0x20, 0xec, 0xa6, 0xdd, 0x2a, 0x39, 0x59, 0x88, 0xe1, 0x2d, 0x12, 0xba, 0x0a, 0x4d, 0x24, 0xfd,
0x0f, 0xc8, 0x5c, 0x23, 0x2f, 0x96, 0x69, 0x40, 0xe5, 0x6e, 0x50, 0xee, 0x4c, 0x96, 0x4b, 0xc0,
0x1b, 0xc3, 0x24, 0x3e, 0x82, 0xb6, 0xac, 0x86, 0xd6, 0x98, 0x06, 0x9d, 0x31, 0x9f, 0xb5, 0xfe,
0xae, 0x55, 0x52, 0x7d, 0xb9, 0xa1, 0xbe, 0x6c, 0xbc, 0xed, 0x4b, 0x55, 0xd2, 0x79, 0xa4, 0x23,
0x50, 0x1e, 0xc5, 0xfe, 0xf8, 0x44, 0x09, 0x94, 0xfb, 0xb0, 0xac, 0xe4, 0xc6, 0x24, 0xf4, 0xc3,
0x30, 0x9a, 0x84, 0x7d, 0xae, 0x82, 0x14, 0xcb, 0xb2, 0x9c, 0x81, 0x0e, 0x69, 0xa7, 0x8a, 0xd8,
0x5d, 0x98, 0x11, 0x8a, 0xa7, 0x50, 0x0f, 0xca, 0x45, 0x88, 0x28, 0xc2, 0xee, 0xc0, 0x8c, 0xd0,
0x3f, 0xab, 0x53, 0x99, 0x5e, 0x14, 0x70, 0xd6, 0x61, 0x91, 0x62, 0xe8, 0x0d, 0xd9, 0xf7, 0x4e,
0x99, 0xda, 0x30, 0xdb, 0x17, 0x91, 0xf6, 0x2b, 0xc0, 0xf6, 0x04, 0x5f, 0x99, 0x7e, 0xe4, 0x3f,
0xad, 0x41, 0xcb, 0x80, 0x51, 0x3e, 0x91, 0xf3, 0xcf, 0x1b, 0x04, 0xfe, 0x88, 0xa7, 0x3c, 0x96,
0xbc, 0x94, 0x43, 0xb1, 0x9c, 0x7f, 0x7a, 0xec, 0x45, 0x93, 0xd4, 0x1b, 0xf0, 0xe3, 0x98, 0x73,
0xa9, 0xcf, 0xe4, 0x50, 0x2c, 0x87, 0xd4, 0x6c, 0x94, 0x13, 0xee, 0xba, 0x1c, 0xaa, 0xbc, 0xc2,
0x62, 0x9e, 0xea, 0x99, 0x57, 0x58, 0xcc, 0x4a, 0x5e, 0xb2, 0xce, 0x94, 0x48, 0xd6, 0x0f, 0x61,
0x55, 0xc8, 0x50, 0x29, 0x3d, 0xbc, 0x1c, 0x71, 0x4d, 0xc9, 0x65, 0x77, 0xa1, 0x83, 0x7d, 0x56,
0xac, 0x91, 0x04, 0x3f, 0x17, 0x3c, 0x56, 0x71, 0x0b, 0x38, 0x96, 0x25, 0xd7, 0x83, 0x59, 0x56,
0x84, 0xe6, 0x14, 0x70, 0x2a, 0xeb, 0xbf, 0xb6, 0xcb, 0x36, 0x65, 0xd9, 0x1c, 0xce, 0x3e, 0x82,
0xb5, 0x11, 0x1f, 0x04, 0xbe, 0x5d, 0x85, 0x97, 0x6d, 0xf2, 0xd3, 0xb2, 0xb1, 0x15, 0x9c, 0x85,
0x9f, 0x47, 0xa3, 0xc3, 0x40, 0x6c, 0x6c, 0xc2, 0x49, 0x52, 0x77, 0x0b, 0xb8, 0x33, 0x0f, 0xad,
0x83, 0x34, 0x1a, 0xab, 0xa5, 0x5f, 0x80, 0xb6, 0x48, 0xca, 0xb0, 0xd4, 0x77, 0xe0, 0x0a, 0xd1,
0xeb, 0xf3, 0x68, 0x1c, 0x0d, 0xa3, 0xe3, 0x73, 0xcb, 0xd4, 0xf1, 0x6f, 0x2b, 0xb0, 0x6c, 0xe5,
0x66, 0xb6, 0x0e, 0xb2, 0xcb, 0xaa, 0x58, 0x42, 0x41, 0xe2, 0x4b, 0xc6, 0xb6, 0x20, 0x0a, 0x0a,
0x37, 0xd8, 0x0b, 0x19, 0x5e, 0xb8, 0x99, 0x5d, 0x90, 0x51, 0x1f, 0x0a, 0x7a, 0xef, 0x16, 0xe9,
0x5d, 0x7e, 0xaf, 0xae, 0xce, 0xa8, 0x2a, 0x7e, 0x53, 0x06, 0x52, 0x0d, 0xe4, 0xa0, 0x6b, 0x76,
0xf0, 0x8b, 0x69, 0x1a, 0x53, 0x3d, 0xe8, 0x6b, 0x30, 0x71, 0x7e, 0x59, 0x01, 0xc8, 0x7a, 0x47,
0xe1, 0x37, 0x7a, 0x6b, 0x13, 0x77, 0xc9, 0x8d, 0x6d, 0xec, 0x3d, 0x68, 0xeb, 0x08, 0x8a, 0x6c,
0xb7, 0x6c, 0x29, 0x0c, 0xb5, 0x8b, 0xdb, 0xb0, 0x78, 0x3c, 0x8c, 0x0e, 0x49, 0x8b, 0xa1, 0x38,
0xe7, 0x44, 0x06, 0xe7, 0x2e, 0x08, 0xf8, 0xa1, 0x44, 0xb3, 0xad, 0xb5, 0x6e, 0x6e, 0xad, 0xe5,
0x1b, 0xe5, 0x2f, 0xaa, 0xda, 0x8d, 0x9d, 0xcd, 0xc4, 0x1b, 0xb9, 0x9c, 0x6d, 0x14, 0xc4, 0xfa,
0x14, 0xcf, 0x31, 0x9d, 0x81, 0xf6, 0xdf, 0x6a, 0x29, 0xff, 0x04, 0x16, 0x62, 0x21, 0x33, 0x95,
0x40, 0xad, 0xbf, 0x41, 0xa0, 0xce, 0xc7, 0xd6, 0xce, 0xfc, 0x2d, 0xe8, 0xf8, 0x83, 0x53, 0x1e,
0xa7, 0x01, 0x59, 0x0e, 0x49, 0x8d, 0x12, 0x03, 0x5c, 0x34, 0x70, 0xd2, 0x56, 0x6e, 0xc3, 0xa2,
0x0c, 0x95, 0xd6, 0x25, 0xe5, 0xad, 0xca, 0x0c, 0xc6, 0x82, 0xce, 0x3f, 0x52, 0x5e, 0x73, 0x7b,
0x75, 0xdf, 0x3c, 0x2b, 0xe6, 0x08, 0xab, 0xb9, 0x11, 0x7e, 0x43, 0x7a, 0xa6, 0x07, 0xca, 0x44,
0x59, 0x33, 0x42, 0xf2, 0x06, 0x32, 0xea, 0xc0, 0x9e, 0xd6, 0xfa, 0x45, 0xa6, 0xd5, 0xf9, 0x8f,
0x15, 0x98, 0xdb, 0x8d, 0xc6, 0xbb, 0x38, 0xc5, 0xa8, 0xe3, 0x20, 0x9b, 0xe8, 0x7b, 0x0a, 0x2a,
0xf9, 0x96, 0xd0, 0xc5, 0x52, 0xad, 0x64, 0x3e, 0xaf, 0x95, 0xfc, 0x36, 0xbc, 0x43, 0x46, 0xf2,
0x38, 0x1a, 0x47, 0x31, 0xb2, 0xab, 0x3f, 0x14, 0x2a, 0x48, 0x14, 0xa6, 0x27, 0x4a, 0x9c, 0xbe,
0xa9, 0x08, 0x59, 0xae, 0x86, 0xe9, 0xa9, 0x27, 0x4e, 0x78, 0x52, 0x8b, 0x12, 0x52, 0xb6, 0x98,
0xe1, 0xfc, 0x06, 0x34, 0xe9, 0x84, 0x41, 0x43, 0x7b, 0x1f, 0x9a, 0x27, 0xd1, 0xd8, 0x3b, 0x09,
0xc2, 0x54, 0xb1, 0xff, 0x42, 0xa6, 0xfa, 0xef, 0xd2, 0xa4, 0xe8, 0x02, 0xce, 0x1f, 0xcf, 0xc2,
0xdc, 0xe3, 0xf0, 0x34, 0x0a, 0xfa, 0xe4, 0x7d, 0x1f, 0xf1, 0x51, 0xa4, 0x6e, 0x6e, 0xe0, 0x6f,
0xba, 0x1c, 0x9d, 0xdd, 0xad, 0x14, 0x2c, 0x64, 0x20, 0x78, 0x26, 0x8d, 0xcd, 0xbb, 0x91, 0x32,
0x95, 0x1d, 0xb4, 0x66, 0x8c, 0xbb, 0x2f, 0x58, 0x9b, 0xb8, 0xb3, 0x47, 0x73, 0x27, 0x22, 0x6e,
0x0d, 0x04, 0x27, 0x5f, 0x86, 0x54, 0x8a, 0x98, 0x3b, 0x11, 0xff, 0x23, 0x21, 0x3a, 0x67, 0xc7,
0x5c, 0xb8, 0x39, 0xb4, 0xea, 0x85, 0xe7, 0x6c, 0x13, 0x44, 0xf5, 0x4c, 0x7c, 0x20, 0xca, 0x88,
0xed, 0xc0, 0x84, 0x50, 0x41, 0xcd, 0xdf, 0x18, 0x16, 0xb7, 0xbe, 0xf3, 0xb0, 0x88, 0xb3, 0xd0,
0x42, 0x57, 0x8c, 0x13, 0xc4, 0xfd, 0xd2, 0x3c, 0x6e, 0x9c, 0xce, 0x45, 0x4c, 0xb9, 0x3a, 0x9d,
0x23, 0xc9, 0xf8, 0xc3, 0xe1, 0xa1, 0xdf, 0x7f, 0x25, 0x0e, 0x93, 0x6d, 0xe1, 0x1d, 0xb3, 0x40,
0x0a, 0x8c, 0xcc, 0xd6, 0x95, 0xa2, 0x97, 0xea, 0xae, 0x09, 0xb1, 0x0d, 0x68, 0x91, 0xe5, 0x42,
0xae, 0xec, 0x02, 0xad, 0x6c, 0xc7, 0x34, 0x6d, 0xd0, 0xda, 0x9a, 0x85, 0xcc, 0xb8, 0x80, 0xc5,
0x42, 0x94, 0xb7, 0x3f, 0x18, 0xc8, 0x90, 0x8a, 0x8e, 0xb8, 0x5f, 0xa9, 0x01, 0xb2, 0x8d, 0x88,
0x09, 0x13, 0x05, 0x96, 0xa8, 0x80, 0x85, 0xb1, 0xeb, 0xc2, 0x72, 0x38, 0xf6, 0x83, 0x01, 0x05,
0x2c, 0x89, 0xe3, 0xa7, 0xc6, 0xb0, 0x0e, 0xf5, 0x9b, 0x36, 0xce, 0x65, 0x9a, 0x15, 0x0b, 0xc3,
0xb9, 0xd1, 0xe9, 0x51, 0x16, 0x16, 0x6e, 0x83, 0xec, 0x03, 0x72, 0x6a, 0xa7, 0x9c, 0x62, 0xbf,
0x17, 0x36, 0xde, 0x91, 0x63, 0x96, 0x64, 0xab, 0xfe, 0x1e, 0x60, 0x11, 0x57, 0x94, 0x44, 0xb5,
0x4d, 0xf8, 0x15, 0x56, 0x2d, 0xb5, 0x4d, 0x16, 0x25, 0xbf, 0x82, 0x28, 0xe0, 0x6c, 0x42, 0xdb,
0xac, 0x80, 0x35, 0xa0, 0xfe, 0x6c, 0x7f, 0x67, 0xaf, 0x73, 0x89, 0xb5, 0x60, 0xee, 0x60, 0xe7,
0xf9, 0xf3, 0x27, 0x3b, 0xdb, 0x9d, 0x0a, 0x6b, 0x43, 0x43, 0xc7, 0xbb, 0x56, 0x31, 0xb5, 0xb9,
0xb5, 0xb5, 0xb3, 0xff, 0x7c, 0x67, 0xbb, 0x53, 0xfb, 0xb4, 0xde, 0xa8, 0x76, 0x6a, 0xa4, 0xb9,
0x19, 0xf5, 0xbf, 0xc5, 0x66, 0x74, 0x1d, 0x80, 0x4e, 0x14, 0x59, 0x4c, 0x4b, 0xdd, 0x35, 0x10,
0x94, 0x90, 0xfa, 0xac, 0x5d, 0x13, 0x97, 0x4d, 0x55, 0x9a, 0x66, 0x8d, 0x6e, 0x75, 0x9a, 0x4e,
0x9c, 0x19, 0xd7, 0x06, 0x91, 0xa2, 0x24, 0x40, 0x41, 0x98, 0x82, 0x0f, 0x4d, 0x08, 0x57, 0x28,
0xe6, 0x49, 0x34, 0x3c, 0xe5, 0xa2, 0x88, 0xd0, 0xcb, 0x2c, 0x0c, 0xdb, 0x92, 0xa2, 0xc6, 0x08,
0x90, 0x9e, 0x71, 0x6d, 0x90, 0x7d, 0x47, 0xad, 0x50, 0x83, 0x56, 0x68, 0xad, 0x38, 0xdd, 0xd6,
0xea, 0x3c, 0x2d, 0x18, 0x7d, 0x9a, 0xb4, 0x4c, 0xdf, 0x2c, 0x7e, 0x77, 0x01, 0xe3, 0x0f, 0x5b,
0x07, 0x36, 0x1a, 0x8f, 0xbd, 0x12, 0x6b, 0x4c, 0xdd, 0x2d, 0xc9, 0xf9, 0x1a, 0x8c, 0x45, 0x29,
0xb0, 0xcd, 0xc1, 0x40, 0x76, 0xd3, 0xbc, 0x7b, 0x1b, 0x9b, 0x97, 0xbd, 0x95, 0x2c, 0x2c, 0x91,
0x37, 0xd5, 0x72, 0x79, 0xf3, 0x46, 0xae, 0x74, 0x1e, 0x43, 0x6b, 0xdf, 0xb8, 0x3e, 0xee, 0xa0,
0x68, 0x56, 0x17, 0xc7, 0x85, 0xd0, 0x16, 0x46, 0xa2, 0x0c, 0x35, 0xba, 0x54, 0x35, 0xbb, 0xe4,
0xfc, 0xc3, 0x8a, 0xb8, 0x91, 0xa7, 0x87, 0x20, 0xda, 0x77, 0xa0, 0xad, 0xfd, 0x0c, 0xd9, 0x25,
0x06, 0x0b, 0xc3, 0x32, 0xd4, 0x1d, 0x2f, 0x3a, 0x3a, 0x4a, 0xb8, 0x0a, 0x37, 0xb6, 0x30, 0xa5,
0x05, 0xa3, 0x5e, 0x1d, 0x88, 0x16, 0x12, 0x19, 0x76, 0x5c, 0xc0, 0x91, 0xd2, 0xa5, 0x9d, 0x57,
0x05, 0x5a, 0xeb, 0xb4, 0xbe, 0x6b, 0x91, 0x9f, 0xe9, 0xbb, 0xd0, 0xd0, 0xf5, 0xda, 0x5b, 0x9c,
0x2a, 0xa9, 0xf3, 0x71, 0x2b, 0xa5, 0x13, 0xb2, 0xd5, 0x69, 0xc1, 0x70, 0xc5, 0x0c, 0xa4, 0xa5,
0xa3, 0x20, 0xce, 0x17, 0x17, 0x1c, 0x58, 0x92, 0xe3, 0xbc, 0x84, 0x65, 0x25, 0x3e, 0x0c, 0xf5,
0xdc, 0x5e, 0xc8, 0xca, 0xdb, 0xc4, 0x6b, 0xb5, 0x28, 0x5e, 0x9d, 0x7f, 0x55, 0x87, 0x39, 0xb9,
0xda, 0x85, 0x67, 0x08, 0xc4, 0x06, 0x6d, 0x61, 0xac, 0x6b, 0x5d, 0x36, 0x25, 0x42, 0x90, 0x9b,
0xee, 0x9d, 0xfc, 0xb6, 0x99, 0x19, 0x0b, 0x73, 0x5b, 0xe7, 0x2a, 0xd4, 0xc7, 0x7e, 0x7a, 0x42,
0xb6, 0x24, 0x41, 0x4b, 0x94, 0x56, 0xe6, 0xe8, 0x19, 0xdb, 0x1c, 0x5d, 0xf6, 0xf8, 0x82, 0xd0,
0x11, 0x8b, 0x8f, 0x2f, 0x5c, 0x85, 0xa6, 0xd8, 0xe6, 0x33, 0x8b, 0x73, 0x06, 0xe4, 0xd4, 0x82,
0x46, 0x41, 0x2d, 0xb8, 0xf8, 0x86, 0xfd, 0x3d, 0x98, 0x15, 0x17, 0x90, 0x64, 0x58, 0xf9, 0x55,
0xe5, 0x50, 0x16, 0xe5, 0xd4, 0x5f, 0x11, 0x6f, 0xe6, 0xca, 0xb2, 0xe6, 0x15, 0xe6, 0x96, 0x7d,
0x85, 0xd9, 0x34, 0x94, 0xb7, 0x73, 0x86, 0xf2, 0xbb, 0xd0, 0xd1, 0xd3, 0x47, 0x96, 0xad, 0x30,
0x91, 0x51, 0xc7, 0x05, 0x3c, 0xdb, 0x8f, 0x16, 0xac, 0xfd, 0x08, 0x25, 0xdc, 0x66, 0x9a, 0xf2,
0xd1, 0x38, 0x55, 0xfb, 0xd1, 0x43, 0x98, 0xb7, 0x3a, 0x89, 0xdb, 0x90, 0x0c, 0x76, 0xef, 0x5c,
0x62, 0xf3, 0xd0, 0x7c, 0xbc, 0xe7, 0x3d, 0x7c, 0xf2, 0xf8, 0xd1, 0xee, 0xf3, 0x4e, 0x05, 0x93,
0x07, 0x2f, 0xb6, 0xb6, 0x76, 0x76, 0xb6, 0x69, 0x5b, 0x02, 0x98, 0x7d, 0xb8, 0xf9, 0x18, 0xb7,
0xa8, 0x9a, 0xf3, 0x7f, 0x2a, 0xd0, 0x32, 0xaa, 0x67, 0xdf, 0xd7, 0x33, 0x23, 0x6e, 0xb9, 0x5e,
0x2b, 0x76, 0x61, 0x5d, 0x09, 0x6a, 0x63, 0x6a, 0xf4, 0x7b, 0x13, 0xd5, 0xa9, 0xef, 0x4d, 0xe0,
0xf2, 0xf8, 0xa2, 0x06, 0x3d, 0x0f, 0xe2, 0xd8, 0x92, 0x87, 0x45, 0x4c, 0x51, 0xb6, 0xbb, 0x60,
0x49, 0x61, 0xaa, 0xcb, 0xc3, 0xce, 0x87, 0x00, 0x59, 0x6f, 0xec, 0x61, 0x5f, 0xb2, 0x87, 0x5d,
0x31, 0x86, 0x5d, 0x75, 0xb6, 0x85, 0xc0, 0x90, 0x53, 0xa8, 0x3d, 0xa2, 0xdf, 0x01, 0xa6, 0x2c,
0x43, 0x14, 0xbb, 0x37, 0x1e, 0xf2, 0x54, 0x5d, 0x3f, 0x59, 0x92, 0x39, 0x8f, 0x75, 0x86, 0xba,
0x41, 0x95, 0xd5, 0x92, 0xc9, 0x1d, 0x49, 0x71, 0x79, 0xb9, 0x23, 0x8b, 0xba, 0x3a, 0xdf, 0xe9,
0x41, 0x77, 0x9b, 0x63, 0x6d, 0x9b, 0xc3, 0x61, 0xae, 0x3b, 0x78, 0xb4, 0x2f, 0xc9, 0x93, 0xe7,
0xfe, 0x1f, 0xc0, 0xe5, 0x4d, 0x71, 0xd3, 0xe4, 0xeb, 0x0a, 0x44, 0x76, 0xba, 0xb0, 0x9a, 0xaf,
0x52, 0x36, 0xf6, 0x10, 0x96, 0xb6, 0xf9, 0xe1, 0xe4, 0xf8, 0x09, 0x3f, 0xcd, 0x1a, 0x62, 0x50,
0x4f, 0x4e, 0xa2, 0x33, 0x39, 0x3f, 0xf4, 0x9b, 0x5d, 0x03, 0x18, 0x62, 0x19, 0x2f, 0x19, 0xf3,
0xbe, 0xba, 0x45, 0x4c, 0xc8, 0xc1, 0x98, 0xf7, 0x9d, 0x0f, 0x81, 0x99, 0xf5, 0xc8, 0xf9, 0x42,
0x5d, 0x7c, 0x72, 0xe8, 0x25, 0xe7, 0x49, 0xca, 0x47, 0xea, 0x7a, 0xb4, 0x09, 0x39, 0xb7, 0xa1,
0xbd, 0xef, 0x9f, 0xbb, 0xfc, 0x73, 0xf9, 0xbe, 0xc9, 0x1a, 0xcc, 0x8d, 0xfd, 0x73, 0xe4, 0x67,
0xed, 0x2e, 0xa0, 0x6c, 0xe7, 0x4f, 0x6a, 0x30, 0x2b, 0x4a, 0x62, 0xad, 0x03, 0x9e, 0xa4, 0x41,
0x48, 0x3c, 0xa6, 0x6a, 0x35, 0xa0, 0x82, 0xc0, 0xac, 0x96, 0x08, 0x4c, 0x69, 0xc3, 0x52, 0xb7,
0x31, 0x25, 0xc9, 0x5a, 0x18, 0x8a, 0xad, 0xec, 0x46, 0x81, 0xa0, 0xd4, 0x0c, 0xc8, 0xf9, 0xe3,
0x32, 0x8d, 0x5f, 0xf4, 0x4f, 0xed, 0x05, 0x52, 0x26, 0x9a, 0x50, 0xe9, 0xb9, 0x62, 0x4e, 0xc5,
0x6f, 0xe7, 0xce, 0x15, 0x85, 0xf3, 0x43, 0xe3, 0x02, 0xe7, 0x07, 0x61, 0xd8, 0x7a, 0xd3, 0xf9,
0x01, 0x2e, 0x72, 0x7e, 0xb8, 0x88, 0x1f, 0xac, 0x07, 0x0d, 0xda, 0xd3, 0x0d, 0x11, 0xa9, 0xd2,
0xc8, 0x2f, 0xda, 0xfc, 0x32, 0x6f, 0xf1, 0x8b, 0xb4, 0xbf, 0xb8, 0x3a, 0xdf, 0x19, 0xc1, 0x9c,
0x04, 0x51, 0x15, 0x3b, 0x0c, 0x52, 0x69, 0xe9, 0xc4, 0x9f, 0x48, 0x91, 0xa1, 0x3f, 0x52, 0xb7,
0xd7, 0xe9, 0x37, 0x0e, 0x99, 0x2e, 0xd1, 0x7e, 0x3e, 0x09, 0x62, 0x3e, 0x50, 0xf7, 0xc0, 0x0c,
0x88, 0x22, 0x77, 0x13, 0xef, 0x55, 0x18, 0x9d, 0x85, 0xf2, 0x26, 0x98, 0x4e, 0x3b, 0x0c, 0x3a,
0xf4, 0x8a, 0x05, 0x1e, 0xbf, 0x15, 0x5b, 0xfe, 0xdd, 0x0a, 0x74, 0x24, 0x83, 0xe8, 0x3c, 0xe5,
0xb4, 0x7e, 0xd3, 0x75, 0xc7, 0x9b, 0x30, 0x4f, 0x87, 0x7f, 0xbd, 0x55, 0x48, 0x07, 0xb0, 0x05,
0x62, 0x7f, 0x55, 0xe8, 0xdc, 0x28, 0x18, 0x4a, 0x7a, 0x33, 0x21, 0xb5, 0xdb, 0xc4, 0xbe, 0x0c,
0xfa, 0xaf, 0xb8, 0x3a, 0xed, 0xfc, 0x51, 0x05, 0x96, 0x8c, 0x0e, 0x4b, 0x06, 0xfb, 0x04, 0xda,
0xfa, 0xb1, 0x18, 0xae, 0x95, 0xa1, 0x35, 0x5b, 0x22, 0x64, 0x9f, 0x59, 0x85, 0x89, 0x4e, 0xfd,
0x73, 0xea, 0x60, 0x32, 0x19, 0x49, 0x2d, 0xc4, 0x84, 0x70, 0xfd, 0xcf, 0x38, 0x7f, 0xa5, 0x8b,
0x08, 0x3d, 0xc8, 0xc2, 0xc8, 0x69, 0x12, 0x85, 0xe9, 0x89, 0x2e, 0x54, 0x97, 0x4e, 0x13, 0x13,
0x74, 0xfe, 0x73, 0x15, 0x96, 0x85, 0x15, 0x4a, 0x5a, 0xff, 0xf4, 0x7d, 0xfd, 0x59, 0x61, 0x90,
0x13, 0xc2, 0x66, 0xf7, 0x92, 0x2b, 0xd3, 0xec, 0xfb, 0x17, 0xb4, 0x9c, 0xe9, 0xdb, 0x05, 0x53,
0xd6, 0xa2, 0x56, 0xb6, 0x16, 0x6f, 0x98, 0xe9, 0x32, 0xff, 0xd5, 0x4c, 0xb9, 0xff, 0xea, 0x62,
0xfe, 0xa2, 0x42, 0x08, 0xfe, 0x9c, 0x2c, 0x65, 0x85, 0xe0, 0x6f, 0xc0, 0x9a, 0x05, 0x90, 0x9c,
0x0d, 0x8e, 0x02, 0xae, 0xee, 0xd6, 0x2d, 0x25, 0x3c, 0xf5, 0xac, 0x22, 0x0f, 0xe6, 0x60, 0x26,
0xe9, 0x47, 0x63, 0xee, 0xac, 0xc2, 0x8a, 0x3d, 0xb9, 0x52, 0xba, 0xff, 0xb2, 0x02, 0xdd, 0x87,
0xc2, 0xf1, 0x1f, 0x84, 0xc7, 0xbb, 0x41, 0x92, 0x46, 0xb1, 0x7e, 0x56, 0xe5, 0x3a, 0x40, 0x92,
0xfa, 0xb1, 0x3c, 0x1f, 0x0a, 0x25, 0xd5, 0x40, 0x70, 0x8e, 0x78, 0x38, 0x10, 0xb9, 0x82, 0x36,
0x74, 0xba, 0x70, 0x08, 0x90, 0x36, 0x3a, 0x4b, 0x95, 0xbe, 0x25, 0x6e, 0x06, 0xe1, 0x64, 0xf0,
0x53, 0xda, 0x32, 0x85, 0xe1, 0x2b, 0x87, 0x3a, 0xbf, 0x5f, 0x85, 0xc5, 0xac, 0x93, 0x14, 0x91,
0x66, 0x0b, 0x5e, 0xa9, 0x3f, 0x67, 0x82, 0x57, 0xfa, 0xd3, 0xbc, 0x00, 0x15, 0x6a, 0xc3, 0x4c,
0x67, 0xa0, 0xec, 0x26, 0xb4, 0x54, 0x2a, 0x9a, 0xa4, 0xc6, 0xfb, 0x06, 0x26, 0x2c, 0xe2, 0xf7,
0x51, 0xa5, 0x97, 0xc7, 0x13, 0x99, 0xa2, 0xbb, 0x96, 0xa3, 0x94, 0xbe, 0x14, 0x6b, 0xaa, 0x92,
0x28, 0x9b, 0x50, 0x17, 0x16, 0x6b, 0x48, 0x7a, 0xb0, 0xa9, 0x23, 0x36, 0xf4, 0xbb, 0x50, 0x9a,
0xe7, 0x45, 0x8d, 0xd9, 0xe5, 0x8b, 0xba, 0x6b, 0x42, 0xca, 0x4c, 0x12, 0x4d, 0xac, 0x63, 0xab,
0x85, 0x39, 0xbf, 0x57, 0x81, 0x2b, 0x25, 0xcb, 0x28, 0x65, 0xc0, 0x36, 0x2c, 0x1d, 0xe9, 0x4c,
0x35, 0xd5, 0x42, 0x10, 0xac, 0x2a, 0x69, 0x6b, 0x4f, 0xaf, 0x5b, 0xfc, 0x40, 0x1f, 0x93, 0xc4,
0xe2, 0x59, 0x77, 0x6d, 0x8a, 0x19, 0xce, 0x3e, 0xf4, 0x76, 0x5e, 0xa3, 0x48, 0xd9, 0x32, 0x1f,
0xf9, 0x54, 0x94, 0xb5, 0x51, 0x10, 0x99, 0x6f, 0xb7, 0xce, 0x1e, 0xc1, 0xbc, 0x55, 0x17, 0xfb,
0xee, 0x45, 0x2b, 0x31, 0xb9, 0xff, 0x86, 0x5c, 0x75, 0xf1, 0x4a, 0xa9, 0xba, 0xf1, 0x63, 0x40,
0xce, 0x29, 0x2c, 0x3e, 0x9d, 0x0c, 0xd3, 0x20, 0x7b, 0xb1, 0x94, 0x7d, 0x5f, 0x7e, 0x44, 0x55,
0xa8, 0xa9, 0x2b, 0x6d, 0xca, 0x2c, 0x87, 0x33, 0x36, 0xc2, 0x9a, 0xbc, 0x62, 0x8b, 0xc5, 0x0c,
0xe7, 0x0a, 0xac, 0x65, 0x4d, 0x8a, 0xb9, 0x53, 0xdb, 0xce, 0x1f, 0x54, 0x44, 0xd8, 0xaa, 0xfd,
0x80, 0x2a, 0x7b, 0x04, 0xcb, 0x49, 0x10, 0x1e, 0x0f, 0xb9, 0x59, 0x4f, 0x22, 0x67, 0xe2, 0xb2,
0xdd, 0x3d, 0xf9, 0xc8, 0xaa, 0x5b, 0xf6, 0x05, 0x12, 0x48, 0x79, 0x47, 0x33, 0x02, 0xc9, 0x4d,
0x49, 0xd9, 0x00, 0x3e, 0x85, 0x05, 0xbb, 0x31, 0xf6, 0x91, 0xbc, 0xa8, 0x93, 0xf5, 0xcc, 0x74,
0xa7, 0xda, 0x94, 0x61, 0x95, 0x74, 0x7e, 0x51, 0x81, 0xae, 0xcb, 0x91, 0x8c, 0xb9, 0xd1, 0xa8,
0xa4, 0x9e, 0x4f, 0x0a, 0xd5, 0x4e, 0x1f, 0xb0, 0xbe, 0x00, 0xa4, 0xc6, 0xba, 0x3e, 0x75, 0x51,
0x76, 0x2f, 0x95, 0x8c, 0xea, 0x41, 0x03, 0x66, 0xe5, 0xf8, 0xd6, 0xe0, 0xb2, 0xec, 0x92, 0xea,
0x4e, 0xe6, 0x87, 0xb3, 0x1a, 0xb5, 0xfc, 0x70, 0x3d, 0xe8, 0x8a, 0xd7, 0x73, 0xcc, 0x71, 0xc8,
0x0f, 0xb7, 0x81, 0x3d, 0xf5, 0xfb, 0x7e, 0x1c, 0x45, 0xe1, 0x3e, 0x8f, 0x65, 0x9c, 0x21, 0x69,
0x8d, 0xe4, 0xa6, 0x52, 0x0a, 0xae, 0x48, 0xa9, 0x07, 0x5f, 0xa2, 0x50, 0x3d, 0xac, 0x23, 0x52,
0x8e, 0x0b, 0xcb, 0x0f, 0xfc, 0x57, 0x5c, 0xd5, 0x94, 0xcd, 0x52, 0x6b, 0xac, 0x2b, 0x55, 0x73,
0xaf, 0xee, 0xe0, 0x15, 0x9b, 0x75, 0xcd, 0xd2, 0xce, 0x06, 0xac, 0xd8, 0x75, 0x4a, 0x51, 0xd2,
0x83, 0xc6, 0x48, 0x62, 0xb2, 0x77, 0x3a, 0x7d, 0xf7, 0x4b, 0x68, 0x19, 0x2f, 0x22, 0xb1, 0x35,
0x58, 0x7e, 0xf9, 0xf8, 0xf9, 0xde, 0xce, 0xc1, 0x81, 0xb7, 0xff, 0xe2, 0xc1, 0x67, 0x3b, 0x3f,
0xf2, 0x76, 0x37, 0x0f, 0x76, 0x3b, 0x97, 0xd8, 0x2a, 0xb0, 0xbd, 0x9d, 0x83, 0xe7, 0x3b, 0xdb,
0x16, 0x5e, 0x61, 0xd7, 0xa1, 0xf7, 0x62, 0xef, 0xc5, 0xc1, 0xce, 0xb6, 0x57, 0xf6, 0x5d, 0x95,
0x5d, 0x83, 0x2b, 0x32, 0xbf, 0xe4, 0xf3, 0xda, 0xdd, 0x4f, 0xa0, 0x93, 0x37, 0x27, 0x5a, 0x66,
0xd8, 0x37, 0xd9, 0x6b, 0x37, 0x7e, 0x51, 0x83, 0x05, 0x11, 0x48, 0x2c, 0x9e, 0x20, 0xe6, 0x31,
0x7b, 0x0a, 0x73, 0xf2, 0x2d, 0x6b, 0xa6, 0x48, 0xcb, 0x7e, 0x3d, 0xbb, 0xb7, 0x9a, 0x87, 0xe5,
0xb2, 0x2e, 0xff, 0x95, 0x7f, 0xff, 0xdf, 0xff, 0x56, 0x75, 0x9e, 0xb5, 0xee, 0x9d, 0x7e, 0x70,
0xef, 0x98, 0x87, 0x09, 0xd6, 0xf1, 0x3b, 0x00, 0xd9, 0x0b, 0xcd, 0xac, 0xab, 0xad, 0x51, 0xb9,
0xe7, 0xab, 0x7b, 0x57, 0x4a, 0x72, 0x64, 0xbd, 0x57, 0xa8, 0xde, 0x65, 0x67, 0x01, 0xeb, 0x0d,
0xc2, 0x20, 0x15, 0xaf, 0x35, 0x7f, 0x5c, 0xb9, 0xcb, 0x06, 0xd0, 0x36, 0xdf, 0x4e, 0x66, 0xca,
0xad, 0x5a, 0xf2, 0xfa, 0x73, 0xef, 0x9d, 0xd2, 0x3c, 0x45, 0xcb, 0xd4, 0xc6, 0x65, 0xa7, 0x83,
0x6d, 0x4c, 0xa8, 0x44, 0xd6, 0xca, 0x50, 0x70, 0x78, 0xf6, 0x44, 0x32, 0xbb, 0x6a, 0x30, 0x5d,
0xe1, 0x81, 0xe6, 0xde, 0xb5, 0x29, 0xb9, 0xb2, 0xad, 0x6b, 0xd4, 0xd6, 0x9a, 0xc3, 0xb0, 0xad,
0x3e, 0x95, 0x51, 0x0f, 0x34, 0x7f, 0x5c, 0xb9, 0xbb, 0xf1, 0x6f, 0x6e, 0x43, 0x53, 0x87, 0x5c,
0xb0, 0x9f, 0xc1, 0xbc, 0x15, 0xe9, 0xcd, 0xd4, 0x30, 0xca, 0x02, 0xc3, 0x7b, 0x57, 0xcb, 0x33,
0x65, 0xc3, 0xd7, 0xa9, 0xe1, 0x2e, 0x5b, 0xc5, 0x86, 0x65, 0xa8, 0xf4, 0x3d, 0xba, 0xb3, 0x20,
0xae, 0x48, 0xbf, 0x32, 0x24, 0x99, 0x68, 0xec, 0x6a, 0x5e, 0xb8, 0x58, 0xad, 0x5d, 0x9b, 0x92,
0x2b, 0x9b, 0xbb, 0x4a, 0xcd, 0xad, 0xb2, 0x15, 0xb3, 0x39, 0x1d, 0x06, 0xc1, 0xe9, 0x5d, 0x00,
0xf3, 0xf5, 0x60, 0x76, 0x4d, 0x13, 0x56, 0xd9, 0xab, 0xc2, 0x9a, 0x44, 0x8a, 0x4f, 0x0b, 0x3b,
0x5d, 0x6a, 0x8a, 0x31, 0x5a, 0x3e, 0xf3, 0xf1, 0x60, 0x76, 0x08, 0x2d, 0xe3, 0x71, 0x3e, 0x76,
0x65, 0xea, 0x43, 0x82, 0xbd, 0x5e, 0x59, 0x56, 0xd9, 0x50, 0xcc, 0xfa, 0xef, 0xa1, 0xa2, 0xf3,
0x13, 0x68, 0xea, 0xe7, 0xde, 0xd8, 0x9a, 0xf1, 0xfc, 0x9e, 0xf9, 0x3c, 0x5d, 0xaf, 0x5b, 0xcc,
0x28, 0x23, 0x3e, 0xb3, 0x76, 0x24, 0xbe, 0x97, 0xd0, 0x32, 0x9e, 0x74, 0xd3, 0x03, 0x28, 0x3e,
0x1b, 0xa7, 0x07, 0x50, 0xf2, 0x02, 0x9c, 0xb3, 0x44, 0x4d, 0xb4, 0x58, 0x93, 0xe8, 0x3b, 0x7d,
0x1d, 0x25, 0xec, 0x09, 0x5c, 0x96, 0x12, 0xfb, 0x90, 0x7f, 0x95, 0x65, 0x28, 0x79, 0xb0, 0xf9,
0x7e, 0x85, 0x7d, 0x02, 0x0d, 0xf5, 0x72, 0x1f, 0x5b, 0x2d, 0x7f, 0x81, 0xb0, 0xb7, 0x56, 0xc0,
0xa5, 0x78, 0xfd, 0x11, 0x40, 0xf6, 0x7e, 0x9c, 0x16, 0x12, 0x85, 0xf7, 0xe8, 0x34, 0x05, 0x14,
0x1f, 0x9b, 0x73, 0x56, 0x69, 0x80, 0x1d, 0x46, 0x42, 0x22, 0xe4, 0x67, 0xea, 0x09, 0x90, 0x9f,
0x42, 0xcb, 0x78, 0x42, 0x4e, 0x4f, 0x5f, 0xf1, 0xf9, 0x39, 0x3d, 0x7d, 0x25, 0x2f, 0xce, 0x39,
0x3d, 0xaa, 0x7d, 0xc5, 0x59, 0xc4, 0xda, 0x93, 0xe0, 0x38, 0x1c, 0x89, 0x02, 0xb8, 0x40, 0x27,
0x30, 0x6f, 0xbd, 0x13, 0xa7, 0x39, 0xb4, 0xec, 0x15, 0x3a, 0xcd, 0xa1, 0xa5, 0x4f, 0xcb, 0x29,
0x3a, 0x73, 0x96, 0xb0, 0x9d, 0x53, 0x2a, 0x62, 0xb4, 0xf4, 0x63, 0x68, 0x19, 0x6f, 0xbe, 0xe9,
0xb1, 0x14, 0x9f, 0x97, 0xd3, 0x63, 0x29, 0x7b, 0x22, 0x6e, 0x85, 0xda, 0x58, 0x70, 0x88, 0x14,
0xe8, 0x31, 0x0b, 0xac, 0xfb, 0x67, 0xb0, 0x60, 0xbf, 0x02, 0xa7, 0x79, 0xbf, 0xf4, 0x3d, 0x39,
0xcd, 0xfb, 0x53, 0x9e, 0x8e, 0x93, 0x24, 0x7d, 0x77, 0x59, 0x37, 0x72, 0xef, 0x0b, 0x19, 0xb4,
0xf9, 0x25, 0xfb, 0x01, 0x0a, 0x38, 0xf9, 0xba, 0x08, 0x5b, 0x33, 0xa8, 0xd6, 0x7c, 0x83, 0x44,
0xf3, 0x4b, 0xe1, 0x21, 0x12, 0x9b, 0x98, 0xc5, 0x73, 0x1c, 0xb4, 0x6b, 0xd1, 0x2b, 0x23, 0xc6,
0xae, 0x65, 0x3e, 0x44, 0x62, 0xec, 0x5a, 0xd6, 0x63, 0x24, 0xf9, 0x5d, 0x2b, 0x0d, 0xb0, 0x8e,
0x10, 0x16, 0x73, 0xb7, 0xd1, 0x34, 0x57, 0x94, 0x5f, 0x18, 0xee, 0x5d, 0x7f, 0xf3, 0x25, 0x36,
0x5b, 0x82, 0x28, 0x21, 0x78, 0x4f, 0x5d, 0xcf, 0xfe, 0x5d, 0x68, 0x9b, 0x2f, 0x53, 0x31, 0x93,
0x95, 0xf3, 0x2d, 0xbd, 0x53, 0x9a, 0x67, 0x2f, 0x2e, 0x6b, 0x9b, 0xcd, 0xb0, 0x1f, 0xc2, 0xaa,
0x66, 0x75, 0xf3, 0x82, 0x53, 0xc2, 0xde, 0x2d, 0xb9, 0xf6, 0x64, 0xea, 0x71, 0xbd, 0x2b, 0x53,
0xef, 0x45, 0xdd, 0xaf, 0x20, 0xd1, 0xd8, 0xcf, 0xfd, 0x64, 0x1b, 0x46, 0xd9, 0x2b, 0x47, 0xd9,
0x86, 0x51, 0xfa, 0x46, 0x90, 0x22, 0x1a, 0xb6, 0x6c, 0xcd, 0x91, 0x88, 0x6f, 0x61, 0x3f, 0x86,
0x45, 0xe3, 0x0a, 0xe9, 0xc1, 0x79, 0xd8, 0xd7, 0x0c, 0x50, 0x7c, 0xe1, 0xa0, 0x57, 0x76, 0x4a,
0x71, 0xd6, 0xa8, 0xfe, 0x25, 0xc7, 0x9a, 0x1c, 0x24, 0xfe, 0x2d, 0x68, 0x99, 0xd7, 0x53, 0xdf,
0x50, 0xef, 0x9a, 0x91, 0x65, 0x5e, 0xce, 0xbf, 0x5f, 0x61, 0xfb, 0x22, 0xce, 0x51, 0x3f, 0x3d,
0x1c, 0xc5, 0xf9, 0xed, 0xd3, 0x7e, 0x92, 0x58, 0x2f, 0x64, 0xd9, 0x63, 0xd4, 0x77, 0x2a, 0xf7,
0x2b, 0xec, 0xef, 0x55, 0xa0, 0x6d, 0x5d, 0x1f, 0xb5, 0xa2, 0xc6, 0x72, 0x3d, 0xeb, 0x9a, 0x79,
0x66, 0xd7, 0x1c, 0x97, 0x86, 0xfd, 0xe4, 0xee, 0xa7, 0xd6, 0xb4, 0x7e, 0x61, 0x99, 0xea, 0xd6,
0xf3, 0xef, 0x0f, 0x7f, 0x99, 0x2f, 0x60, 0xbe, 0x2b, 0xf1, 0xe5, 0xfd, 0x0a, 0xfb, 0xc3, 0x0a,
0x2c, 0xd8, 0xb6, 0x73, 0x3d, 0xdc, 0x52, 0x2b, 0xbd, 0x5e, 0xfc, 0x29, 0x06, 0xf7, 0x1f, 0x53,
0x2f, 0x9f, 0xdf, 0x75, 0xad, 0x5e, 0xca, 0xa7, 0xa5, 0x7e, 0xbd, 0xde, 0xb2, 0x8f, 0xc5, 0xb3,
0xfe, 0xca, 0x6d, 0xc8, 0x8a, 0xcf, 0xc0, 0x6b, 0x82, 0x31, 0x1f, 0x5b, 0xa7, 0x45, 0xf8, 0xa9,
0x78, 0x77, 0x57, 0xf9, 0x9e, 0x90, 0xee, 0x2e, 0xfa, 0xbd, 0x73, 0x93, 0xc6, 0x74, 0xdd, 0xb9,
0x62, 0x8d, 0x29, 0xbf, 0xc3, 0x6f, 0x8a, 0xde, 0xc9, 0x77, 0xd2, 0xb3, 0x2d, 0xaa, 0xf0, 0x76,
0xfa, 0xf4, 0x4e, 0x8e, 0x44, 0x27, 0x65, 0x71, 0x8b, 0x39, 0x2e, 0x58, 0x8d, 0x73, 0x97, 0xfa,
0x7a, 0xd3, 0x79, 0x77, 0x6a, 0x5f, 0xef, 0x91, 0x05, 0x1c, 0x7b, 0xbc, 0x0f, 0x90, 0xb9, 0xf9,
0x59, 0xce, 0xc5, 0xac, 0x45, 0x46, 0x31, 0x12, 0xc0, 0xe6, 0x40, 0xe5, 0x89, 0xc6, 0x1a, 0x7f,
0x22, 0x04, 0xe0, 0x63, 0xe5, 0x9c, 0x36, 0xd5, 0x1c, 0xdb, 0x17, 0x6f, 0xa9, 0x39, 0xf9, 0xfa,
0x2d, 0xf1, 0xa7, 0x3d, 0xdd, 0x2f, 0x60, 0xfe, 0x49, 0x14, 0xbd, 0x9a, 0x8c, 0x75, 0x40, 0x97,
0xed, 0x9c, 0xda, 0xf5, 0x93, 0x93, 0x5e, 0x6e, 0x14, 0xce, 0x0d, 0xaa, 0xaa, 0xc7, 0xba, 0x46,
0x55, 0xf7, 0xbe, 0xc8, 0x42, 0x08, 0xbe, 0x64, 0x3e, 0x2c, 0x69, 0xa9, 0xaa, 0x3b, 0xde, 0xb3,
0xab, 0xb1, 0x64, 0x69, 0xbe, 0x09, 0x4b, 0x1f, 0x57, 0xbd, 0xbd, 0x97, 0xa8, 0x3a, 0x49, 0xa6,
0xb4, 0xb7, 0x79, 0x9f, 0x6e, 0x96, 0x91, 0x87, 0x67, 0x39, 0xeb, 0xb8, 0x76, 0x0d, 0xf5, 0xe6,
0x2d, 0xd0, 0xde, 0x69, 0xc6, 0xfe, 0x79, 0xcc, 0x3f, 0xbf, 0xf7, 0x85, 0xf4, 0x1d, 0x7d, 0xa9,
0x76, 0x1a, 0xe5, 0x5c, 0xb3, 0x76, 0x9a, 0x9c, 0x37, 0xce, 0xda, 0x69, 0x0a, 0xde, 0x38, 0x6b,
0xaa, 0x95, 0x73, 0x8f, 0x0d, 0x61, 0xa9, 0xe0, 0xc0, 0xd3, 0x9b, 0xcc, 0x34, 0xb7, 0x5f, 0xef,
0xc6, 0xf4, 0x02, 0x76, 0x6b, 0x77, 0xed, 0xd6, 0x0e, 0x60, 0x7e, 0x9b, 0x8b, 0xc9, 0x12, 0x11,
0xec, 0xb9, 0x3b, 0xc8, 0x66, 0x7c, 0x7c, 0x7e, 0x4b, 0xa0, 0x3c, 0x5b, 0x95, 0xa0, 0xd0, 0x71,
0xf6, 0x13, 0x68, 0x3d, 0xe2, 0xa9, 0x0a, 0x59, 0xd7, 0xca, 0x6c, 0x2e, 0x86, 0xbd, 0x57, 0x12,
0xf1, 0x6e, 0xd3, 0x0c, 0xd5, 0x76, 0x8f, 0x0f, 0x8e, 0xb9, 0x10, 0x4e, 0x5e, 0x30, 0xf8, 0x92,
0xfd, 0x45, 0xaa, 0x5c, 0xdf, 0xd9, 0x59, 0x35, 0xe2, 0x8f, 0xcd, 0xca, 0x17, 0x73, 0x78, 0x59,
0xcd, 0x61, 0x34, 0xe0, 0x86, 0x52, 0x15, 0x42, 0xcb, 0xb8, 0xf3, 0xa7, 0x19, 0xa8, 0x78, 0x45,
0x52, 0x33, 0x50, 0xc9, 0x15, 0x41, 0xe7, 0x0e, 0xb5, 0xe3, 0xb0, 0x1b, 0x59, 0x3b, 0xe2, 0x5a,
0x60, 0xd6, 0xd2, 0xbd, 0x2f, 0xfc, 0x51, 0xfa, 0x25, 0x7b, 0x49, 0x4f, 0xbd, 0x99, 0x21, 0xf9,
0x99, 0x76, 0x9e, 0x8f, 0xde, 0xd7, 0x93, 0x65, 0x64, 0xd9, 0x1a, 0xbb, 0x68, 0x8a, 0x74, 0xaf,
0xef, 0x03, 0x1c, 0xa4, 0xd1, 0x78, 0xdb, 0xe7, 0xa3, 0x28, 0xcc, 0x64, 0x6d, 0x16, 0x10, 0x9e,
0xc9, 0x2f, 0x23, 0x2a, 0x9c, 0xbd, 0x34, 0x8e, 0x33, 0xd6, 0xad, 0x06, 0x45, 0x5c, 0x53, 0x63,
0xc6, 0xf5, 0x84, 0x94, 0xc4, 0x8d, 0xdf, 0xaf, 0xb0, 0x4d, 0x80, 0xcc, 0x83, 0xab, 0x0f, 0x27,
0x05, 0xe7, 0xb0, 0x16, 0x7b, 0x25, 0xee, 0xde, 0x7d, 0x68, 0x66, 0x7e, 0xb3, 0xb5, 0xec, 0x06,
0xb0, 0xe5, 0x65, 0xd3, 0x3b, 0x78, 0xc1, 0x9b, 0xe5, 0x74, 0x68, 0xaa, 0x80, 0x35, 0x70, 0xaa,
0xc8, 0x45, 0x15, 0xc0, 0xb2, 0xe8, 0xa0, 0x56, 0x70, 0x28, 0x90, 0x59, 0x8d, 0xa4, 0xc4, 0xa3,
0xa4, 0xb9, 0xb9, 0xd4, 0x21, 0x62, 0xd9, 0x58, 0x90, 0x5a, 0x45, 0x10, 0x35, 0x8a, 0xe6, 0x11,
0x2c, 0x15, 0x6c, 0xec, 0x9a, 0xa5, 0xa7, 0x39, 0x51, 0x34, 0x4b, 0x4f, 0x35, 0xcf, 0x3b, 0x97,
0xa9, 0xc9, 0x45, 0x07, 0xe8, 0x4c, 0x75, 0x16, 0xa4, 0xfd, 0x13, 0x6c, 0xee, 0x0f, 0x2a, 0xb0,
0x5c, 0x62, 0x42, 0x67, 0xef, 0xa9, 0xe3, 0xf9, 0x54, 0xf3, 0x7a, 0xaf, 0xd4, 0xc2, 0xea, 0x1c,
0x50, 0x3b, 0x4f, 0xd9, 0x67, 0xd6, 0xc6, 0x26, 0x8c, 0x9b, 0x92, 0x33, 0xdf, 0xa8, 0x54, 0x94,
0x6a, 0x14, 0x9f, 0xc3, 0x9a, 0xe8, 0xc8, 0xe6, 0x70, 0x98, 0xb3, 0xfe, 0x5e, 0x2f, 0xfc, 0xeb,
0x2f, 0xcb, 0xaa, 0xdd, 0x9b, 0xfe, 0xaf, 0xc1, 0xa6, 0x28, 0xc0, 0xa2, 0xab, 0x6c, 0x02, 0x9d,
0xbc, 0x45, 0x95, 0x4d, 0xaf, 0xab, 0xf7, 0xae, 0x75, 0xd0, 0x2c, 0xb1, 0xc2, 0x7e, 0x93, 0x1a,
0x7b, 0xd7, 0xe9, 0x95, 0xcd, 0x8b, 0x38, 0x7b, 0xe2, 0x7a, 0xfc, 0x65, 0x6d, 0xfe, 0xcd, 0x8d,
0x53, 0x35, 0x30, 0xcd, 0x5e, 0xad, 0x8f, 0xba, 0xe5, 0xd6, 0xe3, 0x5b, 0xd4, 0xfc, 0x0d, 0xe7,
0x9d, 0xb2, 0xe6, 0x63, 0xf1, 0x89, 0x38, 0xf4, 0xae, 0xe5, 0xf9, 0x5a, 0xf5, 0xe0, 0x46, 0xd9,
0x7a, 0x4f, 0x3d, 0xbd, 0xe4, 0xe6, 0xfa, 0x12, 0xe9, 0x76, 0x6d, 0xd3, 0xdc, 0xab, 0xd9, 0xa7,
0xc4, 0xae, 0xac, 0xd9, 0xa7, 0xcc, 0x3e, 0x6c, 0xeb, 0x35, 0xca, 0x32, 0xfc, 0x71, 0xe5, 0xee,
0x83, 0xdb, 0x3f, 0xfe, 0xe6, 0x71, 0x90, 0x9e, 0x4c, 0x0e, 0xd7, 0xfb, 0xd1, 0xe8, 0xde, 0x50,
0x99, 0xf5, 0xe4, 0xe5, 0x9e, 0x7b, 0xc3, 0x70, 0x70, 0x8f, 0xaa, 0x3d, 0x9c, 0xa5, 0xff, 0x55,
0xf8, 0xdd, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x44, 0x97, 0x33, 0xa8, 0xdd, 0x70, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

@ -2407,6 +2407,9 @@ message InvoiceHTLC {
/// Custom tlv records.
map<uint64, bytes> custom_records = 9 [json_name = "custom_records"];
/// The total amount of the mpp payment in msat.
uint64 mpp_total_amt_msat = 10 [json_name = "mpp_total_amt_msat"];
}
message AddInvoiceResponse {

@ -2854,6 +2854,11 @@
"format": "byte"
},
"description": "/ Custom tlv records."
},
"mpp_total_amt_msat": {
"type": "string",
"format": "uint64",
"description": "/ The total amount of the mpp payment in msat."
}
},
"title": "/ Details of an HTLC that paid to an invoice"

@ -4712,13 +4712,29 @@ func testSingleHopSendToRouteCase(net *lntest.NetworkHarness, t *harnessTest,
}
// Create invoices for Dave, which expect a payment from Carol.
_, rHashes, _, err := createPayReqs(
payReqs, rHashes, _, err := createPayReqs(
dave, paymentAmtSat, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
}
// Reconstruct payment addresses.
var payAddrs [][]byte
for _, payReq := range payReqs {
ctx, _ := context.WithTimeout(
context.Background(), defaultTimeout,
)
resp, err := dave.DecodePayReq(
ctx,
&lnrpc.PayReqString{PayReq: payReq},
)
if err != nil {
t.Fatalf("decode pay req: %v", err)
}
payAddrs = append(payAddrs, resp.PaymentAddr)
}
// Query for routes to pay from Carol to Dave.
// We set FinalCltvDelta to 40 since by default QueryRoutes returns
// the last hop with a final cltv delta of 9 where as the default in
@ -4741,12 +4757,10 @@ func testSingleHopSendToRouteCase(net *lntest.NetworkHarness, t *harnessTest,
// Construct a closure that will set MPP fields on the route, which
// allows us to test MPP payments.
setMPPFields := func(i int) {
addr := [32]byte{byte(i)}
hop := r.Hops[len(r.Hops)-1]
hop.TlvPayload = true
hop.MppRecord = &lnrpc.MPPRecord{
PaymentAddr: addr[:],
PaymentAddr: payAddrs[i],
TotalAmtMsat: paymentAmtSat * 1000,
}
}
@ -4930,8 +4944,8 @@ func testSingleHopSendToRouteCase(net *lntest.NetworkHarness, t *harnessTest,
hop.MppRecord.TotalAmtMsat)
}
expAddr := [32]byte{byte(i)}
if !bytes.Equal(hop.MppRecord.PaymentAddr, expAddr[:]) {
expAddr := payAddrs[i]
if !bytes.Equal(hop.MppRecord.PaymentAddr, expAddr) {
t.Fatalf("incorrect mpp payment addr for payment %d "+
"want: %x, got: %x",
i, expAddr, hop.MppRecord.PaymentAddr)

@ -380,6 +380,9 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB,
registryConfig := invoices.RegistryConfig{
FinalCltvRejectDelta: defaultFinalCltvRejectDelta,
HtlcHoldDuration: invoices.DefaultHtlcHoldDuration,
Now: time.Now,
TickAfter: time.After,
}
s := &server{