diff --git a/api/cosmos/staking/v1beta1/staking.pulsar.go b/api/cosmos/staking/v1beta1/staking.pulsar.go index 6c301f72e05d..1453eb53c79d 100644 --- a/api/cosmos/staking/v1beta1/staking.pulsar.go +++ b/api/cosmos/staking/v1beta1/staking.pulsar.go @@ -15459,6 +15459,8 @@ type UnbondingDelegationEntry struct { // balance defines the tokens to receive at completion. Balance string `protobuf:"bytes,4,opt,name=balance,proto3" json:"balance,omitempty"` // Incrementing id that uniquely identifies this entry + // + // Deprecated: Do not use. UnbondingId uint64 `protobuf:"varint,5,opt,name=unbonding_id,json=unbondingId,proto3" json:"unbonding_id,omitempty"` // Strictly positive if this entry's unbonding has been stopped by external modules UnbondingOnHoldRefCount int64 `protobuf:"varint,6,opt,name=unbonding_on_hold_ref_count,json=unbondingOnHoldRefCount,proto3" json:"unbonding_on_hold_ref_count,omitempty"` @@ -15512,6 +15514,7 @@ func (x *UnbondingDelegationEntry) GetBalance() string { return "" } +// Deprecated: Do not use. func (x *UnbondingDelegationEntry) GetUnbondingId() uint64 { if x != nil { return x.UnbondingId @@ -16316,7 +16319,7 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, - 0x1f, 0x00, 0x22, 0x9b, 0x03, 0x0a, 0x18, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x1f, 0x00, 0x22, 0x9f, 0x03, 0x0a, 0x18, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, @@ -16335,208 +16338,209 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, - 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x62, - 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1b, - 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, - 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, - 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, - 0x22, 0x9f, 0x03, 0x0a, 0x11, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, - 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, - 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, - 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x44, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, - 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x3c, - 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, - 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x6e, - 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, 0xe8, 0xa0, - 0x1f, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, - 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x73, - 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, - 0x1f, 0x00, 0x22, 0xeb, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4f, 0x0a, - 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, - 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x84, 0x01, 0x0a, 0x13, 0x6d, 0x69, 0x6e, - 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x54, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, 0xde, 0x1f, 0x1a, 0x79, - 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, 0x69, - 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, - 0x49, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x52, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, - 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, - 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, - 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, - 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0c, 0x75, 0x6e, 0x62, + 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, + 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x6e, + 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, + 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x9f, 0x03, 0x0a, 0x11, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, + 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, - 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, - 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, - 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, - 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, - 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, - 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, - 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, - 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, - 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, - 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, - 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x5e, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, - 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, - 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xd0, 0x02, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x73, 0x50, - 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x56, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, - 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x56, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, - 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, - 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x3a, - 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, 0x19, 0x56, 0x61, 0x6c, - 0x41, 0x64, 0x64, 0x72, 0x73, 0x4f, 0x66, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, - 0x6e, 0x73, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2a, 0xb6, - 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, - 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, 0x9d, 0x20, 0x0b, - 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x14, 0x42, - 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, - 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x0d, - 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, - 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4f, 0x4e, - 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, 0x6e, 0x64, 0x65, - 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, 0x66, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, - 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, - 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, 0xdc, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, - 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x50, 0x0a, + 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x44, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x4f, 0x6e, 0x48, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, + 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, + 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x72, 0x63, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x44, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x07, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, + 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x68, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x84, 0x01, 0x0a, + 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x54, 0xc8, 0xde, 0x1f, 0x00, + 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, + 0xde, 0x1f, 0x1a, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xd2, 0xb4, 0x2d, + 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0e, + 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x3a, 0x24, + 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, + 0x22, 0xcd, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, + 0x0a, 0x12, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x11, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, + 0x22, 0xc9, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, + 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, + 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, + 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, + 0xde, 0x1f, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, + 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, + 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x41, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, + 0x1f, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, + 0x2a, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x3a, 0x08, 0xe8, 0xa0, 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x5e, 0x0a, 0x10, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x46, + 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xd0, 0x02, 0x0a, 0x19, 0x43, + 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x5f, + 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x6f, 0x6c, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x56, 0x0a, 0x0f, 0x6e, + 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x18, 0xca, 0xb4, 0x2d, 0x14, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x50, 0x75, + 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x73, 0x50, 0x75, 0x62, + 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x0a, 0x03, 0x66, + 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, + 0x66, 0x65, 0x65, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, + 0x19, 0x56, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x73, 0x4f, 0x66, 0x52, 0x6f, 0x74, 0x61, 0x74, + 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x18, 0xd2, + 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x2a, 0xb6, 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2c, 0x0a, 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, + 0x8a, 0x9d, 0x20, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, + 0x26, 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, + 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, + 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, + 0x10, 0x02, 0x1a, 0x0d, 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x22, 0x0a, 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, + 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, + 0x6e, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, + 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x44, 0x4f, 0x57, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, 0xdc, 0x01, 0x0a, 0x1a, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 0fa1a5a472ca..a4fa3cd02d22 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -100,7 +100,6 @@ func TestAppImportExport(t *testing.T) { skipPrefixes := map[string][][]byte{ stakingtypes.StoreKey: { stakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey, - stakingtypes.UnbondingIDKey, stakingtypes.UnbondingIndexKey, stakingtypes.UnbondingTypeKey, }, authzkeeper.StoreKey: {authzkeeper.GrantQueuePrefix}, feegrant.StoreKey: {feegrant.FeeAllowanceQueueKeyPrefix}, diff --git a/tests/integration/staking/keeper/deterministic_test.go b/tests/integration/staking/keeper/deterministic_test.go index 77f99c9d32ee..a9aa427d4294 100644 --- a/tests/integration/staking/keeper/deterministic_test.go +++ b/tests/integration/staking/keeper/deterministic_test.go @@ -552,7 +552,7 @@ func TestGRPCValidatorUnbondingDelegations(t *testing.T) { ValidatorAddr: validator.OperatorAddress, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.ValidatorUnbondingDelegations, 3719, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.ValidatorUnbondingDelegations, 3707, false) } func TestGRPCDelegation(t *testing.T) { @@ -632,7 +632,7 @@ func TestGRPCUnbondingDelegation(t *testing.T) { DelegatorAddr: delegator1, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.UnbondingDelegation, 1621, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.UnbondingDelegation, 1615, false) } func TestGRPCDelegatorDelegations(t *testing.T) { @@ -755,7 +755,7 @@ func TestGRPCDelegatorUnbondingDelegations(t *testing.T) { DelegatorAddr: delegator1, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.DelegatorUnbondingDelegations, 1302, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.DelegatorUnbondingDelegations, 1290, false) } func TestGRPCDelegatorValidators(t *testing.T) { @@ -875,7 +875,7 @@ func TestGRPCRedelegations(t *testing.T) { DstValidatorAddr: validator2, } - testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.Redelegations, 3926, false) + testdata.DeterministicIterations(t, f.ctx, req, f.queryClient.Redelegations, 3920, false) } func TestGRPCParams(t *testing.T) { diff --git a/tests/integration/staking/keeper/msg_server_test.go b/tests/integration/staking/keeper/msg_server_test.go index cea78ae9f1f7..3691d508d190 100644 --- a/tests/integration/staking/keeper/msg_server_test.go +++ b/tests/integration/staking/keeper/msg_server_test.go @@ -58,7 +58,6 @@ func TestCancelUnbondingDelegation(t *testing.T) { delegatorAddr, validatorAddr, 10, ctx.HeaderInfo().Time.Add(time.Minute*10), unbondingAmount.Amount, - 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), ) diff --git a/tests/integration/staking/keeper/slash_test.go b/tests/integration/staking/keeper/slash_test.go index f9620b9e05cc..c5ff1edba6c9 100644 --- a/tests/integration/staking/keeper/slash_test.go +++ b/tests/integration/staking/keeper/slash_test.go @@ -79,7 +79,7 @@ func TestSlashUnbondingDelegation(t *testing.T) { // set an unbonding delegation with expiration timestamp (beyond which the // unbonding delegation shouldn't be slashed) ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 0, - time.Unix(5, 0), math.NewInt(10), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + time.Unix(5, 0), math.NewInt(10), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubd)) @@ -138,7 +138,7 @@ func TestSlashRedelegation(t *testing.T) { // set a redelegation with an expiration timestamp beyond which the // redelegation shouldn't be slashed rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, - time.Unix(5, 0), math.NewInt(10), math.LegacyNewDec(10), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + time.Unix(5, 0), math.NewInt(10), math.LegacyNewDec(10), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd)) @@ -285,7 +285,7 @@ func TestSlashWithUnbondingDelegation(t *testing.T) { // set an unbonding delegation with expiration timestamp beyond which the // unbonding delegation shouldn't be slashed ubdTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 4) - ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, time.Unix(0, 0), ubdTokens, 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, time.Unix(0, 0), ubdTokens, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubd)) // slash validator for the first time @@ -415,7 +415,7 @@ func TestSlashWithRedelegation(t *testing.T) { // set a redelegation rdTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 6) - rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdTokens, math.LegacyNewDecFromInt(rdTokens), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdTokens, math.LegacyNewDecFromInt(rdTokens), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd)) // set the associated delegation @@ -573,7 +573,7 @@ func TestSlashBoth(t *testing.T) { // set a redelegation with expiration timestamp beyond which the // redelegation shouldn't be slashed rdATokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 6) - rdA := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdATokens, math.LegacyNewDecFromInt(rdATokens), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + rdA := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdATokens, math.LegacyNewDecFromInt(rdATokens), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rdA)) // set the associated delegation @@ -584,7 +584,7 @@ func TestSlashBoth(t *testing.T) { // unbonding delegation shouldn't be slashed) ubdATokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 4) ubdA := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, - time.Unix(0, 0), ubdATokens, 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + time.Unix(0, 0), ubdATokens, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubdA)) bondedCoins := sdk.NewCoins(sdk.NewCoin(bondDenom, rdATokens.MulRaw(2))) diff --git a/tests/integration/staking/keeper/unbonding_test.go b/tests/integration/staking/keeper/unbonding_test.go deleted file mode 100644 index 7a39f4ab20dd..000000000000 --- a/tests/integration/staking/keeper/unbonding_test.go +++ /dev/null @@ -1,460 +0,0 @@ -package keeper_test - -import ( - "testing" - "time" - - "go.uber.org/mock/gomock" - "gotest.tools/v3/assert" - - "cosmossdk.io/core/header" - "cosmossdk.io/math" - banktestutil "cosmossdk.io/x/bank/testutil" - stakingkeeper "cosmossdk.io/x/staking/keeper" - "cosmossdk.io/x/staking/testutil" - "cosmossdk.io/x/staking/types" - - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetupUnbondingTests creates two validators and setup mocked staking hooks for testing unbonding -func SetupUnbondingTests(t *testing.T, f *fixture, hookCalled *bool, ubdeID *uint64) (bondDenom string, addrDels []sdk.AccAddress, addrVals []sdk.ValAddress) { - t.Helper() - // setup hooks - mockCtrl := gomock.NewController(t) - mockStackingHooks := testutil.NewMockStakingHooks(mockCtrl) - mockStackingHooks.EXPECT().AfterDelegationModified(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterUnbondingInitiated(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx sdk.Context, id uint64) error { - *hookCalled = true - // save id - *ubdeID = id - // call back to stop unbonding - err := f.stakingKeeper.PutUnbondingOnHold(f.sdkCtx, id) - assert.NilError(t, err) - - return nil - }).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorBeginUnbonding(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorBonded(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorCreated(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterValidatorRemoved(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeDelegationCreated(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeDelegationRemoved(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeDelegationSharesModified(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeValidatorModified(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().BeforeValidatorSlashed(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - mockStackingHooks.EXPECT().AfterConsensusPubKeyUpdate(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes() - f.stakingKeeper.SetHooks(types.NewMultiStakingHooks(mockStackingHooks)) - - addrDels = simtestutil.AddTestAddrsIncremental(f.bankKeeper, f.stakingKeeper, f.sdkCtx, 2, math.NewInt(10000)) - addrVals = simtestutil.ConvertAddrsToValAddrs(addrDels) - - valTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 10) - startTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 20) - - bondDenom, err := f.stakingKeeper.BondDenom(f.sdkCtx) - assert.NilError(t, err) - notBondedPool := f.stakingKeeper.GetNotBondedPool(f.sdkCtx) - - assert.NilError(t, banktestutil.FundModuleAccount(f.sdkCtx, f.bankKeeper, notBondedPool.GetName(), sdk.NewCoins(sdk.NewCoin(bondDenom, startTokens)))) - f.accountKeeper.SetModuleAccount(f.sdkCtx, notBondedPool) - - // Create a validator - validator1 := testutil.NewValidator(t, addrVals[0], PKs[0]) - validator1, issuedShares1 := validator1.AddTokensFromDel(valTokens) - assert.DeepEqual(t, valTokens, issuedShares1.RoundInt()) - - validator1 = stakingkeeper.TestingUpdateValidator(f.stakingKeeper, f.sdkCtx, validator1, true) - assert.Assert(math.IntEq(t, valTokens, validator1.BondedTokens())) - assert.Assert(t, validator1.IsBonded()) - - // Create a delegator - delegation := types.NewDelegation(addrDels[0].String(), addrVals[0].String(), issuedShares1) - assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, delegation)) - - // Create a validator to redelegate to - validator2 := testutil.NewValidator(t, addrVals[1], PKs[1]) - validator2, issuedShares2 := validator2.AddTokensFromDel(valTokens) - assert.DeepEqual(t, valTokens, issuedShares2.RoundInt()) - - validator2 = stakingkeeper.TestingUpdateValidator(f.stakingKeeper, f.sdkCtx, validator2, true) - assert.Equal(t, types.Bonded, validator2.Status) - assert.Assert(t, validator2.IsBonded()) - - return bondDenom, addrDels, addrVals -} - -func doUnbondingDelegation( - t *testing.T, - stakingKeeper *stakingkeeper.Keeper, - bankKeeper types.BankKeeper, - ctx sdk.Context, - bondDenom string, - addrDels []sdk.AccAddress, - addrVals []sdk.ValAddress, - hookCalled *bool, -) (completionTime time.Time, bondedAmt, notBondedAmt math.Int) { - t.Helper() - // UNDELEGATE - // Save original bonded and unbonded amounts - bondedAmt1 := bankKeeper.GetBalance(ctx, stakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount - notBondedAmt1 := bankKeeper.GetBalance(ctx, stakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount - - var err error - undelegateAmount := math.LegacyNewDec(1) - completionTime, undelegatedAmount, err := stakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], undelegateAmount) - assert.NilError(t, err) - assert.Assert(t, undelegateAmount.Equal(math.LegacyNewDecFromInt(undelegatedAmount))) - // check that the unbonding actually happened - bondedAmt2 := bankKeeper.GetBalance(ctx, stakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount - notBondedAmt2 := bankKeeper.GetBalance(ctx, stakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount - // Bonded amount is less - assert.Assert(math.IntEq(t, bondedAmt1.SubRaw(1), bondedAmt2)) - // Unbonded amount is more - assert.Assert(math.IntEq(t, notBondedAmt1.AddRaw(1), notBondedAmt2)) - - // Check that the unbonding happened- we look up the entry and see that it has the correct number of shares - unbondingDelegations, err := stakingKeeper.GetUnbondingDelegationsFromValidator(ctx, addrVals[0]) - assert.NilError(t, err) - assert.DeepEqual(t, math.NewInt(1), unbondingDelegations[0].Entries[0].Balance) - - // check that our hook was called - assert.Assert(t, *hookCalled) - - return completionTime, bondedAmt2, notBondedAmt2 -} - -func doRedelegation( - t *testing.T, - stakingKeeper *stakingkeeper.Keeper, - ctx sdk.Context, - addrDels []sdk.AccAddress, - addrVals []sdk.ValAddress, - hookCalled *bool, -) (completionTime time.Time) { - t.Helper() - var err error - completionTime, err = stakingKeeper.BeginRedelegation(ctx, addrDels[0], addrVals[0], addrVals[1], math.LegacyNewDec(1)) - assert.NilError(t, err) - - // Check that the redelegation happened- we look up the entry and see that it has the correct number of shares - redelegations, err := stakingKeeper.GetRedelegationsFromSrcValidator(ctx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 1, len(redelegations)) - assert.DeepEqual(t, math.LegacyNewDec(1), redelegations[0].Entries[0].SharesDst) - - // check that our hook was called - assert.Assert(t, *hookCalled) - - return completionTime -} - -func doValidatorUnbonding( - t *testing.T, - stakingKeeper *stakingkeeper.Keeper, - ctx sdk.Context, - addrVal sdk.ValAddress, - hookCalled *bool, -) (validator types.Validator) { - t.Helper() - validator, found := stakingKeeper.GetValidator(ctx, addrVal) - assert.Assert(t, found) - // Check that status is bonded - assert.Equal(t, types.BondStatus(3), validator.Status) - - validator, err := stakingKeeper.BeginUnbondingValidator(ctx, validator) - assert.NilError(t, err) - - // Check that status is unbonding - assert.Equal(t, types.BondStatus(2), validator.Status) - - // check that our hook was called - assert.Assert(t, *hookCalled) - - return validator -} - -func TestValidatorUnbondingOnHold1(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - _, _, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - - // Start unbonding first validator - validator := doValidatorUnbonding(t, f.stakingKeeper, f.sdkCtx, addrVals[0], &hookCalled) - - completionTime := validator.UnbondingTime - completionHeight := validator.UnbondingHeight - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err := f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Try to unbond validator - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that validator unbonding is not complete (is not mature yet) - validator, found := f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator.Status) - unbondingVals, err := f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 1, len(unbondingVals)) - assert.Equal(t, validator.OperatorAddress, unbondingVals[0]) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime.Add(time.Duration(1))}) - f.sdkCtx = f.sdkCtx.WithBlockHeight(completionHeight + 1) - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that validator unbonding is complete - validator, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonded, validator.Status) - unbondingVals, err = f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 0, len(unbondingVals)) -} - -func TestValidatorUnbondingOnHold2(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ubdeIDs []uint64 - ) - - _, _, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - - // Start unbonding first validator - validator1 := doValidatorUnbonding(t, f.stakingKeeper, f.sdkCtx, addrVals[0], &hookCalled) - ubdeIDs = append(ubdeIDs, ubdeID) - - // Reset hookCalled flag - hookCalled = false - - // Start unbonding second validator - validator2 := doValidatorUnbonding(t, f.stakingKeeper, f.sdkCtx, addrVals[1], &hookCalled) - ubdeIDs = append(ubdeIDs, ubdeID) - - // Check that there are two unbonding operations - assert.Equal(t, 2, len(ubdeIDs)) - - // Check that both validators have same unbonding time - assert.Equal(t, validator1.UnbondingTime, validator2.UnbondingTime) - - completionTime := validator1.UnbondingTime - completionHeight := validator1.UnbondingHeight - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime.Add(time.Duration(1))}) - f.sdkCtx = f.sdkCtx.WithBlockHeight(completionHeight + 1) - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that unbonding is not complete for both validators - validator1, found := f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator1.Status) - validator2, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[1]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator2.Status) - unbondingVals, err := f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 2, len(unbondingVals)) - assert.Equal(t, validator1.OperatorAddress, unbondingVals[0]) - assert.Equal(t, validator2.OperatorAddress, unbondingVals[1]) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeIDs[0]) - assert.NilError(t, err) - - // Try again to unbond validators - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that unbonding is complete for validator1, but not for validator2 - validator1, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[0]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonded, validator1.Status) - validator2, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[1]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonding, validator2.Status) - unbondingVals, err = f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 1, len(unbondingVals)) - assert.Equal(t, validator2.OperatorAddress, unbondingVals[0]) - - // Unbonding for validator2 can complete - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeIDs[1]) - assert.NilError(t, err) - - // Try again to unbond validators - assert.NilError(t, f.stakingKeeper.UnbondAllMatureValidators(f.sdkCtx)) - - // Check that unbonding is complete for validator2 - validator2, found = f.stakingKeeper.GetValidator(f.sdkCtx, addrVals[1]) - assert.Assert(t, found) - assert.Equal(t, types.Unbonded, validator2.Status) - unbondingVals, err = f.stakingKeeper.GetUnbondingValidators(f.sdkCtx, completionTime, completionHeight) - assert.NilError(t, err) - assert.Equal(t, 0, len(unbondingVals)) -} - -func TestRedelegationOnHold1(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - _, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - completionTime := doRedelegation(t, f.stakingKeeper, f.sdkCtx, addrDels, addrVals, &hookCalled) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - err := f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Redelegation is not complete - still exists - redelegations, err := f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 1, len(redelegations)) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err = f.stakingKeeper.CompleteRedelegation(f.sdkCtx, addrDels[0], addrVals[0], addrVals[1]) - assert.NilError(t, err) - - // Redelegation is complete and record is gone - redelegations, err = f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 0, len(redelegations)) -} - -func TestRedelegationOnHold2(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - _, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - completionTime := doRedelegation(t, f.stakingKeeper, f.sdkCtx, addrDels, addrVals, &hookCalled) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err := f.stakingKeeper.CompleteRedelegation(f.sdkCtx, addrDels[0], addrVals[0], addrVals[1]) - assert.NilError(t, err) - - // Redelegation is not complete - still exists - redelegations, err := f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 1, len(redelegations)) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Redelegation is complete and record is gone - redelegations, err = f.stakingKeeper.GetRedelegationsFromSrcValidator(f.sdkCtx, addrVals[0]) - assert.NilError(t, err) - assert.Equal(t, 0, len(redelegations)) -} - -func TestUnbondingDelegationOnHold1(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - bondDenom, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - for _, addr := range addrDels { - acc := f.accountKeeper.NewAccountWithAddress(f.sdkCtx, addr) - f.accountKeeper.SetAccount(f.sdkCtx, acc) - } - completionTime, bondedAmt1, notBondedAmt1 := doUnbondingDelegation(t, f.stakingKeeper, f.bankKeeper, f.sdkCtx, bondDenom, addrDels, addrVals, &hookCalled) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - err := f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - bondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - // Bonded and unbonded amounts are the same as before because the completionTime has not yet passed and so the - // unbondingDelegation has not completed - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt3)) - assert.Assert(math.IntEq(t, notBondedAmt1, notBondedAmt3)) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err = f.stakingKeeper.CompleteUnbonding(f.sdkCtx, addrDels[0], addrVals[0]) - assert.NilError(t, err) - - // Check that the unbonding was finally completed - bondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt5)) - // Not bonded amount back to what it was originally - assert.Assert(math.IntEq(t, notBondedAmt1.SubRaw(1), notBondedAmt5)) -} - -func TestUnbondingDelegationOnHold2(t *testing.T) { - t.Parallel() - f := initFixture(t) - - var ( - hookCalled bool - ubdeID uint64 - ) - - // _, app, ctx := createTestInput(t) - bondDenom, addrDels, addrVals := SetupUnbondingTests(t, f, &hookCalled, &ubdeID) - for _, addr := range addrDels { - acc := f.accountKeeper.NewAccountWithAddress(f.sdkCtx, addr) - f.accountKeeper.SetAccount(f.sdkCtx, acc) - } - completionTime, bondedAmt1, notBondedAmt1 := doUnbondingDelegation(t, f.stakingKeeper, f.bankKeeper, f.sdkCtx, bondDenom, addrDels, addrVals, &hookCalled) - - // PROVIDER CHAIN'S UNBONDING PERIOD ENDS - BUT UNBONDING CANNOT COMPLETE - f.sdkCtx = f.sdkCtx.WithHeaderInfo(header.Info{Time: completionTime}) - _, err := f.stakingKeeper.CompleteUnbonding(f.sdkCtx, addrDels[0], addrVals[0]) - assert.NilError(t, err) - - bondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt3 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - // Bonded and unbonded amounts are the same as before because the completionTime has not yet passed and so the - // unbondingDelegation has not completed - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt3)) - assert.Assert(math.IntEq(t, notBondedAmt1, notBondedAmt3)) - - // CONSUMER CHAIN'S UNBONDING PERIOD ENDS - STOPPED UNBONDING CAN NOW COMPLETE - err = f.stakingKeeper.UnbondingCanComplete(f.sdkCtx, ubdeID) - assert.NilError(t, err) - - // Check that the unbonding was finally completed - bondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - notBondedAmt5 := f.bankKeeper.GetBalance(f.sdkCtx, f.stakingKeeper.GetNotBondedPool(f.sdkCtx).GetAddress(), bondDenom).Amount - - assert.Assert(math.IntEq(t, bondedAmt1, bondedAmt5)) - // Not bonded amount back to what it was originally - assert.Assert(math.IntEq(t, notBondedAmt1.SubRaw(1), notBondedAmt5)) -} diff --git a/x/staking/CHANGELOG.md b/x/staking/CHANGELOG.md index 49cd67798b9f..9f2cc16823c1 100644 --- a/x/staking/CHANGELOG.md +++ b/x/staking/CHANGELOG.md @@ -104,6 +104,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#21315](https://github.com/cosmos/cosmos-sdk/pull/21315) New struct `Metadata` to store extra validator information. * New field `Metadata` introduced in `types`: `Description`. * The signature of `NewDescription` has changed to accept an extra argument of type `Metadata`. +* [#22795](https://github.com/cosmos/cosmos-sdk/pull/22795) `NewUnbondingDelegationEntry`, `NewUnbondingDelegation`, `AddEntry`, `NewRedelegationEntry`, `NewRedelegation` and `NewRedelegationEntryResponse` no longer take an ID in there function signatures. +* [#22795](https://github.com/cosmos/cosmos-sdk/pull/22795) AfterUnbondingInitiated hook has been removed as it is no longer required by ICS. ### State Breaking changes @@ -111,3 +113,4 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#18142](https://github.com/cosmos/cosmos-sdk/pull/18142) Introduce `key_rotation_fee` param to calculate fees while rotating the keys * [#19740](https://github.com/cosmos/cosmos-sdk/pull/19740) `InitGenesis` and `ExportGenesis` module code and keeper code do not panic but return errors. * [#20845](https://github.com/cosmoc/cosmos-sdk/pull/20845) Remove HistoricalInfo from the staking modules storage +* [#22795](https://github.com/cosmos/cosmos-sdk/pull/22795) Keys `stakingtypes.UnbondingIDKey, stakingtypes.UnbondingIndexKey, stakingtypes.UnbondingTypeKey` have been removed as they are no longer required by ICS. diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 69ad3843ee9c..fcb3faa6438f 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -310,17 +310,11 @@ func (k Keeper) SetUnbondingDelegationEntry( ctx context.Context, delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, creationHeight int64, minTime time.Time, balance math.Int, ) (types.UnbondingDelegation, error) { - id, err := k.IncrementUnbondingID(ctx) - if err != nil { - return types.UnbondingDelegation{}, err - } - - isNewUbdEntry := true ubd, err := k.GetUnbondingDelegation(ctx, delegatorAddr, validatorAddr) if err == nil { - isNewUbdEntry = ubd.AddEntry(creationHeight, minTime, balance, id) + ubd.AddEntry(creationHeight, minTime, balance) } else if errors.Is(err, types.ErrNoUnbondingDelegation) { - ubd = types.NewUnbondingDelegation(delegatorAddr, validatorAddr, creationHeight, minTime, balance, id, k.validatorAddressCodec, k.authKeeper.AddressCodec()) + ubd = types.NewUnbondingDelegation(delegatorAddr, validatorAddr, creationHeight, minTime, balance, k.validatorAddressCodec, k.authKeeper.AddressCodec()) } else { return ubd, err } @@ -329,18 +323,6 @@ func (k Keeper) SetUnbondingDelegationEntry( return ubd, err } - // only call the hook for new entries since - // calls to AfterUnbondingInitiated are not idempotent - if isNewUbdEntry { - // Add to the UBDByUnbondingOp index to look up the UBD by the UBDE ID - if err = k.SetUnbondingDelegationByUnbondingID(ctx, ubd, id); err != nil { - return ubd, err - } - - if err := k.Hooks().AfterUnbondingInitiated(ctx, id); err != nil { - return ubd, fmt.Errorf("failed to call after unbonding initiated hook: %w", err) - } - } return ubd, nil } @@ -528,17 +510,12 @@ func (k Keeper) SetRedelegationEntry(ctx context.Context, minTime time.Time, balance math.Int, sharesSrc, sharesDst math.LegacyDec, ) (types.Redelegation, error) { - id, err := k.IncrementUnbondingID(ctx) - if err != nil { - return types.Redelegation{}, err - } - red, err := k.Redelegations.Get(ctx, collections.Join3(delegatorAddr.Bytes(), validatorSrcAddr.Bytes(), validatorDstAddr.Bytes())) if err == nil { - red.AddEntry(creationHeight, minTime, balance, sharesDst, id) + red.AddEntry(creationHeight, minTime, balance, sharesDst) } else if errors.Is(err, collections.ErrNotFound) { red = types.NewRedelegation(delegatorAddr, validatorSrcAddr, - validatorDstAddr, creationHeight, minTime, balance, sharesDst, id, k.validatorAddressCodec, k.authKeeper.AddressCodec()) + validatorDstAddr, creationHeight, minTime, balance, sharesDst, k.validatorAddressCodec, k.authKeeper.AddressCodec()) } else { return types.Redelegation{}, err } @@ -547,15 +524,6 @@ func (k Keeper) SetRedelegationEntry(ctx context.Context, return types.Redelegation{}, err } - // Add to the UBDByEntry index to look up the UBD by the UBDE ID - if err = k.SetRedelegationByUnbondingID(ctx, red, id); err != nil { - return types.Redelegation{}, err - } - - if err := k.Hooks().AfterUnbondingInitiated(ctx, id); err != nil { - return types.Redelegation{}, fmt.Errorf("failed to call after unbonding initiated hook: %w", err) - } - return red, nil } @@ -996,12 +964,9 @@ func (k Keeper) CompleteUnbonding(ctx context.Context, delAddr sdk.AccAddress, v // loop through all the entries and complete unbonding mature entries for i := 0; i < len(ubd.Entries); i++ { entry := ubd.Entries[i] - if entry.IsMature(ctxTime) && !entry.OnHold() { + if entry.IsMature(ctxTime) { ubd.RemoveEntry(int64(i)) i-- - if err = k.DeleteUnbondingIndex(ctx, entry.UnbondingId); err != nil { - return nil, err - } // track undelegation only when remaining or truncated shares are non-zero if !entry.Balance.IsZero() { @@ -1136,12 +1101,9 @@ func (k Keeper) CompleteRedelegation( // loop through all the entries and complete mature redelegation entries for i := 0; i < len(red.Entries); i++ { entry := red.Entries[i] - if entry.IsMature(ctxTime) && !entry.OnHold() { + if entry.IsMature(ctxTime) { red.RemoveEntry(int64(i)) i-- - if err = k.DeleteUnbondingIndex(ctx, entry.UnbondingId); err != nil { - return nil, err - } if !entry.InitialBalance.IsZero() { balances = balances.Add(sdk.NewCoin(bondDenom, entry.InitialBalance)) diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index 00ee26d4bda8..397a3b456afe 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -286,7 +286,6 @@ func (s *KeeperTestSuite) TestUnbondingDelegation() { 0, time.Unix(0, 0).UTC(), math.NewInt(5), - 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), ) @@ -343,8 +342,8 @@ func (s *KeeperTestSuite) TestUnbondingDelegationsFromValidator() { 0, time.Unix(0, 0).UTC(), math.NewInt(5), - 0, - address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), + address.NewBech32Codec("cosmosvaloper"), + address.NewBech32Codec("cosmos"), ) // set and retrieve a record @@ -716,7 +715,7 @@ func (s *KeeperTestSuite) TestGetRedelegationsFromSrcValidator() { rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0), math.NewInt(5), - math.LegacyNewDec(5), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + math.LegacyNewDec(5), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) // set and retrieve a record err := keeper.SetRedelegation(ctx, rd) @@ -746,7 +745,7 @@ func (s *KeeperTestSuite) TestRedelegation() { rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0).UTC(), math.NewInt(5), - math.LegacyNewDec(5), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) + math.LegacyNewDec(5), address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos")) // test shouldn't have and redelegations has, err := keeper.HasReceivingRedelegation(ctx, addrDels[0], addrVals[1]) @@ -1107,14 +1106,14 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() { creationHeight, time.Unix(0, 0).UTC(), math.NewInt(10), - 0, - address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), + address.NewBech32Codec("cosmosvaloper"), + address.NewBech32Codec("cosmos"), ) var initialEntries []stakingtypes.UnbondingDelegationEntry initialEntries = append(initialEntries, ubd.Entries...) require.Len(initialEntries, 1) - isNew := ubd.AddEntry(creationHeight, time.Unix(0, 0).UTC(), math.NewInt(5), 1) + isNew := ubd.AddEntry(creationHeight, time.Unix(0, 0).UTC(), math.NewInt(5)) require.False(isNew) require.Len(ubd.Entries, 1) // entry was merged require.NotEqual(initialEntries, ubd.Entries) @@ -1123,7 +1122,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() { require.Equal(ubd.Entries[0].Balance, math.NewInt(15)) // 10 from previous + 5 from merged newCreationHeight := int64(11) - isNew = ubd.AddEntry(newCreationHeight, time.Unix(1, 0).UTC(), math.NewInt(5), 2) + isNew = ubd.AddEntry(newCreationHeight, time.Unix(1, 0).UTC(), math.NewInt(5)) require.True(isNew) require.Len(ubd.Entries, 2) // entry was appended require.NotEqual(initialEntries, ubd.Entries) @@ -1131,7 +1130,6 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() { require.Equal(newCreationHeight, ubd.Entries[1].CreationHeight) require.Equal(ubd.Entries[0].Balance, math.NewInt(15)) require.Equal(ubd.Entries[1].Balance, math.NewInt(5)) - require.NotEqual(ubd.Entries[0].UnbondingId, ubd.Entries[1].UnbondingId) // appended entry has a new unbondingID } func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { @@ -1149,8 +1147,8 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { creationHeight, time.Unix(0, 0).UTC(), math.NewInt(5), - 0, - address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"), + address.NewBech32Codec("cosmosvaloper"), + address.NewBech32Codec("cosmos"), ) // set and retrieve a record @@ -1180,8 +1178,7 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { require.Len(resUnbonding.Entries, 1) require.NotEqual(initialEntries, resUnbonding.Entries) require.Equal(creationHeight, resUnbonding.Entries[0].CreationHeight) - require.Equal(initialEntries[0].UnbondingId, resUnbonding.Entries[0].UnbondingId) // initial unbondingID remains unchanged - require.Equal(resUnbonding.Entries[0].Balance, math.NewInt(10)) // 5 from previous entry + 5 from merged entry + require.Equal(resUnbonding.Entries[0].Balance, math.NewInt(10)) // 5 from previous entry + 5 from merged entry // set unbonding delegation entry for newCreationHeight // new entry is expected to be appended to the existing entries @@ -1202,11 +1199,6 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { require.NotEqual(resUnbonding.Entries[0], resUnbonding.Entries[1]) require.Equal(creationHeight, resUnbonding.Entries[0].CreationHeight) require.Equal(newCreationHeight, resUnbonding.Entries[1].CreationHeight) - - // unbondingID is incremented on every call to SetUnbondingDelegationEntry - // unbondingID == 1 was skipped because the entry was merged with the existing entry with unbondingID == 0 - // unbondingID comes from a global counter -> gaps in unbondingIDs are OK as long as every unbondingID is unique - require.Equal(uint64(2), resUnbonding.Entries[1].UnbondingId) } func (s *KeeperTestSuite) TestUndelegateWithDustShare() { diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index aaf61daf4707..47dd44b95773 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -648,7 +648,6 @@ func redelegationsToRedelegationResponses(ctx context.Context, k *Keeper, redels entry.SharesDst, entry.InitialBalance, val.TokensFromShares(entry.SharesDst).TruncateInt(), - entry.UnbondingId, ) } diff --git a/x/staking/keeper/keeper.go b/x/staking/keeper/keeper.go index 876c9ae97df3..13884f06622c 100644 --- a/x/staking/keeper/keeper.go +++ b/x/staking/keeper/keeper.go @@ -70,17 +70,12 @@ type Keeper struct { LastTotalPower collections.Item[math.Int] // DelegationsByValidator key: valAddr+delAddr | value: none used (index key for delegations by validator index) DelegationsByValidator collections.Map[collections.Pair[sdk.ValAddress, sdk.AccAddress], []byte] - UnbondingID collections.Sequence // ValidatorByConsensusAddress key: consAddr | value: valAddr ValidatorByConsensusAddress collections.Map[sdk.ConsAddress, sdk.ValAddress] - // UnbondingType key: unbondingID | value: index of UnbondingType - UnbondingType collections.Map[uint64, uint64] // Redelegations key: AccAddr+SrcValAddr+DstValAddr | value: Redelegation Redelegations collections.Map[collections.Triple[[]byte, []byte, []byte], types.Redelegation] // Delegations key: AccAddr+valAddr | value: Delegation Delegations collections.Map[collections.Pair[sdk.AccAddress, sdk.ValAddress], types.Delegation] - // UnbondingIndex key:UnbondingID | value: ubdKey (ubdKey = [UnbondingDelegationKey(Prefix)+len(delAddr)+delAddr+len(valAddr)+valAddr]) - UnbondingIndex collections.Map[uint64, []byte] // UnbondingQueue key: Timestamp | value: DVPairs [delAddr+valAddr] UnbondingQueue collections.Map[time.Time, types.DVPairs] // Validators key: valAddr | value: Validator @@ -178,14 +173,12 @@ func NewKeeper( ), collections.BytesValue, ), - UnbondingID: collections.NewSequence(sb, types.UnbondingIDKey, "unbonding_id"), ValidatorByConsensusAddress: collections.NewMap( sb, types.ValidatorsByConsAddrKey, "validator_by_cons_addr", sdk.LengthPrefixedAddressKey(sdk.ConsAddressKey).WithName("cons_address"), //nolint: staticcheck // sdk.LengthPrefixedAddressKey is needed to retain state compatibility collcodec.KeyToValueCodec(sdk.ValAddressKey), ), - UnbondingType: collections.NewMap(sb, types.UnbondingTypeKey, "unbonding_type", collections.Uint64Key.WithName("unbonding_id"), collections.Uint64Value), // key format is: 52 | lengthPrefixedBytes(AccAddr) | lengthPrefixedBytes(SrcValAddr) | lengthPrefixedBytes(DstValAddr) Redelegations: collections.NewMap( sb, types.RedelegationKey, @@ -200,7 +193,6 @@ func NewKeeper( ), codec.CollValue[types.Redelegation](cdc), ), - UnbondingIndex: collections.NewMap(sb, types.UnbondingIndexKey, "unbonding_index", collections.Uint64Key.WithName("index"), collections.BytesValue.WithName("ubd_key")), UnbondingDelegationByValIndex: collections.NewMap( sb, types.UnbondingDelegationByValIndexKey, "unbonding_delegation_by_val_index", diff --git a/x/staking/keeper/msg_server_test.go b/x/staking/keeper/msg_server_test.go index d87a90b7f5c1..8fd52b5c7fda 100644 --- a/x/staking/keeper/msg_server_test.go +++ b/x/staking/keeper/msg_server_test.go @@ -939,7 +939,7 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() { require.NoError(err) require.Equal(del, resDel) - ubd := types.NewUnbondingDelegation(Addr, ValAddr, 10, ctx.HeaderInfo().Time.Add(time.Minute*10), shares.RoundInt(), 0, keeper.ValidatorAddressCodec(), ak.AddressCodec()) + ubd := types.NewUnbondingDelegation(Addr, ValAddr, 10, ctx.HeaderInfo().Time.Add(time.Minute*10), shares.RoundInt(), keeper.ValidatorAddressCodec(), ak.AddressCodec()) require.NoError(keeper.SetUnbondingDelegation(ctx, ubd)) resUnbond, err := keeper.GetUnbondingDelegation(ctx, Addr, ValAddr) require.NoError(err) diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index c7623d6b5c37..976142b57e1a 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -254,7 +254,7 @@ func (k Keeper) SlashUnbondingDelegation(ctx context.Context, unbondingDelegatio continue } - if entry.IsMature(now) && !entry.OnHold() { + if entry.IsMature(now) { // Unbonding delegation no longer eligible for slashing, skip it continue } @@ -346,7 +346,7 @@ func (k Keeper) SlashRedelegation(ctx context.Context, srcValidator types.Valida case entry.CreationHeight < infractionHeight: continue // Unbonding delegation no longer eligible for slashing, skip it - case entry.IsMature(now) && !entry.OnHold(): + case entry.IsMature(now): continue // Slash the unbonding delegation default: diff --git a/x/staking/keeper/unbonding.go b/x/staking/keeper/unbonding.go deleted file mode 100644 index 7e3a9cd96193..000000000000 --- a/x/staking/keeper/unbonding.go +++ /dev/null @@ -1,450 +0,0 @@ -package keeper - -import ( - "context" - "errors" - - "cosmossdk.io/collections" - errorsmod "cosmossdk.io/errors" - "cosmossdk.io/x/staking/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// IncrementUnbondingID increments and returns a unique ID for an unbonding operation -func (k Keeper) IncrementUnbondingID(ctx context.Context) (unbondingID uint64, err error) { - unbondingID, err = k.UnbondingID.Next(ctx) - if err != nil { - return 0, err - } - unbondingID++ - - return unbondingID, err -} - -// DeleteUnbondingIndex removes a mapping from UnbondingId to unbonding operation -func (k Keeper) DeleteUnbondingIndex(ctx context.Context, id uint64) error { - return k.UnbondingIndex.Remove(ctx, id) -} - -// GetUnbondingType returns the enum type of unbonding which is any of -// {UnbondingDelegation | Redelegation | ValidatorUnbonding} -func (k Keeper) GetUnbondingType(ctx context.Context, id uint64) (unbondingType types.UnbondingType, err error) { - ubdType, err := k.UnbondingType.Get(ctx, id) - if errors.Is(err, collections.ErrNotFound) { - return unbondingType, types.ErrNoUnbondingType - } - return types.UnbondingType(ubdType), err -} - -// SetUnbondingType sets the enum type of unbonding which is any of -// {UnbondingDelegation | Redelegation | ValidatorUnbonding} -func (k Keeper) SetUnbondingType(ctx context.Context, id uint64, unbondingType types.UnbondingType) error { - return k.UnbondingType.Set(ctx, id, uint64(unbondingType)) -} - -// GetUnbondingDelegationByUnbondingID returns a unbonding delegation that has an unbonding delegation entry with a certain ID -func (k Keeper) GetUnbondingDelegationByUnbondingID(ctx context.Context, id uint64) (ubd types.UnbondingDelegation, err error) { - ubdKey, err := k.UnbondingIndex.Get(ctx, id) // ubdKey => [UnbondingDelegationKey(Prefix)+len(delAddr)+delAddr+len(valAddr)+valAddr] - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.UnbondingDelegation{}, types.ErrNoUnbondingDelegation - } - return types.UnbondingDelegation{}, err - } - - if ubdKey == nil { - return types.UnbondingDelegation{}, types.ErrNoUnbondingDelegation - } - - // remove prefix bytes and length bytes (since ubdKey obtained is prefixed by UnbondingDelegationKey prefix and length of the address) - delAddr := ubdKey[2 : (len(ubdKey)/2)+1] - // remove prefix length bytes - valAddr := ubdKey[2+len(ubdKey)/2:] - - ubd, err = k.UnbondingDelegations.Get(ctx, collections.Join(delAddr, valAddr)) - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.UnbondingDelegation{}, types.ErrNoUnbondingDelegation - } - return types.UnbondingDelegation{}, err - } - - return ubd, nil -} - -// GetRedelegationByUnbondingID returns a unbonding delegation that has an unbonding delegation entry with a certain ID -func (k Keeper) GetRedelegationByUnbondingID(ctx context.Context, id uint64) (red types.Redelegation, err error) { - store := k.KVStoreService.OpenKVStore(ctx) - - redKey, err := k.UnbondingIndex.Get(ctx, id) - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.Redelegation{}, types.ErrNoRedelegation - } - return types.Redelegation{}, err - } - - if redKey == nil { - return types.Redelegation{}, types.ErrNoRedelegation - } - - value, err := store.Get(redKey) - if err != nil { - return types.Redelegation{}, err - } - - if value == nil { - return types.Redelegation{}, types.ErrNoRedelegation - } - - red, err = types.UnmarshalRED(k.cdc, value) - // An error here means that what we got wasn't the right type - if err != nil { - return types.Redelegation{}, err - } - - return red, nil -} - -// GetValidatorByUnbondingID returns the validator that is unbonding with a certain unbonding op ID -func (k Keeper) GetValidatorByUnbondingID(ctx context.Context, id uint64) (val types.Validator, err error) { - store := k.KVStoreService.OpenKVStore(ctx) - - valKey, err := k.UnbondingIndex.Get(ctx, id) - if err != nil { - if errors.Is(err, collections.ErrNotFound) { - return types.Validator{}, types.ErrNoValidatorFound - } - return types.Validator{}, err - } - - if valKey == nil { - return types.Validator{}, types.ErrNoValidatorFound - } - - value, err := store.Get(valKey) - if err != nil { - return types.Validator{}, err - } - - if value == nil { - return types.Validator{}, types.ErrNoValidatorFound - } - - val, err = types.UnmarshalValidator(k.cdc, value) - // An error here means that what we got wasn't the right type - if err != nil { - return types.Validator{}, err - } - - return val, nil -} - -// SetUnbondingDelegationByUnbondingID sets an index to look up an UnbondingDelegation -// by the unbondingID of an UnbondingDelegationEntry that it contains Note, it does not -// set the unbonding delegation itself, use SetUnbondingDelegation(ctx, ubd) for that -func (k Keeper) SetUnbondingDelegationByUnbondingID(ctx context.Context, ubd types.UnbondingDelegation, id uint64) error { - delAddr, err := k.authKeeper.AddressCodec().StringToBytes(ubd.DelegatorAddress) - if err != nil { - return err - } - valAddr, err := k.validatorAddressCodec.StringToBytes(ubd.ValidatorAddress) - if err != nil { - return err - } - - ubdKey := types.GetUBDKey(delAddr, valAddr) - if err = k.UnbondingIndex.Set(ctx, id, ubdKey); err != nil { - return err - } - - // Set unbonding type so that we know how to deserialize it later - return k.SetUnbondingType(ctx, id, types.UnbondingType_UnbondingDelegation) -} - -// SetRedelegationByUnbondingID sets an index to look up a Redelegation by the unbondingID of a RedelegationEntry that it contains -// Note, it does not set the redelegation itself, use SetRedelegation(ctx, red) for that -func (k Keeper) SetRedelegationByUnbondingID(ctx context.Context, red types.Redelegation, id uint64) error { - delAddr, err := k.authKeeper.AddressCodec().StringToBytes(red.DelegatorAddress) - if err != nil { - return err - } - - valSrcAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorSrcAddress) - if err != nil { - return err - } - - valDstAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorDstAddress) - if err != nil { - return err - } - - redKey := types.GetREDKey(delAddr, valSrcAddr, valDstAddr) - if err = k.UnbondingIndex.Set(ctx, id, redKey); err != nil { - return err - } - - // Set unbonding type so that we know how to deserialize it later - return k.SetUnbondingType(ctx, id, types.UnbondingType_Redelegation) -} - -// SetValidatorByUnbondingID sets an index to look up a Validator by the unbondingID corresponding to its current unbonding -// Note, it does not set the validator itself, use SetValidator(ctx, val) for that -func (k Keeper) SetValidatorByUnbondingID(ctx context.Context, val types.Validator, id uint64) error { - valAddr, err := k.validatorAddressCodec.StringToBytes(val.OperatorAddress) - if err != nil { - return err - } - - valKey := types.GetValidatorKey(valAddr) - if err = k.UnbondingIndex.Set(ctx, id, valKey); err != nil { - return err - } - - // Set unbonding type so that we know how to deserialize it later - return k.SetUnbondingType(ctx, id, types.UnbondingType_ValidatorUnbonding) -} - -// unbondingDelegationEntryArrayIndex and redelegationEntryArrayIndex are utilities to find -// at which position in the Entries array the entry with a given id is -func unbondingDelegationEntryArrayIndex(ubd types.UnbondingDelegation, id uint64) (index int, err error) { - for i, entry := range ubd.Entries { - // we find the entry with the right ID - if entry.UnbondingId == id { - return i, nil - } - } - - return 0, types.ErrNoUnbondingDelegation -} - -func redelegationEntryArrayIndex(red types.Redelegation, id uint64) (index int, err error) { - for i, entry := range red.Entries { - // we find the entry with the right ID - if entry.UnbondingId == id { - return i, nil - } - } - - return 0, types.ErrNoRedelegation -} - -// UnbondingCanComplete allows a stopped unbonding operation, such as an -// unbonding delegation, a redelegation, or a validator unbonding to complete. -// In order for the unbonding operation with `id` to eventually complete, every call -// to PutUnbondingOnHold(id) must be matched by a call to UnbondingCanComplete(id). -func (k Keeper) UnbondingCanComplete(ctx context.Context, id uint64) error { - unbondingType, err := k.GetUnbondingType(ctx, id) - if err != nil { - return err - } - - switch unbondingType { - case types.UnbondingType_UnbondingDelegation: - if err := k.unbondingDelegationEntryCanComplete(ctx, id); err != nil { - return err - } - case types.UnbondingType_Redelegation: - if err := k.redelegationEntryCanComplete(ctx, id); err != nil { - return err - } - case types.UnbondingType_ValidatorUnbonding: - if err := k.validatorUnbondingCanComplete(ctx, id); err != nil { - return err - } - default: - return types.ErrUnbondingNotFound - } - - return nil -} - -func (k Keeper) unbondingDelegationEntryCanComplete(ctx context.Context, id uint64) error { - ubd, err := k.GetUnbondingDelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := unbondingDelegationEntryArrayIndex(ubd, id) - if err != nil { - return err - } - - // The entry must be on hold - if !ubd.Entries[i].OnHold() { - return errorsmod.Wrapf( - types.ErrUnbondingOnHoldRefCountNegative, - "undelegation unbondingID(%d), expecting UnbondingOnHoldRefCount > 0, got %T", - id, ubd.Entries[i].UnbondingOnHoldRefCount, - ) - } - ubd.Entries[i].UnbondingOnHoldRefCount-- - - // Check if entry is matured. - if !ubd.Entries[i].OnHold() && ubd.Entries[i].IsMature(k.HeaderService.HeaderInfo(ctx).Time) { - // If matured, complete it. - delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(ubd.DelegatorAddress) - if err != nil { - return err - } - - bondDenom, err := k.BondDenom(ctx) - if err != nil { - return err - } - - // track undelegation only when remaining or truncated shares are non-zero - if !ubd.Entries[i].Balance.IsZero() { - amt := sdk.NewCoin(bondDenom, ubd.Entries[i].Balance) - if err := k.bankKeeper.UndelegateCoinsFromModuleToAccount( - ctx, types.NotBondedPoolName, delegatorAddress, sdk.NewCoins(amt), - ); err != nil { - return err - } - } - - // Remove entry - ubd.RemoveEntry(int64(i)) - // Remove from the UnbondingIndex - err = k.DeleteUnbondingIndex(ctx, id) - if err != nil { - return err - } - - } - - // set the unbonding delegation or remove it if there are no more entries - if len(ubd.Entries) == 0 { - return k.RemoveUnbondingDelegation(ctx, ubd) - } - - return k.SetUnbondingDelegation(ctx, ubd) -} - -func (k Keeper) redelegationEntryCanComplete(ctx context.Context, id uint64) error { - red, err := k.GetRedelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := redelegationEntryArrayIndex(red, id) - if err != nil { - return err - } - - // The entry must be on hold - if !red.Entries[i].OnHold() { - return errorsmod.Wrapf( - types.ErrUnbondingOnHoldRefCountNegative, - "redelegation unbondingID(%d), expecting UnbondingOnHoldRefCount > 0, got %T", - id, red.Entries[i].UnbondingOnHoldRefCount, - ) - } - red.Entries[i].UnbondingOnHoldRefCount-- - - headerInfo := k.HeaderService.HeaderInfo(ctx) - if !red.Entries[i].OnHold() && red.Entries[i].IsMature(headerInfo.Time) { - // If matured, complete it. - // Remove entry - red.RemoveEntry(int64(i)) - // Remove from the Unbonding index - if err = k.DeleteUnbondingIndex(ctx, id); err != nil { - return err - } - } - - // set the redelegation or remove it if there are no more entries - if len(red.Entries) == 0 { - return k.RemoveRedelegation(ctx, red) - } - - return k.SetRedelegation(ctx, red) -} - -func (k Keeper) validatorUnbondingCanComplete(ctx context.Context, id uint64) error { - val, err := k.GetValidatorByUnbondingID(ctx, id) - if err != nil { - return err - } - - if val.UnbondingOnHoldRefCount <= 0 { - return errorsmod.Wrapf( - types.ErrUnbondingOnHoldRefCountNegative, - "val(%s), expecting UnbondingOnHoldRefCount > 0, got %T", - val.OperatorAddress, val.UnbondingOnHoldRefCount, - ) - } - val.UnbondingOnHoldRefCount-- - return k.SetValidator(ctx, val) -} - -// PutUnbondingOnHold allows an external module to stop an unbonding operation, -// such as an unbonding delegation, a redelegation, or a validator unbonding. -// In order for the unbonding operation with `id` to eventually complete, every call -// to PutUnbondingOnHold(id) must be matched by a call to UnbondingCanComplete(id). -func (k Keeper) PutUnbondingOnHold(ctx context.Context, id uint64) error { - unbondingType, err := k.GetUnbondingType(ctx, id) - if err != nil { - return err - } - switch unbondingType { - case types.UnbondingType_UnbondingDelegation: - if err := k.putUnbondingDelegationEntryOnHold(ctx, id); err != nil { - return err - } - case types.UnbondingType_Redelegation: - if err := k.putRedelegationEntryOnHold(ctx, id); err != nil { - return err - } - case types.UnbondingType_ValidatorUnbonding: - if err := k.putValidatorOnHold(ctx, id); err != nil { - return err - } - default: - return types.ErrUnbondingNotFound - } - - return nil -} - -func (k Keeper) putUnbondingDelegationEntryOnHold(ctx context.Context, id uint64) error { - ubd, err := k.GetUnbondingDelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := unbondingDelegationEntryArrayIndex(ubd, id) - if err != nil { - return err - } - - ubd.Entries[i].UnbondingOnHoldRefCount++ - return k.SetUnbondingDelegation(ctx, ubd) -} - -func (k Keeper) putRedelegationEntryOnHold(ctx context.Context, id uint64) error { - red, err := k.GetRedelegationByUnbondingID(ctx, id) - if err != nil { - return err - } - - i, err := redelegationEntryArrayIndex(red, id) - if err != nil { - return err - } - - red.Entries[i].UnbondingOnHoldRefCount++ - return k.SetRedelegation(ctx, red) -} - -func (k Keeper) putValidatorOnHold(ctx context.Context, id uint64) error { - val, err := k.GetValidatorByUnbondingID(ctx, id) - if err != nil { - return err - } - - val.UnbondingOnHoldRefCount++ - return k.SetValidator(ctx, val) -} diff --git a/x/staking/keeper/unbonding_test.go b/x/staking/keeper/unbonding_test.go deleted file mode 100644 index 1749ac04aa68..000000000000 --- a/x/staking/keeper/unbonding_test.go +++ /dev/null @@ -1,346 +0,0 @@ -package keeper_test - -import ( - "time" - - "cosmossdk.io/math" - "cosmossdk.io/x/staking/testutil" - "cosmossdk.io/x/staking/types" - - addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (s *KeeperTestSuite) TestIncrementUnbondingID() { - for i := 1; i < 10; i++ { - id, err := s.stakingKeeper.IncrementUnbondingID(s.ctx) - s.Require().NoError(err) - s.Require().Equal(uint64(i), id) - } -} - -func (s *KeeperTestSuite) TestUnbondingTypeAccessors() { - require := s.Require() - cases := []struct { - exists bool - name string - expected types.UnbondingType - }{ - { - name: "existing 1", - exists: true, - expected: types.UnbondingType_UnbondingDelegation, - }, - { - name: "existing 2", - exists: true, - expected: types.UnbondingType_Redelegation, - }, - { - name: "not existing", - exists: false, - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists { - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, uint64(i), tc.expected)) - } - - unbondingType, err := s.stakingKeeper.GetUnbondingType(s.ctx, uint64(i)) - if tc.exists { - require.NoError(err) - require.Equal(tc.expected, unbondingType) - } else { - require.ErrorIs(err, types.ErrNoUnbondingType) - } - }) - } -} - -func (s *KeeperTestSuite) TestUnbondingDelegationByUnbondingIDAccessors() { - delAddrs, valAddrs := createValAddrs(2) - require := s.Require() - - type exists struct { - setUnbondingDelegation bool - setUnbondingDelegationByUnbondingID bool - } - - cases := []struct { - exists exists - name string - expected types.UnbondingDelegation - }{ - { - name: "existing 1", - exists: exists{true, true}, - expected: types.NewUnbondingDelegation( - delAddrs[0], - valAddrs[0], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 1", - exists: exists{false, true}, - expected: types.NewUnbondingDelegation( - delAddrs[1], - valAddrs[1], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 2", - exists: exists{false, false}, - expected: types.NewUnbondingDelegation( - delAddrs[0], - valAddrs[0], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists.setUnbondingDelegation { - require.NoError(s.stakingKeeper.SetUnbondingDelegation(s.ctx, tc.expected)) - } - - if tc.exists.setUnbondingDelegationByUnbondingID { - require.NoError(s.stakingKeeper.SetUnbondingDelegationByUnbondingID(s.ctx, tc.expected, uint64(i))) - } - - ubd, err := s.stakingKeeper.GetUnbondingDelegationByUnbondingID(s.ctx, uint64(i)) - if tc.exists.setUnbondingDelegation && tc.exists.setUnbondingDelegationByUnbondingID { - require.NoError(err) - require.Equal(tc.expected, ubd) - } else { - require.ErrorIs(err, types.ErrNoUnbondingDelegation) - } - }) - } -} - -func (s *KeeperTestSuite) TestRedelegationByUnbondingIDAccessors() { - delAddrs, valAddrs := createValAddrs(2) - require := s.Require() - - type exists struct { - setRedelegation bool - setRedelegationByUnbondingID bool - } - - cases := []struct { - exists exists - name string - expected types.Redelegation - }{ - { - name: "existing 1", - exists: exists{true, true}, - expected: types.NewRedelegation( - delAddrs[0], - valAddrs[0], - valAddrs[1], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 1", - exists: exists{false, true}, - expected: types.NewRedelegation( - delAddrs[1], - valAddrs[0], - valAddrs[1], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - { - name: "not existing 2", - exists: exists{false, false}, - expected: types.NewRedelegation( - delAddrs[1], - valAddrs[1], - valAddrs[0], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - 0, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ), - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists.setRedelegation { - require.NoError(s.stakingKeeper.SetRedelegation(s.ctx, tc.expected)) - } - - if tc.exists.setRedelegationByUnbondingID { - require.NoError(s.stakingKeeper.SetRedelegationByUnbondingID(s.ctx, tc.expected, uint64(i))) - } - - red, err := s.stakingKeeper.GetRedelegationByUnbondingID(s.ctx, uint64(i)) - if tc.exists.setRedelegation && tc.exists.setRedelegationByUnbondingID { - require.NoError(err) - require.Equal(tc.expected, red) - } else { - require.ErrorIs(err, types.ErrNoRedelegation) - } - }) - } -} - -func (s *KeeperTestSuite) TestValidatorByUnbondingIDAccessors() { - _, valAddrs := createValAddrs(3) - require := s.Require() - - type exists struct { - setValidator bool - setValidatorByUnbondingID bool - } - - cases := []struct { - exists exists - name string - validator types.Validator - }{ - { - name: "existing 1", - exists: exists{true, true}, - validator: testutil.NewValidator(s.T(), valAddrs[0], PKs[0]), - }, - { - name: "not existing 1", - exists: exists{false, true}, - validator: testutil.NewValidator(s.T(), valAddrs[1], PKs[1]), - }, - { - name: "not existing 2", - exists: exists{false, false}, - validator: testutil.NewValidator(s.T(), valAddrs[2], PKs[0]), - }, - } - - for i, tc := range cases { - s.Run(tc.name, func() { - if tc.exists.setValidator { - require.NoError(s.stakingKeeper.SetValidator(s.ctx, tc.validator)) - } - - if tc.exists.setValidatorByUnbondingID { - require.NoError(s.stakingKeeper.SetValidatorByUnbondingID(s.ctx, tc.validator, uint64(i))) - } - - val, err := s.stakingKeeper.GetValidatorByUnbondingID(s.ctx, uint64(i)) - if tc.exists.setValidator && tc.exists.setValidatorByUnbondingID { - require.NoError(err) - require.Equal(tc.validator, val) - } else { - require.ErrorIs(err, types.ErrNoValidatorFound) - } - }) - } -} - -func (s *KeeperTestSuite) TestUnbondingCanComplete() { - delAddrs, valAddrs := createValAddrs(3) - require := s.Require() - - unbondingID := uint64(1) - - // no unbondingID set - err := s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoUnbondingType) - - // unbonding delegation - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, unbondingID, types.UnbondingType_UnbondingDelegation)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoUnbondingDelegation) - - ubd := types.NewUnbondingDelegation( - delAddrs[0], - valAddrs[0], - 0, - time.Unix(0, 0).UTC(), - math.NewInt(5), - unbondingID, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ) - require.NoError(s.stakingKeeper.SetUnbondingDelegation(s.ctx, ubd)) - require.NoError(s.stakingKeeper.SetUnbondingDelegationByUnbondingID(s.ctx, ubd, unbondingID)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrUnbondingOnHoldRefCountNegative) - - err = s.stakingKeeper.PutUnbondingOnHold(s.ctx, unbondingID) - require.NoError(err) - s.bankKeeper.EXPECT().UndelegateCoinsFromModuleToAccount(s.ctx, types.NotBondedPoolName, delAddrs[0], sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5)))).Return(nil) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.NoError(err) - - // redelegation - unbondingID++ - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, unbondingID, types.UnbondingType_Redelegation)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoRedelegation) - - red := types.NewRedelegation( - delAddrs[0], - valAddrs[0], - valAddrs[1], - 0, - time.Unix(5, 0).UTC(), - math.NewInt(10), - math.LegacyNewDec(10), - unbondingID, - addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"), - ) - require.NoError(s.stakingKeeper.SetRedelegation(s.ctx, red)) - require.NoError(s.stakingKeeper.SetRedelegationByUnbondingID(s.ctx, red, unbondingID)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrUnbondingOnHoldRefCountNegative) - - require.NoError(s.stakingKeeper.PutUnbondingOnHold(s.ctx, unbondingID)) - require.NoError(s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID)) - - // validator unbonding - unbondingID++ - require.NoError(s.stakingKeeper.SetUnbondingType(s.ctx, unbondingID, types.UnbondingType_ValidatorUnbonding)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrNoValidatorFound) - - val := testutil.NewValidator(s.T(), valAddrs[0], PKs[0]) - require.NoError(s.stakingKeeper.SetValidator(s.ctx, val)) - require.NoError(s.stakingKeeper.SetValidatorByUnbondingID(s.ctx, val, unbondingID)) - err = s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID) - require.ErrorIs(err, types.ErrUnbondingOnHoldRefCountNegative) - - require.NoError(s.stakingKeeper.PutUnbondingOnHold(s.ctx, unbondingID)) - require.NoError(s.stakingKeeper.UnbondingCanComplete(s.ctx, unbondingID)) -} diff --git a/x/staking/keeper/val_state_change.go b/x/staking/keeper/val_state_change.go index 867dc89dd5cb..866cc1ce0a2d 100644 --- a/x/staking/keeper/val_state_change.go +++ b/x/staking/keeper/val_state_change.go @@ -456,11 +456,6 @@ func (k Keeper) BeginUnbondingValidator(ctx context.Context, validator types.Val return validator, fmt.Errorf("should not already be unbonded or unbonding, validator: %v", validator) } - id, err := k.IncrementUnbondingID(ctx) - if err != nil { - return validator, err - } - validator = validator.UpdateStatus(types.Unbonding) headerInfo := k.HeaderService.HeaderInfo(ctx) @@ -468,8 +463,6 @@ func (k Keeper) BeginUnbondingValidator(ctx context.Context, validator types.Val validator.UnbondingTime = headerInfo.Time.Add(params.UnbondingTime) validator.UnbondingHeight = headerInfo.Height - validator.UnbondingIds = append(validator.UnbondingIds, id) - // save the now unbonded validator record and power index if err = k.SetValidator(ctx, validator); err != nil { return validator, err @@ -499,14 +492,6 @@ func (k Keeper) BeginUnbondingValidator(ctx context.Context, validator types.Val return validator, err } - if err := k.SetValidatorByUnbondingID(ctx, validator, id); err != nil { - return validator, err - } - - if err := k.Hooks().AfterUnbondingInitiated(ctx, id); err != nil { - return validator, err - } - return validator, nil } diff --git a/x/staking/keeper/validator.go b/x/staking/keeper/validator.go index 7ce5cae9822a..61e42bdf8008 100644 --- a/x/staking/keeper/validator.go +++ b/x/staking/keeper/validator.go @@ -545,36 +545,19 @@ func (k Keeper) unbondMatureValidators( return errors.New("unexpected validator in unbonding queue; status was not unbonding") } - // if the ref count is not zero, early exit. - if val.UnbondingOnHoldRefCount != 0 { - return nil - } - - // otherwise do proper unbonding - for _, id := range val.UnbondingIds { - if err = k.DeleteUnbondingIndex(ctx, id); err != nil { - return err - } - } - val, err = k.UnbondingToUnbonded(ctx, val) if err != nil { return err } - if val.GetDelegatorShares().IsZero() { - str, err := k.validatorAddressCodec.StringToBytes(val.GetOperator()) + addr, err := k.validatorAddressCodec.StringToBytes(val.OperatorAddress) if err != nil { return err } - if err = k.RemoveValidator(ctx, str); err != nil { + if err := k.RemoveValidator(ctx, addr); err != nil { return err } - } else { - // remove unbonding ids - val.UnbondingIds = []uint64{} } - // remove validator from queue if err = k.DeleteValidatorQueue(ctx, val); err != nil { return err diff --git a/x/staking/migrations/v6/keys.go b/x/staking/migrations/v6/keys.go index 252d7ce50396..5c3b1a913350 100644 --- a/x/staking/migrations/v6/keys.go +++ b/x/staking/migrations/v6/keys.go @@ -3,6 +3,9 @@ package v6 import "cosmossdk.io/collections" var ( + UnbondingTypeKey = collections.NewPrefix(57) // prefix for an index containing the type of unbonding operations + UnbondingIDKey = collections.NewPrefix(55) // key for the counter for the incrementing id for UnbondingOperations + UnbondingIndexKey = collections.NewPrefix(56) // prefix for an index for looking up unbonding operations by their IDs ValidatorUpdatesKey = collections.NewPrefix(97) HistoricalInfoKey = collections.NewPrefix(80) // prefix for the historical info ) diff --git a/x/staking/migrations/v6/store.go b/x/staking/migrations/v6/store.go index 93de43ec51fa..98b4cb446faa 100644 --- a/x/staking/migrations/v6/store.go +++ b/x/staking/migrations/v6/store.go @@ -13,5 +13,8 @@ import ( func MigrateStore(ctx context.Context, store storetypes.KVStore, cdc codec.BinaryCodec) error { store.Delete(ValidatorUpdatesKey) store.Delete(HistoricalInfoKey) + store.Delete(UnbondingIDKey) + store.Delete(UnbondingIndexKey) + store.Delete(UnbondingTypeKey) return nil } diff --git a/x/staking/proto/cosmos/staking/v1beta1/staking.proto b/x/staking/proto/cosmos/staking/v1beta1/staking.proto index 495fa0020cfd..78b87250c3bb 100644 --- a/x/staking/proto/cosmos/staking/v1beta1/staking.proto +++ b/x/staking/proto/cosmos/staking/v1beta1/staking.proto @@ -259,7 +259,7 @@ message UnbondingDelegationEntry { (gogoproto.nullable) = false ]; // Incrementing id that uniquely identifies this entry - uint64 unbonding_id = 5; + uint64 unbonding_id = 5 [deprecated = true]; // Strictly positive if this entry's unbonding has been stopped by external modules int64 unbonding_on_hold_ref_count = 6; diff --git a/x/staking/testutil/expected_keepers_mocks.go b/x/staking/testutil/expected_keepers_mocks.go index d2bd42c4505d..04a942f2d3ca 100644 --- a/x/staking/testutil/expected_keepers_mocks.go +++ b/x/staking/testutil/expected_keepers_mocks.go @@ -611,20 +611,6 @@ func (mr *MockStakingHooksMockRecorder) AfterDelegationModified(ctx, delAddr, va return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AfterDelegationModified", reflect.TypeOf((*MockStakingHooks)(nil).AfterDelegationModified), ctx, delAddr, valAddr) } -// AfterUnbondingInitiated mocks base method. -func (m *MockStakingHooks) AfterUnbondingInitiated(ctx context.Context, id uint64) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AfterUnbondingInitiated", ctx, id) - ret0, _ := ret[0].(error) - return ret0 -} - -// AfterUnbondingInitiated indicates an expected call of AfterUnbondingInitiated. -func (mr *MockStakingHooksMockRecorder) AfterUnbondingInitiated(ctx, id any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AfterUnbondingInitiated", reflect.TypeOf((*MockStakingHooks)(nil).AfterUnbondingInitiated), ctx, id) -} - // AfterValidatorBeginUnbonding mocks base method. func (m *MockStakingHooks) AfterValidatorBeginUnbonding(ctx context.Context, consAddr types1.ConsAddress, valAddr types1.ValAddress) error { m.ctrl.T.Helper() diff --git a/x/staking/types/delegation.go b/x/staking/types/delegation.go index fad9ae19ab76..c7754d9a8412 100644 --- a/x/staking/types/delegation.go +++ b/x/staking/types/delegation.go @@ -66,13 +66,12 @@ func (d Delegations) String() (out string) { return strings.TrimSpace(out) } -func NewUnbondingDelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int, unbondingID uint64) UnbondingDelegationEntry { +func NewUnbondingDelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int) UnbondingDelegationEntry { return UnbondingDelegationEntry{ CreationHeight: creationHeight, CompletionTime: completionTime, InitialBalance: balance, Balance: balance, - UnbondingId: unbondingID, UnbondingOnHoldRefCount: 0, } } @@ -82,26 +81,6 @@ func (e UnbondingDelegationEntry) IsMature(currentTime time.Time) bool { return !e.CompletionTime.After(currentTime) } -// OnHold - is the current entry on hold due to external modules -func (e UnbondingDelegationEntry) OnHold() bool { - return e.UnbondingOnHoldRefCount > 0 -} - -// return the unbonding delegation entry -func MustMarshalUBDE(cdc codec.BinaryCodec, ubd UnbondingDelegationEntry) []byte { - return cdc.MustMarshal(&ubd) -} - -// unmarshal a unbonding delegation entry from a store value -func MustUnmarshalUBDE(cdc codec.BinaryCodec, value []byte) UnbondingDelegationEntry { - ubd, err := UnmarshalUBDE(cdc, value) - if err != nil { - panic(err) - } - - return ubd -} - // unmarshal a unbonding delegation entry from a store value func UnmarshalUBDE(cdc codec.BinaryCodec, value []byte) (ubd UnbondingDelegationEntry, err error) { err = cdc.Unmarshal(value, &ubd) @@ -111,7 +90,7 @@ func UnmarshalUBDE(cdc codec.BinaryCodec, value []byte) (ubd UnbondingDelegation // NewUnbondingDelegation - create a new unbonding delegation object func NewUnbondingDelegation( delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, - creationHeight int64, minTime time.Time, balance math.Int, id uint64, + creationHeight int64, minTime time.Time, balance math.Int, valAc, delAc address.Codec, ) UnbondingDelegation { valAddr, err := valAc.BytesToString(validatorAddr) @@ -126,13 +105,13 @@ func NewUnbondingDelegation( DelegatorAddress: delAddr, ValidatorAddress: valAddr, Entries: []UnbondingDelegationEntry{ - NewUnbondingDelegationEntry(creationHeight, minTime, balance, id), + NewUnbondingDelegationEntry(creationHeight, minTime, balance), }, } } // AddEntry - append entry to the unbonding delegation -func (ubd *UnbondingDelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int, unbondingID uint64) bool { +func (ubd *UnbondingDelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int) bool { // Check the entries exists with creation_height and complete_time entryIndex := -1 for index, ubdEntry := range ubd.Entries { @@ -152,7 +131,7 @@ func (ubd *UnbondingDelegation) AddEntry(creationHeight int64, minTime time.Time return false } // append the new unbond delegation entry - entry := NewUnbondingDelegationEntry(creationHeight, minTime, balance, unbondingID) + entry := NewUnbondingDelegationEntry(creationHeight, minTime, balance) ubd.Entries = append(ubd.Entries, entry) return true } @@ -194,13 +173,12 @@ func (ubds UnbondingDelegations) String() (out string) { return strings.TrimSpace(out) } -func NewRedelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int, sharesDst math.LegacyDec, id uint64) RedelegationEntry { +func NewRedelegationEntry(creationHeight int64, completionTime time.Time, balance math.Int, sharesDst math.LegacyDec) RedelegationEntry { return RedelegationEntry{ CreationHeight: creationHeight, CompletionTime: completionTime, InitialBalance: balance, SharesDst: sharesDst, - UnbondingId: id, UnbondingOnHoldRefCount: 0, } } @@ -217,7 +195,7 @@ func (e RedelegationEntry) OnHold() bool { func NewRedelegation( delegatorAddr sdk.AccAddress, validatorSrcAddr, validatorDstAddr sdk.ValAddress, - creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec, id uint64, + creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec, valAc, delAc address.Codec, ) Redelegation { valSrcAddr, err := valAc.BytesToString(validatorSrcAddr) @@ -238,14 +216,14 @@ func NewRedelegation( ValidatorSrcAddress: valSrcAddr, ValidatorDstAddress: valDstAddr, Entries: []RedelegationEntry{ - NewRedelegationEntry(creationHeight, minTime, balance, sharesDst, id), + NewRedelegationEntry(creationHeight, minTime, balance, sharesDst), }, } } // AddEntry - append entry to the unbonding delegation -func (red *Redelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec, id uint64) { - entry := NewRedelegationEntry(creationHeight, minTime, balance, sharesDst, id) +func (red *Redelegation) AddEntry(creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec) { + entry := NewRedelegationEntry(creationHeight, minTime, balance, sharesDst) red.Entries = append(red.Entries, entry) } @@ -341,10 +319,10 @@ func NewRedelegationResponse( // NewRedelegationEntryResponse creates a new RedelegationEntryResponse instance. func NewRedelegationEntryResponse( - creationHeight int64, completionTime time.Time, sharesDst math.LegacyDec, initialBalance, balance math.Int, unbondingID uint64, + creationHeight int64, completionTime time.Time, sharesDst math.LegacyDec, initialBalance, balance math.Int, ) RedelegationEntryResponse { return RedelegationEntryResponse{ - RedelegationEntry: NewRedelegationEntry(creationHeight, completionTime, initialBalance, sharesDst, unbondingID), + RedelegationEntry: NewRedelegationEntry(creationHeight, completionTime, initialBalance, sharesDst), Balance: balance, } } diff --git a/x/staking/types/delegation_test.go b/x/staking/types/delegation_test.go index 3452ce51744c..61d36bbf02f1 100644 --- a/x/staking/types/delegation_test.go +++ b/x/staking/types/delegation_test.go @@ -50,7 +50,7 @@ func TestDelegationString(t *testing.T) { func TestUnbondingDelegationEqual(t *testing.T) { ubd1 := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0, - time.Unix(0, 0), math.NewInt(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + time.Unix(0, 0), math.NewInt(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) ubd2 := ubd1 ok := ubd1.String() == ubd2.String() @@ -67,7 +67,7 @@ func TestUnbondingDelegationEqual(t *testing.T) { func TestUnbondingDelegationString(t *testing.T) { ubd := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0, - time.Unix(0, 0), math.NewInt(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + time.Unix(0, 0), math.NewInt(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) require.NotEmpty(t, ubd.String()) } @@ -75,10 +75,10 @@ func TestUnbondingDelegationString(t *testing.T) { func TestRedelegationEqual(t *testing.T) { r1 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, time.Unix(0, 0), math.NewInt(0), - math.LegacyNewDec(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + math.LegacyNewDec(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) r2 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, time.Unix(0, 0), math.NewInt(0), - math.LegacyNewDec(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + math.LegacyNewDec(0), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) require.True(t, proto.Equal(&r1, &r2)) r2.Entries[0].SharesDst = math.LegacyNewDec(10) @@ -89,7 +89,7 @@ func TestRedelegationEqual(t *testing.T) { func TestRedelegationString(t *testing.T) { r := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0, time.Unix(0, 0), math.NewInt(0), - math.LegacyNewDec(10), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) + math.LegacyNewDec(10), addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")) require.NotEmpty(t, r.String()) } @@ -145,8 +145,8 @@ func TestRedelegationResponses(t *testing.T) { require.NoError(t, err) entries := []types.RedelegationEntryResponse{ - types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5), 0), - types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5), 0), + types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5)), + types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5)), } rdr1 := types.NewRedelegationResponse(addr1, vAddr2, vAddr3, entries) rdr2 := types.NewRedelegationResponse(addr2, vAddr1, vAddr3, entries) diff --git a/x/staking/types/expected_keepers.go b/x/staking/types/expected_keepers.go index e757c2c2b586..a67b52887b33 100644 --- a/x/staking/types/expected_keepers.go +++ b/x/staking/types/expected_keepers.go @@ -105,7 +105,6 @@ type StakingHooks interface { BeforeDelegationRemoved(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation is removed AfterDelegationModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error BeforeValidatorSlashed(ctx context.Context, valAddr sdk.ValAddress, fraction math.LegacyDec) error - AfterUnbondingInitiated(ctx context.Context, id uint64) error AfterConsensusPubKeyUpdate(ctx context.Context, oldPubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error } diff --git a/x/staking/types/hooks.go b/x/staking/types/hooks.go index 6cf0581b6e53..cb5a6099d4e7 100644 --- a/x/staking/types/hooks.go +++ b/x/staking/types/hooks.go @@ -109,15 +109,6 @@ func (h MultiStakingHooks) BeforeValidatorSlashed(ctx context.Context, valAddr s return nil } -func (h MultiStakingHooks) AfterUnbondingInitiated(ctx context.Context, id uint64) error { - for i := range h { - if err := h[i].AfterUnbondingInitiated(ctx, id); err != nil { - return err - } - } - return nil -} - func (h MultiStakingHooks) AfterConsensusPubKeyUpdate(ctx context.Context, oldPubKey, newPubKey cryptotypes.PubKey, rotationFee sdk.Coin) error { for i := range h { if err := h[i].AfterConsensusPubKeyUpdate(ctx, oldPubKey, newPubKey, rotationFee); err != nil { diff --git a/x/staking/types/keys.go b/x/staking/types/keys.go index 03335a9a8372..7228716a7700 100644 --- a/x/staking/types/keys.go +++ b/x/staking/types/keys.go @@ -49,10 +49,6 @@ var ( RedelegationByValSrcIndexKey = collections.NewPrefix(53) // prefix for each key for a redelegation, by source validator operator RedelegationByValDstIndexKey = collections.NewPrefix(54) // prefix for each key for a redelegation, by destination validator operator - UnbondingIDKey = collections.NewPrefix(55) // key for the counter for the incrementing id for UnbondingOperations - UnbondingIndexKey = collections.NewPrefix(56) // prefix for an index for looking up unbonding operations by their IDs - UnbondingTypeKey = collections.NewPrefix(57) // prefix for an index containing the type of unbonding operations - UnbondingQueueKey = collections.NewPrefix(65) // prefix for the timestamps in unbonding queue RedelegationQueueKey = collections.NewPrefix(66) // prefix for the timestamps in redelegations queue ValidatorQueueKey = collections.NewPrefix(67) // prefix for the timestamps in validator queue diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 1a6ae219a100..47691b5dff7f 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -793,7 +793,7 @@ type UnbondingDelegationEntry struct { // balance defines the tokens to receive at completion. Balance cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=balance,proto3,customtype=cosmossdk.io/math.Int" json:"balance"` // Incrementing id that uniquely identifies this entry - UnbondingId uint64 `protobuf:"varint,5,opt,name=unbonding_id,json=unbondingId,proto3" json:"unbonding_id,omitempty"` + UnbondingId uint64 `protobuf:"varint,5,opt,name=unbonding_id,json=unbondingId,proto3" json:"unbonding_id,omitempty"` // Deprecated: Do not use. // Strictly positive if this entry's unbonding has been stopped by external modules UnbondingOnHoldRefCount int64 `protobuf:"varint,6,opt,name=unbonding_on_hold_ref_count,json=unbondingOnHoldRefCount,proto3" json:"unbonding_on_hold_ref_count,omitempty"` } @@ -845,6 +845,7 @@ func (m *UnbondingDelegationEntry) GetCompletionTime() time.Time { return time.Time{} } +// Deprecated: Do not use. func (m *UnbondingDelegationEntry) GetUnbondingId() uint64 { if m != nil { return m.UnbondingId @@ -1449,142 +1450,142 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 2150 bytes of a gzipped FileDescriptorProto + // 2154 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4b, 0x6c, 0x1b, 0xc7, - 0x19, 0xd6, 0x92, 0x34, 0x25, 0xfe, 0x14, 0x45, 0x6a, 0xfc, 0xa2, 0xe8, 0x58, 0x92, 0x19, 0x37, + 0x19, 0xd6, 0x92, 0x0c, 0x25, 0xfe, 0x14, 0x45, 0x6a, 0xfc, 0xa2, 0xe8, 0x58, 0x92, 0x19, 0x27, 0x91, 0xdd, 0x98, 0x8c, 0xdc, 0xc2, 0x05, 0x84, 0x20, 0x85, 0x29, 0xca, 0x36, 0x93, 0x58, 0x52, 0x97, 0xa2, 0xfa, 0x40, 0x9b, 0xc5, 0x70, 0x77, 0x48, 0x6d, 0x45, 0xee, 0xb2, 0x3b, 0x43, 0xd9, - 0xbc, 0xf7, 0x10, 0xb8, 0x28, 0x90, 0x53, 0x11, 0xa0, 0x30, 0x6a, 0xa0, 0x97, 0xf6, 0x96, 0x83, - 0xd1, 0x7b, 0x6f, 0x69, 0x81, 0x02, 0x86, 0x4f, 0x45, 0x80, 0xba, 0x85, 0x7d, 0x48, 0xd0, 0x5c, - 0xda, 0x9e, 0x7a, 0x2c, 0xe6, 0xb1, 0x0f, 0x8a, 0xa2, 0x65, 0xc9, 0x41, 0x11, 0xb4, 0x17, 0x62, - 0x67, 0xe6, 0xff, 0xbf, 0x99, 0xff, 0x3d, 0xf3, 0x13, 0x2e, 0x9a, 0x2e, 0xed, 0xba, 0xb4, 0x4c, - 0x19, 0xde, 0xb5, 0x9d, 0x76, 0x79, 0x6f, 0xb9, 0x49, 0x18, 0x5e, 0xf6, 0xc7, 0xa5, 0x9e, 0xe7, - 0x32, 0x17, 0x9d, 0x91, 0x54, 0x25, 0x7f, 0x56, 0x51, 0x15, 0x66, 0x71, 0xd7, 0x76, 0xdc, 0xb2, - 0xf8, 0x95, 0xa4, 0x85, 0x57, 0x4c, 0xb7, 0x4b, 0x58, 0xb3, 0xc5, 0xca, 0xb8, 0x69, 0xda, 0xe5, - 0xbd, 0xe5, 0x32, 0x1b, 0xf4, 0x08, 0x55, 0xab, 0xe7, 0x83, 0x55, 0x31, 0xbb, 0x7f, 0x79, 0x5e, - 0x9d, 0xa6, 0x89, 0x29, 0x09, 0x8e, 0x62, 0xba, 0xb6, 0xa3, 0xd6, 0xe7, 0xe4, 0xba, 0x21, 0x46, - 0x65, 0x75, 0x28, 0xb9, 0x74, 0xaa, 0xed, 0xb6, 0x5d, 0x39, 0xcf, 0xbf, 0x7c, 0x86, 0xb6, 0xeb, - 0xb6, 0x3b, 0xa4, 0x2c, 0x46, 0xcd, 0x7e, 0xab, 0x8c, 0x9d, 0x81, 0xbf, 0xd7, 0xfe, 0x25, 0xab, - 0xef, 0x61, 0x66, 0xbb, 0xfe, 0x5e, 0x0b, 0xfb, 0xd7, 0x99, 0xdd, 0x25, 0x94, 0xe1, 0x6e, 0x4f, - 0x12, 0x14, 0x3f, 0xd2, 0x60, 0xe6, 0x96, 0x4d, 0x99, 0xeb, 0xd9, 0x26, 0xee, 0xd4, 0x9c, 0x96, - 0x8b, 0xde, 0x82, 0xe4, 0x0e, 0xc1, 0x16, 0xf1, 0xf2, 0xda, 0xa2, 0xb6, 0x94, 0xbe, 0x3a, 0x57, - 0xf2, 0xe5, 0x2d, 0x49, 0x31, 0xf7, 0x96, 0x4b, 0xb7, 0x04, 0x41, 0x25, 0xf5, 0xc9, 0x93, 0x85, - 0x89, 0xdf, 0x7c, 0xf6, 0xf1, 0x65, 0x4d, 0x57, 0x3c, 0xa8, 0x0a, 0xc9, 0x3d, 0xdc, 0xa1, 0x84, - 0xe5, 0x63, 0x8b, 0xf1, 0xa5, 0xf4, 0xd5, 0x0b, 0xa5, 0x83, 0xd5, 0x5e, 0xda, 0xc6, 0x1d, 0xdb, - 0xc2, 0xcc, 0x1d, 0x46, 0x91, 0xbc, 0x2b, 0xb1, 0xbc, 0x56, 0xfc, 0x45, 0x0c, 0xb2, 0xab, 0x6e, - 0xb7, 0x6b, 0x53, 0x6a, 0xbb, 0x8e, 0x8e, 0x19, 0xa1, 0xe8, 0x1d, 0x48, 0x78, 0x98, 0x11, 0x71, - 0xb2, 0x54, 0xe5, 0x1a, 0x67, 0xfc, 0xf4, 0xc9, 0xc2, 0x39, 0xb9, 0x05, 0xb5, 0x76, 0x4b, 0xb6, - 0x5b, 0xee, 0x62, 0xb6, 0x53, 0x7a, 0x8f, 0xb4, 0xb1, 0x39, 0xa8, 0x12, 0xf3, 0xf1, 0xc3, 0x2b, - 0xa0, 0x4e, 0x50, 0x25, 0xa6, 0xdc, 0x45, 0x60, 0xa0, 0xef, 0xc0, 0x54, 0x17, 0xdf, 0x35, 0x04, - 0x5e, 0xec, 0xa5, 0xf0, 0x26, 0xbb, 0xf8, 0x2e, 0x3f, 0x1f, 0x7a, 0x1f, 0xb2, 0x1c, 0xd2, 0xdc, - 0xc1, 0x4e, 0x9b, 0x48, 0xe4, 0xf8, 0x4b, 0x21, 0x67, 0xba, 0xf8, 0xee, 0xaa, 0x40, 0xe3, 0xf8, - 0x2b, 0x89, 0xcf, 0x1f, 0x2c, 0x68, 0xc5, 0xdf, 0x6b, 0x00, 0xa1, 0x62, 0x10, 0x86, 0x9c, 0x19, - 0x8c, 0xc4, 0xa6, 0x54, 0x59, 0xee, 0xf5, 0x71, 0xba, 0xdf, 0xa7, 0xd6, 0x4a, 0x86, 0x1f, 0xef, - 0xd1, 0x93, 0x05, 0x4d, 0xee, 0x9a, 0x35, 0x47, 0xd4, 0x9e, 0xee, 0xf7, 0x2c, 0xcc, 0x88, 0xc1, - 0xfd, 0x47, 0x68, 0x2b, 0x7d, 0xb5, 0x50, 0x92, 0xce, 0x55, 0xf2, 0x9d, 0xab, 0xb4, 0xe5, 0x3b, - 0x97, 0x04, 0xfc, 0xf0, 0xaf, 0x3e, 0x20, 0x48, 0x6e, 0xbe, 0xae, 0x64, 0xf8, 0xa7, 0x06, 0xe9, - 0x2a, 0xa1, 0xa6, 0x67, 0xf7, 0xb8, 0xbb, 0xa2, 0x3c, 0x4c, 0x76, 0x5d, 0xc7, 0xde, 0x55, 0x5e, - 0x97, 0xd2, 0xfd, 0x21, 0x2a, 0xc0, 0x94, 0x6d, 0x11, 0x87, 0xd9, 0x6c, 0x20, 0xcd, 0xa4, 0x07, - 0x63, 0xce, 0x75, 0x87, 0x34, 0xa9, 0xed, 0xeb, 0x59, 0xf7, 0x87, 0xe8, 0x12, 0xe4, 0x28, 0x31, - 0xfb, 0x9e, 0xcd, 0x06, 0x86, 0xe9, 0x3a, 0x0c, 0x9b, 0x2c, 0x9f, 0x10, 0x24, 0x59, 0x7f, 0x7e, - 0x55, 0x4e, 0x73, 0x10, 0x8b, 0x30, 0x6c, 0x77, 0x68, 0xfe, 0x84, 0x04, 0x51, 0x43, 0x74, 0x13, - 0xa6, 0xba, 0x84, 0x61, 0x0b, 0x33, 0x9c, 0x4f, 0x0a, 0x99, 0x17, 0xc7, 0x69, 0xf4, 0xb6, 0xa2, - 0x13, 0xce, 0x2c, 0xa4, 0x9e, 0xd0, 0x03, 0x66, 0x25, 0x73, 0x0b, 0xa6, 0x7c, 0x32, 0xf4, 0x1a, - 0x64, 0x7b, 0x9e, 0xdb, 0xb2, 0x3b, 0xc4, 0xe8, 0xd9, 0xa6, 0xd1, 0xf7, 0x6c, 0x25, 0x77, 0x46, - 0x4d, 0x6f, 0xda, 0x66, 0xc3, 0xb3, 0xd1, 0x1b, 0x80, 0xa8, 0x6b, 0xda, 0xb8, 0x63, 0xec, 0x60, - 0xc7, 0xea, 0x10, 0x4e, 0x49, 0x45, 0x68, 0xa5, 0xf4, 0x9c, 0x5c, 0xb9, 0x25, 0x16, 0x1a, 0x9e, - 0x4d, 0xd5, 0x3e, 0xf7, 0x27, 0x21, 0x15, 0x44, 0x17, 0x5a, 0x85, 0x9c, 0xdb, 0x23, 0x1e, 0xff, - 0x36, 0xb0, 0x65, 0x79, 0x84, 0x52, 0x15, 0x3e, 0xf9, 0xc7, 0x0f, 0xaf, 0x9c, 0x52, 0xf2, 0x5c, - 0x97, 0x2b, 0x75, 0xe6, 0xd9, 0x4e, 0x5b, 0xcf, 0xfa, 0x1c, 0x6a, 0x1a, 0x7d, 0x9f, 0xfb, 0x98, - 0x43, 0x89, 0x43, 0xfb, 0xd4, 0xe8, 0xf5, 0x9b, 0xbb, 0x64, 0xa0, 0xbc, 0xe0, 0xd4, 0x88, 0x17, - 0x5c, 0x77, 0x06, 0x95, 0xfc, 0x1f, 0x43, 0x68, 0xd3, 0x1b, 0xf4, 0x98, 0x5b, 0xda, 0xec, 0x37, - 0xdf, 0x25, 0x03, 0xee, 0x5b, 0x0a, 0x67, 0x53, 0xc0, 0xa0, 0x33, 0x90, 0xfc, 0x31, 0xb6, 0x3b, - 0xc4, 0x12, 0x26, 0x9c, 0xd2, 0xd5, 0x08, 0xad, 0x40, 0x92, 0x32, 0xcc, 0xfa, 0x54, 0xd8, 0x6d, - 0xe6, 0x6a, 0x71, 0x9c, 0xea, 0x2b, 0xae, 0x63, 0xd5, 0x05, 0xa5, 0xae, 0x38, 0xd0, 0x2a, 0x24, - 0x99, 0xbb, 0x4b, 0x1c, 0x65, 0xd1, 0xca, 0xd7, 0x55, 0xf8, 0x9d, 0x1e, 0x0d, 0xbf, 0x9a, 0xc3, - 0x22, 0x81, 0x57, 0x73, 0x98, 0xae, 0x58, 0xd1, 0x0f, 0x21, 0x67, 0x91, 0x0e, 0x69, 0x0b, 0xcd, - 0xd1, 0x1d, 0xec, 0x11, 0x2a, 0xbc, 0x20, 0x55, 0x59, 0x3e, 0x72, 0x34, 0xeb, 0xd9, 0x00, 0xaa, - 0x2e, 0x90, 0xd0, 0x26, 0xa4, 0xad, 0xd0, 0xff, 0xf3, 0x93, 0x42, 0x99, 0xaf, 0x8e, 0x93, 0x31, - 0x12, 0x2a, 0xd1, 0x74, 0x19, 0x85, 0xe0, 0x2e, 0xdf, 0x77, 0x9a, 0xae, 0x63, 0xd9, 0x4e, 0xdb, - 0xd8, 0x21, 0x76, 0x7b, 0x87, 0xe5, 0xa7, 0x16, 0xb5, 0xa5, 0xb8, 0x9e, 0x0d, 0xe6, 0x6f, 0x89, - 0x69, 0xb4, 0x09, 0x33, 0x21, 0xa9, 0x08, 0xe9, 0xd4, 0x51, 0x43, 0x3a, 0x13, 0x00, 0x70, 0x12, - 0x74, 0x1b, 0x20, 0x4c, 0x1a, 0x79, 0x10, 0x68, 0xc5, 0xc3, 0xd3, 0x4f, 0x54, 0x98, 0x08, 0x00, - 0x72, 0xe0, 0x64, 0xd7, 0x76, 0x0c, 0x4a, 0x3a, 0x2d, 0x43, 0x69, 0x8e, 0xe3, 0xa6, 0x85, 0xfa, - 0xdf, 0x3e, 0x82, 0x35, 0x3f, 0x7d, 0x78, 0x25, 0x2b, 0x47, 0x57, 0xa8, 0xb5, 0xbb, 0xf8, 0x66, - 0xe9, 0x9b, 0xdf, 0xd2, 0x67, 0xbb, 0xb6, 0x53, 0x27, 0x9d, 0x56, 0x35, 0x00, 0x46, 0x6f, 0xc1, - 0xb9, 0x50, 0x21, 0xae, 0x63, 0xec, 0xb8, 0x1d, 0xcb, 0xf0, 0x48, 0xcb, 0x30, 0xdd, 0xbe, 0xc3, - 0xf2, 0xd3, 0x42, 0x8d, 0x67, 0x03, 0x92, 0x0d, 0xe7, 0x96, 0xdb, 0xb1, 0x74, 0xd2, 0x5a, 0xe5, - 0xcb, 0xe8, 0x55, 0x08, 0xb5, 0x61, 0xd8, 0x16, 0xcd, 0x67, 0x16, 0xe3, 0x4b, 0x09, 0x7d, 0x3a, - 0x98, 0xac, 0x59, 0x74, 0x65, 0xea, 0x83, 0x07, 0x0b, 0x13, 0x9f, 0x3f, 0x58, 0x98, 0x28, 0xde, - 0x80, 0xe9, 0x6d, 0xdc, 0x51, 0xa1, 0x45, 0x28, 0xba, 0x06, 0x29, 0xec, 0x0f, 0xf2, 0x1a, 0x0f, - 0xed, 0xe7, 0x84, 0x66, 0x48, 0x5a, 0xfc, 0xad, 0x06, 0xc9, 0xea, 0xf6, 0x26, 0xb6, 0x3d, 0xb4, - 0x06, 0xb3, 0xa1, 0xaf, 0xbe, 0x68, 0x94, 0x87, 0xee, 0xed, 0x87, 0xf9, 0x3a, 0xcc, 0xee, 0xf9, - 0x89, 0x23, 0x80, 0x91, 0xb5, 0xf1, 0xc2, 0xe3, 0x87, 0x57, 0xce, 0x2b, 0x98, 0x20, 0xb9, 0xec, - 0xc3, 0xdb, 0xdb, 0x37, 0x1f, 0x91, 0xf9, 0x1d, 0x98, 0x94, 0x47, 0xa5, 0xe8, 0xdb, 0x70, 0xa2, - 0xc7, 0x3f, 0x84, 0xa8, 0xe9, 0xab, 0xf3, 0x63, 0x7d, 0x5e, 0xd0, 0x47, 0x3d, 0x44, 0xf2, 0x15, - 0x7f, 0x16, 0x03, 0xa8, 0x6e, 0x6f, 0x6f, 0x79, 0x76, 0xaf, 0x43, 0xd8, 0x97, 0x25, 0x7b, 0x03, - 0x4e, 0x87, 0xb2, 0x53, 0xcf, 0x3c, 0xba, 0xfc, 0x27, 0x03, 0xfe, 0xba, 0x67, 0x1e, 0x08, 0x6b, - 0x51, 0x16, 0xc0, 0xc6, 0x8f, 0x0e, 0x5b, 0xa5, 0x6c, 0x54, 0xb3, 0xdf, 0x83, 0x74, 0xa8, 0x0c, - 0x8a, 0x6a, 0x30, 0xc5, 0xd4, 0xb7, 0x52, 0x70, 0x71, 0xbc, 0x82, 0x7d, 0xb6, 0xa8, 0x92, 0x03, - 0xf6, 0xe2, 0xbf, 0x35, 0x80, 0x48, 0x8c, 0x7c, 0x35, 0x7d, 0x0c, 0xd5, 0x20, 0xa9, 0x92, 0x73, - 0xfc, 0xb8, 0xc9, 0x59, 0x01, 0x44, 0x94, 0xfa, 0xf3, 0x18, 0x9c, 0x6c, 0xf8, 0xd1, 0xfb, 0xd5, - 0xd7, 0x41, 0x03, 0x26, 0x89, 0xc3, 0x3c, 0x5b, 0x28, 0x81, 0xdb, 0xfc, 0xcd, 0x71, 0x36, 0x3f, - 0x40, 0xa8, 0x35, 0x87, 0x79, 0x83, 0xa8, 0x07, 0xf8, 0x58, 0x11, 0x7d, 0xfc, 0x32, 0x0e, 0xf9, - 0x71, 0xac, 0xe8, 0x75, 0xc8, 0x9a, 0x1e, 0x11, 0x13, 0x7e, 0xdd, 0xd1, 0x44, 0xc2, 0x9c, 0xf1, - 0xa7, 0x55, 0xd9, 0xd1, 0x81, 0xdf, 0x2c, 0xb9, 0x73, 0x71, 0xd2, 0xe3, 0x5d, 0x25, 0x67, 0x42, - 0x04, 0x51, 0x78, 0xb6, 0x20, 0x6b, 0x3b, 0x36, 0xe3, 0x37, 0xa4, 0x26, 0xee, 0x60, 0xc7, 0xf4, - 0xaf, 0xdc, 0x47, 0xaa, 0xf9, 0x33, 0x0a, 0xa3, 0x22, 0x21, 0xd0, 0x1a, 0x4c, 0xfa, 0x68, 0x89, - 0xa3, 0xa3, 0xf9, 0xbc, 0xe8, 0x02, 0x4c, 0x47, 0x0b, 0x83, 0xb8, 0x8d, 0x24, 0xf4, 0x74, 0xa4, - 0x2e, 0x1c, 0x56, 0x79, 0x92, 0xcf, 0xad, 0x3c, 0xea, 0xc2, 0xf7, 0xab, 0x38, 0xcc, 0xea, 0xc4, - 0xfa, 0xdf, 0x37, 0xcb, 0x26, 0x80, 0x0c, 0x55, 0x9e, 0x49, 0x95, 0x65, 0x8e, 0x11, 0xef, 0x29, - 0x09, 0x52, 0xa5, 0xec, 0xbf, 0x65, 0xa1, 0xbf, 0xc4, 0x60, 0x3a, 0x6a, 0xa1, 0xff, 0xcb, 0xa2, - 0x85, 0xd6, 0xc3, 0x34, 0x95, 0x10, 0x69, 0xea, 0xd2, 0xb8, 0x34, 0x35, 0xe2, 0xcd, 0x87, 0xe4, - 0xa7, 0x2f, 0xe2, 0x90, 0xdc, 0xc4, 0x1e, 0xee, 0x52, 0xb4, 0x31, 0x72, 0xb7, 0xf5, 0xdb, 0x18, - 0xfb, 0x9d, 0xb9, 0xaa, 0x7a, 0x25, 0xd2, 0x97, 0x3f, 0x1a, 0x77, 0xb5, 0xfd, 0x1a, 0xcc, 0xf0, - 0x47, 0x7d, 0x20, 0x90, 0x54, 0x6e, 0x46, 0xbc, 0xcd, 0x03, 0xe9, 0x29, 0x5a, 0x80, 0x34, 0x27, - 0x0b, 0xf3, 0x30, 0xa7, 0x81, 0x2e, 0xbe, 0xbb, 0x26, 0x67, 0xd0, 0x32, 0xa0, 0x9d, 0xa0, 0xd3, - 0x62, 0x84, 0x8a, 0xd0, 0x96, 0x32, 0x95, 0x58, 0x5e, 0xd3, 0x67, 0xc3, 0x55, 0x9f, 0xe5, 0x3c, - 0x00, 0x3f, 0x89, 0x61, 0x11, 0xc7, 0xed, 0xaa, 0xd7, 0x69, 0x8a, 0xcf, 0x54, 0xf9, 0x04, 0xfa, - 0xa9, 0x26, 0xaf, 0xc9, 0xfb, 0x9e, 0xff, 0xea, 0x95, 0xb2, 0xf5, 0x02, 0x81, 0xf1, 0xaf, 0x27, - 0x0b, 0x85, 0x01, 0xee, 0x76, 0x56, 0x8a, 0x07, 0xe0, 0x14, 0x0f, 0xea, 0x48, 0xf0, 0xcb, 0xf3, - 0x70, 0xfb, 0x00, 0xd5, 0x20, 0xb7, 0x4b, 0x06, 0x86, 0xe7, 0x32, 0x99, 0x6c, 0x5a, 0x84, 0xa8, - 0xf7, 0xcc, 0x9c, 0x6f, 0xdf, 0x26, 0xa6, 0x24, 0x72, 0xfd, 0xb7, 0x9d, 0x4a, 0x82, 0x9f, 0x4e, - 0x9f, 0xd9, 0x25, 0x03, 0x5d, 0xf1, 0xdd, 0x20, 0x64, 0xe5, 0x22, 0x8f, 0x96, 0x7b, 0x9f, 0x7d, - 0x7c, 0xf9, 0x5c, 0x78, 0x69, 0x2f, 0xdf, 0x0d, 0x1a, 0x7b, 0xd2, 0xc4, 0xfc, 0xe2, 0x8b, 0xc2, - 0x22, 0xa4, 0x13, 0xda, 0xe3, 0x6f, 0x4a, 0xfe, 0x06, 0x89, 0xbc, 0x15, 0xb4, 0xe7, 0xbf, 0x41, - 0x42, 0xfe, 0xa1, 0x37, 0x48, 0x24, 0x44, 0xdf, 0x0e, 0x6b, 0x40, 0xec, 0x30, 0x69, 0xa2, 0xde, - 0xa9, 0x98, 0x44, 0xe4, 0x4f, 0x14, 0xff, 0xa4, 0xc1, 0xdc, 0x88, 0x37, 0x07, 0x47, 0x36, 0x01, - 0x79, 0x91, 0x45, 0xe1, 0x15, 0x03, 0x75, 0xf4, 0xe3, 0x05, 0xc7, 0xac, 0x37, 0x52, 0x08, 0xbe, - 0x9c, 0x62, 0xa6, 0x32, 0xd9, 0x1f, 0x34, 0x38, 0x15, 0x3d, 0x40, 0x20, 0x4a, 0x1d, 0xa6, 0xa3, - 0x5b, 0x2b, 0x21, 0x2e, 0xbe, 0x88, 0x10, 0xd1, 0xf3, 0x0f, 0x81, 0xa0, 0xed, 0x30, 0x63, 0xc8, - 0x76, 0xe2, 0xf2, 0x0b, 0x2b, 0xc5, 0x3f, 0xd8, 0x81, 0x99, 0x43, 0xda, 0xe6, 0x0b, 0x0d, 0x12, - 0x9b, 0xae, 0xdb, 0x41, 0x3f, 0x81, 0x59, 0xc7, 0x65, 0x06, 0x8f, 0x2c, 0x62, 0x19, 0xaa, 0x75, - 0x20, 0xb3, 0xf1, 0xda, 0x73, 0x75, 0xf5, 0xf7, 0x27, 0x0b, 0xa3, 0x9c, 0xc3, 0x0a, 0x54, 0x2d, - 0x35, 0xc7, 0x65, 0x15, 0x41, 0xb4, 0x25, 0xbb, 0x0b, 0x2d, 0xc8, 0x0c, 0x6f, 0x27, 0x33, 0xf6, - 0xf5, 0xc3, 0xb6, 0xcb, 0x1c, 0xba, 0xd5, 0x74, 0x33, 0xb2, 0xcf, 0xca, 0x14, 0xb7, 0xda, 0x3f, - 0xb8, 0xe5, 0xde, 0x87, 0x5c, 0x90, 0xae, 0x1a, 0xa2, 0x1f, 0x47, 0xd1, 0x0d, 0x98, 0x94, 0xad, - 0x39, 0xff, 0xb1, 0x70, 0x21, 0x6c, 0xf6, 0xe2, 0xa6, 0x69, 0x97, 0xf6, 0x22, 0x8d, 0x5a, 0xc9, - 0x34, 0xa4, 0x4f, 0xc5, 0x2c, 0xfa, 0xb5, 0x8f, 0x62, 0x30, 0xb7, 0xea, 0x3a, 0x54, 0x35, 0x7a, - 0x54, 0x54, 0xcb, 0xe6, 0xf2, 0x00, 0x5d, 0x1a, 0xd3, 0x86, 0x9a, 0x1e, 0x6d, 0x36, 0x6d, 0x43, - 0x96, 0x97, 0x58, 0xd3, 0x75, 0x5e, 0xb2, 0xd7, 0x94, 0x71, 0x3b, 0x96, 0x3a, 0xd1, 0x2e, 0x19, - 0x70, 0x5c, 0x87, 0xdc, 0x19, 0xc2, 0x8d, 0x1f, 0x0f, 0xd7, 0x21, 0x77, 0x22, 0xb8, 0x67, 0x20, - 0xa9, 0xee, 0x57, 0x09, 0x71, 0x7b, 0x50, 0x23, 0x74, 0x0d, 0xe2, 0x3c, 0x15, 0x9e, 0x38, 0x42, - 0xf2, 0xe0, 0x0c, 0x91, 0xb2, 0x56, 0x87, 0x39, 0xd5, 0x29, 0xa0, 0x1b, 0x2d, 0xa1, 0x51, 0x22, - 0x04, 0x7a, 0x97, 0x0c, 0x0e, 0x68, 0x1b, 0x4c, 0xbf, 0x50, 0xdb, 0xe0, 0xf2, 0xef, 0x34, 0x80, - 0xb0, 0x67, 0x86, 0xde, 0x80, 0xb3, 0x95, 0x8d, 0xf5, 0xaa, 0x51, 0xdf, 0xba, 0xbe, 0xd5, 0xa8, - 0x1b, 0x8d, 0xf5, 0xfa, 0xe6, 0xda, 0x6a, 0xed, 0x46, 0x6d, 0xad, 0x9a, 0x9b, 0x28, 0x64, 0xef, - 0xdd, 0x5f, 0x4c, 0x37, 0x1c, 0xda, 0x23, 0xa6, 0xdd, 0xb2, 0x89, 0x85, 0x5e, 0x83, 0x53, 0xc3, - 0xd4, 0x7c, 0xb4, 0x56, 0xcd, 0x69, 0x85, 0xe9, 0x7b, 0xf7, 0x17, 0xa7, 0xe4, 0x1b, 0x81, 0x58, - 0x68, 0x09, 0x4e, 0x8f, 0xd2, 0xd5, 0xd6, 0x6f, 0xe6, 0x62, 0x85, 0xcc, 0xbd, 0xfb, 0x8b, 0xa9, - 0xe0, 0x31, 0x81, 0x8a, 0x80, 0xa2, 0x94, 0x0a, 0x2f, 0x5e, 0x80, 0x7b, 0xf7, 0x17, 0x93, 0x32, - 0x64, 0x0a, 0x89, 0x0f, 0x7e, 0x3d, 0x3f, 0x71, 0xf9, 0x47, 0x00, 0x35, 0xa7, 0xe5, 0x61, 0x53, - 0xa4, 0x86, 0x02, 0x9c, 0xa9, 0xad, 0xdf, 0xd0, 0xaf, 0xaf, 0x6e, 0xd5, 0x36, 0xd6, 0x87, 0x8f, - 0xbd, 0x6f, 0xad, 0xba, 0xd1, 0xa8, 0xbc, 0xb7, 0x66, 0xd4, 0x6b, 0x37, 0xd7, 0x73, 0x1a, 0x3a, - 0x0b, 0x27, 0x87, 0xd6, 0xbe, 0xbb, 0xbe, 0x55, 0xbb, 0xbd, 0x96, 0x8b, 0x55, 0xae, 0x7d, 0xf2, - 0x74, 0x5e, 0x7b, 0xf4, 0x74, 0x5e, 0xfb, 0xdb, 0xd3, 0x79, 0xed, 0xc3, 0x67, 0xf3, 0x13, 0x8f, - 0x9e, 0xcd, 0x4f, 0xfc, 0xf9, 0xd9, 0xfc, 0xc4, 0x0f, 0x5e, 0x19, 0x0a, 0xc6, 0xb0, 0x1c, 0x89, - 0xbf, 0x43, 0x9a, 0x49, 0xe1, 0x35, 0xdf, 0xf8, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, 0x97, - 0xa2, 0x84, 0x86, 0x1a, 0x00, 0x00, + 0xbc, 0xf7, 0x10, 0xb8, 0x28, 0x90, 0x53, 0x91, 0x8b, 0x11, 0x03, 0xbd, 0xb4, 0xb7, 0x1c, 0x8c, + 0xde, 0x7b, 0x4b, 0x0b, 0x14, 0x30, 0x7c, 0x2a, 0x02, 0xd4, 0x2d, 0xec, 0x43, 0x82, 0xe6, 0xd2, + 0xf6, 0xd4, 0x63, 0x31, 0x8f, 0x7d, 0x50, 0x14, 0x2d, 0x4b, 0xf6, 0x21, 0x68, 0x2f, 0xc4, 0xce, + 0xcc, 0xff, 0x7f, 0x33, 0xff, 0x7b, 0xe6, 0x27, 0x5c, 0x30, 0x5d, 0xda, 0x75, 0x69, 0x99, 0x32, + 0xbc, 0x6b, 0x3b, 0xed, 0xf2, 0xde, 0x72, 0x93, 0x30, 0xbc, 0xec, 0x8f, 0x4b, 0x3d, 0xcf, 0x65, + 0x2e, 0x3a, 0x2d, 0xa9, 0x4a, 0xfe, 0xac, 0xa2, 0x2a, 0xcc, 0xe2, 0xae, 0xed, 0xb8, 0x65, 0xf1, + 0x2b, 0x49, 0x0b, 0xaf, 0x9a, 0x6e, 0x97, 0xb0, 0x66, 0x8b, 0x95, 0x71, 0xd3, 0xb4, 0xcb, 0x7b, + 0xcb, 0x65, 0x36, 0xe8, 0x11, 0xaa, 0x56, 0xcf, 0x05, 0xab, 0x62, 0x76, 0xff, 0xf2, 0xbc, 0x3a, + 0x4d, 0x13, 0x53, 0x12, 0x1c, 0xc5, 0x74, 0x6d, 0x47, 0xad, 0xcf, 0xc9, 0x75, 0x43, 0x8c, 0xca, + 0xea, 0x50, 0x72, 0xe9, 0x64, 0xdb, 0x6d, 0xbb, 0x72, 0x9e, 0x7f, 0xf9, 0x0c, 0x6d, 0xd7, 0x6d, + 0x77, 0x48, 0x59, 0x8c, 0x9a, 0xfd, 0x56, 0x19, 0x3b, 0x03, 0x7f, 0xaf, 0xfd, 0x4b, 0x56, 0xdf, + 0xc3, 0xcc, 0x76, 0xfd, 0xbd, 0x16, 0xf6, 0xaf, 0x33, 0xbb, 0x4b, 0x28, 0xc3, 0xdd, 0x9e, 0x24, + 0x28, 0x7e, 0xa2, 0xc1, 0xcc, 0x4d, 0x9b, 0x32, 0xd7, 0xb3, 0x4d, 0xdc, 0xa9, 0x39, 0x2d, 0x17, + 0xbd, 0x03, 0xc9, 0x1d, 0x82, 0x2d, 0xe2, 0xe5, 0xb5, 0x45, 0x6d, 0x29, 0x7d, 0x65, 0xae, 0xe4, + 0xcb, 0x5b, 0x92, 0x62, 0xee, 0x2d, 0x97, 0x6e, 0x0a, 0x82, 0x4a, 0xea, 0xf3, 0xc7, 0x0b, 0x13, + 0xbf, 0xfd, 0xf2, 0xb3, 0x4b, 0x9a, 0xae, 0x78, 0x50, 0x15, 0x92, 0x7b, 0xb8, 0x43, 0x09, 0xcb, + 0xc7, 0x16, 0xe3, 0x4b, 0xe9, 0x2b, 0xe7, 0x4b, 0x07, 0xab, 0xbd, 0xb4, 0x8d, 0x3b, 0xb6, 0x85, + 0x99, 0x3b, 0x8c, 0x22, 0x79, 0x57, 0x62, 0x79, 0xad, 0xf8, 0xeb, 0x18, 0x64, 0x57, 0xdd, 0x6e, + 0xd7, 0xa6, 0xd4, 0x76, 0x1d, 0x1d, 0x33, 0x42, 0xd1, 0x7b, 0x90, 0xf0, 0x30, 0x23, 0xe2, 0x64, + 0xa9, 0xca, 0x55, 0xce, 0xf8, 0xc5, 0xe3, 0x85, 0xb3, 0x72, 0x0b, 0x6a, 0xed, 0x96, 0x6c, 0xb7, + 0xdc, 0xc5, 0x6c, 0xa7, 0xf4, 0x01, 0x69, 0x63, 0x73, 0x50, 0x25, 0xe6, 0xa3, 0x07, 0x97, 0x41, + 0x9d, 0xa0, 0x4a, 0x4c, 0xb9, 0x8b, 0xc0, 0x40, 0xdf, 0x87, 0xa9, 0x2e, 0xbe, 0x63, 0x08, 0xbc, + 0xd8, 0x0b, 0xe1, 0x4d, 0x76, 0xf1, 0x1d, 0x7e, 0x3e, 0xf4, 0x21, 0x64, 0x39, 0xa4, 0xb9, 0x83, + 0x9d, 0x36, 0x91, 0xc8, 0xf1, 0x17, 0x42, 0xce, 0x74, 0xf1, 0x9d, 0x55, 0x81, 0xc6, 0xf1, 0x57, + 0x12, 0x5f, 0xdd, 0x5f, 0xd0, 0x8a, 0x7f, 0xd0, 0x00, 0x42, 0xc5, 0x20, 0x0c, 0x39, 0x33, 0x18, + 0x89, 0x4d, 0xa9, 0xb2, 0xdc, 0x9b, 0xe3, 0x74, 0xbf, 0x4f, 0xad, 0x95, 0x0c, 0x3f, 0xde, 0xc3, + 0xc7, 0x0b, 0x9a, 0xdc, 0x35, 0x6b, 0x8e, 0xa8, 0x3d, 0xdd, 0xef, 0x59, 0x98, 0x11, 0x83, 0xfb, + 0x8f, 0xd0, 0x56, 0xfa, 0x4a, 0xa1, 0x24, 0x9d, 0xab, 0xe4, 0x3b, 0x57, 0x69, 0xcb, 0x77, 0x2e, + 0x09, 0xf8, 0xf1, 0xdf, 0x7c, 0x40, 0x90, 0xdc, 0x7c, 0x5d, 0xc9, 0xf0, 0x2f, 0x0d, 0xd2, 0x55, + 0x42, 0x4d, 0xcf, 0xee, 0x71, 0x77, 0x45, 0x79, 0x98, 0xec, 0xba, 0x8e, 0xbd, 0xab, 0xbc, 0x2e, + 0xa5, 0xfb, 0x43, 0x54, 0x80, 0x29, 0xdb, 0x22, 0x0e, 0xb3, 0xd9, 0x40, 0x9a, 0x49, 0x0f, 0xc6, + 0x9c, 0xeb, 0x36, 0x69, 0x52, 0xdb, 0xd7, 0xb3, 0xee, 0x0f, 0xd1, 0x45, 0xc8, 0x51, 0x62, 0xf6, + 0x3d, 0x9b, 0x0d, 0x0c, 0xd3, 0x75, 0x18, 0x36, 0x59, 0x3e, 0x21, 0x48, 0xb2, 0xfe, 0xfc, 0xaa, + 0x9c, 0xe6, 0x20, 0x16, 0x61, 0xd8, 0xee, 0xd0, 0xfc, 0x2b, 0x12, 0x44, 0x0d, 0xd1, 0x0d, 0x98, + 0xea, 0x12, 0x86, 0x2d, 0xcc, 0x70, 0x3e, 0x29, 0x64, 0x5e, 0x1c, 0xa7, 0xd1, 0x5b, 0x8a, 0x4e, + 0x38, 0xb3, 0x90, 0x7a, 0x42, 0x0f, 0x98, 0x95, 0xcc, 0x2d, 0x98, 0xf2, 0xc9, 0xd0, 0x1b, 0x90, + 0xed, 0x79, 0x6e, 0xcb, 0xee, 0x10, 0xa3, 0x67, 0x9b, 0x46, 0xdf, 0xb3, 0x95, 0xdc, 0x19, 0x35, + 0xbd, 0x69, 0x9b, 0x0d, 0xcf, 0x46, 0x6f, 0x01, 0xa2, 0xae, 0x69, 0xe3, 0x8e, 0xb1, 0x83, 0x1d, + 0xab, 0x43, 0x38, 0x25, 0x15, 0xa1, 0x95, 0xd2, 0x73, 0x72, 0xe5, 0xa6, 0x58, 0x68, 0x78, 0x36, + 0x55, 0xfb, 0xdc, 0x9b, 0x84, 0x54, 0x10, 0x5d, 0x68, 0x15, 0x72, 0x6e, 0x8f, 0x78, 0xfc, 0xdb, + 0xc0, 0x96, 0xe5, 0x11, 0x4a, 0x55, 0xf8, 0xe4, 0x1f, 0x3d, 0xb8, 0x7c, 0x52, 0xc9, 0x73, 0x4d, + 0xae, 0xd4, 0x99, 0x67, 0x3b, 0x6d, 0x3d, 0xeb, 0x73, 0xa8, 0x69, 0xf4, 0x23, 0xee, 0x63, 0x0e, + 0x25, 0x0e, 0xed, 0x53, 0xa3, 0xd7, 0x6f, 0xee, 0x92, 0x81, 0xf2, 0x82, 0x93, 0x23, 0x5e, 0x70, + 0xcd, 0x19, 0x54, 0xf2, 0x7f, 0x0a, 0xa1, 0x4d, 0x6f, 0xd0, 0x63, 0x6e, 0x69, 0xb3, 0xdf, 0x7c, + 0x9f, 0x0c, 0xb8, 0x6f, 0x29, 0x9c, 0x4d, 0x01, 0x83, 0x4e, 0x43, 0xf2, 0x67, 0xd8, 0xee, 0x10, + 0x4b, 0x98, 0x70, 0x4a, 0x57, 0x23, 0xb4, 0x02, 0x49, 0xca, 0x30, 0xeb, 0x53, 0x61, 0xb7, 0x99, + 0x2b, 0xc5, 0x71, 0xaa, 0xaf, 0xb8, 0x8e, 0x55, 0x17, 0x94, 0xba, 0xe2, 0x40, 0xab, 0x90, 0x64, + 0xee, 0x2e, 0x71, 0x94, 0x45, 0x2b, 0xdf, 0x52, 0xe1, 0x77, 0x6a, 0x34, 0xfc, 0x6a, 0x0e, 0x8b, + 0x04, 0x5e, 0xcd, 0x61, 0xba, 0x62, 0x45, 0x3f, 0x81, 0x9c, 0x45, 0x3a, 0xa4, 0x2d, 0x34, 0x47, + 0x77, 0xb0, 0x47, 0xa8, 0xf0, 0x82, 0x54, 0x65, 0xf9, 0xc8, 0xd1, 0xac, 0x67, 0x03, 0xa8, 0xba, + 0x40, 0x42, 0x9b, 0x90, 0xb6, 0x42, 0xff, 0xcf, 0x4f, 0x0a, 0x65, 0xbe, 0x36, 0x4e, 0xc6, 0x48, + 0xa8, 0x44, 0xd3, 0x65, 0x14, 0x82, 0xbb, 0x7c, 0xdf, 0x69, 0xba, 0x8e, 0x65, 0x3b, 0x6d, 0x63, + 0x87, 0xd8, 0xed, 0x1d, 0x96, 0x9f, 0x5a, 0xd4, 0x96, 0xe2, 0x7a, 0x36, 0x98, 0xbf, 0x29, 0xa6, + 0xd1, 0x26, 0xcc, 0x84, 0xa4, 0x22, 0xa4, 0x53, 0x47, 0x0d, 0xe9, 0x4c, 0x00, 0xc0, 0x49, 0xd0, + 0x2d, 0x80, 0x30, 0x69, 0xe4, 0x41, 0xa0, 0x15, 0x0f, 0x4f, 0x3f, 0x51, 0x61, 0x22, 0x00, 0xc8, + 0x81, 0x13, 0x5d, 0xdb, 0x31, 0x28, 0xe9, 0xb4, 0x0c, 0xa5, 0x39, 0x8e, 0x9b, 0x16, 0xea, 0x7f, + 0xf7, 0x08, 0xd6, 0xfc, 0xe2, 0xc1, 0xe5, 0xac, 0x1c, 0x5d, 0xa6, 0xd6, 0xee, 0xe2, 0xdb, 0xa5, + 0xef, 0x7c, 0x57, 0x9f, 0xed, 0xda, 0x4e, 0x9d, 0x74, 0x5a, 0xd5, 0x00, 0x18, 0xbd, 0x03, 0x67, + 0x43, 0x85, 0xb8, 0x8e, 0xb1, 0xe3, 0x76, 0x2c, 0xc3, 0x23, 0x2d, 0xc3, 0x74, 0xfb, 0x0e, 0xcb, + 0x4f, 0x0b, 0x35, 0x9e, 0x09, 0x48, 0x36, 0x9c, 0x9b, 0x6e, 0xc7, 0xd2, 0x49, 0x6b, 0x95, 0x2f, + 0xa3, 0xd7, 0x20, 0xd4, 0x86, 0x61, 0x5b, 0x34, 0x9f, 0x59, 0x8c, 0x2f, 0x25, 0xf4, 0xe9, 0x60, + 0xb2, 0x66, 0xd1, 0x95, 0xa9, 0x8f, 0xee, 0x2f, 0x4c, 0x7c, 0x75, 0x7f, 0x61, 0xa2, 0x78, 0x1d, + 0xa6, 0xb7, 0x71, 0x47, 0x85, 0x16, 0xa1, 0xe8, 0x2a, 0xa4, 0xb0, 0x3f, 0xc8, 0x6b, 0x3c, 0xb4, + 0x9f, 0x11, 0x9a, 0x21, 0x69, 0xf1, 0x77, 0x1a, 0x24, 0xab, 0xdb, 0x9b, 0xd8, 0xf6, 0xd0, 0x1a, + 0xcc, 0x86, 0xbe, 0xfa, 0xbc, 0x51, 0x1e, 0xba, 0xb7, 0x1f, 0xe6, 0xeb, 0x30, 0xbb, 0xe7, 0x27, + 0x8e, 0x00, 0x46, 0xd6, 0xc6, 0xf3, 0x8f, 0x1e, 0x5c, 0x3e, 0xa7, 0x60, 0x82, 0xe4, 0xb2, 0x0f, + 0x6f, 0x6f, 0xdf, 0x7c, 0x44, 0xe6, 0xf7, 0x60, 0x52, 0x1e, 0x95, 0xa2, 0xef, 0xc1, 0x2b, 0x3d, + 0xfe, 0x21, 0x44, 0x4d, 0x5f, 0x99, 0x1f, 0xeb, 0xf3, 0x82, 0x3e, 0xea, 0x21, 0x92, 0xaf, 0xf8, + 0xcb, 0x18, 0x40, 0x75, 0x7b, 0x7b, 0xcb, 0xb3, 0x7b, 0x1d, 0xc2, 0x5e, 0x96, 0xec, 0x0d, 0x38, + 0x15, 0xca, 0x4e, 0x3d, 0xf3, 0xe8, 0xf2, 0x9f, 0x08, 0xf8, 0xeb, 0x9e, 0x79, 0x20, 0xac, 0x45, + 0x59, 0x00, 0x1b, 0x3f, 0x3a, 0x6c, 0x95, 0xb2, 0x51, 0xcd, 0xfe, 0x10, 0xd2, 0xa1, 0x32, 0x28, + 0xaa, 0xc1, 0x14, 0x53, 0xdf, 0x4a, 0xc1, 0xc5, 0xf1, 0x0a, 0xf6, 0xd9, 0xa2, 0x4a, 0x0e, 0xd8, + 0x8b, 0xff, 0xd1, 0x00, 0x22, 0x31, 0xf2, 0xcd, 0xf4, 0x31, 0x54, 0x83, 0xa4, 0x4a, 0xce, 0xf1, + 0xe3, 0x26, 0x67, 0x05, 0x10, 0x51, 0xea, 0xaf, 0x62, 0x70, 0xa2, 0xe1, 0x47, 0xef, 0x37, 0x5f, + 0x07, 0x0d, 0x98, 0x24, 0x0e, 0xf3, 0x6c, 0xa1, 0x04, 0x6e, 0xf3, 0xb7, 0xc7, 0xd9, 0xfc, 0x00, + 0xa1, 0xd6, 0x1c, 0xe6, 0x0d, 0xa2, 0x1e, 0xe0, 0x63, 0x45, 0xf4, 0xf1, 0x69, 0x1c, 0xf2, 0xe3, + 0x58, 0xd1, 0x9b, 0x90, 0x35, 0x3d, 0x22, 0x26, 0xfc, 0xba, 0xa3, 0x89, 0x84, 0x39, 0xe3, 0x4f, + 0xab, 0xb2, 0xa3, 0x03, 0xbf, 0x59, 0x72, 0xe7, 0xe2, 0xa4, 0xc7, 0xbb, 0x4a, 0xce, 0x84, 0x08, + 0xa2, 0xf0, 0x6c, 0x41, 0xd6, 0x76, 0x6c, 0xc6, 0x6f, 0x48, 0x4d, 0xdc, 0xc1, 0x8e, 0xe9, 0x5f, + 0xb9, 0x8f, 0x54, 0xf3, 0x67, 0x14, 0x46, 0x45, 0x42, 0xa0, 0x35, 0x98, 0xf4, 0xd1, 0x12, 0x47, + 0x47, 0xf3, 0x79, 0xd1, 0xeb, 0x30, 0x1d, 0x2d, 0x0c, 0xe2, 0x36, 0x92, 0xa8, 0xc4, 0xf2, 0x9a, + 0x9e, 0x8e, 0xd4, 0x86, 0xc3, 0xaa, 0x4f, 0xf2, 0x99, 0xd5, 0x47, 0x5d, 0xfa, 0x3e, 0x8d, 0xc3, + 0xac, 0x4e, 0xac, 0xff, 0x7d, 0xd3, 0x6c, 0x02, 0xc8, 0x70, 0xe5, 0xd9, 0x54, 0x59, 0xe7, 0x18, + 0x31, 0x9f, 0x92, 0x20, 0x55, 0xca, 0xd0, 0xf9, 0x83, 0xac, 0xf4, 0xf2, 0x2d, 0xf4, 0xd7, 0x18, + 0x4c, 0x47, 0x2d, 0xf4, 0x7f, 0x59, 0xb8, 0xd0, 0x7a, 0x98, 0xaa, 0x12, 0x22, 0x55, 0x5d, 0x1c, + 0x97, 0xaa, 0x46, 0xbc, 0xf9, 0x90, 0x1c, 0xf5, 0x75, 0x1c, 0x92, 0x9b, 0xd8, 0xc3, 0x5d, 0x8a, + 0x36, 0x46, 0xee, 0xb7, 0x7e, 0x2b, 0x63, 0xbf, 0x33, 0x57, 0x55, 0xbf, 0x44, 0xfa, 0xf2, 0x27, + 0xe3, 0xae, 0xb7, 0xaf, 0xc3, 0x0c, 0x7f, 0xd8, 0x07, 0x02, 0x49, 0xe5, 0x66, 0xc4, 0xfb, 0x3c, + 0x90, 0x9e, 0xa2, 0x05, 0x48, 0x73, 0xb2, 0x30, 0x17, 0x73, 0x1a, 0xe8, 0xe2, 0x3b, 0x6b, 0x72, + 0x06, 0x2d, 0x03, 0xda, 0x09, 0xba, 0x2d, 0x46, 0xa8, 0x08, 0x6d, 0x29, 0x23, 0xd2, 0xc2, 0x6c, + 0xb8, 0xea, 0xb3, 0x9c, 0x03, 0xe0, 0x27, 0x31, 0x2c, 0xe2, 0xb8, 0x5d, 0xf5, 0x42, 0x4d, 0xf1, + 0x99, 0x2a, 0x9f, 0x40, 0xbf, 0xd0, 0xe4, 0x55, 0x79, 0x5f, 0x0b, 0x40, 0xbd, 0x54, 0xb6, 0x9e, + 0x23, 0x30, 0xfe, 0xfd, 0x78, 0xa1, 0x30, 0xc0, 0xdd, 0xce, 0x4a, 0xf1, 0x00, 0x9c, 0xe2, 0x41, + 0x5d, 0x09, 0x7e, 0x81, 0x1e, 0x6e, 0x21, 0xa0, 0x1a, 0xe4, 0x76, 0xc9, 0xc0, 0xf0, 0x5c, 0x26, + 0x93, 0x4d, 0x8b, 0x10, 0xf5, 0xa6, 0x99, 0xf3, 0xed, 0xdb, 0xc4, 0x94, 0x44, 0x9e, 0x00, 0xb6, + 0x53, 0x49, 0xf0, 0xd3, 0xe9, 0x33, 0xbb, 0x64, 0xa0, 0x2b, 0xbe, 0xeb, 0x84, 0xac, 0x5c, 0xe0, + 0xd1, 0x72, 0xf7, 0xcb, 0xcf, 0x2e, 0x9d, 0x0d, 0x2f, 0xee, 0xe5, 0x3b, 0x41, 0x73, 0x4f, 0x9a, + 0x98, 0x5f, 0x7e, 0x51, 0x58, 0x88, 0x74, 0x42, 0x7b, 0xfc, 0x5d, 0xc9, 0xdf, 0x21, 0x91, 0xf7, + 0x82, 0xf6, 0xec, 0x77, 0x48, 0xc8, 0x3f, 0xf4, 0x0e, 0x89, 0x84, 0xe8, 0xbb, 0x61, 0x1d, 0x88, + 0x1d, 0x26, 0x4d, 0xd4, 0x3b, 0x15, 0x93, 0x88, 0xfc, 0x89, 0xe2, 0x9f, 0x35, 0x98, 0x1b, 0xf1, + 0xe6, 0xe0, 0xc8, 0x26, 0x20, 0x2f, 0xb2, 0x28, 0xbc, 0x62, 0xa0, 0x8e, 0x7e, 0xbc, 0xe0, 0x98, + 0xf5, 0x46, 0x0a, 0xc1, 0xcb, 0x29, 0x68, 0x2a, 0x93, 0xfd, 0x51, 0x83, 0x93, 0xd1, 0x03, 0x04, + 0xa2, 0xd4, 0x61, 0x3a, 0xba, 0xb5, 0x12, 0xe2, 0xc2, 0xf3, 0x08, 0x11, 0x3d, 0xff, 0x10, 0x08, + 0xda, 0x0e, 0x33, 0x86, 0x6c, 0x29, 0x2e, 0x3f, 0xb7, 0x52, 0xfc, 0x83, 0x1d, 0x98, 0x39, 0xa4, + 0x6d, 0xbe, 0xd6, 0x20, 0xb1, 0xe9, 0xba, 0x1d, 0xf4, 0x73, 0x98, 0x75, 0x5c, 0x66, 0xf0, 0xc8, + 0x22, 0x96, 0xa1, 0xda, 0x07, 0x32, 0x1b, 0xaf, 0x3d, 0x53, 0x57, 0xff, 0x78, 0xbc, 0x30, 0xca, + 0x39, 0xac, 0x40, 0xd5, 0x56, 0x73, 0x5c, 0x56, 0x11, 0x44, 0x5b, 0xb2, 0xc3, 0xd0, 0x82, 0xcc, + 0xf0, 0x76, 0x32, 0x63, 0x5f, 0x3b, 0x6c, 0xbb, 0xcc, 0xa1, 0x5b, 0x4d, 0x37, 0x23, 0xfb, 0xac, + 0x4c, 0x71, 0xab, 0xfd, 0x93, 0x5b, 0xee, 0x43, 0xc8, 0x05, 0xe9, 0xaa, 0x21, 0x7a, 0x72, 0x14, + 0x5d, 0x87, 0x49, 0xd9, 0x9e, 0xf3, 0x1f, 0x0c, 0xe7, 0xc3, 0x86, 0x2f, 0x6e, 0x9a, 0x76, 0x69, + 0x2f, 0xd2, 0xac, 0x95, 0x4c, 0x43, 0xfa, 0x54, 0xcc, 0xa2, 0x67, 0xfb, 0x30, 0x06, 0x73, 0xab, + 0xae, 0x43, 0x55, 0xb3, 0x47, 0x45, 0xb5, 0x6c, 0x30, 0x0f, 0xd0, 0xc5, 0x31, 0xad, 0xa8, 0xe9, + 0xd1, 0x86, 0xd3, 0x36, 0x64, 0x79, 0x89, 0x35, 0x5d, 0xe7, 0x05, 0xfb, 0x4d, 0x19, 0xb7, 0x63, + 0xa9, 0x13, 0xed, 0x92, 0x01, 0xc7, 0x75, 0xc8, 0xed, 0x21, 0xdc, 0xf8, 0xf1, 0x70, 0x1d, 0x72, + 0x3b, 0x82, 0x7b, 0x1a, 0x92, 0xea, 0x7e, 0x95, 0x10, 0xb7, 0x07, 0x35, 0x42, 0x57, 0x21, 0xce, + 0x53, 0xe1, 0x2b, 0x47, 0x48, 0x1e, 0x9c, 0x21, 0x52, 0xd6, 0xea, 0x30, 0xa7, 0xba, 0x05, 0x74, + 0xa3, 0x25, 0x34, 0x4a, 0x84, 0x40, 0xef, 0x93, 0xc1, 0x01, 0xad, 0x83, 0xe9, 0xe7, 0x6a, 0x1d, + 0x5c, 0xfa, 0xbd, 0x06, 0x10, 0xf6, 0xcd, 0xd0, 0x5b, 0x70, 0xa6, 0xb2, 0xb1, 0x5e, 0x35, 0xea, + 0x5b, 0xd7, 0xb6, 0x1a, 0x75, 0xa3, 0xb1, 0x5e, 0xdf, 0x5c, 0x5b, 0xad, 0x5d, 0xaf, 0xad, 0x55, + 0x73, 0x13, 0x85, 0xec, 0xdd, 0x7b, 0x8b, 0xe9, 0x86, 0x43, 0x7b, 0xc4, 0xb4, 0x5b, 0x36, 0xb1, + 0xd0, 0x1b, 0x70, 0x72, 0x98, 0x9a, 0x8f, 0xd6, 0xaa, 0x39, 0xad, 0x30, 0x7d, 0xf7, 0xde, 0xe2, + 0x94, 0x7c, 0x27, 0x10, 0x0b, 0x2d, 0xc1, 0xa9, 0x51, 0xba, 0xda, 0xfa, 0x8d, 0x5c, 0xac, 0x90, + 0xb9, 0x7b, 0x6f, 0x31, 0x15, 0x3c, 0x28, 0x50, 0x11, 0x50, 0x94, 0x52, 0xe1, 0xc5, 0x0b, 0x70, + 0xf7, 0xde, 0x62, 0x52, 0x86, 0x4c, 0x21, 0xf1, 0xd1, 0x6f, 0xe6, 0x27, 0x2e, 0xfd, 0x14, 0xa0, + 0xe6, 0xb4, 0x3c, 0x6c, 0x8a, 0xd4, 0x50, 0x80, 0xd3, 0xb5, 0xf5, 0xeb, 0xfa, 0xb5, 0xd5, 0xad, + 0xda, 0xc6, 0xfa, 0xf0, 0xb1, 0xf7, 0xad, 0x55, 0x37, 0x1a, 0x95, 0x0f, 0xd6, 0x8c, 0x7a, 0xed, + 0xc6, 0x7a, 0x4e, 0x43, 0x67, 0xe0, 0xc4, 0xd0, 0xda, 0x0f, 0xd6, 0xb7, 0x6a, 0xb7, 0xd6, 0x72, + 0xb1, 0xca, 0xd5, 0xcf, 0x9f, 0xcc, 0x6b, 0x0f, 0x9f, 0xcc, 0x6b, 0x7f, 0x7f, 0x32, 0xaf, 0x7d, + 0xfc, 0x74, 0x7e, 0xe2, 0xe1, 0xd3, 0xf9, 0x89, 0xbf, 0x3c, 0x9d, 0x9f, 0xf8, 0xf1, 0xab, 0x43, + 0xc1, 0x18, 0x96, 0x23, 0xf1, 0x97, 0x48, 0x33, 0x29, 0xbc, 0xe6, 0xdb, 0xff, 0x0d, 0x00, 0x00, + 0xff, 0xff, 0x54, 0xe6, 0x7d, 0x82, 0x8a, 0x1a, 0x00, 0x00, } func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1593,750 +1594,750 @@ func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_go func StakingDescription() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 11880 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x94, 0x24, 0xd7, - 0x59, 0xd8, 0x56, 0x77, 0x4f, 0x4f, 0xf7, 0xd7, 0xaf, 0x9a, 0x3b, 0xb3, 0xbb, 0xb3, 0xb3, 0xd2, - 0xce, 0x6c, 0xad, 0xa4, 0x5d, 0xad, 0xa4, 0x59, 0xed, 0x4a, 0xbb, 0x92, 0x5a, 0x96, 0x44, 0xf7, - 0x4c, 0xef, 0x6c, 0xaf, 0xe6, 0xe5, 0xea, 0x9e, 0xb5, 0x24, 0x1e, 0x45, 0x4d, 0xf5, 0x9d, 0x99, - 0xd2, 0x76, 0x57, 0xb5, 0xab, 0xaa, 0x77, 0x77, 0x94, 0x73, 0x72, 0x4c, 0xc0, 0x8e, 0x11, 0x8f, - 0x98, 0x40, 0xc0, 0xd8, 0x5e, 0x23, 0x20, 0x60, 0x1b, 0x02, 0x81, 0xd8, 0x10, 0x1c, 0x4e, 0x1e, - 0xe4, 0x24, 0x04, 0xc8, 0x09, 0x71, 0xf8, 0x11, 0x38, 0x9c, 0x83, 0x02, 0x36, 0xe7, 0xe0, 0x60, - 0x43, 0x80, 0x18, 0x0e, 0x27, 0x3e, 0xc9, 0xc9, 0xb9, 0xaf, 0x7a, 0x74, 0x57, 0x4f, 0xf7, 0xac, - 0x24, 0x43, 0x20, 0x7f, 0x76, 0xa7, 0xee, 0xfd, 0xbe, 0xef, 0xde, 0xfb, 0xdd, 0xef, 0x7e, 0xaf, - 0xfb, 0x68, 0xf8, 0xbd, 0xab, 0xb0, 0xb0, 0x6b, 0xdb, 0xbb, 0x6d, 0x7c, 0xa1, 0xeb, 0xd8, 0x9e, - 0xbd, 0xdd, 0xdb, 0xb9, 0xd0, 0xc2, 0xae, 0xe1, 0x98, 0x5d, 0xcf, 0x76, 0x16, 0x69, 0x19, 0x2a, - 0x31, 0x88, 0x45, 0x01, 0xa1, 0xac, 0xc1, 0xd4, 0x55, 0xb3, 0x8d, 0x97, 0x7d, 0xc0, 0x06, 0xf6, - 0xd0, 0xd3, 0x90, 0xda, 0x31, 0xdb, 0x78, 0x56, 0x5a, 0x48, 0x9e, 0xcb, 0x5d, 0x7a, 0x60, 0xb1, - 0x0f, 0x69, 0x31, 0x8a, 0xb1, 0x49, 0x8a, 0x55, 0x8a, 0xa1, 0xfc, 0x9f, 0x14, 0x4c, 0xc7, 0xd4, - 0x22, 0x04, 0x29, 0x4b, 0xef, 0x10, 0x8a, 0xd2, 0xb9, 0xac, 0x4a, 0xff, 0x46, 0xb3, 0x30, 0xd9, - 0xd5, 0x8d, 0x9b, 0xfa, 0x2e, 0x9e, 0x4d, 0xd0, 0x62, 0xf1, 0x89, 0x4e, 0x01, 0xb4, 0x70, 0x17, - 0x5b, 0x2d, 0x6c, 0x19, 0xfb, 0xb3, 0xc9, 0x85, 0xe4, 0xb9, 0xac, 0x1a, 0x2a, 0x41, 0x8f, 0xc0, - 0x54, 0xb7, 0xb7, 0xdd, 0x36, 0x0d, 0x2d, 0x04, 0x06, 0x0b, 0xc9, 0x73, 0x13, 0xaa, 0xcc, 0x2a, - 0x96, 0x03, 0xe0, 0xb3, 0x50, 0xba, 0x8d, 0xf5, 0x9b, 0x61, 0xd0, 0x1c, 0x05, 0x2d, 0x92, 0xe2, - 0x10, 0xe0, 0x12, 0xe4, 0x3b, 0xd8, 0x75, 0xf5, 0x5d, 0xac, 0x79, 0xfb, 0x5d, 0x3c, 0x9b, 0xa2, - 0xa3, 0x5f, 0x18, 0x18, 0x7d, 0xff, 0xc8, 0x73, 0x1c, 0xab, 0xb9, 0xdf, 0xc5, 0xa8, 0x02, 0x59, - 0x6c, 0xf5, 0x3a, 0x8c, 0xc2, 0xc4, 0x10, 0xfe, 0xd5, 0xac, 0x5e, 0xa7, 0x9f, 0x4a, 0x86, 0xa0, - 0x71, 0x12, 0x93, 0x2e, 0x76, 0x6e, 0x99, 0x06, 0x9e, 0x4d, 0x53, 0x02, 0x67, 0x07, 0x08, 0x34, - 0x58, 0x7d, 0x3f, 0x0d, 0x81, 0x87, 0x96, 0x20, 0x8b, 0xef, 0x78, 0xd8, 0x72, 0x4d, 0xdb, 0x9a, - 0x9d, 0xa4, 0x44, 0x1e, 0x8c, 0x99, 0x45, 0xdc, 0x6e, 0xf5, 0x93, 0x08, 0xf0, 0xd0, 0x15, 0x98, - 0xb4, 0xbb, 0x9e, 0x69, 0x5b, 0xee, 0x6c, 0x66, 0x41, 0x3a, 0x97, 0xbb, 0x74, 0x5f, 0xac, 0x20, - 0x6c, 0x30, 0x18, 0x55, 0x00, 0xa3, 0x3a, 0xc8, 0xae, 0xdd, 0x73, 0x0c, 0xac, 0x19, 0x76, 0x0b, - 0x6b, 0xa6, 0xb5, 0x63, 0xcf, 0x66, 0x29, 0x81, 0xf9, 0xc1, 0x81, 0x50, 0xc0, 0x25, 0xbb, 0x85, - 0xeb, 0xd6, 0x8e, 0xad, 0x16, 0xdd, 0xc8, 0x37, 0x3a, 0x06, 0x69, 0x77, 0xdf, 0xf2, 0xf4, 0x3b, - 0xb3, 0x79, 0x2a, 0x21, 0xfc, 0x8b, 0x88, 0x0e, 0x6e, 0x99, 0xa4, 0xb9, 0xd9, 0x02, 0x13, 0x1d, - 0xfe, 0xa9, 0x7c, 0x36, 0x0d, 0xa5, 0x71, 0x84, 0xef, 0x59, 0x98, 0xd8, 0x21, 0xe3, 0x9f, 0x4d, - 0x1c, 0x86, 0x3b, 0x0c, 0x27, 0xca, 0xde, 0xf4, 0x3d, 0xb2, 0xb7, 0x02, 0x39, 0x0b, 0xbb, 0x1e, - 0x6e, 0x31, 0x59, 0x49, 0x8e, 0x29, 0x6d, 0xc0, 0x90, 0x06, 0x85, 0x2d, 0x75, 0x4f, 0xc2, 0xf6, - 0x12, 0x94, 0xfc, 0x2e, 0x69, 0x8e, 0x6e, 0xed, 0x0a, 0xa9, 0xbd, 0x30, 0xaa, 0x27, 0x8b, 0x35, - 0x81, 0xa7, 0x12, 0x34, 0xb5, 0x88, 0x23, 0xdf, 0x68, 0x19, 0xc0, 0xb6, 0xb0, 0xbd, 0xa3, 0xb5, - 0xb0, 0xd1, 0x9e, 0xcd, 0x0c, 0xe1, 0xd2, 0x06, 0x01, 0x19, 0xe0, 0x92, 0xcd, 0x4a, 0x8d, 0x36, - 0x7a, 0x26, 0x10, 0xc2, 0xc9, 0x21, 0x32, 0xb4, 0xc6, 0x96, 0xdf, 0x80, 0x1c, 0x6e, 0x41, 0xd1, - 0xc1, 0x64, 0x45, 0xe0, 0x16, 0x1f, 0x59, 0x96, 0x76, 0x62, 0x71, 0xe4, 0xc8, 0x54, 0x8e, 0xc6, - 0x06, 0x56, 0x70, 0xc2, 0x9f, 0xe8, 0x0c, 0xf8, 0x05, 0x1a, 0x15, 0x2b, 0xa0, 0xfa, 0x29, 0x2f, - 0x0a, 0xd7, 0xf5, 0x0e, 0x9e, 0x7b, 0x0d, 0x8a, 0x51, 0xf6, 0xa0, 0x19, 0x98, 0x70, 0x3d, 0xdd, - 0xf1, 0xa8, 0x14, 0x4e, 0xa8, 0xec, 0x03, 0xc9, 0x90, 0xc4, 0x56, 0x8b, 0xea, 0xbf, 0x09, 0x95, - 0xfc, 0x89, 0xbe, 0x2e, 0x18, 0x70, 0x92, 0x0e, 0xf8, 0xa1, 0xc1, 0x19, 0x8d, 0x50, 0xee, 0x1f, - 0xf7, 0xdc, 0x53, 0x50, 0x88, 0x0c, 0x60, 0xdc, 0xa6, 0x95, 0x9f, 0x4a, 0xc1, 0xd1, 0x58, 0xda, - 0xe8, 0x25, 0x98, 0xe9, 0x59, 0xa6, 0xe5, 0x61, 0xa7, 0xeb, 0x60, 0x22, 0xb2, 0xac, 0xad, 0xd9, - 0x3f, 0x98, 0x1c, 0x22, 0x74, 0x5b, 0x61, 0x68, 0x46, 0x45, 0x9d, 0xee, 0x0d, 0x16, 0xa2, 0x97, - 0x21, 0x47, 0xe4, 0x43, 0x77, 0x74, 0x4a, 0x90, 0xad, 0xc6, 0x4b, 0xe3, 0x0d, 0x79, 0x71, 0x39, - 0xc0, 0xac, 0x26, 0x3f, 0x28, 0x25, 0xd4, 0x30, 0x2d, 0xb4, 0x07, 0xf9, 0x5b, 0xd8, 0x31, 0x77, - 0x4c, 0x83, 0xd1, 0x26, 0xec, 0x2c, 0x5e, 0x7a, 0x7a, 0x4c, 0xda, 0x37, 0x42, 0xa8, 0x0d, 0x4f, - 0xf7, 0x70, 0x19, 0xb6, 0xd6, 0x6f, 0xd4, 0xd4, 0xfa, 0xd5, 0x7a, 0x6d, 0x59, 0x8d, 0x50, 0x9e, - 0xfb, 0xb4, 0x04, 0xb9, 0x50, 0x5f, 0x88, 0xda, 0xb2, 0x7a, 0x9d, 0x6d, 0xec, 0x70, 0x8e, 0xf3, - 0x2f, 0x74, 0x12, 0xb2, 0x3b, 0xbd, 0x76, 0x9b, 0x89, 0x0d, 0xb3, 0x79, 0x19, 0x52, 0x40, 0x44, - 0x86, 0x68, 0x29, 0xae, 0x08, 0xa8, 0x96, 0x22, 0x7f, 0xa3, 0x33, 0x90, 0x33, 0x5d, 0xcd, 0xc1, - 0x5d, 0xac, 0x7b, 0xb8, 0x35, 0x9b, 0x5a, 0x90, 0xce, 0x65, 0xaa, 0x89, 0x59, 0x49, 0x05, 0xd3, - 0x55, 0x79, 0x29, 0x9a, 0x83, 0x8c, 0x90, 0xbd, 0xd9, 0x09, 0x02, 0xa1, 0xfa, 0xdf, 0xac, 0x8e, - 0x63, 0xa7, 0x45, 0x1d, 0xfb, 0x56, 0x9e, 0x84, 0xa9, 0x81, 0x41, 0xa2, 0x12, 0xe4, 0x96, 0x6b, - 0x4b, 0xab, 0x15, 0xb5, 0xd2, 0xac, 0x6f, 0xac, 0xcb, 0x47, 0x50, 0x11, 0x42, 0xe3, 0x96, 0xa5, - 0xf3, 0xd9, 0xcc, 0x17, 0x27, 0xe5, 0xf7, 0xbd, 0xef, 0x7d, 0xef, 0x4b, 0x28, 0xbf, 0x94, 0x86, - 0x99, 0x38, 0x2d, 0x17, 0xab, 0x70, 0x03, 0x9e, 0x24, 0x23, 0x3c, 0xa9, 0xc0, 0x44, 0x5b, 0xdf, - 0xc6, 0x6d, 0x3a, 0xb8, 0xe2, 0xa5, 0x47, 0xc6, 0xd2, 0xa3, 0x8b, 0xab, 0x04, 0x45, 0x65, 0x98, - 0xe8, 0x79, 0xce, 0xb9, 0x09, 0x4a, 0xe1, 0xfc, 0x78, 0x14, 0x88, 0xf6, 0xe3, 0x5c, 0x3e, 0x09, - 0x59, 0xf2, 0x3f, 0x9b, 0x96, 0x34, 0x9b, 0x16, 0x52, 0x40, 0xa7, 0x65, 0x0e, 0x32, 0x54, 0xb1, - 0xb5, 0xb0, 0x3f, 0x65, 0xe2, 0x9b, 0xa8, 0x82, 0x16, 0xde, 0xd1, 0x7b, 0x6d, 0x4f, 0xbb, 0xa5, - 0xb7, 0x7b, 0x98, 0xaa, 0xa8, 0xac, 0x9a, 0xe7, 0x85, 0x37, 0x48, 0x19, 0x9a, 0x87, 0x1c, 0xd3, - 0x83, 0xa6, 0xd5, 0xc2, 0x77, 0xa8, 0x25, 0x9c, 0x50, 0x99, 0x6a, 0xac, 0x93, 0x12, 0xd2, 0xfc, - 0xab, 0xae, 0x6d, 0x09, 0x65, 0x42, 0x9b, 0x20, 0x05, 0xb4, 0xf9, 0xa7, 0xfa, 0x8d, 0xf0, 0xfd, - 0xf1, 0xc3, 0x1b, 0xd0, 0x7e, 0x67, 0xa1, 0x44, 0x21, 0x9e, 0xe0, 0x6b, 0x55, 0x6f, 0xcf, 0x4e, - 0x51, 0x01, 0x28, 0xb2, 0xe2, 0x0d, 0x5e, 0xaa, 0xfc, 0x7c, 0x02, 0x52, 0xd4, 0x14, 0x94, 0x20, - 0xd7, 0x7c, 0x79, 0xb3, 0xa6, 0x2d, 0x6f, 0x6c, 0x55, 0x57, 0x6b, 0xb2, 0x44, 0xa6, 0x9e, 0x16, - 0x5c, 0x5d, 0xdd, 0xa8, 0x34, 0xe5, 0x84, 0xff, 0x5d, 0x5f, 0x6f, 0x5e, 0x79, 0x52, 0x4e, 0xfa, - 0x08, 0x5b, 0xac, 0x20, 0x15, 0x06, 0x78, 0xe2, 0x92, 0x3c, 0x81, 0x64, 0xc8, 0x33, 0x02, 0xf5, - 0x97, 0x6a, 0xcb, 0x57, 0x9e, 0x94, 0xd3, 0xd1, 0x92, 0x27, 0x2e, 0xc9, 0x93, 0xa8, 0x00, 0x59, - 0x5a, 0x52, 0xdd, 0xd8, 0x58, 0x95, 0x33, 0x3e, 0xcd, 0x46, 0x53, 0xad, 0xaf, 0xaf, 0xc8, 0x59, - 0x9f, 0xe6, 0x8a, 0xba, 0xb1, 0xb5, 0x29, 0x83, 0x4f, 0x61, 0xad, 0xd6, 0x68, 0x54, 0x56, 0x6a, - 0x72, 0xce, 0x87, 0xa8, 0xbe, 0xdc, 0xac, 0x35, 0xe4, 0x7c, 0xa4, 0x5b, 0x4f, 0x5c, 0x92, 0x0b, - 0x7e, 0x13, 0xb5, 0xf5, 0xad, 0x35, 0xb9, 0x88, 0xa6, 0xa0, 0xc0, 0x9a, 0x10, 0x9d, 0x28, 0xf5, - 0x15, 0x5d, 0x79, 0x52, 0x96, 0x83, 0x8e, 0x30, 0x2a, 0x53, 0x91, 0x82, 0x2b, 0x4f, 0xca, 0x48, - 0x59, 0x82, 0x09, 0x2a, 0x86, 0x08, 0x41, 0x71, 0xb5, 0x52, 0xad, 0xad, 0x6a, 0x1b, 0x9b, 0x64, - 0xd1, 0x54, 0x56, 0x65, 0x29, 0x28, 0x53, 0x6b, 0xef, 0xde, 0xaa, 0xab, 0xb5, 0x65, 0x39, 0x11, - 0x2e, 0xdb, 0xac, 0x55, 0x9a, 0xb5, 0x65, 0x39, 0xa9, 0x18, 0x30, 0x13, 0x67, 0x02, 0x63, 0x97, - 0x50, 0x48, 0x16, 0x12, 0x43, 0x64, 0x81, 0xd2, 0xea, 0x97, 0x05, 0xe5, 0x0b, 0x09, 0x98, 0x8e, - 0x71, 0x03, 0x62, 0x1b, 0x79, 0x01, 0x26, 0x98, 0x2c, 0x33, 0x55, 0xfc, 0x70, 0xac, 0x3f, 0x41, - 0x25, 0x7b, 0xc0, 0x39, 0xa2, 0x78, 0x61, 0xb7, 0x31, 0x39, 0xc4, 0x6d, 0x24, 0x24, 0x06, 0x04, - 0xf6, 0x1b, 0x07, 0xcc, 0x35, 0xf3, 0x68, 0xae, 0x8c, 0xe3, 0xd1, 0xd0, 0xb2, 0xc3, 0x99, 0xed, - 0x89, 0x18, 0xb3, 0xfd, 0x2c, 0x4c, 0x0d, 0x10, 0x1a, 0xdb, 0x7c, 0x7e, 0xab, 0x04, 0xb3, 0xc3, - 0x98, 0x33, 0x42, 0x25, 0x26, 0x22, 0x2a, 0xf1, 0xd9, 0x7e, 0x0e, 0x9e, 0x1e, 0x3e, 0x09, 0x03, - 0x73, 0xfd, 0x09, 0x09, 0x8e, 0xc5, 0x87, 0x07, 0xb1, 0x7d, 0x78, 0x1e, 0xd2, 0x1d, 0xec, 0xed, - 0xd9, 0xc2, 0x11, 0x7e, 0x28, 0xc6, 0xbd, 0x22, 0xd5, 0xfd, 0x93, 0xcd, 0xb1, 0xc2, 0xfe, 0x59, - 0x72, 0x98, 0x8f, 0xcf, 0x7a, 0x33, 0xd0, 0xd3, 0x6f, 0x4f, 0xc0, 0xd1, 0x58, 0xe2, 0xb1, 0x1d, - 0xbd, 0x1f, 0xc0, 0xb4, 0xba, 0x3d, 0x8f, 0x39, 0xbb, 0x4c, 0x13, 0x67, 0x69, 0x09, 0x55, 0x5e, - 0x44, 0xcb, 0xf6, 0x3c, 0xbf, 0x9e, 0x19, 0x51, 0x60, 0x45, 0x14, 0xe0, 0xe9, 0xa0, 0xa3, 0x29, - 0xda, 0xd1, 0x53, 0x43, 0x46, 0x3a, 0x20, 0x98, 0x8f, 0x83, 0x6c, 0xb4, 0x4d, 0x6c, 0x79, 0x9a, - 0xeb, 0x39, 0x58, 0xef, 0x98, 0xd6, 0x2e, 0xb3, 0xb3, 0xe5, 0x89, 0x1d, 0xbd, 0xed, 0x62, 0xb5, - 0xc4, 0xaa, 0x1b, 0xa2, 0x96, 0x60, 0x50, 0x01, 0x72, 0x42, 0x18, 0xe9, 0x08, 0x06, 0xab, 0xf6, - 0x31, 0x94, 0xef, 0xc9, 0x42, 0x2e, 0x14, 0x4c, 0xa1, 0xd3, 0x90, 0x7f, 0x55, 0xbf, 0xa5, 0x6b, - 0x22, 0x40, 0x66, 0x9c, 0xc8, 0x91, 0xb2, 0x4d, 0x1e, 0x24, 0x3f, 0x0e, 0x33, 0x14, 0xc4, 0xee, - 0x79, 0xd8, 0xd1, 0x8c, 0xb6, 0xee, 0xba, 0x94, 0x69, 0x19, 0x0a, 0x8a, 0x48, 0xdd, 0x06, 0xa9, - 0x5a, 0x12, 0x35, 0xe8, 0x32, 0x4c, 0x53, 0x8c, 0x4e, 0xaf, 0xed, 0x99, 0xdd, 0x36, 0xd6, 0x48, - 0xc8, 0xee, 0x52, 0x93, 0xe3, 0xf7, 0x6c, 0x8a, 0x40, 0xac, 0x71, 0x00, 0xd2, 0x23, 0x17, 0x2d, - 0xc3, 0xfd, 0x14, 0x6d, 0x17, 0x5b, 0xd8, 0xd1, 0x3d, 0xac, 0xe1, 0xf7, 0xf6, 0xf4, 0xb6, 0xab, - 0xe9, 0x56, 0x4b, 0xdb, 0xd3, 0xdd, 0xbd, 0xd9, 0x19, 0xdf, 0x2d, 0x39, 0x41, 0x00, 0x57, 0x38, - 0x5c, 0x8d, 0x82, 0x55, 0xac, 0xd6, 0x35, 0xdd, 0xdd, 0x43, 0x65, 0x38, 0x46, 0xa9, 0xb8, 0x9e, - 0x63, 0x5a, 0xbb, 0x9a, 0xb1, 0x87, 0x8d, 0x9b, 0x5a, 0xcf, 0xdb, 0x79, 0x7a, 0xf6, 0x64, 0xb8, - 0x7d, 0xda, 0xc3, 0x06, 0x85, 0x59, 0x22, 0x20, 0x5b, 0xde, 0xce, 0xd3, 0xa8, 0x01, 0x79, 0x32, - 0x19, 0x1d, 0xf3, 0x35, 0xac, 0xed, 0xd8, 0x0e, 0xb5, 0xa1, 0xc5, 0x18, 0xd5, 0x14, 0xe2, 0xe0, - 0xe2, 0x06, 0x47, 0x58, 0xb3, 0x5b, 0xb8, 0x3c, 0xd1, 0xd8, 0xac, 0xd5, 0x96, 0xd5, 0x9c, 0xa0, - 0x72, 0xd5, 0x76, 0x88, 0x40, 0xed, 0xda, 0x3e, 0x83, 0x73, 0x4c, 0xa0, 0x76, 0x6d, 0xc1, 0xde, - 0xcb, 0x30, 0x6d, 0x18, 0x6c, 0xcc, 0xa6, 0xa1, 0xf1, 0xc0, 0xda, 0x9d, 0x95, 0x23, 0xcc, 0x32, - 0x8c, 0x15, 0x06, 0xc0, 0x65, 0xdc, 0x45, 0xcf, 0xc0, 0xd1, 0x80, 0x59, 0x61, 0xc4, 0xa9, 0x81, - 0x51, 0xf6, 0xa3, 0x5e, 0x86, 0xe9, 0xee, 0xfe, 0x20, 0x22, 0x8a, 0xb4, 0xd8, 0xdd, 0xef, 0x47, - 0x7b, 0x0a, 0x66, 0xba, 0x7b, 0xdd, 0x41, 0xbc, 0xf3, 0x61, 0x3c, 0xd4, 0xdd, 0xeb, 0xf6, 0x23, - 0x3e, 0x48, 0xb3, 0x2c, 0x0e, 0x36, 0xa8, 0x77, 0x78, 0x3c, 0x0c, 0x1e, 0xaa, 0x40, 0x8b, 0x20, - 0x1b, 0x86, 0x86, 0x2d, 0x7d, 0xbb, 0x8d, 0x35, 0xdd, 0xc1, 0x96, 0xee, 0xce, 0xce, 0x53, 0xe0, - 0x94, 0xe7, 0xf4, 0xb0, 0x5a, 0x34, 0x8c, 0x1a, 0xad, 0xac, 0xd0, 0x3a, 0x74, 0x1e, 0xa6, 0xec, - 0xed, 0x57, 0x0d, 0x26, 0x91, 0x5a, 0xd7, 0xc1, 0x3b, 0xe6, 0x9d, 0xd9, 0x07, 0x28, 0x7b, 0x4b, - 0xa4, 0x82, 0xca, 0xe3, 0x26, 0x2d, 0x46, 0x0f, 0x83, 0x6c, 0xb8, 0x7b, 0xba, 0xd3, 0xa5, 0x2a, - 0xd9, 0xed, 0xea, 0x06, 0x9e, 0x7d, 0x90, 0x81, 0xb2, 0xf2, 0x75, 0x51, 0x4c, 0x56, 0x84, 0x7b, - 0xdb, 0xdc, 0xf1, 0x04, 0xc5, 0xb3, 0x6c, 0x45, 0xd0, 0x32, 0x4e, 0xed, 0x1c, 0xc8, 0x84, 0x13, - 0x91, 0x86, 0xcf, 0x51, 0xb0, 0x62, 0x77, 0xaf, 0x1b, 0x6e, 0xf7, 0x0c, 0x14, 0x08, 0x64, 0xd0, - 0xe8, 0xc3, 0xcc, 0x71, 0xeb, 0xee, 0x85, 0x5a, 0x7c, 0x12, 0x8e, 0x11, 0xa0, 0x0e, 0xf6, 0xf4, - 0x96, 0xee, 0xe9, 0x21, 0xe8, 0x47, 0x29, 0x34, 0x61, 0xfb, 0x1a, 0xaf, 0x8c, 0xf4, 0xd3, 0xe9, - 0x6d, 0xef, 0xfb, 0x82, 0xf5, 0x18, 0xeb, 0x27, 0x29, 0x13, 0xa2, 0xf5, 0x8e, 0x45, 0x53, 0x4a, - 0x19, 0xf2, 0x61, 0xb9, 0x47, 0x59, 0x60, 0x92, 0x2f, 0x4b, 0xc4, 0x09, 0x5a, 0xda, 0x58, 0x26, - 0xee, 0xcb, 0x2b, 0x35, 0x39, 0x41, 0xdc, 0xa8, 0xd5, 0x7a, 0xb3, 0xa6, 0xa9, 0x5b, 0xeb, 0xcd, - 0xfa, 0x5a, 0x4d, 0x4e, 0x86, 0x1c, 0xfb, 0xeb, 0xa9, 0xcc, 0x43, 0xf2, 0x59, 0xe5, 0x17, 0x93, - 0x50, 0x8c, 0xc6, 0xd6, 0xe8, 0x5d, 0x70, 0x5c, 0xa4, 0xc8, 0x5c, 0xec, 0x69, 0xb7, 0x4d, 0x87, - 0x2e, 0xc8, 0x8e, 0xce, 0x8c, 0xa3, 0x2f, 0x3f, 0x33, 0x1c, 0xaa, 0x81, 0xbd, 0xf7, 0x98, 0x0e, - 0x59, 0x6e, 0x1d, 0xdd, 0x43, 0xab, 0x30, 0x6f, 0xd9, 0x9a, 0xeb, 0xe9, 0x56, 0x4b, 0x77, 0x5a, - 0x5a, 0x90, 0x9c, 0xd4, 0x74, 0xc3, 0xc0, 0xae, 0x6b, 0x33, 0x43, 0xe8, 0x53, 0xb9, 0xcf, 0xb2, - 0x1b, 0x1c, 0x38, 0xb0, 0x10, 0x15, 0x0e, 0xda, 0x27, 0xbe, 0xc9, 0x61, 0xe2, 0x7b, 0x12, 0xb2, - 0x1d, 0xbd, 0xab, 0x61, 0xcb, 0x73, 0xf6, 0xa9, 0x7f, 0x9e, 0x51, 0x33, 0x1d, 0xbd, 0x5b, 0x23, - 0xdf, 0xe8, 0x06, 0x3c, 0x14, 0x80, 0x6a, 0x6d, 0xbc, 0xab, 0x1b, 0xfb, 0x1a, 0x75, 0xc6, 0x69, - 0xa2, 0x47, 0x33, 0x6c, 0x6b, 0xa7, 0x6d, 0x1a, 0x9e, 0x4b, 0xf5, 0x03, 0xd3, 0x71, 0x4a, 0x80, - 0xb1, 0x4a, 0x11, 0xae, 0xbb, 0xb6, 0x45, 0x7d, 0xf0, 0x25, 0x01, 0xfd, 0xce, 0xcd, 0x70, 0x74, - 0x96, 0x52, 0xf2, 0xc4, 0xf5, 0x54, 0x66, 0x42, 0x4e, 0x5f, 0x4f, 0x65, 0xd2, 0xf2, 0xe4, 0xf5, - 0x54, 0x26, 0x23, 0x67, 0xaf, 0xa7, 0x32, 0x59, 0x19, 0x94, 0xf7, 0x67, 0x21, 0x1f, 0x8e, 0x0c, - 0x48, 0xa0, 0x65, 0x50, 0xdb, 0x28, 0x51, 0xed, 0x79, 0xe6, 0xc0, 0x38, 0x62, 0x71, 0x89, 0x18, - 0xcd, 0x72, 0x9a, 0xb9, 0xe1, 0x2a, 0xc3, 0x24, 0x0e, 0x0b, 0x11, 0x6b, 0xcc, 0xdc, 0x9e, 0x8c, - 0xca, 0xbf, 0xd0, 0x0a, 0xa4, 0x5f, 0x75, 0x29, 0xed, 0x34, 0xa5, 0xfd, 0xc0, 0xc1, 0xb4, 0xaf, - 0x37, 0x28, 0xf1, 0xec, 0xf5, 0x86, 0xb6, 0xbe, 0xa1, 0xae, 0x55, 0x56, 0x55, 0x8e, 0x8e, 0x4e, - 0x40, 0xaa, 0xad, 0xbf, 0xb6, 0x1f, 0x35, 0xaf, 0xb4, 0x08, 0x2d, 0x42, 0xa9, 0x67, 0xb1, 0xa8, - 0x9b, 0x4c, 0x15, 0x81, 0x2a, 0x85, 0xa1, 0x8a, 0x41, 0xed, 0x2a, 0x81, 0x1f, 0x53, 0x3c, 0x4e, - 0x40, 0xea, 0x36, 0xd6, 0x6f, 0x46, 0x8d, 0x20, 0x2d, 0x42, 0xe7, 0x20, 0xdf, 0xc2, 0xdb, 0xbd, - 0x5d, 0xcd, 0xc1, 0x2d, 0xdd, 0xf0, 0xa2, 0xaa, 0x3f, 0x47, 0xab, 0x54, 0x5a, 0x83, 0x5e, 0x84, - 0x2c, 0x99, 0x23, 0x8b, 0xce, 0xf1, 0x14, 0x65, 0xc1, 0x63, 0x07, 0xb3, 0x80, 0x4f, 0xb1, 0x40, - 0x52, 0x03, 0x7c, 0x74, 0x1d, 0xd2, 0x9e, 0xee, 0xec, 0x62, 0x8f, 0x6a, 0xfe, 0x62, 0x4c, 0xba, - 0x2a, 0x86, 0x52, 0x93, 0x62, 0x10, 0xb6, 0x52, 0x19, 0xe5, 0x14, 0xd0, 0x35, 0x98, 0x64, 0x7f, - 0xb9, 0xb3, 0xd3, 0x0b, 0xc9, 0xc3, 0x13, 0x53, 0x05, 0xfa, 0x3b, 0xa8, 0xb3, 0x2e, 0xc0, 0x04, - 0x15, 0x36, 0x04, 0xc0, 0xc5, 0x4d, 0x3e, 0x82, 0x32, 0x90, 0x5a, 0xda, 0x50, 0x89, 0xde, 0x92, - 0x21, 0xcf, 0x4a, 0xb5, 0xcd, 0x7a, 0x6d, 0xa9, 0x26, 0x27, 0x94, 0xcb, 0x90, 0x66, 0x12, 0x44, - 0x74, 0x9a, 0x2f, 0x43, 0xf2, 0x11, 0xfe, 0xc9, 0x69, 0x48, 0xa2, 0x76, 0x6b, 0xad, 0x5a, 0x53, - 0xe5, 0x84, 0xb2, 0x05, 0xa5, 0x3e, 0xae, 0xa3, 0xa3, 0x30, 0xa5, 0xd6, 0x9a, 0xb5, 0x75, 0x12, - 0xb5, 0x69, 0x5b, 0xeb, 0x2f, 0xae, 0x6f, 0xbc, 0x67, 0x5d, 0x3e, 0x12, 0x2d, 0x16, 0x0a, 0x52, - 0x42, 0x33, 0x20, 0x07, 0xc5, 0x8d, 0x8d, 0x2d, 0x95, 0xf6, 0xe6, 0x3b, 0x13, 0x20, 0xf7, 0xb3, - 0x0d, 0x1d, 0x87, 0xe9, 0x66, 0x45, 0x5d, 0xa9, 0x35, 0x35, 0x16, 0x89, 0xfa, 0xa4, 0x67, 0x40, - 0x0e, 0x57, 0x5c, 0xad, 0xd3, 0x40, 0x7b, 0x1e, 0x4e, 0x86, 0x4b, 0x6b, 0x2f, 0x35, 0x6b, 0xeb, - 0x0d, 0xda, 0x78, 0x65, 0x7d, 0x85, 0x68, 0xeb, 0x3e, 0x7a, 0x22, 0xf6, 0x4d, 0x92, 0xae, 0x46, - 0xe9, 0xd5, 0x56, 0x97, 0xe5, 0x54, 0x7f, 0xf1, 0xc6, 0x7a, 0x6d, 0xe3, 0xaa, 0x3c, 0xd1, 0xdf, - 0x3a, 0x8d, 0x87, 0xd3, 0x68, 0x0e, 0x8e, 0xf5, 0x97, 0x6a, 0xb5, 0xf5, 0xa6, 0xfa, 0xb2, 0x3c, - 0xd9, 0xdf, 0x70, 0xa3, 0xa6, 0xde, 0xa8, 0x2f, 0xd5, 0xe4, 0x0c, 0x3a, 0x06, 0x28, 0xda, 0xa3, - 0xe6, 0xb5, 0x8d, 0x65, 0x39, 0x3b, 0xa0, 0x9f, 0x14, 0x17, 0xf2, 0xe1, 0xa0, 0xf4, 0x6b, 0xa2, - 0x1a, 0x95, 0x0f, 0x27, 0x20, 0x17, 0x0a, 0x32, 0x49, 0x74, 0xa0, 0xb7, 0xdb, 0xf6, 0x6d, 0x4d, - 0x6f, 0x9b, 0xba, 0xcb, 0xb5, 0x17, 0xd0, 0xa2, 0x0a, 0x29, 0x19, 0x57, 0x5b, 0x8c, 0x6f, 0x2f, - 0xd2, 0x7f, 0x1d, 0xed, 0xc5, 0x84, 0x9c, 0x56, 0x3e, 0x2e, 0x81, 0xdc, 0x1f, 0x3d, 0xf6, 0x0d, - 0x5f, 0x1a, 0x36, 0xfc, 0xaf, 0xc9, 0xdc, 0x7d, 0x4c, 0x82, 0x62, 0x34, 0x64, 0xec, 0xeb, 0xde, - 0xe9, 0xbf, 0xd2, 0xee, 0xfd, 0x6e, 0x02, 0x0a, 0x91, 0x40, 0x71, 0xdc, 0xde, 0xbd, 0x17, 0xa6, - 0xcc, 0x16, 0xee, 0x74, 0x6d, 0x0f, 0x5b, 0xc6, 0xbe, 0xd6, 0xc6, 0xb7, 0x70, 0x7b, 0x56, 0xa1, - 0x2a, 0xfe, 0xc2, 0xc1, 0xa1, 0xe8, 0x62, 0x3d, 0xc0, 0x5b, 0x25, 0x68, 0xe5, 0xe9, 0xfa, 0x72, - 0x6d, 0x6d, 0x73, 0xa3, 0x59, 0x5b, 0x5f, 0x7a, 0x59, 0x68, 0x17, 0x55, 0x36, 0xfb, 0xc0, 0xde, - 0x41, 0xa5, 0xbd, 0x09, 0x72, 0x7f, 0xa7, 0x88, 0xae, 0x88, 0xe9, 0x96, 0x7c, 0x04, 0x4d, 0x43, - 0x69, 0x7d, 0x43, 0x6b, 0xd4, 0x97, 0x6b, 0x5a, 0xed, 0xea, 0xd5, 0xda, 0x52, 0xb3, 0xc1, 0x92, - 0x8b, 0x3e, 0x74, 0x53, 0x4e, 0x84, 0x59, 0xfc, 0x91, 0x24, 0x4c, 0xc7, 0xf4, 0x04, 0x55, 0x78, - 0x5a, 0x80, 0x65, 0x2a, 0x1e, 0x1b, 0xa7, 0xf7, 0x8b, 0xc4, 0x31, 0xdf, 0xd4, 0x1d, 0x8f, 0x67, - 0x11, 0x1e, 0x06, 0xc2, 0x25, 0xcb, 0x23, 0x7e, 0x82, 0xc3, 0x93, 0xb6, 0x2c, 0x57, 0x50, 0x0a, - 0xca, 0x59, 0xde, 0xf6, 0x51, 0x40, 0x5d, 0xdb, 0x35, 0x3d, 0xf3, 0x16, 0xd6, 0x4c, 0x4b, 0x64, - 0x78, 0x53, 0x0b, 0xd2, 0xb9, 0x94, 0x2a, 0x8b, 0x9a, 0xba, 0xe5, 0xf9, 0xd0, 0x16, 0xde, 0xd5, - 0xfb, 0xa0, 0x89, 0x1f, 0x93, 0x54, 0x65, 0x51, 0xe3, 0x43, 0x9f, 0x86, 0x7c, 0xcb, 0xee, 0x91, - 0x80, 0x8a, 0xc1, 0x11, 0x6d, 0x21, 0xa9, 0x39, 0x56, 0xe6, 0x83, 0xf0, 0x50, 0x39, 0x48, 0x2d, - 0xe7, 0xd5, 0x1c, 0x2b, 0x63, 0x20, 0x67, 0xa1, 0xa4, 0xef, 0xee, 0x3a, 0x84, 0xb8, 0x20, 0xc4, - 0x82, 0xff, 0xa2, 0x5f, 0x4c, 0x01, 0xe7, 0xae, 0x43, 0x46, 0xf0, 0x81, 0xf8, 0xc3, 0x84, 0x13, - 0x5a, 0x97, 0x65, 0xb4, 0x12, 0xe7, 0xb2, 0x6a, 0xc6, 0x12, 0x95, 0xa7, 0x21, 0x6f, 0xba, 0x5a, - 0xb0, 0xb7, 0x99, 0x58, 0x48, 0x9c, 0xcb, 0xa8, 0x39, 0xd3, 0xf5, 0xf7, 0x48, 0x94, 0x4f, 0x24, - 0xa0, 0x18, 0xdd, 0xb5, 0x45, 0xcb, 0x90, 0x69, 0xdb, 0x7c, 0x93, 0x85, 0x1d, 0x19, 0x38, 0x37, - 0x62, 0xa3, 0x77, 0x71, 0x95, 0xc3, 0xab, 0x3e, 0xe6, 0xdc, 0xaf, 0x4b, 0x90, 0x11, 0xc5, 0xe8, - 0x18, 0xa4, 0xba, 0xba, 0xb7, 0x47, 0xc9, 0x4d, 0x54, 0x13, 0xb2, 0xa4, 0xd2, 0x6f, 0x52, 0xee, - 0x76, 0x75, 0xb6, 0x4f, 0xc4, 0xcb, 0xc9, 0x37, 0x99, 0xd7, 0x36, 0xd6, 0x5b, 0x34, 0xb3, 0x60, - 0x77, 0x3a, 0xd8, 0xf2, 0x5c, 0x31, 0xaf, 0xbc, 0x7c, 0x89, 0x17, 0xa3, 0x47, 0x60, 0xca, 0x73, - 0x74, 0xb3, 0x1d, 0x81, 0x4d, 0x51, 0x58, 0x59, 0x54, 0xf8, 0xc0, 0x65, 0x38, 0x21, 0xe8, 0xb6, - 0xb0, 0xa7, 0x1b, 0x7b, 0xb8, 0x15, 0x20, 0xa5, 0x69, 0x06, 0xf1, 0x38, 0x07, 0x58, 0xe6, 0xf5, - 0x02, 0x57, 0xf9, 0x5c, 0x02, 0xa6, 0x44, 0x2e, 0xa4, 0xe5, 0x33, 0x6b, 0x0d, 0x40, 0xb7, 0x2c, - 0xdb, 0x0b, 0xb3, 0x6b, 0x50, 0x94, 0x07, 0xf0, 0x16, 0x2b, 0x3e, 0x92, 0x1a, 0x22, 0x30, 0xf7, - 0x25, 0x09, 0x20, 0xa8, 0x1a, 0xca, 0xb7, 0x79, 0xc8, 0xf1, 0x3d, 0x79, 0x7a, 0xb0, 0x83, 0xa5, - 0xcf, 0x80, 0x15, 0x5d, 0x35, 0xdb, 0x34, 0xc9, 0xb9, 0x8d, 0x77, 0x4d, 0x8b, 0xef, 0xce, 0xb0, - 0x0f, 0x91, 0xe4, 0x4c, 0x05, 0xdb, 0x93, 0x2a, 0x64, 0x5c, 0xdc, 0xd1, 0x2d, 0xcf, 0x34, 0xf8, - 0x7e, 0xcb, 0x95, 0x43, 0x75, 0x7e, 0xb1, 0xc1, 0xb1, 0x55, 0x9f, 0x8e, 0x72, 0x0e, 0x32, 0xa2, - 0x94, 0x38, 0x7e, 0xeb, 0x1b, 0xeb, 0x35, 0xf9, 0x08, 0x9a, 0x84, 0x64, 0xa3, 0xd6, 0x94, 0x25, - 0x12, 0xc4, 0x56, 0x56, 0xeb, 0x95, 0x86, 0x9c, 0xa8, 0xfe, 0x5d, 0x98, 0x36, 0xec, 0x4e, 0x7f, - 0x83, 0x55, 0xb9, 0x2f, 0x81, 0xe8, 0x5e, 0x93, 0x5e, 0x79, 0x8c, 0x03, 0xed, 0xda, 0x6d, 0xdd, - 0xda, 0x5d, 0xb4, 0x9d, 0xdd, 0xe0, 0x58, 0x0c, 0x89, 0x35, 0xdc, 0xd0, 0xe1, 0x98, 0xee, 0xf6, - 0x5f, 0x4a, 0xd2, 0x8f, 0x24, 0x92, 0x2b, 0x9b, 0xd5, 0x9f, 0x48, 0xcc, 0xad, 0x30, 0xc4, 0x4d, - 0x31, 0x1c, 0x15, 0xef, 0xb4, 0xb1, 0x41, 0x3a, 0x0f, 0x1f, 0x4d, 0xc1, 0x94, 0xde, 0x31, 0x2d, - 0xfb, 0x02, 0xfd, 0x97, 0x1f, 0xaa, 0x99, 0xa0, 0x1f, 0x73, 0x23, 0x4f, 0xdf, 0x94, 0xaf, 0x30, - 0x05, 0x86, 0x46, 0xed, 0x61, 0xcf, 0xfe, 0xe9, 0x77, 0xfe, 0xf8, 0x44, 0x90, 0xfb, 0x2c, 0xaf, - 0x81, 0x2c, 0xc2, 0x6e, 0x6c, 0x19, 0x36, 0x91, 0xb6, 0xd1, 0x34, 0xfe, 0x4c, 0xd0, 0x28, 0x71, - 0xdc, 0x1a, 0x47, 0x2d, 0xbf, 0x0b, 0x32, 0x3e, 0x99, 0x83, 0xb7, 0x93, 0x66, 0xff, 0xa7, 0x20, - 0xe2, 0x63, 0x94, 0x5f, 0x00, 0x60, 0xce, 0x0e, 0x4b, 0xcb, 0x1e, 0x8c, 0xff, 0x15, 0x81, 0x9f, - 0xa5, 0x38, 0x44, 0x0b, 0x95, 0x57, 0xa0, 0xd8, 0xb2, 0x2d, 0x4f, 0xb3, 0x3b, 0xa6, 0x87, 0x3b, - 0x5d, 0x6f, 0x7f, 0x14, 0x91, 0x3f, 0x67, 0x44, 0x32, 0x6a, 0x81, 0xe0, 0x6d, 0x08, 0x34, 0xd2, - 0x13, 0xb6, 0xb3, 0x36, 0x4e, 0x4f, 0xfe, 0xc2, 0xef, 0x09, 0xc5, 0x21, 0x3d, 0xa9, 0xd6, 0x7e, - 0xe5, 0xf3, 0xa7, 0xa4, 0xcf, 0x7d, 0xfe, 0x94, 0xf4, 0xbb, 0x9f, 0x3f, 0x25, 0x7d, 0xe8, 0x0b, - 0xa7, 0x8e, 0x7c, 0xee, 0x0b, 0xa7, 0x8e, 0xfc, 0xd6, 0x17, 0x4e, 0x1d, 0x79, 0xe5, 0x91, 0x5d, - 0xd3, 0xdb, 0xeb, 0x6d, 0x2f, 0x1a, 0x76, 0xe7, 0x82, 0x61, 0xbb, 0x1d, 0xdb, 0xe5, 0xff, 0x3d, - 0xe6, 0xb6, 0x6e, 0x72, 0xf9, 0xf1, 0xee, 0x30, 0x29, 0xd8, 0x4e, 0xb3, 0x1d, 0x35, 0xf8, 0xa3, - 0x47, 0x60, 0x66, 0xd7, 0xde, 0xb5, 0xe9, 0xe7, 0x05, 0xf2, 0x17, 0x17, 0x90, 0xac, 0x5f, 0x3a, - 0x86, 0x90, 0xac, 0xc3, 0x34, 0x07, 0xd6, 0xe8, 0xe1, 0x0e, 0x96, 0xc8, 0x42, 0x07, 0xee, 0xa2, - 0xcc, 0xfe, 0xec, 0xef, 0x53, 0x9f, 0x55, 0x9d, 0xe2, 0xa8, 0xa4, 0x8e, 0xe5, 0xba, 0xca, 0x2a, - 0x1c, 0x8d, 0xd0, 0x63, 0x16, 0x04, 0x3b, 0x23, 0x28, 0xfe, 0x7b, 0x4e, 0x71, 0x3a, 0x44, 0xb1, - 0xc1, 0x51, 0xcb, 0x4b, 0x50, 0x38, 0x0c, 0xad, 0x5f, 0xe6, 0xb4, 0xf2, 0x38, 0x4c, 0x64, 0x05, - 0x4a, 0x94, 0x88, 0xd1, 0x73, 0x3d, 0xbb, 0x43, 0xe7, 0xf0, 0x60, 0x32, 0xff, 0xe1, 0xf7, 0x99, - 0x4a, 0x2f, 0x12, 0xb4, 0x25, 0x1f, 0xab, 0x5c, 0x06, 0x7a, 0x9e, 0xa5, 0x85, 0x8d, 0xf6, 0x08, - 0x0a, 0xbf, 0xc2, 0x3b, 0xe2, 0xc3, 0x97, 0x6f, 0xc0, 0x0c, 0xf9, 0x9b, 0x5a, 0xcf, 0x70, 0x4f, - 0x46, 0x6f, 0xb9, 0xcc, 0xfe, 0x97, 0x6f, 0x65, 0x56, 0x63, 0xda, 0x27, 0x10, 0xea, 0x53, 0x68, - 0x16, 0x77, 0xb1, 0xe7, 0x61, 0xc7, 0xd5, 0xf4, 0x76, 0x5c, 0xf7, 0x42, 0x39, 0xeb, 0xd9, 0x1f, - 0xfc, 0x72, 0x74, 0x16, 0x57, 0x18, 0x66, 0xa5, 0xdd, 0x2e, 0x6f, 0xc1, 0xf1, 0x18, 0xa9, 0x18, - 0x83, 0xe6, 0x47, 0x38, 0xcd, 0x99, 0x01, 0xc9, 0x20, 0x64, 0x37, 0x41, 0x94, 0xfb, 0x73, 0x39, - 0x06, 0xcd, 0x8f, 0x72, 0x9a, 0x88, 0xe3, 0x8a, 0x29, 0x25, 0x14, 0xaf, 0xc3, 0xd4, 0x2d, 0xec, - 0x6c, 0xdb, 0x2e, 0xdf, 0x27, 0x18, 0x83, 0xdc, 0xc7, 0x38, 0xb9, 0x12, 0x47, 0xa4, 0x1b, 0x07, - 0x84, 0xd6, 0x33, 0x90, 0xd9, 0xd1, 0x0d, 0x3c, 0x06, 0x89, 0xbb, 0x9c, 0xc4, 0x24, 0x81, 0x27, - 0xa8, 0x15, 0xc8, 0xef, 0xda, 0xdc, 0x81, 0x1a, 0x8d, 0xfe, 0x71, 0x8e, 0x9e, 0x13, 0x38, 0x9c, - 0x44, 0xd7, 0xee, 0xf6, 0xda, 0xc4, 0xbb, 0x1a, 0x4d, 0xe2, 0x87, 0x04, 0x09, 0x81, 0xc3, 0x49, - 0x1c, 0x82, 0xad, 0x6f, 0x08, 0x12, 0x6e, 0x88, 0x9f, 0x2f, 0x40, 0xce, 0xb6, 0xda, 0xfb, 0xb6, - 0x35, 0x4e, 0x27, 0x7e, 0x98, 0x53, 0x00, 0x8e, 0x42, 0x08, 0x3c, 0x0b, 0xd9, 0x71, 0x27, 0xe2, - 0xc7, 0xbe, 0x2c, 0x96, 0x87, 0x98, 0x81, 0x15, 0x28, 0x09, 0x05, 0x65, 0xda, 0xd6, 0x18, 0x24, - 0x7e, 0x9c, 0x93, 0x28, 0x86, 0xd0, 0xf8, 0x30, 0x3c, 0xec, 0x7a, 0xbb, 0x78, 0x1c, 0x22, 0x9f, - 0x10, 0xc3, 0xe0, 0x28, 0x9c, 0x95, 0xdb, 0xd8, 0x32, 0xf6, 0xc6, 0xa3, 0xf0, 0x49, 0xc1, 0x4a, - 0x81, 0x43, 0x48, 0x2c, 0x41, 0xa1, 0xa3, 0x3b, 0xee, 0x9e, 0xde, 0x1e, 0x6b, 0x3a, 0x3e, 0xc5, - 0x69, 0xe4, 0x7d, 0x24, 0xce, 0x91, 0x9e, 0x75, 0x18, 0x32, 0x3f, 0x21, 0x38, 0x12, 0x42, 0xe3, - 0x4b, 0xcf, 0xf5, 0xe8, 0xa6, 0xca, 0x61, 0xa8, 0xfd, 0xa4, 0x58, 0x7a, 0x0c, 0x77, 0x2d, 0x4c, - 0xf1, 0x59, 0xc8, 0xba, 0xe6, 0x6b, 0x63, 0x91, 0xf9, 0x27, 0x62, 0xa6, 0x29, 0x02, 0x41, 0x7e, - 0x19, 0x4e, 0xc4, 0x9a, 0x89, 0x31, 0x88, 0xfd, 0x14, 0x27, 0x76, 0x2c, 0xc6, 0x54, 0x70, 0x95, - 0x70, 0x58, 0x92, 0x3f, 0x2d, 0x54, 0x02, 0xee, 0xa3, 0xb5, 0x49, 0x42, 0x5a, 0x57, 0xdf, 0x39, - 0x1c, 0xd7, 0xfe, 0xa9, 0xe0, 0x1a, 0xc3, 0x8d, 0x70, 0xad, 0x09, 0xc7, 0x38, 0xc5, 0xc3, 0xcd, - 0xeb, 0xcf, 0x08, 0xc5, 0xca, 0xb0, 0xb7, 0xa2, 0xb3, 0xfb, 0xf5, 0x30, 0xe7, 0xb3, 0x53, 0xc4, - 0x4e, 0xae, 0xd6, 0xd1, 0xbb, 0x63, 0x50, 0xfe, 0x59, 0x4e, 0x59, 0x68, 0x7c, 0x3f, 0xf8, 0x72, - 0xd7, 0xf4, 0x2e, 0x21, 0xfe, 0x12, 0xcc, 0x0a, 0xe2, 0x3d, 0xcb, 0xc1, 0x86, 0xbd, 0x6b, 0x99, - 0xaf, 0xe1, 0xd6, 0x18, 0xa4, 0xff, 0x59, 0xdf, 0x54, 0x6d, 0x85, 0xd0, 0x09, 0xe5, 0x3a, 0xc8, - 0xbe, 0xaf, 0xa2, 0x99, 0x9d, 0xae, 0xed, 0x78, 0x23, 0x28, 0x7e, 0x5a, 0xcc, 0x94, 0x8f, 0x57, - 0xa7, 0x68, 0xe5, 0x1a, 0xb0, 0x93, 0x46, 0xe3, 0x8a, 0xe4, 0x67, 0x38, 0xa1, 0x42, 0x80, 0xc5, - 0x15, 0x87, 0x61, 0x77, 0xba, 0xba, 0x33, 0x8e, 0xfe, 0xfb, 0x39, 0xa1, 0x38, 0x38, 0x0a, 0x57, - 0x1c, 0xc4, 0x5f, 0x23, 0xd6, 0x7e, 0x0c, 0x0a, 0x3f, 0x2f, 0x14, 0x87, 0xc0, 0xe1, 0x24, 0x84, - 0xc3, 0x30, 0x06, 0x89, 0x7f, 0x2e, 0x48, 0x08, 0x1c, 0x42, 0xe2, 0xdd, 0x81, 0xa1, 0x75, 0xf0, - 0xae, 0xe9, 0x7a, 0xfc, 0xa8, 0xe0, 0xc1, 0xa4, 0x7e, 0xe1, 0xcb, 0x51, 0x27, 0x4c, 0x0d, 0xa1, - 0x12, 0x4d, 0xc4, 0x3d, 0x7b, 0x1a, 0xd0, 0x8f, 0xee, 0xd8, 0x67, 0x85, 0x26, 0x0a, 0xa1, 0x91, - 0xbe, 0x85, 0x3c, 0x44, 0xc2, 0x76, 0x83, 0x84, 0xb1, 0x63, 0x90, 0xfb, 0x17, 0x7d, 0x9d, 0x6b, - 0x08, 0x5c, 0x42, 0x33, 0xe4, 0xff, 0xf4, 0xac, 0x9b, 0x78, 0x7f, 0x2c, 0xe9, 0xfc, 0xc5, 0x3e, - 0xff, 0x67, 0x8b, 0x61, 0x32, 0x1d, 0x52, 0xea, 0xf3, 0xa7, 0x46, 0x47, 0x40, 0xdf, 0xf2, 0x15, - 0x3e, 0xde, 0xa8, 0x3b, 0x55, 0x5e, 0x25, 0x42, 0x1e, 0x75, 0x7a, 0x46, 0x13, 0xfb, 0xd6, 0xaf, - 0xf8, 0x72, 0x1e, 0xf1, 0x79, 0xca, 0x57, 0xa1, 0x10, 0x71, 0x78, 0x46, 0x93, 0xfa, 0x36, 0x4e, - 0x2a, 0x1f, 0xf6, 0x77, 0xca, 0x97, 0x21, 0x45, 0x9c, 0x97, 0xd1, 0xe8, 0xef, 0xe7, 0xe8, 0x14, - 0xbc, 0xfc, 0x1c, 0x64, 0x84, 0xd3, 0x32, 0x1a, 0xf5, 0x03, 0x1c, 0xd5, 0x47, 0x21, 0xe8, 0xc2, - 0x61, 0x19, 0x8d, 0xfe, 0xf7, 0x05, 0xba, 0x40, 0x21, 0xe8, 0xe3, 0xb3, 0xf0, 0xdf, 0x7c, 0x47, - 0x8a, 0x1b, 0x1d, 0xc1, 0xbb, 0x67, 0x61, 0x92, 0x7b, 0x2a, 0xa3, 0xb1, 0xbf, 0x9d, 0x37, 0x2e, - 0x30, 0xca, 0x4f, 0xc1, 0xc4, 0x98, 0x0c, 0xff, 0x2e, 0x8e, 0xca, 0xe0, 0xcb, 0x4b, 0x90, 0x0b, - 0x79, 0x27, 0xa3, 0xd1, 0xbf, 0x9b, 0xa3, 0x87, 0xb1, 0x48, 0xd7, 0xb9, 0x77, 0x32, 0x9a, 0xc0, - 0x3f, 0x10, 0x5d, 0xe7, 0x18, 0x84, 0x6d, 0xc2, 0x31, 0x19, 0x8d, 0xfd, 0x21, 0xc1, 0x75, 0x81, - 0x52, 0x7e, 0x01, 0xb2, 0xbe, 0xb1, 0x19, 0x8d, 0xff, 0x3d, 0x1c, 0x3f, 0xc0, 0x21, 0x1c, 0x08, - 0x19, 0xbb, 0xd1, 0x24, 0xfe, 0xa1, 0xe0, 0x40, 0x08, 0x8b, 0x2c, 0xa3, 0x7e, 0x07, 0x66, 0x34, - 0xa5, 0xef, 0x15, 0xcb, 0xa8, 0xcf, 0x7f, 0x21, 0xb3, 0x49, 0x75, 0xfe, 0x68, 0x12, 0xdf, 0x27, - 0x66, 0x93, 0xc2, 0x93, 0x6e, 0xf4, 0x7b, 0x04, 0xa3, 0x69, 0xfc, 0x80, 0xe8, 0x46, 0x9f, 0x43, - 0x50, 0xde, 0x04, 0x34, 0xe8, 0x0d, 0x8c, 0xa6, 0xf7, 0x61, 0x4e, 0x6f, 0x6a, 0xc0, 0x19, 0x28, - 0xbf, 0x07, 0x8e, 0xc5, 0x7b, 0x02, 0xa3, 0xa9, 0xfe, 0xe0, 0x57, 0xfa, 0x62, 0xb7, 0xb0, 0x23, - 0x50, 0x6e, 0x06, 0x26, 0x25, 0xec, 0x05, 0x8c, 0x26, 0xfb, 0x91, 0xaf, 0x44, 0x15, 0x77, 0xd8, - 0x09, 0x28, 0x57, 0x00, 0x02, 0x03, 0x3c, 0x9a, 0xd6, 0xc7, 0x38, 0xad, 0x10, 0x12, 0x59, 0x1a, - 0xdc, 0xfe, 0x8e, 0xc6, 0xbf, 0x2b, 0x96, 0x06, 0xc7, 0x20, 0x4b, 0x43, 0x98, 0xde, 0xd1, 0xd8, - 0x1f, 0x17, 0x4b, 0x43, 0xa0, 0x10, 0xc9, 0x0e, 0x59, 0xb7, 0xd1, 0x14, 0x7e, 0x58, 0x48, 0x76, - 0x08, 0xab, 0xbc, 0x0e, 0x53, 0x03, 0x06, 0x71, 0x34, 0xa9, 0x1f, 0xe1, 0xa4, 0xe4, 0x7e, 0x7b, - 0x18, 0x36, 0x5e, 0xdc, 0x18, 0x8e, 0xa6, 0xf6, 0xa3, 0x7d, 0xc6, 0x8b, 0xdb, 0xc2, 0xf2, 0xb3, - 0x90, 0xb1, 0x7a, 0xed, 0x36, 0x59, 0x3c, 0xa3, 0x52, 0x5e, 0xff, 0xfd, 0xab, 0x9c, 0x3b, 0x02, - 0xa1, 0x7c, 0x19, 0x26, 0x70, 0x67, 0x1b, 0xb7, 0x46, 0x61, 0xfe, 0xe1, 0x57, 0x85, 0xc2, 0x24, - 0xd0, 0xe5, 0x17, 0x00, 0x58, 0x6a, 0x84, 0x1e, 0xd2, 0x18, 0x81, 0xfb, 0xa5, 0xaf, 0xf2, 0xc3, - 0x97, 0x01, 0x4a, 0x40, 0x60, 0x9c, 0x4c, 0xdd, 0x97, 0xa3, 0x04, 0xe8, 0x8c, 0x3c, 0x03, 0x93, - 0xaf, 0xba, 0xb6, 0xe5, 0xe9, 0x23, 0x33, 0x96, 0x7f, 0xc4, 0xb1, 0x05, 0x3c, 0x61, 0x58, 0xc7, - 0x76, 0xb0, 0xa7, 0xef, 0xba, 0xa3, 0x70, 0xff, 0x98, 0xe3, 0xfa, 0x08, 0x04, 0xd9, 0xd0, 0x5d, - 0x6f, 0x9c, 0x71, 0xff, 0x0f, 0x81, 0x2c, 0x10, 0x48, 0xa7, 0xc9, 0xdf, 0x37, 0xf1, 0xc8, 0x0c, - 0xe7, 0x9f, 0x88, 0x4e, 0x73, 0xf8, 0xf2, 0x73, 0x90, 0x25, 0x7f, 0xb2, 0x13, 0xd5, 0x23, 0x90, - 0xff, 0x94, 0x23, 0x07, 0x18, 0xa4, 0x65, 0xd7, 0x6b, 0x79, 0xe6, 0x68, 0x66, 0xff, 0x19, 0x9f, - 0x69, 0x01, 0x5f, 0xae, 0x40, 0xce, 0xf5, 0x5a, 0xad, 0x1e, 0xf7, 0x4f, 0x47, 0xe5, 0x87, 0xbf, - 0xea, 0xa7, 0x2c, 0x7c, 0x1c, 0x32, 0xdb, 0xb7, 0x6f, 0x7a, 0x5d, 0x9b, 0xee, 0xc6, 0x8d, 0xcc, - 0x10, 0x73, 0x0a, 0x21, 0x94, 0xf2, 0x12, 0xe4, 0xc9, 0x58, 0xc4, 0x4d, 0x95, 0x91, 0xf9, 0x61, - 0xce, 0x80, 0x08, 0x52, 0xf5, 0x9b, 0x87, 0x25, 0x77, 0xe3, 0xf7, 0x10, 0x60, 0xc5, 0x5e, 0xb1, - 0xd9, 0xee, 0xc1, 0x2b, 0x0f, 0x0e, 0x66, 0x7f, 0xa3, 0x79, 0x5d, 0xfa, 0x17, 0xfc, 0x2f, 0x09, - 0xee, 0x37, 0xec, 0x0e, 0xf6, 0xb6, 0x77, 0xbc, 0x0b, 0x86, 0xb3, 0xdf, 0xf5, 0xec, 0x0b, 0xb7, - 0x2e, 0x5e, 0xb8, 0x89, 0xf7, 0x5d, 0x9e, 0xf8, 0x45, 0xa2, 0x7a, 0x91, 0x55, 0x2f, 0xde, 0xba, - 0x38, 0x17, 0x9b, 0x22, 0x56, 0x5e, 0x82, 0xec, 0x26, 0xbd, 0xb9, 0xfa, 0x22, 0xde, 0x47, 0x73, - 0x30, 0x89, 0x5b, 0x97, 0x2e, 0x5f, 0xbe, 0xf8, 0x0c, 0xdd, 0x8b, 0xcf, 0x5f, 0x3b, 0xa2, 0x8a, - 0x02, 0x74, 0x0a, 0xb2, 0x2e, 0x36, 0xba, 0x97, 0x2e, 0x5f, 0xb9, 0x79, 0x91, 0xee, 0xe3, 0x90, - 0xda, 0xa0, 0xa8, 0x9c, 0xf9, 0xe2, 0x1b, 0xf3, 0xd2, 0x17, 0x7f, 0x78, 0x5e, 0xaa, 0x4e, 0x40, + // 11885 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x94, 0x1c, 0x57, + 0x5a, 0x98, 0xaa, 0xbb, 0xa7, 0xa7, 0xfb, 0xeb, 0x57, 0xcd, 0x9d, 0x91, 0x34, 0x1a, 0xd9, 0x9a, + 0x51, 0xc9, 0xb6, 0x64, 0xd9, 0x1e, 0x59, 0xb2, 0x2d, 0xdb, 0xed, 0x17, 0xdd, 0x33, 0xad, 0x51, + 0xcb, 0xf3, 0xda, 0xea, 0x1e, 0xad, 0x6d, 0x1e, 0x45, 0x4d, 0xf5, 0x9d, 0x99, 0xb2, 0xba, 0xab, + 0x7a, 0xab, 0xaa, 0x25, 0x8d, 0x73, 0x4e, 0xce, 0x12, 0x58, 0xb2, 0x88, 0x47, 0x96, 0x40, 0x60, + 0xd9, 0x5d, 0x2d, 0x06, 0x02, 0xbb, 0x0b, 0x81, 0x40, 0x76, 0x21, 0x6c, 0x38, 0x79, 0x90, 0x93, + 0x10, 0x20, 0x27, 0x64, 0xc3, 0x8f, 0xc0, 0xe1, 0x1c, 0x1c, 0xd8, 0xe5, 0x1c, 0x36, 0xec, 0x42, + 0x80, 0x2c, 0x1c, 0x4e, 0xf6, 0x24, 0x27, 0xe7, 0xbe, 0xea, 0xd1, 0x5d, 0x3d, 0xdd, 0x23, 0xdb, + 0x40, 0x20, 0x7f, 0xa4, 0xa9, 0x7b, 0xbf, 0xef, 0xbb, 0xf7, 0x7e, 0xf7, 0xbb, 0xdf, 0xeb, 0x3e, + 0x1a, 0x7e, 0xf7, 0x0a, 0x2c, 0xec, 0xda, 0xf6, 0x6e, 0x1b, 0x5f, 0xe8, 0x3a, 0xb6, 0x67, 0x6f, + 0xf7, 0x76, 0x2e, 0xb4, 0xb0, 0x6b, 0x38, 0x66, 0xd7, 0xb3, 0x9d, 0x45, 0x5a, 0x86, 0x4a, 0x0c, + 0x62, 0x51, 0x40, 0x28, 0x6b, 0x30, 0x75, 0xc5, 0x6c, 0xe3, 0x65, 0x1f, 0xb0, 0x81, 0x3d, 0xf4, + 0x0c, 0xa4, 0x76, 0xcc, 0x36, 0x9e, 0x95, 0x16, 0x92, 0xe7, 0x72, 0x97, 0x1e, 0x58, 0xec, 0x43, + 0x5a, 0x8c, 0x62, 0x6c, 0x92, 0x62, 0x95, 0x62, 0x28, 0xff, 0x27, 0x05, 0xd3, 0x31, 0xb5, 0x08, + 0x41, 0xca, 0xd2, 0x3b, 0x84, 0xa2, 0x74, 0x2e, 0xab, 0xd2, 0xbf, 0xd1, 0x2c, 0x4c, 0x76, 0x75, + 0xe3, 0x86, 0xbe, 0x8b, 0x67, 0x13, 0xb4, 0x58, 0x7c, 0xa2, 0x53, 0x00, 0x2d, 0xdc, 0xc5, 0x56, + 0x0b, 0x5b, 0xc6, 0xfe, 0x6c, 0x72, 0x21, 0x79, 0x2e, 0xab, 0x86, 0x4a, 0xd0, 0x23, 0x30, 0xd5, + 0xed, 0x6d, 0xb7, 0x4d, 0x43, 0x0b, 0x81, 0xc1, 0x42, 0xf2, 0xdc, 0x84, 0x2a, 0xb3, 0x8a, 0xe5, + 0x00, 0xf8, 0x2c, 0x94, 0x6e, 0x61, 0xfd, 0x46, 0x18, 0x34, 0x47, 0x41, 0x8b, 0xa4, 0x38, 0x04, + 0xb8, 0x04, 0xf9, 0x0e, 0x76, 0x5d, 0x7d, 0x17, 0x6b, 0xde, 0x7e, 0x17, 0xcf, 0xa6, 0xe8, 0xe8, + 0x17, 0x06, 0x46, 0xdf, 0x3f, 0xf2, 0x1c, 0xc7, 0x6a, 0xee, 0x77, 0x31, 0xaa, 0x40, 0x16, 0x5b, + 0xbd, 0x0e, 0xa3, 0x30, 0x31, 0x84, 0x7f, 0x35, 0xab, 0xd7, 0xe9, 0xa7, 0x92, 0x21, 0x68, 0x9c, + 0xc4, 0xa4, 0x8b, 0x9d, 0x9b, 0xa6, 0x81, 0x67, 0xd3, 0x94, 0xc0, 0xd9, 0x01, 0x02, 0x0d, 0x56, + 0xdf, 0x4f, 0x43, 0xe0, 0xa1, 0x25, 0xc8, 0xe2, 0xdb, 0x1e, 0xb6, 0x5c, 0xd3, 0xb6, 0x66, 0x27, + 0x29, 0x91, 0x07, 0x63, 0x66, 0x11, 0xb7, 0x5b, 0xfd, 0x24, 0x02, 0x3c, 0x74, 0x19, 0x26, 0xed, + 0xae, 0x67, 0xda, 0x96, 0x3b, 0x9b, 0x59, 0x90, 0xce, 0xe5, 0x2e, 0xdd, 0x17, 0x2b, 0x08, 0x1b, + 0x0c, 0x46, 0x15, 0xc0, 0xa8, 0x0e, 0xb2, 0x6b, 0xf7, 0x1c, 0x03, 0x6b, 0x86, 0xdd, 0xc2, 0x9a, + 0x69, 0xed, 0xd8, 0xb3, 0x59, 0x4a, 0x60, 0x7e, 0x70, 0x20, 0x14, 0x70, 0xc9, 0x6e, 0xe1, 0xba, + 0xb5, 0x63, 0xab, 0x45, 0x37, 0xf2, 0x8d, 0x8e, 0x41, 0xda, 0xdd, 0xb7, 0x3c, 0xfd, 0xf6, 0x6c, + 0x9e, 0x4a, 0x08, 0xff, 0x22, 0xa2, 0x83, 0x5b, 0x26, 0x69, 0x6e, 0xb6, 0xc0, 0x44, 0x87, 0x7f, + 0x2a, 0x9f, 0x4d, 0x43, 0x69, 0x1c, 0xe1, 0x7b, 0x0e, 0x26, 0x76, 0xc8, 0xf8, 0x67, 0x13, 0x87, + 0xe1, 0x0e, 0xc3, 0x89, 0xb2, 0x37, 0x7d, 0x8f, 0xec, 0xad, 0x40, 0xce, 0xc2, 0xae, 0x87, 0x5b, + 0x4c, 0x56, 0x92, 0x63, 0x4a, 0x1b, 0x30, 0xa4, 0x41, 0x61, 0x4b, 0xdd, 0x93, 0xb0, 0xbd, 0x02, + 0x25, 0xbf, 0x4b, 0x9a, 0xa3, 0x5b, 0xbb, 0x42, 0x6a, 0x2f, 0x8c, 0xea, 0xc9, 0x62, 0x4d, 0xe0, + 0xa9, 0x04, 0x4d, 0x2d, 0xe2, 0xc8, 0x37, 0x5a, 0x06, 0xb0, 0x2d, 0x6c, 0xef, 0x68, 0x2d, 0x6c, + 0xb4, 0x67, 0x33, 0x43, 0xb8, 0xb4, 0x41, 0x40, 0x06, 0xb8, 0x64, 0xb3, 0x52, 0xa3, 0x8d, 0x9e, + 0x0d, 0x84, 0x70, 0x72, 0x88, 0x0c, 0xad, 0xb1, 0xe5, 0x37, 0x20, 0x87, 0x5b, 0x50, 0x74, 0x30, + 0x59, 0x11, 0xb8, 0xc5, 0x47, 0x96, 0xa5, 0x9d, 0x58, 0x1c, 0x39, 0x32, 0x95, 0xa3, 0xb1, 0x81, + 0x15, 0x9c, 0xf0, 0x27, 0x3a, 0x03, 0x7e, 0x81, 0x46, 0xc5, 0x0a, 0xa8, 0x7e, 0xca, 0x8b, 0xc2, + 0x75, 0xbd, 0x83, 0xe7, 0xde, 0x80, 0x62, 0x94, 0x3d, 0x68, 0x06, 0x26, 0x5c, 0x4f, 0x77, 0x3c, + 0x2a, 0x85, 0x13, 0x2a, 0xfb, 0x40, 0x32, 0x24, 0xb1, 0xd5, 0xa2, 0xfa, 0x6f, 0x42, 0x25, 0x7f, + 0xa2, 0xaf, 0x09, 0x06, 0x9c, 0xa4, 0x03, 0x7e, 0x68, 0x70, 0x46, 0x23, 0x94, 0xfb, 0xc7, 0x3d, + 0xf7, 0x34, 0x14, 0x22, 0x03, 0x18, 0xb7, 0x69, 0xe5, 0x27, 0x53, 0x70, 0x34, 0x96, 0x36, 0x7a, + 0x05, 0x66, 0x7a, 0x96, 0x69, 0x79, 0xd8, 0xe9, 0x3a, 0x98, 0x88, 0x2c, 0x6b, 0x6b, 0xf6, 0xf7, + 0x27, 0x87, 0x08, 0xdd, 0x56, 0x18, 0x9a, 0x51, 0x51, 0xa7, 0x7b, 0x83, 0x85, 0xe8, 0x55, 0xc8, + 0x11, 0xf9, 0xd0, 0x1d, 0x9d, 0x12, 0x64, 0xab, 0xf1, 0xd2, 0x78, 0x43, 0x5e, 0x5c, 0x0e, 0x30, + 0xab, 0xc9, 0x0f, 0x4a, 0x09, 0x35, 0x4c, 0x0b, 0xed, 0x41, 0xfe, 0x26, 0x76, 0xcc, 0x1d, 0xd3, + 0x60, 0xb4, 0x09, 0x3b, 0x8b, 0x97, 0x9e, 0x19, 0x93, 0xf6, 0xf5, 0x10, 0x6a, 0xc3, 0xd3, 0x3d, + 0x5c, 0x86, 0xad, 0xf5, 0xeb, 0x35, 0xb5, 0x7e, 0xa5, 0x5e, 0x5b, 0x56, 0x23, 0x94, 0xe7, 0x3e, + 0x2d, 0x41, 0x2e, 0xd4, 0x17, 0xa2, 0xb6, 0xac, 0x5e, 0x67, 0x1b, 0x3b, 0x9c, 0xe3, 0xfc, 0x0b, + 0x9d, 0x84, 0xec, 0x4e, 0xaf, 0xdd, 0x66, 0x62, 0xc3, 0x6c, 0x5e, 0x86, 0x14, 0x10, 0x91, 0x21, + 0x5a, 0x8a, 0x2b, 0x02, 0xaa, 0xa5, 0xc8, 0xdf, 0xe8, 0x0c, 0xe4, 0x4c, 0x57, 0x73, 0x70, 0x17, + 0xeb, 0x1e, 0x6e, 0xcd, 0xa6, 0x16, 0xa4, 0x73, 0x99, 0x6a, 0x62, 0x56, 0x52, 0xc1, 0x74, 0x55, + 0x5e, 0x8a, 0xe6, 0x20, 0x23, 0x64, 0x6f, 0x76, 0x82, 0x40, 0xa8, 0xfe, 0x37, 0xab, 0xe3, 0xd8, + 0x69, 0x51, 0xc7, 0xbe, 0x95, 0x27, 0x61, 0x6a, 0x60, 0x90, 0xa8, 0x04, 0xb9, 0xe5, 0xda, 0xd2, + 0x6a, 0x45, 0xad, 0x34, 0xeb, 0x1b, 0xeb, 0xf2, 0x11, 0x54, 0x84, 0xd0, 0xb8, 0x65, 0xe9, 0x7c, + 0x36, 0xf3, 0xc5, 0x49, 0xf9, 0xfd, 0xef, 0x7f, 0xff, 0xfb, 0x13, 0xca, 0x2f, 0xa6, 0x61, 0x26, + 0x4e, 0xcb, 0xc5, 0x2a, 0xdc, 0x80, 0x27, 0xc9, 0x08, 0x4f, 0x2a, 0x30, 0xd1, 0xd6, 0xb7, 0x71, + 0x9b, 0x0e, 0xae, 0x78, 0xe9, 0x91, 0xb1, 0xf4, 0xe8, 0xe2, 0x2a, 0x41, 0x51, 0x19, 0x26, 0x7a, + 0x91, 0x73, 0x6e, 0x82, 0x52, 0x38, 0x3f, 0x1e, 0x05, 0xa2, 0xfd, 0x38, 0x97, 0x4f, 0x42, 0x96, + 0xfc, 0xcf, 0xa6, 0x25, 0xcd, 0xa6, 0x85, 0x14, 0xd0, 0x69, 0x99, 0x83, 0x0c, 0x55, 0x6c, 0x2d, + 0xec, 0x4f, 0x99, 0xf8, 0x26, 0xaa, 0xa0, 0x85, 0x77, 0xf4, 0x5e, 0xdb, 0xd3, 0x6e, 0xea, 0xed, + 0x1e, 0xa6, 0x2a, 0x2a, 0xab, 0xe6, 0x79, 0xe1, 0x75, 0x52, 0x86, 0xe6, 0x21, 0xc7, 0xf4, 0xa0, + 0x69, 0xb5, 0xf0, 0x6d, 0x6a, 0x09, 0x27, 0x54, 0xa6, 0x1a, 0xeb, 0xa4, 0x84, 0x34, 0xff, 0xba, + 0x6b, 0x5b, 0x42, 0x99, 0xd0, 0x26, 0x48, 0x01, 0x6d, 0xfe, 0xe9, 0x7e, 0x23, 0x7c, 0x7f, 0xfc, + 0xf0, 0x06, 0xb4, 0xdf, 0x59, 0x28, 0x51, 0x88, 0x27, 0xf8, 0x5a, 0xd5, 0xdb, 0xb3, 0x53, 0x54, + 0x00, 0x8a, 0xac, 0x78, 0x83, 0x97, 0x2a, 0x3f, 0x97, 0x80, 0x14, 0x35, 0x05, 0x25, 0xc8, 0x35, + 0x5f, 0xdd, 0xac, 0x69, 0xcb, 0x1b, 0x5b, 0xd5, 0xd5, 0x9a, 0x2c, 0x91, 0xa9, 0xa7, 0x05, 0x57, + 0x56, 0x37, 0x2a, 0x4d, 0x39, 0xe1, 0x7f, 0xd7, 0xd7, 0x9b, 0x97, 0x9f, 0x94, 0x93, 0x3e, 0xc2, + 0x16, 0x2b, 0x48, 0x85, 0x01, 0x9e, 0xb8, 0x24, 0x4f, 0x20, 0x19, 0xf2, 0x8c, 0x40, 0xfd, 0x95, + 0xda, 0xf2, 0xe5, 0x27, 0xe5, 0x74, 0xb4, 0xe4, 0x89, 0x4b, 0xf2, 0x24, 0x2a, 0x40, 0x96, 0x96, + 0x54, 0x37, 0x36, 0x56, 0xe5, 0x8c, 0x4f, 0xb3, 0xd1, 0x54, 0xeb, 0xeb, 0x2b, 0x72, 0xd6, 0xa7, + 0xb9, 0xa2, 0x6e, 0x6c, 0x6d, 0xca, 0xe0, 0x53, 0x58, 0xab, 0x35, 0x1a, 0x95, 0x95, 0x9a, 0x9c, + 0xf3, 0x21, 0xaa, 0xaf, 0x36, 0x6b, 0x0d, 0x39, 0x1f, 0xe9, 0xd6, 0x13, 0x97, 0xe4, 0x82, 0xdf, + 0x44, 0x6d, 0x7d, 0x6b, 0x4d, 0x2e, 0xa2, 0x29, 0x28, 0xb0, 0x26, 0x44, 0x27, 0x4a, 0x7d, 0x45, + 0x97, 0x9f, 0x94, 0xe5, 0xa0, 0x23, 0x8c, 0xca, 0x54, 0xa4, 0xe0, 0xf2, 0x93, 0x32, 0x52, 0x96, + 0x60, 0x82, 0x8a, 0x21, 0x42, 0x50, 0x5c, 0xad, 0x54, 0x6b, 0xab, 0xda, 0xc6, 0x26, 0x59, 0x34, + 0x95, 0x55, 0x59, 0x0a, 0xca, 0xd4, 0xda, 0x7b, 0xb6, 0xea, 0x6a, 0x6d, 0x59, 0x4e, 0x84, 0xcb, + 0x36, 0x6b, 0x95, 0x66, 0x6d, 0x59, 0x4e, 0x2a, 0x06, 0xcc, 0xc4, 0x99, 0xc0, 0xd8, 0x25, 0x14, + 0x92, 0x85, 0xc4, 0x10, 0x59, 0xa0, 0xb4, 0xfa, 0x65, 0x41, 0xf9, 0x42, 0x02, 0xa6, 0x63, 0xdc, + 0x80, 0xd8, 0x46, 0x5e, 0x82, 0x09, 0x26, 0xcb, 0x4c, 0x15, 0x3f, 0x1c, 0xeb, 0x4f, 0x50, 0xc9, + 0x1e, 0x70, 0x8e, 0x28, 0x5e, 0xd8, 0x6d, 0x4c, 0x0e, 0x71, 0x1b, 0x09, 0x89, 0x01, 0x81, 0xfd, + 0xfa, 0x01, 0x73, 0xcd, 0x3c, 0x9a, 0xcb, 0xe3, 0x78, 0x34, 0xb4, 0xec, 0x70, 0x66, 0x7b, 0x22, + 0xc6, 0x6c, 0x3f, 0x07, 0x53, 0x03, 0x84, 0xc6, 0x36, 0x9f, 0xdf, 0x2c, 0xc1, 0xec, 0x30, 0xe6, + 0x8c, 0x50, 0x89, 0x89, 0x88, 0x4a, 0x7c, 0xae, 0x9f, 0x83, 0xa7, 0x87, 0x4f, 0xc2, 0xc0, 0x5c, + 0x7f, 0x42, 0x82, 0x63, 0xf1, 0xe1, 0x41, 0x6c, 0x1f, 0x5e, 0x84, 0x74, 0x07, 0x7b, 0x7b, 0xb6, + 0x70, 0x84, 0x1f, 0x8a, 0x71, 0xaf, 0x48, 0x75, 0xff, 0x64, 0x73, 0xac, 0xb0, 0x7f, 0x96, 0x1c, + 0xe6, 0xe3, 0xb3, 0xde, 0x0c, 0xf4, 0xf4, 0xdb, 0x12, 0x70, 0x34, 0x96, 0x78, 0x6c, 0x47, 0xef, + 0x07, 0x30, 0xad, 0x6e, 0xcf, 0x63, 0xce, 0x2e, 0xd3, 0xc4, 0x59, 0x5a, 0x42, 0x95, 0x17, 0xd1, + 0xb2, 0x3d, 0xcf, 0xaf, 0x67, 0x46, 0x14, 0x58, 0x11, 0x05, 0x78, 0x26, 0xe8, 0x68, 0x8a, 0x76, + 0xf4, 0xd4, 0x90, 0x91, 0x0e, 0x08, 0xe6, 0xe3, 0x20, 0x1b, 0x6d, 0x13, 0x5b, 0x9e, 0xe6, 0x7a, + 0x0e, 0xd6, 0x3b, 0xa6, 0xb5, 0xcb, 0xec, 0x6c, 0x79, 0x62, 0x47, 0x6f, 0xbb, 0x58, 0x2d, 0xb1, + 0xea, 0x86, 0xa8, 0x25, 0x18, 0x54, 0x80, 0x9c, 0x10, 0x46, 0x3a, 0x82, 0xc1, 0xaa, 0x7d, 0x0c, + 0xe5, 0xbb, 0xb3, 0x90, 0x0b, 0x05, 0x53, 0xe8, 0x34, 0xe4, 0x5f, 0xd7, 0x6f, 0xea, 0x9a, 0x08, + 0x90, 0x19, 0x27, 0x72, 0xa4, 0x6c, 0x93, 0x07, 0xc9, 0x8f, 0xc3, 0x0c, 0x05, 0xb1, 0x7b, 0x1e, + 0x76, 0x34, 0xa3, 0xad, 0xbb, 0x2e, 0x65, 0x5a, 0x86, 0x82, 0x22, 0x52, 0xb7, 0x41, 0xaa, 0x96, + 0x44, 0x0d, 0x7a, 0x0a, 0xa6, 0x29, 0x46, 0xa7, 0xd7, 0xf6, 0xcc, 0x6e, 0x1b, 0x6b, 0x24, 0x64, + 0x77, 0xa9, 0xc9, 0xf1, 0x7b, 0x36, 0x45, 0x20, 0xd6, 0x38, 0x00, 0xe9, 0x91, 0x8b, 0x96, 0xe1, + 0x7e, 0x8a, 0xb6, 0x8b, 0x2d, 0xec, 0xe8, 0x1e, 0xd6, 0xf0, 0xfb, 0x7a, 0x7a, 0xdb, 0xd5, 0x74, + 0xab, 0xa5, 0xed, 0xe9, 0xee, 0xde, 0xec, 0x8c, 0xef, 0x96, 0x9c, 0x20, 0x80, 0x2b, 0x1c, 0xae, + 0x46, 0xc1, 0x2a, 0x56, 0xeb, 0xaa, 0xee, 0xee, 0xa1, 0x32, 0x1c, 0xa3, 0x54, 0x5c, 0xcf, 0x31, + 0xad, 0x5d, 0xcd, 0xd8, 0xc3, 0xc6, 0x0d, 0xad, 0xe7, 0xed, 0x3c, 0x33, 0x7b, 0x32, 0xdc, 0x3e, + 0xed, 0x61, 0x83, 0xc2, 0x2c, 0x11, 0x90, 0x2d, 0x6f, 0xe7, 0x19, 0xd4, 0x80, 0x3c, 0x99, 0x8c, + 0x8e, 0xf9, 0x06, 0xd6, 0x76, 0x6c, 0x87, 0xda, 0xd0, 0x62, 0x8c, 0x6a, 0x0a, 0x71, 0x70, 0x71, + 0x83, 0x23, 0xac, 0xd9, 0x2d, 0x5c, 0x9e, 0x68, 0x6c, 0xd6, 0x6a, 0xcb, 0x6a, 0x4e, 0x50, 0xb9, + 0x62, 0x3b, 0x44, 0xa0, 0x76, 0x6d, 0x9f, 0xc1, 0x39, 0x26, 0x50, 0xbb, 0xb6, 0x60, 0xef, 0x53, + 0x30, 0x6d, 0x18, 0x6c, 0xcc, 0xa6, 0xa1, 0xf1, 0xc0, 0xda, 0x9d, 0x95, 0x23, 0xcc, 0x32, 0x8c, + 0x15, 0x06, 0xc0, 0x65, 0xdc, 0x45, 0xcf, 0xc2, 0xd1, 0x80, 0x59, 0x61, 0xc4, 0xa9, 0x81, 0x51, + 0xf6, 0xa3, 0x3e, 0x05, 0xd3, 0xdd, 0xfd, 0x41, 0x44, 0x14, 0x69, 0xb1, 0xbb, 0xdf, 0x8f, 0xf6, + 0x34, 0xcc, 0x74, 0xf7, 0xba, 0x83, 0x78, 0xe7, 0xc3, 0x78, 0xa8, 0xbb, 0xd7, 0xed, 0x47, 0x7c, + 0x90, 0x66, 0x59, 0x1c, 0x6c, 0x50, 0xef, 0xf0, 0x78, 0x18, 0x3c, 0x54, 0x81, 0x16, 0x41, 0x36, + 0x0c, 0x0d, 0x5b, 0xfa, 0x76, 0x1b, 0x6b, 0xba, 0x83, 0x2d, 0xdd, 0x9d, 0x9d, 0xa7, 0xc0, 0x29, + 0xcf, 0xe9, 0x61, 0xb5, 0x68, 0x18, 0x35, 0x5a, 0x59, 0xa1, 0x75, 0xe8, 0x3c, 0x4c, 0xd9, 0xdb, + 0xaf, 0x1b, 0x4c, 0x22, 0xb5, 0xae, 0x83, 0x77, 0xcc, 0xdb, 0xb3, 0x0f, 0x50, 0xf6, 0x96, 0x48, + 0x05, 0x95, 0xc7, 0x4d, 0x5a, 0x8c, 0x1e, 0x06, 0xd9, 0x70, 0xf7, 0x74, 0xa7, 0x4b, 0x55, 0xb2, + 0xdb, 0xd5, 0x0d, 0x3c, 0xfb, 0x20, 0x03, 0x65, 0xe5, 0xeb, 0xa2, 0x98, 0xac, 0x08, 0xf7, 0x96, + 0xb9, 0xe3, 0x09, 0x8a, 0x67, 0xd9, 0x8a, 0xa0, 0x65, 0x9c, 0xda, 0x39, 0x90, 0x09, 0x27, 0x22, + 0x0d, 0x9f, 0xa3, 0x60, 0xc5, 0xee, 0x5e, 0x37, 0xdc, 0xee, 0x19, 0x28, 0x10, 0xc8, 0xa0, 0xd1, + 0x87, 0x99, 0xe3, 0xd6, 0xdd, 0x0b, 0xb5, 0xf8, 0x24, 0x1c, 0x23, 0x40, 0x1d, 0xec, 0xe9, 0x2d, + 0xdd, 0xd3, 0x43, 0xd0, 0x8f, 0x52, 0x68, 0xc2, 0xf6, 0x35, 0x5e, 0x19, 0xe9, 0xa7, 0xd3, 0xdb, + 0xde, 0xf7, 0x05, 0xeb, 0x31, 0xd6, 0x4f, 0x52, 0x26, 0x44, 0xeb, 0x5d, 0x8b, 0xa6, 0x94, 0x32, + 0xe4, 0xc3, 0x72, 0x8f, 0xb2, 0xc0, 0x24, 0x5f, 0x96, 0x88, 0x13, 0xb4, 0xb4, 0xb1, 0x4c, 0xdc, + 0x97, 0xd7, 0x6a, 0x72, 0x82, 0xb8, 0x51, 0xab, 0xf5, 0x66, 0x4d, 0x53, 0xb7, 0xd6, 0x9b, 0xf5, + 0xb5, 0x9a, 0x9c, 0x0c, 0x39, 0xf6, 0xd7, 0x52, 0x99, 0x87, 0xe4, 0xb3, 0xca, 0x2f, 0x24, 0xa1, + 0x18, 0x8d, 0xad, 0xd1, 0xf3, 0x70, 0x5c, 0xa4, 0xc8, 0x5c, 0xec, 0x69, 0xb7, 0x4c, 0x87, 0x2e, + 0xc8, 0x8e, 0xce, 0x8c, 0xa3, 0x2f, 0x3f, 0x33, 0x1c, 0xaa, 0x81, 0xbd, 0xf7, 0x9a, 0x0e, 0x59, + 0x6e, 0x1d, 0xdd, 0x43, 0xab, 0x30, 0x6f, 0xd9, 0x9a, 0xeb, 0xe9, 0x56, 0x4b, 0x77, 0x5a, 0x5a, + 0x90, 0x9c, 0xd4, 0x74, 0xc3, 0xc0, 0xae, 0x6b, 0x33, 0x43, 0xe8, 0x53, 0xb9, 0xcf, 0xb2, 0x1b, + 0x1c, 0x38, 0xb0, 0x10, 0x15, 0x0e, 0xda, 0x27, 0xbe, 0xc9, 0x61, 0xe2, 0x7b, 0x12, 0xb2, 0x1d, + 0xbd, 0xab, 0x61, 0xcb, 0x73, 0xf6, 0xa9, 0x7f, 0x9e, 0x51, 0x33, 0x1d, 0xbd, 0x5b, 0x23, 0xdf, + 0xe8, 0x3a, 0x3c, 0x14, 0x80, 0x6a, 0x6d, 0xbc, 0xab, 0x1b, 0xfb, 0x1a, 0x75, 0xc6, 0x69, 0xa2, + 0x47, 0x33, 0x6c, 0x6b, 0xa7, 0x6d, 0x1a, 0x9e, 0x4b, 0xf5, 0x03, 0xd3, 0x71, 0x4a, 0x80, 0xb1, + 0x4a, 0x11, 0xae, 0xb9, 0xb6, 0x45, 0x7d, 0xf0, 0x25, 0x01, 0xfd, 0xee, 0xcd, 0x70, 0x74, 0x96, + 0x52, 0xf2, 0xc4, 0xb5, 0x54, 0x66, 0x42, 0x4e, 0x5f, 0x4b, 0x65, 0xd2, 0xf2, 0xe4, 0xb5, 0x54, + 0x26, 0x23, 0x67, 0xaf, 0xa5, 0x32, 0x59, 0x19, 0x94, 0x0f, 0x64, 0x21, 0x1f, 0x8e, 0x0c, 0x48, + 0xa0, 0x65, 0x50, 0xdb, 0x28, 0x51, 0xed, 0x79, 0xe6, 0xc0, 0x38, 0x62, 0x71, 0x89, 0x18, 0xcd, + 0x72, 0x9a, 0xb9, 0xe1, 0x2a, 0xc3, 0x24, 0x0e, 0x0b, 0x11, 0x6b, 0xcc, 0xdc, 0x9e, 0x8c, 0xca, + 0xbf, 0xd0, 0x0a, 0xa4, 0x5f, 0x77, 0x29, 0xed, 0x34, 0xa5, 0xfd, 0xc0, 0xc1, 0xb4, 0xaf, 0x35, + 0x28, 0xf1, 0xec, 0xb5, 0x86, 0xb6, 0xbe, 0xa1, 0xae, 0x55, 0x56, 0x55, 0x8e, 0x8e, 0x4e, 0x40, + 0xaa, 0xad, 0xbf, 0xb1, 0x1f, 0x35, 0xaf, 0xb4, 0x08, 0x2d, 0x42, 0xa9, 0x67, 0xb1, 0xa8, 0x9b, + 0x4c, 0x15, 0x81, 0x2a, 0x85, 0xa1, 0x8a, 0x41, 0xed, 0x2a, 0x81, 0x1f, 0x53, 0x3c, 0x4e, 0x40, + 0xea, 0x16, 0xd6, 0x6f, 0x44, 0x8d, 0x20, 0x2d, 0x42, 0xe7, 0x20, 0xdf, 0xc2, 0xdb, 0xbd, 0x5d, + 0xcd, 0xc1, 0x2d, 0xdd, 0xf0, 0xa2, 0xaa, 0x3f, 0x47, 0xab, 0x54, 0x5a, 0x83, 0x5e, 0x86, 0x2c, + 0x99, 0x23, 0x8b, 0xce, 0xf1, 0x14, 0x65, 0xc1, 0x63, 0x07, 0xb3, 0x80, 0x4f, 0xb1, 0x40, 0x52, + 0x03, 0x7c, 0x74, 0x0d, 0xd2, 0x9e, 0xee, 0xec, 0x62, 0x8f, 0x6a, 0xfe, 0x62, 0x4c, 0xba, 0x2a, + 0x86, 0x52, 0x93, 0x62, 0x10, 0xb6, 0x52, 0x19, 0xe5, 0x14, 0xd0, 0x55, 0x98, 0x64, 0x7f, 0xb9, + 0xb3, 0xd3, 0x0b, 0xc9, 0xc3, 0x13, 0x53, 0x05, 0xfa, 0xbb, 0xa8, 0xb3, 0x2e, 0xc0, 0x04, 0x15, + 0x36, 0x04, 0xc0, 0xc5, 0x4d, 0x3e, 0x82, 0x32, 0x90, 0x5a, 0xda, 0x50, 0x89, 0xde, 0x92, 0x21, + 0xcf, 0x4a, 0xb5, 0xcd, 0x7a, 0x6d, 0xa9, 0x26, 0x27, 0x94, 0xa7, 0x20, 0xcd, 0x24, 0x88, 0xe8, + 0x34, 0x5f, 0x86, 0xe4, 0x23, 0xfc, 0x93, 0xd3, 0x90, 0x44, 0xed, 0xd6, 0x5a, 0xb5, 0xa6, 0xca, + 0x09, 0x65, 0x0b, 0x4a, 0x7d, 0x5c, 0x47, 0x47, 0x61, 0x4a, 0xad, 0x35, 0x6b, 0xeb, 0x24, 0x6a, + 0xd3, 0xb6, 0xd6, 0x5f, 0x5e, 0xdf, 0x78, 0xef, 0xba, 0x7c, 0x24, 0x5a, 0x2c, 0x14, 0xa4, 0x84, + 0x66, 0x40, 0x0e, 0x8a, 0x1b, 0x1b, 0x5b, 0x2a, 0xed, 0xcd, 0x77, 0x24, 0x40, 0xee, 0x67, 0x1b, + 0x3a, 0x0e, 0xd3, 0xcd, 0x8a, 0xba, 0x52, 0x6b, 0x6a, 0x2c, 0x12, 0xf5, 0x49, 0xcf, 0x80, 0x1c, + 0xae, 0xb8, 0x52, 0xa7, 0x81, 0xf6, 0x3c, 0x9c, 0x0c, 0x97, 0xd6, 0x5e, 0x69, 0xd6, 0xd6, 0x1b, + 0xb4, 0xf1, 0xca, 0xfa, 0x0a, 0xd1, 0xd6, 0x7d, 0xf4, 0x44, 0xec, 0x9b, 0x24, 0x5d, 0x8d, 0xd2, + 0xab, 0xad, 0x2e, 0xcb, 0xa9, 0xfe, 0xe2, 0x8d, 0xf5, 0xda, 0xc6, 0x15, 0x79, 0xa2, 0xbf, 0x75, + 0x1a, 0x0f, 0xa7, 0xd1, 0x1c, 0x1c, 0xeb, 0x2f, 0xd5, 0x6a, 0xeb, 0x4d, 0xf5, 0x55, 0x79, 0xb2, + 0xbf, 0xe1, 0x46, 0x4d, 0xbd, 0x5e, 0x5f, 0xaa, 0xc9, 0x19, 0x74, 0x0c, 0x50, 0xb4, 0x47, 0xcd, + 0xab, 0x1b, 0xcb, 0x72, 0x76, 0x40, 0x3f, 0x29, 0x2e, 0xe4, 0xc3, 0x41, 0xe9, 0x5f, 0x8a, 0x6a, + 0x54, 0x3e, 0x9c, 0x80, 0x5c, 0x28, 0xc8, 0x24, 0xd1, 0x81, 0xde, 0x6e, 0xdb, 0xb7, 0x34, 0xbd, + 0x6d, 0xea, 0x2e, 0xd7, 0x5e, 0x40, 0x8b, 0x2a, 0xa4, 0x64, 0x5c, 0x6d, 0x31, 0xbe, 0xbd, 0x48, + 0xff, 0x75, 0xb4, 0x17, 0x13, 0x72, 0x5a, 0xf9, 0xb8, 0x04, 0x72, 0x7f, 0xf4, 0xd8, 0x37, 0x7c, + 0x69, 0xd8, 0xf0, 0xff, 0x52, 0xe6, 0xee, 0x63, 0x12, 0x14, 0xa3, 0x21, 0x63, 0x5f, 0xf7, 0x4e, + 0xff, 0x95, 0x76, 0xef, 0x77, 0x12, 0x50, 0x88, 0x04, 0x8a, 0xe3, 0xf6, 0xee, 0x7d, 0x30, 0x65, + 0xb6, 0x70, 0xa7, 0x6b, 0x7b, 0xd8, 0x32, 0xf6, 0xb5, 0x36, 0xbe, 0x89, 0xdb, 0xb3, 0x0a, 0x55, + 0xf1, 0x17, 0x0e, 0x0e, 0x45, 0x17, 0xeb, 0x01, 0xde, 0x2a, 0x41, 0x2b, 0x4f, 0xd7, 0x97, 0x6b, + 0x6b, 0x9b, 0x1b, 0xcd, 0xda, 0xfa, 0xd2, 0xab, 0x42, 0xbb, 0xa8, 0xb2, 0xd9, 0x07, 0xf6, 0x2e, + 0x2a, 0xed, 0x4d, 0x90, 0xfb, 0x3b, 0x45, 0x74, 0x45, 0x4c, 0xb7, 0xe4, 0x23, 0x68, 0x1a, 0x4a, + 0xeb, 0x1b, 0x5a, 0xa3, 0xbe, 0x5c, 0xd3, 0x6a, 0x57, 0xae, 0xd4, 0x96, 0x9a, 0x0d, 0x96, 0x5c, + 0xf4, 0xa1, 0x9b, 0x72, 0x22, 0xcc, 0xe2, 0x8f, 0x24, 0x61, 0x3a, 0xa6, 0x27, 0xa8, 0xc2, 0xd3, + 0x02, 0x2c, 0x53, 0xf1, 0xd8, 0x38, 0xbd, 0x5f, 0x24, 0x8e, 0xf9, 0xa6, 0xee, 0x78, 0x3c, 0x8b, + 0xf0, 0x30, 0x10, 0x2e, 0x59, 0x1e, 0xf1, 0x13, 0x1c, 0x9e, 0xb4, 0x65, 0xb9, 0x82, 0x52, 0x50, + 0xce, 0xf2, 0xb6, 0x8f, 0x02, 0xea, 0xda, 0xae, 0xe9, 0x99, 0x37, 0xb1, 0x66, 0x5a, 0x22, 0xc3, + 0x9b, 0x5a, 0x90, 0xce, 0xa5, 0x54, 0x59, 0xd4, 0xd4, 0x2d, 0xcf, 0x87, 0xb6, 0xf0, 0xae, 0xde, + 0x07, 0x4d, 0xfc, 0x98, 0xa4, 0x2a, 0x8b, 0x1a, 0x1f, 0xfa, 0x34, 0xe4, 0x5b, 0x76, 0x8f, 0x04, + 0x54, 0x0c, 0x8e, 0x68, 0x0b, 0x49, 0xcd, 0xb1, 0x32, 0x1f, 0x84, 0x87, 0xca, 0x41, 0x6a, 0x39, + 0xaf, 0xe6, 0x58, 0x19, 0x03, 0x39, 0x0b, 0x25, 0x7d, 0x77, 0xd7, 0x21, 0xc4, 0x05, 0x21, 0x16, + 0xfc, 0x17, 0xfd, 0x62, 0x0a, 0x38, 0x77, 0x0d, 0x32, 0x82, 0x0f, 0xc4, 0x1f, 0x26, 0x9c, 0xd0, + 0xba, 0x2c, 0xa3, 0x95, 0x38, 0x97, 0x55, 0x33, 0x96, 0xa8, 0x3c, 0x0d, 0x79, 0xd3, 0xd5, 0x82, + 0xbd, 0xcd, 0xc4, 0x42, 0xe2, 0x5c, 0x46, 0xcd, 0x99, 0xae, 0xbf, 0x47, 0xa2, 0x7c, 0x22, 0x01, + 0xc5, 0xe8, 0xae, 0x2d, 0x5a, 0x86, 0x4c, 0xdb, 0xe6, 0x9b, 0x2c, 0xec, 0xc8, 0xc0, 0xb9, 0x11, + 0x1b, 0xbd, 0x8b, 0xab, 0x1c, 0x5e, 0xf5, 0x31, 0xe7, 0x7e, 0x4d, 0x82, 0x8c, 0x28, 0x46, 0xc7, + 0x20, 0xd5, 0xd5, 0xbd, 0x3d, 0x4a, 0x6e, 0xa2, 0x9a, 0x90, 0x25, 0x95, 0x7e, 0x93, 0x72, 0xb7, + 0xab, 0xb3, 0x7d, 0x22, 0x5e, 0x4e, 0xbe, 0xc9, 0xbc, 0xb6, 0xb1, 0xde, 0xa2, 0x99, 0x05, 0xbb, + 0xd3, 0xc1, 0x96, 0xe7, 0x8a, 0x79, 0xe5, 0xe5, 0x4b, 0xbc, 0x18, 0x3d, 0x02, 0x53, 0x9e, 0xa3, + 0x9b, 0xed, 0x08, 0x6c, 0x8a, 0xc2, 0xca, 0xa2, 0xc2, 0x07, 0x2e, 0xc3, 0x09, 0x41, 0xb7, 0x85, + 0x3d, 0xdd, 0xd8, 0xc3, 0xad, 0x00, 0x29, 0x4d, 0x33, 0x88, 0xc7, 0x39, 0xc0, 0x32, 0xaf, 0x17, + 0xb8, 0xca, 0xe7, 0x12, 0x30, 0x25, 0x72, 0x21, 0x2d, 0x9f, 0x59, 0x6b, 0x00, 0xba, 0x65, 0xd9, + 0x5e, 0x98, 0x5d, 0x83, 0xa2, 0x3c, 0x80, 0xb7, 0x58, 0xf1, 0x91, 0xd4, 0x10, 0x81, 0xb9, 0x2f, + 0x49, 0x00, 0x41, 0xd5, 0x50, 0xbe, 0xcd, 0x43, 0x8e, 0xef, 0xc9, 0xd3, 0x83, 0x1d, 0x2c, 0x7d, + 0x06, 0xac, 0xe8, 0x8a, 0xd9, 0xa6, 0x49, 0xce, 0x6d, 0xbc, 0x6b, 0x5a, 0x7c, 0x77, 0x86, 0x7d, + 0x88, 0x24, 0x67, 0x2a, 0xd8, 0x9e, 0x54, 0x21, 0xe3, 0xe2, 0x8e, 0x6e, 0x79, 0xa6, 0xc1, 0xf7, + 0x5b, 0x2e, 0x1f, 0xaa, 0xf3, 0x8b, 0x0d, 0x8e, 0xad, 0xfa, 0x74, 0x94, 0x73, 0x90, 0x11, 0xa5, + 0xc4, 0xf1, 0x5b, 0xdf, 0x58, 0xaf, 0xc9, 0x47, 0xd0, 0x24, 0x24, 0x1b, 0xb5, 0xa6, 0x2c, 0x91, + 0x20, 0xb6, 0xb2, 0x5a, 0xaf, 0x34, 0xe4, 0x44, 0xf5, 0xef, 0xc2, 0xb4, 0x61, 0x77, 0xfa, 0x1b, + 0xac, 0xca, 0x7d, 0x09, 0x44, 0xf7, 0xaa, 0xf4, 0xda, 0x63, 0x1c, 0x68, 0xd7, 0x6e, 0xeb, 0xd6, + 0xee, 0xa2, 0xed, 0xec, 0x06, 0xc7, 0x62, 0x48, 0xac, 0xe1, 0x86, 0x0e, 0xc7, 0x74, 0xb7, 0xff, + 0x42, 0x92, 0x7e, 0x38, 0x91, 0x5c, 0xd9, 0xac, 0xfe, 0x78, 0x62, 0x6e, 0x85, 0x21, 0x6e, 0x8a, + 0xe1, 0xa8, 0x78, 0xa7, 0x8d, 0x0d, 0xd2, 0x79, 0xf8, 0x68, 0x0a, 0xa6, 0xf4, 0x8e, 0x69, 0xd9, + 0x17, 0xe8, 0xbf, 0xfc, 0x50, 0xcd, 0x04, 0xfd, 0x98, 0x1b, 0x79, 0xfa, 0xa6, 0x7c, 0x99, 0x29, + 0x30, 0x34, 0x6a, 0x0f, 0x7b, 0xf6, 0x4f, 0xbe, 0xe3, 0xc7, 0x26, 0x82, 0xdc, 0x67, 0x79, 0x0d, + 0x64, 0x11, 0x76, 0x63, 0xcb, 0xb0, 0x89, 0xb4, 0x8d, 0xa6, 0xf1, 0xa7, 0x82, 0x46, 0x89, 0xe3, + 0xd6, 0x38, 0x6a, 0xf9, 0x79, 0xc8, 0xf8, 0x64, 0x0e, 0xde, 0x4e, 0x9a, 0xfd, 0x9f, 0x82, 0x88, + 0x8f, 0x51, 0x7e, 0x09, 0x80, 0x39, 0x3b, 0x2c, 0x2d, 0x7b, 0x30, 0xfe, 0x57, 0x04, 0x7e, 0x96, + 0xe2, 0x10, 0x2d, 0x54, 0x5e, 0x81, 0x62, 0xcb, 0xb6, 0x3c, 0xcd, 0xee, 0x98, 0x1e, 0xee, 0x74, + 0xbd, 0xfd, 0x51, 0x44, 0xfe, 0x8c, 0x11, 0xc9, 0xa8, 0x05, 0x82, 0xb7, 0x21, 0xd0, 0x48, 0x4f, + 0xd8, 0xce, 0xda, 0x38, 0x3d, 0xf9, 0x73, 0xbf, 0x27, 0x14, 0x87, 0xf4, 0xa4, 0x5a, 0xfb, 0xe5, + 0xcf, 0x9f, 0x92, 0x3e, 0xf7, 0xf9, 0x53, 0xd2, 0xef, 0x7c, 0xfe, 0x94, 0xf4, 0xa1, 0x2f, 0x9c, + 0x3a, 0xf2, 0xb9, 0x2f, 0x9c, 0x3a, 0xf2, 0x9b, 0x5f, 0x38, 0x75, 0xe4, 0xb5, 0x47, 0x76, 0x4d, + 0x6f, 0xaf, 0xb7, 0xbd, 0x68, 0xd8, 0x9d, 0x0b, 0x86, 0xed, 0x76, 0x6c, 0x97, 0xff, 0xf7, 0x98, + 0xdb, 0xba, 0xc1, 0xe5, 0xc7, 0xbb, 0xcd, 0xa4, 0x60, 0x3b, 0xcd, 0x76, 0xd4, 0xe0, 0x0f, 0x1f, + 0x81, 0x99, 0x5d, 0x7b, 0xd7, 0xa6, 0x9f, 0x17, 0xc8, 0x5f, 0x5c, 0x40, 0xb2, 0x7e, 0xe9, 0x18, + 0x42, 0xb2, 0x0e, 0xd3, 0x1c, 0x58, 0xa3, 0x87, 0x3b, 0x58, 0x22, 0x0b, 0x1d, 0xb8, 0x8b, 0x32, + 0xfb, 0x33, 0xbf, 0x47, 0x7d, 0x56, 0x75, 0x8a, 0xa3, 0x92, 0x3a, 0x96, 0xeb, 0x2a, 0xab, 0x70, + 0x34, 0x42, 0x8f, 0x59, 0x10, 0xec, 0x8c, 0xa0, 0xf8, 0xef, 0x39, 0xc5, 0xe9, 0x10, 0xc5, 0x06, + 0x47, 0x2d, 0x2f, 0x41, 0xe1, 0x30, 0xb4, 0x7e, 0x89, 0xd3, 0xca, 0xe3, 0x30, 0x91, 0x15, 0x28, + 0x51, 0x22, 0x46, 0xcf, 0xf5, 0xec, 0x0e, 0x9d, 0xc3, 0x83, 0xc9, 0xfc, 0x87, 0xdf, 0x63, 0x2a, + 0xbd, 0x48, 0xd0, 0x96, 0x7c, 0xac, 0x72, 0x19, 0xe8, 0x79, 0x96, 0x16, 0x36, 0xda, 0x23, 0x28, + 0xfc, 0x32, 0xef, 0x88, 0x0f, 0x5f, 0xbe, 0x0e, 0x33, 0xe4, 0x6f, 0x6a, 0x3d, 0xc3, 0x3d, 0x19, + 0xbd, 0xe5, 0x32, 0xfb, 0x5f, 0xbe, 0x99, 0x59, 0x8d, 0x69, 0x9f, 0x40, 0xa8, 0x4f, 0xa1, 0x59, + 0xdc, 0xc5, 0x9e, 0x87, 0x1d, 0x57, 0xd3, 0xdb, 0x71, 0xdd, 0x0b, 0xe5, 0xac, 0x67, 0x7f, 0xe0, + 0xcb, 0xd1, 0x59, 0x5c, 0x61, 0x98, 0x95, 0x76, 0xbb, 0xbc, 0x05, 0xc7, 0x63, 0xa4, 0x62, 0x0c, + 0x9a, 0x1f, 0xe1, 0x34, 0x67, 0x06, 0x24, 0x83, 0x90, 0xdd, 0x04, 0x51, 0xee, 0xcf, 0xe5, 0x18, + 0x34, 0x3f, 0xca, 0x69, 0x22, 0x8e, 0x2b, 0xa6, 0x94, 0x50, 0xbc, 0x06, 0x53, 0x37, 0xb1, 0xb3, + 0x6d, 0xbb, 0x7c, 0x9f, 0x60, 0x0c, 0x72, 0x1f, 0xe3, 0xe4, 0x4a, 0x1c, 0x91, 0x6e, 0x1c, 0x10, + 0x5a, 0xcf, 0x42, 0x66, 0x47, 0x37, 0xf0, 0x18, 0x24, 0xee, 0x72, 0x12, 0x93, 0x04, 0x9e, 0xa0, + 0x56, 0x20, 0xbf, 0x6b, 0x73, 0x07, 0x6a, 0x34, 0xfa, 0xc7, 0x39, 0x7a, 0x4e, 0xe0, 0x70, 0x12, + 0x5d, 0xbb, 0xdb, 0x6b, 0x13, 0xef, 0x6a, 0x34, 0x89, 0x1f, 0x14, 0x24, 0x04, 0x0e, 0x27, 0x71, + 0x08, 0xb6, 0xbe, 0x29, 0x48, 0xb8, 0x21, 0x7e, 0xbe, 0x04, 0x39, 0xdb, 0x6a, 0xef, 0xdb, 0xd6, + 0x38, 0x9d, 0xf8, 0x21, 0x4e, 0x01, 0x38, 0x0a, 0x21, 0xf0, 0x1c, 0x64, 0xc7, 0x9d, 0x88, 0x1f, + 0xfd, 0xb2, 0x58, 0x1e, 0x62, 0x06, 0x56, 0xa0, 0x24, 0x14, 0x94, 0x69, 0x5b, 0x63, 0x90, 0xf8, + 0x31, 0x4e, 0xa2, 0x18, 0x42, 0xe3, 0xc3, 0xf0, 0xb0, 0xeb, 0xed, 0xe2, 0x71, 0x88, 0x7c, 0x42, + 0x0c, 0x83, 0xa3, 0x70, 0x56, 0x6e, 0x63, 0xcb, 0xd8, 0x1b, 0x8f, 0xc2, 0x27, 0x05, 0x2b, 0x05, + 0x0e, 0x21, 0xb1, 0x04, 0x85, 0x8e, 0xee, 0xb8, 0x7b, 0x7a, 0x7b, 0xac, 0xe9, 0xf8, 0x14, 0xa7, + 0x91, 0xf7, 0x91, 0x38, 0x47, 0x7a, 0xd6, 0x61, 0xc8, 0xfc, 0xb8, 0xe0, 0x48, 0x08, 0x8d, 0x2f, + 0x3d, 0xd7, 0xa3, 0x9b, 0x2a, 0x87, 0xa1, 0xf6, 0x13, 0x62, 0xe9, 0x31, 0xdc, 0xb5, 0x30, 0xc5, + 0xe7, 0x20, 0xeb, 0x9a, 0x6f, 0x8c, 0x45, 0xe6, 0x9f, 0x88, 0x99, 0xa6, 0x08, 0x04, 0xf9, 0x55, + 0x38, 0x11, 0x6b, 0x26, 0xc6, 0x20, 0xf6, 0x93, 0x9c, 0xd8, 0xb1, 0x18, 0x53, 0xc1, 0x55, 0xc2, + 0x61, 0x49, 0xfe, 0x94, 0x50, 0x09, 0xb8, 0x8f, 0xd6, 0x26, 0x09, 0x69, 0x5d, 0x7d, 0xe7, 0x70, + 0x5c, 0xfb, 0xa7, 0x82, 0x6b, 0x0c, 0x37, 0xc2, 0xb5, 0x26, 0x1c, 0xe3, 0x14, 0x0f, 0x37, 0xaf, + 0x3f, 0x2d, 0x14, 0x2b, 0xc3, 0xde, 0x8a, 0xce, 0xee, 0xd7, 0xc2, 0x9c, 0xcf, 0x4e, 0x11, 0x3b, + 0xb9, 0x5a, 0x47, 0xef, 0x8e, 0x41, 0xf9, 0x67, 0x38, 0x65, 0xa1, 0xf1, 0xfd, 0xe0, 0xcb, 0x5d, + 0xd3, 0xbb, 0x84, 0xf8, 0x2b, 0x30, 0x2b, 0x88, 0xf7, 0x2c, 0x07, 0x1b, 0xf6, 0xae, 0x65, 0xbe, + 0x81, 0x5b, 0x63, 0x90, 0xfe, 0x67, 0x7d, 0x53, 0xb5, 0x15, 0x42, 0x27, 0x94, 0xeb, 0x20, 0xfb, + 0xbe, 0x8a, 0x66, 0x76, 0xba, 0xb6, 0xe3, 0x8d, 0xa0, 0xf8, 0x69, 0x31, 0x53, 0x3e, 0x5e, 0x9d, + 0xa2, 0x95, 0x6b, 0xc0, 0x4e, 0x1a, 0x8d, 0x2b, 0x92, 0x9f, 0xe1, 0x84, 0x0a, 0x01, 0x16, 0x57, + 0x1c, 0x86, 0xdd, 0xe9, 0xea, 0xce, 0x38, 0xfa, 0xef, 0x67, 0x85, 0xe2, 0xe0, 0x28, 0x5c, 0x71, + 0x10, 0x7f, 0x8d, 0x58, 0xfb, 0x31, 0x28, 0xfc, 0x9c, 0x50, 0x1c, 0x02, 0x87, 0x93, 0x10, 0x0e, + 0xc3, 0x18, 0x24, 0xfe, 0xb9, 0x20, 0x21, 0x70, 0x08, 0x89, 0xf7, 0x04, 0x86, 0xd6, 0xc1, 0xbb, + 0xa6, 0xeb, 0xf1, 0xa3, 0x82, 0x07, 0x93, 0xfa, 0xf9, 0x2f, 0x47, 0x9d, 0x30, 0x35, 0x84, 0x4a, + 0x34, 0x11, 0xf7, 0xec, 0x69, 0x40, 0x3f, 0xba, 0x63, 0x9f, 0x15, 0x9a, 0x28, 0x84, 0x46, 0xfa, + 0x16, 0xf2, 0x10, 0x09, 0xdb, 0x0d, 0x12, 0xc6, 0x8e, 0x41, 0xee, 0x5f, 0xf4, 0x75, 0xae, 0x21, + 0x70, 0x09, 0xcd, 0x90, 0xff, 0xd3, 0xb3, 0x6e, 0xe0, 0xfd, 0xb1, 0xa4, 0xf3, 0x17, 0xfa, 0xfc, + 0x9f, 0x2d, 0x86, 0xc9, 0x74, 0x48, 0xa9, 0xcf, 0x9f, 0x1a, 0x1d, 0x01, 0x7d, 0xd3, 0x57, 0xf8, + 0x78, 0xa3, 0xee, 0x54, 0x79, 0x95, 0x08, 0x79, 0xd4, 0xe9, 0x19, 0x4d, 0xec, 0x9b, 0xbf, 0xe2, + 0xcb, 0x79, 0xc4, 0xe7, 0x29, 0x5f, 0x81, 0x42, 0xc4, 0xe1, 0x19, 0x4d, 0xea, 0x5b, 0x38, 0xa9, + 0x7c, 0xd8, 0xdf, 0x29, 0x3f, 0x05, 0x29, 0xe2, 0xbc, 0x8c, 0x46, 0xff, 0x00, 0x47, 0xa7, 0xe0, + 0xe5, 0x17, 0x20, 0x23, 0x9c, 0x96, 0xd1, 0xa8, 0xdf, 0xca, 0x51, 0x7d, 0x14, 0x82, 0x2e, 0x1c, + 0x96, 0xd1, 0xe8, 0x7f, 0x5f, 0xa0, 0x0b, 0x14, 0x82, 0x3e, 0x3e, 0x0b, 0xff, 0xcd, 0xb7, 0xa7, + 0xb8, 0xd1, 0x11, 0xbc, 0x7b, 0x0e, 0x26, 0xb9, 0xa7, 0x32, 0x1a, 0xfb, 0xdb, 0x78, 0xe3, 0x02, + 0xa3, 0xfc, 0x34, 0x4c, 0x8c, 0xc9, 0xf0, 0xef, 0xe4, 0xa8, 0x0c, 0xbe, 0xbc, 0x04, 0xb9, 0x90, + 0x77, 0x32, 0x1a, 0xfd, 0xbb, 0x38, 0x7a, 0x18, 0x8b, 0x74, 0x9d, 0x7b, 0x27, 0xa3, 0x09, 0xfc, + 0x03, 0xd1, 0x75, 0x8e, 0x41, 0xd8, 0x26, 0x1c, 0x93, 0xd1, 0xd8, 0x1f, 0x12, 0x5c, 0x17, 0x28, + 0xe5, 0x97, 0x20, 0xeb, 0x1b, 0x9b, 0xd1, 0xf8, 0xdf, 0xcd, 0xf1, 0x03, 0x1c, 0xc2, 0x81, 0x90, + 0xb1, 0x1b, 0x4d, 0xe2, 0x1f, 0x0a, 0x0e, 0x84, 0xb0, 0xc8, 0x32, 0xea, 0x77, 0x60, 0x46, 0x53, + 0xfa, 0x1e, 0xb1, 0x8c, 0xfa, 0xfc, 0x17, 0x32, 0x9b, 0x54, 0xe7, 0x8f, 0x26, 0xf1, 0xbd, 0x62, + 0x36, 0x29, 0x3c, 0xe9, 0x46, 0xbf, 0x47, 0x30, 0x9a, 0xc6, 0xf7, 0x8b, 0x6e, 0xf4, 0x39, 0x04, + 0xe5, 0x4d, 0x40, 0x83, 0xde, 0xc0, 0x68, 0x7a, 0x1f, 0xe6, 0xf4, 0xa6, 0x06, 0x9c, 0x81, 0xf2, + 0x7b, 0xe1, 0x58, 0xbc, 0x27, 0x30, 0x9a, 0xea, 0x0f, 0x7c, 0xa5, 0x2f, 0x76, 0x0b, 0x3b, 0x02, + 0xe5, 0x66, 0x60, 0x52, 0xc2, 0x5e, 0xc0, 0x68, 0xb2, 0x1f, 0xf9, 0x4a, 0x54, 0x71, 0x87, 0x9d, + 0x80, 0x72, 0x05, 0x20, 0x30, 0xc0, 0xa3, 0x69, 0x7d, 0x8c, 0xd3, 0x0a, 0x21, 0x91, 0xa5, 0xc1, + 0xed, 0xef, 0x68, 0xfc, 0xbb, 0x62, 0x69, 0x70, 0x0c, 0xb2, 0x34, 0x84, 0xe9, 0x1d, 0x8d, 0xfd, + 0x71, 0xb1, 0x34, 0x04, 0x0a, 0x91, 0xec, 0x90, 0x75, 0x1b, 0x4d, 0xe1, 0x87, 0x84, 0x64, 0x87, + 0xb0, 0xca, 0xeb, 0x30, 0x35, 0x60, 0x10, 0x47, 0x93, 0xfa, 0x61, 0x4e, 0x4a, 0xee, 0xb7, 0x87, + 0x61, 0xe3, 0xc5, 0x8d, 0xe1, 0x68, 0x6a, 0x3f, 0xd2, 0x67, 0xbc, 0xb8, 0x2d, 0x2c, 0x3f, 0x07, + 0x19, 0xab, 0xd7, 0x6e, 0x93, 0xc5, 0x33, 0x2a, 0xe5, 0xf5, 0xdf, 0xbf, 0xca, 0xb9, 0x23, 0x10, + 0xca, 0x4f, 0xc1, 0x04, 0xee, 0x6c, 0xe3, 0xd6, 0x28, 0xcc, 0x3f, 0xf8, 0xaa, 0x50, 0x98, 0x04, + 0xba, 0xfc, 0x12, 0x00, 0x4b, 0x8d, 0xd0, 0x43, 0x1a, 0x23, 0x70, 0xbf, 0xf4, 0x55, 0x7e, 0xf8, + 0x32, 0x40, 0x09, 0x08, 0x8c, 0x93, 0xa9, 0xfb, 0x72, 0x94, 0x00, 0x9d, 0x91, 0x67, 0x61, 0xf2, + 0x75, 0xd7, 0xb6, 0x3c, 0x7d, 0x64, 0xc6, 0xf2, 0x0f, 0x39, 0xb6, 0x80, 0x27, 0x0c, 0xeb, 0xd8, + 0x0e, 0xf6, 0xf4, 0x5d, 0x77, 0x14, 0xee, 0x1f, 0x71, 0x5c, 0x1f, 0x81, 0x20, 0x1b, 0xba, 0xeb, + 0x8d, 0x33, 0xee, 0xff, 0x21, 0x90, 0x05, 0x02, 0xe9, 0x34, 0xf9, 0xfb, 0x06, 0x1e, 0x99, 0xe1, + 0xfc, 0x63, 0xd1, 0x69, 0x0e, 0x5f, 0x7e, 0x01, 0xb2, 0xe4, 0x4f, 0x76, 0xa2, 0x7a, 0x04, 0xf2, + 0x9f, 0x70, 0xe4, 0x00, 0x83, 0xb4, 0xec, 0x7a, 0x2d, 0xcf, 0x1c, 0xcd, 0xec, 0x3f, 0xe5, 0x33, + 0x2d, 0xe0, 0xcb, 0x15, 0xc8, 0xb9, 0x5e, 0xab, 0xd5, 0xe3, 0xfe, 0xe9, 0xa8, 0xfc, 0xf0, 0x57, + 0xfd, 0x94, 0x85, 0x8f, 0x43, 0x66, 0xfb, 0xd6, 0x0d, 0xaf, 0x6b, 0xd3, 0xdd, 0xb8, 0x91, 0x19, + 0x62, 0x4e, 0x21, 0x84, 0x52, 0x5e, 0x82, 0x3c, 0x19, 0x8b, 0xb8, 0xa9, 0x32, 0x32, 0x3f, 0xcc, + 0x19, 0x10, 0x41, 0xaa, 0x7e, 0xe3, 0xb0, 0xe4, 0x6e, 0xfc, 0x1e, 0x02, 0xac, 0xd8, 0x2b, 0x36, + 0xdb, 0x3d, 0x78, 0xed, 0xc1, 0xc1, 0xec, 0x6f, 0x34, 0xaf, 0x4b, 0xff, 0x82, 0xff, 0x25, 0xc1, + 0xfd, 0x86, 0xdd, 0xc1, 0xde, 0xf6, 0x8e, 0x77, 0xc1, 0x70, 0xf6, 0xbb, 0x9e, 0x7d, 0xe1, 0xe6, + 0xc5, 0x0b, 0x37, 0xf0, 0xbe, 0xcb, 0x13, 0xbf, 0x48, 0x54, 0x2f, 0xb2, 0xea, 0xc5, 0x9b, 0x17, + 0xe7, 0x62, 0x53, 0xc4, 0xca, 0x2b, 0x90, 0xdd, 0xa4, 0x37, 0x57, 0x5f, 0xc6, 0xfb, 0x68, 0x0e, + 0x26, 0x71, 0xeb, 0xd2, 0x53, 0x4f, 0x5d, 0x7c, 0x96, 0xee, 0xc5, 0xe7, 0xaf, 0x1e, 0x51, 0x45, + 0x01, 0x3a, 0x05, 0x59, 0x17, 0x1b, 0xdd, 0x4b, 0x4f, 0x5d, 0xbe, 0x71, 0x91, 0xee, 0xe3, 0x90, + 0xda, 0xa0, 0xa8, 0x9c, 0xf9, 0xe2, 0x9b, 0xf3, 0xd2, 0x17, 0x7f, 0x68, 0x5e, 0xaa, 0x4e, 0x40, 0xd2, 0xed, 0x75, 0xaa, 0x6b, 0x43, 0x93, 0xdc, 0x4f, 0x44, 0x86, 0x29, 0xc6, 0x21, 0xfe, 0xd0, 0xbb, 0xe6, 0x85, 0xc1, 0xd1, 0xf9, 0xc9, 0xee, 0x4f, 0xa5, 0xe0, 0x54, 0xcc, 0xe0, 0xbb, 0x8e, 0x6d, 0xef, 0x1c, 0x7a, 0xf4, 0x3b, 0x30, 0xb1, 0x49, 0x10, 0xd1, 0x0c, 0x4c, 0x78, 0xb6, 0xa7, 0xb7, 0xe9, 0xb8, 0x93, 0x2a, 0xfb, 0x20, 0xa5, 0xec, 0xf2, 0x4c, 0x82, 0x95, 0x9a, 0xe2, 0xde, 0x4c, 0x1b, 0xeb, 0x3b, 0xec, 0x0c, 0x72, 0x92, 0x6e, 0x8f, 0x66, 0x48, 0x01, 0x3d, 0x6e, 0x3c, 0x03, 0x13, 0x7a, 0x8f, 0xed, 0xec, 0x25, 0xcf, 0xe5, 0x55, 0xf6, 0xa1, 0xac, 0xc2, 0x24, 0x4f, - 0xe1, 0x22, 0x19, 0x92, 0x37, 0xf1, 0x3e, 0xe3, 0xaf, 0x4a, 0xfe, 0x44, 0x17, 0x60, 0x82, 0xf6, - 0x9e, 0x5f, 0xae, 0x38, 0xb1, 0x38, 0xd8, 0xfd, 0x45, 0xda, 0x4b, 0x95, 0xc1, 0x29, 0xd7, 0x21, + 0xe1, 0x22, 0x19, 0x92, 0x37, 0xf0, 0x3e, 0xe3, 0xaf, 0x4a, 0xfe, 0x44, 0x17, 0x60, 0x82, 0xf6, + 0x9e, 0x5f, 0xae, 0x38, 0xb1, 0x38, 0xd8, 0xfd, 0x45, 0xda, 0x4b, 0x95, 0xc1, 0x29, 0xd7, 0x20, 0xb3, 0x6c, 0x77, 0x4c, 0xcb, 0x8e, 0x92, 0xcb, 0x32, 0x72, 0xb4, 0xd3, 0xdd, 0x9e, 0xc7, 0x37, 0xdb, 0xd8, 0x07, 0x3a, 0x06, 0x69, 0x76, 0x28, 0x9d, 0x6f, 0x4f, 0xf2, 0x2f, 0x65, 0x09, 0x26, 0x29, 0xed, 0x8d, 0xae, 0x7f, 0x11, 0x4c, 0x0a, 0x5d, 0x04, 0xe3, 0xe4, 0x13, 0x41, 0x6f, 0x11, - 0xa4, 0x5a, 0xba, 0xa7, 0xf3, 0x81, 0xd3, 0xbf, 0x95, 0x17, 0x20, 0xc3, 0x89, 0xb8, 0xe8, 0x09, - 0x48, 0xda, 0x5d, 0x97, 0x6f, 0x30, 0x9e, 0x1c, 0x3a, 0x96, 0x8d, 0x6e, 0x35, 0xf5, 0x2b, 0x6f, - 0xce, 0x1f, 0x51, 0x09, 0xf4, 0x3b, 0x25, 0x2b, 0xdf, 0x9b, 0x80, 0x53, 0x03, 0xfb, 0x1e, 0x5c, + 0xa4, 0x5a, 0xba, 0xa7, 0xf3, 0x81, 0xd3, 0xbf, 0x95, 0x97, 0x20, 0xc3, 0x89, 0xb8, 0xe8, 0x09, + 0x48, 0xda, 0x5d, 0x97, 0x6f, 0x30, 0x9e, 0x1c, 0x3a, 0x96, 0x8d, 0x6e, 0x35, 0xf5, 0xcb, 0x6f, + 0xcd, 0x1f, 0x51, 0x09, 0xf4, 0xbb, 0x25, 0x2b, 0xdf, 0x93, 0x80, 0x53, 0x03, 0xfb, 0x1e, 0x5c, 0x5b, 0x0c, 0xbb, 0x98, 0x5e, 0x86, 0xcc, 0xb2, 0x50, 0x42, 0xb3, 0x30, 0xe9, 0x62, 0xc3, 0xb6, 0x5a, 0x2e, 0x97, 0x0b, 0xf1, 0x49, 0x98, 0x6c, 0xe9, 0x96, 0xed, 0xf2, 0x1b, 0x14, 0xec, 0xa3, - 0xfa, 0x51, 0xe9, 0x70, 0x6b, 0xbf, 0x20, 0x5a, 0xa2, 0xeb, 0x7f, 0x53, 0x7a, 0xe5, 0xe2, 0xc8, - 0xcd, 0xc3, 0x9b, 0x96, 0x7d, 0xdb, 0xf2, 0x07, 0x11, 0xd9, 0x40, 0x3c, 0xd5, 0xbf, 0x81, 0xf8, - 0x1e, 0xdc, 0x6e, 0xbf, 0x48, 0xe0, 0x9b, 0x04, 0xd5, 0xe7, 0xca, 0xc7, 0x53, 0x83, 0x5c, 0xb9, - 0xed, 0xe8, 0xdd, 0x2e, 0x76, 0xdc, 0x61, 0x5c, 0x39, 0x03, 0xb9, 0xe5, 0xd0, 0x21, 0x81, 0x19, - 0x71, 0x59, 0x47, 0xa2, 0x07, 0x08, 0xd8, 0x87, 0xa2, 0x00, 0x5c, 0x6d, 0xdb, 0xba, 0x17, 0x03, - 0x93, 0x08, 0xc1, 0xd4, 0x2d, 0xef, 0xca, 0x93, 0x31, 0x30, 0x49, 0x01, 0x73, 0x06, 0x72, 0x5b, + 0xfa, 0x51, 0xe9, 0x70, 0x6b, 0xbf, 0x20, 0x5a, 0xa2, 0xeb, 0x7f, 0x53, 0x7a, 0xed, 0xe2, 0xc8, + 0xcd, 0xc3, 0x1b, 0x96, 0x7d, 0xcb, 0xf2, 0x07, 0x11, 0xd9, 0x40, 0x3c, 0xd5, 0xbf, 0x81, 0xf8, + 0x5e, 0xdc, 0x6e, 0xbf, 0x4c, 0xe0, 0x9b, 0x04, 0xd5, 0xe7, 0xca, 0xc7, 0x53, 0x83, 0x5c, 0xb9, + 0xe5, 0xe8, 0xdd, 0x2e, 0x76, 0xdc, 0x61, 0x5c, 0x39, 0x03, 0xb9, 0xe5, 0xd0, 0x21, 0x81, 0x19, + 0x71, 0x59, 0x47, 0xa2, 0x07, 0x08, 0xd8, 0x87, 0xa2, 0x00, 0x5c, 0x69, 0xdb, 0xba, 0x17, 0x03, + 0x93, 0x08, 0xc1, 0xd4, 0x2d, 0xef, 0xf2, 0x93, 0x31, 0x30, 0x49, 0x01, 0x73, 0x06, 0x72, 0x5b, 0xc3, 0x80, 0x52, 0x51, 0x42, 0x4f, 0x5c, 0x8a, 0x81, 0x99, 0xe8, 0x23, 0x14, 0x0b, 0x54, 0x10, 0x40, 0xa7, 0x21, 0x5b, 0xb5, 0xed, 0x76, 0x0c, 0x48, 0x26, 0x44, 0xa7, 0x11, 0x3a, 0xff, 0x10, 0x01, 0xca, 0x86, 0x3a, 0x54, 0xdd, 0xf7, 0xb0, 0x1b, 0x03, 0x93, 0xe7, 0x30, 0x87, 0x17, 0x90, - 0xf7, 0xf0, 0x79, 0x39, 0xac, 0x80, 0x88, 0xf9, 0xbc, 0x27, 0x01, 0xf9, 0x81, 0x7c, 0x48, 0xc5, + 0xf7, 0xf2, 0x79, 0x39, 0xac, 0x80, 0x88, 0xf9, 0xbc, 0x27, 0x01, 0xf9, 0xfe, 0x7c, 0x48, 0xc5, 0x32, 0xaa, 0x44, 0xc3, 0xea, 0x8e, 0xde, 0x11, 0x02, 0x32, 0xe5, 0xaf, 0x6b, 0x5a, 0x3f, 0x54, 0xc3, 0xce, 0x8d, 0x58, 0x7f, 0x73, 0x23, 0x24, 0x51, 0xf9, 0x6c, 0x12, 0x4a, 0x4b, 0xb6, 0xe5, - 0x62, 0xcb, 0xed, 0xb9, 0x9b, 0xb4, 0x0b, 0xe8, 0x49, 0x98, 0xd8, 0x6e, 0xdb, 0xc6, 0x4d, 0xca, + 0x62, 0xcb, 0xed, 0xb9, 0x9b, 0xb4, 0x0b, 0xe8, 0x49, 0x98, 0xd8, 0x6e, 0xdb, 0xc6, 0x0d, 0xca, 0xdb, 0xdc, 0xa5, 0x53, 0x8b, 0x03, 0x9d, 0x59, 0xac, 0x92, 0x7a, 0x06, 0xae, 0x32, 0x60, 0xf4, - 0x1c, 0x64, 0xf0, 0x2d, 0xb3, 0x85, 0x2d, 0x03, 0x73, 0x4d, 0x7b, 0x3a, 0x06, 0xb1, 0xc6, 0x41, - 0x38, 0xae, 0x8f, 0x82, 0xbe, 0x0e, 0xb2, 0xb7, 0xf4, 0xb6, 0xd9, 0xd2, 0x3d, 0xdb, 0xe1, 0x57, - 0x8e, 0x94, 0x18, 0xfc, 0x1b, 0x02, 0x86, 0x13, 0x08, 0x90, 0x50, 0x19, 0x26, 0x6f, 0x61, 0x87, - 0x9e, 0x6f, 0x61, 0x37, 0x81, 0x16, 0xe2, 0xf0, 0x19, 0x04, 0xc7, 0x16, 0x08, 0xe8, 0x32, 0xa4, - 0xf4, 0x6d, 0xc3, 0xa4, 0x47, 0x1f, 0x72, 0x97, 0xee, 0x8f, 0x41, 0xac, 0x54, 0x97, 0xea, 0x0c, - 0x8b, 0x9e, 0xfe, 0xa3, 0xe0, 0xa4, 0xd3, 0xee, 0xbe, 0x65, 0xec, 0x39, 0xb6, 0xb5, 0x4f, 0x0f, - 0xfb, 0xc4, 0x77, 0xba, 0x21, 0x60, 0x44, 0xa7, 0x7d, 0x24, 0xd2, 0xe9, 0x1d, 0xac, 0x7b, 0x3d, - 0x07, 0xf3, 0x7b, 0xf0, 0x71, 0x9d, 0xbe, 0xca, 0x20, 0x44, 0xa7, 0x39, 0x82, 0x52, 0x87, 0x5c, - 0x68, 0x1e, 0xd8, 0x89, 0xf8, 0x3b, 0xda, 0x36, 0x59, 0x24, 0x7c, 0xc1, 0x67, 0x3a, 0xfa, 0x1d, - 0xba, 0x68, 0xd0, 0x71, 0x98, 0x24, 0x95, 0xbb, 0xfc, 0x94, 0x64, 0x52, 0x4d, 0x77, 0xf4, 0x3b, - 0x2b, 0xba, 0x7b, 0x3d, 0x95, 0x49, 0xca, 0x29, 0xe5, 0x53, 0x12, 0x14, 0xa3, 0x53, 0x83, 0x1e, - 0x01, 0x44, 0x30, 0xf4, 0x5d, 0xac, 0x59, 0xbd, 0x8e, 0x46, 0x27, 0x59, 0xd0, 0x2d, 0x75, 0xf4, - 0x3b, 0x95, 0x5d, 0xbc, 0xde, 0xeb, 0xd0, 0x0e, 0xb8, 0x68, 0x0d, 0x64, 0x01, 0x2c, 0x04, 0xd0, - 0x37, 0xb7, 0x03, 0xb7, 0xf2, 0x39, 0x40, 0x35, 0x43, 0x0c, 0xd4, 0x87, 0xff, 0xdb, 0xbc, 0xa4, - 0x16, 0x19, 0x3d, 0xdf, 0x30, 0x44, 0x86, 0x92, 0x8c, 0x0e, 0x45, 0x79, 0x01, 0x4a, 0x7d, 0x52, - 0x80, 0x14, 0x28, 0x74, 0x7b, 0xdb, 0xda, 0x4d, 0xbc, 0x4f, 0xaf, 0x89, 0x31, 0xf3, 0x98, 0x55, - 0x73, 0xdd, 0xde, 0xf6, 0x8b, 0x78, 0x9f, 0xae, 0xbe, 0x72, 0xe6, 0x17, 0x88, 0x03, 0xf5, 0xc6, - 0xbc, 0xa4, 0x3c, 0x02, 0x85, 0x88, 0x18, 0x10, 0x2b, 0xac, 0x77, 0xbb, 0x5c, 0xff, 0x91, 0x3f, - 0x43, 0xc0, 0xaf, 0x40, 0x9e, 0x38, 0x1e, 0xb8, 0xc5, 0x61, 0x1f, 0x82, 0x12, 0x65, 0x85, 0xd6, - 0xcf, 0xeb, 0x02, 0x2d, 0x5e, 0x13, 0x0c, 0x57, 0xa0, 0x10, 0xc0, 0x05, 0x6c, 0xcf, 0x09, 0xa8, - 0x15, 0xdd, 0x55, 0xbe, 0x5f, 0x82, 0x52, 0x9f, 0x6c, 0xa0, 0xe7, 0x20, 0xdb, 0x75, 0xb0, 0x61, - 0xba, 0xec, 0x18, 0xd1, 0x08, 0x16, 0xa6, 0x28, 0xfb, 0x02, 0x0c, 0xb4, 0x0c, 0x05, 0x71, 0xa4, - 0xa4, 0x85, 0xdb, 0xfa, 0xfe, 0xe8, 0x59, 0x60, 0x24, 0xc4, 0x13, 0x29, 0xcb, 0x04, 0x49, 0xf9, - 0x65, 0x09, 0x0a, 0x11, 0xa1, 0x43, 0x2d, 0xb8, 0xff, 0x96, 0xed, 0xe1, 0x70, 0xaa, 0x83, 0x5f, - 0x1d, 0xda, 0xc3, 0xe6, 0xee, 0x9e, 0xc7, 0xbb, 0x7a, 0x72, 0xa0, 0x9d, 0xc0, 0xd0, 0x50, 0x87, - 0x44, 0x52, 0xe7, 0x08, 0x9d, 0x20, 0xe3, 0xc1, 0xee, 0x18, 0x5d, 0xa3, 0x44, 0xd0, 0x06, 0xa0, - 0xee, 0xb6, 0xd7, 0x4f, 0x3a, 0x31, 0x2e, 0x69, 0x99, 0x20, 0x87, 0x09, 0x2a, 0x0d, 0x80, 0x60, - 0xe1, 0xa2, 0xca, 0x38, 0x83, 0x48, 0x1e, 0xd4, 0xc3, 0x72, 0x62, 0x56, 0xaa, 0x6e, 0x7e, 0xf2, - 0xf3, 0xa7, 0x86, 0x1a, 0x9a, 0x57, 0x2e, 0x8d, 0xef, 0x51, 0x09, 0xdd, 0xef, 0x5b, 0x86, 0xbf, - 0x48, 0xc3, 0xe9, 0x41, 0xcb, 0xe0, 0xab, 0xb8, 0xc3, 0x1a, 0x87, 0x83, 0xa3, 0x18, 0xe5, 0x33, - 0x12, 0xe4, 0xfd, 0x95, 0xd4, 0xc0, 0x1e, 0x7a, 0x17, 0x80, 0xdf, 0x96, 0x70, 0x31, 0xef, 0x3b, - 0x48, 0x09, 0xab, 0x21, 0x78, 0xf4, 0x34, 0x64, 0xba, 0x8e, 0xdd, 0xb5, 0x5d, 0x7e, 0xf1, 0x75, - 0x14, 0xae, 0x0f, 0x8d, 0x1e, 0x05, 0x44, 0x03, 0x02, 0xed, 0x96, 0xed, 0x99, 0xd6, 0xae, 0xd6, - 0xb5, 0x6f, 0xf3, 0xf7, 0x04, 0x92, 0xaa, 0x4c, 0x6b, 0x6e, 0xd0, 0x8a, 0x4d, 0x52, 0xae, 0x7c, + 0x02, 0x64, 0xf0, 0x4d, 0xb3, 0x85, 0x2d, 0x03, 0x73, 0x4d, 0x7b, 0x3a, 0x06, 0xb1, 0xc6, 0x41, + 0x38, 0xae, 0x8f, 0x82, 0xbe, 0x06, 0xb2, 0x37, 0xf5, 0xb6, 0xd9, 0xd2, 0x3d, 0xdb, 0xe1, 0x57, + 0x8e, 0x94, 0x18, 0xfc, 0xeb, 0x02, 0x86, 0x13, 0x08, 0x90, 0x50, 0x19, 0x26, 0x6f, 0x62, 0x87, + 0x9e, 0x6f, 0x61, 0x37, 0x81, 0x16, 0xe2, 0xf0, 0x19, 0x04, 0xc7, 0x16, 0x08, 0xe8, 0x29, 0x48, + 0xe9, 0xdb, 0x86, 0x49, 0x8f, 0x3e, 0xe4, 0x2e, 0xdd, 0x1f, 0x83, 0x58, 0xa9, 0x2e, 0xd5, 0x19, + 0x16, 0x3d, 0xfd, 0x47, 0xc1, 0x49, 0xa7, 0xdd, 0x7d, 0xcb, 0xd8, 0x73, 0x6c, 0x6b, 0x9f, 0x1e, + 0xf6, 0x89, 0xef, 0x74, 0x43, 0xc0, 0x88, 0x4e, 0xfb, 0x48, 0xa4, 0xd3, 0x3b, 0x58, 0xf7, 0x7a, + 0x0e, 0xe6, 0xf7, 0xe0, 0xe3, 0x3a, 0x7d, 0x85, 0x41, 0x88, 0x4e, 0x73, 0x04, 0xa5, 0x0e, 0xb9, + 0xd0, 0x3c, 0xb0, 0x13, 0xf1, 0xb7, 0xb5, 0x6d, 0xb2, 0x48, 0xf8, 0x82, 0xcf, 0x74, 0xf4, 0xdb, + 0x74, 0xd1, 0xa0, 0xe3, 0x30, 0x49, 0x2a, 0x77, 0xf9, 0x29, 0xc9, 0xa4, 0x9a, 0xee, 0xe8, 0xb7, + 0x57, 0x74, 0xf7, 0x5a, 0x2a, 0x93, 0x94, 0x53, 0xca, 0xa7, 0x24, 0x28, 0x46, 0xa7, 0x06, 0x3d, + 0x02, 0x88, 0x60, 0xe8, 0xbb, 0x58, 0xb3, 0x7a, 0x1d, 0x8d, 0x4e, 0xb2, 0xa0, 0x5b, 0xea, 0xe8, + 0xb7, 0x2b, 0xbb, 0x78, 0xbd, 0xd7, 0xa1, 0x1d, 0x70, 0xd1, 0x1a, 0xc8, 0x02, 0x58, 0x08, 0xa0, + 0x6f, 0x6e, 0x07, 0x6e, 0xe5, 0x73, 0x80, 0x6a, 0x86, 0x18, 0xa8, 0x0f, 0xff, 0xb7, 0x79, 0x49, + 0x2d, 0x32, 0x7a, 0xbe, 0x61, 0x88, 0x0c, 0x25, 0x19, 0x1d, 0x8a, 0xf2, 0x12, 0x94, 0xfa, 0xa4, + 0x00, 0x29, 0x50, 0xe8, 0xf6, 0xb6, 0xb5, 0x1b, 0x78, 0x9f, 0x5e, 0x13, 0x63, 0xe6, 0x31, 0xab, + 0xe6, 0xba, 0xbd, 0xed, 0x97, 0xf1, 0x3e, 0x5d, 0x7d, 0xe5, 0xcc, 0xcf, 0x13, 0x07, 0xea, 0xcd, + 0x79, 0x49, 0x79, 0x04, 0x0a, 0x11, 0x31, 0x20, 0x56, 0x58, 0xef, 0x76, 0xb9, 0xfe, 0x23, 0x7f, + 0x86, 0x80, 0x5f, 0x83, 0x3c, 0x71, 0x3c, 0x70, 0x8b, 0xc3, 0x3e, 0x04, 0x25, 0xca, 0x0a, 0xad, + 0x9f, 0xd7, 0x05, 0x5a, 0xbc, 0x26, 0x18, 0xae, 0x40, 0x21, 0x80, 0x0b, 0xd8, 0x9e, 0x13, 0x50, + 0x2b, 0xba, 0xab, 0x7c, 0x9f, 0x04, 0xa5, 0x3e, 0xd9, 0x40, 0x2f, 0x40, 0xb6, 0xeb, 0x60, 0xc3, + 0x74, 0xd9, 0x31, 0xa2, 0x11, 0x2c, 0x4c, 0x51, 0xf6, 0x05, 0x18, 0x68, 0x19, 0x0a, 0xe2, 0x48, + 0x49, 0x0b, 0xb7, 0xf5, 0xfd, 0xd1, 0xb3, 0xc0, 0x48, 0x88, 0x27, 0x52, 0x96, 0x09, 0x92, 0xf2, + 0x4b, 0x12, 0x14, 0x22, 0x42, 0x87, 0x5a, 0x70, 0xff, 0x4d, 0xdb, 0xc3, 0xe1, 0x54, 0x07, 0xbf, + 0x3a, 0xb4, 0x87, 0xcd, 0xdd, 0x3d, 0x8f, 0x77, 0xf5, 0xe4, 0x40, 0x3b, 0x81, 0xa1, 0xa1, 0x0e, + 0x89, 0xa4, 0xce, 0x11, 0x3a, 0x41, 0xc6, 0x83, 0xdd, 0x31, 0xba, 0x4a, 0x89, 0xa0, 0x0d, 0x40, + 0xdd, 0x6d, 0xaf, 0x9f, 0x74, 0x62, 0x5c, 0xd2, 0x32, 0x41, 0x0e, 0x13, 0x54, 0x1a, 0x00, 0xc1, + 0xc2, 0x45, 0x95, 0x71, 0x06, 0x91, 0x3c, 0xa8, 0x87, 0xe5, 0xc4, 0xac, 0x54, 0xdd, 0xfc, 0xe4, + 0xe7, 0x4f, 0x0d, 0x35, 0x34, 0xaf, 0x5d, 0x1a, 0xdf, 0xa3, 0x12, 0xba, 0xdf, 0xb7, 0x0c, 0x7f, + 0x9e, 0x86, 0xd3, 0x83, 0x96, 0xc1, 0x57, 0x71, 0x87, 0x35, 0x0e, 0x07, 0x47, 0x31, 0xca, 0x67, + 0x24, 0xc8, 0xfb, 0x2b, 0xa9, 0x81, 0x3d, 0xf4, 0x3c, 0x80, 0xdf, 0x96, 0x70, 0x31, 0xef, 0x3b, + 0x48, 0x09, 0xab, 0x21, 0x78, 0xf4, 0x0c, 0x64, 0xba, 0x8e, 0xdd, 0xb5, 0x5d, 0x7e, 0xf1, 0x75, + 0x14, 0xae, 0x0f, 0x8d, 0x1e, 0x05, 0x44, 0x03, 0x02, 0xed, 0xa6, 0xed, 0x99, 0xd6, 0xae, 0xd6, + 0xb5, 0x6f, 0xf1, 0xf7, 0x04, 0x92, 0xaa, 0x4c, 0x6b, 0xae, 0xd3, 0x8a, 0x4d, 0x52, 0xae, 0x7c, 0x5a, 0x82, 0xac, 0x4f, 0x85, 0xf8, 0x90, 0x7a, 0xab, 0xe5, 0x60, 0xd7, 0xe5, 0xae, 0x80, 0xf8, - 0x44, 0xef, 0x82, 0x49, 0xae, 0x14, 0xfc, 0x6b, 0xd5, 0x71, 0xde, 0xb2, 0x88, 0xce, 0xb8, 0xbf, - 0x9c, 0x66, 0x3a, 0x03, 0x9d, 0x86, 0x7c, 0x4c, 0x6f, 0x72, 0xb7, 0x82, 0x8e, 0xd0, 0xe7, 0x8a, - 0xf8, 0x10, 0xb4, 0xae, 0x63, 0xda, 0x8e, 0xe9, 0xed, 0x53, 0xd3, 0x93, 0x54, 0x65, 0x51, 0xb1, - 0xc9, 0xcb, 0x95, 0x36, 0x94, 0x1a, 0x66, 0xa7, 0x4b, 0x3d, 0x3c, 0xde, 0xf5, 0x2b, 0x41, 0x07, - 0xa5, 0x31, 0x3a, 0x38, 0xb4, 0x6b, 0x89, 0x81, 0xae, 0x9d, 0xff, 0x4d, 0x89, 0xdb, 0x86, 0xfa, - 0xf2, 0xd5, 0xb6, 0xbe, 0x8b, 0x2e, 0xc2, 0xd1, 0xea, 0xea, 0xc6, 0xd2, 0x8b, 0x5a, 0x7d, 0x59, - 0xbb, 0xba, 0x5a, 0x59, 0x09, 0x4e, 0xf1, 0xce, 0x1d, 0x7b, 0xfd, 0xee, 0x02, 0x0a, 0xc1, 0x6e, - 0x59, 0xd4, 0xc5, 0x41, 0x17, 0x60, 0x26, 0x8a, 0x52, 0xa9, 0x36, 0x6a, 0xeb, 0x4d, 0x59, 0x9a, - 0x3b, 0xfa, 0xfa, 0xdd, 0x85, 0xa9, 0x10, 0x46, 0x65, 0xdb, 0xc5, 0x96, 0x37, 0x88, 0xb0, 0xb4, - 0xb1, 0xb6, 0x56, 0x6f, 0xca, 0x89, 0x01, 0x84, 0x25, 0xbb, 0xd3, 0x31, 0x3d, 0xf4, 0x30, 0x4c, - 0x45, 0x11, 0xd6, 0xeb, 0xab, 0x72, 0x72, 0x0e, 0xbd, 0x7e, 0x77, 0xa1, 0x18, 0x82, 0x5e, 0x37, - 0xdb, 0x73, 0x99, 0x0f, 0xfe, 0xe8, 0xa9, 0x23, 0x9f, 0xfc, 0xc7, 0xa7, 0xa4, 0xea, 0xea, 0x3b, - 0xb2, 0xf0, 0x7e, 0x20, 0x01, 0xf3, 0xfd, 0x9e, 0x92, 0x67, 0x76, 0xb0, 0xeb, 0xe9, 0x9d, 0xee, - 0x30, 0xa7, 0xfd, 0x59, 0xc8, 0x36, 0x05, 0xcc, 0xa1, 0x63, 0x99, 0xbb, 0x87, 0x74, 0x55, 0x8b, - 0x7e, 0x53, 0xc2, 0x57, 0xbd, 0x34, 0xa6, 0xaf, 0xea, 0x8f, 0xe3, 0x9e, 0x9c, 0xd5, 0xdf, 0x69, - 0xc0, 0x7d, 0x01, 0x13, 0xb7, 0x0d, 0x93, 0x28, 0x11, 0xb6, 0x9a, 0x19, 0x5b, 0x64, 0x5f, 0x66, - 0x49, 0x2d, 0x51, 0x46, 0x07, 0xab, 0x9d, 0xb9, 0x11, 0xe9, 0x85, 0xb9, 0x11, 0xbe, 0xf1, 0xdc, - 0x68, 0x0d, 0x39, 0x44, 0x1d, 0x8e, 0x9a, 0x61, 0xe5, 0x3f, 0x67, 0x61, 0x52, 0xc5, 0xef, 0xed, - 0x61, 0xd7, 0x43, 0x4f, 0x40, 0x0a, 0x1b, 0x7b, 0xf6, 0xe0, 0xca, 0xe4, 0xa3, 0x5c, 0xac, 0x19, - 0x7b, 0x36, 0x07, 0xbe, 0x76, 0x44, 0xa5, 0xc0, 0xe8, 0x0a, 0x4c, 0xec, 0xb4, 0x7b, 0xee, 0x1e, - 0x57, 0x38, 0xa7, 0x06, 0xb1, 0xae, 0x92, 0xea, 0x00, 0x8d, 0x81, 0x93, 0xc6, 0xe8, 0x73, 0x5a, - 0xc9, 0x61, 0x8d, 0xd1, 0x57, 0xb4, 0x82, 0xc6, 0x08, 0x30, 0x5a, 0x02, 0x30, 0x2d, 0xd3, 0xd3, - 0x8c, 0x3d, 0xdd, 0xb4, 0xb8, 0xe7, 0xaa, 0xc4, 0xa1, 0x9a, 0xde, 0x12, 0x01, 0x09, 0xf0, 0xb3, - 0xa6, 0x28, 0x23, 0x3d, 0x7e, 0x6f, 0x0f, 0x3b, 0xc2, 0x7b, 0x8d, 0xe9, 0xf1, 0xbb, 0x49, 0x75, - 0xa8, 0xc7, 0x14, 0x9c, 0x78, 0xfb, 0xec, 0xaa, 0xb7, 0x77, 0x87, 0x3f, 0x60, 0xb2, 0x30, 0x88, - 0x4a, 0x6f, 0x7a, 0x37, 0xef, 0x04, 0xc8, 0x93, 0x06, 0x2b, 0x41, 0xcf, 0x40, 0xda, 0xa0, 0x4a, - 0x80, 0x5e, 0xc0, 0xcc, 0x5d, 0x9a, 0x8f, 0x41, 0xa6, 0xf5, 0x01, 0x2e, 0x47, 0x40, 0x1b, 0x50, - 0x6c, 0x9b, 0xae, 0xa7, 0xb9, 0x96, 0xde, 0x75, 0xf7, 0x6c, 0xcf, 0xa5, 0x6f, 0x88, 0xe5, 0x2e, - 0x3d, 0x34, 0x48, 0x62, 0xd5, 0x74, 0xbd, 0x86, 0x00, 0x0b, 0x28, 0x15, 0xda, 0xe1, 0x72, 0x42, - 0xd0, 0xde, 0xd9, 0xc1, 0x8e, 0x4f, 0x91, 0xbe, 0x3d, 0x16, 0x4b, 0x70, 0x83, 0xc0, 0x09, 0xcc, - 0x10, 0x41, 0x3b, 0x5c, 0x8e, 0xbe, 0x01, 0xa6, 0xdb, 0xb6, 0xde, 0xf2, 0xe9, 0x69, 0xc6, 0x5e, - 0xcf, 0xba, 0x39, 0x5b, 0xa4, 0x54, 0xcf, 0xc7, 0x74, 0xd3, 0xd6, 0x5b, 0x02, 0x79, 0x89, 0x80, - 0x06, 0x94, 0xa7, 0xda, 0xfd, 0x75, 0x48, 0x83, 0x19, 0xbd, 0xdb, 0x6d, 0xef, 0xf7, 0x93, 0x2f, - 0x51, 0xf2, 0x8f, 0x0c, 0x92, 0xaf, 0x10, 0xe8, 0x21, 0xf4, 0x91, 0x3e, 0x50, 0x89, 0xb6, 0x40, - 0xee, 0x3a, 0x98, 0x9e, 0xcc, 0x60, 0x56, 0x4c, 0x6f, 0xd3, 0x3b, 0x92, 0xb9, 0x4b, 0xe7, 0x06, - 0x89, 0x6f, 0x32, 0xc8, 0x4d, 0x0e, 0x18, 0x50, 0x2e, 0x75, 0xa3, 0x35, 0x8c, 0xac, 0x6d, 0x60, - 0x7a, 0x87, 0x9b, 0x93, 0x9d, 0x1a, 0x4e, 0x96, 0x42, 0xc6, 0x92, 0x8d, 0xd4, 0xa0, 0xab, 0x90, - 0x63, 0xef, 0xf6, 0x10, 0xe7, 0x01, 0xd3, 0xbb, 0x95, 0xb9, 0x4b, 0x67, 0x62, 0x96, 0x2b, 0x05, - 0xba, 0x61, 0x7b, 0x38, 0x20, 0x06, 0xd8, 0x2f, 0x44, 0xdb, 0x70, 0x94, 0xde, 0x33, 0xdd, 0xd7, - 0xa2, 0x2e, 0xe2, 0xec, 0x34, 0xa5, 0xf8, 0xe8, 0x20, 0x45, 0xfa, 0xc8, 0xd2, 0xfe, 0x8d, 0xb0, - 0xaf, 0x18, 0x90, 0x9e, 0xbe, 0x35, 0x58, 0x4b, 0x24, 0x6d, 0xc7, 0xb4, 0xf4, 0xb6, 0xf9, 0x1a, - 0x66, 0xf1, 0x14, 0x7d, 0x62, 0x21, 0x56, 0xd2, 0xae, 0x72, 0x38, 0x6a, 0x07, 0x43, 0x92, 0xb6, - 0x13, 0x2e, 0xaf, 0x4e, 0xf2, 0x2c, 0x88, 0x7f, 0x67, 0x78, 0x52, 0xce, 0xb0, 0x7b, 0xc2, 0xd7, - 0x53, 0x19, 0x90, 0x73, 0xca, 0x59, 0xc8, 0x85, 0xf4, 0x14, 0x31, 0x52, 0xdc, 0xcf, 0xe7, 0xb9, - 0x15, 0xf1, 0xa9, 0x14, 0x21, 0x1f, 0x56, 0x4d, 0xca, 0x87, 0x24, 0xc8, 0x85, 0x94, 0x0e, 0xc1, - 0x14, 0xc1, 0x35, 0xc7, 0x14, 0xa1, 0xf3, 0x19, 0x11, 0xe8, 0x88, 0xfa, 0x04, 0x0d, 0xa3, 0xf2, - 0xb4, 0x90, 0xc7, 0x59, 0x68, 0x1e, 0x72, 0xdd, 0x4b, 0x5d, 0x1f, 0x24, 0x49, 0x41, 0xa0, 0x7b, - 0xa9, 0x2b, 0x00, 0x4e, 0x43, 0x9e, 0x0c, 0x5d, 0x0b, 0x47, 0xf0, 0x59, 0x35, 0x47, 0xca, 0x38, - 0x88, 0xf2, 0xeb, 0x09, 0x90, 0xfb, 0x95, 0x19, 0x7a, 0x1a, 0x52, 0x44, 0x8b, 0x73, 0x35, 0x3d, - 0x37, 0x10, 0x23, 0xf8, 0x56, 0x93, 0x45, 0x9b, 0x1f, 0x22, 0xb1, 0x0e, 0xc5, 0x40, 0x27, 0x88, - 0x06, 0xd3, 0x4d, 0x4b, 0x33, 0x5b, 0xe2, 0x9d, 0x4a, 0xfa, 0x5d, 0x6f, 0x91, 0x68, 0xd6, 0x10, - 0x39, 0x11, 0x8d, 0xd9, 0x9e, 0x03, 0x52, 0x12, 0x7d, 0xe9, 0x13, 0xb5, 0x64, 0xf4, 0xe5, 0x53, - 0x56, 0x22, 0x6e, 0x35, 0x7b, 0xfd, 0xe6, 0x74, 0x8c, 0x3c, 0x09, 0x98, 0xad, 0x6e, 0x4b, 0xf7, - 0x30, 0xf7, 0x47, 0xc3, 0x1e, 0xf6, 0x43, 0x50, 0xd2, 0xbb, 0x5d, 0xcd, 0xf5, 0x74, 0x0f, 0xf3, - 0xd8, 0x73, 0x82, 0xfa, 0xbc, 0x05, 0xbd, 0xdb, 0xa5, 0xef, 0x7c, 0xb1, 0xd8, 0xf3, 0x41, 0x28, - 0x12, 0x0d, 0x6f, 0xea, 0x6d, 0x11, 0xd8, 0xa4, 0x59, 0x88, 0xca, 0x4b, 0x79, 0x70, 0xd4, 0x82, - 0x7c, 0x58, 0xb9, 0xfb, 0xa9, 0x67, 0x29, 0x48, 0x3d, 0x93, 0x32, 0x7a, 0xf1, 0x84, 0x71, 0x48, - 0x5c, 0xd6, 0x49, 0x73, 0xb2, 0xcc, 0x29, 0xe6, 0x5f, 0xc4, 0xd1, 0xe9, 0x3a, 0xf6, 0x2d, 0x76, - 0x99, 0x2a, 0xa3, 0xb2, 0x0f, 0xe5, 0x65, 0x28, 0x46, 0xed, 0x00, 0x2a, 0x42, 0xc2, 0xbb, 0xc3, - 0x5b, 0x49, 0x78, 0x77, 0xd0, 0xc5, 0xd0, 0x0b, 0x69, 0xc5, 0x38, 0xeb, 0xc7, 0xf1, 0x83, 0xa7, - 0xbd, 0xae, 0xa7, 0x32, 0x09, 0x39, 0xa9, 0x94, 0xa0, 0x10, 0xb1, 0x12, 0xca, 0x31, 0x98, 0x89, - 0xd3, 0xf9, 0x8a, 0x09, 0x33, 0x71, 0xaa, 0x1b, 0x5d, 0x81, 0x8c, 0xaf, 0xf4, 0x85, 0x04, 0x0d, - 0xb4, 0xee, 0x23, 0xf9, 0xb0, 0x44, 0x76, 0xc8, 0x44, 0xd0, 0x1d, 0x8a, 0x04, 0x8f, 0x3a, 0xba, - 0xdd, 0x6b, 0xba, 0xbb, 0xa7, 0x7c, 0x33, 0xcc, 0x0e, 0xd3, 0xe7, 0x21, 0xc6, 0xb1, 0x54, 0x83, - 0x60, 0xdc, 0x31, 0x48, 0xf3, 0xd7, 0x16, 0x12, 0x34, 0x73, 0xca, 0xbf, 0x08, 0x43, 0x99, 0x6e, - 0x4f, 0xb2, 0x84, 0x2a, 0xfd, 0x50, 0x34, 0x38, 0x31, 0x54, 0xa5, 0x07, 0x5b, 0x2a, 0x3c, 0x07, - 0xcb, 0xb6, 0x54, 0x7c, 0x42, 0xac, 0xb3, 0xec, 0x83, 0xbe, 0xc2, 0x89, 0xad, 0x16, 0x0f, 0x6e, - 0xb2, 0x2a, 0xff, 0x52, 0x3e, 0x92, 0x84, 0x63, 0xf1, 0x7a, 0x1d, 0x2d, 0x40, 0xbe, 0xa3, 0xdf, - 0xd1, 0xbc, 0x68, 0xea, 0x03, 0x3a, 0xfa, 0x9d, 0x26, 0xcf, 0x7b, 0xc8, 0x90, 0xf4, 0xee, 0xb8, - 0xf4, 0x22, 0x57, 0x5e, 0x25, 0x7f, 0xa2, 0x1b, 0x30, 0xd5, 0xb6, 0x0d, 0xbd, 0xad, 0xb5, 0x75, - 0xd7, 0xd3, 0xb8, 0xd9, 0x67, 0xcb, 0xe9, 0x81, 0x61, 0x7a, 0x9a, 0x5d, 0xb7, 0x32, 0x3d, 0xa2, - 0x82, 0xf8, 0x42, 0x28, 0x51, 0x22, 0xab, 0xba, 0xeb, 0xf1, 0xf0, 0xa1, 0x06, 0xb9, 0x8e, 0xe9, - 0x6e, 0xe3, 0x3d, 0xfd, 0x96, 0x69, 0x3b, 0x7c, 0x5d, 0xc5, 0x48, 0xcf, 0x5a, 0x00, 0xc4, 0x49, - 0x85, 0xf1, 0x42, 0x93, 0x32, 0x11, 0x91, 0x66, 0xa1, 0x59, 0xd2, 0x87, 0xd6, 0x2c, 0x8f, 0xc3, - 0x8c, 0x85, 0xef, 0xd0, 0xbb, 0x82, 0x7c, 0xe5, 0x32, 0x49, 0x61, 0x57, 0xfd, 0x10, 0xa9, 0xf3, - 0xd7, 0xba, 0x4b, 0x77, 0xb5, 0x1e, 0x06, 0x3f, 0x60, 0xd4, 0x44, 0x34, 0x9b, 0xa1, 0xd0, 0x25, - 0x51, 0x5e, 0x61, 0xc5, 0xca, 0xeb, 0x74, 0x72, 0xe2, 0xac, 0xa3, 0x60, 0xbd, 0x14, 0xb0, 0xbe, - 0x09, 0x33, 0x1c, 0xbf, 0x15, 0xe1, 0xfe, 0x40, 0x78, 0x1e, 0x75, 0xba, 0x42, 0x5c, 0x47, 0x02, - 0x7f, 0x38, 0xe3, 0x93, 0xf7, 0xc8, 0x78, 0x04, 0x29, 0xca, 0x96, 0x14, 0x53, 0x37, 0xe4, 0xef, - 0xff, 0xd7, 0x26, 0xe3, 0xfd, 0x49, 0x98, 0x1a, 0x70, 0x2c, 0xfc, 0x81, 0x49, 0xb1, 0x03, 0x4b, - 0xc4, 0x0e, 0x2c, 0x79, 0xe8, 0x81, 0xf1, 0xd9, 0x4e, 0x8d, 0x9e, 0xed, 0x89, 0xb7, 0x73, 0xb6, - 0xd3, 0xf7, 0x38, 0xdb, 0xef, 0xe8, 0x3c, 0x7c, 0x4c, 0x82, 0xb9, 0xe1, 0xee, 0x58, 0xec, 0x84, - 0x3c, 0x02, 0x53, 0x7e, 0x57, 0x7c, 0xf2, 0x4c, 0x3d, 0xca, 0x7e, 0x05, 0xa7, 0x3f, 0xd4, 0xe2, - 0x3d, 0x08, 0xc5, 0x3e, 0x6f, 0x91, 0x09, 0x73, 0x21, 0x92, 0x41, 0x54, 0x3e, 0x90, 0x84, 0x99, - 0x38, 0x87, 0x2e, 0x66, 0xc5, 0xaa, 0x30, 0xdd, 0xc2, 0x86, 0xd9, 0xba, 0xe7, 0x05, 0x3b, 0xc5, - 0xd1, 0xff, 0xff, 0x7a, 0x8d, 0x91, 0x93, 0x1f, 0x03, 0xc8, 0xa8, 0xd8, 0xed, 0x12, 0x07, 0x8d, - 0xbd, 0xf6, 0x6c, 0xe0, 0xae, 0x17, 0x64, 0xda, 0x63, 0xe3, 0x06, 0x0e, 0x22, 0xf0, 0x48, 0xfc, - 0xec, 0xe3, 0xa1, 0x27, 0x79, 0x9a, 0x60, 0x68, 0xc0, 0xcf, 0xdc, 0x6f, 0x1f, 0x95, 0xe5, 0x09, - 0x9e, 0x12, 0x79, 0x82, 0xe4, 0xb0, 0xe8, 0x97, 0x3b, 0xe3, 0x3e, 0x1e, 0x4f, 0x14, 0x3c, 0xc9, - 0x13, 0x05, 0xa9, 0x61, 0xcd, 0x31, 0x9f, 0x3d, 0x68, 0xce, 0x64, 0x17, 0xb9, 0xc3, 0x99, 0x82, - 0xf4, 0xb0, 0xa1, 0x86, 0x9c, 0xeb, 0x60, 0xa8, 0x41, 0xaa, 0xe0, 0x29, 0x91, 0x2a, 0x98, 0x1c, - 0xd6, 0x69, 0xee, 0x4d, 0x06, 0x9d, 0x66, 0xb9, 0x82, 0xe7, 0x43, 0xb9, 0x82, 0x6c, 0xff, 0xce, - 0xe0, 0x40, 0xae, 0xc0, 0xc7, 0xf6, 0x93, 0x05, 0x65, 0x3f, 0x59, 0x90, 0x1f, 0x9a, 0x69, 0xe0, - 0x6e, 0xa0, 0x8f, 0x2c, 0xb2, 0x05, 0x9b, 0x03, 0xd9, 0x02, 0x16, 0xdc, 0x9f, 0x1d, 0x99, 0x2d, - 0xf0, 0x49, 0xf5, 0xa5, 0x0b, 0x36, 0x07, 0xd2, 0x05, 0xc5, 0x61, 0x14, 0xfb, 0x7c, 0xce, 0x80, - 0x62, 0x34, 0x5f, 0xf0, 0x8d, 0xf1, 0xf9, 0x82, 0xa1, 0x01, 0x7d, 0x8c, 0x7f, 0xe9, 0x93, 0x8e, - 0x49, 0x18, 0x7c, 0xf3, 0x90, 0x84, 0x81, 0x3c, 0x2c, 0xb0, 0x8d, 0xf3, 0x2e, 0xfd, 0x06, 0xe2, - 0x32, 0x06, 0x37, 0x62, 0x32, 0x06, 0x2c, 0xb4, 0x7f, 0x78, 0x8c, 0x8c, 0x81, 0x4f, 0x7a, 0x20, - 0x65, 0x70, 0x23, 0x26, 0x65, 0x80, 0x86, 0xd3, 0xed, 0x73, 0x8a, 0xc2, 0x74, 0xa3, 0x39, 0x83, - 0x95, 0x68, 0xce, 0x60, 0xfa, 0x60, 0x5f, 0x94, 0x99, 0x76, 0x9f, 0x5a, 0x38, 0x69, 0x60, 0x0c, - 0x4b, 0x1a, 0xb0, 0xb8, 0xfe, 0xb1, 0x31, 0x93, 0x06, 0x3e, 0xed, 0xd8, 0xac, 0xc1, 0xe6, 0x40, - 0xd6, 0xe0, 0xe8, 0x30, 0x81, 0xeb, 0x33, 0x32, 0x81, 0xc0, 0x0d, 0x4d, 0x1b, 0xb0, 0x47, 0xc6, - 0xd8, 0xf3, 0x62, 0x20, 0xe7, 0xae, 0xa7, 0x32, 0x39, 0x39, 0xaf, 0x3c, 0x4c, 0xdc, 0x9a, 0x3e, - 0xbd, 0x47, 0x82, 0x08, 0xec, 0x38, 0xb6, 0x23, 0x8e, 0x65, 0xd0, 0x0f, 0xe5, 0x1c, 0xe4, 0xc3, - 0x2a, 0xee, 0x80, 0x14, 0x43, 0x09, 0x0a, 0x11, 0xad, 0xa6, 0xfc, 0x82, 0x04, 0xf9, 0xb0, 0xbe, - 0x8a, 0x04, 0xa0, 0x59, 0x1e, 0x80, 0x86, 0x12, 0x0f, 0x89, 0x68, 0xe2, 0x61, 0x1e, 0x72, 0x24, - 0x08, 0xeb, 0xcb, 0x29, 0xe8, 0x5d, 0x3f, 0xa7, 0x70, 0x1e, 0xa6, 0xa8, 0x0d, 0x65, 0xe9, 0x09, - 0x6e, 0xa7, 0xd8, 0xfe, 0x4c, 0x89, 0x54, 0x50, 0x66, 0xf0, 0x9d, 0xc7, 0xc7, 0x60, 0x3a, 0x04, - 0xeb, 0x07, 0x77, 0x2c, 0xbc, 0x96, 0x7d, 0xe8, 0x0a, 0x8f, 0xf2, 0x7e, 0x59, 0x82, 0xa9, 0x01, - 0x75, 0x19, 0x9b, 0x37, 0x90, 0xde, 0xae, 0xbc, 0x41, 0xe2, 0xde, 0xf3, 0x06, 0xe1, 0x70, 0x35, - 0x19, 0x0d, 0x57, 0xff, 0x52, 0x82, 0x42, 0x44, 0x6d, 0x93, 0x49, 0x30, 0xec, 0x96, 0x38, 0xc4, - 0x43, 0xff, 0x26, 0x7e, 0x4a, 0xdb, 0xde, 0xe5, 0x61, 0x22, 0xf9, 0x93, 0x40, 0xf9, 0x86, 0x28, - 0xcb, 0xcd, 0x8c, 0x1f, 0x7b, 0x4e, 0x84, 0x8f, 0xf3, 0xf1, 0x23, 0x6e, 0xe9, 0xe0, 0x88, 0x9b, - 0x7f, 0x76, 0x67, 0x32, 0x74, 0x76, 0x07, 0x3d, 0x03, 0x59, 0xba, 0x0b, 0xa0, 0xd9, 0xdd, 0xe0, - 0x87, 0x29, 0x86, 0x1f, 0x6f, 0x73, 0xe9, 0xfe, 0x21, 0x3b, 0x13, 0x17, 0x78, 0x21, 0xd9, 0x88, - 0x17, 0x72, 0x1f, 0x64, 0x49, 0xf7, 0xd9, 0xe3, 0x8e, 0xc0, 0x0f, 0xd3, 0x8a, 0x02, 0xe5, 0x27, - 0x13, 0x50, 0xea, 0xb3, 0x3a, 0xb1, 0x83, 0x17, 0x52, 0x99, 0x08, 0xa5, 0x45, 0xc6, 0x63, 0xc8, - 0x29, 0x80, 0x5d, 0xdd, 0xd5, 0x6e, 0xeb, 0x96, 0xc7, 0xdf, 0x70, 0x4f, 0xaa, 0xa1, 0x12, 0x34, - 0x07, 0x19, 0xf2, 0xd5, 0x73, 0xf9, 0x2b, 0xee, 0x49, 0xd5, 0xff, 0x46, 0x75, 0x48, 0xe3, 0x5b, - 0xf4, 0x39, 0x12, 0xf6, 0xa8, 0xcf, 0xf1, 0x18, 0xf5, 0x44, 0xea, 0xab, 0xb3, 0x64, 0xba, 0xff, - 0xf0, 0xcd, 0x79, 0x99, 0x81, 0x3f, 0xea, 0x3f, 0xbf, 0xa0, 0x72, 0x02, 0x51, 0x36, 0x64, 0xfa, - 0xd8, 0x40, 0xd3, 0x85, 0x79, 0x11, 0xfb, 0x13, 0xa6, 0xb2, 0x0d, 0x4b, 0xb5, 0xd0, 0xc1, 0x9d, - 0xae, 0x6d, 0xb7, 0x35, 0xb6, 0xce, 0x2b, 0x50, 0x8c, 0x1a, 0x59, 0xf6, 0xf2, 0xb2, 0xa7, 0x9b, - 0x96, 0x16, 0xf1, 0x8d, 0xf3, 0xac, 0x90, 0xad, 0xab, 0xeb, 0xa9, 0x8c, 0x24, 0x27, 0x78, 0xba, - 0xe6, 0xdd, 0x70, 0x34, 0xd6, 0xc6, 0xa2, 0xa7, 0x21, 0x1b, 0xd8, 0x67, 0xb6, 0xed, 0x7c, 0x50, - 0x1e, 0x26, 0x00, 0x56, 0x6e, 0xc0, 0xd1, 0x58, 0x23, 0x8b, 0x9e, 0x83, 0xb4, 0x83, 0xdd, 0x5e, - 0xdb, 0xe3, 0xcf, 0x22, 0x3e, 0x38, 0xda, 0x3a, 0xf7, 0xda, 0x9e, 0xca, 0x91, 0x94, 0x8b, 0x70, - 0x62, 0xa8, 0x95, 0x0d, 0xb2, 0x29, 0x52, 0x28, 0x9b, 0xa2, 0xfc, 0xb4, 0x04, 0x73, 0xc3, 0x2d, - 0x27, 0xaa, 0xf6, 0x75, 0xe8, 0xfc, 0x98, 0x76, 0x37, 0xd4, 0x2b, 0x12, 0x6e, 0x38, 0x78, 0x07, - 0x7b, 0xc6, 0x1e, 0x33, 0xe1, 0x4c, 0x29, 0x14, 0xd4, 0x02, 0x2f, 0xa5, 0x38, 0x2e, 0x03, 0x7b, - 0x15, 0x1b, 0x9e, 0xc6, 0x26, 0xd5, 0xe5, 0x3f, 0xb5, 0x53, 0x60, 0xa5, 0x0d, 0x56, 0xa8, 0x3c, - 0x02, 0xc7, 0x87, 0xd8, 0xe2, 0xc1, 0xb8, 0x44, 0x79, 0x85, 0x00, 0xc7, 0x1a, 0x58, 0xf4, 0x02, - 0xa4, 0x5d, 0x4f, 0xf7, 0x7a, 0x2e, 0x1f, 0xd9, 0xd9, 0x91, 0xb6, 0xb9, 0x41, 0xc1, 0x55, 0x8e, - 0xa6, 0x3c, 0x0b, 0x68, 0xd0, 0xd2, 0xc6, 0xc4, 0x56, 0x52, 0x5c, 0x6c, 0xb5, 0x0d, 0x27, 0x0f, - 0xb0, 0xa9, 0x68, 0xa9, 0xaf, 0x73, 0x8f, 0x8c, 0x65, 0x92, 0xfb, 0x3a, 0xf8, 0xc7, 0x09, 0x38, - 0x1a, 0x6b, 0x5a, 0x43, 0xab, 0x54, 0x7a, 0xab, 0xab, 0xf4, 0x39, 0x00, 0xef, 0x8e, 0xc6, 0x66, - 0x5a, 0x68, 0xfb, 0xb8, 0x78, 0xe2, 0x0e, 0x36, 0xa8, 0xc2, 0x22, 0x82, 0x91, 0xf5, 0xf8, 0x5f, - 0x24, 0xf8, 0x0f, 0xc5, 0xb3, 0x3d, 0x6a, 0x09, 0x5c, 0x1e, 0xea, 0x8d, 0x6d, 0x33, 0x82, 0xc0, - 0x97, 0x15, 0xbb, 0xe8, 0x15, 0x38, 0xde, 0x67, 0xd1, 0x7c, 0xda, 0xa9, 0xb1, 0x0d, 0xdb, 0xd1, - 0xa8, 0x61, 0x13, 0xb4, 0xc3, 0x56, 0x69, 0x22, 0x6a, 0x95, 0x5e, 0x01, 0x08, 0x02, 0x5b, 0xb2, - 0xde, 0x1c, 0xbb, 0x67, 0xb5, 0xc4, 0xe1, 0x53, 0xfa, 0x81, 0xae, 0xc0, 0x04, 0x91, 0x04, 0xc1, - 0xaa, 0x18, 0x85, 0x41, 0xa6, 0x34, 0x14, 0x19, 0x33, 0x70, 0xe5, 0x55, 0x21, 0x6d, 0xe1, 0x1c, - 0xe3, 0x90, 0x36, 0x9e, 0x8f, 0xb6, 0xa1, 0x0c, 0x4f, 0x57, 0xc6, 0xb7, 0xf5, 0x77, 0x60, 0x82, - 0x4e, 0x7f, 0xec, 0xd9, 0xef, 0x6f, 0x02, 0xd0, 0x3d, 0xcf, 0x31, 0xb7, 0x7b, 0x41, 0x0b, 0x0b, - 0x43, 0xe4, 0xa7, 0x22, 0x00, 0xab, 0xf7, 0x71, 0x41, 0x9a, 0x09, 0x70, 0x43, 0xc2, 0x14, 0xa2, - 0xa8, 0xac, 0x43, 0x31, 0x8a, 0x1b, 0x7f, 0x98, 0x5d, 0xfc, 0x2a, 0x40, 0x70, 0xd4, 0x36, 0x30, - 0xe4, 0xfc, 0xb6, 0x10, 0xfd, 0x50, 0xbe, 0x25, 0x01, 0xf9, 0xb0, 0xf4, 0xfd, 0x2d, 0x34, 0x96, - 0xca, 0x07, 0x24, 0xc8, 0xf8, 0xe3, 0x8f, 0xa6, 0xf3, 0x23, 0xfb, 0x20, 0xc1, 0xb5, 0x06, 0x3f, - 0x07, 0xcf, 0x76, 0x3d, 0x92, 0xfe, 0xae, 0xc7, 0xbb, 0x7c, 0x83, 0x30, 0x34, 0x98, 0x0f, 0x73, - 0x5b, 0x1c, 0x4f, 0xe2, 0x06, 0xea, 0xd9, 0xf1, 0xce, 0x40, 0xcd, 0xc0, 0x44, 0xf8, 0xf8, 0x12, - 0xfb, 0x50, 0x70, 0xe8, 0x04, 0x25, 0x5b, 0x8d, 0xe1, 0xc3, 0x52, 0xd2, 0xe1, 0x0f, 0x4b, 0xf9, - 0xcd, 0x24, 0xc2, 0xcd, 0xfc, 0x23, 0x09, 0x32, 0x62, 0x5d, 0xa0, 0x17, 0xc2, 0xe7, 0x7b, 0xc5, - 0x61, 0xc1, 0xe1, 0x7a, 0x89, 0x37, 0x10, 0x3a, 0xde, 0x5b, 0x15, 0xfb, 0x8c, 0x66, 0x4b, 0xdb, - 0x69, 0xeb, 0xbb, 0x7c, 0xbb, 0x68, 0xe8, 0xe9, 0x64, 0x76, 0x78, 0x88, 0x1f, 0xb8, 0xac, 0xb7, - 0xc8, 0x07, 0xf7, 0x43, 0xfe, 0x5c, 0x02, 0xb9, 0x7f, 0xdd, 0xbe, 0xf5, 0xfe, 0x0d, 0xda, 0xab, - 0x64, 0x8c, 0xbd, 0x42, 0x17, 0x60, 0x3a, 0xf8, 0x61, 0x2e, 0xd7, 0xdc, 0xb5, 0xd8, 0xe1, 0x5f, - 0x96, 0x54, 0x43, 0x7e, 0x55, 0x43, 0xd4, 0x0c, 0x8e, 0x7b, 0xe2, 0x5e, 0xc7, 0xfd, 0xfe, 0x04, - 0xe4, 0x42, 0x39, 0x3e, 0x74, 0x39, 0xa4, 0x94, 0x8a, 0x71, 0x56, 0x22, 0x04, 0x1c, 0xfa, 0x59, - 0x9d, 0x08, 0xa7, 0x12, 0xf7, 0xc0, 0xa9, 0x61, 0xd9, 0x54, 0x91, 0x34, 0x4c, 0x1d, 0x3a, 0x69, - 0x18, 0x7f, 0x80, 0x70, 0x62, 0xc8, 0x01, 0xc2, 0xbf, 0x27, 0x41, 0xc6, 0x4f, 0xbe, 0x1c, 0x76, - 0x4f, 0xee, 0x18, 0xa4, 0xb9, 0xef, 0xc5, 0x36, 0xe5, 0xf8, 0x57, 0x6c, 0x76, 0x74, 0x0e, 0x32, - 0xe2, 0x95, 0x79, 0x6e, 0xe1, 0xfc, 0xef, 0xf3, 0xdb, 0x90, 0x0b, 0x6d, 0x6b, 0xa2, 0x13, 0x70, - 0x74, 0xe9, 0x5a, 0x6d, 0xe9, 0x45, 0xad, 0xf9, 0x52, 0xff, 0xdb, 0xc2, 0x03, 0x55, 0x6a, 0x8d, - 0x7e, 0xcb, 0x12, 0x3a, 0x0e, 0xd3, 0xd1, 0x2a, 0x56, 0x91, 0x98, 0x4b, 0x7d, 0xf0, 0x47, 0x4f, - 0x1d, 0x39, 0xff, 0xe7, 0x12, 0x4c, 0xc7, 0x78, 0xb9, 0xe8, 0x34, 0xdc, 0xbf, 0x71, 0xf5, 0x6a, - 0x4d, 0xd5, 0x1a, 0xeb, 0x95, 0xcd, 0xc6, 0xb5, 0x8d, 0xa6, 0xa6, 0xd6, 0x1a, 0x5b, 0xab, 0xcd, - 0x50, 0xa3, 0x0b, 0x70, 0x5f, 0x3c, 0x48, 0x65, 0x69, 0xa9, 0xb6, 0xd9, 0x64, 0x8f, 0x1b, 0x0f, - 0x81, 0xa8, 0x6e, 0xa8, 0x4d, 0x39, 0x31, 0x9c, 0x84, 0x5a, 0xbb, 0x5e, 0x5b, 0x6a, 0xca, 0x49, - 0x74, 0x16, 0xce, 0x1c, 0x04, 0xa1, 0x5d, 0xdd, 0x50, 0xd7, 0x2a, 0x4d, 0x39, 0x35, 0x12, 0xb0, - 0x51, 0x5b, 0x5f, 0xae, 0xa9, 0xf2, 0x04, 0x1f, 0xf7, 0x1b, 0x09, 0x98, 0x1d, 0xe6, 0x4c, 0x13, - 0x5a, 0x95, 0xcd, 0xcd, 0xd5, 0x97, 0x03, 0x5a, 0x4b, 0xd7, 0xb6, 0xd6, 0x5f, 0x1c, 0x64, 0xc1, - 0x43, 0xa0, 0x1c, 0x04, 0xe8, 0x33, 0xe2, 0x41, 0x38, 0x7d, 0x20, 0x1c, 0x67, 0xc7, 0x08, 0x30, - 0xb5, 0xd6, 0x54, 0x5f, 0x96, 0x93, 0x68, 0x11, 0xce, 0x8f, 0x04, 0xf3, 0xeb, 0xe4, 0x14, 0xba, - 0x00, 0x8f, 0x1c, 0x0c, 0xcf, 0x18, 0x24, 0x10, 0x04, 0x8b, 0x5e, 0x97, 0xe0, 0x68, 0xac, 0x57, - 0x8e, 0xce, 0xc0, 0xfc, 0xa6, 0xba, 0xb1, 0x54, 0x6b, 0x34, 0xb4, 0x4d, 0x75, 0x63, 0x73, 0xa3, - 0x51, 0x59, 0xd5, 0x1a, 0xcd, 0x4a, 0x73, 0xab, 0x11, 0xe2, 0x8d, 0x02, 0xa7, 0x86, 0x01, 0xf9, - 0x7c, 0x39, 0x00, 0x86, 0x4b, 0x80, 0x90, 0xd3, 0xbb, 0x12, 0x9c, 0x18, 0xea, 0x85, 0xa3, 0x73, - 0xf0, 0x00, 0xfd, 0x9d, 0xb2, 0x97, 0xb5, 0x1b, 0x1b, 0xcd, 0xf0, 0x2b, 0xda, 0x03, 0xbd, 0x3a, - 0x0b, 0x67, 0x0e, 0x84, 0xf4, 0xbb, 0x36, 0x0a, 0xb0, 0xaf, 0x7f, 0xdf, 0x26, 0x41, 0xa9, 0x4f, - 0x17, 0xa2, 0xfb, 0x60, 0x76, 0xad, 0xde, 0xa8, 0xd6, 0xae, 0x55, 0x6e, 0xd4, 0x37, 0xd4, 0xfe, - 0x35, 0x7b, 0x06, 0xe6, 0x07, 0x6a, 0x97, 0xb7, 0x36, 0x57, 0xeb, 0x4b, 0x95, 0x66, 0x8d, 0x36, - 0x2a, 0x4b, 0x64, 0x60, 0x03, 0x40, 0xab, 0xf5, 0x95, 0x6b, 0x4d, 0x6d, 0x69, 0xb5, 0x5e, 0x5b, - 0x6f, 0x6a, 0x95, 0x66, 0xb3, 0x12, 0x2c, 0xe7, 0xea, 0x8b, 0x43, 0x8f, 0xbe, 0x5e, 0x1c, 0xff, - 0xe8, 0x2b, 0x3f, 0xc2, 0x19, 0xdc, 0x56, 0x4b, 0xc0, 0xbc, 0x5f, 0xc9, 0x73, 0x69, 0xfd, 0x47, - 0x3c, 0xa7, 0x7d, 0xed, 0xce, 0x01, 0x86, 0xdf, 0xf8, 0x7c, 0x0e, 0x92, 0x95, 0x6e, 0x97, 0x68, - 0x3e, 0xfa, 0x6d, 0xd8, 0x6d, 0xae, 0x57, 0xfd, 0x6f, 0x52, 0xe7, 0xda, 0x3b, 0xde, 0x6d, 0xdd, - 0xf1, 0x7f, 0x79, 0x4d, 0x7c, 0x2b, 0xcf, 0x40, 0xd6, 0x8f, 0x1e, 0xe8, 0xdb, 0xa5, 0xfe, 0x3d, - 0xa4, 0x94, 0xb8, 0x67, 0xc4, 0x2f, 0x6b, 0x24, 0x82, 0xcb, 0x1a, 0xa9, 0x2f, 0xbe, 0x31, 0x2f, - 0x55, 0xd7, 0x87, 0x72, 0xe7, 0xc9, 0xf1, 0xb9, 0x13, 0x30, 0xc0, 0x67, 0xd0, 0xf7, 0xdd, 0x1f, - 0xba, 0x0d, 0xec, 0x9f, 0x38, 0x0d, 0xb3, 0x27, 0xe6, 0x3c, 0xfe, 0xa8, 0x33, 0xae, 0x63, 0x9c, - 0x61, 0x1d, 0x35, 0x2b, 0xf7, 0x7a, 0xc8, 0xf5, 0x19, 0x28, 0x6c, 0xea, 0x8e, 0xd7, 0xc0, 0xde, - 0x35, 0xac, 0xb7, 0xb0, 0x13, 0xbd, 0x9b, 0x5b, 0x10, 0x77, 0x73, 0x85, 0x3d, 0x4b, 0x04, 0xf6, - 0x4c, 0x31, 0x21, 0x45, 0x9f, 0x13, 0x1e, 0x7a, 0xc8, 0x84, 0x1d, 0x0a, 0xe1, 0x87, 0x4c, 0xe8, - 0x07, 0xba, 0x2c, 0x6e, 0xdf, 0x26, 0x47, 0xdc, 0xbe, 0x15, 0x91, 0x13, 0xbb, 0x83, 0xdb, 0x81, - 0x49, 0xee, 0xcd, 0xc4, 0xee, 0xde, 0xae, 0x43, 0xa9, 0xab, 0x3b, 0x1e, 0xfd, 0xb5, 0x92, 0x3d, - 0x3a, 0x0c, 0xee, 0x89, 0xc4, 0x5d, 0x9f, 0x8a, 0x0c, 0x97, 0x37, 0x53, 0xe8, 0x86, 0x0b, 0x95, - 0x2f, 0xa6, 0x20, 0xcd, 0xd9, 0xf1, 0x7c, 0xf4, 0xa4, 0x5b, 0xc4, 0x31, 0x0f, 0xc4, 0x3f, 0x08, - 0x72, 0x39, 0x41, 0x3f, 0x2d, 0xfd, 0x50, 0xff, 0xb9, 0xb2, 0x6a, 0xee, 0xf3, 0x6f, 0xce, 0x4f, - 0xd2, 0x4c, 0x71, 0x7d, 0x39, 0x38, 0x64, 0xf6, 0xf6, 0x7b, 0x41, 0xcb, 0x50, 0x08, 0xe5, 0xb0, - 0xcd, 0x16, 0xdf, 0xf8, 0x9f, 0x1b, 0xee, 0x29, 0x8a, 0x6d, 0x5e, 0x3f, 0xbf, 0x5d, 0x6f, 0xa1, - 0x73, 0x20, 0x87, 0x76, 0x9e, 0x59, 0x78, 0xce, 0x92, 0xb7, 0xc5, 0xb6, 0xbf, 0xa7, 0x4c, 0x37, - 0x5e, 0x4f, 0x42, 0x96, 0xfe, 0x80, 0x4e, 0x68, 0x7f, 0x36, 0x43, 0x0a, 0x68, 0xe5, 0x59, 0x28, - 0xf5, 0x6f, 0xe1, 0xb2, 0x4d, 0xd9, 0xe2, 0xad, 0xe8, 0xf6, 0xed, 0xb0, 0x0d, 0xdf, 0xec, 0xd0, - 0x0d, 0xdf, 0x07, 0xa1, 0x18, 0x24, 0x25, 0x28, 0x2c, 0x30, 0x4f, 0xdb, 0x2f, 0xa5, 0x60, 0xe1, - 0xfc, 0x42, 0x2e, 0x92, 0x5f, 0xf0, 0x77, 0x06, 0x78, 0xb6, 0x85, 0xc1, 0xe4, 0xd9, 0x9e, 0x31, - 0xa9, 0xe0, 0x49, 0x15, 0x0a, 0x7b, 0x06, 0x0a, 0xe2, 0x92, 0x22, 0x83, 0x2b, 0x50, 0xb8, 0xbc, - 0x28, 0x1c, 0xba, 0x07, 0x5d, 0x8c, 0xdf, 0x83, 0x9e, 0x85, 0xd4, 0x32, 0x8f, 0x8a, 0xfb, 0x72, - 0x6c, 0x9f, 0x4d, 0x42, 0x8a, 0x6e, 0x2b, 0x3d, 0x19, 0x71, 0xcc, 0xe3, 0x44, 0x9a, 0x84, 0x07, - 0xb8, 0xb5, 0xe6, 0xee, 0x86, 0xfc, 0xf2, 0x61, 0x47, 0x4c, 0xfc, 0xd4, 0x46, 0x32, 0x9c, 0xda, - 0xb8, 0x0a, 0x19, 0x5f, 0x4e, 0x52, 0x23, 0xe5, 0xa4, 0x44, 0xe4, 0x84, 0x88, 0x31, 0x2f, 0x50, - 0x27, 0x79, 0x78, 0x81, 0xaa, 0x90, 0xf5, 0x35, 0x8c, 0x2f, 0x70, 0xe3, 0xc8, 0x6c, 0x80, 0x16, - 0x7f, 0x16, 0x23, 0x3d, 0xe4, 0x2c, 0x46, 0x58, 0xb0, 0xf8, 0x6f, 0x6f, 0x4e, 0xd2, 0x81, 0x05, - 0x82, 0xc5, 0x7e, 0x7f, 0xf3, 0x3e, 0xc8, 0x06, 0xf1, 0x15, 0x93, 0xbd, 0xa0, 0x80, 0xd4, 0x06, - 0x91, 0x1a, 0x93, 0xb5, 0xd0, 0x8f, 0x38, 0x0f, 0x89, 0xd2, 0x60, 0x58, 0x94, 0xa6, 0xfc, 0x5b, - 0x09, 0xd2, 0xfc, 0xb8, 0xc5, 0x01, 0x69, 0x01, 0x36, 0x0f, 0x89, 0x61, 0xf3, 0x90, 0x7c, 0x4b, - 0xf3, 0x00, 0x7e, 0x3f, 0xc5, 0x21, 0xd3, 0xfb, 0x62, 0x93, 0x73, 0xa4, 0x93, 0x0d, 0x73, 0x57, - 0xec, 0x13, 0x05, 0x58, 0xca, 0x9b, 0x12, 0x31, 0xbf, 0xbc, 0x7e, 0x30, 0xf0, 0x94, 0x0e, 0x1d, - 0x78, 0x1e, 0xee, 0x94, 0x4d, 0x44, 0x94, 0x92, 0xf7, 0x26, 0x4a, 0x91, 0x49, 0x4f, 0xf5, 0x4d, - 0xba, 0xf2, 0x05, 0x89, 0xff, 0x7e, 0xb3, 0x9f, 0xfc, 0xfb, 0x2b, 0x9a, 0xad, 0xaf, 0xe7, 0xf2, - 0xd5, 0xc2, 0x2d, 0x6d, 0x60, 0xda, 0x1e, 0x88, 0xbb, 0x37, 0x1d, 0xe9, 0x75, 0x30, 0x7d, 0x48, - 0x90, 0x69, 0x04, 0xd3, 0xf8, 0x73, 0x09, 0x71, 0x2a, 0x2d, 0x04, 0xff, 0x37, 0x70, 0x3a, 0xa3, - 0x6b, 0x78, 0x62, 0xcc, 0x35, 0x9c, 0x1e, 0xba, 0x86, 0x7f, 0x2e, 0x41, 0xdf, 0xd9, 0x60, 0x67, - 0x04, 0xbe, 0x16, 0x3a, 0xf8, 0x24, 0x64, 0xbb, 0x76, 0x5b, 0x63, 0x35, 0xec, 0x31, 0xfe, 0x4c, - 0xd7, 0x6e, 0xab, 0x03, 0xa2, 0x36, 0xf1, 0x76, 0x29, 0xe8, 0xf4, 0xdb, 0x30, 0x0d, 0x93, 0xfd, - 0xab, 0xca, 0x83, 0x3c, 0xe3, 0x05, 0xf7, 0xa0, 0x2e, 0x12, 0x26, 0x50, 0x9f, 0x4c, 0xea, 0xf7, - 0xf9, 0xfc, 0x7e, 0x33, 0x50, 0x95, 0x03, 0x12, 0x94, 0xc8, 0x49, 0xb7, 0x13, 0x43, 0x35, 0x97, - 0x38, 0xd9, 0xa3, 0x7c, 0x58, 0x02, 0x58, 0x25, 0xcc, 0xa5, 0x23, 0x26, 0xce, 0x8f, 0x4b, 0x3b, - 0xa1, 0x45, 0xda, 0x9e, 0x1f, 0x3a, 0x71, 0xbc, 0x07, 0x79, 0x37, 0xdc, 0xf5, 0x65, 0x28, 0x04, - 0x02, 0xee, 0x62, 0xd1, 0x9d, 0xf9, 0x83, 0x2e, 0xb2, 0x36, 0xb0, 0xa7, 0xe6, 0x6f, 0x85, 0xbe, - 0x94, 0x7f, 0x27, 0x41, 0x96, 0xf6, 0x6a, 0x0d, 0x7b, 0x7a, 0x64, 0x22, 0xa5, 0xb7, 0x30, 0x91, - 0xf7, 0x03, 0x30, 0x3a, 0xae, 0xf9, 0x1a, 0xe6, 0xf2, 0x95, 0xa5, 0x25, 0x0d, 0xf3, 0x35, 0x8c, - 0x9e, 0xf2, 0xb9, 0x9e, 0x1c, 0xc1, 0x75, 0x91, 0xbc, 0xe5, 0xbc, 0x3f, 0x0e, 0x93, 0x56, 0xaf, - 0xa3, 0xb1, 0xc3, 0xa4, 0x54, 0x68, 0xad, 0x5e, 0xa7, 0x79, 0xc7, 0x55, 0x6e, 0xc2, 0x64, 0xf3, - 0x0e, 0x7b, 0xbf, 0xe7, 0x24, 0x64, 0x1d, 0xdb, 0xe6, 0xde, 0x20, 0x73, 0xc4, 0x33, 0xa4, 0x80, - 0x3a, 0x3f, 0x71, 0x39, 0xff, 0x0b, 0xe3, 0xba, 0xfd, 0xdc, 0xe1, 0x3f, 0xff, 0x9b, 0x12, 0x14, - 0x22, 0x2b, 0x0a, 0x3d, 0x0a, 0xc7, 0x1b, 0xf5, 0x95, 0xf5, 0xda, 0xb2, 0xb6, 0xd6, 0x58, 0xe9, - 0x0b, 0xb0, 0xe7, 0x4a, 0xaf, 0xdf, 0x5d, 0xc8, 0xf1, 0xab, 0xaa, 0xc3, 0xa0, 0x37, 0xd5, 0x1a, - 0x8b, 0xb4, 0x19, 0xf4, 0xa6, 0x83, 0x6f, 0xd9, 0x1e, 0xa6, 0xd0, 0x8f, 0xc3, 0x89, 0x18, 0x68, - 0xff, 0xc2, 0xea, 0xd4, 0xeb, 0x77, 0x17, 0x0a, 0x9b, 0x0e, 0x66, 0xa2, 0x46, 0x31, 0x16, 0x61, - 0x76, 0x10, 0x83, 0x65, 0x35, 0xe4, 0x85, 0x39, 0xf9, 0xf5, 0xbb, 0x0b, 0x79, 0xa1, 0x3b, 0x08, - 0xfc, 0x3b, 0x7e, 0x63, 0xf5, 0xa3, 0x59, 0x38, 0xc1, 0xde, 0xb0, 0xd2, 0x58, 0x0c, 0xc8, 0x3e, - 0x78, 0x48, 0x9a, 0x0f, 0x57, 0x8d, 0xfe, 0x71, 0x02, 0xe5, 0x45, 0x98, 0xae, 0x5b, 0x1e, 0x76, - 0x76, 0xf4, 0xf0, 0xcf, 0x0b, 0xc7, 0xfe, 0x60, 0xef, 0x42, 0xe4, 0x95, 0x4d, 0x1e, 0xc1, 0x87, - 0x8b, 0x94, 0x6f, 0x91, 0x40, 0x6e, 0x18, 0x7a, 0x5b, 0x77, 0xde, 0x2a, 0x29, 0xf4, 0x94, 0xf8, - 0x51, 0x0a, 0x7e, 0x41, 0x24, 0x79, 0xae, 0x78, 0x69, 0x76, 0x31, 0x3c, 0xb8, 0x45, 0xd6, 0x12, - 0xd5, 0xc1, 0xec, 0xc7, 0x28, 0xc8, 0x9f, 0xe7, 0x5f, 0x02, 0x08, 0x2a, 0xd0, 0x49, 0x38, 0xde, - 0x58, 0xaa, 0xac, 0x56, 0xfc, 0x3c, 0x4d, 0x63, 0xb3, 0xb6, 0xc4, 0x7e, 0xf9, 0xfe, 0x08, 0x3a, - 0x06, 0x28, 0x5c, 0xe9, 0xff, 0xce, 0xdc, 0x51, 0x98, 0x0a, 0x97, 0xb3, 0x9f, 0x21, 0x4f, 0x94, - 0xaf, 0x41, 0x89, 0xfd, 0x46, 0x32, 0x31, 0x80, 0xb8, 0xa5, 0x99, 0x16, 0x1a, 0xf1, 0x93, 0xc3, - 0xb3, 0xbf, 0xfa, 0x5f, 0xd9, 0x4f, 0x54, 0x14, 0x18, 0x62, 0x85, 0xe0, 0xd5, 0xad, 0x72, 0x13, - 0x66, 0xe8, 0x8d, 0x70, 0xfa, 0xb3, 0x32, 0x9a, 0x29, 0xf8, 0x3f, 0xfa, 0x0d, 0x41, 0x42, 0x2f, - 0x79, 0x2e, 0xab, 0x4e, 0x07, 0xe8, 0xfe, 0xec, 0x95, 0x5f, 0x0c, 0x7e, 0x54, 0xc4, 0xef, 0xe0, - 0x48, 0x8a, 0xbf, 0xc6, 0x7b, 0x28, 0x9e, 0x10, 0x16, 0x5d, 0x5c, 0x85, 0x29, 0xdd, 0x30, 0x70, - 0x37, 0xd2, 0xbf, 0x11, 0xcf, 0xb6, 0x89, 0xd1, 0xca, 0x1c, 0x33, 0xe8, 0xda, 0x53, 0x90, 0x76, - 0xe9, 0xa4, 0x8c, 0x22, 0x21, 0xba, 0xc3, 0xc1, 0xcb, 0x35, 0x28, 0x32, 0x31, 0xf0, 0x47, 0x34, - 0x82, 0xc0, 0x7f, 0xe4, 0x04, 0xf2, 0x14, 0x4d, 0x8c, 0xc6, 0x82, 0xa9, 0x16, 0x36, 0xda, 0xba, - 0x83, 0x43, 0xa3, 0x39, 0xf8, 0xe9, 0xe2, 0x7f, 0xf9, 0xe9, 0xc7, 0xfd, 0x3d, 0xf4, 0x90, 0xd0, - 0xc5, 0x2c, 0x16, 0x55, 0xe6, 0xb4, 0x83, 0xf1, 0x62, 0x28, 0x8a, 0xf6, 0xf8, 0xb8, 0x0f, 0x6e, - 0xec, 0x5f, 0xf1, 0xc6, 0x4e, 0xc5, 0x49, 0x78, 0xa8, 0xa5, 0x02, 0xa7, 0xca, 0x2a, 0xca, 0x55, - 0x28, 0xec, 0x98, 0xed, 0xd0, 0x74, 0x1f, 0xdc, 0xca, 0xbf, 0xfe, 0xf4, 0xe3, 0x6c, 0xa1, 0x11, - 0x24, 0xce, 0x9a, 0x7b, 0xfa, 0xc9, 0x14, 0x4a, 0xfd, 0xd9, 0x70, 0x57, 0x7d, 0xed, 0xf4, 0x89, - 0x24, 0x9c, 0xe2, 0xc0, 0xdb, 0xba, 0x8b, 0x89, 0xe2, 0xc2, 0x9e, 0x7e, 0xf1, 0x82, 0x61, 0x9b, - 0x56, 0x90, 0x54, 0xa4, 0x0a, 0x8b, 0xd4, 0x2f, 0xf2, 0xfa, 0x21, 0x39, 0xad, 0xe1, 0x8a, 0x6e, - 0x6e, 0xf0, 0x67, 0x7b, 0x94, 0x36, 0xa4, 0x96, 0x6c, 0xd3, 0x22, 0x3e, 0x57, 0x0b, 0x5b, 0x76, - 0x47, 0x9c, 0x57, 0xa4, 0x1f, 0xe8, 0x1a, 0xa4, 0xf5, 0x8e, 0xdd, 0xb3, 0xf8, 0xfb, 0x6d, 0xd5, - 0xc7, 0x89, 0x2d, 0xfc, 0xed, 0x37, 0xe7, 0x8f, 0x32, 0xb2, 0x6e, 0xeb, 0xe6, 0xa2, 0x69, 0x5f, - 0xe8, 0xe8, 0xde, 0x1e, 0x99, 0xe4, 0xdf, 0xf8, 0xcc, 0x63, 0xc0, 0xdb, 0xab, 0x5b, 0xde, 0x27, - 0xff, 0xe0, 0x67, 0xce, 0x4b, 0x2a, 0xc7, 0x67, 0x69, 0x47, 0xa5, 0x0b, 0x93, 0xcb, 0xd8, 0x38, - 0xa0, 0xc1, 0x7a, 0x5f, 0x83, 0x17, 0x79, 0x83, 0x27, 0x07, 0x1b, 0x64, 0xbf, 0x23, 0xb8, 0x8c, - 0x8d, 0x50, 0xb3, 0xcb, 0xd8, 0x88, 0xb6, 0x58, 0x5d, 0xfe, 0xad, 0xdf, 0x3b, 0x75, 0xe4, 0x7d, - 0x9f, 0x3f, 0x75, 0x64, 0xe8, 0x94, 0x29, 0xa3, 0x7f, 0xe5, 0xc6, 0x9f, 0xa9, 0xff, 0x2d, 0xc1, - 0x89, 0x7e, 0xf3, 0xa0, 0x5b, 0xfb, 0xc3, 0xde, 0x3c, 0xb8, 0x02, 0xc9, 0x8a, 0xb5, 0x8f, 0x4e, - 0xb0, 0xd7, 0x5c, 0xb5, 0x9e, 0xd3, 0x16, 0xc7, 0x3c, 0xc9, 0xf7, 0x96, 0xd3, 0x8e, 0x1e, 0x29, - 0xf0, 0x5f, 0xe6, 0xfa, 0xee, 0x43, 0x3e, 0x77, 0x90, 0xa9, 0x58, 0xfb, 0xe2, 0xa1, 0x83, 0x47, - 0xc7, 0x7c, 0xe8, 0x40, 0xb7, 0xf6, 0xbb, 0xdb, 0x87, 0x7d, 0xdf, 0xe0, 0x03, 0x97, 0xe1, 0x01, - 0xce, 0x23, 0xd7, 0xd3, 0x6f, 0x9a, 0xd6, 0xae, 0x2f, 0xac, 0xfc, 0x9b, 0xb3, 0xe2, 0x18, 0x9f, - 0x10, 0x51, 0x2a, 0x44, 0x76, 0x50, 0x02, 0xe7, 0x0e, 0x7c, 0x30, 0x61, 0xee, 0xe0, 0x6c, 0xf2, - 0xdc, 0x88, 0x75, 0x73, 0xd0, 0x62, 0x18, 0xb2, 0x7a, 0x86, 0x4e, 0xef, 0xc8, 0xd7, 0xc3, 0x46, - 0x26, 0x93, 0x3f, 0x2c, 0x41, 0xf1, 0x9a, 0xe9, 0x7a, 0xb6, 0x63, 0x1a, 0x7a, 0x9b, 0x6e, 0xa4, - 0xbf, 0x6b, 0x6c, 0xef, 0xbf, 0x9a, 0x25, 0x4b, 0x81, 0x2f, 0xaa, 0x3d, 0xe1, 0x80, 0xa7, 0x6f, - 0xe9, 0x6d, 0xe6, 0x79, 0x87, 0xf5, 0x6e, 0x3f, 0xdb, 0x43, 0xfb, 0xcb, 0x61, 0x2a, 0x0c, 0xb7, - 0x9c, 0x98, 0x95, 0x94, 0xef, 0x4f, 0x40, 0x89, 0x86, 0x0c, 0x2e, 0x3d, 0x10, 0x46, 0x8f, 0x1c, - 0x5d, 0x87, 0x94, 0xa3, 0x7b, 0xdc, 0x09, 0xa9, 0x5e, 0x39, 0xf4, 0x4a, 0x64, 0xad, 0x50, 0x1a, - 0xe8, 0xdd, 0x90, 0xe9, 0xe8, 0x77, 0x34, 0x4a, 0x2f, 0xf1, 0x96, 0xe8, 0x4d, 0x76, 0xf4, 0x3b, - 0xa4, 0x7f, 0xe8, 0x9b, 0xa0, 0x44, 0x48, 0x1a, 0x7b, 0xba, 0xb5, 0x8b, 0x19, 0xe5, 0xe4, 0x5b, - 0xa2, 0x5c, 0xe8, 0xe8, 0x77, 0x96, 0x28, 0x35, 0x42, 0x9f, 0x6b, 0xac, 0x5f, 0x92, 0xf8, 0xe9, - 0x2a, 0xca, 0x18, 0xa4, 0x83, 0x6c, 0xf8, 0x5f, 0xb4, 0x51, 0x71, 0x68, 0xf9, 0xec, 0x30, 0xde, - 0xf7, 0xb1, 0xb5, 0x5a, 0x20, 0xdd, 0xfb, 0xdc, 0x9b, 0xf3, 0x12, 0x6b, 0xb5, 0x64, 0x0c, 0xb0, - 0x3d, 0xc7, 0x4e, 0x8d, 0x69, 0x34, 0xb3, 0x9d, 0x18, 0x19, 0x84, 0x16, 0x44, 0x10, 0xca, 0x08, - 0x02, 0xc3, 0x26, 0xf5, 0x7c, 0x0c, 0x7f, 0x2a, 0x41, 0x6e, 0x39, 0xe4, 0x27, 0xce, 0xc2, 0x64, - 0xc7, 0xb6, 0xcc, 0x9b, 0xd8, 0xf1, 0x4f, 0x9d, 0xb3, 0x4f, 0x34, 0x07, 0x19, 0xf6, 0x0b, 0x90, - 0xde, 0xbe, 0xd8, 0x6d, 0x12, 0xdf, 0x04, 0xeb, 0x36, 0xde, 0x76, 0x4d, 0xc1, 0x67, 0x55, 0x7c, - 0xa2, 0x87, 0x41, 0x76, 0xb1, 0xd1, 0x73, 0x4c, 0x6f, 0x5f, 0x33, 0x6c, 0xcb, 0xd3, 0x0d, 0x8f, - 0x1f, 0x56, 0x2a, 0x89, 0xf2, 0x25, 0x56, 0x4c, 0x88, 0xb4, 0xb0, 0xa7, 0x9b, 0x6d, 0x76, 0x19, - 0x3b, 0xab, 0x8a, 0x4f, 0xb4, 0x12, 0xda, 0xfe, 0x4f, 0xfb, 0xbb, 0x13, 0xb1, 0x1c, 0x15, 0xbf, - 0x37, 0x4f, 0x85, 0x99, 0x8e, 0xfa, 0x48, 0x70, 0x56, 0x80, 0x8f, 0x79, 0x07, 0x32, 0x02, 0x0c, - 0x3d, 0x04, 0xa5, 0xae, 0x63, 0x53, 0xab, 0xdf, 0x35, 0x0d, 0xad, 0xe7, 0x98, 0x7c, 0xdc, 0x05, - 0x5e, 0xbc, 0x69, 0x1a, 0x5b, 0x8e, 0x89, 0x1e, 0x05, 0xe4, 0xda, 0x06, 0xbd, 0x08, 0xae, 0x5b, - 0xad, 0x36, 0x51, 0xd8, 0x26, 0x3b, 0x6b, 0x96, 0x55, 0x65, 0x56, 0x73, 0x8d, 0x56, 0x6c, 0x39, - 0xa6, 0xcb, 0xdb, 0xb9, 0x3b, 0x19, 0x3e, 0x5b, 0xb4, 0x04, 0xb2, 0xdd, 0xc5, 0x4e, 0x24, 0xe3, - 0xc3, 0x96, 0xcf, 0xec, 0x6f, 0x7c, 0xe6, 0xb1, 0x19, 0x3e, 0x1e, 0x9e, 0xf3, 0x61, 0xaf, 0x38, - 0xaa, 0x25, 0x81, 0x21, 0x52, 0x41, 0x2f, 0x47, 0x0e, 0xc6, 0xf7, 0xb6, 0x83, 0x37, 0x99, 0x66, - 0x06, 0xa4, 0xa0, 0x62, 0xed, 0x57, 0x67, 0x7f, 0x2d, 0x20, 0xcd, 0xe3, 0xc5, 0x4d, 0x7a, 0xd2, - 0x28, 0x7c, 0x48, 0x9e, 0x92, 0x41, 0xc7, 0x20, 0xfd, 0xaa, 0x6e, 0xb6, 0xc5, 0xaf, 0xfb, 0xaa, - 0xfc, 0x0b, 0x95, 0xfd, 0x83, 0x9f, 0x29, 0x9a, 0xc1, 0x51, 0x86, 0xb1, 0xbe, 0x6a, 0x5b, 0xad, - 0xe8, 0x79, 0x4f, 0xb4, 0x04, 0x69, 0xcf, 0xbe, 0x89, 0x2d, 0x3e, 0xa3, 0xd5, 0x47, 0x0e, 0xe1, - 0x23, 0xa8, 0x1c, 0x15, 0x7d, 0x03, 0xc8, 0x2d, 0xdc, 0xc6, 0xbb, 0x2c, 0x95, 0xb0, 0xa7, 0x3b, - 0x98, 0xe5, 0xb4, 0xef, 0xc9, 0x03, 0x28, 0xf9, 0xa4, 0x1a, 0x94, 0x12, 0xda, 0x8c, 0x86, 0x4e, - 0x93, 0xfe, 0x9d, 0xae, 0xd8, 0x31, 0x86, 0x96, 0x4a, 0x58, 0x5d, 0x46, 0x42, 0xad, 0x87, 0x41, - 0xee, 0x59, 0xdb, 0xb6, 0x45, 0x7f, 0x14, 0x93, 0x27, 0xb1, 0x32, 0xec, 0xb2, 0x84, 0x5f, 0xce, - 0x2f, 0x4b, 0x6c, 0x42, 0x31, 0x00, 0xa5, 0x4b, 0x3a, 0x7b, 0xd8, 0x25, 0x5d, 0xf0, 0x09, 0x10, - 0x10, 0xb4, 0x06, 0x10, 0x28, 0x0d, 0x9a, 0x66, 0xcf, 0x0d, 0x9f, 0xb1, 0x40, 0xfd, 0x84, 0x07, - 0x13, 0x22, 0x80, 0x2c, 0x98, 0xee, 0x98, 0x96, 0xe6, 0xe2, 0xf6, 0x8e, 0xc6, 0x39, 0x47, 0xe8, - 0xe6, 0x28, 0xfb, 0x9f, 0x3f, 0xc4, 0x6c, 0xfe, 0xf6, 0x67, 0x1e, 0x2b, 0x05, 0xae, 0xd3, 0xc2, - 0xe3, 0x8b, 0x4f, 0x3e, 0xa5, 0x4e, 0x75, 0x4c, 0xab, 0x81, 0xdb, 0x3b, 0xcb, 0x3e, 0x61, 0xf4, - 0x2e, 0x38, 0x19, 0x30, 0xc4, 0xb6, 0xb4, 0x3d, 0xbb, 0xdd, 0xd2, 0x1c, 0xbc, 0xa3, 0x19, 0xd4, - 0xf1, 0xcb, 0x53, 0x36, 0x1e, 0xf7, 0x41, 0x36, 0xac, 0x6b, 0x76, 0xbb, 0xa5, 0xe2, 0x9d, 0x25, - 0x52, 0x8d, 0xce, 0x40, 0xc0, 0x0d, 0xcd, 0x6c, 0xb9, 0xb3, 0x85, 0x85, 0xe4, 0xb9, 0x94, 0x9a, - 0xf7, 0x0b, 0xeb, 0x2d, 0xb7, 0x9c, 0xf9, 0xe0, 0x1b, 0xf3, 0x47, 0xbe, 0xf8, 0xc6, 0xfc, 0x11, - 0xe5, 0x2a, 0x7d, 0xb5, 0x8d, 0x2f, 0x2d, 0xec, 0xa2, 0x2b, 0x90, 0xd5, 0xc5, 0x07, 0x7b, 0xf8, - 0xf0, 0x80, 0xa5, 0x19, 0x80, 0x2a, 0x9f, 0x92, 0x20, 0xbd, 0x7c, 0x63, 0x53, 0x37, 0x1d, 0x54, - 0x23, 0x81, 0x91, 0x90, 0xd5, 0x71, 0x57, 0x79, 0x20, 0xde, 0x62, 0x99, 0xaf, 0x0f, 0x4b, 0x0f, - 0x67, 0xab, 0xa7, 0x7f, 0xe3, 0x33, 0x8f, 0xdd, 0xcf, 0xc9, 0xdc, 0xe8, 0xcb, 0x14, 0x0b, 0x7a, - 0xfd, 0x19, 0xe4, 0xd0, 0x98, 0xaf, 0xc3, 0x24, 0xeb, 0xaa, 0x8b, 0x5e, 0x80, 0x89, 0x2e, 0xf9, - 0x83, 0x9f, 0xb8, 0x3e, 0x35, 0x54, 0xe6, 0x29, 0x7c, 0x58, 0x42, 0x18, 0x9e, 0xf2, 0x1d, 0x09, - 0x80, 0xe5, 0x1b, 0x37, 0x9a, 0x8e, 0xd9, 0x6d, 0x63, 0xef, 0xed, 0x1a, 0xfb, 0x16, 0x1c, 0x0d, - 0x65, 0x0e, 0x1d, 0xe3, 0xf0, 0xe3, 0x9f, 0x0e, 0x72, 0x88, 0x8e, 0x11, 0x4b, 0xb6, 0xe5, 0x7a, - 0x3e, 0xd9, 0xe4, 0xe1, 0xc9, 0x2e, 0xbb, 0xde, 0x20, 0x67, 0x5f, 0x82, 0x5c, 0xc0, 0x0c, 0x17, - 0xd5, 0x21, 0xe3, 0xf1, 0xbf, 0x39, 0x83, 0x95, 0xe1, 0x0c, 0x16, 0x68, 0x61, 0x26, 0xfb, 0xe8, - 0xca, 0x5f, 0x4a, 0x00, 0xa1, 0x35, 0xf2, 0xd7, 0x53, 0xc6, 0x48, 0x78, 0xc6, 0x95, 0x73, 0xf2, - 0x9e, 0xc3, 0x33, 0x46, 0x20, 0xc4, 0xd4, 0xef, 0x4a, 0xc0, 0xf4, 0x96, 0x58, 0xbd, 0x7f, 0xfd, - 0x79, 0xb0, 0x05, 0x93, 0xd8, 0xf2, 0x1c, 0xd3, 0xbf, 0x31, 0xf0, 0xf8, 0xb0, 0x39, 0x8f, 0x19, - 0x54, 0xcd, 0xf2, 0x9c, 0xfd, 0xb0, 0x04, 0x08, 0x5a, 0x21, 0x7e, 0x7c, 0x34, 0x09, 0xb3, 0xc3, - 0x50, 0xd1, 0x59, 0x28, 0x19, 0x0e, 0xa6, 0x05, 0xd1, 0x77, 0x38, 0x8b, 0xa2, 0x98, 0x9b, 0x1d, - 0x15, 0x88, 0x67, 0x49, 0x84, 0x8b, 0x80, 0xde, 0x9b, 0x2b, 0x59, 0x0c, 0x28, 0x50, 0xc3, 0xd3, - 0x84, 0x92, 0x78, 0x2a, 0x67, 0x5b, 0x6f, 0xeb, 0x96, 0x21, 0x5c, 0xee, 0x43, 0xd9, 0x7c, 0xf1, - 0xdc, 0x4e, 0x95, 0x91, 0x40, 0x35, 0x98, 0x14, 0xd4, 0x52, 0x87, 0xa7, 0x26, 0x70, 0xd1, 0x69, - 0xc8, 0x87, 0x0d, 0x03, 0xf5, 0x46, 0x52, 0x6a, 0x2e, 0x64, 0x17, 0x46, 0x59, 0x9e, 0xf4, 0x81, - 0x96, 0x87, 0x3b, 0x7c, 0x3f, 0x94, 0x84, 0x29, 0x15, 0xb7, 0xfe, 0xe6, 0x4f, 0xcb, 0x26, 0x00, - 0x5b, 0xaa, 0x44, 0x93, 0xf2, 0x99, 0xb9, 0x87, 0xf5, 0x9e, 0x65, 0x44, 0x96, 0x5d, 0xef, 0x6b, - 0x35, 0x43, 0xbf, 0x93, 0x80, 0x7c, 0x78, 0x86, 0xfe, 0x56, 0x1a, 0x2d, 0xb4, 0x1e, 0xa8, 0x29, - 0xb6, 0x51, 0xfe, 0xf0, 0x30, 0x35, 0x35, 0x20, 0xcd, 0x23, 0xf4, 0xd3, 0x97, 0x92, 0x90, 0xe6, - 0x97, 0x6e, 0x37, 0x06, 0x7c, 0xdb, 0x91, 0x8f, 0x30, 0x17, 0xc4, 0x3b, 0xd6, 0xb1, 0xae, 0xed, - 0x83, 0x50, 0x24, 0x41, 0x7d, 0xe4, 0x26, 0xaf, 0x74, 0xae, 0x40, 0x63, 0xf3, 0xe0, 0x60, 0x13, - 0x9a, 0x87, 0x1c, 0x01, 0x0b, 0xf4, 0x30, 0x81, 0x81, 0x8e, 0x7e, 0xa7, 0xc6, 0x4a, 0xd0, 0x45, - 0x40, 0x7b, 0x7e, 0xa6, 0x45, 0x0b, 0x18, 0x21, 0x9d, 0x2b, 0xd0, 0x17, 0xc9, 0xa7, 0x82, 0x5a, - 0x81, 0x72, 0x3f, 0x00, 0xe9, 0x89, 0xc6, 0xb2, 0x92, 0xfc, 0x67, 0xb2, 0x49, 0xc9, 0x32, 0xcd, - 0x4c, 0x7e, 0x9b, 0xc4, 0xdc, 0xe4, 0xbe, 0xf0, 0x9f, 0x47, 0x29, 0xcd, 0x31, 0x16, 0xc6, 0x9f, - 0xbd, 0x39, 0x3f, 0xb7, 0xaf, 0x77, 0xda, 0x65, 0x25, 0x86, 0x8e, 0x12, 0x97, 0x91, 0x20, 0xce, - 0x73, 0x34, 0x7d, 0x80, 0xea, 0x20, 0xdf, 0xc4, 0xfb, 0x9a, 0xc3, 0x7f, 0x49, 0x5e, 0xdb, 0xc1, - 0xe2, 0x2d, 0xf4, 0x13, 0x8b, 0x31, 0x39, 0xe2, 0xc5, 0x25, 0xdb, 0xb4, 0xf8, 0x16, 0x66, 0xf1, - 0x26, 0xde, 0x57, 0x39, 0xde, 0x55, 0x8c, 0xcb, 0x0f, 0x90, 0xd5, 0xf2, 0xfa, 0x1f, 0xfc, 0xcc, - 0xf9, 0x93, 0xa1, 0x7c, 0xe7, 0x1d, 0x3f, 0xb1, 0xc7, 0xa6, 0x98, 0x38, 0xbe, 0x28, 0x30, 0x42, - 0xa1, 0xdb, 0xdb, 0x10, 0x8a, 0x15, 0xa4, 0x83, 0x63, 0x90, 0x00, 0x3f, 0x12, 0x83, 0x84, 0x96, - 0xe8, 0xf3, 0x81, 0x0d, 0x48, 0x8c, 0x1a, 0x4d, 0x58, 0x3a, 0x39, 0x12, 0x5d, 0xf9, 0x47, 0x94, - 0xff, 0x24, 0xc1, 0x89, 0x01, 0x69, 0xf6, 0xbb, 0x6c, 0x00, 0x72, 0x42, 0x95, 0x54, 0x2a, 0xc4, - 0x05, 0x9e, 0x7b, 0x5b, 0x1c, 0x53, 0xce, 0x80, 0x21, 0x78, 0x7b, 0x8c, 0x19, 0xd7, 0x64, 0xbf, - 0x2a, 0xc1, 0x4c, 0xb8, 0x03, 0xfe, 0x50, 0x1a, 0x90, 0x0f, 0x37, 0xcd, 0x07, 0xf1, 0xc0, 0x38, - 0x83, 0x08, 0xf7, 0x3f, 0x42, 0x04, 0xdd, 0x08, 0x34, 0x06, 0x4b, 0x27, 0x5e, 0x1c, 0x9b, 0x29, - 0xa2, 0x63, 0xb1, 0x9a, 0x83, 0xcd, 0xcd, 0x97, 0x24, 0x48, 0x6d, 0xda, 0x76, 0x1b, 0xbd, 0x17, - 0xa6, 0x2c, 0xdb, 0xd3, 0xc8, 0xca, 0xc2, 0x2d, 0x8d, 0xa7, 0x0e, 0x98, 0x36, 0xae, 0x1d, 0xc8, - 0xab, 0x3f, 0x7c, 0x73, 0x7e, 0x10, 0x33, 0x6e, 0xcf, 0xa1, 0x64, 0xd9, 0x5e, 0x95, 0x02, 0x35, - 0x59, 0x76, 0x61, 0x07, 0x0a, 0xd1, 0xe6, 0x98, 0xc6, 0xae, 0x8c, 0x6a, 0xae, 0x30, 0xb2, 0xa9, - 0xfc, 0x76, 0xa8, 0x1d, 0xf6, 0xb3, 0x43, 0x7f, 0x42, 0x66, 0xee, 0x9b, 0x40, 0xbe, 0xd1, 0x7f, - 0x3d, 0xf4, 0x2a, 0x4c, 0x8a, 0xeb, 0xa0, 0xd2, 0xb8, 0x57, 0x4d, 0xc3, 0xfc, 0xe4, 0xc8, 0x34, - 0x5f, 0xfb, 0xb9, 0x04, 0x9c, 0x58, 0xb2, 0x2d, 0x97, 0x27, 0x7a, 0xf8, 0xaa, 0x66, 0xc9, 0xe5, - 0x7d, 0xf4, 0xf0, 0x90, 0x34, 0x54, 0x7e, 0x30, 0xd9, 0x74, 0x03, 0x4a, 0xc4, 0xc4, 0x1a, 0xb6, - 0xf5, 0x16, 0x73, 0x4d, 0x05, 0xbb, 0xdd, 0xe2, 0x3d, 0xba, 0x89, 0xf7, 0x09, 0x5d, 0x0b, 0xdf, - 0x8e, 0xd0, 0x4d, 0xde, 0x1b, 0x5d, 0x0b, 0xdf, 0x0e, 0xd1, 0x0d, 0xce, 0x0c, 0xa5, 0x22, 0x37, - 0x90, 0xae, 0x40, 0x92, 0xa8, 0xc2, 0x89, 0x43, 0x28, 0x0f, 0x82, 0x10, 0x32, 0x6b, 0x0d, 0x38, - 0xc1, 0x33, 0x05, 0xee, 0xc6, 0x0e, 0xe5, 0x28, 0xa6, 0x03, 0x7a, 0x11, 0xef, 0xc7, 0xa4, 0x0d, - 0xf2, 0x63, 0xa5, 0x0d, 0xce, 0xff, 0xbc, 0x04, 0x10, 0xe4, 0xcc, 0xd0, 0xa3, 0x70, 0xbc, 0xba, - 0xb1, 0xbe, 0x1c, 0x5c, 0xc6, 0x08, 0x6d, 0xad, 0x8b, 0x53, 0x1a, 0x6e, 0x17, 0x1b, 0xe6, 0x8e, - 0x89, 0x5b, 0xe8, 0x21, 0x98, 0x89, 0x42, 0x93, 0xaf, 0xda, 0xb2, 0x2c, 0xcd, 0xe5, 0x5f, 0xbf, - 0xbb, 0x90, 0x61, 0x31, 0x02, 0x6e, 0xa1, 0x73, 0x70, 0x74, 0x10, 0xae, 0xbe, 0xbe, 0x22, 0x27, - 0xe6, 0x0a, 0xaf, 0xdf, 0x5d, 0xc8, 0xfa, 0xc1, 0x04, 0x52, 0x00, 0x85, 0x21, 0x39, 0xbd, 0xe4, - 0x1c, 0xbc, 0x7e, 0x77, 0x21, 0xcd, 0x96, 0x0c, 0xbf, 0xc5, 0xf1, 0x8d, 0x00, 0x75, 0x6b, 0xc7, - 0xd1, 0x0d, 0xaa, 0x1a, 0xe6, 0xe0, 0x58, 0x7d, 0xfd, 0xaa, 0x5a, 0x59, 0x6a, 0xd6, 0x37, 0xd6, - 0xfb, 0x4e, 0x04, 0x44, 0xeb, 0x96, 0x37, 0xb6, 0xaa, 0xab, 0x35, 0xad, 0x51, 0x5f, 0x59, 0x67, - 0x57, 0xae, 0x22, 0x75, 0xef, 0x59, 0x6f, 0xd6, 0xd7, 0x6a, 0x72, 0xa2, 0x7a, 0x65, 0xe8, 0x76, - 0xdc, 0x7d, 0x91, 0xc5, 0x18, 0x98, 0xa3, 0xc8, 0x46, 0xdc, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, - 0xf0, 0xde, 0x01, 0x06, 0xe8, 0xa7, 0x00, 0x00, + 0x44, 0xcf, 0xc3, 0x24, 0x57, 0x0a, 0xfe, 0xb5, 0xea, 0x38, 0x6f, 0x59, 0x44, 0x67, 0xdc, 0x5f, + 0x4e, 0x33, 0x9d, 0x81, 0x4e, 0x43, 0x3e, 0xa6, 0x37, 0xb9, 0x9b, 0x41, 0x47, 0xe8, 0x73, 0x45, + 0x7c, 0x08, 0x5a, 0xd7, 0x31, 0x6d, 0xc7, 0xf4, 0xf6, 0xa9, 0xe9, 0x49, 0xaa, 0xb2, 0xa8, 0xd8, + 0xe4, 0xe5, 0x4a, 0x1b, 0x4a, 0x0d, 0xb3, 0xd3, 0xa5, 0x1e, 0x1e, 0xef, 0xfa, 0xe5, 0xa0, 0x83, + 0xd2, 0x18, 0x1d, 0x1c, 0xda, 0xb5, 0xc4, 0x40, 0xd7, 0xce, 0xff, 0x86, 0xc4, 0x6d, 0x43, 0x7d, + 0xf9, 0x4a, 0x5b, 0xdf, 0x45, 0x17, 0xe1, 0x68, 0x75, 0x75, 0x63, 0xe9, 0x65, 0xad, 0xbe, 0xac, + 0x5d, 0x59, 0xad, 0xac, 0x04, 0xa7, 0x78, 0xe7, 0x8e, 0xdd, 0xb9, 0xbb, 0x80, 0x42, 0xb0, 0x5b, + 0x16, 0x75, 0x71, 0xd0, 0x05, 0x98, 0x89, 0xa2, 0x54, 0xaa, 0x8d, 0xda, 0x7a, 0x53, 0x96, 0xe6, + 0x8e, 0xde, 0xb9, 0xbb, 0x30, 0x15, 0xc2, 0xa8, 0x6c, 0xbb, 0xd8, 0xf2, 0x06, 0x11, 0x96, 0x36, + 0xd6, 0xd6, 0xea, 0x4d, 0x39, 0x31, 0x80, 0xb0, 0x64, 0x77, 0x3a, 0xa6, 0x87, 0x1e, 0x86, 0xa9, + 0x28, 0xc2, 0x7a, 0x7d, 0x55, 0x4e, 0xce, 0xa1, 0x3b, 0x77, 0x17, 0x8a, 0x21, 0xe8, 0x75, 0xb3, + 0x3d, 0x97, 0xf9, 0xe0, 0x8f, 0x9c, 0x3a, 0xf2, 0xc9, 0x7f, 0x7c, 0x4a, 0xaa, 0xae, 0xbe, 0x2b, + 0x0b, 0xef, 0xfb, 0x13, 0x30, 0xdf, 0xef, 0x29, 0x79, 0x66, 0x07, 0xbb, 0x9e, 0xde, 0xe9, 0x0e, + 0x73, 0xda, 0x9f, 0x83, 0x6c, 0x53, 0xc0, 0x1c, 0x3a, 0x96, 0xb9, 0x7b, 0x48, 0x57, 0xb5, 0xe8, + 0x37, 0x25, 0x7c, 0xd5, 0x4b, 0x63, 0xfa, 0xaa, 0xfe, 0x38, 0xee, 0xc9, 0x59, 0xfd, 0xed, 0x06, + 0xdc, 0x17, 0x30, 0x71, 0xdb, 0x30, 0x89, 0x12, 0x61, 0xab, 0x99, 0xb1, 0x45, 0xf6, 0x65, 0x96, + 0xd4, 0x12, 0x65, 0x74, 0xb0, 0xda, 0x99, 0x1b, 0x91, 0x5e, 0x98, 0x1b, 0xe1, 0x1b, 0xcf, 0x8d, + 0xd6, 0x90, 0x43, 0xd4, 0xe1, 0xa8, 0x19, 0x56, 0xfe, 0x73, 0x16, 0x26, 0x55, 0xfc, 0xbe, 0x1e, + 0x76, 0x3d, 0xf4, 0x04, 0xa4, 0xb0, 0xb1, 0x67, 0x0f, 0xae, 0x4c, 0x3e, 0xca, 0xc5, 0x9a, 0xb1, + 0x67, 0x73, 0xe0, 0xab, 0x47, 0x54, 0x0a, 0x8c, 0x2e, 0xc3, 0xc4, 0x4e, 0xbb, 0xe7, 0xee, 0x71, + 0x85, 0x73, 0x6a, 0x10, 0xeb, 0x0a, 0xa9, 0x0e, 0xd0, 0x18, 0x38, 0x69, 0x8c, 0x3e, 0xa7, 0x95, + 0x1c, 0xd6, 0x18, 0x7d, 0x45, 0x2b, 0x68, 0x8c, 0x00, 0xa3, 0x25, 0x00, 0xd3, 0x32, 0x3d, 0xcd, + 0xd8, 0xd3, 0x4d, 0x8b, 0x7b, 0xae, 0x4a, 0x1c, 0xaa, 0xe9, 0x2d, 0x11, 0x90, 0x00, 0x3f, 0x6b, + 0x8a, 0x32, 0xd2, 0xe3, 0xf7, 0xf5, 0xb0, 0x23, 0xbc, 0xd7, 0x98, 0x1e, 0xbf, 0x87, 0x54, 0x87, + 0x7a, 0x4c, 0xc1, 0x89, 0xb7, 0xcf, 0xae, 0x7a, 0x7b, 0xb7, 0xf9, 0x03, 0x26, 0x0b, 0x83, 0xa8, + 0xf4, 0xa6, 0x77, 0xf3, 0x76, 0x80, 0x3c, 0x69, 0xb0, 0x12, 0xf4, 0x2c, 0xa4, 0x0d, 0xaa, 0x04, + 0xe8, 0x05, 0xcc, 0xdc, 0xa5, 0xf9, 0x18, 0x64, 0x5a, 0x1f, 0xe0, 0x72, 0x04, 0xb4, 0x01, 0xc5, + 0xb6, 0xe9, 0x7a, 0x9a, 0x6b, 0xe9, 0x5d, 0x77, 0xcf, 0xf6, 0x5c, 0xfa, 0x86, 0x58, 0xee, 0xd2, + 0x43, 0x83, 0x24, 0x56, 0x4d, 0xd7, 0x6b, 0x08, 0xb0, 0x80, 0x52, 0xa1, 0x1d, 0x2e, 0x27, 0x04, + 0xed, 0x9d, 0x1d, 0xec, 0xf8, 0x14, 0xe9, 0xdb, 0x63, 0xb1, 0x04, 0x37, 0x08, 0x9c, 0xc0, 0x0c, + 0x11, 0xb4, 0xc3, 0xe5, 0xe8, 0xeb, 0x60, 0xba, 0x6d, 0xeb, 0x2d, 0x9f, 0x9e, 0x66, 0xec, 0xf5, + 0xac, 0x1b, 0xb3, 0x45, 0x4a, 0xf5, 0x7c, 0x4c, 0x37, 0x6d, 0xbd, 0x25, 0x90, 0x97, 0x08, 0x68, + 0x40, 0x79, 0xaa, 0xdd, 0x5f, 0x87, 0x34, 0x98, 0xd1, 0xbb, 0xdd, 0xf6, 0x7e, 0x3f, 0xf9, 0x12, + 0x25, 0xff, 0xc8, 0x20, 0xf9, 0x0a, 0x81, 0x1e, 0x42, 0x1f, 0xe9, 0x03, 0x95, 0x68, 0x0b, 0xe4, + 0xae, 0x83, 0xe9, 0xc9, 0x0c, 0x66, 0xc5, 0xf4, 0x36, 0xbd, 0x23, 0x99, 0xbb, 0x74, 0x6e, 0x90, + 0xf8, 0x26, 0x83, 0xdc, 0xe4, 0x80, 0x01, 0xe5, 0x52, 0x37, 0x5a, 0xc3, 0xc8, 0xda, 0x06, 0xa6, + 0x77, 0xb8, 0x39, 0xd9, 0xa9, 0xe1, 0x64, 0x29, 0x64, 0x2c, 0xd9, 0x48, 0x0d, 0xba, 0x02, 0x39, + 0xf6, 0x6e, 0x0f, 0x71, 0x1e, 0x30, 0xbd, 0x5b, 0x99, 0xbb, 0x74, 0x26, 0x66, 0xb9, 0x52, 0xa0, + 0xeb, 0xb6, 0x87, 0x03, 0x62, 0x80, 0xfd, 0x42, 0xb4, 0x0d, 0x47, 0xe9, 0x3d, 0xd3, 0x7d, 0x2d, + 0xea, 0x22, 0xce, 0x4e, 0x53, 0x8a, 0x8f, 0x0e, 0x52, 0xa4, 0x8f, 0x2c, 0xed, 0x5f, 0x0f, 0xfb, + 0x8a, 0x01, 0xe9, 0xe9, 0x9b, 0x83, 0xb5, 0x44, 0xd2, 0x76, 0x4c, 0x4b, 0x6f, 0x9b, 0x6f, 0x60, + 0x16, 0x4f, 0xd1, 0x27, 0x16, 0x62, 0x25, 0xed, 0x0a, 0x87, 0xa3, 0x76, 0x30, 0x24, 0x69, 0x3b, + 0xe1, 0xf2, 0xea, 0x24, 0xcf, 0x82, 0xf8, 0x77, 0x86, 0x27, 0xe5, 0x0c, 0xbb, 0x27, 0x7c, 0x2d, + 0x95, 0x01, 0x39, 0xa7, 0x9c, 0x85, 0x5c, 0x48, 0x4f, 0x11, 0x23, 0xc5, 0xfd, 0x7c, 0x9e, 0x5b, + 0x11, 0x9f, 0x4a, 0x11, 0xf2, 0x61, 0xd5, 0xa4, 0x7c, 0x48, 0x82, 0x5c, 0x48, 0xe9, 0x10, 0x4c, + 0x11, 0x5c, 0x73, 0x4c, 0x11, 0x3a, 0x9f, 0x11, 0x81, 0x8e, 0xa8, 0x4f, 0xd0, 0x30, 0x2a, 0x4f, + 0x0b, 0x79, 0x9c, 0x85, 0xe6, 0x21, 0xd7, 0xbd, 0xd4, 0xf5, 0x41, 0x92, 0x14, 0x04, 0xba, 0x97, + 0xba, 0x02, 0xe0, 0x34, 0xe4, 0xc9, 0xd0, 0xb5, 0x70, 0x04, 0x9f, 0x55, 0x73, 0xa4, 0x8c, 0x83, + 0x28, 0xbf, 0x96, 0x00, 0xb9, 0x5f, 0x99, 0xa1, 0x67, 0x20, 0x45, 0xb4, 0x38, 0x57, 0xd3, 0x73, + 0x03, 0x31, 0x82, 0x6f, 0x35, 0x59, 0xb4, 0xf9, 0x21, 0x12, 0xeb, 0x50, 0x0c, 0x74, 0x82, 0x68, + 0x30, 0xdd, 0xb4, 0x34, 0xb3, 0x25, 0xde, 0xa9, 0xa4, 0xdf, 0xf5, 0x16, 0x89, 0x66, 0x0d, 0x91, + 0x13, 0xd1, 0x98, 0xed, 0x39, 0x20, 0x25, 0xd1, 0x97, 0x3e, 0x51, 0x4b, 0x46, 0x5f, 0x3e, 0x65, + 0x25, 0xe2, 0x56, 0xb3, 0xd7, 0x6f, 0x4e, 0xc7, 0xc8, 0x93, 0x80, 0xd9, 0xea, 0xb6, 0x74, 0x0f, + 0x73, 0x7f, 0x34, 0xec, 0x61, 0x3f, 0x04, 0x25, 0xbd, 0xdb, 0xd5, 0x5c, 0x4f, 0xf7, 0x30, 0x8f, + 0x3d, 0x27, 0xa8, 0xcf, 0x5b, 0xd0, 0xbb, 0x5d, 0xfa, 0xce, 0x17, 0x8b, 0x3d, 0x1f, 0x84, 0x22, + 0xd1, 0xf0, 0xa6, 0xde, 0x16, 0x81, 0x4d, 0x9a, 0x85, 0xa8, 0xbc, 0x94, 0x07, 0x47, 0x2d, 0xc8, + 0x87, 0x95, 0xbb, 0x9f, 0x7a, 0x96, 0x82, 0xd4, 0x33, 0x29, 0xa3, 0x17, 0x4f, 0x18, 0x87, 0xc4, + 0x65, 0x9d, 0x34, 0x27, 0xcb, 0x9c, 0x62, 0xfe, 0x45, 0x1c, 0x9d, 0xae, 0x63, 0xdf, 0x64, 0x97, + 0xa9, 0x32, 0x2a, 0xfb, 0x50, 0x5e, 0x85, 0x62, 0xd4, 0x0e, 0xa0, 0x22, 0x24, 0xbc, 0xdb, 0xbc, + 0x95, 0x84, 0x77, 0x1b, 0x5d, 0x0c, 0xbd, 0x90, 0x56, 0x8c, 0xb3, 0x7e, 0x1c, 0x3f, 0x78, 0xda, + 0xeb, 0x5a, 0x2a, 0x93, 0x90, 0x93, 0x4a, 0x09, 0x0a, 0x11, 0x2b, 0xa1, 0x1c, 0x83, 0x99, 0x38, + 0x9d, 0xaf, 0x98, 0x30, 0x13, 0xa7, 0xba, 0xd1, 0x65, 0xc8, 0xf8, 0x4a, 0x5f, 0x48, 0xd0, 0x40, + 0xeb, 0x3e, 0x92, 0x0f, 0x4b, 0x64, 0x87, 0x4c, 0x04, 0xdd, 0xa1, 0x48, 0xf0, 0xa8, 0xa3, 0xdb, + 0xbd, 0xaa, 0xbb, 0x7b, 0xca, 0x37, 0xc2, 0xec, 0x30, 0x7d, 0x1e, 0x62, 0x1c, 0x4b, 0x35, 0x08, + 0xc6, 0x1d, 0x83, 0x34, 0x7f, 0x6d, 0x21, 0x41, 0x33, 0xa7, 0xfc, 0x8b, 0x30, 0x94, 0xe9, 0xf6, + 0x24, 0x4b, 0xa8, 0xd2, 0x0f, 0x45, 0x83, 0x13, 0x43, 0x55, 0x7a, 0xb0, 0xa5, 0xc2, 0x73, 0xb0, + 0x6c, 0x4b, 0xc5, 0x27, 0xc4, 0x3a, 0xcb, 0x3e, 0xe8, 0x2b, 0x9c, 0xd8, 0x6a, 0xf1, 0xe0, 0x26, + 0xab, 0xf2, 0x2f, 0xe5, 0x23, 0x49, 0x38, 0x16, 0xaf, 0xd7, 0xd1, 0x02, 0xe4, 0x3b, 0xfa, 0x6d, + 0xcd, 0x8b, 0xa6, 0x3e, 0xa0, 0xa3, 0xdf, 0x6e, 0xf2, 0xbc, 0x87, 0x0c, 0x49, 0xef, 0xb6, 0x4b, + 0x2f, 0x72, 0xe5, 0x55, 0xf2, 0x27, 0xba, 0x0e, 0x53, 0x6d, 0xdb, 0xd0, 0xdb, 0x5a, 0x5b, 0x77, + 0x3d, 0x8d, 0x9b, 0x7d, 0xb6, 0x9c, 0x1e, 0x18, 0xa6, 0xa7, 0xd9, 0x75, 0x2b, 0xd3, 0x23, 0x2a, + 0x88, 0x2f, 0x84, 0x12, 0x25, 0xb2, 0xaa, 0xbb, 0x1e, 0x0f, 0x1f, 0x6a, 0x90, 0xeb, 0x98, 0xee, + 0x36, 0xde, 0xd3, 0x6f, 0x9a, 0xb6, 0xc3, 0xd7, 0x55, 0x8c, 0xf4, 0xac, 0x05, 0x40, 0x9c, 0x54, + 0x18, 0x2f, 0x34, 0x29, 0x13, 0x11, 0x69, 0x16, 0x9a, 0x25, 0x7d, 0x68, 0xcd, 0xf2, 0x38, 0xcc, + 0x58, 0xf8, 0x36, 0xbd, 0x2b, 0xc8, 0x57, 0x2e, 0x93, 0x14, 0x76, 0xd5, 0x0f, 0x91, 0x3a, 0x7f, + 0xad, 0xbb, 0x74, 0x57, 0xeb, 0x61, 0xf0, 0x03, 0x46, 0x4d, 0x44, 0xb3, 0x19, 0x0a, 0x5d, 0x12, + 0xe5, 0x15, 0x56, 0xac, 0xdc, 0xa1, 0x93, 0x13, 0x67, 0x1d, 0x05, 0xeb, 0xa5, 0x80, 0xf5, 0x4d, + 0x98, 0xe1, 0xf8, 0xad, 0x08, 0xf7, 0x07, 0xc2, 0xf3, 0xa8, 0xd3, 0x15, 0xe2, 0x3a, 0x12, 0xf8, + 0xc3, 0x19, 0x9f, 0xbc, 0x47, 0xc6, 0x23, 0x48, 0x51, 0xb6, 0xa4, 0x98, 0xba, 0x21, 0x7f, 0xff, + 0xbf, 0x36, 0x19, 0x1f, 0x48, 0xc2, 0xd4, 0x80, 0x63, 0xe1, 0x0f, 0x4c, 0x8a, 0x1d, 0x58, 0x22, + 0x76, 0x60, 0xc9, 0x43, 0x0f, 0x8c, 0xcf, 0x76, 0x6a, 0xf4, 0x6c, 0x4f, 0xbc, 0x93, 0xb3, 0x9d, + 0xbe, 0xc7, 0xd9, 0x7e, 0x57, 0xe7, 0xe1, 0x63, 0x12, 0xcc, 0x0d, 0x77, 0xc7, 0x62, 0x27, 0xe4, + 0x11, 0x98, 0xf2, 0xbb, 0xe2, 0x93, 0x67, 0xea, 0x51, 0xf6, 0x2b, 0x38, 0xfd, 0xa1, 0x16, 0xef, + 0x41, 0x28, 0xf6, 0x79, 0x8b, 0x4c, 0x98, 0x0b, 0x91, 0x0c, 0xa2, 0xf2, 0xad, 0x49, 0x98, 0x89, + 0x73, 0xe8, 0x62, 0x56, 0xac, 0x0a, 0xd3, 0x2d, 0x6c, 0x98, 0xad, 0x7b, 0x5e, 0xb0, 0x53, 0x1c, + 0xfd, 0xff, 0xaf, 0xd7, 0x18, 0x39, 0xf9, 0x51, 0x80, 0x8c, 0x8a, 0xdd, 0x2e, 0x71, 0xd0, 0xd8, + 0x6b, 0xcf, 0x06, 0xee, 0x7a, 0x41, 0xa6, 0x3d, 0x36, 0x6e, 0xe0, 0x20, 0x02, 0x8f, 0xc4, 0xcf, + 0x3e, 0x1e, 0x7a, 0x92, 0xa7, 0x09, 0x86, 0x06, 0xfc, 0xcc, 0xfd, 0xf6, 0x51, 0x59, 0x9e, 0xe0, + 0x69, 0x91, 0x27, 0x48, 0x0e, 0x8b, 0x7e, 0xb9, 0x33, 0xee, 0xe3, 0xf1, 0x44, 0xc1, 0x93, 0x3c, + 0x51, 0x90, 0x1a, 0xd6, 0x1c, 0xf3, 0xd9, 0x83, 0xe6, 0x4c, 0x76, 0x91, 0x3b, 0x9c, 0x29, 0x48, + 0x0f, 0x1b, 0x6a, 0xc8, 0xb9, 0x0e, 0x86, 0x1a, 0xa4, 0x0a, 0x9e, 0x16, 0xa9, 0x82, 0xc9, 0x61, + 0x9d, 0xe6, 0xde, 0x64, 0xd0, 0x69, 0x96, 0x2b, 0x78, 0x31, 0x94, 0x2b, 0xc8, 0xf6, 0xef, 0x0c, + 0x0e, 0xe4, 0x0a, 0x7c, 0x6c, 0x3f, 0x59, 0x50, 0xf6, 0x93, 0x05, 0xf9, 0xa1, 0x99, 0x06, 0xee, + 0x06, 0xfa, 0xc8, 0x22, 0x5b, 0xb0, 0x39, 0x90, 0x2d, 0x60, 0xc1, 0xfd, 0xd9, 0x91, 0xd9, 0x02, + 0x9f, 0x54, 0x5f, 0xba, 0x60, 0x73, 0x20, 0x5d, 0x50, 0x1c, 0x46, 0xb1, 0xcf, 0xe7, 0x0c, 0x28, + 0x46, 0xf3, 0x05, 0x5f, 0x1f, 0x9f, 0x2f, 0x18, 0x1a, 0xd0, 0xc7, 0xf8, 0x97, 0x3e, 0xe9, 0x98, + 0x84, 0xc1, 0x37, 0x0e, 0x49, 0x18, 0xc8, 0xc3, 0x02, 0xdb, 0x38, 0xef, 0xd2, 0x6f, 0x20, 0x2e, + 0x63, 0x70, 0x3d, 0x26, 0x63, 0xc0, 0x42, 0xfb, 0x87, 0xc7, 0xc8, 0x18, 0xf8, 0xa4, 0x07, 0x52, + 0x06, 0xd7, 0x63, 0x52, 0x06, 0x68, 0x38, 0xdd, 0x3e, 0xa7, 0x28, 0x4c, 0x37, 0x9a, 0x33, 0x58, + 0x89, 0xe6, 0x0c, 0xa6, 0x0f, 0xf6, 0x45, 0x99, 0x69, 0xf7, 0xa9, 0x85, 0x93, 0x06, 0xc6, 0xb0, + 0xa4, 0x01, 0x8b, 0xeb, 0x1f, 0x1b, 0x33, 0x69, 0xe0, 0xd3, 0x8e, 0xcd, 0x1a, 0x6c, 0x0e, 0x64, + 0x0d, 0x8e, 0x0e, 0x13, 0xb8, 0x3e, 0x23, 0x13, 0x08, 0xdc, 0xd0, 0xb4, 0x01, 0x7b, 0x64, 0x8c, + 0x3d, 0x2f, 0x06, 0x72, 0xee, 0x5a, 0x2a, 0x93, 0x93, 0xf3, 0xca, 0xc3, 0xc4, 0xad, 0xe9, 0xd3, + 0x7b, 0x24, 0x88, 0xc0, 0x8e, 0x63, 0x3b, 0xe2, 0x58, 0x06, 0xfd, 0x50, 0xce, 0x41, 0x3e, 0xac, + 0xe2, 0x0e, 0x48, 0x31, 0x94, 0xa0, 0x10, 0xd1, 0x6a, 0xca, 0xcf, 0x4b, 0x90, 0x0f, 0xeb, 0xab, + 0x48, 0x00, 0x9a, 0xe5, 0x01, 0x68, 0x28, 0xf1, 0x90, 0x88, 0x26, 0x1e, 0xe6, 0x21, 0x47, 0x82, + 0xb0, 0xbe, 0x9c, 0x82, 0xde, 0xf5, 0x73, 0x0a, 0xe7, 0x61, 0x8a, 0xda, 0x50, 0x96, 0x9e, 0xe0, + 0x76, 0x8a, 0xed, 0xcf, 0x94, 0x48, 0x05, 0x65, 0x06, 0xdf, 0x79, 0x7c, 0x0c, 0xa6, 0x43, 0xb0, + 0x7e, 0x70, 0xc7, 0xc2, 0x6b, 0xd9, 0x87, 0xae, 0xf0, 0x28, 0xef, 0x97, 0x24, 0x98, 0x1a, 0x50, + 0x97, 0xb1, 0x79, 0x03, 0xe9, 0x9d, 0xca, 0x1b, 0x24, 0xee, 0x3d, 0x6f, 0x10, 0x0e, 0x57, 0x93, + 0xd1, 0x70, 0xf5, 0x2f, 0x24, 0x28, 0x44, 0xd4, 0x36, 0x99, 0x04, 0xc3, 0x6e, 0x89, 0x43, 0x3c, + 0xf4, 0x6f, 0xe2, 0xa7, 0xb4, 0xed, 0x5d, 0x1e, 0x26, 0x92, 0x3f, 0x09, 0x94, 0x6f, 0x88, 0xb2, + 0xdc, 0xcc, 0xf8, 0xb1, 0xe7, 0x44, 0xf8, 0x38, 0x1f, 0x3f, 0xe2, 0x96, 0x0e, 0x8e, 0xb8, 0xf9, + 0x67, 0x77, 0x26, 0x43, 0x67, 0x77, 0xd0, 0xb3, 0x90, 0xa5, 0xbb, 0x00, 0x9a, 0xdd, 0x0d, 0x7e, + 0x98, 0x62, 0xf8, 0xf1, 0x36, 0x97, 0xee, 0x1f, 0xb2, 0x33, 0x71, 0x81, 0x17, 0x92, 0x8d, 0x78, + 0x21, 0xf7, 0x41, 0x96, 0x74, 0x9f, 0x3d, 0xee, 0x08, 0xfc, 0x30, 0xad, 0x28, 0x50, 0x7e, 0x22, + 0x01, 0xa5, 0x3e, 0xab, 0x13, 0x3b, 0x78, 0x21, 0x95, 0x89, 0x50, 0x5a, 0x64, 0x3c, 0x86, 0x9c, + 0x02, 0xd8, 0xd5, 0x5d, 0xed, 0x96, 0x6e, 0x79, 0xfc, 0x0d, 0xf7, 0xa4, 0x1a, 0x2a, 0x41, 0x73, + 0x90, 0x21, 0x5f, 0x3d, 0x97, 0xbf, 0xe2, 0x9e, 0x54, 0xfd, 0x6f, 0x54, 0x87, 0x34, 0xbe, 0x49, + 0x9f, 0x23, 0x61, 0x8f, 0xfa, 0x1c, 0x8f, 0x51, 0x4f, 0xa4, 0xbe, 0x3a, 0x4b, 0xa6, 0xfb, 0x0f, + 0xde, 0x9a, 0x97, 0x19, 0xf8, 0xa3, 0xfe, 0xf3, 0x0b, 0x2a, 0x27, 0x10, 0x65, 0x43, 0xa6, 0x8f, + 0x0d, 0x34, 0x5d, 0x98, 0x17, 0xb1, 0x3f, 0x61, 0x2a, 0xdb, 0xb0, 0x54, 0x0b, 0x1d, 0xdc, 0xe9, + 0xda, 0x76, 0x5b, 0x63, 0xeb, 0xbc, 0x02, 0xc5, 0xa8, 0x91, 0x65, 0x2f, 0x2f, 0x7b, 0xba, 0x69, + 0x69, 0x11, 0xdf, 0x38, 0xcf, 0x0a, 0xd9, 0xba, 0xba, 0x96, 0xca, 0x48, 0x72, 0x82, 0xa7, 0x6b, + 0xde, 0x03, 0x47, 0x63, 0x6d, 0x2c, 0x7a, 0x06, 0xb2, 0x81, 0x7d, 0x66, 0xdb, 0xce, 0x07, 0xe5, + 0x61, 0x02, 0x60, 0xe5, 0x3a, 0x1c, 0x8d, 0x35, 0xb2, 0xe8, 0x05, 0x48, 0x3b, 0xd8, 0xed, 0xb5, + 0x3d, 0xfe, 0x2c, 0xe2, 0x83, 0xa3, 0xad, 0x73, 0xaf, 0xed, 0xa9, 0x1c, 0x49, 0xb9, 0x08, 0x27, + 0x86, 0x5a, 0xd9, 0x20, 0x9b, 0x22, 0x85, 0xb2, 0x29, 0xca, 0x4f, 0x49, 0x30, 0x37, 0xdc, 0x72, + 0xa2, 0x6a, 0x5f, 0x87, 0xce, 0x8f, 0x69, 0x77, 0x43, 0xbd, 0x22, 0xe1, 0x86, 0x83, 0x77, 0xb0, + 0x67, 0xec, 0x31, 0x13, 0xce, 0x94, 0x42, 0x41, 0x2d, 0xf0, 0x52, 0x8a, 0xe3, 0x32, 0xb0, 0xd7, + 0xb1, 0xe1, 0x69, 0x6c, 0x52, 0x5d, 0xfe, 0x53, 0x3b, 0x05, 0x56, 0xda, 0x60, 0x85, 0xca, 0x23, + 0x70, 0x7c, 0x88, 0x2d, 0x1e, 0x8c, 0x4b, 0x94, 0xd7, 0x08, 0x70, 0xac, 0x81, 0x45, 0x2f, 0x41, + 0xda, 0xf5, 0x74, 0xaf, 0xe7, 0xf2, 0x91, 0x9d, 0x1d, 0x69, 0x9b, 0x1b, 0x14, 0x5c, 0xe5, 0x68, + 0xca, 0x73, 0x80, 0x06, 0x2d, 0x6d, 0x4c, 0x6c, 0x25, 0xc5, 0xc5, 0x56, 0xdb, 0x70, 0xf2, 0x00, + 0x9b, 0x8a, 0x96, 0xfa, 0x3a, 0xf7, 0xc8, 0x58, 0x26, 0xb9, 0xaf, 0x83, 0x7f, 0x94, 0x80, 0xa3, + 0xb1, 0xa6, 0x35, 0xb4, 0x4a, 0xa5, 0xb7, 0xbb, 0x4a, 0x5f, 0x00, 0xf0, 0x6e, 0x6b, 0x6c, 0xa6, + 0x85, 0xb6, 0x8f, 0x8b, 0x27, 0x6e, 0x63, 0x83, 0x2a, 0x2c, 0x22, 0x18, 0x59, 0x8f, 0xff, 0x45, + 0x82, 0xff, 0x50, 0x3c, 0xdb, 0xa3, 0x96, 0xc0, 0xe5, 0xa1, 0xde, 0xd8, 0x36, 0x23, 0x08, 0x7c, + 0x59, 0xb1, 0x8b, 0x5e, 0x83, 0xe3, 0x7d, 0x16, 0xcd, 0xa7, 0x9d, 0x1a, 0xdb, 0xb0, 0x1d, 0x8d, + 0x1a, 0x36, 0x41, 0x3b, 0x6c, 0x95, 0x26, 0xa2, 0x56, 0xe9, 0x35, 0x80, 0x20, 0xb0, 0x25, 0xeb, + 0xcd, 0xb1, 0x7b, 0x56, 0x4b, 0x1c, 0x3e, 0xa5, 0x1f, 0xe8, 0x32, 0x4c, 0x10, 0x49, 0x10, 0xac, + 0x8a, 0x51, 0x18, 0x64, 0x4a, 0x43, 0x91, 0x31, 0x03, 0x57, 0x5e, 0x17, 0xd2, 0x16, 0xce, 0x31, + 0x0e, 0x69, 0xe3, 0xc5, 0x68, 0x1b, 0xca, 0xf0, 0x74, 0x65, 0x7c, 0x5b, 0x7f, 0x07, 0x26, 0xe8, + 0xf4, 0xc7, 0x9e, 0xfd, 0xfe, 0x06, 0x00, 0xdd, 0xf3, 0x1c, 0x73, 0xbb, 0x17, 0xb4, 0xb0, 0x30, + 0x44, 0x7e, 0x2a, 0x02, 0xb0, 0x7a, 0x1f, 0x17, 0xa4, 0x99, 0x00, 0x37, 0x24, 0x4c, 0x21, 0x8a, + 0xca, 0x3a, 0x14, 0xa3, 0xb8, 0xf1, 0x87, 0xd9, 0xc5, 0xaf, 0x02, 0x04, 0x47, 0x6d, 0x03, 0x43, + 0xce, 0x6f, 0x0b, 0xd1, 0x0f, 0xe5, 0x9b, 0x12, 0x90, 0x0f, 0x4b, 0xdf, 0xdf, 0x42, 0x63, 0xa9, + 0x7c, 0xab, 0x04, 0x19, 0x7f, 0xfc, 0xd1, 0x74, 0x7e, 0x64, 0x1f, 0x24, 0xb8, 0xd6, 0xe0, 0xe7, + 0xe0, 0xd9, 0xae, 0x47, 0xd2, 0xdf, 0xf5, 0x78, 0xde, 0x37, 0x08, 0x43, 0x83, 0xf9, 0x30, 0xb7, + 0xc5, 0xf1, 0x24, 0x6e, 0xa0, 0x9e, 0x1b, 0xef, 0x0c, 0xd4, 0x0c, 0x4c, 0x84, 0x8f, 0x2f, 0xb1, + 0x0f, 0x05, 0x87, 0x4e, 0x50, 0xb2, 0xd5, 0x18, 0x3e, 0x2c, 0x25, 0x1d, 0xfe, 0xb0, 0x94, 0xdf, + 0x4c, 0x22, 0xdc, 0xcc, 0x3f, 0x92, 0x20, 0x23, 0xd6, 0x05, 0x7a, 0x29, 0x7c, 0xbe, 0x57, 0x1c, + 0x16, 0x1c, 0xae, 0x97, 0x78, 0x03, 0xa1, 0xe3, 0xbd, 0x55, 0xb1, 0xcf, 0x68, 0xb6, 0xb4, 0x9d, + 0xb6, 0xbe, 0xcb, 0xb7, 0x8b, 0x86, 0x9e, 0x4e, 0x66, 0x87, 0x87, 0xf8, 0x81, 0xcb, 0x7a, 0x8b, + 0x7c, 0x70, 0x3f, 0xe4, 0xcf, 0x24, 0x90, 0xfb, 0xd7, 0xed, 0xdb, 0xef, 0xdf, 0xa0, 0xbd, 0x4a, + 0xc6, 0xd8, 0x2b, 0x74, 0x01, 0xa6, 0x83, 0x1f, 0xe6, 0x72, 0xcd, 0x5d, 0x8b, 0x1d, 0xfe, 0x65, + 0x49, 0x35, 0xe4, 0x57, 0x35, 0x44, 0xcd, 0xe0, 0xb8, 0x27, 0xee, 0x75, 0xdc, 0x1f, 0x48, 0x40, + 0x2e, 0x94, 0xe3, 0x43, 0x4f, 0x85, 0x94, 0x52, 0x31, 0xce, 0x4a, 0x84, 0x80, 0x43, 0x3f, 0xab, + 0x13, 0xe1, 0x54, 0xe2, 0x1e, 0x38, 0x35, 0x2c, 0x9b, 0x2a, 0x92, 0x86, 0xa9, 0x43, 0x27, 0x0d, + 0xe3, 0x0f, 0x10, 0x4e, 0x0c, 0x39, 0x40, 0xf8, 0xf7, 0x24, 0xc8, 0xf8, 0xc9, 0x97, 0xc3, 0xee, + 0xc9, 0x1d, 0x83, 0x34, 0xf7, 0xbd, 0xd8, 0xa6, 0x1c, 0xff, 0x8a, 0xcd, 0x8e, 0xce, 0x41, 0x46, + 0xbc, 0x32, 0xcf, 0x2d, 0x9c, 0xff, 0x7d, 0x7e, 0x1b, 0x72, 0xa1, 0x6d, 0x4d, 0x74, 0x02, 0x8e, + 0x2e, 0x5d, 0xad, 0x2d, 0xbd, 0xac, 0x35, 0x5f, 0xe9, 0x7f, 0x5b, 0x78, 0xa0, 0x4a, 0xad, 0xd1, + 0x6f, 0x59, 0x42, 0xc7, 0x61, 0x3a, 0x5a, 0xc5, 0x2a, 0x12, 0x73, 0xa9, 0x0f, 0xfe, 0xc8, 0xa9, + 0x23, 0xe7, 0xff, 0x4c, 0x82, 0xe9, 0x18, 0x2f, 0x17, 0x9d, 0x86, 0xfb, 0x37, 0xae, 0x5c, 0xa9, + 0xa9, 0x5a, 0x63, 0xbd, 0xb2, 0xd9, 0xb8, 0xba, 0xd1, 0xd4, 0xd4, 0x5a, 0x63, 0x6b, 0xb5, 0x19, + 0x6a, 0x74, 0x01, 0xee, 0x8b, 0x07, 0xa9, 0x2c, 0x2d, 0xd5, 0x36, 0x9b, 0xec, 0x71, 0xe3, 0x21, + 0x10, 0xd5, 0x0d, 0xb5, 0x29, 0x27, 0x86, 0x93, 0x50, 0x6b, 0xd7, 0x6a, 0x4b, 0x4d, 0x39, 0x89, + 0xce, 0xc2, 0x99, 0x83, 0x20, 0xb4, 0x2b, 0x1b, 0xea, 0x5a, 0xa5, 0x29, 0xa7, 0x46, 0x02, 0x36, + 0x6a, 0xeb, 0xcb, 0x35, 0x55, 0x9e, 0xe0, 0xe3, 0x7e, 0x33, 0x01, 0xb3, 0xc3, 0x9c, 0x69, 0x42, + 0xab, 0xb2, 0xb9, 0xb9, 0xfa, 0x6a, 0x40, 0x6b, 0xe9, 0xea, 0xd6, 0xfa, 0xcb, 0x83, 0x2c, 0x78, + 0x08, 0x94, 0x83, 0x00, 0x7d, 0x46, 0x3c, 0x08, 0xa7, 0x0f, 0x84, 0xe3, 0xec, 0x18, 0x01, 0xa6, + 0xd6, 0x9a, 0xea, 0xab, 0x72, 0x12, 0x2d, 0xc2, 0xf9, 0x91, 0x60, 0x7e, 0x9d, 0x9c, 0x42, 0x17, + 0xe0, 0x91, 0x83, 0xe1, 0x19, 0x83, 0x04, 0x82, 0x60, 0xd1, 0x1d, 0x09, 0x8e, 0xc6, 0x7a, 0xe5, + 0xe8, 0x0c, 0xcc, 0x6f, 0xaa, 0x1b, 0x4b, 0xb5, 0x46, 0x43, 0xdb, 0x54, 0x37, 0x36, 0x37, 0x1a, + 0x95, 0x55, 0xad, 0xd1, 0xac, 0x34, 0xb7, 0x1a, 0x21, 0xde, 0x28, 0x70, 0x6a, 0x18, 0x90, 0xcf, + 0x97, 0x03, 0x60, 0xb8, 0x04, 0x08, 0x39, 0xbd, 0x2b, 0xc1, 0x89, 0xa1, 0x5e, 0x38, 0x3a, 0x07, + 0x0f, 0xd0, 0xdf, 0x29, 0x7b, 0x55, 0xbb, 0xbe, 0xd1, 0x0c, 0xbf, 0xa2, 0x3d, 0xd0, 0xab, 0xb3, + 0x70, 0xe6, 0x40, 0x48, 0xbf, 0x6b, 0xa3, 0x00, 0xfb, 0xfa, 0xf7, 0x2d, 0x12, 0x94, 0xfa, 0x74, + 0x21, 0xba, 0x0f, 0x66, 0xd7, 0xea, 0x8d, 0x6a, 0xed, 0x6a, 0xe5, 0x7a, 0x7d, 0x43, 0xed, 0x5f, + 0xb3, 0x67, 0x60, 0x7e, 0xa0, 0x76, 0x79, 0x6b, 0x73, 0xb5, 0xbe, 0x54, 0x69, 0xd6, 0x68, 0xa3, + 0xb2, 0x44, 0x06, 0x36, 0x00, 0xb4, 0x5a, 0x5f, 0xb9, 0xda, 0xd4, 0x96, 0x56, 0xeb, 0xb5, 0xf5, + 0xa6, 0x56, 0x69, 0x36, 0x2b, 0xc1, 0x72, 0xae, 0xbe, 0x3c, 0xf4, 0xe8, 0xeb, 0xc5, 0xf1, 0x8f, + 0xbe, 0xf2, 0x23, 0x9c, 0xc1, 0x6d, 0xb5, 0x04, 0xcc, 0xfb, 0x95, 0x3c, 0x97, 0xd6, 0x7f, 0xc4, + 0x73, 0xda, 0xd7, 0xee, 0x1c, 0x60, 0xf8, 0x8d, 0xcf, 0x17, 0x20, 0x59, 0xe9, 0x76, 0x89, 0xe6, + 0xa3, 0xdf, 0x86, 0xdd, 0xe6, 0x7a, 0xd5, 0xff, 0x26, 0x75, 0xae, 0xbd, 0xe3, 0xdd, 0xd2, 0x1d, + 0xff, 0x97, 0xd7, 0xc4, 0xb7, 0xf2, 0x2c, 0x64, 0xfd, 0xe8, 0x81, 0xbe, 0x5d, 0xea, 0xdf, 0x43, + 0x4a, 0x89, 0x7b, 0x46, 0xfc, 0xb2, 0x46, 0x22, 0xb8, 0xac, 0x91, 0xfa, 0xe2, 0x9b, 0xf3, 0x52, + 0x75, 0x7d, 0x28, 0x77, 0x9e, 0x1c, 0x9f, 0x3b, 0x01, 0x03, 0x7c, 0x06, 0x7d, 0xef, 0xfd, 0xa1, + 0xdb, 0xc0, 0xfe, 0x89, 0xd3, 0x30, 0x7b, 0x62, 0xce, 0xe3, 0x8f, 0x3a, 0xe3, 0x3a, 0xc6, 0x19, + 0xd6, 0x51, 0xb3, 0x72, 0xaf, 0x87, 0x5c, 0x9f, 0x85, 0xc2, 0xa6, 0xee, 0x78, 0x0d, 0xec, 0x5d, + 0xc5, 0x7a, 0x0b, 0x3b, 0xd1, 0xbb, 0xb9, 0x05, 0x71, 0x37, 0x57, 0xd8, 0xb3, 0x44, 0x60, 0xcf, + 0x14, 0x13, 0x52, 0xf4, 0x39, 0xe1, 0xa1, 0x87, 0x4c, 0xd8, 0xa1, 0x10, 0x7e, 0xc8, 0x84, 0x7e, + 0xa0, 0xa7, 0xc4, 0xed, 0xdb, 0xe4, 0x88, 0xdb, 0xb7, 0x22, 0x72, 0x62, 0x77, 0x70, 0x3b, 0x30, + 0xc9, 0xbd, 0x99, 0xd8, 0xdd, 0xdb, 0x75, 0x28, 0x75, 0x75, 0xc7, 0xa3, 0xbf, 0x56, 0xb2, 0x47, + 0x87, 0xc1, 0x3d, 0x91, 0xb8, 0xeb, 0x53, 0x91, 0xe1, 0xf2, 0x66, 0x0a, 0xdd, 0x70, 0xa1, 0xf2, + 0xc5, 0x14, 0xa4, 0x39, 0x3b, 0x5e, 0x8c, 0x9e, 0x74, 0x8b, 0x38, 0xe6, 0x81, 0xf8, 0x07, 0x41, + 0x2e, 0x27, 0xe8, 0xa7, 0xa5, 0x1f, 0xea, 0x3f, 0x57, 0x56, 0xcd, 0x7d, 0xfe, 0xad, 0xf9, 0x49, + 0x9a, 0x29, 0xae, 0x2f, 0x07, 0x87, 0xcc, 0xde, 0x79, 0x2f, 0x68, 0x19, 0x0a, 0xa1, 0x1c, 0xb6, + 0xd9, 0xe2, 0x1b, 0xff, 0x73, 0xc3, 0x3d, 0x45, 0xb1, 0xcd, 0xeb, 0xe7, 0xb7, 0xeb, 0x2d, 0x74, + 0x0e, 0xe4, 0xd0, 0xce, 0x33, 0x0b, 0xcf, 0x59, 0xf2, 0xb6, 0xd8, 0xf6, 0xf7, 0x94, 0xe9, 0xc6, + 0xeb, 0x49, 0xc8, 0xd2, 0x1f, 0xd0, 0x09, 0xed, 0xcf, 0x66, 0x48, 0x01, 0xad, 0x3c, 0x0b, 0xa5, + 0xfe, 0x2d, 0x5c, 0xb6, 0x29, 0x5b, 0xbc, 0x19, 0xdd, 0xbe, 0x1d, 0xb6, 0xe1, 0x9b, 0x1d, 0xba, + 0xe1, 0xfb, 0x20, 0x14, 0x83, 0xa4, 0x04, 0x85, 0x05, 0xe6, 0x69, 0xfb, 0xa5, 0x14, 0x2c, 0x9c, + 0x5f, 0xc8, 0x45, 0xf2, 0x0b, 0xfe, 0xce, 0x00, 0xcf, 0xb6, 0x30, 0x98, 0x3c, 0xdb, 0x33, 0x26, + 0x15, 0x3c, 0xa9, 0x42, 0x61, 0xcf, 0x40, 0x41, 0x5c, 0x52, 0x64, 0x70, 0x05, 0x0a, 0x97, 0x17, + 0x85, 0x43, 0xf7, 0xa0, 0x8b, 0xf1, 0x7b, 0xd0, 0xb3, 0x90, 0x5a, 0xe6, 0x51, 0x71, 0x5f, 0x8e, + 0xed, 0xb3, 0x49, 0x48, 0xd1, 0x6d, 0xa5, 0x27, 0x23, 0x8e, 0x79, 0x9c, 0x48, 0x93, 0xf0, 0x00, + 0xb7, 0xd6, 0xdc, 0xdd, 0x90, 0x5f, 0x3e, 0xec, 0x88, 0x89, 0x9f, 0xda, 0x48, 0x86, 0x53, 0x1b, + 0x57, 0x20, 0xe3, 0xcb, 0x49, 0x6a, 0xa4, 0x9c, 0x94, 0x88, 0x9c, 0x10, 0x31, 0xe6, 0x05, 0xea, + 0x24, 0x0f, 0x2f, 0x50, 0x15, 0xb2, 0xbe, 0x86, 0xf1, 0x05, 0x6e, 0x1c, 0x99, 0x0d, 0xd0, 0xe2, + 0xcf, 0x62, 0xa4, 0x87, 0x9c, 0xc5, 0x08, 0x0b, 0x16, 0xff, 0xed, 0xcd, 0x49, 0x3a, 0xb0, 0x40, + 0xb0, 0xd8, 0xef, 0x6f, 0xde, 0x07, 0xd9, 0x20, 0xbe, 0x62, 0xb2, 0x17, 0x14, 0x90, 0xda, 0x20, + 0x52, 0x63, 0xb2, 0x16, 0xfa, 0x11, 0xe7, 0x21, 0x51, 0x1a, 0x0c, 0x8b, 0xd2, 0x94, 0x7f, 0x2b, + 0x41, 0x9a, 0x1f, 0xb7, 0x38, 0x20, 0x2d, 0xc0, 0xe6, 0x21, 0x31, 0x6c, 0x1e, 0x92, 0x6f, 0x6b, + 0x1e, 0xc0, 0xef, 0xa7, 0x38, 0x64, 0x7a, 0x5f, 0x6c, 0x72, 0x8e, 0x74, 0xb2, 0x61, 0xee, 0x8a, + 0x7d, 0xa2, 0x00, 0x4b, 0x79, 0x4b, 0x22, 0xe6, 0x97, 0xd7, 0x0f, 0x06, 0x9e, 0xd2, 0xa1, 0x03, + 0xcf, 0xc3, 0x9d, 0xb2, 0x89, 0x88, 0x52, 0xf2, 0xde, 0x44, 0x29, 0x32, 0xe9, 0xa9, 0xbe, 0x49, + 0x57, 0xbe, 0x20, 0xf1, 0xdf, 0x6f, 0xf6, 0x93, 0x7f, 0x7f, 0x45, 0xb3, 0xf5, 0xb5, 0x5c, 0xbe, + 0x5a, 0xb8, 0xa5, 0x0d, 0x4c, 0xdb, 0x03, 0x71, 0xf7, 0xa6, 0x23, 0xbd, 0x0e, 0xa6, 0x0f, 0x09, + 0x32, 0x8d, 0x60, 0x1a, 0x7f, 0x36, 0x21, 0x4e, 0xa5, 0x85, 0xe0, 0xff, 0x06, 0x4e, 0x67, 0x74, + 0x0d, 0x4f, 0x8c, 0xb9, 0x86, 0xd3, 0x43, 0xd7, 0xf0, 0xcf, 0x26, 0xe8, 0x3b, 0x1b, 0xec, 0x8c, + 0xc0, 0x5f, 0x86, 0x0e, 0x3e, 0x09, 0xd9, 0xae, 0xdd, 0xd6, 0x58, 0x0d, 0x7b, 0x8c, 0x3f, 0xd3, + 0xb5, 0xdb, 0xea, 0x80, 0xa8, 0x4d, 0xbc, 0x53, 0x0a, 0x3a, 0xfd, 0x0e, 0x4c, 0xc3, 0x64, 0xff, + 0xaa, 0xf2, 0x20, 0xcf, 0x78, 0xc1, 0x3d, 0xa8, 0x8b, 0x84, 0x09, 0xd4, 0x27, 0x93, 0xfa, 0x7d, + 0x3e, 0xbf, 0xdf, 0x0c, 0x54, 0xe5, 0x80, 0x04, 0x25, 0x72, 0xd2, 0xed, 0xc4, 0x50, 0xcd, 0x25, + 0x4e, 0xf6, 0x28, 0x1f, 0x96, 0x00, 0x56, 0x09, 0x73, 0xe9, 0x88, 0x89, 0xf3, 0xe3, 0xd2, 0x4e, + 0x68, 0x91, 0xb6, 0xe7, 0x87, 0x4e, 0x1c, 0xef, 0x41, 0xde, 0x0d, 0x77, 0x7d, 0x19, 0x0a, 0x81, + 0x80, 0xbb, 0x58, 0x74, 0x67, 0xfe, 0xa0, 0x8b, 0xac, 0x0d, 0xec, 0xa9, 0xf9, 0x9b, 0xa1, 0x2f, + 0xe5, 0xdf, 0x49, 0x90, 0xa5, 0xbd, 0x5a, 0xc3, 0x9e, 0x1e, 0x99, 0x48, 0xe9, 0x6d, 0x4c, 0xe4, + 0xfd, 0x00, 0x8c, 0x8e, 0x6b, 0xbe, 0x81, 0xb9, 0x7c, 0x65, 0x69, 0x49, 0xc3, 0x7c, 0x03, 0xa3, + 0xa7, 0x7d, 0xae, 0x27, 0x47, 0x70, 0x5d, 0x24, 0x6f, 0x39, 0xef, 0x8f, 0xc3, 0xa4, 0xd5, 0xeb, + 0x68, 0xec, 0x30, 0x29, 0x15, 0x5a, 0xab, 0xd7, 0x69, 0xde, 0x76, 0x95, 0x1b, 0x30, 0xd9, 0xbc, + 0xcd, 0xde, 0xef, 0x39, 0x09, 0x59, 0xc7, 0xb6, 0xb9, 0x37, 0xc8, 0x1c, 0xf1, 0x0c, 0x29, 0xa0, + 0xce, 0x4f, 0x5c, 0xce, 0xff, 0xc2, 0xb8, 0x6e, 0x3f, 0x77, 0xf8, 0xcf, 0xff, 0x86, 0x04, 0x85, + 0xc8, 0x8a, 0x42, 0x8f, 0xc2, 0xf1, 0x46, 0x7d, 0x65, 0xbd, 0xb6, 0xac, 0xad, 0x35, 0x56, 0xfa, + 0x02, 0xec, 0xb9, 0xd2, 0x9d, 0xbb, 0x0b, 0x39, 0x7e, 0x55, 0x75, 0x18, 0xf4, 0xa6, 0x5a, 0x63, + 0x91, 0x36, 0x83, 0xde, 0x74, 0xf0, 0x4d, 0xdb, 0xc3, 0x14, 0xfa, 0x71, 0x38, 0x11, 0x03, 0xed, + 0x5f, 0x58, 0x9d, 0xba, 0x73, 0x77, 0xa1, 0xb0, 0xe9, 0x60, 0x26, 0x6a, 0x14, 0x63, 0x11, 0x66, + 0x07, 0x31, 0x58, 0x56, 0x43, 0x5e, 0x98, 0x93, 0xef, 0xdc, 0x5d, 0xc8, 0x0b, 0xdd, 0x41, 0xe0, + 0xdf, 0xf5, 0x1b, 0xab, 0x1f, 0xcd, 0xc2, 0x09, 0xf6, 0x86, 0x95, 0xc6, 0x62, 0x40, 0xf6, 0xc1, + 0x43, 0xd2, 0x7c, 0xb8, 0x6a, 0xf4, 0x8f, 0x13, 0x28, 0x2f, 0xc3, 0x74, 0xdd, 0xf2, 0xb0, 0xb3, + 0xa3, 0x87, 0x7f, 0x5e, 0x38, 0xf6, 0x07, 0x7b, 0x17, 0x22, 0xaf, 0x6c, 0xf2, 0x08, 0x3e, 0x5c, + 0xa4, 0x7c, 0x93, 0x04, 0x72, 0xc3, 0xd0, 0xdb, 0xba, 0xf3, 0x76, 0x49, 0xa1, 0xa7, 0xc5, 0x8f, + 0x52, 0xf0, 0x0b, 0x22, 0xc9, 0x73, 0xc5, 0x4b, 0xb3, 0x8b, 0xe1, 0xc1, 0x2d, 0xb2, 0x96, 0xa8, + 0x0e, 0x66, 0x3f, 0x46, 0x41, 0xfe, 0x3c, 0xff, 0x0a, 0x40, 0x50, 0x81, 0x4e, 0xc2, 0xf1, 0xc6, + 0x52, 0x65, 0xb5, 0xe2, 0xe7, 0x69, 0x1a, 0x9b, 0xb5, 0x25, 0xf6, 0xcb, 0xf7, 0x47, 0xd0, 0x31, + 0x40, 0xe1, 0x4a, 0xff, 0x77, 0xe6, 0x8e, 0xc2, 0x54, 0xb8, 0x9c, 0xfd, 0x0c, 0x79, 0xa2, 0x7c, + 0x15, 0x4a, 0xec, 0x37, 0x92, 0x89, 0x01, 0xc4, 0x2d, 0xcd, 0xb4, 0xd0, 0x88, 0x9f, 0x1c, 0x9e, + 0xfd, 0x95, 0xff, 0xca, 0x7e, 0xa2, 0xa2, 0xc0, 0x10, 0x2b, 0x04, 0xaf, 0x6e, 0x95, 0x9b, 0x30, + 0x43, 0x6f, 0x84, 0xd3, 0x9f, 0x95, 0xd1, 0x4c, 0xc1, 0xff, 0xd1, 0x6f, 0x08, 0x12, 0x7a, 0xc9, + 0x73, 0x59, 0x75, 0x3a, 0x40, 0xf7, 0x67, 0xaf, 0xfc, 0x72, 0xf0, 0xa3, 0x22, 0x7e, 0x07, 0x47, + 0x52, 0xfc, 0x55, 0xde, 0x43, 0xf1, 0x84, 0xb0, 0xe8, 0xe2, 0x2a, 0x4c, 0xe9, 0x86, 0x81, 0xbb, + 0x91, 0xfe, 0x8d, 0x78, 0xb6, 0x4d, 0x8c, 0x56, 0xe6, 0x98, 0x41, 0xd7, 0x9e, 0x86, 0xb4, 0x4b, + 0x27, 0x65, 0x14, 0x09, 0xd1, 0x1d, 0x0e, 0x5e, 0xae, 0x41, 0x91, 0x89, 0x81, 0x3f, 0xa2, 0x11, + 0x04, 0xfe, 0x23, 0x27, 0x90, 0xa7, 0x68, 0x62, 0x34, 0x16, 0x4c, 0xb5, 0xb0, 0xd1, 0xd6, 0x1d, + 0x1c, 0x1a, 0xcd, 0xc1, 0x4f, 0x17, 0xff, 0xcb, 0x4f, 0x3f, 0xee, 0xef, 0xa1, 0x87, 0x84, 0x2e, + 0x66, 0xb1, 0xa8, 0x32, 0xa7, 0x1d, 0x8c, 0x17, 0x43, 0x51, 0xb4, 0xc7, 0xc7, 0x7d, 0x70, 0x63, + 0xff, 0x8a, 0x37, 0x76, 0x2a, 0x4e, 0xc2, 0x43, 0x2d, 0x15, 0x38, 0x55, 0x56, 0x51, 0xae, 0x42, + 0x61, 0xc7, 0x6c, 0x87, 0xa6, 0xfb, 0xe0, 0x56, 0xfe, 0xf5, 0xa7, 0x1f, 0x67, 0x0b, 0x8d, 0x20, + 0x71, 0xd6, 0xdc, 0xd3, 0x4f, 0xa6, 0x50, 0xea, 0xcf, 0x85, 0xbb, 0xea, 0x6b, 0xa7, 0x4f, 0x24, + 0xe1, 0x14, 0x07, 0xde, 0xd6, 0x5d, 0x4c, 0x14, 0x17, 0xf6, 0xf4, 0x8b, 0x17, 0x0c, 0xdb, 0xb4, + 0x82, 0xa4, 0x22, 0x55, 0x58, 0xa4, 0x7e, 0x91, 0xd7, 0x0f, 0xc9, 0x69, 0x0d, 0x57, 0x74, 0x73, + 0x83, 0x3f, 0xdb, 0xa3, 0xb4, 0x21, 0xb5, 0x64, 0x9b, 0x16, 0xf1, 0xb9, 0x5a, 0xd8, 0xb2, 0x3b, + 0xe2, 0xbc, 0x22, 0xfd, 0x40, 0x57, 0x21, 0xad, 0x77, 0xec, 0x9e, 0xc5, 0xdf, 0x6f, 0xab, 0x3e, + 0x4e, 0x6c, 0xe1, 0x6f, 0xbd, 0x35, 0x7f, 0x94, 0x91, 0x75, 0x5b, 0x37, 0x16, 0x4d, 0xfb, 0x42, + 0x47, 0xf7, 0xf6, 0xc8, 0x24, 0xff, 0xfa, 0x67, 0x1e, 0x03, 0xde, 0x5e, 0xdd, 0xf2, 0x3e, 0xf9, + 0xfb, 0x3f, 0x7d, 0x5e, 0x52, 0x39, 0x3e, 0x4b, 0x3b, 0x2a, 0x5d, 0x98, 0x5c, 0xc6, 0xc6, 0x01, + 0x0d, 0xd6, 0xfb, 0x1a, 0xbc, 0xc8, 0x1b, 0x3c, 0x39, 0xd8, 0x20, 0xfb, 0x1d, 0xc1, 0x65, 0x6c, + 0x84, 0x9a, 0x5d, 0xc6, 0x46, 0xb4, 0xc5, 0xea, 0xf2, 0x6f, 0xfe, 0xee, 0xa9, 0x23, 0xef, 0xff, + 0xfc, 0xa9, 0x23, 0x43, 0xa7, 0x4c, 0x19, 0xfd, 0x2b, 0x37, 0xfe, 0x4c, 0xfd, 0x6f, 0x09, 0x4e, + 0xf4, 0x9b, 0x07, 0xdd, 0xda, 0x1f, 0xf6, 0xe6, 0xc1, 0x65, 0x48, 0x56, 0xac, 0x7d, 0x74, 0x82, + 0xbd, 0xe6, 0xaa, 0xf5, 0x9c, 0xb6, 0x38, 0xe6, 0x49, 0xbe, 0xb7, 0x9c, 0x76, 0xf4, 0x48, 0x81, + 0xff, 0x32, 0xd7, 0x77, 0x1d, 0xf2, 0xb9, 0x83, 0x4c, 0xc5, 0xda, 0x17, 0x0f, 0x1d, 0x3c, 0x3a, + 0xe6, 0x43, 0x07, 0xba, 0xb5, 0xdf, 0xdd, 0x3e, 0xec, 0xfb, 0x06, 0x77, 0x9e, 0x82, 0x07, 0x38, + 0x8f, 0x5c, 0x4f, 0xbf, 0x61, 0x5a, 0xbb, 0xbe, 0xb0, 0xf2, 0x6f, 0xce, 0x8a, 0x63, 0x7c, 0x42, + 0x44, 0xa9, 0x10, 0xd9, 0x41, 0x09, 0x9c, 0x3b, 0xf0, 0xc1, 0x84, 0xb9, 0x83, 0xb3, 0xc9, 0x73, + 0x23, 0xd6, 0xcd, 0x41, 0x8b, 0x61, 0xc8, 0xea, 0x19, 0x3a, 0xbd, 0x23, 0x5f, 0x0f, 0x1b, 0x99, + 0x4c, 0xfe, 0xb0, 0x04, 0xc5, 0xab, 0xa6, 0xeb, 0xd9, 0x8e, 0x69, 0xe8, 0x6d, 0xba, 0x91, 0xfe, + 0xfc, 0xd8, 0xde, 0x7f, 0x35, 0x4b, 0x96, 0x02, 0x5f, 0x54, 0x7b, 0xc2, 0x01, 0x4f, 0xdf, 0xd4, + 0xdb, 0xcc, 0xf3, 0x0e, 0xeb, 0xdd, 0x7e, 0xb6, 0x87, 0xf6, 0x97, 0xc3, 0x54, 0x18, 0x6e, 0x39, + 0x31, 0x2b, 0x29, 0xdf, 0x97, 0x80, 0x12, 0x0d, 0x19, 0x5c, 0x7a, 0x20, 0x8c, 0x1e, 0x39, 0xba, + 0x06, 0x29, 0x47, 0xf7, 0xb8, 0x13, 0x52, 0xbd, 0x7c, 0xe8, 0x95, 0xc8, 0x5a, 0xa1, 0x34, 0xd0, + 0x7b, 0x20, 0xd3, 0xd1, 0x6f, 0x6b, 0x94, 0x5e, 0xe2, 0x6d, 0xd1, 0x9b, 0xec, 0xe8, 0xb7, 0x49, + 0xff, 0xd0, 0x37, 0x40, 0x89, 0x90, 0x34, 0xf6, 0x74, 0x6b, 0x17, 0x33, 0xca, 0xc9, 0xb7, 0x45, + 0xb9, 0xd0, 0xd1, 0x6f, 0x2f, 0x51, 0x6a, 0x84, 0x3e, 0xd7, 0x58, 0xbf, 0x28, 0xf1, 0xd3, 0x55, + 0x94, 0x31, 0x48, 0x07, 0xd9, 0xf0, 0xbf, 0x68, 0xa3, 0xe2, 0xd0, 0xf2, 0xd9, 0x61, 0xbc, 0xef, + 0x63, 0x6b, 0xb5, 0x40, 0xba, 0xf7, 0xb9, 0xb7, 0xe6, 0x25, 0xd6, 0x6a, 0xc9, 0x18, 0x60, 0x7b, + 0x8e, 0x9d, 0x1a, 0xd3, 0x68, 0x66, 0x3b, 0x31, 0x32, 0x08, 0x2d, 0x88, 0x20, 0x94, 0x11, 0x04, + 0x86, 0x4d, 0xea, 0xf9, 0x18, 0xfe, 0x44, 0x82, 0xdc, 0x72, 0xc8, 0x4f, 0x9c, 0x85, 0xc9, 0x8e, + 0x6d, 0x99, 0x37, 0xb0, 0xe3, 0x9f, 0x3a, 0x67, 0x9f, 0x68, 0x0e, 0x32, 0xec, 0x17, 0x20, 0xbd, + 0x7d, 0xb1, 0xdb, 0x24, 0xbe, 0x09, 0xd6, 0x2d, 0xbc, 0xed, 0x9a, 0x82, 0xcf, 0xaa, 0xf8, 0x44, + 0x0f, 0x83, 0xec, 0x62, 0xa3, 0xe7, 0x98, 0xde, 0xbe, 0x66, 0xd8, 0x96, 0xa7, 0x1b, 0x1e, 0x3f, + 0xac, 0x54, 0x12, 0xe5, 0x4b, 0xac, 0x98, 0x10, 0x69, 0x61, 0x4f, 0x37, 0xdb, 0xec, 0x32, 0x76, + 0x56, 0x15, 0x9f, 0x68, 0x25, 0xb4, 0xfd, 0x9f, 0xf6, 0x77, 0x27, 0x62, 0x39, 0x2a, 0x7e, 0x6f, + 0x9e, 0x0a, 0x33, 0x1d, 0xf5, 0x91, 0xe0, 0xac, 0x00, 0x1f, 0xf3, 0x0e, 0x64, 0x04, 0x18, 0x7a, + 0x08, 0x4a, 0x5d, 0xc7, 0xa6, 0x56, 0xbf, 0x6b, 0x1a, 0x5a, 0xcf, 0x31, 0xf9, 0xb8, 0x0b, 0xbc, + 0x78, 0xd3, 0x34, 0xb6, 0x1c, 0x13, 0x3d, 0x0a, 0xc8, 0xb5, 0x0d, 0x7a, 0x11, 0x5c, 0xb7, 0x5a, + 0x6d, 0xa2, 0xb0, 0x4d, 0x76, 0xd6, 0x2c, 0xab, 0xca, 0xac, 0xe6, 0x2a, 0xad, 0xd8, 0x72, 0x4c, + 0x97, 0xb7, 0x73, 0x77, 0x32, 0x7c, 0xb6, 0x68, 0x09, 0x64, 0xbb, 0x8b, 0x9d, 0x48, 0xc6, 0x87, + 0x2d, 0x9f, 0xd9, 0x5f, 0xff, 0xcc, 0x63, 0x33, 0x7c, 0x3c, 0x3c, 0xe7, 0xc3, 0x5e, 0x71, 0x54, + 0x4b, 0x02, 0x43, 0xa4, 0x82, 0x5e, 0x8d, 0x1c, 0x8c, 0xef, 0x6d, 0x07, 0x6f, 0x32, 0xcd, 0x0c, + 0x48, 0x41, 0xc5, 0xda, 0xaf, 0xce, 0xfe, 0x6a, 0x40, 0x9a, 0xc7, 0x8b, 0x9b, 0xf4, 0xa4, 0x51, + 0xf8, 0x90, 0x3c, 0x25, 0x83, 0x8e, 0x41, 0xfa, 0x75, 0xdd, 0x6c, 0x8b, 0x5f, 0xf7, 0x55, 0xf9, + 0x17, 0x2a, 0xfb, 0x07, 0x3f, 0x53, 0x34, 0x83, 0xa3, 0x0c, 0x63, 0x7d, 0xd5, 0xb6, 0x5a, 0xd1, + 0xf3, 0x9e, 0x68, 0x09, 0xd2, 0x9e, 0x7d, 0x03, 0x5b, 0x7c, 0x46, 0xab, 0x8f, 0x1c, 0xc2, 0x47, + 0x50, 0x39, 0x2a, 0xfa, 0x3a, 0x90, 0x5b, 0xb8, 0x8d, 0x77, 0x59, 0x2a, 0x61, 0x4f, 0x77, 0x30, + 0xcb, 0x69, 0xdf, 0x93, 0x07, 0x50, 0xf2, 0x49, 0x35, 0x28, 0x25, 0xb4, 0x19, 0x0d, 0x9d, 0x26, + 0xfd, 0x3b, 0x5d, 0xb1, 0x63, 0x0c, 0x2d, 0x95, 0xb0, 0xba, 0x8c, 0x84, 0x5a, 0x0f, 0x83, 0xdc, + 0xb3, 0xb6, 0x6d, 0x8b, 0xfe, 0x28, 0x26, 0x4f, 0x62, 0x65, 0xd8, 0x65, 0x09, 0xbf, 0x9c, 0x5f, + 0x96, 0xd8, 0x84, 0x62, 0x00, 0x4a, 0x97, 0x74, 0xf6, 0xb0, 0x4b, 0xba, 0xe0, 0x13, 0x20, 0x20, + 0x68, 0x0d, 0x20, 0x50, 0x1a, 0x34, 0xcd, 0x9e, 0x1b, 0x3e, 0x63, 0x81, 0xfa, 0x09, 0x0f, 0x26, + 0x44, 0x00, 0x59, 0x30, 0xdd, 0x31, 0x2d, 0xcd, 0xc5, 0xed, 0x1d, 0x8d, 0x73, 0x8e, 0xd0, 0xcd, + 0x51, 0xf6, 0xbf, 0x78, 0x88, 0xd9, 0xfc, 0xad, 0xcf, 0x3c, 0x56, 0x0a, 0x5c, 0xa7, 0x85, 0xc7, + 0x17, 0x9f, 0x7c, 0x5a, 0x9d, 0xea, 0x98, 0x56, 0x03, 0xb7, 0x77, 0x96, 0x7d, 0xc2, 0xe8, 0x79, + 0x38, 0x19, 0x30, 0xc4, 0xb6, 0xb4, 0x3d, 0xbb, 0xdd, 0xd2, 0x1c, 0xbc, 0xa3, 0x19, 0xd4, 0xf1, + 0xcb, 0x53, 0x36, 0x1e, 0xf7, 0x41, 0x36, 0xac, 0xab, 0x76, 0xbb, 0xa5, 0xe2, 0x9d, 0x25, 0x52, + 0x8d, 0xce, 0x40, 0xc0, 0x0d, 0xcd, 0x6c, 0xb9, 0xb3, 0x85, 0x85, 0xe4, 0xb9, 0x94, 0x9a, 0xf7, + 0x0b, 0xeb, 0x2d, 0xb7, 0x9c, 0xf9, 0xe0, 0x9b, 0xf3, 0x47, 0xbe, 0xf8, 0xe6, 0xfc, 0x11, 0xe5, + 0x0a, 0x7d, 0xb5, 0x8d, 0x2f, 0x2d, 0xec, 0xa2, 0xcb, 0x90, 0xd5, 0xc5, 0x07, 0x7b, 0xf8, 0xf0, + 0x80, 0xa5, 0x19, 0x80, 0x2a, 0x9f, 0x92, 0x20, 0xbd, 0x7c, 0x7d, 0x53, 0x37, 0x1d, 0x54, 0x23, + 0x81, 0x91, 0x90, 0xd5, 0x71, 0x57, 0x79, 0x20, 0xde, 0x62, 0x99, 0xaf, 0x0f, 0x4b, 0x0f, 0x67, + 0xab, 0xa7, 0x7f, 0xfd, 0x33, 0x8f, 0xdd, 0xcf, 0xc9, 0x5c, 0xef, 0xcb, 0x14, 0x0b, 0x7a, 0xfd, + 0x19, 0xe4, 0xd0, 0x98, 0xaf, 0xc1, 0x24, 0xeb, 0xaa, 0x8b, 0x5e, 0x82, 0x89, 0x2e, 0xf9, 0x83, + 0x9f, 0xb8, 0x3e, 0x35, 0x54, 0xe6, 0x29, 0x7c, 0x58, 0x42, 0x18, 0x9e, 0xf2, 0xed, 0x09, 0x80, + 0xe5, 0xeb, 0xd7, 0x9b, 0x8e, 0xd9, 0x6d, 0x63, 0xef, 0x9d, 0x1a, 0xfb, 0x16, 0x1c, 0x0d, 0x65, + 0x0e, 0x1d, 0xe3, 0xf0, 0xe3, 0x9f, 0x0e, 0x72, 0x88, 0x8e, 0x11, 0x4b, 0xb6, 0xe5, 0x7a, 0x3e, + 0xd9, 0xe4, 0xe1, 0xc9, 0x2e, 0xbb, 0xde, 0x20, 0x67, 0x5f, 0x81, 0x5c, 0xc0, 0x0c, 0x17, 0xd5, + 0x21, 0xe3, 0xf1, 0xbf, 0x39, 0x83, 0x95, 0xe1, 0x0c, 0x16, 0x68, 0x61, 0x26, 0xfb, 0xe8, 0xca, + 0x5f, 0x48, 0x00, 0xa1, 0x35, 0xf2, 0xd7, 0x53, 0xc6, 0x48, 0x78, 0xc6, 0x95, 0x73, 0xf2, 0x9e, + 0xc3, 0x33, 0x46, 0x20, 0xc4, 0xd4, 0xef, 0x4c, 0xc0, 0xf4, 0x96, 0x58, 0xbd, 0x7f, 0xfd, 0x79, + 0xb0, 0x05, 0x93, 0xd8, 0xf2, 0x1c, 0xd3, 0xbf, 0x31, 0xf0, 0xf8, 0xb0, 0x39, 0x8f, 0x19, 0x54, + 0xcd, 0xf2, 0x9c, 0xfd, 0xb0, 0x04, 0x08, 0x5a, 0x21, 0x7e, 0xfc, 0x60, 0x12, 0x66, 0x87, 0xa1, + 0xa2, 0xb3, 0x50, 0x32, 0x1c, 0x4c, 0x0b, 0xa2, 0xef, 0x70, 0x16, 0x45, 0x31, 0x37, 0x3b, 0x2a, + 0x10, 0xcf, 0x92, 0x08, 0x17, 0x01, 0xbd, 0x37, 0x57, 0xb2, 0x18, 0x50, 0xa0, 0x86, 0xa7, 0x09, + 0x25, 0xf1, 0x54, 0xce, 0xb6, 0xde, 0xd6, 0x2d, 0x43, 0xb8, 0xdc, 0x87, 0xb2, 0xf9, 0xe2, 0xb9, + 0x9d, 0x2a, 0x23, 0x81, 0x6a, 0x30, 0x29, 0xa8, 0xa5, 0x0e, 0x4f, 0x4d, 0xe0, 0xa2, 0x07, 0x21, + 0x1f, 0x36, 0x0c, 0xd4, 0x1b, 0x49, 0xd1, 0xe7, 0x87, 0x73, 0x21, 0xdb, 0x30, 0xca, 0xfa, 0xa4, + 0x0f, 0xb4, 0x3e, 0xdc, 0xe9, 0xfb, 0xc1, 0x24, 0x4c, 0xa9, 0xb8, 0xf5, 0x37, 0x7f, 0x6a, 0x36, + 0x01, 0xd8, 0x72, 0x25, 0xda, 0x94, 0xcf, 0xce, 0x3d, 0xac, 0xf9, 0x2c, 0x23, 0xb2, 0xec, 0xd2, + 0x1f, 0x57, 0x1f, 0x9c, 0xa5, 0x77, 0x7e, 0x86, 0x7e, 0x3b, 0x01, 0xf9, 0xf0, 0x0c, 0xfd, 0xad, + 0x34, 0x5c, 0x68, 0x3d, 0x50, 0x55, 0x6c, 0xb3, 0xfc, 0xe1, 0x61, 0xaa, 0x6a, 0x40, 0x9a, 0x47, + 0xe8, 0xa8, 0x2f, 0x25, 0x21, 0xcd, 0x2f, 0xde, 0x6e, 0x0c, 0xf8, 0xb7, 0x23, 0x1f, 0x62, 0x2e, + 0x88, 0xb7, 0xac, 0x63, 0xdd, 0xdb, 0x07, 0xa1, 0x48, 0x02, 0xfb, 0xc8, 0x6d, 0x5e, 0xe9, 0x5c, + 0x81, 0xc6, 0xe7, 0xc1, 0xe1, 0x26, 0x34, 0x0f, 0x39, 0x02, 0x16, 0xe8, 0x62, 0x02, 0x03, 0x1d, + 0xfd, 0x76, 0x8d, 0x95, 0xa0, 0x8b, 0x80, 0xf6, 0xfc, 0x6c, 0x8b, 0x16, 0x30, 0x42, 0x3a, 0x57, + 0xa0, 0x6a, 0x61, 0x2a, 0xa8, 0x15, 0x28, 0xf7, 0x03, 0x90, 0x9e, 0x68, 0x2c, 0x33, 0xc9, 0x7f, + 0x2a, 0x9b, 0x94, 0x2c, 0xd3, 0xec, 0xe4, 0xb7, 0x48, 0xcc, 0x55, 0xee, 0x4b, 0x01, 0xf0, 0x48, + 0xa5, 0x39, 0xc6, 0xc2, 0xf8, 0xd3, 0xb7, 0xe6, 0xe7, 0xf6, 0xf5, 0x4e, 0xbb, 0xac, 0xc4, 0xd0, + 0x51, 0xe2, 0xb2, 0x12, 0xc4, 0x81, 0x8e, 0xa6, 0x10, 0x50, 0x1d, 0xe4, 0x1b, 0x78, 0x5f, 0x73, + 0xf8, 0xaf, 0xc9, 0x6b, 0x3b, 0x58, 0xbc, 0x87, 0x7e, 0x62, 0x31, 0x26, 0x4f, 0xbc, 0xb8, 0x64, + 0x9b, 0x16, 0xdf, 0xc6, 0x2c, 0xde, 0xc0, 0xfb, 0x2a, 0xc7, 0xbb, 0x82, 0x71, 0xf9, 0x01, 0xb2, + 0x5a, 0xee, 0xfc, 0xfe, 0x4f, 0x9f, 0x3f, 0x19, 0xca, 0x79, 0xde, 0xf6, 0x93, 0x7b, 0x6c, 0x8a, + 0x89, 0xf3, 0x8b, 0x02, 0x43, 0x14, 0xba, 0xc1, 0x0d, 0xa1, 0x78, 0x41, 0x3a, 0x38, 0x0e, 0x09, + 0xf0, 0x23, 0x71, 0x48, 0x68, 0x89, 0xbe, 0x18, 0xd8, 0x81, 0xc4, 0xa8, 0xd1, 0x84, 0xa5, 0x93, + 0x23, 0xd1, 0x95, 0x7f, 0x44, 0xf9, 0x4f, 0x12, 0x9c, 0x18, 0x90, 0x66, 0xbf, 0xcb, 0x06, 0x20, + 0x27, 0x54, 0x49, 0xa5, 0x42, 0x5c, 0xe2, 0xb9, 0xb7, 0xc5, 0x31, 0xe5, 0x0c, 0x18, 0x82, 0x77, + 0xc6, 0xa0, 0x71, 0x4d, 0xf6, 0x2b, 0x12, 0xcc, 0x84, 0x3b, 0xe0, 0x0f, 0xa5, 0x01, 0xf9, 0x70, + 0xd3, 0x7c, 0x10, 0x0f, 0x8c, 0x33, 0x88, 0x70, 0xff, 0x23, 0x44, 0xd0, 0xf5, 0x40, 0x63, 0xb0, + 0x94, 0xe2, 0xc5, 0xb1, 0x99, 0x22, 0x3a, 0x16, 0xab, 0x39, 0xd8, 0xdc, 0x7c, 0x49, 0x82, 0xd4, + 0xa6, 0x6d, 0xb7, 0xd1, 0xfb, 0x60, 0xca, 0xb2, 0x3d, 0x8d, 0xac, 0x2c, 0xdc, 0xd2, 0x78, 0xfa, + 0x80, 0x69, 0xe3, 0xda, 0x81, 0xbc, 0xfa, 0x83, 0xb7, 0xe6, 0x07, 0x31, 0xe3, 0xf6, 0x1d, 0x4a, + 0x96, 0xed, 0x55, 0x29, 0x50, 0x93, 0x65, 0x18, 0x76, 0xa0, 0x10, 0x6d, 0x8e, 0x69, 0xec, 0xca, + 0xa8, 0xe6, 0x0a, 0x23, 0x9b, 0xca, 0x6f, 0x87, 0xda, 0x61, 0x3f, 0x3d, 0xf4, 0xc7, 0x64, 0xe6, + 0xbe, 0x01, 0xe4, 0xeb, 0xfd, 0x57, 0x44, 0xaf, 0xc0, 0xa4, 0xb8, 0x12, 0x2a, 0x8d, 0x7b, 0xdd, + 0x34, 0xcc, 0x4f, 0x8e, 0x4c, 0x73, 0xb6, 0x9f, 0x4b, 0xc0, 0x89, 0x25, 0xdb, 0x72, 0x79, 0xb2, + 0x87, 0xaf, 0x6a, 0x96, 0x60, 0xde, 0x47, 0x0f, 0x0f, 0x49, 0x45, 0xe5, 0x07, 0x13, 0x4e, 0xd7, + 0xa1, 0x44, 0x4c, 0xac, 0x61, 0x5b, 0x6f, 0x33, 0xdf, 0x54, 0xb0, 0xdb, 0x2d, 0xde, 0xa3, 0x1b, + 0x78, 0x9f, 0xd0, 0xb5, 0xf0, 0xad, 0x08, 0xdd, 0xe4, 0xbd, 0xd1, 0xb5, 0xf0, 0xad, 0x10, 0xdd, + 0xe0, 0xdc, 0x50, 0x2a, 0x72, 0x0b, 0xe9, 0x32, 0x24, 0x89, 0x2a, 0x9c, 0x38, 0x84, 0xf2, 0x20, + 0x08, 0x21, 0xb3, 0xd6, 0x80, 0x13, 0x3c, 0x5b, 0xe0, 0x6e, 0xec, 0x50, 0x8e, 0x62, 0x3a, 0xa0, + 0x97, 0xf1, 0x7e, 0x4c, 0xea, 0x20, 0x3f, 0x56, 0xea, 0xe0, 0xfc, 0xcf, 0x49, 0x00, 0x41, 0xde, + 0x0c, 0x3d, 0x0a, 0xc7, 0xab, 0x1b, 0xeb, 0xcb, 0xc1, 0x85, 0x8c, 0xd0, 0xf6, 0xba, 0x38, 0xa9, + 0xe1, 0x76, 0xb1, 0x61, 0xee, 0x98, 0xb8, 0x85, 0x1e, 0x82, 0x99, 0x28, 0x34, 0xf9, 0xaa, 0x2d, + 0xcb, 0xd2, 0x5c, 0xfe, 0xce, 0xdd, 0x85, 0x0c, 0x8b, 0x13, 0x70, 0x0b, 0x9d, 0x83, 0xa3, 0x83, + 0x70, 0xf5, 0xf5, 0x15, 0x39, 0x31, 0x57, 0xb8, 0x73, 0x77, 0x21, 0xeb, 0x07, 0x14, 0x48, 0x01, + 0x14, 0x86, 0xe4, 0xf4, 0x92, 0x73, 0x70, 0xe7, 0xee, 0x42, 0x9a, 0x2d, 0x19, 0x7e, 0x93, 0xe3, + 0xeb, 0x01, 0xea, 0xd6, 0x8e, 0xa3, 0x1b, 0x54, 0x35, 0xcc, 0xc1, 0xb1, 0xfa, 0xfa, 0x15, 0xb5, + 0xb2, 0xd4, 0xac, 0x6f, 0xac, 0xf7, 0x9d, 0x0a, 0x88, 0xd6, 0x2d, 0x6f, 0x6c, 0x55, 0x57, 0x6b, + 0x5a, 0xa3, 0xbe, 0xb2, 0xce, 0xae, 0x5d, 0x45, 0xea, 0xde, 0xbb, 0xde, 0xac, 0xaf, 0xd5, 0xe4, + 0x44, 0xf5, 0xf2, 0xd0, 0x2d, 0xb9, 0xfb, 0x22, 0x8b, 0x31, 0x30, 0x47, 0x91, 0xcd, 0xb8, 0xff, + 0x1b, 0x00, 0x00, 0xff, 0xff, 0x99, 0x81, 0xa8, 0x52, 0xec, 0xa7, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r)